PageSourceSearch

https://magicpods.app/contact/

html magicpods.app collected 2026-09-24 09:33:35 UTC 162,736 bytes, 4,476 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US" itemscope itemtype="http://schema.org/WebPage">
3
4<head>
5	
6	<meta charset="utf-8">
7
8<title>
9  
10    Contact | MagicPods
11  
12</title>
13
14
15<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
16
17<meta name="theme-name" content="bigspring-hugo" />
18
19
20
21
22
23
24
25
26<link rel="shortcut icon" href="https://magicpods.app/images/favicon.png" type="image/x-icon">
27<link rel="icon" href="https://magicpods.app/images/favicon.png" type="image/x-icon">
28<link rel="icon" type="image/png" sizes="48x48" href="https://magicpods.app/images/favicon.png">
29<link rel="icon" type="image/png" sizes="96x96" href="https://magicpods.app/images/favicon.png">
30<link rel="apple-touch-icon" sizes="144x144" href="https://magicpods.app/images/favicon.png">
31
32
33
34
35
36
37<link rel="manifest" href="/manifest.webmanifest" />
38<meta
39  name="msapplication-TileColor"
40  content="#0360DD" />
41<meta
42  name="theme-color"
43  content="#fff" />
44
45
46
47
48
49
50
51
52  <base href="https://magicpods.app/contact/" />
53
54
55
56
57
58
59
60  
61
62
63<title>Contact</title>
64
65
66
67
68
69
70
71
72
73  
74  
75  
76
77<link rel="canonical" href="https://magicpods.app/contact/" itemprop="url" />
78
79
80
81
82  
83    <link rel="alternate" hreflang="en" href="https://magicpods.app/contact/" />
84  
85    <link rel="alternate" hreflang="ru" href="https://magicpods.app/ru/contact/" />
86  
87  <link rel="alternate" hreflang="x-default" href="https://magicpods.app/contact/" />
88
89
90
91
92
93  <meta
94    name="keywords"
95    content="Bluetooth, Battery, AirPods, Beats, Sony, Airoha, Galaxy  Buds, noise cancellation, Windows, Steam Deck" />
96
97
98
99
100<meta
101  name="description"
102  content="Contact and information about MagicPods developer Aleksandr Maslov. Support, collaboration, social media." />
103
104
105
106  <meta name="author" content="Aleksandr Maslov" />
107
108
109
110
111
112
113  
114  
115
116
117
118
119
120
121
122
123
124
125
126
127  <meta name="twitter:card" content="summary_large_image" />
128  <meta name="twitter:image" content="https://magicpods.app/images/og-image.png" />
129  <meta property="og:image" content="https://magicpods.app/images/og-image.png" />
130
131
132
133
134
135<meta property="og:title" content="Contact" />
136<meta property="og:description" content="Contact and information about MagicPods developer Aleksandr Maslov. Support, collaboration, social media." />
137<meta property="og:type" content="website" />
138<meta property="og:url" content="https://magicpods.app/contact/" />
139
140
141<meta name="twitter:title" content="Contact" />
142<meta name="twitter:description" content="Contact and information about MagicPods developer Aleksandr Maslov. Support, collaboration, social media." />
143
144
145  <meta name="twitter:site" content="@steam3d" />
146
147
148  <meta name="twitter:creator" content="@steam3d" />
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173	
174	
175	
176<meta http-equiv="x-dns-prefetch-control" content="on" />
177<link rel="preconnect" href="//ajax.googleapis.com" />
178<link
179  rel="preconnect"
180  href="https://fonts.gstatic.com"
181  crossorigin="anonymous" />
182<link rel="preconnect" href="https://use.fontawesome.com" crossorigin />
183<link rel="preconnect" href="//cdnjs.cloudflare.com" />
184<link rel="preconnect" href="//www.googletagmanager.com" />
185<link rel="preconnect" href="//www.google-analytics.com" />
186<link rel="dns-prefetch" href="https://fonts.gstatic.com" />
187<link rel="dns-prefetch" href="https://use.fontawesome.com" />
188<link rel="dns-prefetch" href="//ajax.googleapis.com" />
189<link rel="dns-prefetch" href="//cdnjs.cloudflare.com" />
190<link rel="dns-prefetch" href="//www.googletagmanager.com" />
191<link rel="dns-prefetch" href="//www.google-analytics.com" />
192<link rel="dns-prefetch" href="//fonts.googleapis.com" />
193<link rel="dns-prefetch" href="//connect.facebook.net" />
194<link rel="dns-prefetch" href="//platform.linkedin.com" />
195<link rel="dns-prefetch" href="//platform.twitter.com" />
196
197
198
199
200  
201    
202  
203
204  
205    
206  
207
208  
209    
210  
211
212  
213    
214  
215
216  
217    
218  
219
220
221
222
223
224
225
226
227
228<link rel="stylesheet" href="/css/style.css" /> 
229
230
231	
232</head>
233
234<body>
235	
236	
237	
238
239
240
241	
242	
243	
244	
245	
246<header class="navigation">
247  <div class="container">
248    
249    <nav class="navbar navbar-expand-lg navbar-light">
250      
251      <a class="navbar-brand" href="/">
252        
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272  
273
274
275
276
277  
278  
279    <img
280      fetchpriority="high"
281      decoding="async"
282      src="https://magicpods.app/images/logo.png"
283      alt="MagicPods"
284      class="img img-light"
285      height="auto"
286      width="156" />
287    <img
288      fetchpriority="high"
289      decoding="async"
290      src="https://magicpods.app/images/logo-w.png"
291      alt="MagicPods"
292      class="img img-dark"
293      height="auto"
294      width="156" />
295  
296
297
298
299      </a>
300
301      <div class="d-flex align-items-center">
302        
303        
304        <select class="me-3 border-0 d-inline-block d-lg-none" onchange="location = this.value;">
305          
306          
307          
308          
309          
310          
311          
312          
313          <option id="en" value="/contact/" selected>EN
314          </option>
315          
316          
317          
318          
319          
320          
321          
322          
323          
324          
325          
326          
327          
328          <option id="ru" value="/ru/contact/">RU</option>
329          
330          
331          
332          
333        </select>
334        
335        
336        <button aria-label="navbar toggler" class="navbar-toggler border-0 h4 mb-0" type="button" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#navigation">
337          <i class="fas fa-bars"></i>
338          <i class="fa-solid fa-xmark"></i>
339        </button>
340
341        
342      </div>
343
344      <div class="collapse navbar-collapse text-center" id="navigation">
345        <ul class="navbar-nav mx-auto">
346          
347          
348          
349          
350          
351          
352          
353          <li class="nav-item ">
354            <a class="nav-link" 
355              href="/buy">Purchase</a>
356          </li>
357          
358          
359          
360          
361          
362          
363          <li class="nav-item ">
364            <a class="nav-link" target="_blank" rel="noopener" 
365              href="https://help.magicpods.app">Help</a>
366          </li>
367          
368          
369          
370          
371          
372          
373          <li class="nav-item dropdown ">
374            <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
375              More
376            </a>
377            <ul class="dropdown-menu">
378              
379              
380              
381              <li>
382                <a class="dropdown-item " target="_blank" rel="noopener" 
383                href="https://weblate.magicpods.app/engage/magicpods-windows/">Translate</a>
384              </li>
385              
386              
387              
388              <li>
389                <a class="dropdown-item " 
390                href="/magicaap">MagicAAP driver</a>
391              </li>
392              
393              
394              
395              <li>
396                <a class="dropdown-item " 
397                href="/headphones">Supported headphones</a>
398              </li>
399              
400              
401              
402              <li>
403                <a class="dropdown-item " 
404                href="/add-headphones">Help add headphones</a>
405              </li>
406              
407              
408              
409              <li>
410                <a class="dropdown-item " 
411                href="/faq">FAQ</a>
412              </li>
413              
414              
415              
416              <li>
417                <a class="dropdown-item " 
418                href="/blog">Blog and news</a>
419              </li>
420              
421            </ul>
422          </li>
423          
424          
425          
426          
427          
428          
429          <li class="nav-item dropdown dropdown-lg ">
430            <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
431              Apps
432            </a>
433            <ul class="dropdown-menu">
434              
435              
436              
437              <li>
438                <a class="dropdown-item " 
439                href="/steamdeck"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/magicpods.png'>MagicPods<small class='dropdown-subtitle'>Plugin for Steam Deck</small></a>
440              </li>
441              
442              
443              
444              <li>
445                <a class="dropdown-item " target="_blank" rel="noopener" 
446                href="https://github.com/steam3d/magicblackDecky"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/magicblack.png'>MagicBlack<small class='dropdown-subtitle'>Simple plugin to turn off Steam Deck screen</small></a>
447              </li>
448              
449              
450              
451              <li>
452                <a class="dropdown-item " target="_blank" rel="noopener" 
453                href="https://apps.microsoft.com/store/detail/9N78GWBTW7L5"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/magicselect.png'>MagicSelect<small class='dropdown-subtitle'>Select and copy text from any images</small></a>
454              </li>
455              
456              
457              
458              <li>
459                <a class="dropdown-item " target="_blank" rel="noopener" 
460                href="https://apps.microsoft.com/store/detail/9NGB2P0TSMBF"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/magictranslate.png'>MagicTranslate<small class='dropdown-subtitle'>Translate text with one hotkey</small></a>
461              </li>
462              
463              
464              
465              <li>
466                <a class="dropdown-item " target="_blank" rel="noopener" 
467                href="https://play.google.com/store/apps/details?id=yet.another.dino"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/yad.png'>Yet Another dino<small class='dropdown-subtitle'>Run, jump, and dodge in a dangerous adventure</small></a>
468              </li>
469              
470              
471              
472              <li>
473                <a class="dropdown-item " target="_blank" rel="noopener" 
474                href="https://play.google.com/store/apps/details?id=com.watchfacestudio.twistwatchface"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/watchface.png'>Twist<small class='dropdown-subtitle'>Watchface for Android Wear</small></a>
475              </li>
476              
477              
478              
479              <li>
480                <a class="dropdown-item " target="_blank" rel="noopener" 
481                href="https://play.google.com/store/apps/details?id=com.watchfacestudio.smartminimalismwatchface"><img class='dropdown-icon' style='width:24px;height:24px;top:9px'  src='/images/apps/watchface.png'>Smart minimalism<small class='dropdown-subtitle'>Watchface for Android Wear</small></a>
482              </li>
483              
484            </ul>
485          </li>
486          
487          
488          
489          
490          
491          
492          <li class="nav-item ">
493            <a class="nav-link" target="_blank" rel="noopener" 
494              href="https://discord.com/invite/UyY4PY768V">Discord</a>
495          </li>
496          
497          
498          
499          
500          
501          
502          <li class="nav-item ">
503            <a class="nav-link" 
504              href="/contact">Contact</a>
505          </li>
506          
507          
508        </ul>
509
510        
511        
512        <select class="me-1 border-0 d-none d-lg-inline-block" id="select-language" onchange="location = this.value;">
513          
514          
515          
516          
517          
518          
519          
520          
521          <option id="en" value="/contact/" selected>EN
522          </option>
523          
524          
525          
526          
527          
528          
529          
530          
531          
532          
533          
534          
535          
536          <option id="ru" value="/ru/contact/">RU</option>
537          
538          
539          
540          
541        </select>
542        
543
544        
545
546        
547      </div>
548    </nav>
549  </div>
550</header>
551
552
553
554
555
556
557	<main>
558		
559
560<section class="section pb-0">
561  <div class="container text-center">
562    <div class="container">
563      <div class="row">
564        <div class="col-lg-6 mx-auto">
565          
566          <h1 class="h2 mb-3">Contact</h1>
567                    
568          
569
570
571
572        
573
574        
575
576
577
578
579
580
581        </div>
582      </div>
583    </div>
584  </div>
585</section>
586
587<section class="section">
588  <div class="container">
589    <div class="row gy-5">
590      <div class="col-lg-6">
591        <div class="content">
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612  
613  
614    
615    <img
616      title=""
617      loading="lazy"
618      decoding="async"
619      src="https://magicpods.app/images/about.webp"
620      alt=""
621      class="img custom-image  "
622      width=""
623      height="" />
624  
625  
626
627
628
629
630
631
632  
632<script>
633    window.addEventListener("load", (e) => {
634      const lightbox = GLightbox();
635    });
636  </script>
636
637
638
639<h4 id="hello-i-am-aleksandr-maslov--the-developer-of-magicpods">Hello, I am Aleksandr Maslov — the developer of MagicPods</h4>
640<p>Since 2019, I have been actively designing and developing MagicPods, starting with a small application to view the battery level of AirPods. Since then, it has grown into a full-fledged multilingual application for Windows 10 and 11, featuring its own MagicAAP driver and a port for SteamDeck, supporting a variety of features and headphones from different manufacturers.</p>
641<p><strong>📧 <a href="mailto:[email protected]"
642
643
644
645 
646
647
648>[email protected]</a></strong></p>
649</div>
650      </div>      
651      <div class="col-lg-6">              
652        <div class="contact-form">
653
654          <div id="result" class="result-container">
655            <div id="loading" class="result-container-center">
656              <img src="/images/hourglass_not_done_3d.png" class="result-image mb-2">
657            </div>
658            <div id="success" class="result-container-center">
659              <img src="/images/e-mail_3d.png" class="result-image mb-2">
660              <p class="result-text mb-0"><strong>Thank you for your message!</strong></p>
661              <p class="result-text mb-2">I will respond to you shortly</p>           
662            </div>
663        
664              <div id="fail" class="result-container-center">
665                <img src="/images/construction_3d.png" class="result-image mb-2">
666                <p class="result-text mb-2"><strong>Something went wrong!</strong></p>
667                <button id="retry" class="btn btn-sm btn-primary mb-0">Try again</button>
668              </div>
669          </div>
670
671        <form id="form" method="POST" class="row g-4" action="https://api.web3forms.com/submit">          
672          <input type="hidden" name="access_key" value="b2304e10-796f-42ba-993d-843068b7f8d3" />
673          <input type="hidden" name="subject" value="Contact" />          
674          <input type="checkbox" name="botcheck" class="hidden" style="display: none;">
675          <div class="col-lg-12">
676            <label class="mb-1" for="email">Email Address <span class="text-danger">*</span></label>
677            <input id="email" class="form-control shadow-none" type="email" name="email_address" placeholder="Email Address" required>
678          </div>
679          <div class="col-lg-12">
680            <label class="mb-1" for="text">Message <span class="text-danger">*</span></label>
681            <textarea id="text" class="form-control shadow-none" name="message" rows="4" placeholder="Message" required></textarea>
682          </div>
683          <div class="col-lg-12">
684            <div id="captcha" class="h-captcha captcha mb-0" data-lang="en" data-captcha="true" error-message="Please fill out captcha field"></div> 
685            <button class="btn btn-primary btn-sm mt-2" type="submit">Send</button>
686          </div>
687        </form>
688
689      </div>
690      </div>
691    </div>
692  </div>
693</section>
694
695<style>
696  .result-container {
697    display: none;
698    position: absolute;
699    width: 100%;
700    height: 100%;
701    padding: 1.5em;
702     
703    background-color: white;
704    border-radius: 3px;
705    z-index: 1000;
706    text-align: center;
707    font-size: inherit;
708  }
709
710  .result-container-center {
711    margin: 0;
712    position: absolute;
713    top: 50%;
714    left: 0;
715    transform: translate(0, -50%);
716    width: 100%;
717    padding: 1.5em;
718    display: none;
719  }
720
721  .result-container-center.show {
722    display: block;
723  }
724
725  .result-container.show {
726    display: block;
727  }
728
729  .result-image {
730    width: 96px;
731    height: 96px;
732  }
733
734  .captcha > * {
735    margin-bottom: 0px;
736  }
737
738  .contact-form {
739    position: relative;
740  }
741
742  .custom-image{
743    margin-top: -64px !important;
744    margin-bottom: 0px !important;
745  }
746</style>
747
748<script>
749  document.addEventListener('DOMContentLoaded', function () {
750    const form = document.getElementById('form');
751    const retry = document.getElementById('retry');
752    const resultContainer = document.getElementById('result');
753    const success = document.getElementById('success');
754    const fail = document.getElementById('fail');
755    const loading = document.getElementById('loading');
756    form.reset();
757    
758    retry.addEventListener('click', function () {
759      window.location.reload();
760    });
761
762    form.addEventListener('submit', function (e) {
763      e.preventDefault();
764
765      const hCaptcha = form.querySelector('textarea[name=h-captcha-response]').value;
766      if (!hCaptcha) {          
767          alert(document.getElementById('captcha').getAttribute('error-message'));
768          return
769      }
770      
771      const formData = new FormData(form);
772      const object = Object.fromEntries(formData);
773      const json = JSON.stringify(object);
774
775      resultContainer.classList.add('show');
776      loading.classList.add('show');
777
778      fetch('https://api.web3forms.com/submit', {
779        method: 'POST',
780        headers: {
781          'Content-Type': 'application/json',
782          'Accept': 'application/json'
783        },
784        body: json
785      })
786        .then(async (response) => {
787          let json = await response.json();
788          if (response.status == 200) {
789            console.log(json.message);
790            loading.classList.remove('show');
791            success.classList.add('show');            
792          } else {
793            console.log(response);
794            loading.classList.remove('show');
795            fail.classList.add('show');
796          }
797        })
798        .catch(error => {
799          loading.classList.remove('show');
800          fail.classList.add('show');
801          console.log(error);
802        })
803    });
804  });
805</script>
805
806
807<script src="https://web3forms.com/client/script.js" async defer></script>
807
808
809	</main>
810
811	
812	
813	<footer class="bg-light section pb-0">
814  <div class="container">
815    <div class="row justify-content-center">
816      <div class="col-xl-11">
817        <div class="section pt-0">
818          <div class="row gy-4">
819            <div class="col-lg-3 col-sm-6">
820              
821              <div class="h5 mb-4">Project</div>
822              <ul class="list-unstyled footer-list">
823                
824                <li><a href="/faq" title="FAQ">FAQ</a></li>
825                
826                <li><a href="/privacy" title="Privacy policy">Privacy policy</a></li>
827                
828                <li><a href="https://help.magicpods.app/changelog/" title="Changelog">Changelog</a></li>
829                
830              </ul>
831              
832            </div>
833            <div class="col-lg-3 col-sm-6">
834              
835              <div class="h5 mb-4">Support</div>
836              <ul class="list-unstyled footer-list">
837                
838                <li><a href="/buy" title="Purchase">Purchase</a></li>
839                
840                <li><a href="https://help.magicpods.app/" title="Help">Help</a></li>
841                
842                <li><a href="https://weblate.magicpods.app/engage/magicpods-windows/" title="Translate">Translate</a></li>
843                
844                <li><a href="https://help.magicpods.app/report-issue/" title="Report issue">Report issue</a></li>
845                
846                <li><a href="/donate" title="Donate">Donate</a></li>
847                
848                <li><a href="/contact" title="Contact">Contact</a></li>
849                
850              </ul>
851              
852            </div>
853            <div class="col-lg-3 col-sm-6">
854              
855              <div class="h5 mb-4">Apps</div>
856              <ul class="list-unstyled footer-list">
857                
858                <li><a href="https://play.google.com/store/apps/details?id=com.watchfacestudio.twistwatchface" title="Twist">Twist</a></li>
859                
860                <li><a href="https://www.microsoft.com/store/apps/9N78GWBTW7L5" title="MagicSelect">MagicSelect</a></li>
861                
862                <li><a href="https://www.microsoft.com/store/apps/9NGB2P0TSMBF" title="MagicTranslate">MagicTranslate</a></li>
863                
864                <li><a href="https://play.google.com/store/apps/details?id=yet.another.dino" title="Yet Another Dino">Yet Another Dino</a></li>
865                
866                <li><a href="https://play.google.com/store/apps/details?id=com.watchfacestudio.smartminimalismwatchface" title="Smart minimalism">Smart minimalism</a></li>
867                
868                <li><a href="/steamdeck" title="MagicPods for Steam Deck">MagicPods for Steam Deck</a></li>
869                
870                <li><a href="https://github.com/steam3d/magicblackDecky" title="MagicBlack for Steam Deck">MagicBlack for Steam Deck</a></li>
871                
872              </ul>
873              
874            </div>
875            <div class="col-lg-3 col-sm-6">
876              <a class="d-block h5 mb-3" href="https://magicpods.app/">
877                
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897  
898
899
900
901
902  
903  
904    <img
905      fetchpriority="high"
906      decoding="async"
907      src="https://magicpods.app/images/logo.png"
908      alt="MagicPods"
909      class="img img-light"
910      height="auto"
911      width="156" />
912    <img
913      fetchpriority="high"
914      decoding="async"
915      src="https://magicpods.app/images/logo-w.png"
916      alt="MagicPods"
917      class="img img-dark"
918      height="auto"
919      width="156" />
920  
921
922
923
924              </a>
925              <p class="mb-4">Contacts and social media</p>
926              
927              <ul class="list-inline social-icons">
928                
929                <li class="list-inline-item"><a href="mailto:[email protected]" title="Mail"><i
930                      class="fa-solid fa-envelope"></i></a></li>
931                
932                <li class="list-inline-item"><a href="https://discord.com/invite/UyY4PY768V" title="Discord"><i
933                      class="fab fa-discord"></i></a></li>
934                
935                <li class="list-inline-item"><a href="https://github.com/steam3d/" title="GitHub"><i
936                      class="fab fa-github"></i></a></li>
937                
938                <li class="list-inline-item"><a href="https://www.linkedin.com/in/steam3d/" title="Linkedin"><i
939                      class="fab fa-linkedin"></i></a></li>
940                
941                <li class="list-inline-item"><a href="https://t.me/magicpods" title="Telegram"><i
942                      class="fab fa-telegram"></i></a></li>
943                
944                <li class="list-inline-item"><a href="https://www.reddit.com/r/magicpods/" title="Reddit"><i
945                      class="fab fa-reddit"></i></a></li>
946                
947                <li class="list-inline-item"><a href="https://www.behance.net/steam3d" title="Behance"><i
948                      class="fab fa-behance"></i></a></li>
949                
950              </ul>
951              
952            </div>
953          </div>
954        </div>
955        
956
957      </div>
958    </div>
959  </div>
960</footer>
961	
962
963
964
965
966
967
968
969
970<script crossorigin="anonymous" defer  integrity="sha512-ax0wAJuPg6CSws9vJ4lswjWvk2zwkcJ8pNDt0Qr0cEeqTy1iX13iYLr1e4gUgACd9hW1fqH1uZJBFOzVdXhUsw==" type="application/javascript">(() => {
971  var __create = Object.create;
972  var __defProp = Object.defineProperty;
973  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
974  var __getOwnPropNames = Object.getOwnPropertyNames;
975  var __getProtoOf = Object.getPrototypeOf;
976  var __hasOwnProp = Object.prototype.hasOwnProperty;
977  var __commonJS = (cb, mod) => function __require() {
978    try {
979      return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
980    } catch (e) {
981      throw mod = 0, e;
982    }
983  };
984  var __copyProps = (to, from, except, desc) => {
985    if (from && typeof from === "object" || typeof from === "function") {
986      for (let key of __getOwnPropNames(from))
987        if (!__hasOwnProp.call(to, key) && key !== except)
988          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
989    }
990    return to;
991  };
992  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
993    // If the importer is in node compatibility mode or this is not an ESM
994    // file that has been converted to a CommonJS file using a Babel-
995    // compatible transform (i.e. "__esModule" has not been set), then set
996    // "default" to the CommonJS "module.exports" for node compatibility.
997    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
998    mod
999  ));
1000
1001  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/[email protected]/package/dist/cjs/popper.js
1002  var require_popper = __commonJS({
1003    "ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/[email protected]/package/dist/cjs/popper.js"(exports) {
1004      "use strict";
1005      Object.defineProperty(exports, "__esModule", { value: true });
1006      function getWindow(node) {
1007        if (node == null) {
1008          return window;
1009        }
1010        if (node.toString() !== "[object Window]") {
1011          var ownerDocument = node.ownerDocument;
1012          return ownerDocument ? ownerDocument.defaultView || window : window;
1013        }
1014        return node;
1015      }
1016      function isElement2(node) {
1017        var OwnElement = getWindow(node).Element;
1018        return node instanceof OwnElement || node instanceof Element;
1019      }
1020      function isHTMLElement(node) {
1021        var OwnElement = getWindow(node).HTMLElement;
1022        return node instanceof OwnElement || node instanceof HTMLElement;
1023      }
1024      function isShadowRoot(node) {
1025        if (typeof ShadowRoot === "undefined") {
1026          return false;
1027        }
1028        var OwnElement = getWindow(node).ShadowRoot;
1029        return node instanceof OwnElement || node instanceof ShadowRoot;
1030      }
1031      var max = Math.max;
1032      var min = Math.min;
1033      var round = Math.round;
1034      function getBoundingClientRect(element, includeScale) {
1035        if (includeScale === void 0) {
1036          includeScale = false;
1037        }
1038        var rect = element.getBoundingClientRect();
1039        var scaleX = 1;
1040        var scaleY = 1;
1041        if (isHTMLElement(element) && includeScale) {
1042          var offsetHeight = element.offsetHeight;
1043          var offsetWidth = element.offsetWidth;
1044          if (offsetWidth > 0) {
1045            scaleX = round(rect.width) / offsetWidth || 1;
1046          }
1047          if (offsetHeight > 0) {
1048            scaleY = round(rect.height) / offsetHeight || 1;
1049          }
1050        }
1051        return {
1052          width: rect.width / scaleX,
1053          height: rect.height / scaleY,
1054          top: rect.top / scaleY,
1055          right: rect.right / scaleX,
1056          bottom: rect.bottom / scaleY,
1057          left: rect.left / scaleX,
1058          x: rect.left / scaleX,
1059          y: rect.top / scaleY
1060        };
1061      }
1062      function getWindowScroll(node) {
1063        var win = getWindow(node);
1064        var scrollLeft = win.pageXOffset;
1065        var scrollTop = win.pageYOffset;
1066        return {
1067          scrollLeft,
1068          scrollTop
1069        };
1070      }
1071      function getHTMLElementScroll(element) {
1072        return {
1073          scrollLeft: element.scrollLeft,
1074          scrollTop: element.scrollTop
1075        };
1076      }
1077      function getNodeScroll(node) {
vendor: 4,754 bytes, lines 1078-1193
1078        if (node === getWindow(node) || !isHTMLElement(node)) {
1079          return getWindowScroll(node);
1080        } else {
1081          return getHTMLElementScroll(node);
1082        }
1083      }
1084      function getNodeName(element) {
1085        return element ? (element.nodeName || "").toLowerCase() : null;
1086      }
1087      function getDocumentElement(element) {
1088        return ((isElement2(element) ? element.ownerDocument : (
1089          // $FlowFixMe[prop-missing]
1090          element.document
1091        )) || window.document).documentElement;
1092      }
1093      function getWindowScrollBarX(element) {
1094        return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
1095      }
1096      function getComputedStyle2(element) {
1097        return getWindow(element).getComputedStyle(element);
1098      }
1099      function isScrollParent(element) {
1100        var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
1101        return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
1102      }
1103      function isElementScaled(element) {
1104        var rect = element.getBoundingClientRect();
1105        var scaleX = round(rect.width) / element.offsetWidth || 1;
1106        var scaleY = round(rect.height) / element.offsetHeight || 1;
1107        return scaleX !== 1 || scaleY !== 1;
1108      }
1109      function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
1110        if (isFixed === void 0) {
1111          isFixed = false;
1112        }
1113        var isOffsetParentAnElement = isHTMLElement(offsetParent);
1114        var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
1115        var documentElement = getDocumentElement(offsetParent);
1116        var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
1117        var scroll = {
1118          scrollLeft: 0,
1119          scrollTop: 0
1120        };
1121        var offsets = {
1122          x: 0,
1123          y: 0
1124        };
1125        if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
1126          if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
1127          isScrollParent(documentElement)) {
1128            scroll = getNodeScroll(offsetParent);
1129          }
1130          if (isHTMLElement(offsetParent)) {
1131            offsets = getBoundingClientRect(offsetParent, true);
1132            offsets.x += offsetParent.clientLeft;
1133            offsets.y += offsetParent.clientTop;
1134          } else if (documentElement) {
1135            offsets.x = getWindowScrollBarX(documentElement);
1136          }
1137        }
1138        return {
1139          x: rect.left + scroll.scrollLeft - offsets.x,
1140          y: rect.top + scroll.scrollTop - offsets.y,
1141          width: rect.width,
1142          height: rect.height
1143        };
1144      }
1145      function getLayoutRect(element) {
1146        var clientRect = getBoundingClientRect(element);
1147        var width = element.offsetWidth;
1148        var height = element.offsetHeight;
1149        if (Math.abs(clientRect.width - width) <= 1) {
1150          width = clientRect.width;
1151        }
1152        if (Math.abs(clientRect.height - height) <= 1) {
1153          height = clientRect.height;
1154        }
1155        return {
1156          x: element.offsetLeft,
1157          y: element.offsetTop,
1158          width,
1159          height
1160        };
1161      }
1162      function getParentNode(element) {
1163        if (getNodeName(element) === "html") {
1164          return element;
1165        }
1166        return (
1167          // this is a quicker (but less type safe) way to save quite some bytes from the bundle
1168          // $FlowFixMe[incompatible-return]
1169          // $FlowFixMe[prop-missing]
1170          element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
1171          element.parentNode || // DOM Element detected
1172          (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
1173          // $FlowFixMe[incompatible-call]: HTMLElement is a Node
1174          getDocumentElement(element)
1175        );
1176      }
1177      function getScrollParent(node) {
1178        if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
1179          return node.ownerDocument.body;
1180        }
1181        if (isHTMLElement(node) && isScrollParent(node)) {
1182          return node;
1183        }
1184        return getScrollParent(getParentNode(node));
1185      }
1186      function listScrollParents(element, list) {
1187        var _element$ownerDocumen;
1188        if (list === void 0) {
1189          list = [];
1190        }
1191        var scrollParent = getScrollParent(element);
1192        var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
1193        var win = getWindow(scrollParent);
vendor: 4,320 bytes, lines 1194-1289
1194        var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
1195        var updatedList = list.concat(target);
1196        return isBody ? updatedList : (
1197          // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
1198          updatedList.concat(listScrollParents(getParentNode(target)))
1199        );
1200      }
1201      function isTableElement(element) {
1202        return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
1203      }
1204      function getTrueOffsetParent(element) {
1205        if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
1206        getComputedStyle2(element).position === "fixed") {
1207          return null;
1208        }
1209        return element.offsetParent;
1210      }
1211      function getContainingBlock(element) {
1212        var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1;
1213        var isIE = navigator.userAgent.indexOf("Trident") !== -1;
1214        if (isIE && isHTMLElement(element)) {
1215          var elementCss = getComputedStyle2(element);
1216          if (elementCss.position === "fixed") {
1217            return null;
1218          }
1219        }
1220        var currentNode = getParentNode(element);
1221        while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
1222          var css = getComputedStyle2(currentNode);
1223          if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") {
1224            return currentNode;
1225          } else {
1226            currentNode = currentNode.parentNode;
1227          }
1228        }
1229        return null;
1230      }
1231      function getOffsetParent(element) {
1232        var window2 = getWindow(element);
1233        var offsetParent = getTrueOffsetParent(element);
1234        while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
1235          offsetParent = getTrueOffsetParent(offsetParent);
1236        }
1237        if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) {
1238          return window2;
1239        }
1240        return offsetParent || getContainingBlock(element) || window2;
1241      }
1242      var top = "top";
1243      var bottom = "bottom";
1244      var right = "right";
1245      var left = "left";
1246      var auto = "auto";
1247      var basePlacements = [top, bottom, right, left];
1248      var start = "start";
1249      var end = "end";
1250      var clippingParents = "clippingParents";
1251      var viewport = "viewport";
1252      var popper = "popper";
1253      var reference = "reference";
1254      var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
1255        return acc.concat([placement + "-" + start, placement + "-" + end]);
1256      }, []);
1257      var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
1258        return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
1259      }, []);
1260      var beforeRead = "beforeRead";
1261      var read = "read";
1262      var afterRead = "afterRead";
1263      var beforeMain = "beforeMain";
1264      var main = "main";
1265      var afterMain = "afterMain";
1266      var beforeWrite = "beforeWrite";
1267      var write = "write";
1268      var afterWrite = "afterWrite";
1269      var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
1270      function order(modifiers) {
1271        var map = /* @__PURE__ */ new Map();
1272        var visited = /* @__PURE__ */ new Set();
1273        var result = [];
1274        modifiers.forEach(function(modifier) {
1275          map.set(modifier.name, modifier);
1276        });
1277        function sort(modifier) {
1278          visited.add(modifier.name);
1279          var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
1280          requires.forEach(function(dep) {
1281            if (!visited.has(dep)) {
1282              var depModifier = map.get(dep);
1283              if (depModifier) {
1284                sort(depModifier);
1285              }
1286            }
1287          });
1288          result.push(modifier);
1289        }
vendor: 5,852 bytes, lines 1290-1422
1290        modifiers.forEach(function(modifier) {
1291          if (!visited.has(modifier.name)) {
1292            sort(modifier);
1293          }
1294        });
1295        return result;
1296      }
1297      function orderModifiers(modifiers) {
1298        var orderedModifiers = order(modifiers);
1299        return modifierPhases.reduce(function(acc, phase) {
1300          return acc.concat(orderedModifiers.filter(function(modifier) {
1301            return modifier.phase === phase;
1302          }));
1303        }, []);
1304      }
1305      function debounce(fn) {
1306        var pending;
1307        return function() {
1308          if (!pending) {
1309            pending = new Promise(function(resolve) {
1310              Promise.resolve().then(function() {
1311                pending = void 0;
1312                resolve(fn());
1313              });
1314            });
1315          }
1316          return pending;
1317        };
1318      }
1319      function format(str) {
1320        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1321          args[_key - 1] = arguments[_key];
1322        }
1323        return [].concat(args).reduce(function(p, c) {
1324          return p.replace(/%s/, c);
1325        }, str);
1326      }
1327      var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
1328      var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
1329      var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"];
1330      function validateModifiers(modifiers) {
1331        modifiers.forEach(function(modifier) {
1332          [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) {
1333            return self.indexOf(value) === index;
1334          }).forEach(function(key) {
1335            switch (key) {
1336              case "name":
1337                if (typeof modifier.name !== "string") {
1338                  console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"'));
1339                }
1340                break;
1341              case "enabled":
1342                if (typeof modifier.enabled !== "boolean") {
1343                  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"'));
1344                }
1345                break;
1346              case "phase":
1347                if (modifierPhases.indexOf(modifier.phase) < 0) {
1348                  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"'));
1349                }
1350                break;
1351              case "fn":
1352                if (typeof modifier.fn !== "function") {
1353                  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"'));
1354                }
1355                break;
1356              case "effect":
1357                if (modifier.effect != null && typeof modifier.effect !== "function") {
1358                  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"'));
1359                }
1360                break;
1361              case "requires":
1362                if (modifier.requires != null && !Array.isArray(modifier.requires)) {
1363                  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"'));
1364                }
1365                break;
1366              case "requiresIfExists":
1367                if (!Array.isArray(modifier.requiresIfExists)) {
1368                  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"'));
1369                }
1370                break;
1371              case "options":
1372              case "data":
1373                break;
1374              default:
1375                console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) {
1376                  return '"' + s + '"';
1377                }).join(", ") + '; but "' + key + '" was provided.');
1378            }
1379            modifier.requires && modifier.requires.forEach(function(requirement) {
1380              if (modifiers.find(function(mod) {
1381                return mod.name === requirement;
1382              }) == null) {
1383                console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
1384              }
1385            });
1386          });
1387        });
1388      }
1389      function uniqueBy(arr, fn) {
1390        var identifiers = /* @__PURE__ */ new Set();
1391        return arr.filter(function(item) {
1392          var identifier = fn(item);
1393          if (!identifiers.has(identifier)) {
1394            identifiers.add(identifier);
1395            return true;
1396          }
1397        });
1398      }
1399      function getBasePlacement(placement) {
1400        return placement.split("-")[0];
1401      }
1402      function mergeByName(modifiers) {
1403        var merged = modifiers.reduce(function(merged2, current) {
1404          var existing = merged2[current.name];
1405          merged2[current.name] = existing ? Object.assign({}, existing, current, {
1406            options: Object.assign({}, existing.options, current.options),
1407            data: Object.assign({}, existing.data, current.data)
1408          }) : current;
1409          return merged2;
1410        }, {});
1411        return Object.keys(merged).map(function(key) {
1412          return merged[key];
1413        });
1414      }
1415      function getViewportRect(element) {
1416        var win = getWindow(element);
1417        var html = getDocumentElement(element);
1418        var visualViewport = win.visualViewport;
1419        var width = html.clientWidth;
1420        var height = html.clientHeight;
1421        var x = 0;
1422        var y = 0;
vendor: 11,597 bytes, lines 1423-1672
1423        if (visualViewport) {
1424          width = visualViewport.width;
1425          height = visualViewport.height;
1426          if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
1427            x = visualViewport.offsetLeft;
1428            y = visualViewport.offsetTop;
1429          }
1430        }
1431        return {
1432          width,
1433          height,
1434          x: x + getWindowScrollBarX(element),
1435          y
1436        };
1437      }
1438      function getDocumentRect(element) {
1439        var _element$ownerDocumen;
1440        var html = getDocumentElement(element);
1441        var winScroll = getWindowScroll(element);
1442        var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
1443        var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
1444        var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
1445        var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
1446        var y = -winScroll.scrollTop;
1447        if (getComputedStyle2(body || html).direction === "rtl") {
1448          x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
1449        }
1450        return {
1451          width,
1452          height,
1453          x,
1454          y
1455        };
1456      }
1457      function contains(parent, child) {
1458        var rootNode = child.getRootNode && child.getRootNode();
1459        if (parent.contains(child)) {
1460          return true;
1461        } else if (rootNode && isShadowRoot(rootNode)) {
1462          var next = child;
1463          do {
1464            if (next && parent.isSameNode(next)) {
1465              return true;
1466            }
1467            next = next.parentNode || next.host;
1468          } while (next);
1469        }
1470        return false;
1471      }
1472      function rectToClientRect(rect) {
1473        return Object.assign({}, rect, {
1474          left: rect.x,
1475          top: rect.y,
1476          right: rect.x + rect.width,
1477          bottom: rect.y + rect.height
1478        });
1479      }
1480      function getInnerBoundingClientRect(element) {
1481        var rect = getBoundingClientRect(element);
1482        rect.top = rect.top + element.clientTop;
1483        rect.left = rect.left + element.clientLeft;
1484        rect.bottom = rect.top + element.clientHeight;
1485        rect.right = rect.left + element.clientWidth;
1486        rect.width = element.clientWidth;
1487        rect.height = element.clientHeight;
1488        rect.x = rect.left;
1489        rect.y = rect.top;
1490        return rect;
1491      }
1492      function getClientRectFromMixedType(element, clippingParent) {
1493        return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
1494      }
1495      function getClippingParents(element) {
1496        var clippingParents2 = listScrollParents(getParentNode(element));
1497        var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0;
1498        var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
1499        if (!isElement2(clipperElement)) {
1500          return [];
1501        }
1502        return clippingParents2.filter(function(clippingParent) {
1503          return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true);
1504        });
1505      }
1506      function getClippingRect(element, boundary, rootBoundary) {
1507        var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
1508        var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
1509        var firstClippingParent = clippingParents2[0];
1510        var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
1511          var rect = getClientRectFromMixedType(element, clippingParent);
1512          accRect.top = max(rect.top, accRect.top);
1513          accRect.right = min(rect.right, accRect.right);
1514          accRect.bottom = min(rect.bottom, accRect.bottom);
1515          accRect.left = max(rect.left, accRect.left);
1516          return accRect;
1517        }, getClientRectFromMixedType(element, firstClippingParent));
1518        clippingRect.width = clippingRect.right - clippingRect.left;
1519        clippingRect.height = clippingRect.bottom - clippingRect.top;
1520        clippingRect.x = clippingRect.left;
1521        clippingRect.y = clippingRect.top;
1522        return clippingRect;
1523      }
1524      function getVariation(placement) {
1525        return placement.split("-")[1];
1526      }
1527      function getMainAxisFromPlacement(placement) {
1528        return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
1529      }
1530      function computeOffsets(_ref) {
1531        var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
1532        var basePlacement = placement ? getBasePlacement(placement) : null;
1533        var variation = placement ? getVariation(placement) : null;
1534        var commonX = reference2.x + reference2.width / 2 - element.width / 2;
1535        var commonY = reference2.y + reference2.height / 2 - element.height / 2;
1536        var offsets;
1537        switch (basePlacement) {
1538          case top:
1539            offsets = {
1540              x: commonX,
1541              y: reference2.y - element.height
1542            };
1543            break;
1544          case bottom:
1545            offsets = {
1546              x: commonX,
1547              y: reference2.y + reference2.height
1548            };
1549            break;
1550          case right:
1551            offsets = {
1552              x: reference2.x + reference2.width,
1553              y: commonY
1554            };
1555            break;
1556          case left:
1557            offsets = {
1558              x: reference2.x - element.width,
1559              y: commonY
1560            };
1561            break;
1562          default:
1563            offsets = {
1564              x: reference2.x,
1565              y: reference2.y
1566            };
1567        }
1568        var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
1569        if (mainAxis != null) {
1570          var len = mainAxis === "y" ? "height" : "width";
1571          switch (variation) {
1572            case start:
1573              offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
1574              break;
1575            case end:
1576              offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
1577              break;
1578          }
1579        }
1580        return offsets;
1581      }
1582      function getFreshSideObject() {
1583        return {
1584          top: 0,
1585          right: 0,
1586          bottom: 0,
1587          left: 0
1588        };
1589      }
1590      function mergePaddingObject(paddingObject) {
1591        return Object.assign({}, getFreshSideObject(), paddingObject);
1592      }
1593      function expandToHashMap(value, keys) {
1594        return keys.reduce(function(hashMap, key) {
1595          hashMap[key] = value;
1596          return hashMap;
1597        }, {});
1598      }
1599      function detectOverflow(state, options) {
1600        if (options === void 0) {
1601          options = {};
1602        }
1603        var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
1604        var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
1605        var altContext = elementContext === popper ? reference : popper;
1606        var popperRect = state.rects.popper;
1607        var element = state.elements[altBoundary ? altContext : elementContext];
1608        var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
1609        var referenceClientRect = getBoundingClientRect(state.elements.reference);
1610        var popperOffsets2 = computeOffsets({
1611          reference: referenceClientRect,
1612          element: popperRect,
1613          strategy: "absolute",
1614          placement
1615        });
1616        var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
1617        var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
1618        var overflowOffsets = {
1619          top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
1620          bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
1621          left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
1622          right: elementClientRect.right - clippingClientRect.right + paddingObject.right
1623        };
1624        var offsetData = state.modifiersData.offset;
1625        if (elementContext === popper && offsetData) {
1626          var offset2 = offsetData[placement];
1627          Object.keys(overflowOffsets).forEach(function(key) {
1628            var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
1629            var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
1630            overflowOffsets[key] += offset2[axis] * multiply;
1631          });
1632        }
1633        return overflowOffsets;
1634      }
1635      var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.";
1636      var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.";
1637      var DEFAULT_OPTIONS = {
1638        placement: "bottom",
1639        modifiers: [],
1640        strategy: "absolute"
1641      };
1642      function areValidElements() {
1643        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1644          args[_key] = arguments[_key];
1645        }
1646        return !args.some(function(element) {
1647          return !(element && typeof element.getBoundingClientRect === "function");
1648        });
1649      }
1650      function popperGenerator(generatorOptions) {
1651        if (generatorOptions === void 0) {
1652          generatorOptions = {};
1653        }
1654        var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
1655        return function createPopper3(reference2, popper2, options) {
1656          if (options === void 0) {
1657            options = defaultOptions;
1658          }
1659          var state = {
1660            placement: "bottom",
1661            orderedModifiers: [],
1662            options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
1663            modifiersData: {},
1664            elements: {
1665              reference: reference2,
1666              popper: popper2
1667            },
1668            attributes: {},
1669            styles: {}
1670          };
1671          var effectCleanupFns = [];
1672          var isDestroyed = false;
vendor: 4,183 bytes, lines 1673-1747
1673          var instance = {
1674            state,
1675            setOptions: function setOptions(setOptionsAction) {
1676              var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
1677              cleanupModifierEffects();
1678              state.options = Object.assign({}, defaultOptions, state.options, options2);
1679              state.scrollParents = {
1680                reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
1681                popper: listScrollParents(popper2)
1682              };
1683              var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
1684              state.orderedModifiers = orderedModifiers.filter(function(m) {
1685                return m.enabled;
1686              });
1687              if (true) {
1688                var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {
1689                  var name = _ref.name;
1690                  return name;
1691                });
1692                validateModifiers(modifiers);
1693                if (getBasePlacement(state.options.placement) === auto) {
1694                  var flipModifier = state.orderedModifiers.find(function(_ref2) {
1695                    var name = _ref2.name;
1696                    return name === "flip";
1697                  });
1698                  if (!flipModifier) {
1699                    console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" "));
1700                  }
1701                }
1702                var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft;
1703                if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {
1704                  return parseFloat(margin);
1705                })) {
1706                  console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" "));
1707                }
1708              }
1709              runModifierEffects();
1710              return instance.update();
1711            },
1712            // Sync update – it will always be executed, even if not necessary. This
1713            // is useful for low frequency updates where sync behavior simplifies the
1714            // logic.
1715            // For high frequency updates (e.g. `resize` and `scroll` events), always
1716            // prefer the async Popper#update method
1717            forceUpdate: function forceUpdate() {
1718              if (isDestroyed) {
1719                return;
1720              }
1721              var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
1722              if (!areValidElements(reference3, popper3)) {
1723                if (true) {
1724                  console.error(INVALID_ELEMENT_ERROR);
1725                }
1726                return;
1727              }
1728              state.rects = {
1729                reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
1730                popper: getLayoutRect(popper3)
1731              };
1732              state.reset = false;
1733              state.placement = state.options.placement;
1734              state.orderedModifiers.forEach(function(modifier) {
1735                return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
1736              });
1737              var __debug_loops__ = 0;
1738              for (var index = 0; index < state.orderedModifiers.length; index++) {
1739                if (true) {
1740                  __debug_loops__ += 1;
1741                  if (__debug_loops__ > 100) {
1742                    console.error(INFINITE_LOOP_ERROR);
1743                    break;
1744                  }
1745                }
1746                if (state.reset === true) {
1747                  state.reset = false;
vendor: 5,583 bytes, lines 1748-1890
1748                  index = -1;
1749                  continue;
1750                }
1751                var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
1752                if (typeof fn === "function") {
1753                  state = fn({
1754                    state,
1755                    options: _options,
1756                    name,
1757                    instance
1758                  }) || state;
1759                }
1760              }
1761            },
1762            // Async and optimistically optimized update – it will not be executed if
1763            // not necessary (debounced to run at most once-per-tick)
1764            update: debounce(function() {
1765              return new Promise(function(resolve) {
1766                instance.forceUpdate();
1767                resolve(state);
1768              });
1769            }),
1770            destroy: function destroy() {
1771              cleanupModifierEffects();
1772              isDestroyed = true;
1773            }
1774          };
1775          if (!areValidElements(reference2, popper2)) {
1776            if (true) {
1777              console.error(INVALID_ELEMENT_ERROR);
1778            }
1779            return instance;
1780          }
1781          instance.setOptions(options).then(function(state2) {
1782            if (!isDestroyed && options.onFirstUpdate) {
1783              options.onFirstUpdate(state2);
1784            }
1785          });
1786          function runModifierEffects() {
1787            state.orderedModifiers.forEach(function(_ref3) {
1788              var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect;
1789              if (typeof effect2 === "function") {
1790                var cleanupFn = effect2({
1791                  state,
1792                  name,
1793                  instance,
1794                  options: options2
1795                });
1796                var noopFn = function noopFn2() {
1797                };
1798                effectCleanupFns.push(cleanupFn || noopFn);
1799              }
1800            });
1801          }
1802          function cleanupModifierEffects() {
1803            effectCleanupFns.forEach(function(fn) {
1804              return fn();
1805            });
1806            effectCleanupFns = [];
1807          }
1808          return instance;
1809        };
1810      }
1811      var passive = {
1812        passive: true
1813      };
1814      function effect$2(_ref) {
1815        var state = _ref.state, instance = _ref.instance, options = _ref.options;
1816        var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
1817        var window2 = getWindow(state.elements.popper);
1818        var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
1819        if (scroll) {
1820          scrollParents.forEach(function(scrollParent) {
1821            scrollParent.addEventListener("scroll", instance.update, passive);
1822          });
1823        }
1824        if (resize) {
1825          window2.addEventListener("resize", instance.update, passive);
1826        }
1827        return function() {
1828          if (scroll) {
1829            scrollParents.forEach(function(scrollParent) {
1830              scrollParent.removeEventListener("scroll", instance.update, passive);
1831            });
1832          }
1833          if (resize) {
1834            window2.removeEventListener("resize", instance.update, passive);
1835          }
1836        };
1837      }
1838      var eventListeners = {
1839        name: "eventListeners",
1840        enabled: true,
1841        phase: "write",
1842        fn: function fn() {
1843        },
1844        effect: effect$2,
1845        data: {}
1846      };
1847      function popperOffsets(_ref) {
1848        var state = _ref.state, name = _ref.name;
1849        state.modifiersData[name] = computeOffsets({
1850          reference: state.rects.reference,
1851          element: state.rects.popper,
1852          strategy: "absolute",
1853          placement: state.placement
1854        });
1855      }
1856      var popperOffsets$1 = {
1857        name: "popperOffsets",
1858        enabled: true,
1859        phase: "read",
1860        fn: popperOffsets,
1861        data: {}
1862      };
1863      var unsetSides = {
1864        top: "auto",
1865        right: "auto",
1866        bottom: "auto",
1867        left: "auto"
1868      };
1869      function roundOffsetsByDPR(_ref) {
1870        var x = _ref.x, y = _ref.y;
1871        var win = window;
1872        var dpr = win.devicePixelRatio || 1;
1873        return {
1874          x: round(x * dpr) / dpr || 0,
1875          y: round(y * dpr) / dpr || 0
1876        };
1877      }
1878      function mapToStyles(_ref2) {
1879        var _Object$assign2;
1880        var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
1881        var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y;
1882        var hasX = offsets.hasOwnProperty("x");
1883        var hasY = offsets.hasOwnProperty("y");
1884        var sideX = left;
1885        var sideY = top;
1886        var win = window;
1887        if (adaptive) {
1888          var offsetParent = getOffsetParent(popper2);
1889          var heightProp = "clientHeight";
1890          var widthProp = "clientWidth";
1891          if (offsetParent === getWindow(popper2)) {
1892            offsetParent = getDocumentElement(popper2);
1893            if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") {
1894              heightProp = "scrollHeight";
1895              widthProp = "scrollWidth";
1896            }
1897          }
1898          offsetParent = offsetParent;
1899          if (placement === top || (placement === left || placement === right) && variation === end) {
1900            sideY = bottom;
1901            var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : (
1902              // $FlowFixMe[prop-missing]
1903              offsetParent[heightProp]
1904            );
1905            y -= offsetY - popperRect.height;
1906            y *= gpuAcceleration ? 1 : -1;
1907          }
1908          if (placement === left || (placement === top || placement === bottom) && variation === end) {
1909            sideX = right;
1910            var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : (
1911              // $FlowFixMe[prop-missing]
1912              offsetParent[widthProp]
1913            );
1914            x -= offsetX - popperRect.width;
1915            x *= gpuAcceleration ? 1 : -1;
1916          }
1917        }
1918        var commonStyles = Object.assign({
1919          position
1920        }, adaptive && unsetSides);
1921        if (gpuAcceleration) {
1922          var _Object$assign;
1923          return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
1924        }
1925        return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
1926      }
1927      function computeStyles(_ref4) {
1928        var state = _ref4.state, options = _ref4.options;
1929        var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
1930        if (true) {
1931          var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || "";
1932          if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) {
1933            return transitionProperty.indexOf(property) >= 0;
1934          })) {
1935            console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" "));
1936          }
1937        }
1938        var commonStyles = {
1939          placement: getBasePlacement(state.placement),
1940          variation: getVariation(state.placement),
1941          popper: state.elements.popper,
1942          popperRect: state.rects.popper,
1943          gpuAcceleration,
1944          isFixed: state.options.strategy === "fixed"
1945        };
1946        if (state.modifiersData.popperOffsets != null) {
1947          state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
1948            offsets: state.modifiersData.popperOffsets,
1949            position: state.options.strategy,
1950            adaptive,
1951            roundOffsets
1952          })));
1953        }
1954        if (state.modifiersData.arrow != null) {
1955          state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
1956            offsets: state.modifiersData.arrow,
1957            position: "absolute",
1958            adaptive: false,
1959            roundOffsets
1960          })));
1961        }
1962        state.attributes.popper = Object.assign({}, state.attributes.popper, {
1963          "data-popper-placement": state.placement
1964        });
1965      }
1966      var computeStyles$1 = {
1967        name: "computeStyles",
1968        enabled: true,
1969        phase: "beforeWrite",
1970        fn: computeStyles,
1971        data: {}
1972      };
1973      function applyStyles(_ref) {
1974        var state = _ref.state;
vendor: 9,568 bytes, lines 1975-2188
1975        Object.keys(state.elements).forEach(function(name) {
1976          var style = state.styles[name] || {};
1977          var attributes = state.attributes[name] || {};
1978          var element = state.elements[name];
1979          if (!isHTMLElement(element) || !getNodeName(element)) {
1980            return;
1981          }
1982          Object.assign(element.style, style);
1983          Object.keys(attributes).forEach(function(name2) {
1984            var value = attributes[name2];
1985            if (value === false) {
1986              element.removeAttribute(name2);
1987            } else {
1988              element.setAttribute(name2, value === true ? "" : value);
1989            }
1990          });
1991        });
1992      }
1993      function effect$1(_ref2) {
1994        var state = _ref2.state;
1995        var initialStyles = {
1996          popper: {
1997            position: state.options.strategy,
1998            left: "0",
1999            top: "0",
2000            margin: "0"
2001          },
2002          arrow: {
2003            position: "absolute"
2004          },
2005          reference: {}
2006        };
2007        Object.assign(state.elements.popper.style, initialStyles.popper);
2008        state.styles = initialStyles;
2009        if (state.elements.arrow) {
2010          Object.assign(state.elements.arrow.style, initialStyles.arrow);
2011        }
2012        return function() {
2013          Object.keys(state.elements).forEach(function(name) {
2014            var element = state.elements[name];
2015            var attributes = state.attributes[name] || {};
2016            var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
2017            var style = styleProperties.reduce(function(style2, property) {
2018              style2[property] = "";
2019              return style2;
2020            }, {});
2021            if (!isHTMLElement(element) || !getNodeName(element)) {
2022              return;
2023            }
2024            Object.assign(element.style, style);
2025            Object.keys(attributes).forEach(function(attribute) {
2026              element.removeAttribute(attribute);
2027            });
2028          });
2029        };
2030      }
2031      var applyStyles$1 = {
2032        name: "applyStyles",
2033        enabled: true,
2034        phase: "write",
2035        fn: applyStyles,
2036        effect: effect$1,
2037        requires: ["computeStyles"]
2038      };
2039      function distanceAndSkiddingToXY(placement, rects, offset2) {
2040        var basePlacement = getBasePlacement(placement);
2041        var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
2042        var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
2043          placement
2044        })) : offset2, skidding = _ref[0], distance = _ref[1];
2045        skidding = skidding || 0;
2046        distance = (distance || 0) * invertDistance;
2047        return [left, right].indexOf(basePlacement) >= 0 ? {
2048          x: distance,
2049          y: skidding
2050        } : {
2051          x: skidding,
2052          y: distance
2053        };
2054      }
2055      function offset(_ref2) {
2056        var state = _ref2.state, options = _ref2.options, name = _ref2.name;
2057        var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
2058        var data = placements.reduce(function(acc, placement) {
2059          acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
2060          return acc;
2061        }, {});
2062        var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
2063        if (state.modifiersData.popperOffsets != null) {
2064          state.modifiersData.popperOffsets.x += x;
2065          state.modifiersData.popperOffsets.y += y;
2066        }
2067        state.modifiersData[name] = data;
2068      }
2069      var offset$1 = {
2070        name: "offset",
2071        enabled: true,
2072        phase: "main",
2073        requires: ["popperOffsets"],
2074        fn: offset
2075      };
2076      var hash$1 = {
2077        left: "right",
2078        right: "left",
2079        bottom: "top",
2080        top: "bottom"
2081      };
2082      function getOppositePlacement(placement) {
2083        return placement.replace(/left|right|bottom|top/g, function(matched) {
2084          return hash$1[matched];
2085        });
2086      }
2087      var hash = {
2088        start: "end",
2089        end: "start"
2090      };
2091      function getOppositeVariationPlacement(placement) {
2092        return placement.replace(/start|end/g, function(matched) {
2093          return hash[matched];
2094        });
2095      }
2096      function computeAutoPlacement(state, options) {
2097        if (options === void 0) {
2098          options = {};
2099        }
2100        var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
2101        var variation = getVariation(placement);
2102        var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
2103          return getVariation(placement2) === variation;
2104        }) : basePlacements;
2105        var allowedPlacements = placements$1.filter(function(placement2) {
2106          return allowedAutoPlacements.indexOf(placement2) >= 0;
2107        });
2108        if (allowedPlacements.length === 0) {
2109          allowedPlacements = placements$1;
2110          if (true) {
2111            console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" "));
2112          }
2113        }
2114        var overflows = allowedPlacements.reduce(function(acc, placement2) {
2115          acc[placement2] = detectOverflow(state, {
2116            placement: placement2,
2117            boundary,
2118            rootBoundary,
2119            padding
2120          })[getBasePlacement(placement2)];
2121          return acc;
2122        }, {});
2123        return Object.keys(overflows).sort(function(a, b) {
2124          return overflows[a] - overflows[b];
2125        });
2126      }
2127      function getExpandedFallbackPlacements(placement) {
2128        if (getBasePlacement(placement) === auto) {
2129          return [];
2130        }
2131        var oppositePlacement = getOppositePlacement(placement);
2132        return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
2133      }
2134      function flip(_ref) {
2135        var state = _ref.state, options = _ref.options, name = _ref.name;
2136        if (state.modifiersData[name]._skip) {
2137          return;
2138        }
2139        var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
2140        var preferredPlacement = state.options.placement;
2141        var basePlacement = getBasePlacement(preferredPlacement);
2142        var isBasePlacement = basePlacement === preferredPlacement;
2143        var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
2144        var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
2145          return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
2146            placement: placement2,
2147            boundary,
2148            rootBoundary,
2149            padding,
2150            flipVariations,
2151            allowedAutoPlacements
2152          }) : placement2);
2153        }, []);
2154        var referenceRect = state.rects.reference;
2155        var popperRect = state.rects.popper;
2156        var checksMap = /* @__PURE__ */ new Map();
2157        var makeFallbackChecks = true;
2158        var firstFittingPlacement = placements2[0];
2159        for (var i = 0; i < placements2.length; i++) {
2160          var placement = placements2[i];
2161          var _basePlacement = getBasePlacement(placement);
2162          var isStartVariation = getVariation(placement) === start;
2163          var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
2164          var len = isVertical ? "width" : "height";
2165          var overflow = detectOverflow(state, {
2166            placement,
2167            boundary,
2168            rootBoundary,
2169            altBoundary,
2170            padding
2171          });
2172          var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
2173          if (referenceRect[len] > popperRect[len]) {
2174            mainVariationSide = getOppositePlacement(mainVariationSide);
2175          }
2176          var altVariationSide = getOppositePlacement(mainVariationSide);
2177          var checks = [];
2178          if (checkMainAxis) {
2179            checks.push(overflow[_basePlacement] <= 0);
2180          }
2181          if (checkAltAxis) {
2182            checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
2183          }
2184          if (checks.every(function(check) {
2185            return check;
2186          })) {
2187            firstFittingPlacement = placement;
2188            makeFallbackChecks = false;
vendor: 9,128 bytes, lines 2189-2359
2189            break;
2190          }
2191          checksMap.set(placement, checks);
2192        }
2193        if (makeFallbackChecks) {
2194          var numberOfChecks = flipVariations ? 3 : 1;
2195          var _loop = function _loop2(_i2) {
2196            var fittingPlacement = placements2.find(function(placement2) {
2197              var checks2 = checksMap.get(placement2);
2198              if (checks2) {
2199                return checks2.slice(0, _i2).every(function(check) {
2200                  return check;
2201                });
2202              }
2203            });
2204            if (fittingPlacement) {
2205              firstFittingPlacement = fittingPlacement;
2206              return "break";
2207            }
2208          };
2209          for (var _i = numberOfChecks; _i > 0; _i--) {
2210            var _ret = _loop(_i);
2211            if (_ret === "break") break;
2212          }
2213        }
2214        if (state.placement !== firstFittingPlacement) {
2215          state.modifiersData[name]._skip = true;
2216          state.placement = firstFittingPlacement;
2217          state.reset = true;
2218        }
2219      }
2220      var flip$1 = {
2221        name: "flip",
2222        enabled: true,
2223        phase: "main",
2224        fn: flip,
2225        requiresIfExists: ["offset"],
2226        data: {
2227          _skip: false
2228        }
2229      };
2230      function getAltAxis(axis) {
2231        return axis === "x" ? "y" : "x";
2232      }
2233      function within(min$1, value, max$1) {
2234        return max(min$1, min(value, max$1));
2235      }
2236      function withinMaxClamp(min2, value, max2) {
2237        var v = within(min2, value, max2);
2238        return v > max2 ? max2 : v;
2239      }
2240      function preventOverflow(_ref) {
2241        var state = _ref.state, options = _ref.options, name = _ref.name;
2242        var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
2243        var overflow = detectOverflow(state, {
2244          boundary,
2245          rootBoundary,
2246          padding,
2247          altBoundary
2248        });
2249        var basePlacement = getBasePlacement(state.placement);
2250        var variation = getVariation(state.placement);
2251        var isBasePlacement = !variation;
2252        var mainAxis = getMainAxisFromPlacement(basePlacement);
2253        var altAxis = getAltAxis(mainAxis);
2254        var popperOffsets2 = state.modifiersData.popperOffsets;
2255        var referenceRect = state.rects.reference;
2256        var popperRect = state.rects.popper;
2257        var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
2258          placement: state.placement
2259        })) : tetherOffset;
2260        var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
2261          mainAxis: tetherOffsetValue,
2262          altAxis: tetherOffsetValue
2263        } : Object.assign({
2264          mainAxis: 0,
2265          altAxis: 0
2266        }, tetherOffsetValue);
2267        var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
2268        var data = {
2269          x: 0,
2270          y: 0
2271        };
2272        if (!popperOffsets2) {
2273          return;
2274        }
2275        if (checkMainAxis) {
2276          var _offsetModifierState$;
2277          var mainSide = mainAxis === "y" ? top : left;
2278          var altSide = mainAxis === "y" ? bottom : right;
2279          var len = mainAxis === "y" ? "height" : "width";
2280          var offset2 = popperOffsets2[mainAxis];
2281          var min$1 = offset2 + overflow[mainSide];
2282          var max$1 = offset2 - overflow[altSide];
2283          var additive = tether ? -popperRect[len] / 2 : 0;
2284          var minLen = variation === start ? referenceRect[len] : popperRect[len];
2285          var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
2286          var arrowElement = state.elements.arrow;
2287          var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
2288            width: 0,
2289            height: 0
2290          };
2291          var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
2292          var arrowPaddingMin = arrowPaddingObject[mainSide];
2293          var arrowPaddingMax = arrowPaddingObject[altSide];
2294          var arrowLen = within(0, referenceRect[len], arrowRect[len]);
2295          var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
2296          var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
2297          var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
2298          var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
2299          var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
2300          var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
2301          var tetherMax = offset2 + maxOffset - offsetModifierValue;
2302          var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);
2303          popperOffsets2[mainAxis] = preventedOffset;
2304          data[mainAxis] = preventedOffset - offset2;
2305        }
2306        if (checkAltAxis) {
2307          var _offsetModifierState$2;
2308          var _mainSide = mainAxis === "x" ? top : left;
2309          var _altSide = mainAxis === "x" ? bottom : right;
2310          var _offset = popperOffsets2[altAxis];
2311          var _len = altAxis === "y" ? "height" : "width";
2312          var _min = _offset + overflow[_mainSide];
2313          var _max = _offset - overflow[_altSide];
2314          var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
2315          var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
2316          var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
2317          var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
2318          var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
2319          popperOffsets2[altAxis] = _preventedOffset;
2320          data[altAxis] = _preventedOffset - _offset;
2321        }
2322        state.modifiersData[name] = data;
2323      }
2324      var preventOverflow$1 = {
2325        name: "preventOverflow",
2326        enabled: true,
2327        phase: "main",
2328        fn: preventOverflow,
2329        requiresIfExists: ["offset"]
2330      };
2331      var toPaddingObject = function toPaddingObject2(padding, state) {
2332        padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
2333          placement: state.placement
2334        })) : padding;
2335        return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
2336      };
2337      function arrow(_ref) {
2338        var _state$modifiersData$;
2339        var state = _ref.state, name = _ref.name, options = _ref.options;
2340        var arrowElement = state.elements.arrow;
2341        var popperOffsets2 = state.modifiersData.popperOffsets;
2342        var basePlacement = getBasePlacement(state.placement);
2343        var axis = getMainAxisFromPlacement(basePlacement);
2344        var isVertical = [left, right].indexOf(basePlacement) >= 0;
2345        var len = isVertical ? "height" : "width";
2346        if (!arrowElement || !popperOffsets2) {
2347          return;
2348        }
2349        var paddingObject = toPaddingObject(options.padding, state);
2350        var arrowRect = getLayoutRect(arrowElement);
2351        var minProp = axis === "y" ? top : left;
2352        var maxProp = axis === "y" ? bottom : right;
2353        var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
2354        var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
2355        var arrowOffsetParent = getOffsetParent(arrowElement);
2356        var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
2357        var centerToReference = endDiff / 2 - startDiff / 2;
2358        var min2 = paddingObject[minProp];
2359        var max2 = clientSize - arrowRect[len] - paddingObject[maxPro
vendor: 5,000 bytes, lines 2359-2480
2359p];
2360        var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
2361        var offset2 = within(min2, center, max2);
2362        var axisProp = axis;
2363        state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
2364      }
2365      function effect(_ref2) {
2366        var state = _ref2.state, options = _ref2.options;
2367        var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
2368        if (arrowElement == null) {
2369          return;
2370        }
2371        if (typeof arrowElement === "string") {
2372          arrowElement = state.elements.popper.querySelector(arrowElement);
2373          if (!arrowElement) {
2374            return;
2375          }
2376        }
2377        if (true) {
2378          if (!isHTMLElement(arrowElement)) {
2379            console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" "));
2380          }
2381        }
2382        if (!contains(state.elements.popper, arrowElement)) {
2383          if (true) {
2384            console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" "));
2385          }
2386          return;
2387        }
2388        state.elements.arrow = arrowElement;
2389      }
2390      var arrow$1 = {
2391        name: "arrow",
2392        enabled: true,
2393        phase: "main",
2394        fn: arrow,
2395        effect,
2396        requires: ["popperOffsets"],
2397        requiresIfExists: ["preventOverflow"]
2398      };
2399      function getSideOffsets(overflow, rect, preventedOffsets) {
2400        if (preventedOffsets === void 0) {
2401          preventedOffsets = {
2402            x: 0,
2403            y: 0
2404          };
2405        }
2406        return {
2407          top: overflow.top - rect.height - preventedOffsets.y,
2408          right: overflow.right - rect.width + preventedOffsets.x,
2409          bottom: overflow.bottom - rect.height + preventedOffsets.y,
2410          left: overflow.left - rect.width - preventedOffsets.x
2411        };
2412      }
2413      function isAnySideFullyClipped(overflow) {
2414        return [top, right, bottom, left].some(function(side) {
2415          return overflow[side] >= 0;
2416        });
2417      }
2418      function hide(_ref) {
2419        var state = _ref.state, name = _ref.name;
2420        var referenceRect = state.rects.reference;
2421        var popperRect = state.rects.popper;
2422        var preventedOffsets = state.modifiersData.preventOverflow;
2423        var referenceOverflow = detectOverflow(state, {
2424          elementContext: "reference"
2425        });
2426        var popperAltOverflow = detectOverflow(state, {
2427          altBoundary: true
2428        });
2429        var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
2430        var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
2431        var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
2432        var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
2433        state.modifiersData[name] = {
2434          referenceClippingOffsets,
2435          popperEscapeOffsets,
2436          isReferenceHidden,
2437          hasPopperEscaped
2438        };
2439        state.attributes.popper = Object.assign({}, state.attributes.popper, {
2440          "data-popper-reference-hidden": isReferenceHidden,
2441          "data-popper-escaped": hasPopperEscaped
2442        });
2443      }
2444      var hide$1 = {
2445        name: "hide",
2446        enabled: true,
2447        phase: "main",
2448        requiresIfExists: ["preventOverflow"],
2449        fn: hide
2450      };
2451      var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
2452      var createPopper$1 = /* @__PURE__ */ popperGenerator({
2453        defaultModifiers: defaultModifiers$1
2454      });
2455      var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
2456      var createPopper2 = /* @__PURE__ */ popperGenerator({
2457        defaultModifiers
2458      });
2459      exports.applyStyles = applyStyles$1;
2460      exports.arrow = arrow$1;
2461      exports.computeStyles = computeStyles$1;
2462      exports.createPopper = createPopper2;
2463      exports.createPopperLite = createPopper$1;
2464      exports.defaultModifiers = defaultModifiers;
2465      exports.detectOverflow = detectOverflow;
2466      exports.eventListeners = eventListeners;
2467      exports.flip = flip$1;
2468      exports.hide = hide$1;
2469      exports.offset = offset$1;
2470      exports.popperGenerator = popperGenerator;
2471      exports.popperOffsets = popperOffsets$1;
2472      exports.preventOverflow = preventOverflow$1;
2473    }
2474  });
2475
2476  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/data.js
2477  var elementMap = /* @__PURE__ */ new Map();
2478  var data_default = {
2479    set(element, key, instance) {
2480      if (!elementMap.has(element)) {
2481        elementMap.set(element, /* @__PURE__ */ new Map());
2482      }
2483      const instanceMap = elementMap.get(element);
2484      if (!instanceMap.has(key) && instanceMap.size !== 0) {
2485        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
2486        return;
2487      }
2488      instanceMap.set(key, instance);
2489    },
2490    get(element, key) {
2491      if (elementMap.has(element)) {
2492        return elementMap.get(element).get(key) || null;
2493      }
2494      return null;
2495    },
2496    remove(element, key) {
2497      if (!elementMap.has(element)) {
2498        return;
2499      }
2500      const instanceMap = elementMap.get(element);
2501      instanceMap.delete(key);
2502      if (instanceMap.size === 0) {
2503        elementMap.delete(element);
2504      }
2505    }
2506  };
2507
2508  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/index.js
2509  var MILLISECONDS_MULTIPLIER = 1e3;
2510  var TRANSITION_END = "transitionend";
2511  var parseSelector = (selector) => {
2512    if (selector && window.CSS && window.CSS.escape) {
2513      selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
2514    }
2515    return selector;
2516  };
2517  var toType = (object) => {
2518    if (object === null || object === void 0) {
2519      return `${object}`;
2520    }
2521    return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
2522  };
2523  var getTransitionDurationFromElement = (element) => {
2524    if (!element) {
2525      return 0;
2526    }
2527    let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
2528    const floatTransitionDuration = Number.parseFloat(transitionDuration);
2529    const floatTransitionDelay = Number.parseFloat(transitionDelay);
2530    if (!floatTransitionDuration && !floatTransitionDelay) {
2531      return 0;
2532    }
2533    transitionDuration = transitionDuration.split(",")[0];
2534    transitionDelay = transitionDelay.split(",")[0];
2535    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
2536  };
2537  var triggerTransitionEnd = (element) => {
2538    element.dispatchEvent(new Event(TRANSITION_END));
2539  };
2540  var isElement = (object) => {
2541    if (!object || typeof object !== "object") {
2542      return false;
2543    }
2544    if (typeof object.jquery !== "undefined") {
2545      object = object[0];
2546    }
2547    return typeof object.nodeType !== "undefined";
2548  };
2549  var getElement = (object) => {
2550    if (isElement(object)) {
2551      return object.jquery ? object[0] : object;
2552    }
2553    if (typeof object === "string" && object.length > 0) {
2554      return document.querySelector(parseSelector(object));
2555    }
2556    return null;
2557  };
2558  var isVisible = (element) => {
2559    if (!isElement(element) || element.getClientRects().length === 0) {
2560      return false;
2561    }
2562    const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible";
2563    const closedDetails = element.closest("details:not([open])");
2564    if (!closedDetails) {
2565      return elementIsVisible;
2566    }
2567    if (closedDetails !== element) {
2568      const summary = element.closest("summary");
2569      if (summary && summary.parentNode !== closedDetails) {
2570        return false;
2571      }
2572      if (summary === null) {
2573        return false;
2574      }
2575    }
2576    return elementIsVisible;
2577  };
2578  var isDisabled = (element) => {
2579    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
2580      return true;
2581    }
2582    if (element.classList.contains("disabled")) {
2583      return true;
2584    }
2585    if (typeof element.disabled !== "undefined") {
2586      return element.disabled;
2587    }
2588    return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false";
2589  };
2590  var noop = () => {
2591  };
2592  var reflow = (element) => {
2593    element.offsetHeight;
2594  };
2595  var getjQuery = () => {
2596    if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) {
2597      return window.jQuery;
2598    }
2599    return null;
2600  };
2601  var DOMContentLoadedCallbacks = [];
2602  var onDOMContentLoaded = (callback) => {
2603    if (document.readyState === "loading") {
2604      if (!DOMContentLoadedCallbacks.length) {
2605        document.addEventListener("DOMContentLoaded", () => {
2606          for (const callback2 of DOMContentLoadedCallbacks) {
2607            callback2();
2608          }
2609        });
2610      }
2611      DOMContentLoadedCallbacks.push(callback);
2612    } else {
2613      callback();
2614    }
2615  };
2616  var isRTL = () => document.documentElement.dir === "rtl";
2617  var defineJQueryPlugin = (plugin) => {
2618    onDOMContentLoaded(() => {
2619      const $ = getjQuery();
2620      if ($) {
2621        const name = plugin.NAME;
2622        const JQUERY_NO_CONFLICT = $.fn[name];
2623        $.fn[name] = plugin.jQueryInterface;
2624        $.fn[name].Constructor = plugin;
2625        $.fn[name].noConflict = () => {
2626          $.fn[name] = JQUERY_NO_CONFLICT;
2627          return plugin.jQueryInterface;
2628        };
2629      }
2630    });
2631  };
2632  var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
2633    return typeof possibleCallback === "function" ? possibleCallback(...args) : defaultValue;
2634  };
2635  var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
2636    if (!waitForTransition) {
2637      execute(callback);
2638      return;
2639    }
2640    const durationPadding = 5;
2641    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
vendor: 13,102 bytes, lines 2642-3022
2642    let called = false;
2643    const handler = ({ target }) => {
2644      if (target !== transitionElement) {
2645        return;
2646      }
2647      called = true;
2648      transitionElement.removeEventListener(TRANSITION_END, handler);
2649      execute(callback);
2650    };
2651    transitionElement.addEventListener(TRANSITION_END, handler);
2652    setTimeout(() => {
2653      if (!called) {
2654        triggerTransitionEnd(transitionElement);
2655      }
2656    }, emulatedDuration);
2657  };
2658  var getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
2659    const listLength = list.length;
2660    let index = list.indexOf(activeElement);
2661    if (index === -1) {
2662      return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
2663    }
2664    index += shouldGetNext ? 1 : -1;
2665    if (isCycleAllowed) {
2666      index = (index + listLength) % listLength;
2667    }
2668    return list[Math.max(0, Math.min(index, listLength - 1))];
2669  };
2670
2671  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/event-handler.js
2672  var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
2673  var stripNameRegex = /\..*/;
2674  var stripUidRegex = /::\d+$/;
2675  var eventRegistry = {};
2676  var uidEvent = 1;
2677  var customEvents = {
2678    mouseenter: "mouseover",
2679    mouseleave: "mouseout"
2680  };
2681  var nativeEvents = /* @__PURE__ */ new Set([
2682    "click",
2683    "dblclick",
2684    "mouseup",
2685    "mousedown",
2686    "contextmenu",
2687    "mousewheel",
2688    "DOMMouseScroll",
2689    "mouseover",
2690    "mouseout",
2691    "mousemove",
2692    "selectstart",
2693    "selectend",
2694    "keydown",
2695    "keypress",
2696    "keyup",
2697    "orientationchange",
2698    "touchstart",
2699    "touchmove",
2700    "touchend",
2701    "touchcancel",
2702    "pointerdown",
2703    "pointermove",
2704    "pointerup",
2705    "pointerleave",
2706    "pointercancel",
2707    "gesturestart",
2708    "gesturechange",
2709    "gestureend",
2710    "focus",
2711    "blur",
2712    "change",
2713    "reset",
2714    "select",
2715    "submit",
2716    "focusin",
2717    "focusout",
2718    "load",
2719    "unload",
2720    "beforeunload",
2721    "resize",
2722    "move",
2723    "DOMContentLoaded",
2724    "readystatechange",
2725    "error",
2726    "abort",
2727    "scroll"
2728  ]);
2729  function makeEventUid(element, uid) {
2730    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
2731  }
2732  function getElementEvents(element) {
2733    const uid = makeEventUid(element);
2734    element.uidEvent = uid;
2735    eventRegistry[uid] = eventRegistry[uid] || {};
2736    return eventRegistry[uid];
2737  }
2738  function bootstrapHandler(element, fn) {
2739    return function handler(event) {
2740      hydrateObj(event, { delegateTarget: element });
2741      if (handler.oneOff) {
2742        EventHandler.off(element, event.type, fn);
2743      }
2744      return fn.apply(element, [event]);
2745    };
2746  }
2747  function bootstrapDelegationHandler(element, selector, fn) {
2748    return function handler(event) {
2749      const domElements = element.querySelectorAll(selector);
2750      for (let { target } = event; target && target !== this; target = target.parentNode) {
2751        for (const domElement of domElements) {
2752          if (domElement !== target) {
2753            continue;
2754          }
2755          hydrateObj(event, { delegateTarget: target });
2756          if (handler.oneOff) {
2757            EventHandler.off(element, event.type, selector, fn);
2758          }
2759          return fn.apply(target, [event]);
2760        }
2761      }
2762    };
2763  }
2764  function findHandler(events, callable, delegationSelector = null) {
2765    return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector);
2766  }
2767  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
2768    const isDelegated = typeof handler === "string";
2769    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
2770    let typeEvent = getTypeEvent(originalTypeEvent);
2771    if (!nativeEvents.has(typeEvent)) {
2772      typeEvent = originalTypeEvent;
2773    }
2774    return [isDelegated, callable, typeEvent];
2775  }
2776  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
2777    if (typeof originalTypeEvent !== "string" || !element) {
2778      return;
2779    }
2780    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
2781    if (originalTypeEvent in customEvents) {
2782      const wrapFunction = (fn2) => {
2783        return function(event) {
2784          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
2785            return fn2.call(this, event);
2786          }
2787        };
2788      };
2789      callable = wrapFunction(callable);
2790    }
2791    const events = getElementEvents(element);
2792    const handlers = events[typeEvent] || (events[typeEvent] = {});
2793    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
2794    if (previousFunction) {
2795      previousFunction.oneOff = previousFunction.oneOff && oneOff;
2796      return;
2797    }
2798    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ""));
2799    const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
2800    fn.delegationSelector = isDelegated ? handler : null;
2801    fn.callable = callable;
2802    fn.oneOff = oneOff;
2803    fn.uidEvent = uid;
2804    handlers[uid] = fn;
2805    element.addEventListener(typeEvent, fn, isDelegated);
2806  }
2807  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
2808    const fn = findHandler(events[typeEvent], handler, delegationSelector);
2809    if (!fn) {
2810      return;
2811    }
2812    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
2813    delete events[typeEvent][fn.uidEvent];
2814  }
2815  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
2816    const storeElementEvent = events[typeEvent] || {};
2817    for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
2818      if (handlerKey.includes(namespace)) {
2819        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
2820      }
2821    }
2822  }
2823  function getTypeEvent(event) {
2824    event = event.replace(stripNameRegex, "");
2825    return customEvents[event] || event;
2826  }
2827  var EventHandler = {
2828    on(element, event, handler, delegationFunction) {
2829      addHandler(element, event, handler, delegationFunction, false);
2830    },
2831    one(element, event, handler, delegationFunction) {
2832      addHandler(element, event, handler, delegationFunction, true);
2833    },
2834    off(element, originalTypeEvent, handler, delegationFunction) {
2835      if (typeof originalTypeEvent !== "string" || !element) {
2836        return;
2837      }
2838      const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
2839      const inNamespace = typeEvent !== originalTypeEvent;
2840      const events = getElementEvents(element);
2841      const storeElementEvent = events[typeEvent] || {};
2842      const isNamespace = originalTypeEvent.startsWith(".");
2843      if (typeof callable !== "undefined") {
2844        if (!Object.keys(storeElementEvent).length) {
2845          return;
2846        }
2847        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
2848        return;
2849      }
2850      if (isNamespace) {
2851        for (const elementEvent of Object.keys(events)) {
2852          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
2853        }
2854      }
2855      for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
2856        const handlerKey = keyHandlers.replace(stripUidRegex, "");
2857        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
2858          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
2859        }
2860      }
2861    },
2862    trigger(element, event, args) {
2863      if (typeof event !== "string" || !element) {
2864        return null;
2865      }
2866      const $ = getjQuery();
2867      const typeEvent = getTypeEvent(event);
2868      const inNamespace = event !== typeEvent;
2869      let jQueryEvent = null;
2870      let bubbles = true;
2871      let nativeDispatch = true;
2872      let defaultPrevented = false;
2873      if (inNamespace && $) {
2874        jQueryEvent = $.Event(event, args);
2875        $(element).trigger(jQueryEvent);
2876        bubbles = !jQueryEvent.isPropagationStopped();
2877        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
2878        defaultPrevented = jQueryEvent.isDefaultPrevented();
2879      }
2880      const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);
2881      if (defaultPrevented) {
2882        evt.preventDefault();
2883      }
2884      if (nativeDispatch) {
2885        element.dispatchEvent(evt);
2886      }
2887      if (evt.defaultPrevented && jQueryEvent) {
2888        jQueryEvent.preventDefault();
2889      }
2890      return evt;
2891    }
2892  };
2893  function hydrateObj(obj, meta = {}) {
2894    for (const [key, value] of Object.entries(meta)) {
2895      try {
2896        obj[key] = value;
2897      } catch (e) {
2898        Object.defineProperty(obj, key, {
2899          configurable: true,
2900          get() {
2901            return value;
2902          }
2903        });
2904      }
2905    }
2906    return obj;
2907  }
2908  var event_handler_default = EventHandler;
2909
2910  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/manipulator.js
2911  function normalizeData(value) {
2912    if (value === "true") {
2913      return true;
2914    }
2915    if (value === "false") {
2916      return false;
2917    }
2918    if (value === Number(value).toString()) {
2919      return Number(value);
2920    }
2921    if (value === "" || value === "null") {
2922      return null;
2923    }
2924    if (typeof value !== "string") {
2925      return value;
2926    }
2927    try {
2928      return JSON.parse(decodeURIComponent(value));
2929    } catch (e) {
2930      return value;
2931    }
2932  }
2933  function normalizeDataKey(key) {
2934    return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
2935  }
2936  var Manipulator = {
2937    setDataAttribute(element, key, value) {
2938      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
2939    },
2940    removeDataAttribute(element, key) {
2941      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
2942    },
2943    getDataAttributes(element) {
2944      if (!element) {
2945        return {};
2946      }
2947      const attributes = {};
2948      const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig"));
2949      for (const key of bsKeys) {
2950        let pureKey = key.replace(/^bs/, "");
2951        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
2952        attributes[pureKey] = normalizeData(element.dataset[key]);
2953      }
2954      return attributes;
2955    },
2956    getDataAttribute(element, key) {
2957      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
2958    }
2959  };
2960  var manipulator_default = Manipulator;
2961
2962  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/config.js
2963  var Config = class {
2964    // Getters
2965    static get Default() {
2966      return {};
2967    }
2968    static get DefaultType() {
2969      return {};
2970    }
2971    static get NAME() {
2972      throw new Error('You have to implement the static method "NAME", for each component!');
2973    }
2974    _getConfig(config) {
2975      config = this._mergeConfigObj(config);
2976      config = this._configAfterMerge(config);
2977      this._typeCheckConfig(config);
2978      return config;
2979    }
2980    _configAfterMerge(config) {
2981      return config;
2982    }
2983    _mergeConfigObj(config, element) {
2984      const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {};
2985      return {
2986        ...this.constructor.Default,
2987        ...typeof jsonConfig === "object" ? jsonConfig : {},
2988        ...isElement(element) ? manipulator_default.getDataAttributes(element) : {},
2989        ...typeof config === "object" ? config : {}
2990      };
2991    }
2992    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
2993      for (const [property, expectedTypes] of Object.entries(configTypes)) {
2994        const value = config[property];
2995        const valueType = isElement(value) ? "element" : toType(value);
2996        if (!new RegExp(expectedTypes).test(valueType)) {
2997          throw new TypeError(
2998            `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`
2999          );
3000        }
3001      }
3002    }
3003  };
3004  var config_default = Config;
3005
3006  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/base-component.js
3007  var VERSION = "5.3.2";
3008  var BaseComponent = class extends config_default {
3009    constructor(element, config) {
3010      super();
3011      element = getElement(element);
3012      if (!element) {
3013        return;
3014      }
3015      this._element = element;
3016      this._config = this._getConfig(config);
3017      data_default.set(this._element, this.constructor.DATA_KEY, this);
3018    }
3019    // Public
3020    dispose() {
3021      data_default.remove(this._element, this.constructor.DATA_KEY);
3022      event_handler_default.off(this._element, this.constructor.EVENT_KEY);
3023      for (const propertyName of Object.getOwnPropertyNames(this)) {
3024        this[propertyName] = null;
3025      }
3026    }
3027    _queueCallback(callback, element, isAnimated = true) {
3028      executeAfterTransition(callback, element, isAnimated);
3029    }
3030    _getConfig(config) {
3031      config = this._mergeConfigObj(config, this._element);
3032      config = this._configAfterMerge(config);
3033      this._typeCheckConfig(config);
3034      return config;
3035    }
3036    // Static
3037    static getInstance(element) {
3038      return data_default.get(getElement(element), this.DATA_KEY);
3039    }
3040    static getOrCreateInstance(element, config = {}) {
3041      return this.getInstance(element) || new this(element, typeof config === "object" ? config : null);
3042    }
3043    static get VERSION() {
3044      return VERSION;
3045    }
3046    static get DATA_KEY() {
3047      return `bs.${this.NAME}`;
3048    }
3049    static get EVENT_KEY() {
3050      return `.${this.DATA_KEY}`;
3051    }
3052    static eventName(name) {
3053      return `${name}${this.EVENT_KEY}`;
3054    }
3055  };
3056  var base_component_default = BaseComponent;
3057
3058  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/selector-engine.js
3059  var getSelector = (element) => {
3060    let selector = element.getAttribute("data-bs-target");
3061    if (!selector || selector === "#") {
3062      let hrefAttribute = element.getAttribute("href");
3063      if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) {
3064        return null;
3065      }
3066      if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) {
3067        hrefAttribute = `#${hrefAttribute.split("#")[1]}`;
3068      }
3069      selector = hrefAttribute && hrefAttribute !== "#" ? parseSelector(hrefAttribute.trim()) : null;
3070    }
3071    return selector;
3072  };
3073  var SelectorEngine = {
3074    find(selector, element = document.documentElement) {
3075      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
3076    },
3077    findOne(selector, element = document.documentElement) {
3078      return Element.prototype.querySelector.call(element, selector);
3079    },
3080    children(element, selector) {
3081      return [].concat(...element.children).filter((child) => child.matches(selector));
3082    },
3083    parents(element, selector) {
3084      const parents = [];
3085      let ancestor = element.parentNode.closest(selector);
3086      while (ancestor) {
3087        parents.push(ancestor);
3088        ancestor = ancestor.parentNode.closest(selector);
3089      }
3090      return parents;
3091    },
3092    prev(element, selector) {
3093      let previous = element.previousElementSibling;
3094      while (previous) {
3095        if (previous.matches(selector)) {
3096          return [previous];
3097        }
3098        previous = previous.previousElementSibling;
3099      }
3100      return [];
3101    },
3102    // TODO: this is now unused; remove later along with prev()
3103    next(element, selector) {
3104      let next = element.nextElementSibling;
3105      while (next) {
3106        if (next.matches(selector)) {
3107          return [next];
3108        }
3109        next = next.nextElementSibling;
3110      }
3111      return [];
3112    },
3113    focusableChildren(element) {
3114      const focusables = [
3115        "a",
3116        "button",
3117        "input",
3118        "textarea",
3119        "select",
3120        "details",
3121        "[tabindex]",
3122        '[contenteditable="true"]'
3123      ].map((selector) => `${selector}:not([tabindex^="-"])`).join(",");
3124      return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));
3125    },
3126    getSelectorFromElement(element) {
3127      const selector = getSelector(element);
3128      if (selector) {
3129        return SelectorEngine.findOne(selector) ? selector : null;
3130      }
3131      return null;
3132    },
3133    getElementFromSelector(element) {
3134      const selector = getSelector(element);
3135      return selector ? SelectorEngine.findOne(selector) : null;
3136    },
3137    getMultipleElementsFromSelector(element) {
3138      const selector = getSelector(element);
3139      return selector ? SelectorEngine.find(selector) : [];
3140    }
3141  };
3142  var selector_engine_default = SelectorEngine;
3143
3144  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/collapse.js
3145  var NAME = "collapse";
3146  var DATA_KEY = "bs.collapse";
3147  var EVENT_KEY = `.${DATA_KEY}`;
3148  var DATA_API_KEY = ".data-api";
3149  var EVENT_SHOW = `show${EVENT_KEY}`;
3150  var EVENT_SHOWN = `shown${EVENT_KEY}`;
3151  var EVENT_HIDE = `hide${EVENT_KEY}`;
3152  var EVENT_HIDDEN = `hidden${EVENT_KEY}`;
3153  var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
3154  var CLASS_NAME_SHOW = "show";
3155  var CLASS_NAME_COLLAPSE = "collapse";
3156  var CLASS_NAME_COLLAPSING = "collapsing";
3157  var CLASS_NAME_COLLAPSED = "collapsed";
3158  var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
3159  var CLASS_NAME_HORIZONTAL = "collapse-horizontal";
3160  var WIDTH = "width";
3161  var HEIGHT = "height";
3162  var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing";
3163  var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
3164  var Default = {
3165    parent: null,
3166    toggle: true
3167  };
3168  var DefaultType = {
3169    parent: "(null|element)",
3170    toggle: "boolean"
3171  };
3172  var Collapse = class _Collapse extends base_component_default {
3173    constructor(element, config) {
3174      super(element, config);
3175      this._isTransitioning = false;
vendor: 5,359 bytes, lines 3176-3317
3176      this._triggerArray = [];
3177      const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE);
3178      for (const elem of toggleList) {
3179        const selector = selector_engine_default.getSelectorFromElement(elem);
3180        const filterElement = selector_engine_default.find(selector).filter((foundElement) => foundElement === this._element);
3181        if (selector !== null && filterElement.length) {
3182          this._triggerArray.push(elem);
3183        }
3184      }
3185      this._initializeChildren();
3186      if (!this._config.parent) {
3187        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
3188      }
3189      if (this._config.toggle) {
3190        this.toggle();
3191      }
3192    }
3193    // Getters
3194    static get Default() {
3195      return Default;
3196    }
3197    static get DefaultType() {
3198      return DefaultType;
3199    }
3200    static get NAME() {
3201      return NAME;
3202    }
3203    // Public
3204    toggle() {
3205      if (this._isShown()) {
3206        this.hide();
3207      } else {
3208        this.show();
3209      }
3210    }
3211    show() {
3212      if (this._isTransitioning || this._isShown()) {
3213        return;
3214      }
3215      let activeChildren = [];
3216      if (this._config.parent) {
3217        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false }));
3218      }
3219      if (activeChildren.length && activeChildren[0]._isTransitioning) {
3220        return;
3221      }
3222      const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW);
3223      if (startEvent.defaultPrevented) {
3224        return;
3225      }
3226      for (const activeInstance of activeChildren) {
3227        activeInstance.hide();
3228      }
3229      const dimension = this._getDimension();
3230      this._element.classList.remove(CLASS_NAME_COLLAPSE);
3231      this._element.classList.add(CLASS_NAME_COLLAPSING);
3232      this._element.style[dimension] = 0;
3233      this._addAriaAndCollapsedClass(this._triggerArray, true);
3234      this._isTransitioning = true;
3235      const complete = () => {
3236        this._isTransitioning = false;
3237        this._element.classList.remove(CLASS_NAME_COLLAPSING);
3238        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
3239        this._element.style[dimension] = "";
3240        event_handler_default.trigger(this._element, EVENT_SHOWN);
3241      };
3242      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
3243      const scrollSize = `scroll${capitalizedDimension}`;
3244      this._queueCallback(complete, this._element, true);
3245      this._element.style[dimension] = `${this._element[scrollSize]}px`;
3246    }
3247    hide() {
3248      if (this._isTransitioning || !this._isShown()) {
3249        return;
3250      }
3251      const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE);
3252      if (startEvent.defaultPrevented) {
3253        return;
3254      }
3255      const dimension = this._getDimension();
3256      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
3257      reflow(this._element);
3258      this._element.classList.add(CLASS_NAME_COLLAPSING);
3259      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
3260      for (const trigger of this._triggerArray) {
3261        const element = selector_engine_default.getElementFromSelector(trigger);
3262        if (element && !this._isShown(element)) {
3263          this._addAriaAndCollapsedClass([trigger], false);
3264        }
3265      }
3266      this._isTransitioning = true;
3267      const complete = () => {
3268        this._isTransitioning = false;
3269        this._element.classList.remove(CLASS_NAME_COLLAPSING);
3270        this._element.classList.add(CLASS_NAME_COLLAPSE);
3271        event_handler_default.trigger(this._element, EVENT_HIDDEN);
3272      };
3273      this._element.style[dimension] = "";
3274      this._queueCallback(complete, this._element, true);
3275    }
3276    _isShown(element = this._element) {
3277      return element.classList.contains(CLASS_NAME_SHOW);
3278    }
3279    // Private
3280    _configAfterMerge(config) {
3281      config.toggle = Boolean(config.toggle);
3282      config.parent = getElement(config.parent);
3283      return config;
3284    }
3285    _getDimension() {
3286      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
3287    }
3288    _initializeChildren() {
3289      if (!this._config.parent) {
3290        return;
3291      }
3292      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);
3293      for (const element of children) {
3294        const selected = selector_engine_default.getElementFromSelector(element);
3295        if (selected) {
3296          this._addAriaAndCollapsedClass([element], this._isShown(selected));
3297        }
3298      }
3299    }
3300    _getFirstLevelChildren(selector) {
3301      const children = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
3302      return selector_engine_default.find(selector, this._config.parent).filter((element) => !children.includes(element));
3303    }
3304    _addAriaAndCollapsedClass(triggerArray, isOpen) {
3305      if (!triggerArray.length) {
3306        return;
3307      }
3308      for (const element of triggerArray) {
3309        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
3310        element.setAttribute("aria-expanded", isOpen);
3311      }
3312    }
3313    // Static
3314    static jQueryInterface(config) {
3315      const _config = {};
3316      if (typeof config === "string" && /show|hide/.test(config)) {
3317        _config.toggle = false;
3318      }
3319      return this.each(function() {
3320        const data = _Collapse.getOrCreateInstance(this, _config);
3321        if (typeof config === "string") {
3322          if (typeof data[config] === "undefined") {
3323            throw new TypeError(`No method named "${config}"`);
3324          }
3325          data[config]();
3326        }
3327      });
3328    }
3329  };
3330  event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
3331    if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") {
3332      event.preventDefault();
3333    }
3334    for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) {
3335      Collapse.getOrCreateInstance(element, { toggle: false }).toggle();
3336    }
3337  });
3338  defineJQueryPlugin(Collapse);
3339
3340  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dropdown.js
3341  var Popper = __toESM(require_popper());
3342  var NAME2 = "dropdown";
3343  var DATA_KEY2 = "bs.dropdown";
3344  var EVENT_KEY2 = `.${DATA_KEY2}`;
3345  var DATA_API_KEY2 = ".data-api";
3346  var ESCAPE_KEY = "Escape";
3347  var TAB_KEY = "Tab";
3348  var ARROW_UP_KEY = "ArrowUp";
3349  var ARROW_DOWN_KEY = "ArrowDown";
3350  var RIGHT_MOUSE_BUTTON = 2;
3351  var EVENT_HIDE2 = `hide${EVENT_KEY2}`;
3352  var EVENT_HIDDEN2 = `hidden${EVENT_KEY2}`;
3353  var EVENT_SHOW2 = `show${EVENT_KEY2}`;
3354  var EVENT_SHOWN2 = `shown${EVENT_KEY2}`;
3355  var EVENT_CLICK_DATA_API2 = `click${EVENT_KEY2}${DATA_API_KEY2}`;
3356  var EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY2}${DATA_API_KEY2}`;
3357  var EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY2}${DATA_API_KEY2}`;
3358  var CLASS_NAME_SHOW2 = "show";
3359  var CLASS_NAME_DROPUP = "dropup";
3360  var CLASS_NAME_DROPEND = "dropend";
3361  var CLASS_NAME_DROPSTART = "dropstart";
3362  var CLASS_NAME_DROPUP_CENTER = "dropup-center";
3363  var CLASS_NAME_DROPDOWN_CENTER = "dropdown-center";
3364  var SELECTOR_DATA_TOGGLE2 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
3365  var SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE2}.${CLASS_NAME_SHOW2}`;
3366  var SELECTOR_MENU = ".dropdown-menu";
3367  var SELECTOR_NAVBAR = ".navbar";
3368  var SELECTOR_NAVBAR_NAV = ".navbar-nav";
3369  var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
3370  var PLACEMENT_TOP = isRTL() ? "top-end" : "top-start";
3371  var PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end";
3372  var PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start";
3373  var PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end";
3374  var PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start";
3375  var PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start";
3376  var PLACEMENT_TOPCENTER = "top";
3377  var PLACEMENT_BOTTOMCENTER = "bottom";
3378  var Default2 = {
3379    autoClose: true,
3380    boundary: "clippingParents",
3381    display: "dynamic",
3382    offset: [0, 2],
3383    popperConfig: null,
3384    reference: "toggle"
3385  };
3386  var DefaultType2 = {
3387    autoClose: "(boolean|string)",
3388    boundary: "(string|element)",
3389    display: "string",
3390    offset: "(array|string|function)",
3391    popperConfig: "(null|object|function)",
3392    reference: "(string|element|object)"
3393  };
3394  var Dropdown = class _Dropdown extends base_component_default {
3395    constructor(element, config) {
3396      super(element, config);
3397      this._popper = null;
3398      this._parent = this._element.parentNode;
3399      this._menu = selector_engine_default.next(this._element, SELECTOR_MENU)[0] || selector_engine_default.prev(this._element, SELECTOR_MENU)[0] || selector_engine_default.findOne(SELECTOR_MENU, this._parent);
3400      this._inNavbar = this._detectNavbar();
3401    }
3402    // Getters
3403    static get Default() {
3404      return Default2;
3405    }
3406    static get DefaultType() {
3407      return DefaultType2;
3408    }
3409    static get NAME() {
3410      return NAME2;
3411    }
3412    // Public
3413    toggle() {
3414      return this._isShown() ? this.hide() : this.show();
3415    }
3416    show() {
3417      if (isDisabled(this._element) || this._isShown()) {
3418        return;
3419      }
3420      const relatedTarget = {
3421        relatedTarget: this._element
3422      };
3423      const showEvent = event_handler_default.trigger(this._element, EVENT_SHOW2, relatedTarget);
3424      if (showEvent.defaultPrevented) {
3425        return;
3426      }
3427      this._createPopper();
3428      if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
3429        for (const element of [].concat(...document.body.children)) {
vendor: 4,227 bytes, lines 3430-3544
3430          event_handler_default.on(element, "mouseover", noop);
3431        }
3432      }
3433      this._element.focus();
3434      this._element.setAttribute("aria-expanded", true);
3435      this._menu.classList.add(CLASS_NAME_SHOW2);
3436      this._element.classList.add(CLASS_NAME_SHOW2);
3437      event_handler_default.trigger(this._element, EVENT_SHOWN2, relatedTarget);
3438    }
3439    hide() {
3440      if (isDisabled(this._element) || !this._isShown()) {
3441        return;
3442      }
3443      const relatedTarget = {
3444        relatedTarget: this._element
3445      };
3446      this._completeHide(relatedTarget);
3447    }
3448    dispose() {
3449      if (this._popper) {
3450        this._popper.destroy();
3451      }
3452      super.dispose();
3453    }
3454    update() {
3455      this._inNavbar = this._detectNavbar();
3456      if (this._popper) {
3457        this._popper.update();
3458      }
3459    }
3460    // Private
3461    _completeHide(relatedTarget) {
3462      const hideEvent = event_handler_default.trigger(this._element, EVENT_HIDE2, relatedTarget);
3463      if (hideEvent.defaultPrevented) {
3464        return;
3465      }
3466      if ("ontouchstart" in document.documentElement) {
3467        for (const element of [].concat(...document.body.children)) {
3468          event_handler_default.off(element, "mouseover", noop);
3469        }
3470      }
3471      if (this._popper) {
3472        this._popper.destroy();
3473      }
3474      this._menu.classList.remove(CLASS_NAME_SHOW2);
3475      this._element.classList.remove(CLASS_NAME_SHOW2);
3476      this._element.setAttribute("aria-expanded", "false");
3477      manipulator_default.removeDataAttribute(this._menu, "popper");
3478      event_handler_default.trigger(this._element, EVENT_HIDDEN2, relatedTarget);
3479    }
3480    _getConfig(config) {
3481      config = super._getConfig(config);
3482      if (typeof config.reference === "object" && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== "function") {
3483        throw new TypeError(`${NAME2.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
3484      }
3485      return config;
3486    }
3487    _createPopper() {
3488      if (typeof Popper === "undefined") {
3489        throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
3490      }
3491      let referenceElement = this._element;
3492      if (this._config.reference === "parent") {
3493        referenceElement = this._parent;
3494      } else if (isElement(this._config.reference)) {
3495        referenceElement = getElement(this._config.reference);
3496      } else if (typeof this._config.reference === "object") {
3497        referenceElement = this._config.reference;
3498      }
3499      const popperConfig = this._getPopperConfig();
3500      this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);
3501    }
3502    _isShown() {
3503      return this._menu.classList.contains(CLASS_NAME_SHOW2);
3504    }
3505    _getPlacement() {
3506      const parentDropdown = this._parent;
3507      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
3508        return PLACEMENT_RIGHT;
3509      }
3510      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
3511        return PLACEMENT_LEFT;
3512      }
3513      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
3514        return PLACEMENT_TOPCENTER;
3515      }
3516      if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
3517        return PLACEMENT_BOTTOMCENTER;
3518      }
3519      const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end";
3520      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
3521        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
3522      }
3523      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
3524    }
3525    _detectNavbar() {
3526      return this._element.closest(SELECTOR_NAVBAR) !== null;
3527    }
3528    _getOffset() {
3529      const { offset } = this._config;
3530      if (typeof offset === "string") {
3531        return offset.split(",").map((value) => Number.parseInt(value, 10));
3532      }
3533      if (typeof offset === "function") {
3534        return (popperData) => offset(popperData, this._element);
3535      }
3536      return offset;
3537    }
3538    _getPopperConfig() {
3539      const defaultBsPopperConfig = {
3540        placement: this._getPlacement(),
3541        modifiers: [
3542          {
3543            name: "preventOverflow",
3544            options: {
vendor: 2,541 bytes, lines 3545-3613
3545              boundary: this._config.boundary
3546            }
3547          },
3548          {
3549            name: "offset",
3550            options: {
3551              offset: this._getOffset()
3552            }
3553          }
3554        ]
3555      };
3556      if (this._inNavbar || this._config.display === "static") {
3557        manipulator_default.setDataAttribute(this._menu, "popper", "static");
3558        defaultBsPopperConfig.modifiers = [{
3559          name: "applyStyles",
3560          enabled: false
3561        }];
3562      }
3563      return {
3564        ...defaultBsPopperConfig,
3565        ...execute(this._config.popperConfig, [defaultBsPopperConfig])
3566      };
3567    }
3568    _selectMenuItem({ key, target }) {
3569      const items = selector_engine_default.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));
3570      if (!items.length) {
3571        return;
3572      }
3573      getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
3574    }
3575    // Static
3576    static jQueryInterface(config) {
3577      return this.each(function() {
3578        const data = _Dropdown.getOrCreateInstance(this, config);
3579        if (typeof config !== "string") {
3580          return;
3581        }
3582        if (typeof data[config] === "undefined") {
3583          throw new TypeError(`No method named "${config}"`);
3584        }
3585        data[config]();
3586      });
3587    }
3588    static clearMenus(event) {
3589      if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY) {
3590        return;
3591      }
3592      const openToggles = selector_engine_default.find(SELECTOR_DATA_TOGGLE_SHOWN);
3593      for (const toggle of openToggles) {
3594        const context = _Dropdown.getInstance(toggle);
3595        if (!context || context._config.autoClose === false) {
3596          continue;
3597        }
3598        const composedPath = event.composedPath();
3599        const isMenuTarget = composedPath.includes(context._menu);
3600        if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) {
3601          continue;
3602        }
3603        if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {
3604          continue;
3605        }
3606        const relatedTarget = { relatedTarget: context._element };
3607        if (event.type === "click") {
3608          relatedTarget.clickEvent = event;
3609        }
3610        context._completeHide(relatedTarget);
3611      }
3612    }
3613    static dataApiKeydownHandler(event) {
vendor: 6,173 bytes, lines 3614-3794
3614      const isInput = /input|textarea/i.test(event.target.tagName);
3615      const isEscapeEvent = event.key === ESCAPE_KEY;
3616      const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key);
3617      if (!isUpOrDownEvent && !isEscapeEvent) {
3618        return;
3619      }
3620      if (isInput && !isEscapeEvent) {
3621        return;
3622      }
3623      event.preventDefault();
3624      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE2) ? this : selector_engine_default.prev(this, SELECTOR_DATA_TOGGLE2)[0] || selector_engine_default.next(this, SELECTOR_DATA_TOGGLE2)[0] || selector_engine_default.findOne(SELECTOR_DATA_TOGGLE2, event.delegateTarget.parentNode);
3625      const instance = _Dropdown.getOrCreateInstance(getToggleButton);
3626      if (isUpOrDownEvent) {
3627        event.stopPropagation();
3628        instance.show();
3629        instance._selectMenuItem(event);
3630        return;
3631      }
3632      if (instance._isShown()) {
3633        event.stopPropagation();
3634        instance.hide();
3635        getToggleButton.focus();
3636      }
3637    }
3638  };
3639  event_handler_default.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE2, Dropdown.dataApiKeydownHandler);
3640  event_handler_default.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
3641  event_handler_default.on(document, EVENT_CLICK_DATA_API2, Dropdown.clearMenus);
3642  event_handler_default.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
3643  event_handler_default.on(document, EVENT_CLICK_DATA_API2, SELECTOR_DATA_TOGGLE2, function(event) {
3644    event.preventDefault();
3645    Dropdown.getOrCreateInstance(this).toggle();
3646  });
3647  defineJQueryPlugin(Dropdown);
3648
3649  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/backdrop.js
3650  var NAME3 = "backdrop";
3651  var CLASS_NAME_FADE = "fade";
3652  var CLASS_NAME_SHOW3 = "show";
3653  var EVENT_MOUSEDOWN = `mousedown.bs.${NAME3}`;
3654  var Default3 = {
3655    className: "modal-backdrop",
3656    clickCallback: null,
3657    isAnimated: false,
3658    isVisible: true,
3659    // if false, we use the backdrop helper without adding any element to the dom
3660    rootElement: "body"
3661    // give the choice to place backdrop under different elements
3662  };
3663  var DefaultType3 = {
3664    className: "string",
3665    clickCallback: "(function|null)",
3666    isAnimated: "boolean",
3667    isVisible: "boolean",
3668    rootElement: "(element|string)"
3669  };
3670  var Backdrop = class extends config_default {
3671    constructor(config) {
3672      super();
3673      this._config = this._getConfig(config);
3674      this._isAppended = false;
3675      this._element = null;
3676    }
3677    // Getters
3678    static get Default() {
3679      return Default3;
3680    }
3681    static get DefaultType() {
3682      return DefaultType3;
3683    }
3684    static get NAME() {
3685      return NAME3;
3686    }
3687    // Public
3688    show(callback) {
3689      if (!this._config.isVisible) {
3690        execute(callback);
3691        return;
3692      }
3693      this._append();
3694      const element = this._getElement();
3695      if (this._config.isAnimated) {
3696        reflow(element);
3697      }
3698      element.classList.add(CLASS_NAME_SHOW3);
3699      this._emulateAnimation(() => {
3700        execute(callback);
3701      });
3702    }
3703    hide(callback) {
3704      if (!this._config.isVisible) {
3705        execute(callback);
3706        return;
3707      }
3708      this._getElement().classList.remove(CLASS_NAME_SHOW3);
3709      this._emulateAnimation(() => {
3710        this.dispose();
3711        execute(callback);
3712      });
3713    }
3714    dispose() {
3715      if (!this._isAppended) {
3716        return;
3717      }
3718      event_handler_default.off(this._element, EVENT_MOUSEDOWN);
3719      this._element.remove();
3720      this._isAppended = false;
3721    }
3722    // Private
3723    _getElement() {
3724      if (!this._element) {
3725        const backdrop = document.createElement("div");
3726        backdrop.className = this._config.className;
3727        if (this._config.isAnimated) {
3728          backdrop.classList.add(CLASS_NAME_FADE);
3729        }
3730        this._element = backdrop;
3731      }
3732      return this._element;
3733    }
3734    _configAfterMerge(config) {
3735      config.rootElement = getElement(config.rootElement);
3736      return config;
3737    }
3738    _append() {
3739      if (this._isAppended) {
3740        return;
3741      }
3742      const element = this._getElement();
3743      this._config.rootElement.append(element);
3744      event_handler_default.on(element, EVENT_MOUSEDOWN, () => {
3745        execute(this._config.clickCallback);
3746      });
3747      this._isAppended = true;
3748    }
3749    _emulateAnimation(callback) {
3750      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
3751    }
3752  };
3753  var backdrop_default = Backdrop;
3754
3755  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/component-functions.js
3756  var enableDismissTrigger = (component, method = "hide") => {
3757    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
3758    const name = component.NAME;
3759    event_handler_default.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) {
3760      if (["A", "AREA"].includes(this.tagName)) {
3761        event.preventDefault();
3762      }
3763      if (isDisabled(this)) {
3764        return;
3765      }
3766      const target = selector_engine_default.getElementFromSelector(this) || this.closest(`.${name}`);
3767      const instance = component.getOrCreateInstance(target);
3768      instance[method]();
3769    });
3770  };
3771
3772  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/focustrap.js
3773  var NAME4 = "focustrap";
3774  var DATA_KEY3 = "bs.focustrap";
3775  var EVENT_KEY3 = `.${DATA_KEY3}`;
3776  var EVENT_FOCUSIN = `focusin${EVENT_KEY3}`;
3777  var EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY3}`;
3778  var TAB_KEY2 = "Tab";
3779  var TAB_NAV_FORWARD = "forward";
3780  var TAB_NAV_BACKWARD = "backward";
3781  var Default4 = {
3782    autofocus: true,
3783    trapElement: null
3784    // The element to trap focus inside of
3785  };
3786  var DefaultType4 = {
3787    autofocus: "boolean",
3788    trapElement: "element"
3789  };
3790  var FocusTrap = class extends config_default {
3791    constructor(config) {
3792      super();
3793      this._config = this._getConfig(config);
3794      this._isActive = false;
3795      this._lastTabNavDirection = null;
3796    }
3797    // Getters
3798    static get Default() {
3799      return Default4;
3800    }
3801    static get DefaultType() {
3802      return DefaultType4;
3803    }
3804    static get NAME() {
3805      return NAME4;
3806    }
3807    // Public
3808    activate() {
3809      if (this._isActive) {
3810        return;
3811      }
3812      if (this._config.autofocus) {
3813        this._config.trapElement.focus();
3814      }
3815      event_handler_default.off(document, EVENT_KEY3);
3816      event_handler_default.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event));
3817      event_handler_default.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));
3818      this._isActive = true;
3819    }
3820    deactivate() {
3821      if (!this._isActive) {
3822        return;
3823      }
3824      this._isActive = false;
3825      event_handler_default.off(document, EVENT_KEY3);
3826    }
3827    // Private
3828    _handleFocusin(event) {
3829      const { trapElement } = this._config;
3830      if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
3831        return;
3832      }
3833      const elements = selector_engine_default.focusableChildren(trapElement);
3834      if (elements.length === 0) {
3835        trapElement.focus();
3836      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
3837        elements[elements.length - 1].focus();
3838      } else {
3839        elements[0].focus();
3840      }
3841    }
3842    _handleKeydown(event) {
3843      if (event.key !== TAB_KEY2) {
3844        return;
3845      }
3846      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
3847    }
3848  };
3849  var focustrap_default = FocusTrap;
3850
3851  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/scrollbar.js
3852  var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
3853  var SELECTOR_STICKY_CONTENT = ".sticky-top";
3854  var PROPERTY_PADDING = "padding-right";
3855  var PROPERTY_MARGIN = "margin-right";
3856  var ScrollBarHelper = class {
3857    constructor() {
3858      this._element = document.body;
3859    }
3860    // Public
3861    getWidth() {
3862      const documentWidth = document.documentElement.clientWidth;
3863      return Math.abs(window.innerWidth - documentWidth);
3864    }
3865    hide() {
3866      const width = this.getWidth();
3867      this._disableOverFlow();
3868      this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
3869      this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
3870      this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);
3871    }
3872    reset() {
3873      this._resetElementAttributes(this._element, "overflow");
3874      this._resetElementAttributes(this._element, PROPERTY_PADDING);
3875      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
3876      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
3877    }
3878    isOverflowing() {
3879      return this.getWidth() > 0;
3880    }
3881    // Private
3882    _disableOverFlow() {
3883      this._saveInitialAttribute(this._element, "overflow");
3884      this._element.style.overflow = "hidden";
3885    }
3886    _setElementAttributes(selector, styleProperty, callback) {
3887      const scrollbarWidth = this.getWidth();
3888      const manipulationCallBack = (element) => {
3889        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
3890          return;
3891        }
3892        this._saveInitialAttribute(element, styleProperty);
3893        const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
3894        element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
3895      };
3896      this._applyManipulationCallback(selector, manipulationCallBack);
3897    }
3898    _saveInitialAttribute(element, styleProperty) {
3899      const actualValue = element.style.getPropertyValue(styleProperty);
3900      if (actualValue) {
3901        manipulator_default.setDataAttribute(element, styleProperty, actualValue);
3902      }
3903    }
3904    _resetElementAttributes(selector, styleProperty) {
3905      const manipulationCallBack = (element) => {
3906        const value = manipulator_default.getDataAttribute(element, styleProperty);
3907        if (value === null) {
3908          element.style.removeProperty(styleProperty);
3909          return;
3910        }
3911        manipulator_default.removeDataAttribute(element, styleProperty);
3912        element.style.setProperty(styleProperty, value);
3913      };
3914      this._applyManipulationCallback(selector, manipulationCallBack);
3915    }
3916    _applyManipulationCallback(selector, callBack) {
3917      if (isElement(selector)) {
3918        callBack(selector);
3919        return;
3920      }
3921      for (const sel of selector_engine_default.find(selector, this._element)) {
3922        callBack(sel);
3923      }
3924    }
3925  };
3926  var scrollbar_default = ScrollBarHelper;
3927
3928  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/modal.js
3929  var NAME5 = "modal";
3930  var DATA_KEY4 = "bs.modal";
3931  var EVENT_KEY4 = `.${DATA_KEY4}`;
3932  var DATA_API_KEY3 = ".data-api";
3933  var ESCAPE_KEY2 = "Escape";
3934  var EVENT_HIDE3 = `hide${EVENT_KEY4}`;
3935  var EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY4}`;
3936  var EVENT_HIDDEN3 = `hidden${EVENT_KEY4}`;
3937  var EVENT_SHOW3 = `show${EVENT_KEY4}`;
3938  var EVENT_SHOWN3 = `shown${EVENT_KEY4}`;
3939  var EVENT_RESIZE = `resize${EVENT_KEY4}`;
3940  var EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY4}`;
3941  var EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY4}`;
3942  var EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY4}`;
3943  var EVENT_CLICK_DATA_API3 = `click${EVENT_KEY4}${DATA_API_KEY3}`;
vendor: 14,925 bytes, lines 3944-4348
3944  var CLASS_NAME_OPEN = "modal-open";
3945  var CLASS_NAME_FADE2 = "fade";
3946  var CLASS_NAME_SHOW4 = "show";
3947  var CLASS_NAME_STATIC = "modal-static";
3948  var OPEN_SELECTOR = ".modal.show";
3949  var SELECTOR_DIALOG = ".modal-dialog";
3950  var SELECTOR_MODAL_BODY = ".modal-body";
3951  var SELECTOR_DATA_TOGGLE3 = '[data-bs-toggle="modal"]';
3952  var Default5 = {
3953    backdrop: true,
3954    focus: true,
3955    keyboard: true
3956  };
3957  var DefaultType5 = {
3958    backdrop: "(boolean|string)",
3959    focus: "boolean",
3960    keyboard: "boolean"
3961  };
3962  var Modal = class _Modal extends base_component_default {
3963    constructor(element, config) {
3964      super(element, config);
3965      this._dialog = selector_engine_default.findOne(SELECTOR_DIALOG, this._element);
3966      this._backdrop = this._initializeBackDrop();
3967      this._focustrap = this._initializeFocusTrap();
3968      this._isShown = false;
3969      this._isTransitioning = false;
3970      this._scrollBar = new scrollbar_default();
3971      this._addEventListeners();
3972    }
3973    // Getters
3974    static get Default() {
3975      return Default5;
3976    }
3977    static get DefaultType() {
3978      return DefaultType5;
3979    }
3980    static get NAME() {
3981      return NAME5;
3982    }
3983    // Public
3984    toggle(relatedTarget) {
3985      return this._isShown ? this.hide() : this.show(relatedTarget);
3986    }
3987    show(relatedTarget) {
3988      if (this._isShown || this._isTransitioning) {
3989        return;
3990      }
3991      const showEvent = event_handler_default.trigger(this._element, EVENT_SHOW3, {
3992        relatedTarget
3993      });
3994      if (showEvent.defaultPrevented) {
3995        return;
3996      }
3997      this._isShown = true;
3998      this._isTransitioning = true;
3999      this._scrollBar.hide();
4000      document.body.classList.add(CLASS_NAME_OPEN);
4001      this._adjustDialog();
4002      this._backdrop.show(() => this._showElement(relatedTarget));
4003    }
4004    hide() {
4005      if (!this._isShown || this._isTransitioning) {
4006        return;
4007      }
4008      const hideEvent = event_handler_default.trigger(this._element, EVENT_HIDE3);
4009      if (hideEvent.defaultPrevented) {
4010        return;
4011      }
4012      this._isShown = false;
4013      this._isTransitioning = true;
4014      this._focustrap.deactivate();
4015      this._element.classList.remove(CLASS_NAME_SHOW4);
4016      this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
4017    }
4018    dispose() {
4019      event_handler_default.off(window, EVENT_KEY4);
4020      event_handler_default.off(this._dialog, EVENT_KEY4);
4021      this._backdrop.dispose();
4022      this._focustrap.deactivate();
4023      super.dispose();
4024    }
4025    handleUpdate() {
4026      this._adjustDialog();
4027    }
4028    // Private
4029    _initializeBackDrop() {
4030      return new backdrop_default({
4031        isVisible: Boolean(this._config.backdrop),
4032        // 'static' option will be translated to true, and booleans will keep their value,
4033        isAnimated: this._isAnimated()
4034      });
4035    }
4036    _initializeFocusTrap() {
4037      return new focustrap_default({
4038        trapElement: this._element
4039      });
4040    }
4041    _showElement(relatedTarget) {
4042      if (!document.body.contains(this._element)) {
4043        document.body.append(this._element);
4044      }
4045      this._element.style.display = "block";
4046      this._element.removeAttribute("aria-hidden");
4047      this._element.setAttribute("aria-modal", true);
4048      this._element.setAttribute("role", "dialog");
4049      this._element.scrollTop = 0;
4050      const modalBody = selector_engine_default.findOne(SELECTOR_MODAL_BODY, this._dialog);
4051      if (modalBody) {
4052        modalBody.scrollTop = 0;
4053      }
4054      reflow(this._element);
4055      this._element.classList.add(CLASS_NAME_SHOW4);
4056      const transitionComplete = () => {
4057        if (this._config.focus) {
4058          this._focustrap.activate();
4059        }
4060        this._isTransitioning = false;
4061        event_handler_default.trigger(this._element, EVENT_SHOWN3, {
4062          relatedTarget
4063        });
4064      };
4065      this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
4066    }
4067    _addEventListeners() {
4068      event_handler_default.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
4069        if (event.key !== ESCAPE_KEY2) {
4070          return;
4071        }
4072        if (this._config.keyboard) {
4073          this.hide();
4074          return;
4075        }
4076        this._triggerBackdropTransition();
4077      });
4078      event_handler_default.on(window, EVENT_RESIZE, () => {
4079        if (this._isShown && !this._isTransitioning) {
4080          this._adjustDialog();
4081        }
4082      });
4083      event_handler_default.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
4084        event_handler_default.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
4085          if (this._element !== event.target || this._element !== event2.target) {
4086            return;
4087          }
4088          if (this._config.backdrop === "static") {
4089            this._triggerBackdropTransition();
4090            return;
4091          }
4092          if (this._config.backdrop) {
4093            this.hide();
4094          }
4095        });
4096      });
4097    }
4098    _hideModal() {
4099      this._element.style.display = "none";
4100      this._element.setAttribute("aria-hidden", true);
4101      this._element.removeAttribute("aria-modal");
4102      this._element.removeAttribute("role");
4103      this._isTransitioning = false;
4104      this._backdrop.hide(() => {
4105        document.body.classList.remove(CLASS_NAME_OPEN);
4106        this._resetAdjustments();
4107        this._scrollBar.reset();
4108        event_handler_default.trigger(this._element, EVENT_HIDDEN3);
4109      });
4110    }
4111    _isAnimated() {
4112      return this._element.classList.contains(CLASS_NAME_FADE2);
4113    }
4114    _triggerBackdropTransition() {
4115      const hideEvent = event_handler_default.trigger(this._element, EVENT_HIDE_PREVENTED);
4116      if (hideEvent.defaultPrevented) {
4117        return;
4118      }
4119      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
4120      const initialOverflowY = this._element.style.overflowY;
4121      if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) {
4122        return;
4123      }
4124      if (!isModalOverflowing) {
4125        this._element.style.overflowY = "hidden";
4126      }
4127      this._element.classList.add(CLASS_NAME_STATIC);
4128      this._queueCallback(() => {
4129        this._element.classList.remove(CLASS_NAME_STATIC);
4130        this._queueCallback(() => {
4131          this._element.style.overflowY = initialOverflowY;
4132        }, this._dialog);
4133      }, this._dialog);
4134      this._element.focus();
4135    }
4136    /**
4137     * The following methods are used to handle overflowing modals
4138     */
4139    _adjustDialog() {
4140      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
4141      const scrollbarWidth = this._scrollBar.getWidth();
4142      const isBodyOverflowing = scrollbarWidth > 0;
4143      if (isBodyOverflowing && !isModalOverflowing) {
4144        const property = isRTL() ? "paddingLeft" : "paddingRight";
4145        this._element.style[property] = `${scrollbarWidth}px`;
4146      }
4147      if (!isBodyOverflowing && isModalOverflowing) {
4148        const property = isRTL() ? "paddingRight" : "paddingLeft";
4149        this._element.style[property] = `${scrollbarWidth}px`;
4150      }
4151    }
4152    _resetAdjustments() {
4153      this._element.style.paddingLeft = "";
4154      this._element.style.paddingRight = "";
4155    }
4156    // Static
4157    static jQueryInterface(config, relatedTarget) {
4158      return this.each(function() {
4159        const data = _Modal.getOrCreateInstance(this, config);
4160        if (typeof config !== "string") {
4161          return;
4162        }
4163        if (typeof data[config] === "undefined") {
4164          throw new TypeError(`No method named "${config}"`);
4165        }
4166        data[config](relatedTarget);
4167      });
4168    }
4169  };
4170  event_handler_default.on(document, EVENT_CLICK_DATA_API3, SELECTOR_DATA_TOGGLE3, function(event) {
4171    const target = selector_engine_default.getElementFromSelector(this);
4172    if (["A", "AREA"].includes(this.tagName)) {
4173      event.preventDefault();
4174    }
4175    event_handler_default.one(target, EVENT_SHOW3, (showEvent) => {
4176      if (showEvent.defaultPrevented) {
4177        return;
4178      }
4179      event_handler_default.one(target, EVENT_HIDDEN3, () => {
4180        if (isVisible(this)) {
4181          this.focus();
4182        }
4183      });
4184    });
4185    const alreadyOpen = selector_engine_default.findOne(OPEN_SELECTOR);
4186    if (alreadyOpen) {
4187      Modal.getInstance(alreadyOpen).hide();
4188    }
4189    const data = Modal.getOrCreateInstance(target);
4190    data.toggle(this);
4191  });
4192  enableDismissTrigger(Modal);
4193  defineJQueryPlugin(Modal);
4194
4195  // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/tab.js
4196  var NAME6 = "tab";
4197  var DATA_KEY5 = "bs.tab";
4198  var EVENT_KEY5 = `.${DATA_KEY5}`;
4199  var EVENT_HIDE4 = `hide${EVENT_KEY5}`;
4200  var EVENT_HIDDEN4 = `hidden${EVENT_KEY5}`;
4201  var EVENT_SHOW4 = `show${EVENT_KEY5}`;
4202  var EVENT_SHOWN4 = `shown${EVENT_KEY5}`;
4203  var EVENT_CLICK_DATA_API4 = `click${EVENT_KEY5}`;
4204  var EVENT_KEYDOWN = `keydown${EVENT_KEY5}`;
4205  var EVENT_LOAD_DATA_API = `load${EVENT_KEY5}`;
4206  var ARROW_LEFT_KEY = "ArrowLeft";
4207  var ARROW_RIGHT_KEY = "ArrowRight";
4208  var ARROW_UP_KEY2 = "ArrowUp";
4209  var ARROW_DOWN_KEY2 = "ArrowDown";
4210  var HOME_KEY = "Home";
4211  var END_KEY = "End";
4212  var CLASS_NAME_ACTIVE = "active";
4213  var CLASS_NAME_FADE3 = "fade";
4214  var CLASS_NAME_SHOW5 = "show";
4215  var CLASS_DROPDOWN = "dropdown";
4216  var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
4217  var SELECTOR_DROPDOWN_MENU = ".dropdown-menu";
4218  var NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
4219  var SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
4220  var SELECTOR_OUTER = ".nav-item, .list-group-item";
4221  var SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
4222  var SELECTOR_DATA_TOGGLE4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
4223  var SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE4}`;
4224  var SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
4225  var Tab = class _Tab extends base_component_default {
4226    constructor(element) {
4227      super(element);
4228      this._parent = this._element.closest(SELECTOR_TAB_PANEL);
4229      if (!this._parent) {
4230        return;
4231      }
4232      this._setInitialAttributes(this._parent, this._getChildren());
4233      event_handler_default.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
4234    }
4235    // Getters
4236    static get NAME() {
4237      return NAME6;
4238    }
4239    // Public
4240    show() {
4241      const innerElem = this._element;
4242      if (this._elemIsActive(innerElem)) {
4243        return;
4244      }
4245      const active = this._getActiveElem();
4246      const hideEvent = active ? event_handler_default.trigger(active, EVENT_HIDE4, { relatedTarget: innerElem }) : null;
4247      const showEvent = event_handler_default.trigger(innerElem, EVENT_SHOW4, { relatedTarget: active });
4248      if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
4249        return;
4250      }
4251      this._deactivate(active, innerElem);
4252      this._activate(innerElem, active);
4253    }
4254    // Private
4255    _activate(element, relatedElem) {
4256      if (!element) {
4257        return;
4258      }
4259      element.classList.add(CLASS_NAME_ACTIVE);
4260      this._activate(selector_engine_default.getElementFromSelector(element));
4261      const complete = () => {
4262        if (element.getAttribute("role") !== "tab") {
4263          element.classList.add(CLASS_NAME_SHOW5);
4264          return;
4265        }
4266        element.removeAttribute("tabindex");
4267        element.setAttribute("aria-selected", true);
4268        this._toggleDropDown(element, true);
4269        event_handler_default.trigger(element, EVENT_SHOWN4, {
4270          relatedTarget: relatedElem
4271        });
4272      };
4273      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE3));
4274    }
4275    _deactivate(element, relatedElem) {
4276      if (!element) {
4277        return;
4278      }
4279      element.classList.remove(CLASS_NAME_ACTIVE);
4280      element.blur();
4281      this._deactivate(selector_engine_default.getElementFromSelector(element));
4282      const complete = () => {
4283        if (element.getAttribute("role") !== "tab") {
4284          element.classList.remove(CLASS_NAME_SHOW5);
4285          return;
4286        }
4287        element.setAttribute("aria-selected", false);
4288        element.setAttribute("tabindex", "-1");
4289        this._toggleDropDown(element, false);
4290        event_handler_default.trigger(element, EVENT_HIDDEN4, { relatedTarget: relatedElem });
4291      };
4292      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE3));
4293    }
4294    _keydown(event) {
4295      if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY2, ARROW_DOWN_KEY2, HOME_KEY, END_KEY].includes(event.key)) {
4296        return;
4297      }
4298      event.stopPropagation();
4299      event.preventDefault();
4300      const children = this._getChildren().filter((element) => !isDisabled(element));
4301      let nextActiveElement;
4302      if ([HOME_KEY, END_KEY].includes(event.key)) {
4303        nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
4304      } else {
4305        const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY2].includes(event.key);
4306        nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
4307      }
4308      if (nextActiveElement) {
4309        nextActiveElement.focus({ preventScroll: true });
4310        _Tab.getOrCreateInstance(nextActiveElement).show();
4311      }
4312    }
4313    _getChildren() {
4314      return selector_engine_default.find(SELECTOR_INNER_ELEM, this._parent);
4315    }
4316    _getActiveElem() {
4317      return this._getChildren().find((child) => this._elemIsActive(child)) || null;
4318    }
4319    _setInitialAttributes(parent, children) {
4320      this._setAttributeIfNotExists(parent, "role", "tablist");
4321      for (const child of children) {
4322        this._setInitialAttributesOnChild(child);
4323      }
4324    }
4325    _setInitialAttributesOnChild(child) {
4326      child = this._getInnerElement(child);
4327      const isActive = this._elemIsActive(child);
4328      const outerElem = this._getOuterElement(child);
4329      child.setAttribute("aria-selected", isActive);
4330      if (outerElem !== child) {
4331        this._setAttributeIfNotExists(outerElem, "role", "presentation");
4332      }
4333      if (!isActive) {
4334        child.setAttribute("tabindex", "-1");
4335      }
4336      this._setAttributeIfNotExists(child, "role", "tab");
4337      this._setInitialAttributesOnTargetPanel(child);
4338    }
4339    _setInitialAttributesOnTargetPanel(child) {
4340      const target = selector_engine_default.getElementFromSelector(child);
4341      if (!target) {
4342        return;
4343      }
4344      this._setAttributeIfNotExists(target, "role", "tabpanel");
4345      if (child.id) {
4346        this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`);
4347      }
4348    }
vendor: 2,132 bytes, lines 4349-4410
4349    _toggleDropDown(element, open) {
4350      const outerElem = this._getOuterElement(element);
4351      if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
4352        return;
4353      }
4354      const toggle = (selector, className) => {
4355        const element2 = selector_engine_default.findOne(selector, outerElem);
4356        if (element2) {
4357          element2.classList.toggle(className, open);
4358        }
4359      };
4360      toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
4361      toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW5);
4362      outerElem.setAttribute("aria-expanded", open);
4363    }
4364    _setAttributeIfNotExists(element, attribute, value) {
4365      if (!element.hasAttribute(attribute)) {
4366        element.setAttribute(attribute, value);
4367      }
4368    }
4369    _elemIsActive(elem) {
4370      return elem.classList.contains(CLASS_NAME_ACTIVE);
4371    }
4372    // Try to get the inner element (usually the .nav-link)
4373    _getInnerElement(elem) {
4374      return elem.matches(SELECTOR_INNER_ELEM) ? elem : selector_engine_default.findOne(SELECTOR_INNER_ELEM, elem);
4375    }
4376    // Try to get the outer element (usually the .nav-item)
4377    _getOuterElement(elem) {
4378      return elem.closest(SELECTOR_OUTER) || elem;
4379    }
4380    // Static
4381    static jQueryInterface(config) {
4382      return this.each(function() {
4383        const data = _Tab.getOrCreateInstance(this);
4384        if (typeof config !== "string") {
4385          return;
4386        }
4387        if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
4388          throw new TypeError(`No method named "${config}"`);
4389        }
4390        data[config]();
4391      });
4392    }
4393  };
4394  event_handler_default.on(document, EVENT_CLICK_DATA_API4, SELECTOR_DATA_TOGGLE4, function(event) {
4395    if (["A", "AREA"].includes(this.tagName)) {
4396      event.preventDefault();
4397    }
4398    if (isDisabled(this)) {
4399      return;
4400    }
4401    Tab.getOrCreateInstance(this).show();
4402  });
4403  event_handler_default.on(window, EVENT_LOAD_DATA_API, () => {
4404    for (const element of selector_engine_default.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
4405      Tab.getOrCreateInstance(element);
4406    }
4407  });
4408  defineJQueryPlugin(Tab);
4409})();
4410</script>
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440<script
4441  crossorigin="anonymous"
4442  integrity="sha256-GPgIz79V/BDNsBSKZLOApH4OjmK6zL33KrXLfOba2po="
4443  src="/js/scripts.min.18f808cfbf55fc10cdb0148a64b380a47e0e8e62baccbdf72ab5cb7ce6dada9a.js"></script>
4443
4444
4445
4446
4447
4448
4449<script type="application/javascript">
4450  WebFont.load({
4451    google: {
4452      api: 'https://fonts.googleapis.com/css2',
4453      families: ['Rubik:ital,wght@0,300..900;1,300..900','Rubik:ital,wght@0,300..900;1,300..900&display=swap'],
4454      version: 2
4455    },
4456    active: () => {sessionStorage.fontsLoaded = true}
4457  });
4458</script>
4458
4459
4460
4461
4462<script>
4463  if ('serviceWorker' in navigator){navigator.serviceWorker.register("/service-worker.js");}
4464</script>
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473	
4474</body>
4475
4476</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.