-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathbookmarks.html
841 lines (740 loc) · 846 KB
/
bookmarks.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
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
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<STYLE>
html {
max-width: 60em;
margin: auto;
font-family: "Calibri", sans-serif;
}
dd > p {
margin-top: 0;
white-space: pre-wrap;
line-height: 1.5;
}
a[shortcuturl]:not([shortcuturl=""])::after {
content: " (keyword: " attr(shortcuturl) ")";
display: inline-block;
margin-left: 1em;
font-family: "Consolas", monospace;
}
</STYLE>
<H1>Bookmarks Menu</H1>
<DL>
<DT><H3>Jan Moesen’s bookmarklets</H3>
<DD><P>A collection of time-saving and life-enhancing (ahem) bookmarklets.
These bookmarklets are used for various purposes, but they all share the same
goal: make web browsing and development easier and more efficient.
I like giving my bookmarklets keywords so I can use my address bar as a
command line. (If you speak Dutch, check out this presentation from 2011:
http://kak.be/phl.)
The bookmarklets are stored here as separate script files. You can copy and
paste them into your bookmarks manager, or import them wholesale using the
generated `bookmarks.html` file.
Feel free to fork and create pull requests: http://kak.be/bookmarklets
See COPYING for licence details. Or “license details”, if you are so inclined.
These bookmarks were exported on Sun, 2025-02-09 22:12:09 +0100.</P>
<DL><P>
<DT><H3>Bookmarks toolbar</H3>
<DD><P>These are the bookmarklets I keep on the bookmarklets toolbar for quick access
with the mouse. For instance, when browsing a web comic, it is easier to keep
the cursor positioned over the "Next »" and just keep clicking it, rather than
typing "next<Enter>" every time. (Or looking for the "Next" link on the web
page itself.)</P>
<DL><P>
<DT><A HREF="javascript:%28function%20read%28%29%20%7B%20%20const%20css%20%3D%20%60%20%40namespace%20svg%20%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3B%20%20%2A%20%7B%20line-height%3A%201.5%3B%20%7D%20html%20%7B%20background%3A%20rgb%28245%2C%20245%2C%20225%29%3B%20color%3A%20rgb%2830%2C%2030%2C%2030%29%3B%20%7D%20body%20%7B%20max-width%3A%2048em%3B%20margin%3A%200%20auto%3B%20padding%3A%201em%3B%20font-family%3A%20%22Calibri%22%2C%20sans-serif%3B%20font-size%3A%201.05rem%3B%20%7D%20p%20%7B%20line-height%3A%201.7%3B%20%7D%20%3Alink%20%7B%20color%3A%20%2300e%3B%20%7D%20%3Avisited%20%7B%20color%3A%20%23528%3B%20%7D%20%3Alink%3Afocus%2C%20%3Avisited%3Afocus%2C%20%3Alink%3Ahover%2C%20%3Avisited%3Ahover%20%7B%20color%3A%20%23e30%3B%20%7D%20%3Alink%3Aactive%2C%20%3Avisited%3Aactive%20%7B%20color%3A%20%23e00%3B%20%7D%20center%2C%20%5Balign%5D%20%7B%20text-align%3A%20left%3B%20%7D%20b%3Anot%28.jancss-probably-structure%29%2C%20u%2C%20blink%20%7B%20font-weight%3A%20inherit%3B%20font-style%3A%20inherit%3B%20text-decoration%3A%20inherit%20%7D%20b.jancss-probably-structure%20%7B%20font-size%3A%20larger%3B%20%7D%20.jancss-probably-layout%20%7B%20font%3A%20inherit%3B%20%7D%20%20h1%3Anot%28.jancss-probably-layout%29%2C%20h2%3Anot%28.jancss-probably-layout%29%2C%20h3%3Anot%28.jancss-probably-layout%29%20%7B%20font-family%3A%20%22Cambria%22%2C%20serif%3B%20%7D%20h1%2C%20h1.jancss-probably-layout%20%7B%20border-bottom%3A%201px%20solid%20%23888%3B%20font-size%3A%20200%25%3B%20font-weight%3A%20100%3B%20%7D%20h2%2C%20h2.jancss-probably-layout%20%2A%20%7B%20border-bottom%3A%201px%20solid%20%23bbb%3B%20font-size%3A%20150%25%3B%20font-weight%3A%20100%3B%20%7D%20h3%2C%20h3.jancss-probably-layout%20%7B%20border-bottom%3A%201px%20dotted%20%23bbb%3B%20font-size%3A%20117%25%3B%20font-weight%3A%20100%3B%20%7D%20h1.jancss-probably-layout%20%2A%2C%20h2.jancss-probably-layout%20%2A%2C%20h3.jancss-probably-layout%20%2A%20%7B%20font-size%3A%201rem%3B%20%7D%20%20h1%20a%5Bhref%5D%3Anot%28%3Ahover%29%2C%20h2%20a%5Bhref%5D%3Anot%28%3Ahover%29%2C%20h3%20a%5Bhref%5D%3Anot%28%3Ahover%29%20%7B%20text-decoration%3A%20none%3B%20%7D%20h1%20a%5Bhref%5D%3A%3Aafter%2C%20h2%20a%5Bhref%5D%3A%3Aafter%2C%20h3%20a%5Bhref%5D%3A%3Aafter%20%7B%20font-size%3A%2075%25%3B%20content%3A%20%22%20%23%22%3B%20%7D%20%20pre%20%7B%20padding%3A%201ex%3B%20border%3A%201px%20dotted%3B%20%7D%20code%2C%20pre%2C%20.syntaxhighlighter%2C%20.dp-highlighter%20%7B%20font-family%3A%20%22Consolas%22%2C%20monospace%3B%20font-size%3A%20small%3B%20background%3A%20%23ffe%3B%20%7D%20.dp-highlighter%20%2B%20pre%5Bname%3D%22code%22%5D%20%7B%20display%3A%20none%3B%20%7D%20%20textarea%20%7B%20width%3A%20100%25%3B%20height%3A%2032ex%3B%20%7D%20%20table.jancss-probably-for-data%20th%2C%20table.jancss-probably-for-data%20td%20%7B%20vertical-align%3A%20top%3B%20text-align%3A%20left%3B%20padding%3A%200.5ex%3B%20%7D%20table.jancss-probably-for-data%20caption%20%7B%20font-weight%3A%20bold%3B%20border-bottom%3A%201px%20dotted%3B%20%7D%20table.jancss-probably-for-layout%20td%20%7B%20display%3A%20inline-block%3B%20%7D%20table.jancss-probably-for-data%20tr%3Anth-child%28odd%29%20td%3Anot%28.jancss-active-col%29%20%7B%20background%3A%20%23ffe%3B%20%7D%20table.jancss-probably-for-data%20tr%3Ahover%20td%3Anot%28.code%29%2C%20table.jancss-probably-for-data%20.jancss-active-col%20%7B%20background%3A%20%23ffc%3B%20%7D%20table.jancss-probably-for-data%20th%2C%20table.jancss-probably-for-data%20tr%20td%3Anot%28.code%29%3Ahover%20%7B%20background%3A%20%23ff9%3B%20%7D%20table.jancss-probably-for-data%20th%20code%2C%20table.jancss-probably-for-data%20td%20code%20%7B%20background%3A%20inherit%3B%20%7D%20%20img%2C%20input%5Btype%3D%22image%22%5D%2C%20object%2C%20embed%2C%20video%2C%20audio%2C%20iframe%2C%20canvas%2C%20%3Anot%28svg%7C%2A%29%20%3E%20svg%7C%2A%20%7B%20max-width%3A%20100%25%3B%20%7D%20iframe%5Bsrc%5E%3D%22https%3A%2F%2Fplayer.vimeo.com%2F%22%5D%2C%20iframe%5Bsrc%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fembed%2F%22%5D%2C%20iframe%5Bsrc%5E%3D%22https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2F%22%5D%20%7B%20height%3A%2080vh%3B%20%7D%20figure%20%7B%20margin%3A%200%3B%20%7D%20iframe%20%7B%20width%3A%20100%25%3B%20%7D%20iframe%5Bclass%2A%3D%22twitter%22%5D%20%7B%20min-height%3A%2015em%3B%20%7D%20%20body%3Anot%28%3Ahover%29%20img%2C%20body%3Anot%28%3Ahover%29%20input%5Btype%3D%22image%22%5D%2C%20body%3Anot%28%3Ahover%29%20object%2C%20body%3Anot%28%3Ahover%29%20embed%2C%20body%3Anot%28%3Ahover%29%20video%2C%20body%3Anot%28%3Ahover%29%20audio%2C%20body%3Anot%28%3Ahover%29%20iframe%2C%20body%3Anot%28%3Ahover%29%20canvas%2C%20body%3Anot%28%3Ahover%29%20%3Anot%28svg%7C%2A%29%20%3E%20svg%7C%2A%20%7B%20opacity%3A%200.25%3B%20%7D%20%20svg%3Anot%28%3Aroot%29%2C%20img%5Bclass%2A%3D%22icon%22%5D%5Bsrc%2A%3D%22.svg%22%5D%2C%20img%5Bclass%2A%3D%22Icon%22%5D%5Bsrc%2A%3D%22.svg%22%5D%2C%20.svg-icon%2C%20.inline-icon%2C%20.wp-smiley%2C%20.smiley%2C%20.emoticon%2C%20%3Anot%28html%29.emoji%20%7B%20max-width%3A%201.4em%3B%20max-height%3A%201.4em%3B%20%7D%20%20%5Bstyle%2A%3D%22position%3A%20fixed%22%5D%2C%20%5Bstyle%2A%3D%22position%3Afixed%22%5D%20%7B%20position%3A%20static%20%21important%3B%20%7D%20%20aside%3Anot%28%3Ahover%29%2C%20%5Bdata-expander-id%5D%2C%20%5Bid%5E%3D%22footnote_plugin_tooltip_text_%22%5D%3Anot%28%3Ahover%29%2C%20blockquote%5Bclass%2A%3D%22quote%22%5D%3Anot%28%3Ahover%29%2C%20q%5Bclass%2A%3D%22pull%22%5D%3Anot%28%3Ahover%29%2C%20blockquote%5Bclass%2A%3D%22pull%22%5D%3Anot%28%3Ahover%29%2C%20.quote-box%3Anot%28%3Ahover%29%2C%20article%20%5Bclass%2A%3D%22quote%22%5D%3Anot%28%3Ahover%29%2C%20%5Bclass%2A%3D%22article%22%5D%20%5Bclass%2A%3D%22quote%22%5D%3Anot%28%3Ahover%29%2C%20.su-pullquote%3Anot%28%3Ahover%29%2C%20.pullquote%3Anot%28%3Ahover%29%2C%20.pullQuote%3Anot%28%3Ahover%29%2C%20.pull-quote%3Anot%28%3Ahover%29%20%7B%20opacity%3A%200.25%3B%20%7D%20%20.postprofile%2C%20.signature%20%7B%20font-size%3A%20smaller%3B%20border-top%3A%201px%20dotted%3B%20opacity%3A%200.5%3B%20%7D%20%20iframe%5Bsrc%2A%3D%22.facebook.com%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22.twitter.com%2Fwidgets%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fplusone.google.com%2F_%2F%2B1%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fwww.reddit.com%2Fstatic%2Fbutton%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fs7.addthis.com%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fwww.stumbleupon.com%2Fbadge%2Fembed%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fwidgets.bufferapp.com%2F%22%5D%20%7B%20width%3A%2012em%3B%20height%3A%204ex%3B%20border%3A%201px%20dotted%3B%20%7D%20.twtr-widget.twtr-scroll%20%7B%20max-height%3A%2030ex%3B%20overflow%3A%20auto%3B%20%7D%20.article__share%2C%20.social-share%2C%20%23social_btns%2C%20.social-media%20%3E%20.share%2C%20.taboola%20%7B%20display%3A%20none%3B%20%7D%20%3A-moz-any%28%20div%2C%20ul%2C%20li%20%29%3A-moz-any%28%20%3A-moz-any%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%29%3A-moz-any%28%20%5Bid%2A%3D%22media%22%5D%2C%20%5Bid%2A%3D%22Media%22%5D%20%29%3A-moz-any%28%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%2C%20%3A-moz-any%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%3A-moz-any%28%20%5Bid%2A%3D%22toolbar%22%5D%2C%20%5Bid%2A%3D%22Toolbar%22%5D%2C%20%5Bid%2A%3D%22buttons%22%5D%2C%20%5Bid%2A%3D%22Buttons%22%5D%2C%20%29%2C%20%3A-moz-any%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%29%3A-moz-any%28%20%5Bclass%2A%3D%22media%22%5D%2C%20%5Bclass%2A%3D%22Media%22%5D%20%29%3A-moz-any%28%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%2C%20%3A-moz-any%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%3A-moz-any%28%20%5Bclass%2A%3D%22toolbar%22%5D%2C%20%5Bclass%2A%3D%22Toolbar%22%5D%2C%20%5Bclass%2A%3D%22buttons%22%5D%2C%20%5Bclass%2A%3D%22Buttons%22%5D%2C%20%29%20%29%20%7B%20display%3A%20none%3B%20%7D%20%3Amatches%28%20div%2C%20ul%2C%20li%20%29%3Amatches%28%20%3Amatches%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%29%3Amatches%28%20%5Bid%2A%3D%22media%22%5D%2C%20%5Bid%2A%3D%22Media%22%5D%20%29%3Amatches%28%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%2C%20%3Amatches%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%3Amatches%28%20%5Bid%2A%3D%22toolbar%22%5D%2C%20%5Bid%2A%3D%22Toolbar%22%5D%2C%20%5Bid%2A%3D%22buttons%22%5D%2C%20%5Bid%2A%3D%22Buttons%22%5D%2C%20%29%2C%20%3Amatches%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%29%3Amatches%28%20%5Bclass%2A%3D%22media%22%5D%2C%20%5Bclass%2A%3D%22Media%22%5D%20%29%3Amatches%28%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%2C%20%3Amatches%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%3Amatches%28%20%5Bclass%2A%3D%22toolbar%22%5D%2C%20%5Bclass%2A%3D%22Toolbar%22%5D%2C%20%5Bclass%2A%3D%22buttons%22%5D%2C%20%5Bclass%2A%3D%22Buttons%22%5D%2C%20%29%20%29%20%7B%20display%3A%20none%3B%20%7D%20%20iframe%5Bid%5E%3D%22google_ads_%22%5D%20%7B%20display%3A%20none%3B%20%7D%20%20li%3Aempty%2C%20li.jancss-emptyish%20%7B%20display%3A%20none%3B%20%7D%20%20%3A-moz-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20ul%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%3B%20%7D%20%3A-webkit-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20ul%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%3B%20%7D%20%3Aany%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20ul%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%3B%20%7D%20%3A-moz-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20li%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%20.5em%3B%20border-right%3A%201px%20dotted%3B%20%7D%20%3A-webkit-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20li%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%20.5em%3B%20border-right%3A%201px%20dotted%3B%20%7D%20%3Aany%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20li%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%20.5em%3B%20border-right%3A%201px%20dotted%3B%20%7D%20%20.cufon-canvas%20canvas%20%7B%20display%3A%20none%3B%20%7D%20%20.contentitem-sidenote%3Anot%28%3Ahover%29%20%3E%20%3Anot%28.contentitem-sidenote-snippet%29%2C%20.contentitem-infocard-toggle-container%20%2B%20.contentitem-infocard-contents%3Anot%28%3Ahover%29%20%7B%20opacity%3A%200.25%3B%20%7D%20.contentitem-sidenote%3Ahover%20%3E%20%3Anot%28.contentitem-sidenote-snippet%29%2C%20.contentitem-infocard-toggle-container%20%2B%20.contentitem-infocard-contents%3Ahover%20%7B%20background%3A%20%23ffc%3B%20%7D%20%20.google-src-text%20%7B%20display%3A%20none%3B%20%7D%20%20.scrollmagic-pin-spacer%20%7B%20display%3A%20none%3B%20%7D%20%20%23xxxJanConsole%20%7B%20display%3A%20none%3B%20%7D%20%60%3B%20%20var%20attrs%20%3D%20%5B%20%27inert%27%2C%20%27style%27%2C%20%27background%27%2C%20%27bgcolor%27%2C%20%27color%27%2C%20%27text%27%2C%20%27link%27%2C%20%27vlink%27%2C%20%27alink%27%2C%20%27hlink%27%2C%20%27table%40width%27%2C%20%27colgroup%40width%27%2C%20%27col%40width%27%2C%20%27tr%40width%27%2C%20%27td%40width%27%2C%20%27th%40width%27%2C%20%27table%40height%27%2C%20%27tr%40height%27%2C%20%27td%40height%27%2C%20%27th%40height%27%2C%20%27img%40width%27%2C%20%27img%40height%27%2C%20%27source%40width%27%2C%20%27source%40height%27%2C%20%27border%27%2C%20%27frameborder%27%2C%20%27align%27%2C%20%27face%27%2C%20%27font%40size%27%2C%20%27basefont%40size%27%20%5D%3B%20%20var%20elementsToRemoveSelectors%20%3D%20%5B%20%27.bt-popin%27%20%20%5D%3B%20%20var%20headerSelectors%20%3D%20%5B%20%27%5Bclass%2A%3D%22head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bclass%2A%3D%22Head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bid%2A%3D%22head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bid%2A%3D%22Head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Brole%3D%22heading%22%5D%27%2C%20%27%5Bclass%2A%3D%22title%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bclass%2A%3D%22Title%22%5D%3Anot%28%3Aempty%29%27%2C%20%27h1%3Anot%28%3Aempty%29%2C%20h2%3Anot%28%3Aempty%29%2C%20h3%3Anot%28%3Aempty%29%27%2C%20%27h1%3Anot%28%3Aempty%29%5Bitemprop~%3D%22name%22%5D%2C%20h2%3Anot%28%3Aempty%29%5Bitemprop~%3D%22name%22%5D%2C%20h3%3Anot%28%3Aempty%29%5Bitemprop~%3D%22name%22%5D%27%2C%20%27h1%3Anot%28%3Aempty%29%5Bitemprop~%3D%22headline%22%5D%2C%20h2%3Anot%28%3Aempty%29%5Bitemprop~%3D%22headline%22%5D%2C%20h3%3Anot%28%3Aempty%29%5Bitemprop~%3D%22headline%22%5D%27%20%5D%3B%20var%20ancestorsForHeadersToIgnoreSelectors%20%3D%20%5B%20%27aside%27%2C%20%27.related-posts%27%2C%20%27.article-slider%27%2C%20%27.article-drawer%27%20%5D%3B%20%20var%20contentSelectors%20%3D%20%5B%20%20%27main%20h1%3Anot%28%3Aempty%29%27%2C%20%27main%20header%27%2C%20%27main%20h2%3Anot%28%3Aempty%29%27%2C%20%27main%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%20header%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%27%2C%20%27body%20%5Brole%3D%22main%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22main%22%5D%20header%27%2C%20%27body%20%5Brole%3D%22main%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22main%22%5D%27%2C%20%27body%20%5Brole%3D%22document%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22document%22%5D%20header%27%2C%20%27body%20%5Brole%3D%22document%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22document%22%5D%27%2C%20%27body%20%5Brole%3D%22article%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22article%22%5D%20header%27%2C%20%27body%20%5Brole%3D%22article%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22article%22%5D%27%2C%20%27body%20%23main%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%23main%20header%27%2C%20%27body%20%23main%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%23main%27%2C%20%20%27%3Anot%28li%29%20%3E%20article%3Aonly-of-type%27%2C%20%20%27body%20%23article%27%2C%20%27body%20%3Anot%28%23spotlight%29%20%3E%20.article%27%2C%20%27body%20.articleContent%27%2C%20%27body%20%23article_top%27%2C%20%27body%20%23article_body%27%2C%20%27body%20%23article_main%27%2C%20%27body%20.post-body%3Anot%28.field-item%29%27%2C%20%27%3Anot%28input%29%3Anot%28textarea%29.post%27%2C%20%27%3Anot%28input%29%3Anot%28textarea%29.blogpost%27%2C%20%27%3Anot%28input%29%3Anot%28textarea%29.blogPost%27%2C%20%27body%20%5Bid%5E%3D%22post0%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post1%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post2%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post3%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post4%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post5%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post6%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post7%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post8%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post9%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-0%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-1%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-2%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-3%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-4%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-5%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-6%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-7%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-8%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-9%22%5D%27%2C%20%27body%20%23entry%27%2C%20%27body%20.entry%27%2C%20%27body%20%23content%27%2C%20%27body%20.content%27%2C%20%27body%20%5Bid%5E%3D%22content%22%5D%27%2C%20%27body%20%5Bclass%5E%3D%22content%22%5D%27%2C%20%27body%20%23main%27%2C%20%27body%20.main%27%2C%20%20%27h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%23header%27%2C%20%27header%27%2C%20%27body%20.header%27%2C%20%27h2%3Anot%28%3Aempty%29%27%2C%20%20%27big%27%20%5D%3B%20%20var%20structureElementsForLayoutSelectors%20%3D%20%5B%20%27%2F%2F%2A%5Bcontains%28%22%20h1%20h2%20h3%20h4%20h5%20h6%20h7%20%22%2C%20concat%28%22%20%22%2C%20local-name%28%29%2C%20%22%20%22%29%29%20and%20string-length%28normalize-space%28%29%29%20%3E%20120%5D%27%20%5D%3B%20%20var%20layoutElementsForStructureSelectors%20%3D%20%5B%20%20%27b%3Afirst-child%20%2B%20%3Aempty%27%2C%20%27%3Aempty%20%2B%20b%20%2B%20%3Aempty%27%2C%20%27%3Aempty%20%2B%20b%3Alast-child%27%2C%20%27div%20%3E%20b%3Aonly-child%2C%20p%20%3E%20b%3Aonly-child%27%20%5D%3B%20%20var%20syntaxHighlightHrefRegex%20%3D%20%2F%5Cb%28%28syntax%7Cpygments%29%28hi%28ghlight%28er%29%3F%7Clite%28r%29%3F%29%29%3F%7Csh%28Core%7CTheme%5B%5E.%5D%2A%29%7Cgeshi%7Ccodecolorer%29%5B.%2F%5D%2Fi%3B%20%20var%20elementsWithToggledEventHandlers%20%3D%20%7B%7D%3B%20var%20eventHandlerAttributesToToggle%20%3D%20%5B%20%27oncontextmenu%27%2C%20%27onshow%27%2C%20%27oninput%27%2C%20%27onkeydown%27%2C%20%27onkeyup%27%2C%20%27onkeypress%27%2C%20%27onmousedown%27%2C%20%27onmouseup%27%2C%20%27onmouseenter%27%2C%20%27onmouseleave%27%2C%20%27onmouseover%27%2C%20%27onmouseout%27%2C%20%27onmousemove%27%2C%20%27onresize%27%2C%20%27onscroll%27%2C%20%27onwheel%27%2C%20%27onselect%27%2C%20%27onselectstart%27%2C%20%27onselectionchange%27%20%5D%3B%20%20var%20contentElements%20%3D%20%5B%5D%3B%20%20%28function%20execute%28document%29%20%7B%20function%20addClass%28element%2C%20classNames%29%20%7B%20%20classNames.split%28%2F%5Cs%2B%2F%29.forEach%28function%20%28className%29%20%7B%20element.className%20%3D%20%28%28%27%20%27%20%2B%20element.className%20%2B%20%27%20%27%29.replace%28%27%20%27%20%2B%20className.trim%28%29%20%2B%20%27%20%27%2C%20%27%27%29%20%2B%20%27%20%27%20%2B%20className%29.trim%28%29%3B%20%7D%29%3B%20%7D%20function%20removeClass%28element%2C%20classNames%29%20%7B%20classNames.split%28%2F%5Cs%2B%2F%29.forEach%28function%20%28className%29%20%7B%20element.className%20%3D%20%28%27%20%27%20%2B%20element.className%20%2B%20%27%20%27%29.replace%28%27%20%27%20%2B%20className.trim%28%29%20%2B%20%27%20%27%2C%20%27%27%29.trim%28%29%3B%20%7D%29%3B%20%7D%20function%20toArray%28arrayLike%29%20%7B%20return%20Array.prototype.slice.call%28arrayLike%29%3B%20%7D%20var%20all%20%3D%20toArray%28document.getElementsByTagName%28%27%2A%27%29%29%2C%20ourStyleSheet%20%3D%20document.getElementById%28%27jancss%27%29%2C%20allStyleSheets%20%3D%20toArray%28document.styleSheets%29%2C%20prettyPrintStyleSheet%2C%20matches%3B%20%20window.TextResizeDetector%20%26%26%20TextResizeDetector.stopDetector%20%26%26%20TextResizeDetector.stopDetector%28%29%3B%20%20var%20maxTimeoutId%20%3D%20setTimeout%28function%20%28%29%20%7B%20for%20%28var%20i%20%3D%201%3B%20i%20%3C%20maxTimeoutId%3B%20i%2B%2B%29%20%7B%20clearTimeout%28i%29%3B%20clearInterval%28i%29%3B%20%7D%20%7D%2C%204%29%3B%20%20%20var%20requestAnimationFrame%20%3D%20window.requestAnimationFrame%20%7C%7C%20window.mozRequestAnimationFrame%20%7C%7C%20window.webkitRequestAnimationFrame%20%7C%7C%20window.msRequestAnimationFrame%20%7C%7C%20function%20%28%29%20%7B%20%7D%3B%20var%20cancelAnimationFrame%20%3D%20window.cancelAnimationFrame%20%7C%7C%20window.mozCancelAnimationFrame%20%7C%7C%20window.webkitCancelAnimationFrame%20%7C%7C%20window.msCancelAnimationFrame%20%7C%7C%20function%20%28%29%20%7B%20%7D%3B%20var%20maxAnimationFrameRequestId%20%3D%20requestAnimationFrame%28function%20%28%29%20%7B%20for%20%28i%20%3D%201%3B%20i%20%3C%20maxAnimationFrameRequestId%20%2A%202%3B%20i%2B%2B%29%20%7B%20cancelAnimationFrame%28i%29%3B%20%7D%20%20window.requestAnimationFrame%20%3D%20function%20%28callback%29%20%7B%20var%20callbackSource%20%3D%20callback.toSource%20%26%26%20callback.toSource%28%29%3B%20if%20%28callbackSource%20%26%26%20callbackSource.indexOf%28%27Readable%2B%2B%20requestAnimationFrame%20interceptor%27%29%20%3D%3D%3D%20-1%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20intercepted%20call%20to%20requestAnimationFrame%20at%20%27%20%2B%20new%20Date%28%29%29%3B%20console.log%28%27Readable%2B%2B%3A%20callback%20for%20requestAnimationFrame%3A%20%27%20%2B%20callbackSource%29%3B%20%7D%20%7D%3B%20%7D%29%3B%20%20%5Bwindow%2C%20document%2C%20document.documentElement%2C%20document.body%5D.forEach%28function%20%28elem%29%20%7B%20%20if%20%28%21elem%29%20%7B%20return%3B%20%7D%20%20if%20%28elementsWithToggledEventHandlers%5Belem%5D%29%20%7B%20return%3B%20%7D%20elementsWithToggledEventHandlers%5Belem%5D%20%3D%20true%3B%20%20eventHandlerAttributesToToggle.forEach%28function%20%28attrib%29%20%7B%20if%20%28elem%5B%27jancss-%27%20%2B%20attrib%5D%29%20%7B%20elem%5Battrib%5D%20%3D%20elem%5B%27jancss-%27%20%2B%20attrib%5D%3B%20delete%20elem%5B%27jancss-%27%20%2B%20attrib%5D%3B%20%7D%20else%20if%20%28elem%5Battrib%5D%29%20%7B%20elem%5B%27jancss-%27%20%2B%20attrib%5D%20%3D%20elem%5Battrib%5D%3B%20elem%5Battrib%5D%20%3D%20function%20%28%29%20%7B%20%7D%3B%20%7D%20%7D%29%3B%20%20if%20%28typeof%20jQuery%20%3D%3D%3D%20%27function%27%29%20%7B%20%20if%20%28typeof%20jQuery.hasData%20%3D%3D%3D%20%27function%27%20%26%26%20jQuery.hasData%28elem%29%29%20%7B%20%20if%20%28typeof%20jQuery._data%20%21%3D%3D%20%27function%27%29%20%7B%20return%3B%20%7D%20var%20data%20%3D%20jQuery._data%28elem%29%3B%20if%20%28data.jancssEvents%29%20%7B%20data.events%20%3D%20data.jancssEvents%3B%20delete%20data.jancssEvents%3B%20jQuery._data%28elem%2C%20data%29%3B%20return%3B%20%7D%20else%20if%20%28data.events%29%20%7B%20data.jancssEvents%20%3D%20data.events%3B%20delete%20data.events%3B%20jQuery._data%28elem%2C%20data%29%3B%20return%3B%20%7D%20%7D%20%20if%20%28jQuery.fn.data%29%20%7B%20var%20%24elem%20%3D%20jQuery%28elem%29%3B%20var%20eventsData%20%3D%20%24elem.data%28%27events%27%29%3B%20var%20jancssEventsData%20%3D%20%24elem.data%28%27jancssEvents%27%29%3B%20if%20%28jancssEventsData%29%20%7B%20%24elem.data%28%27events%27%2C%20jancssEventsData%29%3B%20%24elem.removeData%28%27jancssEvents%27%29%3B%20%7D%20else%20if%20%28eventsData%29%20%7B%20%24elem.data%28%27jancssEvents%27%2C%20eventsData%29%3B%20%24elem.removeData%28%27events%27%29%3B%20%7D%20%7D%20%7D%20%7D%29%3B%20%20if%20%28typeof%20MutationObserver%20%3D%3D%3D%20%27function%27%20%26%26%20%21document.jancssHasMutationObserver%29%20%7B%20document.jancssHasMutationObserver%20%3D%20true%3B%20var%20observer%20%3D%20new%20MutationObserver%28function%20%28mutations%29%20%7B%20if%20%28ourStyleSheet.disabled%29%20%7B%20return%3B%20%7D%20mutations.forEach%28function%28mutation%29%20%7B%20if%20%28%21mutation.target.hasAttribute%28%27style%27%29%20%7C%7C%20mutation.target.id%20%3D%3D%3D%20%27xxxJanConsole%27%20%7C%7C%20mutation.target.xxxJanReadableAllowStyle%29%20%7B%20return%3B%20%7D%20console.log%28%27Readable%2B%2B%3A%20removing%20%22style%22%20attribute%20set%20while%20in%20Readable%2B%2B%20mode%20on%20element%20%27%2C%20mutation.target%29%3B%20mutation.target.removeAttribute%28mutation.attributeName%29%3B%20%7D%29%3B%20%7D%29%3B%20observer.observe%28document%2C%20%7B%20attributes%3A%20true%2C%20attributeFilter%3A%20%5B%27style%27%5D%2C%20subtree%3A%20true%20%7D%29%3B%20%7D%20%20toArray%28document.querySelectorAll%28%27img.b-lazy%5Bdata-src%2A%3D%22%7C%22%5D%27%29%29.forEach%28function%20%28img%29%20%7B%20var%20attribute%20%3D%20%27data-src%27%3B%20var%20sources%20%3D%20img.getAttribute%28attribute%29.split%28%27%7C%27%29%3B%20img.src%20%3D%20sources.pop%28%29%3B%20img.removeAttribute%28attribute%29%3B%20%7D%29%3B%20%20toArray%28document.querySelectorAll%28%27img%5Bdata-src%5D%20%2B%20noscript%27%29%29.forEach%28function%20%28noscript%29%20%7B%20var%20img%20%3D%20noscript.previousElementSibling%3B%20var%20placeholder%20%3D%20img.previousElementSibling%3B%20if%20%28placeholder%20%26%26%20placeholder.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27svg%27%29%20%7B%20placeholder.parentNode.removeChild%28placeholder%29%3B%20%7D%20img.outerHTML%20%3D%20noscript.textContent%3B%20noscript.parentNode.removeChild%28noscript%29%3B%20%7D%29%3B%20%20%5B%20%27data-original%27%2C%20%27data-lazyload%27%2C%20%27data-lazy-src%27%2C%20%27data-full-src%27%2C%20%27data-src%27%20%5D.forEach%28function%20%28attribute%29%20%7B%20toArray%28document.querySelectorAll%28%27img%5B%27%20%2B%20attribute%20%2B%20%27%5D%27%29%29.forEach%28function%20%28img%29%20%7B%20img.src%20%3D%20img.getAttribute%28attribute%29%3B%20img.removeAttribute%28attribute%29%3B%20%7D%29%3B%20%7D%29%3B%20%20%5B%5D.forEach.call%28document.querySelectorAll%28%27audio%2C%20video%27%29%2C%20function%20%28element%29%20%7B%20element.controls%20%3D%20true%3B%20%7D%29%3B%20%20toArray%28document.querySelectorAll%28%27li%20%3Aempty%3Anot%28img%29%3Anot%28input%29%27%29%29.forEach%28function%20%28elem%29%20%7B%20while%20%28elem.tagName%20%26%26%20elem.tagName.toLowerCase%28%29%20%21%3D%3D%20%27li%27%29%20%7B%20elem%20%3D%20elem.parentNode%3B%20%7D%20if%20%28elem.textContent.trim%28%29%20%3D%3D%3D%20%27%27%20%26%26%20%21elem.querySelector%28%27img%2C%20input%27%29%29%20%7B%20addClass%28elem%2C%20%27jancss-emptyish%27%29%3B%20%7D%20%7D%29%3B%20%20toArray%28document.querySelectorAll%28elementsToRemoveSelectors.join%28%27%2C%20%27%29%29%29.forEach%28function%20%28element%29%20%7B%20element.parentNode.removeChild%28element%29%3B%20%7D%29%3B%20%20if%20%28%21ourStyleSheet%29%20%7B%20%28ourStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.id%20%3D%20%27jancss%27%3B%20ourStyleSheet.innerHTML%20%3D%20css%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28ourStyleSheet%29%3B%20ourStyleSheet.disabled%20%3D%20true%3B%20%20function%20columnMouseHandler%28e%29%20%7B%20if%20%28%21%2F%5Et%5Bdh%5D%24%2Fi.test%28%27%27%20%2B%20e.target.tagName%29%29%20%7B%20return%3B%20%7D%20var%20targetCell%20%3D%20e.target%2C%20nthChild%20%3D%20targetCell.cellIndex%20%2B%201%2C%20table%20%3D%20targetCell.parentNode%3B%20while%20%28table%20%26%26%20table.tagName.toLowerCase%28%29%20%21%3D%3D%20%27table%27%29%20%7B%20table%20%3D%20table.parentNode%3B%20%7D%20var%20activeColumnClassName%20%3D%20%27jancss-active-col%27%3B%20toArray%28table.querySelectorAll%28%27td%3Anth-child%28%27%20%2B%20nthChild%20%2B%20%27%29%27%29%29.forEach%28function%20%28cell%29%20%7B%20if%20%28e.type%20%3D%3D%3D%20%27mouseenter%27%29%20%7B%20addClass%28cell%2C%20activeColumnClassName%29%3B%20%7D%20else%20%7B%20removeClass%28cell%2C%20activeColumnClassName%29%3B%20%7D%20%7D%29%3B%20%7D%20%20toArray%28document.querySelectorAll%28%27table%27%29%29.forEach%28function%20%28table%29%20%7B%20var%20isTableForData%20%3D%20true%3B%20%20if%20%28table.querySelector%28%27table%27%29%29%20%7B%20var%20isWikipediaInfobox%20%3D%20%28%27%20%27%20%2B%20table.className%20%2B%20%27%20%27%29.match%28%2Finfobox%2F%29%3B%20if%20%28%21isWikipediaInfobox%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20contains%20other%20TABLEs%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%7D%20%20else%20if%20%28document.compatMode%20%3D%3D%3D%20%27BackCompat%27%20%26%26%20document.documentElement.scrollHeight%20%3E%20window.innerHeight%20%26%26%20table.scrollHeight%20%3E%203%2F4%20%2A%20document.documentElement.scrollHeight%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20seems%20pretty%20high%20in%20this%20document%20in%20quirks%20mode%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%20else%20if%20%28table.rows.length%20%3E%203%29%20%7B%20var%20numCellsPerRow%20%3D%20%5B%5D%3B%20toArray%28table.rows%29.forEach%28function%20%28row%29%20%7B%20if%20%28numCellsPerRow.indexOf%28row.cells.length%29%20%3D%3D%3D%20-1%29%20%7B%20numCellsPerRow.push%28row.cells.length%29%3B%20%7D%20%7D%29%3B%20%20if%20%28document.compatMode%20%3D%3D%3D%20%27BackCompat%27%20%26%26%20numCellsPerRow.length%20%3E%3D%203%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20has%20a%20lot%20of%20differing%20cell%20counts%20in%20this%20document%20in%20quirks%20mode%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%20else%20if%20%28numCellsPerRow.length%20%3D%3D%3D%201%20%26%26%20numCellsPerRow%5B0%5D%20%3D%3D%3D%201%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20has%20only%20rows%20of%20one%20cell%20each%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%7D%20if%20%28isTableForData%29%20%7B%20addClass%28table%2C%20%27jancss-probably-for-data%27%29%3B%20table.addEventListener%28%27mouseenter%27%2C%20columnMouseHandler%2C%20true%29%3B%20table.addEventListener%28%27mouseleave%27%2C%20columnMouseHandler%2C%20true%29%3B%20%7D%20else%20%7B%20addClass%28table%2C%20%27jancss-probably-for-layout%27%29%3B%20%7D%20%7D%29%3B%20%20if%20%28document.querySelector%28%27.prettyprint%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fprettify.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20else%20if%20%28document.querySelector%28%27.syntaxhighlighter%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fsyntaxhighlighter.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20else%20if%20%28document.querySelector%28%27.highlight%20.c%2C%20.highlight%20.k%2C%20.highlight%20.m%2C%20.highlight%20.s%2C%20.highlight%20.w%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fpygments.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20else%20if%20%28document.querySelector%28%27code%5Bclass%2A%3D%22language-%22%5D%20.token.punctuation%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fprism.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20%20structureElementsForLayoutSelectors.forEach%28function%20%28selector%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28selector%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20xPathResult.snapshotLength%3B%20i%2B%2B%29%20%7B%20var%20elem%20%3D%20xPathResult.snapshotItem%28i%29%3B%20addClass%28elem%2C%20%27jancss-probably-layout%27%29%3B%20%7D%20%7D%29%3B%20%20layoutElementsForStructureSelectors.forEach%28function%20%28selector%29%20%7B%20toArray%28document.querySelectorAll%28selector%29%29.forEach%28function%20%28elem%29%20%7B%20if%20%28elem.tagName.toLowerCase%28%29%20%21%3D%3D%20%27b%27%29%20%7B%20elem%20%3D%20elem.previousElementSibling%3B%20%7D%20addClass%28elem%2C%20%27jancss-probably-structure%27%29%3B%20%7D%29%3B%20%7D%29%3B%20%7D%20%20function%20toggleStyles%28%29%20%7B%20ourStyleSheet.disabled%20%3D%20%21ourStyleSheet.disabled%3B%20if%20%28prettyPrintStyleSheet%29%20%7B%20prettyPrintStyleSheet.disabled%20%3D%20ourStyleSheet.disabled%3B%20%7D%20allStyleSheets.forEach%28function%20%28styleSheet%2C%20i%29%20%7B%20if%20%28styleSheet.ownerNode%20%21%3D%3D%20ourStyleSheet%20%26%26%20%21syntaxHighlightHrefRegex.test%28styleSheet.href%29%29%20%7B%20%20if%20%28ourStyleSheet%5B%27jancss-originally-disabled-%27%20%2B%20i%5D%20%3D%3D%3D%20undefined%29%20%7B%20ourStyleSheet%5B%27jancss-originally-disabled-%27%20%2B%20i%5D%20%3D%20styleSheet.disabled%3B%20%7D%20if%20%28ourStyleSheet.disabled%29%20%7B%20%20styleSheet.disabled%20%3D%20ourStyleSheet%5B%27jancss-originally-disabled-%27%20%2B%20i%5D%3B%20%7D%20else%20%7B%20%20styleSheet.disabled%20%3D%20true%3B%20try%20%7B%20%20if%20%28styleSheet.cssRules%5B0%5D%20%26%26%20styleSheet.cssRules%5B0%5D.type%20%3D%3D%3D%20styleSheet.cssRules%5B0%5D.IMPORT_RULE%20%26%26%20styleSheet.cssRules%5B0%5D.href%29%20%7B%20styleSheet.disabled%20%3D%20%21styleSheet.cssRules%5B0%5D.href.match%28%2F%5Ehttps%3A%5C%2F%5C%2Fjanmoesen%5C.github%5C.io%5C%2F%2F%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%7D%20%7D%29%3B%20%20all.forEach%28function%20%28elem%2C%20i%29%20%7B%20attrs.forEach%28function%20%28attr%2C%20j%29%20%7B%20%20if%20%28%21%28matches%20%3D%20attr.match%28%2F%28%5B%5E%40%5D%2B%29%40%28%5B%5E%40%5D%2B%29%2F%29%29%20%7C%7C%20%28elem.tagName%20%26%26%20elem.tagName.toLowerCase%28%29%20%3D%3D%20matches%5B1%5D%29%29%20%7B%20attr%20%3D%20matches%20%3F%20matches%5B2%5D%20%3A%20attr%3B%20var%20names%20%3D%20%7B%20enabled%3A%20attr%2C%20disabled%3A%20%27jancss-%27%20%2B%20attr%20%7D%3B%20if%20%28elem.hasAttribute%28names.enabled%29%29%20%7B%20elem.setAttribute%28names.disabled%2C%20elem.getAttribute%28names.enabled%29%29%3B%20elem.removeAttribute%28names.enabled%29%3B%20%7D%20else%20if%20%28elem.hasAttribute%28names.disabled%29%29%20%7B%20elem.setAttribute%28names.enabled%2C%20elem.getAttribute%28names.disabled%29%29%3B%20elem.removeAttribute%28names.disabled%29%3B%20%7D%20%7D%20%7D%29%3B%20%7D%29%3B%20%20var%20disabledStyleAttr%20%3D%20%27jancss-style%27%3B%20toArray%28document.querySelectorAll%28%27.wp_syntax%20%5B%27%20%2B%20disabledStyleAttr%20%2B%20%27%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20elem.setAttribute%28%27style%27%2C%20elem.getAttribute%28disabledStyleAttr%29%29%3B%20elem.removeAttribute%28disabledStyleAttr%29%3B%20%7D%29%3B%20%7D%20%20function%20findContentElement%28%29%20%7B%20%20if%20%28location.hash%29%20%7B%20var%20inPageAnchor%2C%20inPageAnchorSelectors%20%3D%20%5B%20%27a%5Bname%3D%22%27%20%2B%20location.hash.substring%281%29%20%2B%20%27%22%5D%27%2C%20location.hash.replace%28%2F%5C.%2Fg%2C%20%27%5C%5C.%27%29%20%5D%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20inPageAnchorSelectors.length%3B%20i%2B%2B%29%20%7B%20try%20%7B%20if%20%28%28inPageAnchor%20%3D%20document.querySelector%28inPageAnchorSelectors%5Bi%5D%29%29%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20found%20in-page%20anchor%20based%20on%20location.hash%3A%20%27%2C%20inPageAnchor%29%3B%20return%20inPageAnchor%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%7D%20%20var%20headerInPageTitle%3B%20var%20charactersToIgnore%20%3D%20%2F%5B%5EA-Za-z%5CxAA%5CxB5%5CxBA%5CxC0-%5CxD6%5CxD8-%5CxF6%5CxF8-%5Cu02C1%5Cu02C6-%5Cu02D1%5Cu02E0-%5Cu02E4%5Cu02EC%5Cu02EE%5Cu0370-%5Cu0374%5Cu0376%5Cu0377%5Cu037A-%5Cu037D%5Cu037F%5Cu0386%5Cu0388-%5Cu038A%5Cu038C%5Cu038E-%5Cu03A1%5Cu03A3-%5Cu03F5%5Cu03F7-%5Cu0481%5Cu048A-%5Cu052F%5Cu0531-%5Cu0556%5Cu0559%5Cu0561-%5Cu0587%5Cu05D0-%5Cu05EA%5Cu05F0-%5Cu05F2%5Cu0620-%5Cu064A%5Cu066E%5Cu066F%5Cu0671-%5Cu06D3%5Cu06D5%5Cu06E5%5Cu06E6%5Cu06EE%5Cu06EF%5Cu06FA-%5Cu06FC%5Cu06FF%5Cu0710%5Cu0712-%5Cu072F%5Cu074D-%5Cu07A5%5Cu07B1%5Cu07CA-%5Cu07EA%5Cu07F4%5Cu07F5%5Cu07FA%5Cu0800-%5Cu0815%5Cu081A%5Cu0824%5Cu0828%5Cu0840-%5Cu0858%5Cu08A0-%5Cu08B4%5Cu0904-%5Cu0939%5Cu093D%5Cu0950%5Cu0958-%5Cu0961%5Cu0971-%5Cu0980%5Cu0985-%5Cu098C%5Cu098F%5Cu0990%5Cu0993-%5Cu09A8%5Cu09AA-%5Cu09B0%5Cu09B2%5Cu09B6-%5Cu09B9%5Cu09BD%5Cu09CE%5Cu09DC%5Cu09DD%5Cu09DF-%5Cu09E1%5Cu09F0%5Cu09F1%5Cu0A05-%5Cu0A0A%5Cu0A0F%5Cu0A10%5Cu0A13-%5Cu0A28%5Cu0A2A-%5Cu0A30%5Cu0A32%5Cu0A33%5Cu0A35%5Cu0A36%5Cu0A38%5Cu0A39%5Cu0A59-%5Cu0A5C%5Cu0A5E%5Cu0A72-%5Cu0A74%5Cu0A85-%5Cu0A8D%5Cu0A8F-%5Cu0A91%5Cu0A93-%5Cu0AA8%5Cu0AAA-%5Cu0AB0%5Cu0AB2%5Cu0AB3%5Cu0AB5-%5Cu0AB9%5Cu0ABD%5Cu0AD0%5Cu0AE0%5Cu0AE1%5Cu0AF9%5Cu0B05-%5Cu0B0C%5Cu0B0F%5Cu0B10%5Cu0B13-%5Cu0B28%5Cu0B2A-%5Cu0B30%5Cu0B32%5Cu0B33%5Cu0B35-%5Cu0B39%5Cu0B3D%5Cu0B5C%5Cu0B5D%5Cu0B5F-%5Cu0B61%5Cu0B71%5Cu0B83%5Cu0B85-%5Cu0B8A%5Cu0B8E-%5Cu0B90%5Cu0B92-%5Cu0B95%5Cu0B99%5Cu0B9A%5Cu0B9C%5Cu0B9E%5Cu0B9F%5Cu0BA3%5Cu0BA4%5Cu0BA8-%5Cu0BAA%5Cu0BAE-%5Cu0BB9%5Cu0BD0%5Cu0C05-%5Cu0C0C%5Cu0C0E-%5Cu0C10%5Cu0C12-%5Cu0C28%5Cu0C2A-%5Cu0C39%5Cu0C3D%5Cu0C58-%5Cu0C5A%5Cu0C60%5Cu0C61%5Cu0C85-%5Cu0C8C%5Cu0C8E-%5Cu0C90%5Cu0C92-%5Cu0CA8%5Cu0CAA-%5Cu0CB3%5Cu0CB5-%5Cu0CB9%5Cu0CBD%5Cu0CDE%5Cu0CE0%5Cu0CE1%5Cu0CF1%5Cu0CF2%5Cu0D05-%5Cu0D0C%5Cu0D0E-%5Cu0D10%5Cu0D12-%5Cu0D3A%5Cu0D3D%5Cu0D4E%5Cu0D5F-%5Cu0D61%5Cu0D7A-%5Cu0D7F%5Cu0D85-%5Cu0D96%5Cu0D9A-%5Cu0DB1%5Cu0DB3-%5Cu0DBB%5Cu0DBD%5Cu0DC0-%5Cu0DC6%5Cu0E01-%5Cu0E30%5Cu0E32%5Cu0E33%5Cu0E40-%5Cu0E46%5Cu0E81%5Cu0E82%5Cu0E84%5Cu0E87%5Cu0E88%5Cu0E8A%5Cu0E8D%5Cu0E94-%5Cu0E97%5Cu0E99-%5Cu0E9F%5Cu0EA1-%5Cu0EA3%5Cu0EA5%5Cu0EA7%5Cu0EAA%5Cu0EAB%5Cu0EAD-%5Cu0EB0%5Cu0EB2%5Cu0EB3%5Cu0EBD%5Cu0EC0-%5Cu0EC4%5Cu0EC6%5Cu0EDC-%5Cu0EDF%5Cu0F00%5Cu0F40-%5Cu0F47%5Cu0F49-%5Cu0F6C%5Cu0F88-%5Cu0F8C%5Cu1000-%5Cu102A%5Cu103F%5Cu1050-%5Cu1055%5Cu105A-%5Cu105D%5Cu1061%5Cu1065%5Cu1066%5Cu106E-%5Cu1070%5Cu1075-%5Cu1081%5Cu108E%5Cu10A0-%5Cu10C5%5Cu10C7%5Cu10CD%5Cu10D0-%5Cu10FA%5Cu10FC-%5Cu1248%5Cu124A-%5Cu124D%5Cu1250-%5Cu1256%5Cu1258%5Cu125A-%5Cu125D%5Cu1260-%5Cu1288%5Cu128A-%5Cu128D%5Cu1290-%5Cu12B0%5Cu12B2-%5Cu12B5%5Cu12B8-%5Cu12BE%5Cu12C0%5Cu12C2-%5Cu12C5%5Cu12C8-%5Cu12D6%5Cu12D8-%5Cu1310%5Cu1312-%5Cu1315%5Cu1318-%5Cu135A%5Cu1380-%5Cu138F%5Cu13A0-%5Cu13F5%5Cu13F8-%5Cu13FD%5Cu1401-%5Cu166C%5Cu166F-%5Cu167F%5Cu1681-%5Cu169A%5Cu16A0-%5Cu16EA%5Cu16F1-%5Cu16F8%5Cu1700-%5Cu170C%5Cu170E-%5Cu1711%5Cu1720-%5Cu1731%5Cu1740-%5Cu1751%5Cu1760-%5Cu176C%5Cu176E-%5Cu1770%5Cu1780-%5Cu17B3%5Cu17D7%5Cu17DC%5Cu1820-%5Cu1877%5Cu1880-%5Cu18A8%5Cu18AA%5Cu18B0-%5Cu18F5%5Cu1900-%5Cu191E%5Cu1950-%5Cu196D%5Cu1970-%5Cu1974%5Cu1980-%5Cu19AB%5Cu19B0-%5Cu19C9%5Cu1A00-%5Cu1A16%5Cu1A20-%5Cu1A54%5Cu1AA7%5Cu1B05-%5Cu1B33%5Cu1B45-%5Cu1B4B%5Cu1B83-%5Cu1BA0%5Cu1BAE%5Cu1BAF%5Cu1BBA-%5Cu1BE5%5Cu1C00-%5Cu1C23%5Cu1C4D-%5Cu1C4F%5Cu1C5A-%5Cu1C7D%5Cu1CE9-%5Cu1CEC%5Cu1CEE-%5Cu1CF1%5Cu1CF5%5Cu1CF6%5Cu1D00-%5Cu1DBF%5Cu1E00-%5Cu1F15%5Cu1F18-%5Cu1F1D%5Cu1F20-%5Cu1F45%5Cu1F48-%5Cu1F4D%5Cu1F50-%5Cu1F57%5Cu1F59%5Cu1F5B%5Cu1F5D%5Cu1F5F-%5Cu1F7D%5Cu1F80-%5Cu1FB4%5Cu1FB6-%5Cu1FBC%5Cu1FBE%5Cu1FC2-%5Cu1FC4%5Cu1FC6-%5Cu1FCC%5Cu1FD0-%5Cu1FD3%5Cu1FD6-%5Cu1FDB%5Cu1FE0-%5Cu1FEC%5Cu1FF2-%5Cu1FF4%5Cu1FF6-%5Cu1FFC%5Cu2071%5Cu207F%5Cu2090-%5Cu209C%5Cu2102%5Cu2107%5Cu210A-%5Cu2113%5Cu2115%5Cu2119-%5Cu211D%5Cu2124%5Cu2126%5Cu2128%5Cu212A-%5Cu212D%5Cu212F-%5Cu2139%5Cu213C-%5Cu213F%5Cu2145-%5Cu2149%5Cu214E%5Cu2183%5Cu2184%5Cu2C00-%5Cu2C2E%5Cu2C30-%5Cu2C5E%5Cu2C60-%5Cu2CE4%5Cu2CEB-%5Cu2CEE%5Cu2CF2%5Cu2CF3%5Cu2D00-%5Cu2D25%5Cu2D27%5Cu2D2D%5Cu2D30-%5Cu2D67%5Cu2D6F%5Cu2D80-%5Cu2D96%5Cu2DA0-%5Cu2DA6%5Cu2DA8-%5Cu2DAE%5Cu2DB0-%5Cu2DB6%5Cu2DB8-%5Cu2DBE%5Cu2DC0-%5Cu2DC6%5Cu2DC8-%5Cu2DCE%5Cu2DD0-%5Cu2DD6%5Cu2DD8-%5Cu2DDE%5Cu2E2F%5Cu3005%5Cu3006%5Cu3031-%5Cu3035%5Cu303B%5Cu303C%5Cu3041-%5Cu3096%5Cu309D-%5Cu309F%5Cu30A1-%5Cu30FA%5Cu30FC-%5Cu30FF%5Cu3105-%5Cu312D%5Cu3131-%5Cu318E%5Cu31A0-%5Cu31BA%5Cu31F0-%5Cu31FF%5Cu3400-%5Cu4DB5%5Cu4E00-%5Cu9FD5%5CuA000-%5CuA48C%5CuA4D0-%5CuA4FD%5CuA500-%5CuA60C%5CuA610-%5CuA61F%5CuA62A%5CuA62B%5CuA640-%5CuA66E%5CuA67F-%5CuA69D%5CuA6A0-%5CuA6E5%5CuA717-%5CuA71F%5CuA722-%5CuA788%5CuA78B-%5CuA7AD%5CuA7B0-%5CuA7B7%5CuA7F7-%5CuA801%5CuA803-%5CuA805%5CuA807-%5CuA80A%5CuA80C-%5CuA822%5CuA840-%5CuA873%5CuA882-%5CuA8B3%5CuA8F2-%5CuA8F7%5CuA8FB%5CuA8FD%5CuA90A-%5CuA925%5CuA930-%5CuA946%5CuA960-%5CuA97C%5CuA984-%5CuA9B2%5CuA9CF%5CuA9E0-%5CuA9E4%5CuA9E6-%5CuA9EF%5CuA9FA-%5CuA9FE%5CuAA00-%5CuAA28%5CuAA40-%5CuAA42%5CuAA44-%5CuAA4B%5CuAA60-%5CuAA76%5CuAA7A%5CuAA7E-%5CuAAAF%5CuAAB1%5CuAAB5%5CuAAB6%5CuAAB9-%5CuAABD%5CuAAC0%5CuAAC2%5CuAADB-%5CuAADD%5CuAAE0-%5CuAAEA%5CuAAF2-%5CuAAF4%5CuAB01-%5CuAB06%5CuAB09-%5CuAB0E%5CuAB11-%5CuAB16%5CuAB20-%5CuAB26%5CuAB28-%5CuAB2E%5CuAB30-%5CuAB5A%5CuAB5C-%5CuAB65%5CuAB70-%5CuABE2%5CuAC00-%5CuD7A3%5CuD7B0-%5CuD7C6%5CuD7CB-%5CuD7FB%5CuF900-%5CuFA6D%5CuFA70-%5CuFAD9%5CuFB00-%5CuFB06%5CuFB13-%5CuFB17%5CuFB1D%5CuFB1F-%5CuFB28%5CuFB2A-%5CuFB36%5CuFB38-%5CuFB3C%5CuFB3E%5CuFB40%5CuFB41%5CuFB43%5CuFB44%5CuFB46-%5CuFBB1%5CuFBD3-%5CuFD3D%5CuFD50-%5CuFD8F%5CuFD92-%5CuFDC7%5CuFDF0-%5CuFDFB%5CuFE70-%5CuFE74%5CuFE76-%5CuFEFC%5CuFF21-%5CuFF3A%5CuFF41-%5CuFF5A%5CuFF66-%5CuFFBE%5CuFFC2-%5CuFFC7%5CuFFCA-%5CuFFCF%5CuFFD2-%5CuFFD7%5CuFFDA-%5CuFFDC%5D%2B%2Fg%3B%20function%20normalizeText%28str%29%20%7B%20return%20str%20.replace%28%2F%5CxAD%2Fg%2C%20%27%27%29%20.replace%28charactersToIgnore%2C%20%27%20%27%29%20.trim%28%29%20.toLowerCase%28%29%3B%20%7D%20var%20metaTitleElement%20%3D%20document.querySelector%28%27meta%5Bproperty%3D%22og%3Atitle%22%5D%2C%20meta%5Bproperty%3D%22twitter%3Atitle%22%5D%2C%20meta%5Bname%3D%22title%22%5D%27%29%3B%20var%20normalizedMetaTitle%20%3D%20metaTitleElement%20%26%26%20normalizeText%28metaTitleElement.content%29%3B%20var%20normalizedPageTitle%20%3D%20normalizeText%28document.title%29%3B%20headerSelectors.forEach%28function%20%28selector%29%20%7B%20toArray%28document.querySelectorAll%28selector%29%29.forEach%28function%20%28element%29%20%7B%20var%20normalizedText%20%3D%20normalizeText%28element.textContent%29%3B%20%20if%20%28%21normalizedText.length%29%20%7B%20return%3B%20%7D%20%20var%20boundingRect%20%3D%20element.getBoundingClientRect%28%29%3B%20if%20%28%21boundingRect.width%20%7C%7C%20%21boundingRect.height%29%20%7B%20return%3B%20%7D%20%20if%20%28boundingRect.top%20%2B%20window.scrollY%20%3E%20window.innerHeight%20%2A%201.5%29%20%7B%20return%3B%20%7D%20%20if%20%28%20normalizedPageTitle.length%20%3C%20normalizedText.length%20%26%26%20%28%21metaTitleElement%20%7C%7C%20normalizedMetaTitle.length%20%3C%20normalizedText.length%29%20%29%20%7B%20return%3B%20%7D%20%20var%20substringIndex%20%3D%20normalizedPageTitle.indexOf%28normalizedText%29%3B%20if%20%28substringIndex%20%3D%3D%3D%20-1%20%26%26%20metaTitleElement%29%20%7B%20substringIndex%20%3D%20normalizedMetaTitle.indexOf%28normalizedText%29%3B%20%7D%20if%20%28substringIndex%20%3D%3D%3D%20-1%29%20%7B%20return%3B%20%7D%20%20if%20%28typeof%20element.closest%20%3D%3D%3D%20%27function%27%20%26%26%20element.closest%28ancestorsForHeadersToIgnoreSelectors.join%28%27%2C%20%27%29%29%29%20%7B%20return%3B%20%7D%20headerInPageTitle%20%3D%20element%3B%20%7D%29%3B%20%7D%29%3B%20if%20%28headerInPageTitle%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20found%20suitable%20header%20element%20whose%20text%20appears%20in%20the%20page%20title%3A%20%27%2C%20headerInPageTitle%29%3B%20return%20headerInPageTitle%3B%20%7D%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20contentSelectors.length%3B%20i%2B%2B%29%20%7B%20try%20%7B%20var%20element%20%3D%20document.querySelector%28contentSelectors%5Bi%5D%29%3B%20%20if%20%28element%20%26%26%20%28element.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27a%27%20%7C%7C%20element.offsetWidth%20%7C%7C%20element.offsetHeight%29%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20found%20matching%20selector%20for%20content%20element%3A%20%27%20%2B%20contentSelectors%5Bi%5D%20%2B%20%27%5CnElement%3A%20%27%2C%20element%29%3B%20return%20element%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20bad%20selector%20for%20content%20element%3A%20%27%20%2B%20contentSelectors%5Bi%5D%20%2B%20%27%5CnException%3A%20%27%20%2B%20e%29%3B%20%7D%20%7D%20%7D%20%20var%20contentElement%2C%20shouldScrollContentIntoView%20%3D%20false%3B%20var%20selection%20%3D%20document.getSelection%20%26%26%20document.getSelection%28%29%3B%20if%20%28selection%20%26%26%20selection.anchorNode%20%26%26%20%28selection%20%2B%20%27%27%29.length%29%20%7B%20%20shouldScrollContentIntoView%20%3D%20true%3B%20contentElement%20%3D%20selection.anchorNode%3B%20while%20%28contentElement.nodeType%20%21%3D%3D%20contentElement.ELEMENT_NODE%20%26%26%20contentElement.parentNode%29%20%7B%20contentElement%20%3D%20contentElement.parentNode%3B%20%7D%20console.log%28%27Readable%2B%2B%3A%20found%20selected%20element%20to%20scroll%20into%20view%3A%20%27%2C%20contentElement%29%3B%20%7D%20else%20if%20%28ourStyleSheet.disabled%20%26%26%20%28contentElement%20%3D%20findContentElement%28%29%29%29%20%7B%20%20var%20tmpElement%20%3D%20contentElement%2C%20contentTop%20%3D%200%3B%20do%20%7B%20contentTop%20%2B%3D%20tmpElement.offsetTop%3B%20%7D%20while%20%28%28tmpElement%20%3D%20tmpElement.offsetParent%29%29%3B%20shouldScrollContentIntoView%20%3D%20%21window.scrollY%20%7C%7C%20Math.abs%28window.scrollY%20-%20contentTop%29%20%3C%2020%3B%20%7D%20%20toggleStyles%28%29%3B%20%20shouldScrollContentIntoView%20%26%26%20contentElements.push%28contentElement%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B%20%20var%20contentElement%3B%20while%20%28%28contentElement%20%3D%20contentElements.pop%28%29%29%29%20%7B%20contentElement.scrollIntoView%28%7B%20behavior%3A%20%27smooth%27%2C%20block%3A%20%27start%27%2C%20inline%3A%20%27start%27%20%7D%29%3B%20%7D%3B%20%7D%29%28%29%3B/* ./_toolbar/00-read.js */" ADD_DATE="1460554292" LAST_MODIFIED="1460621110" SHORTCUTURL="">Readable++</A>
<DD><P>Make a page more readable by disabling all page styling and applying a
bare minimum of our own. Go to the first thing that looks like the start
of the actual content so no time is wasted scrolling past initial
navigation etc.</P></DD>
<DT><A HREF="javascript:%28function%20prev%28%29%20%7B%20var%20symbols%20%3D%20%5B%20%27%3C%3C%27%2C%20%27%C2%AB%27%2C%20%27%E2%86%90%27%2C%20%27%E2%87%90%27%2C%20%27%E2%8E%97%27%20%5D%3B%20var%20keywords%20%3D%20symbols.concat%28%5B%20%27PREVIOUS%27%2C%20%27Previous%27%2C%20%27previous%27%2C%20%27PREV%21PREVIEW%27%2C%20%27Prev%21Preview%27%2C%20%27prev%21preview%27%2C%20%27OLDER%21FOLDER%27%2C%20%27Older%21Folder%27%2C%20%27older%21folder%27%2C%20%27VORIGE%27%2C%20%27Vorige%27%2C%20%27vorige%27%2C%20%27OUDER%27%2C%20%27Ouder%27%2C%20%27ouder%27%2C%20%27PRECEDENT%27%2C%20%27PR%C3%89C%C3%89DENT%27%2C%20%27Pr%C3%A9c%C3%A9dent%27%2C%20%27pr%C3%A9c%C3%A9dent%27%2C%20%5D%29%3B%20var%20identifiers%20%3D%20%5B%20%27prev%27%2C%20%27previous%27%2C%20%27prevArticle%27%2C%20%27previousArticle%27%2C%20%27prevPost%27%2C%20%27previousPost%27%2C%20%27prevLink%27%2C%20%27previousLink%27%2C%20%27navi-prev%27%20%5D%3B%20var%20monthNames%20%3D%20%5B%20%27Jan%27%2C%20%27Feb%27%2C%20%27Mar%27%2C%20%27Apr%27%2C%20%27May%27%2C%20%27Jun%27%2C%20%27Jul%27%2C%20%27Aug%27%2C%20%27Sep%27%2C%20%27Oct%27%2C%20%27Nov%27%2C%20%27Dec%27%20%5D%3B%20var%20selectors%3B%20var%20newUrl%3B%20%20selectors%20%3D%20%5B%20%27link%5Brel%3D%22prev%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%2C%20a%5Brel%3D%22prev%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%20%5D%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27a%23%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20selectors.push%28%27a.%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20var%20mustContain%20%3D%20text.replace%28%2F%21.%2A%2F%2C%20%27%27%29%3B%20var%20mustNotContain%20%3D%20mustContain%20%21%3D%3D%20text%20%26%26%20text.replace%28%2F.%2A%21%2F%2C%20%27%27%29%3B%20var%20selector%20%3D%20%27%2F%2Fa%5B%40href%5D%5B%40href%20%21%3D%20%22%23%22%5D%5Bnot%28starts-with%28%40href%2C%20%22javascript%3A%22%29%29%5D%5Bcontains%28.%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%20and%20string-length%28normalize-space%28substring-before%28.%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%29%29%20%3C%208%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20selector%20%2B%3D%20%27%5Bnot%28contains%28.%2C%20%22%27%20%2B%20mustNotContain%20%2B%20%27%22%29%29%5D%27%3B%20%7D%20selectors.push%28selector%29%3B%20var%20titleSelector%20%3D%20%27a%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%3Anot%28%5Bhref%5E%3D%22javascript%3A%22%5D%29%5Btitle%2A%3D%22%27%20%2B%20mustContain%20%2B%20%27%22%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20titleSelector%20%2B%3D%20%27%3Anot%28%5Btitle%2A%3D%22%27%20%2B%20mustNotContain%20%2B%20%27%22%5D%29%27%3B%20%7D%20selectors.push%28titleSelector%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20var%20mustContain%20%3D%20text.replace%28%2F%21.%2A%2F%2C%20%27%27%29%2C%20mustNotContain%20%3D%20mustContain%20%21%3D%3D%20text%20%26%26%20text.replace%28%2F.%2A%21%2F%2C%20%27%27%29%3B%20var%20selector%20%3D%20%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40alt%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%5D%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20selector%20%2B%3D%20%27%5Bnot%28img%5Bcontains%28%40alt%2C%20%22%27%20%2B%20mustNotContain%20%2B%20%27%22%29%5D%29%5D%27%3B%20%7D%20selectors.push%28selector%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20var%20mustContain%20%3D%20text.replace%28%2F%21.%2A%2F%2C%20%27%27%29%2C%20mustNotContain%20%3D%20mustContain%20%21%3D%3D%20text%20%26%26%20text.replace%28%2F.%2A%21%2F%2C%20%27%27%29%3B%20var%20selector%20%3D%20%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40src%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%5D%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20selector%20%2B%3D%20%27%5Bnot%28img%5Bcontains%28%40src%2C%20%22%27%20%2B%20mustNotContain%20%2B%20%27%22%29%5D%29%5D%27%3B%20%7D%20selectors.push%28selector%29%3B%20%7D%29%3B%20%20function%20processSelectors%28selectors%29%20%7B%20function%20getLastXPathResult%28result%29%20%7B%20return%20result.snapshotItem%28result.snapshotLength%20-%201%29%3B%20%7D%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20selectors.length%3B%20i%2B%2B%29%20%7B%20%20link%20%3D%20selectors%5Bi%5D.substring%280%2C%202%29%20%3D%3D%3D%20%27%2F%2F%27%20%3F%20getLastXPathResult%28document.evaluate%28selectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%29%20%3A%20Array.prototype.slice.call%28document.querySelectorAll%28selectors%5Bi%5D%29%29.pop%28%29%3B%20if%20%28link%29%20%7B%20console.log%28%27%C2%AB%20Previous%3A%20Matching%20selector%3A%20%27%20%2B%20selectors%5Bi%5D%20%2B%20%27%5CnFound%20link%3A%20%27%2C%20link%29%3B%20return%20link.href%3B%20%7D%20%7D%20%7D%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20uri%20%3D%20decodeURIComponent%28location.pathname%20%2B%20location.search%20%2B%20location.hash%29%3B%20var%20yearPattern%20%3D%20%2720%5B0-9%5D%5B0-9%5D%27%3B%20var%20monthPattern%20%3D%20monthNames.concat%28%5B%27%28%3F%3A0%3F%5B1-9%5D%29%27%2C%20%27%28%3F%3A1%5B012%5D%29%27%5D%29.join%28%27%7C%27%29%3B%20var%20dayPattern%20%3D%20%27%28%3F%3A%27%20%2B%20%5B%273%5B01%5D%27%2C%20%27%5B12%5D%5B0-9%5D%27%2C%20%270%3F%5B1-9%5D%27%5D.join%28%27%29%7C%28%3F%3A%27%29%20%2B%20%27%29%27%3B%20var%20regexp%20%3D%20new%20RegExp%28%27%28.%2A%3F%5C%5Cb%29%28%27%20%2B%20yearPattern%20%2B%20%27%29%28%5B-%2F_.%5D%3F%29%28%27%20%2B%20monthPattern%20%2B%20%27%29%5C%5C3%28%27%20%2B%20dayPattern%20%2B%20%27%29%28%5B%5E0-9%5D.%2A%29%3F%24%27%29%3B%20var%20matches%3B%20if%20%28%28matches%20%3D%20uri.match%28regexp%29%29%29%20%7B%20var%20prefix%20%3D%20matches%5B1%5D%3B%20var%20year%20%3D%20matches%5B2%5D%3B%20var%20separator%20%3D%20matches%5B3%5D%3B%20var%20month%20%3D%20matches%5B4%5D%3B%20var%20day%20%3D%20matches%5B5%5D%3B%20var%20suffix%20%3D%20typeof%20matches%5B6%5D%20%3D%3D%3D%20%27undefined%27%20%3F%20%27%27%20%3A%20matches%5B6%5D%3B%20var%20newDate%20%3D%20new%20Date%28Date.UTC%28%20parseInt%28year%2C%2010%29%2C%20month.length%20%3D%3D%3D%203%20%3F%20monthNames.indexOf%28month%29%20%3A%20parseInt%28month%2C%2010%29%20-%201%2C%20parseInt%28day%2C%2010%29%20%29%20-%2024%20%2A%2060%20%2A%2060%20%2A%201000%29%3B%20var%20newYear%20%3D%20newDate.getUTCFullYear%28%29%3B%20var%20newMonth%20%3D%20month.length%20%3D%3D%3D%203%20%3F%20monthNames%5BnewDate.getUTCMonth%28%29%5D%20%3A%20newDate.getUTCMonth%28%29%20%2B%201%3B%20var%20newDay%20%3D%20newDate.getUTCDate%28%29%3B%20if%20%28newMonth%20%3C%2010%20%26%26%20month.length%20%3D%3D%3D%202%29%20%7B%20newMonth%20%3D%20%270%27%20%2B%20newMonth%3B%20%7D%20if%20%28newDay%20%3C%2010%20%26%26%20day.length%20%3D%3D%3D%202%29%20%7B%20newDay%20%3D%20%270%27%20%2B%20newDay%3B%20%7D%20newUrl%20%3D%20prefix%20%2B%20newYear%20%2B%20separator%20%2B%20newMonth%20%2B%20separator%20%2B%20newDay%20%2B%20suffix%3B%20console.log%28%27%C2%AB%20Previous%3A%20Matching%20date%20in%20URL%3A%20%27%2C%20%5Byear%2C%20month%2C%20day%5D%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20if%20%28%28matches%20%3D%20uri.match%28%2F%28.%2A%3F%29%28%5B0-9%5D%2B%29%28%5B%5E0-9%5D%2A%29%24%2F%29%29%29%20%7B%20var%20number%20%3D%20parseInt%28matches%5B2%5D%2C%2010%29%3B%20var%20newNumber%20%3D%20number%20-%201%3B%20if%20%28matches%5B2%5D.substring%280%2C%201%29%20%3D%3D%3D%20%270%27%20%26%26%20%28newNumber%20%2B%20%27%27%29.length%20%3C%20matches%5B2%5D.length%29%20%7B%20newNumber%20%3D%20%28Math.pow%2810%2C%20matches%5B2%5D.length%29%20%2B%20%27%27%29.substring%281%20%2B%20%28newNumber%20%2B%20%27%27%29.length%29%20%2B%20newNumber%3B%20%7D%20newUrl%20%3D%20matches%5B1%5D%20%2B%20newNumber%20%2B%20matches%5B3%5D%3B%20console.log%28%27%C2%AB%20Previous%3A%20Matching%20number%20in%20URL%3B%20going%20from%20%27%2C%20matches%5B2%5D%2C%20%27%20to%20%27%2C%20newNumber%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20selectors%20%3D%20%5B%5D%3B%20%20symbols.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2F%2A%5Bcontains%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20and%20substring-after%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20%3D%20%22%22%5D%2F%2Fpreceding-sibling%3A%3Aa%27%29%3B%20%7D%29%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27%23%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20selectors.push%28%27.%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20%7D%29%3B%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20numCycles%20%3D%200%3B%20var%20icons%20%3D%20%5B%20%27%E2%97%BB%27%2C%20%27%E2%97%BC%27%20%5D%3B%20if%20%28typeof%20document.janOriginalTitle%20%3D%3D%3D%20%27undefined%27%29%20%7B%20document.janOriginalTitle%20%3D%20document.title%3B%20%7D%20%28function%20flash%28%29%20%7B%20if%20%28numCycles%20%3C%206%29%20%7B%20document.title%20%3D%20icons%5BnumCycles%20%25%20icons.length%5D%20%2B%20%27%20No%20previous%20page%3F%20%27%20%2B%20icons%5B%28numCycles%20%2B%201%29%20%25%20icons.length%5D%3B%20window.setTimeout%28flash%2C%20500%29%3B%20%7D%20else%20%7B%20document.title%20%3D%20document.janOriginalTitle%3B%20%7D%20numCycles%2B%2B%3B%20%7D%29%28%29%3B%20%7D%29%28%29%3B/* ./_toolbar/05-prev.js */" ADD_DATE="1460554292" LAST_MODIFIED="1460554292" SHORTCUTURL="">« Previous</A>
<DD><P>Go to the previous page. To do so, this bookmarklet will look:
- for <link rel="prev"> or <a rel="prev">
- for links whose text contains "Previous", ">>", etc.
e.g. <a href="/bla">Previous</a>
- for links whose (or their parents') ID or class contains "prev"
- at the URL to see if there is a date, and increases that
- at the URL to see if there is a number, and increases that
- for links whose previous sibling's text contains "Previous", ">>", etc.
e.g. « <a href="/bla">Whatever</a></P></DD>
<DT><A HREF="javascript:%28function%20next%28%29%20%7B%20var%20symbols%20%3D%20%5B%20%27%3E%3E%27%2C%20%27%C2%BB%27%2C%20%27%E2%86%92%27%2C%20%27%E2%87%92%27%2C%20%27%E2%8E%98%27%20%5D%3B%20var%20keywords%20%3D%20symbols.concat%28%5B%20%27NEXT%27%2C%20%27Next%27%2C%20%27next%27%2C%20%27NEWER%27%2C%20%27Newer%27%2C%20%27newer%27%2C%20%27VOLGENDE%27%2C%20%27Volgende%27%2C%20%27volgende%27%2C%20%27NIEUWER%27%2C%20%27Nieuwer%27%2C%20%27nieuwer%27%2C%20%27PROCHAIN%27%2C%20%27Prochain%27%2C%20%27prochain%27%2C%20%5D%29%3B%20var%20identifiers%20%3D%20%5B%20%27next%27%2C%20%27nextArticle%27%2C%20%27nextPost%27%2C%20%27nextLink%27%2C%20%27navi-next%27%20%5D%3B%20var%20monthNames%20%3D%20%5B%20%27Jan%27%2C%20%27Feb%27%2C%20%27Mar%27%2C%20%27Apr%27%2C%20%27May%27%2C%20%27Jun%27%2C%20%27Jul%27%2C%20%27Aug%27%2C%20%27Sep%27%2C%20%27Oct%27%2C%20%27Nov%27%2C%20%27Dec%27%20%5D%3B%20var%20selectors%3B%20var%20newUrl%3B%20%20selectors%20%3D%20%5B%20%27link%5Brel%3D%22next%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%2C%20a%5Brel%3D%22next%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%20%5D%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27a%23%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20selectors.push%28%27a.%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27a%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%3Anot%28%5Bhref%5E%3D%22javascript%3A%22%5D%29%5Btitle%2A%3D%22%27%20%2B%20text%20%2B%20%27%22%5D%27%29%3B%20selectors.push%28%27%2F%2Fa%5B%40href%5D%5B%40href%20%21%3D%20%22%23%22%5D%5Bnot%28starts-with%28%40href%2C%20%22javascript%3A%22%29%29%5D%5Bcontains%28.%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20and%20string-length%28normalize-space%28substring-before%28.%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%29%29%20%3C%208%5D%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40alt%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%5D%5D%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40src%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%5D%5D%27%29%3B%20%7D%29%3B%20%20function%20processSelectors%28selectors%29%20%7B%20function%20getLastXPathResult%28result%29%20%7B%20return%20result.snapshotItem%28result.snapshotLength%20-%201%29%3B%20%7D%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20selectors.length%3B%20i%2B%2B%29%20%7B%20%20link%20%3D%20selectors%5Bi%5D.substring%280%2C%202%29%20%3D%3D%3D%20%27%2F%2F%27%20%3F%20getLastXPathResult%28document.evaluate%28selectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%29%20%3A%20Array.prototype.slice.call%28document.querySelectorAll%28selectors%5Bi%5D%29%29.pop%28%29%3B%20if%20%28link%29%20%7B%20console.log%28%27Next%20%C2%BB%3A%20Matching%20selector%3A%20%27%20%2B%20selectors%5Bi%5D%20%2B%20%27%5CnFound%20link%3A%20%27%2C%20link%29%3B%20return%20link.href%3B%20%7D%20%7D%20%7D%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20uri%20%3D%20decodeURIComponent%28location.pathname%20%2B%20location.search%20%2B%20location.hash%29%3B%20var%20yearPattern%20%3D%20%2720%5B0-9%5D%5B0-9%5D%27%3B%20var%20monthPattern%20%3D%20monthNames.concat%28%5B%27%28%3F%3A0%3F%5B1-9%5D%29%27%2C%20%27%28%3F%3A1%5B012%5D%29%27%5D%29.join%28%27%7C%27%29%3B%20var%20dayPattern%20%3D%20%27%28%3F%3A%27%20%2B%20%5B%273%5B01%5D%27%2C%20%27%5B12%5D%5B0-9%5D%27%2C%20%270%3F%5B1-9%5D%27%5D.join%28%27%29%7C%28%3F%3A%27%29%20%2B%20%27%29%27%3B%20var%20regexp%20%3D%20new%20RegExp%28%27%28.%2A%3F%5C%5Cb%29%28%27%20%2B%20yearPattern%20%2B%20%27%29%28%5B-%2F_.%5D%3F%29%28%27%20%2B%20monthPattern%20%2B%20%27%29%5C%5C3%28%27%20%2B%20dayPattern%20%2B%20%27%29%28%5B%5E0-9%5D.%2A%29%3F%24%27%29%3B%20var%20matches%3B%20if%20%28%28matches%20%3D%20uri.match%28regexp%29%29%29%20%7B%20var%20prefix%20%3D%20matches%5B1%5D%3B%20var%20year%20%3D%20matches%5B2%5D%3B%20var%20separator%20%3D%20matches%5B3%5D%3B%20var%20month%20%3D%20matches%5B4%5D%3B%20var%20day%20%3D%20matches%5B5%5D%3B%20var%20suffix%20%3D%20typeof%20matches%5B6%5D%20%3D%3D%3D%20%27undefined%27%20%3F%20%27%27%20%3A%20matches%5B6%5D%3B%20var%20newDate%20%3D%20new%20Date%28Date.UTC%28%20parseInt%28year%2C%2010%29%2C%20month.length%20%3D%3D%3D%203%20%3F%20monthNames.indexOf%28month%29%20%3A%20parseInt%28month%2C%2010%29%20-%201%2C%20parseInt%28day%2C%2010%29%20%29%20%2B%2024%20%2A%2060%20%2A%2060%20%2A%201000%29%3B%20var%20newYear%20%3D%20newDate.getUTCFullYear%28%29%3B%20var%20newMonth%20%3D%20month.length%20%3D%3D%3D%203%20%3F%20monthNames%5BnewDate.getUTCMonth%28%29%5D%20%3A%20newDate.getUTCMonth%28%29%20%2B%201%3B%20var%20newDay%20%3D%20newDate.getUTCDate%28%29%3B%20if%20%28newMonth%20%3C%2010%20%26%26%20month.length%20%3D%3D%3D%202%29%20%7B%20newMonth%20%3D%20%270%27%20%2B%20newMonth%3B%20%7D%20if%20%28newDay%20%3C%2010%20%26%26%20day.length%20%3D%3D%3D%202%29%20%7B%20newDay%20%3D%20%270%27%20%2B%20newDay%3B%20%7D%20newUrl%20%3D%20prefix%20%2B%20newYear%20%2B%20separator%20%2B%20newMonth%20%2B%20separator%20%2B%20newDay%20%2B%20suffix%3B%20console.log%28%27Next%20%C2%BB%3A%20Matching%20date%20in%20URL%3A%20%27%2C%20%5Byear%2C%20month%2C%20day%5D%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20if%20%28%28matches%20%3D%20uri.match%28%2F%28.%2A%3F%29%28%5B0-9%5D%2B%29%28%5B%5E0-9%5D%2A%29%24%2F%29%29%29%20%7B%20var%20number%20%3D%20parseInt%28matches%5B2%5D%2C%2010%29%3B%20var%20newNumber%20%3D%20number%20%2B%201%3B%20if%20%28matches%5B2%5D.substring%280%2C%201%29%20%3D%3D%3D%20%270%27%20%26%26%20%28newNumber%20%2B%20%27%27%29.length%20%3C%20matches%5B2%5D.length%29%20%7B%20newNumber%20%3D%20%28Math.pow%2810%2C%20matches%5B2%5D.length%29%20%2B%20%27%27%29.substring%281%20%2B%20%28newNumber%20%2B%20%27%27%29.length%29%20%2B%20newNumber%3B%20%7D%20newUrl%20%3D%20matches%5B1%5D%20%2B%20newNumber%20%2B%20matches%5B3%5D%3B%20console.log%28%27Next%20%C2%BB%3A%20Matching%20number%20in%20URL%3B%20going%20from%20%27%2C%20matches%5B2%5D%2C%20%27%20to%20%27%2C%20newNumber%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20selectors%20%3D%20%5B%5D%3B%20%20symbols.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2F%2A%5Bcontains%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20and%20substring-after%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20%3D%20%22%22%5D%2F%2Fpreceding-sibling%3A%3Aa%27%29%3B%20%7D%29%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27%23%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20selectors.push%28%27.%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20%7D%29%3B%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20numCycles%20%3D%200%3B%20var%20icons%20%3D%20%5B%20%27%E2%97%BB%27%2C%20%27%E2%97%BC%27%20%5D%3B%20if%20%28typeof%20document.janOriginalTitle%20%3D%3D%3D%20%27undefined%27%29%20%7B%20document.janOriginalTitle%20%3D%20document.title%3B%20%7D%20%28function%20flash%28%29%20%7B%20if%20%28numCycles%20%3C%206%29%20%7B%20document.title%20%3D%20icons%5BnumCycles%20%25%20icons.length%5D%20%2B%20%27%20No%20next%20page%3F%20%27%20%2B%20icons%5B%28numCycles%20%2B%201%29%20%25%20icons.length%5D%3B%20window.setTimeout%28flash%2C%20500%29%3B%20%7D%20else%20%7B%20document.title%20%3D%20document.janOriginalTitle%3B%20%7D%20numCycles%2B%2B%3B%20%7D%29%28%29%3B%20%7D%29%28%29%3B/* ./_toolbar/10-next.js */" ADD_DATE="1460554292" LAST_MODIFIED="1460554292" SHORTCUTURL="">Next »</A>
<DD><P>Go to the next page. To do so, this bookmarklet will look:
- for <link rel="next"> or <a rel="next">
- for links whose text contains "Next", ">>", etc.
e.g. <a href="/bla">Next</a>
- for links whose (or their parents') ID or class contains "next"
- at the URL to see if there is a date, and increases that
- at the URL to see if there is a number, and increases that
- for links whose next sibling's text contains "Next", ">>", etc.
e.g. <a href="/bla">Whatever</a> »</P></DD>
<DT><A HREF="javascript:%28function%20ffwd%28%29%20%7B%20%27use%20strict%27%3B%20const%20playbackRates%20%3D%20%5B10%2C%204%2C%202%2C%201.5%2C%201%5D%3B%20let%20playbackRateToUse%20%3D%20undefined%3B%20%20function%20execute%28document%29%20%7B%20let%20allMedia%20%3D%20Array.from%28document.querySelectorAll%28%27video%2C%20audio%27%29%29%3B%20%20const%20notRegularHtmlElementsSelector%20%3D%20%27a%2Cabbr%2Caddress%2Carea%2Carticle%2Caside%2Caudio%2Cb%2Cbase%2Cbdi%2Cbdo%2Cblockquote%2Cbody%2Cbr%2Cbutton%2Ccanvas%2Ccaption%2Ccite%2Ccode%2Ccol%2Ccolgroup%2Cdata%2Cdatalist%2Cdd%2Cdel%2Cdetails%2Cdfn%2Cdialog%2Cdiv%2Cdl%2Cdt%2Cem%2Cembed%2Cfieldset%2Cfigcaption%2Cfigure%2Cfooter%2Cform%2Ch1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2Chead%2Cheader%2Chgroup%2Chr%2Chtml%2Ci%2Ciframe%2Cimg%2Cinput%2Cins%2Ckbd%2Clabel%2Clegend%2Cli%2Clink%2Cmain%2Cmap%2Cmark%2Cmath%2Cmath%20%2A%2Cmenu%2Cmeta%2Cmeter%2Cnav%2Cnoscript%2Cobject%2Col%2Coptgroup%2Coption%2Coutput%2Cp%2Cparam%2Cpicture%2Cpre%2Cprogress%2Cq%2Crp%2Crt%2Cruby%2Cs%2Csamp%2Cscript%2Csection%2Cselect%2Cslot%2Csmall%2Csource%2Cspan%2Cstrong%2Cstyle%2Csub%2Csummary%2Csup%2Csvg%2Csvg%20%2A%2Ctable%2Ctbody%2Ctd%2Ctemplate%2Ctextarea%2Ctfoot%2Cth%2Cthead%2Ctime%2Ctitle%2Ctr%2Ctrack%2Cu%2Cul%2Cvar%2Cvideo%2Cwbr%27%20.split%28%27%2C%27%29%20.map%28s%20%3D%3E%20%60%3Anot%28%24%7Bs%7D%29%60%29%20.join%28%27%27%29%3B%20Array.from%28document.querySelectorAll%28notRegularHtmlElementsSelector%29%29%20.filter%28elem%20%3D%3E%20elem.shadowRoot%29%20.forEach%28elem%20%3D%3E%20allMedia%20%3D%20allMedia.concat%28Array.from%28elem.shadowRoot.querySelectorAll%28%27video%2C%20audio%27%29%29%29%29%3B%20allMedia.forEach%28media%20%3D%3E%20%7B%20%20if%20%28typeof%20playbackRateToUse%20%3D%3D%3D%20%27undefined%27%29%20%7B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20playbackRates.length%3B%20i%2B%2B%29%20%7B%20if%20%28media.playbackRate%20%3E%3D%20playbackRates%5Bi%5D%29%20%7B%20playbackRateToUse%20%3D%20i%20%3D%3D%3D%20playbackRates.length%20-%201%20%3F%20playbackRates%5B0%5D%20%3A%20playbackRates%5Bi%20%2B%201%5D%3B%20break%3B%20%7D%20%7D%20%7D%20media.playbackRate%20%3D%20playbackRateToUse%3B%20%20let%20visibleMediaContainer%20%3D%20media%3B%20let%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20while%20%28%28rect.height%20%3C%3D%200%20%7C%7C%20rect.width%20%3C%3D%200%29%20%26%26%20%28visibleMediaContainer%20%3D%20visibleMediaContainer.parentNode%29%29%20%7B%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20%7D%20const%20indicator%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%3B%20indicator.textContent%20%3D%20media.playbackRate%20%2B%20%27%C3%97%27%3B%20indicator.setAttribute%28%27style%27%2C%20%60%20display%3A%20flex%3B%20position%3A%20fixed%3B%20left%3A%20%24%7BMath.max%280%2C%20rect.left%29%7Dpx%3B%20top%3A%20%24%7BMath.max%280%2C%20rect.top%29%7Dpx%3B%20z-index%3A%2010000%3B%20width%3A%20%24%7Brect.width%7Dpx%3B%20height%3A%20%24%7Brect.height%7Dpx%3B%20font-size%3A%20%24%7Brect.height%20%2F%2010%7Dpx%3B%20justify-content%3A%20center%3B%20align-items%3A%20center%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%201%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%201%29%3B%20transition%3A%20all%200.75s%20ease-out%3B%20pointer-events%3A%20none%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20document.body.appendChild%28indicator%29%3B%20%20setTimeout%28_%20%3D%3E%20%7B%20setTimeout%28%20_%20%3D%3E%20indicator.remove%28%29%2C%20750%29%3B%20indicator.setAttribute%28%27style%27%2C%20indicator.getAttribute%28%27style%27%29%20%2B%20%60%20font-size%3A%20%24%7Brect.height%7Dpx%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%200%29%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20%7D%2C%200%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./_toolbar/15-ffwd.js */" ADD_DATE="1624434628" LAST_MODIFIED="1624434628" SHORTCUTURL="">FFWD ⏩</A>
<DD><P>Speed up the video and audio playback rate, starting from 10x back to 1x by
executing this bookmarklet multiple times. Executing it once more after the
normal speed will restart the cycle from the maximum speed again.</P></DD>
<DT><A HREF="javascript:%28function%20untrack%28%29%20%7B%20%27use%20strict%27%3B%20%20const%20parameterPatterns%20%3D%20%5B%20%20%27utm_%5B%5E%3D%5D%2A%27%2C%20%27gclid%27%2C%20%27gclsrc%27%2C%20%27dclid%27%2C%20%27_ga%27%2C%20%27_gl%27%2C%20%27gad_source%27%2C%20%27gbraid%27%2C%20%27wbraid%27%2C%20%27srsltid%27%2C%20%20%27fbclid%27%2C%20%27__cft__%28%28%255B%7C%5C%5C%5B%29%5B%5E%3D%5D%2A%29%3F%27%2C%20%27__tn__%27%2C%20%27__eep__%27%2C%20%20%27igsh%27%2C%20%27igshid%27%2C%20%27ig_rid%27%2C%20%20%27twclid%27%2C%20%20%27msclkid%27%2C%20%20%27mc_eid%27%2C%20%20%27__hsfp%27%2C%20%27__hssc%27%2C%20%27__hstc%27%2C%20%27_hsenc%27%2C%20%27hsCtaTracking%27%2C%20%20%27__s%27%2C%20%20%27mkt_tok%27%2C%20%20%27ml_subscriber%27%2C%20%27ml_subscriber_hash%27%2C%20%20%27oly_anon_id%27%2C%20%27oly_enc_id%27%2C%20%20%27omnisendContactID%27%2C%20%20%27obOrigUrl%27%2C%20%27outbrainclickid%27%2C%20%20%27matomo_campaign%27%2C%20%27mtm_campaign%27%2C%20%27mtm_cid%27%2C%20%27mtm_content%27%2C%20%27mtm_group%27%2C%20%27mtm_keyword%27%2C%20%27mtm_kwd%27%2C%20%27mtm_medium%27%2C%20%27mtm_placement%27%2C%20%27mtm_source%27%2C%20%27piwik_campaign%27%2C%20%27piwik_kwd%27%2C%20%27pk_campaign%27%2C%20%27pk_cid%27%2C%20%27pk_content%27%2C%20%27pk_cpn%27%2C%20%27pk_keyword%27%2C%20%27pk_kwd%27%2C%20%27pk_medium%27%2C%20%27pk_source%27%2C%20%20%27__cf_chl_jschl_tk__%27%2C%20%27__cf_chl_captcha_tk__%27%2C%20%20%27rb_clickid%27%2C%20%20%27s_cid%27%2C%20%27ss_%5B%5E%3D%5D%2A%27%2C%20%20%27vero_conv%27%2C%20%27vero_id%27%2C%20%20%27wickedid%27%2C%20%20%27yclid%27%2C%20%27ymclid%27%2C%20%27_openstat%27%2C%20%20%27zanpid%27%20%5D%3B%20const%20hrefRegexp%20%3D%20new%20RegExp%28%27%5B%3F%26%5D%28%27%20%2B%20parameterPatterns.join%28%27%7C%27%29%20%2B%20%27%29%3D%27%29%3B%20const%20parameterRegexp%20%3D%20new%20RegExp%28%27%5E%28%27%20%2B%20parameterPatterns.join%28%27%7C%27%29%20%2B%20%27%29%24%27%29%3B%20%20const%20uriPatternsForWhichToDeleteAllParameters%20%3D%20%5B%20%20%20%2Fhttps%3F%3A%5C%2F%5C%2F%28www%5C.%29%3Fnytimes%5C.com%5C%2F%5B%5E%3F%5D%2A%5C.html%2F%2C%20%20%20%2Fhttps%3F%3A%5C%2F%5C%2F%28www%5C.%29%3Ftiktok%5C.com%5C%2F%5B%5E%3F%5D%2A%5C%2Fvideo%5C%2F%5Cd%2B%2F%2C%20%20%20%2Fhttps%3F%3A%5C%2F%5C%2F%28www%5C.%29%3F%28twitter%7Cx%29%5C.com%5C%2F.%2A%2F%2C%20%5D%3B%20const%20hrefRegexpForWhichToDeleteAllParameters%20%3D%20new%20RegExp%28%27%28%3F%3A%27%20%2B%20uriPatternsForWhichToDeleteAllParameters%20.map%28regexp%20%3D%3E%20regexp.toString%28%29.replace%28%2F%5E%5C%2F%28.%2A%29%5C%2F%5B%5E%5C%2F%5D%2A%24%2F%2C%20%27%241%27%29%29%20.join%28%27%7C%27%29%20%2B%20%27%29%5C%5C%3F%27%29%3B%20%20const%20linkRedirectors%20%3D%20%7B%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fl.facebook.com%2Fl.php%3F%22%5D%2C%20a%5Bhref%5E%3D%22https%3A%2F%2Flm.facebook.com%2Fl.php%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27u%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fl.instagram.com%2F%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27u%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.google.%22%5D%5Bhref%2A%3D%22%2Furl%3F%22%5D%2C%20a%5Bhref%5E%3D%22http%3A%2F%2Fwww.google.%22%5D%5Bhref%2A%3D%22%2Furl%3F%22%5D%2C%20a%5Bhref%5E%3D%22%2Furl%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20%20if%20%28a.getAttribute%28%27href%27%29.indexOf%28%27%2Furl%3F%27%29%20%3D%3D%3D%200%20%26%26%20%21a.hostname.match%28%2F%5Ewww%5C.google%5C.%28com%3F%5C.%29%3F%5B%5E.%5D%2B%24%2F%29%29%20%7B%20return%3B%20%7D%20const%20usp%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3B%20%20a.href%20%3D%20usp.get%28%27url%27%29%20%3F%3F%20usp.get%28%27q%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Ftranslate.google.%22%5D%5Bhref%2A%3D%22%2Fwebsite%3F%22%5D%5Bhref%2A%3D%22u%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20usp%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3B%20a.href%20%3D%20usp.get%28%27u%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fredirect%3F%22%5D%5Bhref%2A%3D%22q%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20let%20targetUri%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27q%27%29%3B%20if%20%28%21targetUri%29%20%7B%20return%3B%20%7D%20%20if%20%28%21targetUri.match%28%2F%5E%5B%5E%5C%2F%5D%2B%3A%2F%29%29%20%7B%20targetUri%20%3D%20%60https%3A%2F%2F%24%7BtargetUri%7D%60%3B%20%7D%20a.href%20%3D%20targetUri%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fwatch%3F%22%5D%5Bhref%2A%3D%22v%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20url%20%3D%20new%20URL%28a.href%29%3B%20const%20usp%20%3D%20new%20URLSearchParams%28url.search%29%3B%20let%20videoId%20%3D%20usp%3F.get%28%27v%27%29%3B%20if%20%28%21videoId%29%20%7B%20return%3B%20%7D%20const%20newUsp%20%3D%20new%20URLSearchParams%28%29%3B%20usp.forEach%28%28value%2C%20key%29%20%3D%3E%20%7B%20if%20%28key%20%3D%3D%3D%20%27v%27%20%7C%7C%20key%20%3D%3D%3D%20%27t%27%29%20%7B%20newUsp.set%28key%2C%20value%29%3B%20%7D%20%7D%29%3B%20url.host%20%3D%20%27yewtu.be%27%3B%20url.search%20%3D%20newUsp.toString%28%29%3B%20a.href%20%3D%20url%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Ft.co%2F%22%5D%2C%20a%5Bhref%5E%3D%22http%3A%2F%2Ft.co%2F%22%5D%27%3A%20a%20%3D%3E%20%7B%20%20let%20possibleUri%20%3D%20a.textContent%3B%20%20if%20%28a.dataset.testid%20%3D%3D%3D%20%27UserUrl%27%20%26%26%20possibleUri.indexOf%28%27%E2%80%A6%27%29%20%3D%3D%3D%20-1%29%20%7B%20if%20%28possibleUri.indexOf%28%27%2F%27%29%20%3D%3D%3D%20-1%29%20%7B%20possibleUri%20%2B%3D%20%27%2F%27%3B%20%7D%20if%20%28%21possibleUri.match%28%2F%5Ehttps%3F%3A%5C%2F%5C%2F%2F%29%29%20%7B%20possibleUri%20%3D%20%60%24%7Ba.protocol%7D%2F%2F%24%7BpossibleUri%7D%60%3B%20%7D%20%7D%20possibleUri%20%3D%20possibleUri.replace%28%2F%28%5E%E2%80%A6%7C%E2%80%A6%24%29%2Fg%2C%20%27%27%29%3B%20if%20%28%21possibleUri.match%28%2F%5Ehttps%3F%3A%5C%2F%5C%2F%2F%29%29%20%7B%20return%3B%20%7D%20a.href%20%3D%20a.textContent%20%3D%20possibleUri%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.linkedin.com%2Fredir%2Fredirect%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.linkedin.com%2Fsignup%2Fcold-join%3F%22%5D%5Bhref%2A%3D%22session_redirect%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27session_redirect%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fflight.beehiiv.net%2Fv2%2Fclicks%2FeyJ%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20parts%20%3D%20a.pathname.split%28%27.%27%29%3B%20try%20%7B%20const%20originalUrl%20%3D%20JSON.parse%28atob%28parts%5B1%5D.replaceAll%28%27_%27%2C%20%27%2F%27%29.replaceAll%28%27-%27%2C%20%27%2B%27%29%29%29.url%3B%20if%20%28originalUrl%29%20%7B%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27untrack%3A%20error%20while%20decoding%20URL%20for%20link%3A%20%27%2C%20a%2C%20e%29%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%2A%3D%22app.link%22%5D%5Bhref%2A%3D%22fallback_url%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27%24fallback_url%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fout.reddit.com%2F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fapi.ffm.to%2Fsl%2Fe%2Fc%2F%22%5D%5Bhref%2A%3D%22cd%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20try%20%7B%20const%20originalUrl%20%3D%20JSON.parse%28atob%28new%20URL%28a.href%29.searchParams.get%28%27cd%27%29.replaceAll%28%27_%27%2C%20%27%2F%27%29.replaceAll%28%27-%27%2C%20%27%2B%27%29%29%29.destUrl%3B%20if%20%28originalUrl%29%20%7B%20if%20%28a.textContent.trim%28%29%20%3D%3D%3D%20a.href%29%20%7B%20a.textContent%20%3D%20originalUrl%3B%20%7D%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27untrack%3A%20error%20while%20decoding%20URL%20for%20link%3A%20%27%2C%20a%2C%20e%29%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Furldefense.proofpoint.com%2Fv2%2Furl%3F%22%5D%5Bhref%2A%3D%22u%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20try%20%7B%20const%20originalUrl%20%3D%20decodeURIComponent%28new%20URL%28a.href%29.searchParams.get%28%27u%27%29.replaceAll%28%27_%27%2C%20%27%2F%27%29.replaceAll%28%27-%27%2C%20%27%25%27%29%29%3B%20if%20%28originalUrl%29%20%7B%20if%20%28a.textContent.trim%28%29%20%3D%3D%3D%20a.href%29%20%7B%20a.textContent%20%3D%20originalUrl%3B%20%7D%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27untrack%3A%20error%20while%20decoding%20URL%20for%20link%3A%20%27%2C%20a%2C%20e%29%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fdisq.us%2Furl%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%2C%20a%5Bhref%5E%3D%22http%3A%2F%2Fdisq.us%2Furl%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20let%20originalUrl%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%3B%20if%20%28originalUrl%29%20%7B%20originalUrl%20%3D%20originalUrl.replace%28%2F%3A%5B%5E%3A%5C%2F%5D%2B%24%2F%2C%20%27%27%29%3B%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fgate.sc%2F%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%2C%20a%5Bhref%5E%3D%22https%3A%2F%2Fgate.sc%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20let%20originalUrl%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%3B%20if%20%28%21originalUrl%29%20%7B%20return%3B%20%7D%20if%20%28a.textContent.trim%28%29%20%3D%3D%3D%20a.href%20%7C%7C%20%28a.textContent.includes%28%27%E2%80%A6%27%29%20%26%26%20originalUrl.includes%28a.textContent.split%28%27%E2%80%A6%27%29%5B0%5D%29%29%29%20%7B%20a.textContent%20%3D%20originalUrl%3B%20%7D%20a.href%20%3D%20originalUrl%3B%20%7D%2C%20%20%27a%5Bhref%2A%3D%22%2FExternalLinkInterstitial%3F%22%5D%5Bhref%2A%3D%22redirectTo%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20usp%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3B%20a.href%20%3D%20usp.get%28%27redirectTo%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bdata-xxx-jan-original-href%5D%27%3A%20a%20%3D%3E%20%7B%20if%20%28a.href%20%21%3D%3D%20a.dataset.xxxJanOriginalHref%29%20%7B%20a.href%20%3D%20a.dataset.xxxJanOriginalHref%3B%20%7D%20%7D%20%7D%3B%20%20function%20cleanQueryString%28queryString%29%20%7B%20return%20new%20URLSearchParams%28%20Array.from%28new%20URLSearchParams%28queryString%29%29%20.filter%28%28%5Bkey%2C%20value%5D%29%20%3D%3E%20%21key.match%28parameterRegexp%29%29%20%29.toString%28%29%3B%20%7D%20%20function%20cleanQueryStringForHrefAttribute%28element%29%20%7B%20try%20%7B%20const%20textEqualsUrl%20%3D%20element.textContent.trim%28%29%20%3D%3D%3D%20element.href.trim%28%29%3B%20const%20oldUrl%20%3D%20new%20URL%28element.href%29%3B%20const%20newUrl%20%3D%20new%20URL%28element.href%29%3B%20newUrl.search%20%3D%20cleanQueryString%28oldUrl.search%29%3B%20if%20%28oldUrl.toString%28%29%20%21%3D%3D%20newUrl.toString%28%29%29%20%7B%20element.href%20%3D%20newUrl%3B%20if%20%28textEqualsUrl%29%20%7B%20element.textContent%20%3D%20newUrl%3B%20%7D%20%7D%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%20function%20execute%28document%29%20%7B%20%20const%20oldUrl%20%3D%20new%20URL%28document.location%29%3B%20const%20newUrl%20%3D%20new%20URL%28document.location%29%3B%20newUrl.search%20%3D%20cleanQueryString%28oldUrl.search%29%3B%20if%20%28oldUrl.toString%28%29%20%21%3D%3D%20newUrl.toString%28%29%29%20%7B%20document.defaultView.history.replaceState%28%7B%7D%2C%20document.title%2C%20newUrl%29%3B%20%7D%20%20document.querySelectorAll%28%27.OUTBRAIN%27%29.forEach%28element%20%3D%3E%20%7B%20element.querySelectorAll%28%27a%27%29.forEach%28a%20%3D%3E%20%7B%20Array.from%28a.attributes%29.forEach%28attribute%20%3D%3E%20%7B%20if%20%28attribute.name.match%28%2F%5Eon%2Fi%29%29%20%7B%20a.removeAttribute%28attribute.name%29%3B%20%7D%20%7D%29%3B%20%20const%20usp%20%3D%20new%20URLSearchParams%28a.search%29%3B%20Array.from%28usp%29.forEach%28%28%5Bname%2C%20value%5D%29%20%3D%3E%20%7B%20if%20%28value.match%28%2F%5E%5C%24.%2A%5C%24%24%2F%29%29%20%7B%20usp.delete%28name%29%3B%20%7D%20%7D%29%3B%20a.search%20%3D%20usp.toString%28%29%3B%20%7D%29%3B%20element.outerHTML%20%3D%20element.outerHTML%3B%20%7D%29%3B%20%20document.querySelectorAll%28%27%5Bdata-text-ad%5D%20a%5Bhref%5D%27%29.forEach%28a%20%3D%3E%20%7B%20if%20%28a.dataset.xxxJanOriginalHref%29%20%7B%20return%3B%20%7D%20%20let%20isGoogleAd%20%3D%20Object.entries%28a.dataset%29.some%28%20%28%5Bname%2C%20value%5D%29%20%3D%3E%20value.indexOf%28%27https%3A%2F%2Fwww.googleadservices.com%2Fpagead%27%29%20%3D%3D%3D%200%20%7C%7C%20value.indexOf%28%27https%3A%2F%2Fwww.google.com%2Faclk%27%29%20%3D%3D%3D%200%20%29%3B%20if%20%28isGoogleAd%29%20%7B%20a.dataset.xxxJanOriginalHref%20%3D%20a.href%3B%20%7D%20%7D%29%3B%20%20Object.entries%28linkRedirectors%29.forEach%28%20%28%5Bselector%2C%20callback%5D%29%20%3D%3E%20document.querySelectorAll%28selector%29.forEach%28element%20%3D%3E%20callback%28element%29%29%20%29%3B%20%20const%20allAHrefs%20%3D%20Array.from%28document.querySelectorAll%28%27a%5Bhref%5D%27%29%29%3B%20allAHrefs%20.filter%28a%20%3D%3E%20a.href.match%28hrefRegexpForWhichToDeleteAllParameters%29%29%20.forEach%28a%20%3D%3E%20a.search%20%3D%20%27%27%29%3B%20allAHrefs%20.filter%28a%20%3D%3E%20a.href.match%28hrefRegexp%29%29%20.forEach%28a%20%3D%3E%20cleanQueryStringForHrefAttribute%28a%29%29%3B%20%20new%20MutationObserver%28mutations%20%3D%3E%20%7B%20mutations.forEach%28mutation%20%3D%3E%20%7B%20cleanQueryStringForHrefAttribute%28mutation.target%29%3B%20Object.entries%28linkRedirectors%29.forEach%28%20%28%5Bselector%2C%20callback%5D%29%20%3D%3E%20%7B%20mutation.target.matches%28selector%29%20%26%26%20callback%28mutation.target%29%20%7D%20%29%3B%20%7D%29%3B%20%7D%29.observe%28document%2C%20%7B%20attributes%3A%20true%2C%20attributeFilter%3A%20%5B%27href%27%5D%2C%20subtree%3A%20true%20%7D%29%3B%20%20if%20%28typeof%20skimlinksAPI%20%21%3D%3D%20%27undefined%27%29%20%7B%20document.querySelectorAll%28%27a%5Bhref%5D%27%29.forEach%28a%20%3D%3E%20%7B%20if%20%28a.dataset.xxxJanOriginalHref%29%20%7B%20return%3B%20%7D%20a.dataset.xxxJanOriginalHref%20%3D%20a.href%3B%20%7D%29%3B%20%7D%20%20document.querySelectorAll%28%27a%5Bhref%5D%27%29.forEach%28a%20%3D%3E%20%7B%20const%20normalizedDomainName%20%3D%20a.href.replace%28%2F%5Ehttps%3F%3A%5C%2F%5C%2F%28%3F%3Awww%5C.%29%3F%28%5B%5E%2F%5D%2B%29.%2A%2F%2C%20%27%241%27%29%3B%20const%20textContainersToCheck%20%3D%20Array.from%28a.querySelectorAll%28%27%2A%27%29%29%3B%20textContainersToCheck.unshift%28a%29%3B%20for%20%28let%20i%20%3D%20textContainersToCheck.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%29%20%7B%20const%20textContainer%20%3D%20textContainersToCheck%5Bi%5D%3B%20const%20normalizedInnerText%20%3D%20textContainer.textContent.replace%28%2F%5E%28%3F%3Ahttps%3F%3A%5C%2F%5C%2F%29%3F%28%3F%3Awww%5C.%29%3F%28%5B%5E%2F%5D%2B%29.%2A%2F%2C%20%27%241%27%29%3B%20if%20%28normalizedDomainName%20%3D%3D%3D%20normalizedInnerText%29%20%7B%20textContainer.textContent%20%3D%20a.href%3B%20break%3B%20%7D%20%7D%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./_toolbar/20-untrack.js */" ADD_DATE="1640245197" LAST_MODIFIED="1640245197" SHORTCUTURL="">Untrack links</A>
<DD><P>Remove analytics and tracking parameters such as Google Analytics’ “utm_*”
and Facebook’s “fbclid” from the current document location (URI/URL) and
from the links on the page. It does not reload the page or its frames.</P></DD>
<DT><A HREF="javascript:%28function%20nocookie%28%29%20%7B%20%27use%20strict%27%3B%20%20let%20hasFoundSomethingToClick%20%3D%20false%3B%20%20const%20externalConsentManagerIframeSelectors%20%3D%20%5B%20%20%27iframe%5Bsrc%2A%3D%22.trustarc.com%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%2A%3D%22.consensu.org%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%2A%3D%22.privacymanager.io%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fcmp.%22%5D%27%2C%20%20%27iframe%5Bsrc%2A%3D%22.privacy-mgmt.com%2F%22%5D%27%2C%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fsourcepoint.theguardian.com%2F%22%5D%27%2C%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fsourcepointcmp.%22%5D%27%2C%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2F%22%5D%5Bsrc%2A%3D%22%2Findex.html%3F%22%5D%5Bsrc%2A%3D%22consentUUID%22%5D%27%2C%20%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Ftcf2.telegraph.co.uk%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fnojazz.eu%2F%22%5D%27%2C%20%5D%3B%20const%20probableExternalConsentManagerIframeUris%20%3D%20%5B%5D%3B%20const%20probableExternalConsentManagerIframes%20%3D%20%5B%5D%3B%20%20function%20getAllDocuments%28currDocument%29%20%7B%20if%20%28%21getAllDocuments.cache%29%20%7B%20getAllDocuments.cache%20%3D%20new%20WeakMap%28%29%3B%20%7D%20if%20%28%21currDocument%29%20%7B%20currDocument%20%3D%20document%3B%20%7D%20if%20%28getAllDocuments.cache.get%28currDocument%29%29%20%7B%20return%20getAllDocuments.cache.get%28currDocument%29%3B%20%7D%20const%20documents%20%3D%20%5BcurrDocument%5D%3B%20%20currDocument.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29.forEach%28elem%20%3D%3E%20%7B%20if%20%28elem.contentDocument%29%20%7B%20documents.push%28...getAllDocuments%28elem.contentDocument%29%29%3B%20%7D%20%7D%29%3B%20getAllDocuments.cache.set%28currDocument%2C%20documents%29%3B%20return%20documents%3B%20%7D%20%20function%20deepQuerySelector%28selector%2C%20options%29%20%7B%20let%20%7Broots%2C%20maxShadowRootDepth%7D%20%3D%20options%20%7C%7C%20%7B%7D%3B%20if%20%28%21roots%29%20%7B%20roots%20%3D%20getAllDocuments%28%29%3B%20%7D%20else%20if%20%28%21Array.isArray%28roots%29%29%20%7B%20roots%20%3D%20%5Broots%5D%3B%20%7D%20if%20%28Number.isNaN%28maxShadowRootDepth%29%29%20%7B%20maxShadowRootDepth%20%3D%200%3B%20%7D%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20roots.length%3B%20i%2B%2B%29%20%7B%20const%20normalQuerySelectorResult%20%3D%20roots%5Bi%5D.querySelector%28selector%29%3B%20if%20%28normalQuerySelectorResult%29%20%7B%20return%20normalQuerySelectorResult%3B%20%7D%20%20if%20%28maxShadowRootDepth%20%3E%200%29%20%7B%20const%20shadowRoots%20%3D%20getShadowRoots%28roots%5Bi%5D%29%3B%20if%20%28shadowRoots.length%29%20%7B%20const%20deepQuerySelectorResult%20%3D%20deepQuerySelector%28selector%2C%20%7B%20roots%3A%20shadowRoots%2C%20maxShadowRootDepth%3A%20maxShadowRootDepth%20-%201%20%7D%29%3B%20if%20%28deepQuerySelectorResult%29%20%7B%20return%20deepQuerySelectorResult%3B%20%7D%20%7D%20%7D%20%7D%20%7D%20%20function%20deepQuerySelectorAll%28selector%29%20%7B%20let%20allElements%20%3D%20%5B%5D%3B%20const%20allDocuments%20%3D%20getAllDocuments%28%29%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20allDocuments.length%3B%20i%2B%2B%29%20%7B%20allElements%20%3D%20allElements.concat%28Array.from%28allDocuments%5Bi%5D.querySelectorAll%28selector%29%29%29%3B%20%7D%20return%20allElements%3B%20%7D%20%20const%20regularElementsThatCannotBeShadowHostsSelector%20%3D%20%27a%2Cabbr%2Caddress%2Carea%2Caudio%2Cb%2Cbase%2Cbdi%2Cbdo%2Cbr%2Cbutton%2Ccanvas%2Ccaption%2Ccite%2Ccode%2Ccol%2Ccolgroup%2Cdata%2Cdatalist%2Cdd%2Cdel%2Cdetails%2Cdfn%2Cdialog%2Cdl%2Cdt%2Cem%2Cembed%2Cfieldset%2Cfigcaption%2Cfigure%2Cform%2Chead%2Chgroup%2Chr%2Chtml%2Ci%2Ciframe%2Cimg%2Cinput%2Cins%2Ckbd%2Clabel%2Clegend%2Cli%2Clink%2Cmap%2Cmark%2Cmath%2Cmath%20%2A%2Cmenu%2Cmeta%2Cmeter%2Cnoscript%2Cobject%2Col%2Coptgroup%2Coption%2Coutput%2Cparam%2Cpicture%2Cpre%2Cprogress%2Cq%2Crp%2Crt%2Cruby%2Cs%2Csamp%2Cscript%2Cselect%2Cslot%2Csmall%2Csource%2Cstrong%2Cstyle%2Csub%2Csummary%2Csup%2Csvg%2Csvg%20%2A%2Ctable%2Ctbody%2Ctd%2Ctemplate%2Ctextarea%2Ctfoot%2Cth%2Cthead%2Ctime%2Ctitle%2Ctr%2Ctrack%2Cu%2Cul%2Cvar%2Cvideo%2Cwbr%27%3B%20const%20possibleShadowHostsSelector%20%3D%20regularElementsThatCannotBeShadowHostsSelector%20.split%28%27%2C%27%29%20.map%28s%20%3D%3E%20%60%3Anot%28%24%7Bs%7D%29%60%29%20.join%28%27%27%29%3B%20%20function%20getShadowRoots%28roots%29%20%7B%20if%20%28%21roots%29%20%7B%20roots%20%3D%20getAllDocuments%28%29%3B%20%7D%20else%20if%20%28roots.length%29%20%7B%20roots%20%3D%20Array.from%28roots%29%3B%20%7D%20else%20if%20%28%21Array.isArray%28roots%29%29%20%7B%20roots%20%3D%20%5Broots%5D%3B%20%7D%20const%20shadowRoots%20%3D%20%5B%5D%3B%20roots.forEach%28root%20%3D%3E%20shadowRoots.push%28...%20Array.from%28root.querySelectorAll%28possibleShadowHostsSelector%29%29%20.filter%28possibleShadowHost%20%3D%3E%20possibleShadowHost.shadowRoot%29%20.map%28shadowHost%20%3D%3E%20shadowHost.shadowRoot%29%20%29%29%3B%20return%20shadowRoots%3B%20%7D%20%20function%20clickAndWaitOrDoItNow%28selectorOrElement%2C%20provider%2C%20callback%29%20%7B%20if%20%28tryToClick%28selectorOrElement%2C%20provider%29%29%20%7B%20setTimeout%28callback%2C%20250%29%3B%20%7D%20else%20%7B%20callback%28%29%3B%20%7D%20%7D%20%20function%20tryToClick%28selectorOrElement%2C%20provider%2C%20deepQuerySelectorOptions%29%20%7B%20const%20elem%20%3D%20typeof%20selectorOrElement%20%3D%3D%3D%20%27string%27%20%3F%20deepQuerySelector%28selectorOrElement%2C%20deepQuerySelectorOptions%29%20%3A%20selectorOrElement%3B%20if%20%28elem%29%20%7B%20const%20text%20%3D%20elem.localName%20%3D%3D%3D%20%27input%27%20%3F%20elem.value%20%3A%20elem.textContent.replaceAll%28%27%5Cn%27%2C%20%27%20%27%29.trim%28%29.replace%28%2F%28.%7B32%7D%29.%2A%2F%2C%20%27%241%E2%80%A6%27%29%3B%20const%20msg%20%3D%20typeof%20selectorOrElement%20%3D%3D%3D%20%27string%27%20%3F%20%60nocookie%3A%20found%20%24%7Bprovider%7D%20element%20%28%E2%80%9C%24%7Btext%7D%E2%80%9D%29%20to%20click%20for%20selector%20%24%7BselectorOrElement%7D%3A%20%60%20%3A%20%60nocookie%3A%20found%20%24%7Bprovider%7D%20element%20%28%E2%80%9C%24%7Btext%7D%E2%80%9D%29%20to%20click%3A%20%60%3B%20console.log%28msg%2C%20elem%29%3B%20%20setTimeout%28_%20%3D%3E%20elem.click%28%29%2C%2050%29%3B%20hasFoundSomethingToClick%20%3D%20true%3B%20return%20true%3B%20%7D%20%7D%20%20function%20retryToClick%28selectorOrElement%2C%20provider%2C%20maxNumMilliseconds%2C%20deepQuerySelectorOptions%29%20%7B%20if%20%28typeof%20maxNumMilliseconds%20%3D%3D%3D%20%27undefined%27%29%20%7B%20maxNumMilliseconds%20%3D%205000%3B%20%7D%20const%20startTimestamp%20%3D%20%2Bnew%20Date%28%29%3B%20const%20numMillisecondsBetweenTries%20%3D%20100%3B%20const%20retrier%20%3D%20_%20%3D%3E%20%7B%20const%20currTimestamp%20%3D%20%2Bnew%20Date%28%29%3B%20if%20%28tryToClick%28selectorOrElement%2C%20provider%2C%20deepQuerySelectorOptions%29%29%20%7B%20const%20numMillisecondsElapsed%20%3D%20currTimestamp%20-%20startTimestamp%3B%20if%20%28numMillisecondsElapsed%20%3E%3D%20numMillisecondsBetweenTries%29%20%7B%20console.log%28%60nocookie%3A%20%E2%86%91%20found%20that%20button%20to%20click%20after%20%24%7BnumMillisecondsElapsed%7D%20milliseconds.%20%E2%86%91%60%29%3B%20%7D%20return%3B%20%7D%20if%20%28currTimestamp%20%2B%20numMillisecondsBetweenTries%20%3C%3D%20startTimestamp%20%2B%20maxNumMilliseconds%29%20%7B%20setTimeout%28retrier%2C%20numMillisecondsBetweenTries%29%3B%20%7D%20%7D%3B%20retrier%28%29%3B%20%7D%20%20function%20tryToUncheck%28selectorOrElements%29%20%7B%20const%20elems%20%3D%20typeof%20selectorOrElements%20%3D%3D%3D%20%27string%27%20%3F%20deepQuerySelectorAll%28selectorOrElements%29%20%3A%20selectorOrElements%3B%20elems.forEach%28check%20%3D%3E%20%7B%20%20let%20labellingElement%3B%20let%20labelText%3B%20if%20%28check.hasAttribute%28%27aria-label%27%29%29%20%7B%20labelText%20%3D%20check.getAttribute%28%27aria-label%27%29%3B%20%7D%20else%20if%20%28check.hasAttribute%28%27title%27%29%29%20%7B%20labelText%20%3D%20check.getAttribute%28%27title%27%29%3B%20%7D%20else%20%7B%20if%20%28check.hasAttribute%28%27aria-labelledby%27%29%29%20%7B%20labellingElement%20%3D%20document.getElementById%28check.getAttribute%28%27aria-labelledby%27%29%29%3B%20%7D%20if%20%28%21labellingElement%20%26%26%20check.hasAttribute%28%27id%27%29%29%20%7B%20try%20%7B%20labellingElement%20%3D%20document.querySelector%28%60label%5Bfor%3D%22%24%7Bcheck.id%7D%22%5D%60%29%3B%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20if%20%28%21labellingElement%29%20%7B%20labellingElement%20%3D%20check.closest%28%27label%27%29%3B%20%7D%20if%20%28labellingElement%29%20%7B%20labelText%20%3D%20labellingElement.textContent.trim%28%29%3B%20%7D%20%7D%20if%20%28typeof%20labelText%20%3D%3D%3D%20%27undefined%27%20%7C%7C%20labelText%20%3D%3D%3D%20%27%27%29%20%7B%20labelText%20%3D%20%60%3C%24%7Bcheck.localName%7D%60%20%2B%20%5B%27name%27%2C%20%27value%27%2C%20%27id%27%2C%20%27class%27%5D.map%28attrName%20%3D%3E%20check.hasAttribute%28attrName%29%20%3F%20%60%20%24%7BattrName%7D%3D%22%24%7Bcheck.getAttribute%28attrName%29%7D%22%60%20%3A%20%27%27%20%29.filter%28_%20%3D%3E%20_%29.join%28%27%27%29%20%2B%20%27%3E%27%3B%20%7D%20%20if%20%28check.checked%20%3D%3D%3D%20false%29%20%7B%20console.log%28%60nocookie%3A%20checkbox%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%20was%20already%20unchecked%3A%20%60%2C%20check%29%3B%20return%3B%20%7D%20%20console.log%28%60nocookie%3A%20unchecking%20checkbox%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%3A%20%60%2C%20check%29%3B%20check.click%28%29%3B%20check.checked%20%3D%20false%3B%20check.setAttribute%28%27aria-checked%27%2C%20%27false%27%29%3B%20%7D%29%3B%20%7D%20%20%7B%20%20if%20%28%21tryToClick%28%27.eu-cookie-compliance-banner%20.decline-button%2C%20.decline-button%5Bclass%2A%3D%22eu-cookie-compliance%22%5D%27%2C%20%27Drupal%27%29%29%20%7B%20tryToUncheck%28%27.eu-cookie-compliance-categories%20input%5Btype%3D%22checkbox%22%5D%5Bname%3D%22cookie-categories%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.eu-cookie-compliance-banner%20.eu-cookie-compliance-save-preferences-button%27%2C%20%27Drupal%27%29%3B%20%7D%20%20tryToClick%28%27%23truste-consent-required%27%2C%20%27TrustArc%27%29%3B%20%20tryToClick%28%27%23cookiescript_reject%27%2C%20%27Cookie-Script%27%29%3B%20%20tryToClick%28%27%23cookie_action_close_header_reject%2C%20%5Bdata-cky-tag%3D%22reject-button%22%5D%2C%20.cky-btn-reject%27%2C%20%27CookieYes%2FCookie-Law-Info%27%29%3B%20%20tryToClick%28%27%23essential_accept%20.btn-btn-save%27%2C%20%27GDPR%20Legal%20Cookie%20App%20for%20Shopify%27%29%3B%20%20if%20%28tryToClick%28%27.cck-actions-button%5Bhref%3D%22%23refuse%22%5D%2C%20.wt-cck-btn-refuse%27%2C%20%27NextEuropa%27%29%29%20%7B%20tryToClick%28%27.cck-actions%20%5Bhref%3D%22%23close%22%5D%27%2C%20%27NextEuropa%27%29%3B%20%7D%20%20tryToClick%28%27%23hs-eu-decline-button%27%2C%20%27HubSpot%27%29%3B%20%20tryToClick%28%27.nimbuCookie%20.cn-ok%20button%3Anot%28.cm-btn-success%29%3Anot%28.cm-btn-info%29%27%2C%20%27Nimbu%20%28Zenjoy%29%27%29%3B%20%20tryToClick%28%27.orejime-Button--decline%2C%20.orejime-Notice-declineButton%27%2C%20%27Orejime%27%29%3B%20%20if%20%28%21tryToClick%28%27.cookiefirst-root%20%5Bdata-cf-action%3D%22reject%22%5D%27%2C%20%27CookieFirst%27%29%29%20%7B%20const%20lastPossibleCookieFirstButton%20%3D%20deepQuerySelectorAll%28%27button%5Bdata-cookiefirst-button%3D%22secondary%22%5D%3Anth-of-type%283%29%3Alast-child%27%29.pop%28%29%3B%20if%20%28lastPossibleCookieFirstButton%29%20%7B%20tryToClick%28lastPossibleCookieFirstButton%2C%20%27CookieFirst%20modal%20dialog%27%29%3B%20%7D%20%7D%20%20if%20%28%21tryToClick%28%27%5Bdata-cookiefirst-action%3D%22reject%22%5D%27%2C%20%27CookieFirst%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%5Bdata-cookiefirst-action%3D%22adjust%22%5D%27%2C%20%27CookieFirst%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.cookiefirst-root%20%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%2C%20.cookiefirst-root%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-cookiefirst-action%3D%22save%22%5D%27%2C%20%27CookieFirst%27%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27.fc-cta-do-not-consent%27%2C%20%27Google%20Funding%20Choices%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.fc-cta-manage-options%27%2C%20%27Google%20Funding%20Choices%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.fc-preference-legitimate-interest%2C%20input%5Btype%3D%22checkbox%22%5D%5Bid%2A%3D%22egitimate%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.fc-confirm-choices%27%2C%20%27Google%20Funding%20Choices%27%29%3B%20%7D%20%29%3B%20%7D%20%20tryToClick%28%27%5Baria-modal%3D%22true%22%5D%5Baria-label%2A%3D%22Google%22%5D%20button%3Afirst-child%3Anot%28%3Aonly-child%29%3Anot%28%5Baria-haspopup%3D%22true%22%5D%29%27%2C%20%27Google%20consent%20modal%20dialog%27%29%20%7C%7C%20tryToClick%28%27form%5Baction%5E%3D%22https%3A%2F%2Fconsent.google.%22%5D%5Baction%24%3D%22%2Fsave%22%5D%20button%5Bjsaction%5D%27%2C%20%27Google%20consent%20modal%20dialog%20%28FORM%20version%29%27%29%20%7C%7C%20tryToClick%28%27form%5Baction%5E%3D%22https%3A%2F%2Fconsent.youtube.%22%5D%5Baction%24%3D%22%2Fsave%22%5D%20button%5Bjsaction%5D%27%2C%20%27Google%20consent%20modal%20dialog%20%28YouTube%20FORM%20version%29%27%29%3B%20%20tryToClick%28%27ytd-consent-bump-v2-lightbox%20ytd-button-renderer%3Afirst-of-type%3Anot%28%3Aonly-child%29%20button%27%2C%20%27YouTube%20consent%20bump%27%29%3B%20%20tryToClick%28%27%23consent-page%20button%5Bname%3D%22reject%22%5D%27%2C%20%27Yahoo%20IAB%27%29%3B%20%20if%20%28%21tryToClick%28%27%23onetrust-reject-all-handler%27%2C%20%27Onetrust%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23onetrust-pc-btn-handler%27%2C%20%27Onetrust%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%23onetrust-consent-sdk%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.onetrust-close-btn-handler%27%2C%20%27Onetrust%27%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23didomi-notice-disagree-button%2C%20.didomi-continue-without-agreeing%27%2C%20%27Didomi%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23didomi-notice-learn-more-button%27%2C%20%27Didomi%27%2C%20_%20%3D%3E%20%7B%20%20if%20%28%21tryToClick%28%27%23didomi-radio-option-disagree-to-all%27%2C%20%27Didomi%27%29%29%20%7B%20%20retryToClick%28%27.didomi-consent-popup-actions%20button%3Afirst-of-type%3Anot%28%3Aonly-child%29%27%2C%20%27Didomi%27%29%3B%20%7D%20%20setTimeout%28_%20%3D%3E%20retryToClick%28%27.didomi-consent-popup-actions%20button%3Afirst-of-type%27%2C%20%27Didomi%27%29%2C%20250%29%3B%20%7D%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27.qc-cmp2-summary-buttons%20button%5Bmode%3D%22secondary%22%5D%27%2C%20%27Quantcast%27%2C%20_%20%3D%3E%20%7B%20%20tryToClick%28%27.qc-cmp2-header-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28reject%20main%20cookies%29%27%29%3B%20%20if%20%28tryToClick%28%27.qc-cmp2-footer-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28go%20to%20partners%20tab%29%27%29%29%20%7B%20setTimeout%28_%20%3D%3E%20%7B%20tryToClick%28%27.qc-cmp2-header-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28reject%20partner%20cookies%29%27%29%3B%20%20if%20%28tryToClick%28%27.qc-cmp2-footer-links%20button%3Anth-of-type%282%29%27%2C%20%27Quantcast%20%28go%20to%20legitimate%20interests%20tab%29%27%29%29%20%7B%20setTimeout%28_%20%3D%3E%20tryToClick%28%27.qc-cmp2-header-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28object%20to%20all%20interests%29%27%29%2C%2050%29%3B%20%7D%20%7D%2C%2050%29%3B%20%7D%20%20setTimeout%28_%20%3D%3E%20%7B%20retryToClick%28%27.qc-cmp2-footer%20button%5Bmode%3D%22primary%22%5D%27%2C%20%27Quantcast%20%28save%20%26%20exit%29%27%29%3B%20%7D%2C%20500%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-tracking-opt-in-learn-more%3D%22true%22%5D%27%2C%20%27Fandom%2FWikia%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-tracking-opt-in-overlay%3D%22true%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20retryToClick%28%27%5Bdata-tracking-opt-in-save%3D%22true%22%5D%27%2C%20%27Fandom%2FWikia%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.js-kmcc-extended-modal-button%5Bdata-target%3D%22legal_cookie_preferences%22%5D%27%2C%20%27Kunstmaan%20Cookie%20Bar%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.kmcc-cookies-toggle-pp%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23kmcc-accept-some-cookies%27%2C%20%27Kunstmaan%20Cookie%20Bar%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23SG-CookieConsent--TogglePreferencesButton%27%2C%20%27Stad%20Gent%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input.SG-CookieConsent--checkbox%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23SG-CookieConsent--SavePreferencesButton%27%2C%20%27Stad%20Gent%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27.osano-cm-denyAll%2C%20.osano-cm-button--type_denyAll%27%2C%20%27Osano%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27a%5Bhref%3D%22%23%22%5D.cookie_tool_more%2C%20%23cookie_tool_config%27%2C%20%27AdResults%27%2C%20_%20%3D%3E%20%7B%20%20%28deepQuerySelector%28%27input%5Bname%3D%22cookie_tool_choise%22%5D%5Bvalue%3D%223%22%5D%27%29%20%3F%3F%20%7B%7D%29.checked%20%3D%20true%3B%20%20tryToClick%28%27.cookie_tool_submit%27%2C%20%27AdResults%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.cc_dialog%20button.cc_b_cp%2C%20.cc_dialog%20.btn%3Anot%28.cc_b_ok_custom%29%27%2C%20%27Free%20Privacy%20Policy%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.checkbox_cookie_consent%3Achecked%27%29%3B%20tryToClick%28%27.cc_cp_f_save%20button%27%2C%20%27Free%20Privacy%20Policy%27%29%3B%20%7D%20%29%3B%20%20if%20%28%21tryToClick%28%27.iubenda-cs-reject-btn%27%2C%20%27Iubenda%20Cookie%20Solution%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.iubenda-cs-customize-btn%27%2C%20%27Iubenda%27%2C%20_%20%3D%3E%20%7B%20if%20%28%21tryToClick%28%27%5Bclass%2A%3D%22iubenda%22%5D%20.purposes-btn-reject%27%2C%20%27Iubenda%20Cookie%20Solution%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23iubFooterBtnIab%27%2C%20%27Iubenda%27%2C%20_%20%3D%3E%20%7B%20%20tryToClick%28%27.iub-cmp-reject-btn%27%2C%20%27Iubenda%27%29%3B%20%20tryToClick%28%27%23iubFooterBtn%2C%20.iubenda-cs-reject-btn%27%2C%20%27Iubenda%27%29%3B%20%7D%20%29%3B%20%7D%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23ez-accept-necessary%27%2C%20%27Ezoic%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23ez-manage-settings%2C%20%5Bonclick%2A%3D%22handleShowDetails%22%5D%2C%20%5Bonclick%2A%3D%22handleManageSettings%22%5D%27%2C%20%27Ezoic%27%2C%20_%20%3D%3E%20%7B%20%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D.ez-cmp-checkbox%3Achecked%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23ez-show-vendors%2C%20%5Bonclick%2A%3D%22savePurposesAndShowVendors%22%5D%27%2C%20%27Ezoic%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D.ez-cmp-checkbox%3Achecked%27%29%3B%20tryToClick%28%27%23ez-save-settings%2C%20%5Bonclick%2A%3D%22saveVendorsAndExitModal%22%5D%2C%20%5Bonclick%2A%3D%22handleSaveSettings%22%5D%27%2C%20%27Ezoic%27%29%3B%20%7D%20%29%3B%20%20retryToClick%28%27%23ez-save-settings%2C%20%5Bonclick%2A%3D%22savePurposesAndExitModal%22%5D%2C%20%5Bonclick%2A%3D%22handleSaveSettings%22%5D%27%2C%20%27Ezoic%27%29%3B%20%7D%20%29%3B%20%7D%20%20tryToClick%28%27%23CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll%2C%20%23CybotCookiebotDialogBodyButtonDecline%2C%20%23CybotCookiebotDialogBodyLevelButtonDecline%27%2C%20%27Cybot%27%29%3B%20%20const%20userCentricsShadowRoot%20%3D%20deepQuerySelector%28%27%23usercentrics-root%27%29%3F.shadowRoot%3B%20if%20%28userCentricsShadowRoot%29%20%7B%20clickAndWaitOrDoItNow%28%20userCentricsShadowRoot.querySelector%28%27button%5Bdata-testid%3D%22uc-more-button%22%5D%27%29%2C%20%27UserCentrics%20%28with%20Shadow%20DOM%29%27%2C%20%20_%20%3D%3E%20setTimeout%28_%20%3D%3E%20%7B%20tryToClick%28userCentricsShadowRoot.querySelector%28%27button%5Bdata-testid%3D%22uc-deny-all-button%22%5D%27%29%2C%20%27UserCentrics%20%28with%20Shadow%20DOM%29%27%29%3B%20%7D%2C%20250%29%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27.cmp__notice-buttons%20button.is-secondary%3Anth-child%282%29%27%2C%20%27WordPress%27%2C%20_%20%3D%3E%20%7B%20%20retryToClick%28%27.cmp__dialog-footer-buttons%20button.is-secondary%3Anth-child%282%29%27%2C%20%27WordPress%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.a8c-cookie-banner__customize-button%27%2C%20%27Automattic%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.a8c-cookie-banner__options-selection%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.a8c-cookie-banner__accept-selection-button%27%2C%20%27Automattic%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23notice-cookie-block%20%23btn-cookie-settings%27%2C%20%27Pon%20Bike%20Group%27%2C%20_%20%3D%3E%20%7B%20%20%20deepQuerySelectorAll%28%27%23cookie-manager-popup%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29.forEach%28check%20%3D%3E%20%7B%20%20tryToClick%28%60%23cookie-manager-popup%20label%5Bfor%3D%22%24%7Bcheck.id%7D%22%5D%60%2C%20%27Pon%20Bike%20Group%27%29%3B%20check.checked%20%3D%20false%3B%20%7D%29%3B%20%20deepQuerySelectorAll%28%27%23cookie-manager-popup%20%5Bdata-switch%3D%22on%22%5D%27%29.forEach%28fakeCheckbox%20%3D%3E%20%7B%20%20fakeCheckbox.click%28%29%3B%20fakeCheckbox.dataset.switch%20%3D%20%27off%27%3B%20%7D%29%3B%20%20tryToClick%28%27%23cookie-manager-popup%20.modal-footer%20button%2C%20.cookie-manager-popup%20.modal-footer%20button%27%2C%20%27Pon%20Bike%20Group%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27.frame-content%20.button__refuseAll%2C%20.frame-content%20.button__skip%27%2C%20%27SBFX%20AppConsent%27%29%20%7C%7C%20tryToClick%28%27.frame-content%20button%5Baria-roledescription%3D%22link%22%5D%3Aonly-child%27%2C%20%27SBFX%20AppConsent%20%28brittle%20selector%21%29%27%29%3B%20%20const%20openCmpShadowRoot%20%3D%20document.querySelector%28%27body%20%3E%20div.needsclick%27%29%3F.shadowRoot%3B%20if%20%28openCmpShadowRoot%29%20%7B%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_navi%20a%5Bpage%3D%22settings%22%5D%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CSettings%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_level0Container%20.cmp_levelItem%3Afirst-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CProcessing%20purposes%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_activateAll%20a%3Anth-child%282%29%3Alast-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CDeactivate%20all%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_level1Container%20.cmp_levelItem%3Anot%28.cmp_active%29%20%3E%20%2A%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CLegitimate%20interest%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_activateAll%20a%3Anth-child%282%29%3Alast-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CDeactivate%20all%E2%80%9D%27%2C%20_%20%3D%3E%20tryToClick%28%20openCmpShadowRoot.querySelector%28%27.cmp_navi%20.cmp_saveLink%20a%5Bhref%3D%22%23%22%5D%3Aonly-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CConfirm%20selection%E2%80%9D%27%20%29%20%29%20%29%20%29%20%29%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20%5Bdata-view%3D%22manageSettings%22%5D%27%2C%20%27Mediavine%20GDPR%20CMP%27%2C%20_%20%3D%3E%20%7B%20%20tryToUncheck%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20%20if%20%28tryToClick%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20%5Bdata-view%3D%22partnerSettings%22%5D%27%2C%20%27Mediavine%20GDPR%20CMP%20%28go%20to%20partners%20tab%29%27%29%29%20%7B%20setTimeout%28_%20%3D%3E%20tryToUncheck%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%2C%20250%29%3B%20%7D%20%20setTimeout%28_%20%3D%3E%20retryToClick%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20%5Bformat%3D%22secondary%22%5D%27%2C%20%27Mediavine%20GDPR%20CMP%20%28save%20%26%20exit%29%27%29%2C%20500%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-hook%3D%22consent-banner-root%22%5D%20%5Bdata-hook%3D%22consent-banner-settings-button%22%5D%27%2C%20%27Wix%20cookie%20consent%20banner%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-hook%3D%22consent-banner-settings-container%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-hook%3D%22consent-banner-settings-container%22%5D%20%5Bdata-hook%3D%22consent-banner-settings-save-button%22%5D%27%2C%20%27Wix%20cookie%20consent%20banner%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.ncmp__btn%5Bonclick%2A%3D%22showModal%22%5D%27%2C%20%27NitroPay%20CMP%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20%27.ncmp__toggle-purposes-off%27%2C%20%27NitroPay%20CMP%20%28reject%20all%20purposes%29%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20%27.ncmp__nav%20%5Bonclick%2A%3D%22showModal%22%5D%5Bonclick%2A%3D%22object%22%5D%27%2C%20%27NitroPay%20CMP%20%28go%20to%20legimate%20interests%20tab%29%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20%27.ncmp__toggle-legint-purposes-off%27%2C%20%27NitroPay%20CMP%20%28object%20to%20all%20legitimate%20interests%29%27%2C%20_%20%3D%3E%20retryToClick%28%27.ncmp__btn%5Bonclick%2A%3D%22hideModal%22%5D%27%2C%20%27NitroPay%20CMP%20%28save%20%26%20exit%29%27%29%20%29%20%29%20%29%20%29%3B%20%20let%20wieniCurrStep%20%3D%200%3B%20let%20wieniMaxSteps%20%3D%2010%3B%20const%20wieniButtonSelector%20%3D%20%27.cookie-notice%20.cookie-notice__footer%20button%3Afirst-child%27%3B%20function%20recursivelyClickWieniButtons%28%29%20%7B%20if%20%28%20tryToClick%28wieniButtonSelector%2C%20%60Wieni%20cookie%20notice%20%28step%20%24%7BwieniCurrStep%7D%29%60%29%20%29%20%7B%20wieniCurrStep%2B%2B%3B%20if%20%28wieniCurrStep%20%3C%20wieniMaxSteps%29%20%7B%20setTimeout%28recursivelyClickWieniButtons%2C%20125%29%3B%20%7D%20%7D%20%7D%20recursivelyClickWieniButtons%28%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%5Bhref%3D%22%23uxm-settings%22%5D%27%2C%20%27Google%20Tag%20Manager%20UXM%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input.uxm-toggle-input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23uxm-accept-custom%27%2C%20%27Google%20Tag%20Manager%20UXM%27%29%3B%20%7D%20%29%3B%20%20if%20%28%21tryToClick%28%27.cmplz-btn.cmplz-deny%27%2C%20%27Complianz%20cookie%20consent%20deny%20button%27%29%29%20%7B%20tryToUncheck%28%27.cmplz-consent-checkbox%3Achecked%27%29%3B%20tryToClick%28%27.cc-btn.cc-save-settings%27%2C%20%27Complianz%20cookie%20consent%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23ccc-notify-reject%2C%20%23ccc-reject-settings%27%2C%20%27Cookie%20Control%20by%20CIVIC%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.ccc-notify-link%2C%20%23ccc-icon%3Anot%28%5Baria-expanded%3D%22true%22%5D%29%27%2C%20%27Cookie%20Control%20by%20CIVIC%27%2C%20_%20%3D%3E%20%7B%20if%20%28%21tryToClick%28%27%23ccc-notify-reject%2C%20%23ccc-reject-settings%27%2C%20%27Cookie%20Control%20by%20CIVIC%27%29%29%20%7B%20tryToUncheck%28%27%23ccc-content%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23ccc-dismiss-button%2C%20%23ccc-close%27%2C%20%27Cookie%20Control%20by%20CIVIC%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%5Bdata-js-target%3D%22CookieSettingsNotificationRejectAll.rejectAllButton%22%5D%27%2C%20%27Stripe%27%29%29%20%7B%20if%20%28document.domain.match%28%2F%28%5E%7C%5C.%29stripe%5C.com%24%2F%29%29%20%7B%20const%20stripeManageButtonSelectors%20%3D%20%60%20%5Bdata-js-target%3D%22CookieSettingsNotification.manageButton%22%5D%2C%20.db-CookieBanner%20a%5Bhref%24%3D%22%2Fcookie-settings%22%5D%2C%20.NotificationContainer%20a%5Bhref%24%3D%22%2Fcookie-settings%22%5D%20%60%3B%20clickAndWaitOrDoItNow%28%20stripeManageButtonSelectors%2C%20%27Stripe%27%2C%20_%20%3D%3E%20%7B%20%20if%20%28location.pathname.match%28%2F%5C%2Fcookie-settings%24%2F%29%29%20%7B%20%20tryToUncheck%28%27%5Bdata-js-controller%3D%22CookieSettingsSection%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20%20setTimeout%28%20_%20%3D%3E%20%7B%20if%20%28history.length%20%3D%3D%3D%201%29%20%7B%20if%20%28confirm%28%27Preferences%20updated.%20Close%20tab%2Fwindow%3F%27%29%29%20%7B%20top.close%28%29%3B%20%7D%20%7D%20else%20%7B%20history.back%28%29%3B%20%7D%20%7D%2C%20250%20%29%3B%20%7D%20%7D%20%29%3B%20%7D%20%7D%20%20const%20deepLSaveSelectionButton%20%3D%20deepQuerySelector%28%27.dl_cookieBanner--buttonSelected%27%29%3B%20if%20%28deepLSaveSelectionButton%29%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D.dl_cookieBanner--checkbox%3Achecked%27%29%3B%20tryToClick%28deepLSaveSelectionButton%2C%20%27DeepL%20cookie%20banner%27%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23consent-layer%20.js-accept-essential-cookies%27%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%27%2C%20%7BmaxShadowRootDepth%3A%203%7D%29%29%20%7B%20const%20bahnShadowRoot%20%3D%20deepQuerySelector%28%27body%20%3E%20div%3Afirst-child%27%29%3F.shadowRoot%3B%20if%20%28bahnShadowRoot%20%26%26%20%21tryToClick%28bahnShadowRoot.querySelector%28%27%23consent-layer%20.js-accept-essential-cookies%27%29%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20bahnShadowRoot.querySelector%28%27%23consent-layer%20.js-show-cookie-settings%27%29%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28bahnShadowRoot.querySelectorAll%28%27%23consent-layer%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%29%3B%20tryToClick%28bahnShadowRoot.querySelector%28%27%23consent-layer%20.js-accept-selected-cookies%27%29%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%29%3B%20%7D%20%7D%20%20tryToClick%28%27.tarteaucitronDeny%27%2C%20%27tarteaucitron.js%20%28%E2%80%9CDeny%20all%E2%80%9D%20button%29%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23bs-gdpr-cookies-modal-advanced-btn%27%2C%20%27bsgdprcookies%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bname%3D%22bsgdpr%5B%5D%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23bs-gdpr-cookies-modal-accept-btn%27%2C%20%27bsgdprcookies%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.as-m-popover%20.as-a-btn--link%3Alast-child%3Anot%28%3Aonly-child%29%27%2C%20%27Yonderland%20group%20cookie%20message%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.as-m-popover%20input%5Btype%3D%22checkbox%22%5D%5Bname%3D%22cookie-group%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.as-m-popover%20.as-m-group%20.as-a-btn%27%2C%20%27Yonderland%20group%20cookie%20message%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27%5Bcky-i18n%3D%22gdpr.buttons.reject.title%22%5D%27%2C%20%27CookieYes%20GDPR%20Cookie%20Consent%27%29%3B%20%20tryToClick%28%27%23cookie-information-template-wrapper%20%23declineButton%27%2C%20%27Cookie%20Information%20CMP%20deny%20button%27%29%3B%20%20tryToClick%28%27.cookieplus-btn-decline-cookies%27%2C%20%27Cookie%20Plus%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.cookies-consent-banner%20%5Bdata-test%3D%22basic-consent-required-only-btn%22%5D%27%2C%20%27Happy%20Socks%27%2C%20_%20%3D%3E%20%7B%20%20if%20%28%21tryToClick%28%27.cookies-consent-banner%20button.required-only%2C%20%5Bname%3D%22advanced-cookie-consent%22%5D%20button.required-only%27%2C%20%27Happy%20Socks%27%29%29%20%7B%20tryToUncheck%28%27.cookies-consent-banner%20input%5Btype%3D%22checkbox%22%5D%3Achecked%2C%20%5Bname%3D%22advanced-cookie-consent%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.cookies-consent-banner%20button.confirm%2C%20%5Bname%3D%22advanced-cookie-consent%22%5D%20button.confirm%27%2C%20%27Happy%20Socks%27%29%3B%20%7D%20%7D%20%29%3B%20%20if%20%28%21tryToClick%28%27%5Bdata-cookie-refuse%5D%27%2C%20%27Borlabs%20Cookie%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%5Bdata-cookie-individual%5D%27%2C%20%27Borlabs%20Cookie%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-borlabs-cookie-switch%5D%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-cookie-accept%5D%27%2C%20%27Borlabs%20Cookie%27%29%3B%20%7D%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-component-class%3D%22Dlw.ScBase.Features.CookieConsentModule.CookieConsentModal%22%5D%20.cookie-settings-open%27%2C%20%27KBC%2FCera%20cookie%20consent%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-component-class%3D%22Dlw.ScBase.Features.CookieConsentModule.CookieConsentModal%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Anot%28%5Bname%3D%22Consent%22%5D%29%3Anot%28%5Bname%3D%22Functional%22%5D%29%3Anot%28%5Bname%3D%22Analytics%22%5D%29%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-component-class%3D%22Dlw.ScBase.Features.CookieConsentModule.CookieConsentModal%22%5D%20.cookie-save-button%27%2C%20%27KBC%2FCera%20cookie%20consent%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23ppms_cm_open-popup%2C%20.ppms_cm_open-popup_link%27%2C%20%27Piwik%20PRO%20Marketing%20Suite%27%2C%20_%20%3D%3E%20tryToClick%28%27%23ppms_cm_reject-all%2C%20.ppms_cm_reject-all%27%2C%20%27Piwik%20PRO%20Marketing%20Suite%27%29%20%29%3B%20%20tryToClick%28%27app-cookies%20button%3Anot%28.btn-primary%29%27%2C%20%27mynexuzhealth%27%29%3B%20%20if%20%28%21tryToClick%28%27.moove-gdpr-infobar-reject-btn%27%2C%20%27Moove%20GDPR%20Cookie%20Compliance%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.moove-gdpr-infobar-settings-btn%2C%20%23moove_gdpr_save_popup_settings_button%2C%20%5Bdata-href%3D%22%23moove_gdpr_cookie_modal%22%5D%27%2C%20%27Moove%20GDPR%20Cookie%20Compliance%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bname%5E%3D%22moove_gdpr%22%5D%3Anot%28%23moove_gdpr_strict_cookies%29%3Achecked%27%29%3B%20tryToClick%28%27.moove-gdpr-modal-save-settings%27%2C%20%27Moove%20GDPR%20Cookie%20Compliance%27%29%3B%20%7D%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%23fluv-cookies-button-goto-preferences%27%2C%20%27Fluvius%20cookie%20dialog%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bid%5E%3D%22fluv-cookies-checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23fluv-cookies-button-accept-preferences%27%2C%20%27Fluvius%20cookie%20dialog%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27%5Bdata-component-name%3D%22cookie-active-consent-notice%22%5D%20%5Bdata-component-name%3D%22reject%22%5D%27%2C%20%27Shopify%27%29%3B%20%20tryToClick%28%27.cc-btn.cc-deny%27%2C%20%27Pandectes%20%28one%20version%29%27%29%3B%20tryToClick%28%27.pd-cp-ui-rejectAll%27%2C%20%27Pandectes%20%28another%20version%29%27%29%3B%20%20tryToClick%28%27.js_cookie-bar__decline%27%2C%20%27Futurumshop.nl%27%29%3B%20%20if%20%28%21tryToClick%28%27.cmpboxbtnno%27%2C%20%27Consent%20Manager%20Provider%20%28without%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23cmpbox%20.cmptxt_btn_settings%27%2C%20%27Consent%20Manager%20Provider%20%28without%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%23cmpbox%20%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%29%3B%20tryToClick%28%27%23cmpbox%20.cmptxt_btn_save%27%2C%20%27Consent%20Manager%20Provider%20%28without%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%7D%20%20const%20cmpShadowRoot%20%3D%20deepQuerySelector%28%27%23cmpwrapper%27%29%3F.shadowRoot%3B%20if%20%28cmpShadowRoot%20%26%26%20%21tryToClick%28cmpShadowRoot.querySelector%28%27.cmpboxbtnno%27%29%2C%20%27Consent%20Manager%20Provider%20%28with%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20cmpShadowRoot.querySelector%28%27.cmptxt_btn_settings%27%29%2C%20%27Consent%20Manager%20Provider%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28cmpShadowRoot.querySelectorAll%28%27%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%29%29%3B%20tryToClick%28cmpShadowRoot.querySelector%28%27.cmptxt_btn_save%27%29%2C%20%27Consent%20Manager%20Provider%20%28with%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23axeptio_btn_dismiss%27%2C%20%27Axeptio%20%28without%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23axeptio_btn_configure%27%2C%20%27Axeptio%20%28without%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20let%20axeptioCurrStep%20%3D%200%3B%20let%20axeptioMaxSteps%20%3D%2010%3B%20const%20axeptioNextButtonSelector%20%3D%20%27%23axeptio_btn_next%27%3B%20const%20axeptioNextButtonsClicked%20%3D%20new%20WeakMap%28%29%3B%20const%20axeptioCheckboxSelector%20%3D%20%27%23axeptio_overlay%20%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%3B%20const%20axeptioCheckboxHoldersClicked%20%3D%20new%20WeakMap%28%29%3B%20function%20repeatedlyClickAxeptioButtons%28%29%20%7B%20axeptioCurrStep%2B%2B%3B%20%20const%20axeptioCheckboxes%20%3D%20deepQuerySelectorAll%28axeptioCheckboxSelector%29%3B%20axeptioCheckboxes.forEach%28checkbox%20%3D%3E%20%7B%20%20if%20%28%21checkbox.matches%28axeptioCheckboxSelector%29%29%20%7B%20return%3B%20%7D%20const%20axeptioCheckboxHolder%20%3D%20checkbox.closest%28%27.ListSwitch__Item%27%29%3F.querySelector%28%27.ListSwitch__Vendor%27%29%3B%20%20if%20%28%21axeptioCheckboxHolder%20%7C%7C%20axeptioCheckboxHoldersClicked.get%28axeptioCheckboxHolder%29%29%20%7B%20return%3B%20%7D%20axeptioCheckboxHoldersClicked.set%28axeptioCheckboxHolder%2C%20true%29%3B%20tryToClick%28axeptioCheckboxHolder%2C%20%60Axeptio%20%28without%20Shadow%20DOM%29%20%28step%20%24%7BaxeptioCurrStep%7D%29%20fake%20checkbox%20holder%60%29%3B%20%7D%29%3B%20%20const%20axeptioNextButton%20%3D%20deepQuerySelector%28axeptioNextButtonSelector%29%3B%20if%20%28%21axeptioNextButton%20%7C%7C%20axeptioNextButtonsClicked.get%28axeptioNextButton%29%29%20%7B%20return%3B%20%7D%20if%20%28%20tryToClick%28axeptioNextButton%2C%20%60Axeptio%20%28without%20Shadow%20DOM%29%20%28step%20%24%7BaxeptioCurrStep%7D%29%60%29%20%29%20%7B%20axeptioNextButtonsClicked.set%28axeptioNextButton%2C%20true%29%3B%20if%20%28axeptioCurrStep%20%3C%20axeptioMaxSteps%29%20%7B%20setTimeout%28repeatedlyClickAxeptioButtons%2C%20125%29%3B%20%7D%20%7D%20%7D%20repeatedlyClickAxeptioButtons%28%29%3B%20%7D%20%29%3B%20%7D%20%20const%20axeptioShadowRoot%20%3D%20deepQuerySelector%28%27%23axeptio_overlay%20%3E%20.needsclick%27%29%3F.shadowRoot%3B%20if%20%28axeptioShadowRoot%29%20%7B%20if%20%28%21tryToClick%28axeptioShadowRoot.querySelector%28%27%23axeptio_btn_dismiss%27%29%2C%20%27Axeptio%20%28with%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20axeptioShadowRoot.querySelector%28%27%23axeptio_btn_configure%27%29%2C%20%27Axeptio%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20let%20axeptioCurrStep%20%3D%200%3B%20let%20axeptioMaxSteps%20%3D%2010%3B%20const%20axeptioNextButtonSelector%20%3D%20%27%23axeptio_btn_next%27%3B%20const%20axeptioNextButtonsClicked%20%3D%20new%20WeakMap%28%29%3B%20const%20axeptioCheckboxSelector%20%3D%20%27%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%3B%20const%20axeptioCheckboxHoldersClicked%20%3D%20new%20WeakMap%28%29%3B%20function%20repeatedlyClickAxeptioButtons%28%29%20%7B%20axeptioCurrStep%2B%2B%3B%20%20const%20axeptioCheckboxes%20%3D%20axeptioShadowRoot.querySelectorAll%28axeptioCheckboxSelector%29%3B%20axeptioCheckboxes.forEach%28checkbox%20%3D%3E%20%7B%20%20if%20%28%21checkbox.matches%28axeptioCheckboxSelector%29%29%20%7B%20return%3B%20%7D%20const%20axeptioCheckboxHolder%20%3D%20checkbox.closest%28%27.ListSwitch__Item%27%29%3F.querySelector%28%27.ListSwitch__Vendor%27%29%3B%20%20if%20%28%21axeptioCheckboxHolder%20%7C%7C%20axeptioCheckboxHoldersClicked.get%28axeptioCheckboxHolder%29%29%20%7B%20return%3B%20%7D%20axeptioCheckboxHoldersClicked.set%28axeptioCheckboxHolder%2C%20true%29%3B%20tryToClick%28axeptioCheckboxHolder%2C%20%60Axeptio%20%28step%20%24%7BaxeptioCurrStep%7D%29%20fake%20checkbox%20holder%60%29%3B%20%7D%29%3B%20%20const%20axeptioNextButton%20%3D%20axeptioShadowRoot.querySelector%28axeptioNextButtonSelector%29%3B%20if%20%28%21axeptioNextButton%20%7C%7C%20axeptioNextButtonsClicked.get%28axeptioNextButton%29%29%20%7B%20return%3B%20%7D%20if%20%28%20tryToClick%28axeptioNextButton%2C%20%60Axeptio%20%28step%20%24%7BaxeptioCurrStep%7D%29%60%29%20%29%20%7B%20axeptioNextButtonsClicked.set%28axeptioNextButton%2C%20true%29%3B%20if%20%28axeptioCurrStep%20%3C%20axeptioMaxSteps%29%20%7B%20setTimeout%28repeatedlyClickAxeptioButtons%2C%20125%29%3B%20%7D%20%7D%20%7D%20repeatedlyClickAxeptioButtons%28%29%3B%20%7D%20%29%3B%20%7D%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--pre-step-next%27%2C%20%27NPO%20CCM%20bar%20%28without%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20%20deepQuerySelectorAll%28%27%5Bid%5E%3D%22ccm_%22%5D%20input%5Btype%3D%22radio%22%5D%5Bvalue%3D%22false%22%5D%3Anot%28%3Achecked%29%27%29.forEach%28radio%20%3D%3E%20%7B%20if%20%28radio.checked%29%20%7B%20return%3B%20%7D%20const%20labelText%20%3D%20radio.getAttribute%28%27aria-label%27%29%20%7C%7C%20%60NPO%20CCM%3A%20%24%7Bradio.name%7D%60%3B%20console.log%28%60nocookie%3A%20checking%20radio%20button%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%3A%20%60%2C%20radio%29%3B%20radio.click%28%29%3B%20radio.checked%20%3D%20true%3B%20%7D%29%3B%20tryToClick%28%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--save%27%2C%20%27NPO%20CCM%20bar%20%28without%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%20const%20npoCcmShadowRoot%20%3D%20deepQuerySelector%28%27%23ccm_notification_host%27%29%3F.shadowRoot%3B%20if%20%28npoCcmShadowRoot%29%20%7B%20clickAndWaitOrDoItNow%28%20npoCcmShadowRoot.querySelector%28%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--pre-step-next%27%29%2C%20%27NPO%20CCM%20bar%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20%20npoCcmShadowRoot.querySelectorAll%28%27%5Bid%5E%3D%22ccm_%22%5D%20input%5Btype%3D%22radio%22%5D%5Bvalue%3D%22false%22%5D%3Anot%28%3Achecked%29%27%29.forEach%28radio%20%3D%3E%20%7B%20if%20%28radio.checked%29%20%7B%20return%3B%20%7D%20const%20labelText%20%3D%20radio.getAttribute%28%27aria-label%27%29%20%7C%7C%20%60NPO%20CCM%3A%20%24%7Bradio.name%7D%60%3B%20console.log%28%60nocookie%3A%20checking%20radio%20button%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%3A%20%60%2C%20radio%29%3B%20radio.click%28%29%3B%20radio.checked%20%3D%20true%3B%20%7D%29%3B%20tryToClick%28npoCcmShadowRoot.querySelector%28%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--save%27%29%2C%20%27NPO%20CCM%20bar%20%28with%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%7D%20%20tryToClick%28%27.wp-pt-cookie-consent__cta.vl-button%3Anot%28%23cookie-conosent-modal-accept%29%27%2C%20%27Flanders%20cookie%20consent%20%281%29%27%29%3B%20%20tryToClick%28%27button.minimal-cookies%27%2C%20%27Flanders%20cookie%20consent%20%282%29%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23btn-cookie-settings%27%2C%20%27Mobile%20Vikings%20cookie%20wall%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bname%24%3D%22-cookies%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23btn-accept-custom-cookies%27%2C%20%27Mobile%20Vikings%20cookie%20wall%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.js-manage-modalCookiesTrigger%2C%20a.privacyCookieSwitch%27%2C%20%27Canyon%20cookies%20modal%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bclass%2A%3D%22js-dataPrivacyCheckbox%22%5D%3Achecked%27%29%3B%20retryToClick%28%27%23js-manage-data-privacy-save-button%27%2C%20%27Canyon%20cookies%20modal%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27.cc-nb-reject%27%2C%20%27FreePrivacyPolicy.com%20Free%20Cookie%20Consent%27%29%3B%20%20deepQuerySelectorAll%28externalConsentManagerIframeSelectors.join%28%27%2C%27%29%29.forEach%28%20iframe%20%3D%3E%20%7B%20probableExternalConsentManagerIframeUris.push%28iframe.src%29%3B%20probableExternalConsentManagerIframes.push%28iframe%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21hasFoundSomethingToClick%20%26%26%20%21probableExternalConsentManagerIframes.length%29%20%7B%20const%20denyAllTexts%20%3D%20%5B%20%20%27%20deny%20%27%2C%20%27%20disallow%20%27%2C%20%27%20decline%20%27%2C%20%27%20refuse%20%27%2C%20%27%20reject%20%27%2C%20%27%20dismiss%20%27%2C%20%27%20necessary%20%27%2C%20%27%20essential%27%2C%20%27%20mandatory%20%27%2C%20%27%20required%20%27%2C%20%27%20minimal%20%27%2C%20%27%20no%20cookies%20%27%2C%20%27%20without%20cookies%20%27%2C%20%27%20without%20accepting%20%27%2C%20%27%20without%20agreeing%20%27%2C%20%27%20without%20supporting%20%27%2C%20%27%20do%20not%20accept%20%27%2C%20%27%20do%20not%20agree%20%27%2C%20%22%20don%27t%20accept%20%22%2C%20%27%20no%20thank%27%2C%20%27%20no%2C%20thank%27%2C%20%20%27%20weigeren%20%27%2C%20%27%20weiger%20%27%2C%20%27%20afwijzen%20%27%2C%20%27%20verwerpen%20%27%2C%20%27%20noodzakelijk%27%2C%20%27%20essenti%C3%ABle%20%27%2C%20%27%20essentieel%20%27%2C%20%27%20verplichte%20%27%2C%20%27%20vereiste%20%27%2C%20%27%20minimale%20%27%2C%20%27%20enkel%20%27%2C%20%27%20alleen%20%27%2C%20%27%20geen%20cookies%20%27%2C%20%27%20zonder%20cookies%20%27%2C%20%27%20zonder%20aanvaarden%20%27%2C%20%27%20zonder%20te%20aanvaarden%20%27%2C%20%27%20zonder%20accepteren%20%27%2C%20%27%20zonder%20te%20accepteren%20%27%2C%20%27%20niet%20toestaan%20%27%2C%20%27%20niet%20toelaten%20%27%2C%20%27%20niets%20toestaan%20%27%2C%20%27%20niets%20toelaten%20%27%2C%20%27%20nee%2C%20bedankt%20%27%2C%20%27%20nee%20bedankt%20%27%2C%20%27%20nee%2C%20dank%27%2C%20%27%20nee%20dank%27%2C%20%27%20niet%20akkoord%20%27%2C%20%20%27%20refuse%27%2C%20%27%20rejete%27%2C%20%27%20rejette%27%2C%20%27%20n%C3%A9cessaire%27%2C%20%27%20essentiel%27%2C%20%27%20requis%27%2C%20%27%20obligatoire%27%2C%20%27%20minimum%20%27%2C%20%27%20minimal%27%2C%20%27%20seulement%20%27%2C%20%27%20seul%20%27%2C%20%27%20pas%20de%20cookies%20%27%2C%20%27%20aucun%20%27%2C%20%27%20sans%20cookies%20%27%2C%20%27%20sans%20accepter%20%27%2C%20%27%20pas%20accepter%20%27%2C%20%27%20rien%20accepter%20%27%2C%20%27%20non%20merci%20%27%2C%20%27%20non%2C%20merci%20%27%2C%20%20%27%20ablehnen%20%27%2C%20%27%20lehne%20%27%2C%20%27%20notwendig%27%2C%20%27%20erforderlich%27%2C%20%27%20obligatorisch%27%2C%20%27%20minimale%20%27%2C%20%27%20nur%20%27%2C%20%27%20kein%20cookies%20%27%2C%20%27%20ohne%20cookies%20%27%2C%20%27%20ohne%20zu%20akzeptieren%20%27%2C%20%27%20nicht%20akzeptieren%20%27%2C%20%27%20nichts%20akzeptieren%20%27%2C%20%27%20nein%20danke%20%27%2C%20%27%20nein%2C%20danke%20%27%2C%20%20%27%20rifiut%27%2C%20%27%20rifi%C3%B9t%27%2C%20%27%20necessari%27%2C%20%27%20essenziali%27%2C%20%27%20richiesti%27%2C%20%27%20obbligatori%27%2C%20%27%20minimi%27%2C%20%27%20solo%20%27%2C%20%27%20senza%20cookie%20%27%2C%20%27%20senza%20accettare%20%27%2C%20%27%20non%20accettare%20%27%2C%20%27%20non%20permettere%20%27%2C%20%27%20no%2C%20grazie%20%27%2C%20%27%20no%20grazie%20%27%2C%20%20%27%20rechaz%27%2C%20%27%20necesari%27%2C%20%27%20esencial%27%2C%20%27%20requerid%27%2C%20%27%20obligatori%27%2C%20%27%20m%C3%ADnim%27%2C%20%27%20solo%20%27%2C%20%27%20sin%20cookies%20%27%2C%20%27%20sin%20aceptar%20%27%2C%20%27%20no%20aceptar%20%27%2C%20%27%20no%20permitir%20%27%2C%20%27%20no%2C%20gracias%20%27%2C%20%27%20no%20gracias%20%27%2C%20%20%27%20nekte%20al%27%2C%20%27%20avvis%20al%27%2C%20%27%20avsl%C3%A5%27%2C%20%27%20n%C3%B8dvendig%27%2C%20%27%20obligatorisk%27%2C%20%27%20viktig%27%2C%20%27%20minimal%27%2C%20%27%20kun%20%27%2C%20%27%20uten%20informasjonskapsler%20%27%2C%20%27%20uten%20%C3%A5%20godta%20%27%2C%20%27%20uten%20%C3%A5%20akseptere%20%27%2C%20%27%20ikke%20akseptere%20%27%2C%20%27%20ikke%20tillate%20%27%2C%20%27%20nei%20takk%20%27%2C%20%27%20nei%2C%20takk%20%27%2C%20%20%27%20refusar%20%27%2C%20%27%20rebutjar%20%27%2C%20%27%20necessari%27%2C%20%27%20essencial%27%2C%20%27%20obligatori%27%2C%20%27%20m%C3%ADnim%27%2C%20%27%20nom%C3%A9s%20%27%2C%20%27%20solament%20%27%2C%20%27%20unicament%20%27%2C%20%27%20sense%20galetes%20%27%2C%20%27%20sense%20cookies%20%27%2C%20%27%20sense%20acceptar%20%27%2C%20%27%20no%20perm%C3%A8s%20%27%2C%20%27%20no%20permetre%20%27%2C%20%27%20no%20gr%C3%A0cies%20%27%2C%20%22%20no%20d%27acord%20%22%2C%20%5D%3B%20const%20xPathButtonishExpression%20%3D%20%5B%20%27local-name%28%29%20%3D%20%22button%22%27%2C%20%27local-name%28%29%20%3D%20%22a%22%27%2C%20%27%40role%20%3D%20%22button%22%27%2C%20%27%40type%20%3D%20%22button%22%27%2C%20%27%40type%20%3D%20%22submit%22%27%2C%20%27contains%28%40class%2C%20%22button%22%29%27%2C%20%27contains%28%40class%2C%20%22Button%22%29%27%2C%20%27contains%28%40class%2C%20%22btn%22%29%27%2C%20%27contains%28%40class%2C%20%22Btn%22%29%27%2C%20%27%40onclick%27%2C%20%5D.join%28%27%20or%20%27%29%3B%20const%20xPathTextExpression%20%3D%20denyAllTexts%20.map%28text%20%3D%3E%20%60contains%28translate%28concat%28%22%20%22%2C%20.%2C%20%22%20%22%2C%20%40value%2C%20%22%20%22%29%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%E2%80%99%C2%A0%5Ct%5Cn%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%27%20%22%29%2C%20%22%24%7Btext.toLowerCase%28%29.replaceAll%28%27%22%27%2C%20%27%5C%5C%22%27%29%7D%22%29%60%29%20.join%28%27%20or%20%27%29%3B%20const%20xPathExpression%20%3D%20%60%2F%2F%2A%5B%24%7BxPathButtonishExpression%7D%5D%5B%24%7BxPathTextExpression%7D%5D%60%3B%20%20function%20getXPathResults%28xPathExpression%2C%20roots%29%20%7B%20if%20%28%21roots%29%20%7B%20roots%20%3D%20getAllDocuments%28%29%3B%20%7D%20else%20if%20%28%21Array.isArray%28roots%29%29%20%7B%20roots%20%3D%20%5Broots%5D%3B%20%7D%20const%20xPathResults%20%3D%20%5B%5D%3B%20roots.forEach%28%28root%2C%20i%29%20%3D%3E%20%7B%20const%20document%20%3D%20root.documentElement%20%26%26%20typeof%20root.evaluate%20%3D%3D%3D%20%27function%27%20%3F%20root%20%3A%20root.ownerDocument%3B%20let%20xPathResult%20%3D%20document.evaluate%28xPathExpression%2C%20root%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%29%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20xPathResult.snapshotLength%3B%20i%2B%2B%29%20%7B%20xPathResults.push%28xPathResult.snapshotItem%28i%29%29%3B%20%7D%20%7D%29%3B%20return%20xPathResults%3B%20%7D%20const%20xPathResults%20%3D%20getXPathResults%28xPathExpression%29%3B%20%20if%20%28%21xPathResults.length%29%20%7B%20getShadowRoots%28%29.forEach%28%20%20shadowRoot%20%3D%3E%20shadowRoot.childElementCount%20%26%26%20xPathResults.push%28...getXPathResults%28xPathExpression%2C%20shadowRoot.children%5BshadowRoot.childElementCount%20-%201%5D%29%29%20%29%3B%20%7D%20const%20cssConsentDescendantSelector%20%3D%20%5B%20%27consent%27%2C%20%27cookie%27%2C%20%27gdpr%27%2C%20%27privacy%27%2C%20%27terms%27%2C%20%27tcf%27%2C%20%5D.map%28%20text%20%3D%3E%20%5B%20%60%3Anot%28body%29%5Bclass%2A%3D%22%24%7Btext%7D%22%5D%60%2C%20%60%3Anot%28body%29%5Bclass%2A%3D%22%24%7Btext%7D%22%5D%20%2A%60%2C%20%60%3Anot%28body%29%5Bid%2A%3D%22%24%7Btext%7D%22%5D%60%2C%20%60%3Anot%28body%29%5Bid%2A%3D%22%24%7Btext%7D%22%5D%20%2A%60%2C%20%60form%5Baction%2A%3D%22%24%7Btext%7D%22%5D%20%2A%60%20%5D.join%28%27%2C%20%27%29%20%29.join%28%27%2C%20%27%29%3B%20const%20cookieTextRegexp%20%3D%20%2Fcooki%7Cinformasjonskaps%2Fi%3B%20let%20genericDenyButtons%20%3D%20%5B%5D%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20xPathResults.length%3B%20i%2B%2B%29%20%7B%20const%20node%20%3D%20xPathResults%5Bi%5D%3B%20%20let%20offsetParentIsOutsideOfShadowDom%20%3D%20node.offsetParent%20%26%26%20%21node.offsetParent.contains%28node%29%3B%20let%20hasTextMatch%20%3D%20%28node.offsetParent%20%7C%7C%20node%29.textContent.match%28cookieTextRegexp%29%3B%20if%20%28%21hasTextMatch%20%26%26%20offsetParentIsOutsideOfShadowDom%29%20%7B%20hasTextMatch%20%3D%20node.getRootNode%28%29.textContent.match%28cookieTextRegexp%29%3B%20%7D%20let%20hasCssConsentDescendantMatch%20%3D%20node.matches%28cssConsentDescendantSelector%29%3B%20if%20%28%21hasCssConsentDescendantMatch%20%26%26%20offsetParentIsOutsideOfShadowDom%29%20%7B%20hasCssConsentDescendantMatch%20%3D%20node.offsetParent.matches%28cssConsentDescendantSelector%29%3B%20if%20%28%21hasCssConsentDescendantMatch%29%20%7B%20hasCssConsentDescendantMatch%20%3D%20node.getRootNode%28%29%3F.host%3F.matches%28cssConsentDescendantSelector%29%3B%20%7D%20%7D%20%20if%20%28hasTextMatch%20%7C%7C%20hasCssConsentDescendantMatch%29%20%7B%20genericDenyButtons.push%28node%29%3B%20%7D%20%7D%20%20genericDenyButtons%20%3D%20genericDenyButtons.filter%28node%20%3D%3E%20%21genericDenyButtons.some%28otherNode%20%3D%3E%20node%20%21%3D%3D%20otherNode%20%26%26%20node.contains%28otherNode%29%29%29%3B%20genericDenyButtons.forEach%28node%20%3D%3E%20%7B%20console.log%28%60nocookie%3A%20there%20was%20no%20known%20cookie%20dialog%2C%20but%20looking%20for%20generic%20button%2Flink%20text%2C%20I%20did%20find%20this%20to%20click%20%28%E2%80%9C%24%7Bnode.textContent.replace%28%2F%5Cs%2B%2Fg%2C%20%27%20%27%29.trim%28%29%7D%E2%80%9D%29%3A%20%60%2C%20node%29%3B%20node.click%28%29%3B%20%7D%29%3B%20%7D%20%20const%20hasAlreadyGrabbedAttention%20%3D%20probableExternalConsentManagerIframes.some%28%20iframe%20%3D%3E%20iframe.classList.contains%28%27xxxJanProbableExternalConsentManagerIframe%27%29%20%29%3B%20if%20%28hasAlreadyGrabbedAttention%29%20%7B%20if%20%28probableExternalConsentManagerIframeUris.length%20%3D%3D%3D%201%29%20%7B%20alert%28%60There%20appears%20to%20be%20an%20IFRAME%20of%20an%20external%20consent%20manager.%20This%20bookmarklet%20cannot%20access%20that%20IFRAME%2C%20sorry.%5Cn%5CnURI%3A%20%24%7BprobableExternalConsentManagerIframeUris%5B0%5D%7D%60%29%3B%20%7D%20else%20if%20%28probableExternalConsentManagerIframeUris.length%20%3E%201%29%20%7B%20alert%28%60There%20appear%20to%20be%20%24%7BprobableExternalConsentManagerIframeUris.length%7D%20IFRAMEs%20of%20an%20external%20consent%20manager.%20This%20bookmarklet%20cannot%20access%20such%20IFRAME%2C%20sorry.%5Cn%5CnURIs%3A%5Cn%2A%20%24%7BprobableExternalConsentManagerIframeUris.join%28%27%5Cn%5Cn%2A%20%27%29%7D%60%29%3B%20%7D%20%7D%20const%20randomRgb%20%3D%20_%20%3D%3E%20Math.round%28Math.random%28%29%20%2A%20255%29%3B%20const%20numKeyframes%20%3D%2010%3B%20const%20outlineWidth%20%3D%206%3B%20let%20keyframesBody%20%3D%20%27%27%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20numKeyframes%3B%20i%2B%2B%29%20%7B%20keyframesBody%20%2B%3D%20%60%24%7BMath.round%28i%20%2F%20%28numKeyframes%20-%201%29%20%2A%20100%29%7D%25%20%7B%20outline-width%3A%20%24%7BoutlineWidth%7Dpx%3B%20outline-style%3A%20%24%7Bi%20%25%202%20%3D%3D%3D%200%20%3F%20%27groove%27%20%3A%20%27ridge%27%7D%3B%20outline-color%3A%20rgb%28%24%7BrandomRgb%28%29%7D%2C%20%24%7BrandomRgb%28%29%7D%2C%20%24%7BrandomRgb%28%29%7D%29%3B%20%7D%60%3B%20%7D%20const%20animationName%20%3D%20%60xxxJanAttentionGrabber%24%7B%2Bnew%20Date%28%29%7D%60%3B%20probableExternalConsentManagerIframes.forEach%28iframe%20%3D%3E%20%7B%20iframe.classList.add%28%27xxxJanProbableExternalConsentManagerIframe%27%29%3B%20const%20iframeBounds%20%3D%20iframe.getBoundingClientRect%28%29%3B%20const%20div%20%3D%20iframe.parentNode.insertBefore%28iframe.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%2C%20iframe.nextSibling%29%3B%20div.classList.add%28%27xxxJanProbableExternalConsentManagerAttentionGrabber%27%29%3B%20div.style.width%20%3D%20%60%24%7Biframe.offsetWidth%20-%20%28outlineWidth%20%2A%202%29%7Dpx%60%3B%20div.style.height%20%3D%20%60%24%7Biframe.offsetHeight%20-%20%28outlineWidth%20%2A%202%29%7Dpx%60%3B%20div.style.left%20%3D%20%60%24%7BiframeBounds.x%20%2B%20outlineWidth%7Dpx%60%3B%20div.style.top%20%3D%20%60%24%7BiframeBounds.y%20%2B%20outlineWidth%7Dpx%60%3B%20div.style.zIndex%20%3D%20iframe.ownerDocument%3F.defaultView%3F.getComputedStyle%28iframe%29%3F.zIndex%20%3F%3F%201969%20%3B%20div.addEventListener%28%27animationend%27%2C%20_%20%3D%3E%20div.remove%28%29%29%3B%20const%20style%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20style.media%20%3D%20%27screen%20and%20%28prefers-reduced-motion%3A%20no-preference%29%27%3B%20style.textContent%20%3D%20%60%20.xxxJanProbableExternalConsentManagerAttentionGrabber%20%7B%20position%3A%20absolute%3B%20background%3A%20rgba%28128%2C%20216%2C%20255%2C%200.15%29%3B%20pointer-events%3A%20none%3B%20animation%3A%201s%20%24%7BanimationName%7D%3B%20%7D%20%40keyframes%20%24%7BanimationName%7D%20%7B%20%24%7BkeyframesBody%7D%20%7D%20%60%3B%20iframe.ownerDocument.head.appendChild%28style%29%3B%20%7D%29%3B%20%7D%29%28%29%3B/* ./_toolbar/25-nocookie.js */" ADD_DATE="1640550301" LAST_MODIFIED="1640550301" SHORTCUTURL="">⛔🍪⛔</A>
<DD><P>Close the cookies/tracking/personalization permission dialog rejecting all
non-essential cookies and objecting to all legitimate uses.</P></DD>
<DT><A HREF="javascript:%28function%20rmi%28%29%20%7B%20%20let%20processed%20%3D%20new%20Set%28%29%3B%20%20function%20isEmpty%28node%29%20%7B%20return%20%21node%20%7C%7C%20%28%21node.childElementCount%20%26%26%20%28typeof%20node.textContent%20%21%3D%3D%20%27string%27%20%7C%7C%20node.textContent.trim%28%29%20%3D%3D%3D%20%27%27%29%29%3B%20%7D%20%20%28function%20execute%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.querySelectorAll%20%21%3D%3D%20%27function%27%20%7C%7C%20processed.has%28document%29%29%20%7B%20return%3B%20%7D%20processed.add%28document%29%3B%20%20Array.from%28document.querySelectorAll%28%27iframe%3Anot%28%23xxxJanConsole%29%27%29%29.forEach%28iframe%20%3D%3E%20%7B%20let%20shouldDelete%20%3D%20false%3B%20try%20%7B%20shouldDelete%20%3D%20iframe.contentDocument%20%3D%3D%3D%20null%20%7C%7C%20iframe.src%20%3D%3D%3D%20%27%27%3B%20%7D%20catch%20%28e%29%20%7B%20shouldDelete%20%3D%20true%3B%20%7D%20if%20%28shouldDelete%29%20%7B%20console.log%28%27rm%20IFRAMEs%3A%20found%20suspicious%20IFRAME%20to%20delete%3A%20%27%2C%20iframe%29%3B%20let%20parentNode%20%3D%20iframe.parentNode%3B%20iframe.remove%28%29%3B%20while%20%28parentNode%20%26%26%20isEmpty%28parentNode%29%29%20%7B%20console.log%28%27rm%20IFRAMEs%3A%20found%20empty%20parent%20node%20to%20delete%3A%20%27%2C%20parentNode%29%3B%20let%20oldParentNode%20%3D%20parentNode%3B%20parentNode%20%3D%20parentNode.parentNode%3B%20oldParentNode.remove%28%29%3B%20%7D%20%7D%20else%20%7B%20console.log%28%27rm%20IFRAMEs%3A%20found%20non-suspicious%20IFRAME%20to%20recurse%20into%3A%20%27%2C%20iframe%29%3B%20execute%28iframe.contentDocument%29%3B%20%7D%20%7D%29%3B%20%7D%29%28document%29%3B%20%7D%29%28%29%3B/* ./_toolbar/90-rmi.js */" ADD_DATE="1548882032" LAST_MODIFIED="1548882032" SHORTCUTURL="">rm IFRAMEs</A>
<DD><P>Remove all the IFRAMEs that are off-site or do not have a “src” attribute.
These are typically used for ads and unwanted external content.
navigation etc.
IFRAMEs without a “src” attribute are also used for sandboxing untrusted
content, e.g. on mailinator.com, but I have not yet found a way to
distinguish between src-less IFRAMEs for ads and src-less IFRAMEs for
“regular” content. Maybe try to guess based on the dimensions? Meh.</P></DD>
</DL>
<DT><H3>Content</H3>
<DD><P>Tweak the page's content.</P>
<DL><P>
<DT><A HREF="javascript:%28function%20alt2title%28%29%20%7B%20var%20processedDocuments%20%3D%20%5B%5D%3B%20%28function%20execute%28document%29%20%7B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20if%20%28processedDocuments.indexOf%28document%29%20%3E%20-1%29%20%7B%20return%3B%20%7D%20processedDocuments.push%28document%29%3B%20function%20setTitleForElement%28element%29%20%7B%20if%20%28%21element%20%7C%7C%20element.hasBeenProcessedByAlt2Title%29%20%7B%20return%3B%20%7D%20var%20newTitle%20%3D%20%27%27%3B%20if%20%28element.hasAttribute%28%27title%27%29%29%20%7B%20newTitle%20%3D%20element.getAttribute%28%27title%27%29%20%2B%20%27%5Cn%5Cn%27%3B%20%7D%20if%20%28%21element.hasAttribute%28%27alt%27%29%29%20%7B%20newTitle%20%2B%3D%20%27%28Missing%20alt%20text%29%27%3B%20%7D%20else%20%7B%20var%20alt%20%3D%20element.getAttribute%28%27alt%27%29%3B%20if%20%28alt%20%3D%3D%3D%20%27%27%29%20%7B%20newTitle%20%2B%3D%20%27%28Empty%20alt%20text%29%27%3B%20%7D%20else%20%7B%20newTitle%20%2B%3D%20%27Alt%20text%3A%20%E2%80%9C%27%20%2B%20alt%20%2B%20%27%E2%80%9D%27%3B%20%7D%20%7D%20element.setAttribute%28%27title%27%2C%20newTitle%29%3B%20console.log%28%27Alt%20to%20title%3A%20setting%20title%20for%20%27%2C%20element%2C%20%27%20to%3A%20%27%2C%20newTitle%29%3B%20element.hasBeenProcessedByAlt2Title%20%3D%20true%3B%20%7D%3B%20%20var%20imageSelector%20%3D%20%27img%2C%20input%5Btype%3D%22image%22%5D%2C%20area%27%3B%20%5B%5D.forEach.call%28document.querySelectorAll%28imageSelector%29%2C%20setTitleForElement%29%3B%20%20document.addEventListener%28%27mousemove%27%2C%20function%20%28e%29%20%7B%20var%20element%3B%20if%20%28e.target%20%26%26%20typeof%20e.target.closest%20%3D%3D%3D%20%27function%27%20%26%26%20%28element%20%3D%20e.target.closest%28imageSelector%29%29%29%20%7B%20setTitleForElement%28element%29%3B%20%7D%20%7D%2C%20false%29%3B%20%7D%29%28document%29%3B%20%7D%29%28%29%3B/* ./content/alt2title.js */" ADD_DATE="1478334146" LAST_MODIFIED="1538078893" SHORTCUTURL="alt2title">Alt to title</A>
<DD><P>Set the IMG@title to the IMG@alt attribute. If the image already has a title
attribute, separate the title and alt text with a blank line.</P></DD>
<DT><A HREF="javascript:%28function%20comparecells%28%29%20%7B%20%20function%20getTextFromElement%28element%29%20%7B%20%20return%20element.textContent.trim%28%29.toLowerCase%28%29%3B%20%7D%20%20async%20function%20getSha256Bytes%28string%29%20%7B%20try%20%7B%20if%20%28%20typeof%20crypto%20%3D%3D%3D%20%27object%27%20%26%26%20typeof%20crypto.subtle%20%3D%3D%3D%20%27object%27%20%26%26%20typeof%20crypto.subtle.digest%20%3D%3D%3D%20%27function%27%20%26%26%20typeof%20Uint8Array%20%3D%3D%3D%20%27function%27%20%26%26%20typeof%20TextEncoder%20%3D%3D%3D%20%27function%27%20%29%20%7B%20return%20new%20Uint8Array%28await%20crypto.subtle.digest%28%27SHA-256%27%2C%20new%20TextEncoder%28%27utf-8%27%29.encode%28string%29%29%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20null%3B%20%7D%20%7D%20async%20function%20getColorsForValue%28value%29%20%7B%20%20getColorsForValue.cellValuesToRgb%20%3D%20getColorsForValue.cellValuesToRgb%20%7C%7C%20%7B%7D%3B%20if%20%28%21getColorsForValue.cellValuesToRgb%5Bvalue%5D%29%20%7B%20let%20normalizedValue%20%3D%20value.trim%28%29.toLowerCase%28%29%3B%20let%20hash%3B%20let%20yesValues%20%3D%20%5B%20%27%E2%9C%94%27%2C%20%27yes%27%2C%20%27ja%27%2C%20%27oui%27%2C%20%27si%27%2C%20%27s%C3%AD%27%20%5D%3B%20let%20noValues%20%3D%20%5B%20%27x%27%2C%20%27no%27%2C%20%27nee%27%2C%20%27neen%27%2C%20%27nein%27%2C%20%27non%27%2C%20%27no%27%20%5D%3B%20if%20%28yesValues.indexOf%28normalizedValue%29%20%3E%20-1%29%20%7B%20%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%20%3D%20%5B%20150%2C%20255%2C%2032%20%5D%3B%20%7D%20else%20if%20%28noValues.indexOf%28normalizedValue%29%20%3E%20-1%29%20%7B%20%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%20%3D%20%5B%20238%2C%2032%2C%2032%20%5D%3B%20%7D%20else%20if%20%28%28shaBytes%20%3D%20await%20getSha256Bytes%28normalizedValue%29%29%29%20%7B%20%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%20%3D%20%5B%20shaBytes%5B0%5D%2C%20shaBytes%5B1%5D%2C%20shaBytes%5B2%5D%20%5D%3B%20%7D%20else%20%7B%20%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%20%3D%20%5B%20Math.random%28%29%20%2A%20255%2C%20Math.random%28%29%20%2A%20255%2C%20Math.random%28%29%20%2A%20255%20%5D%3B%20%7D%20%7D%20%20let%20isLight%20%3D%20150%20%3C%20%28%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%5B0%5D%20%2A%200.299%20%2B%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%5B1%5D%20%2A%200.587%20%2B%20getColorsForValue.cellValuesToRgb%5Bvalue%5D%5B2%5D%20%2A%200.114%20%29%3B%20return%20%7B%20backgroundColor%3A%20%27rgb%28%27%20%2B%20getColorsForValue.cellValuesToRgb%5Bvalue%5D.join%28%27%2C%20%27%29%20%2B%20%27%29%27%2C%20color%3A%20isLight%20%3F%20%27black%27%20%3A%20%27white%27%2C%20textShadow%3A%20isLight%20%3F%20%271px%201px%203px%20white%27%20%3A%20%271px%201px%203px%20black%27%20%7D%3B%20%7D%20%20%28function%20execute%28document%29%20%7B%20Array.from%28document.querySelectorAll%28%27table%27%29%29.forEach%28table%20%3D%3E%20%7B%20Array.from%28table.tBodies%29.forEach%28tBody%20%3D%3E%20%7B%20if%20%28tBody.rows.length%20%3C%203%29%20%7B%20console.log%28%27Compare%20cells%3A%20skipping%20table%20body%20%27%2C%20tBody%2C%20%27%20because%20it%20only%20has%20%27%2C%20tBody.rows.length%2C%20%27%20rows%27%29%3B%20return%3B%20%7D%20Array.from%28tBody.rows%29.forEach%28tr%20%3D%3E%20%7B%20%20let%20cellValues%20%3D%20%5B%5D%3B%20let%20uniqueCellValues%20%3D%20new%20Set%28%29%3B%20Array.from%28tr.cells%29.forEach%28%28cell%2C%20i%29%20%3D%3E%20%7B%20%20if%20%28cell.tagName.toUpperCase%28%29%20%3D%3D%3D%20%27TH%27%29%20%7B%20return%3B%20%7D%20%20if%20%28i%20%3D%3D%3D%200%29%20%7B%20return%3B%20%7D%20cellValues%5Bi%5D%20%3D%20getTextFromElement%28cell%29%3B%20uniqueCellValues.add%28cellValues%5Bi%5D%29%3B%20%7D%29%3B%20%20let%20isFirstValue%20%3D%20true%3B%20let%20firstValue%3B%20cellValues.forEach%28async%20function%28cellValue%2C%20i%29%20%7B%20let%20hasTwoUniqueValues%20%3D%20uniqueCellValues.size%20%3D%3D%202%3B%20if%20%28isFirstValue%29%20%7B%20firstValue%20%3D%20cellValue%3B%20isFirstValue%20%3D%20false%3B%20%7D%20let%20backgroundColor%3B%20let%20color%3B%20let%20textShadow%3B%20if%20%28%20uniqueCellValues.size%20%3D%3D%201%20%7C%7C%20%28hasTwoUniqueValues%20%26%26%20cellValue%20%3D%3D%3D%20firstValue%29%20%7C%7C%20cellValue.trim%28%29%20%3D%3D%3D%20%27%27%20%29%20%7B%20backgroundColor%20%3D%20%27inherit%27%3B%20color%20%3D%20%27inherit%27%3B%20textShadow%20%3D%20%27inherit%27%3B%20%7D%20else%20%7B%20backgroundColor%20%3D%20%28await%20getColorsForValue%28cellValue%29%29.backgroundColor%3B%20color%20%3D%20%28await%20getColorsForValue%28cellValue%29%29.color%3B%20textShadow%20%3D%20%28await%20getColorsForValue%28cellValue%29%29.textShadow%3B%20%7D%20tr.cells%5Bi%5D.style.setProperty%28%27background-color%27%2C%20backgroundColor%2C%20%27important%27%29%3B%20tr.cells%5Bi%5D.style.setProperty%28%27color%27%2C%20color%2C%20%27important%27%29%3B%20tr.cells%5Bi%5D.style.setProperty%28%27text-shadow%27%2C%20textShadow%2C%20%27important%27%29%3B%20%7D%29%3B%20%7D%29%3B%20%7D%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B%20%7D%29%28%29%3B/* ./content/comparecells.js */" ADD_DATE="1538080455" LAST_MODIFIED="1562616081" SHORTCUTURL="comparecells">Compare cells</A>
<DD><P>Try to color the cells of comparison tables based on their contents.</P></DD>
<DT><A HREF="javascript:%28function%20ffwd%28%29%20%7B%20%27use%20strict%27%3B%20const%20playbackRates%20%3D%20%5B10%2C%204%2C%202%2C%201.5%2C%201%5D%3B%20let%20playbackRateToUse%20%3D%20undefined%3B%20%20function%20execute%28document%29%20%7B%20let%20allMedia%20%3D%20Array.from%28document.querySelectorAll%28%27video%2C%20audio%27%29%29%3B%20%20const%20notRegularHtmlElementsSelector%20%3D%20%27a%2Cabbr%2Caddress%2Carea%2Carticle%2Caside%2Caudio%2Cb%2Cbase%2Cbdi%2Cbdo%2Cblockquote%2Cbody%2Cbr%2Cbutton%2Ccanvas%2Ccaption%2Ccite%2Ccode%2Ccol%2Ccolgroup%2Cdata%2Cdatalist%2Cdd%2Cdel%2Cdetails%2Cdfn%2Cdialog%2Cdiv%2Cdl%2Cdt%2Cem%2Cembed%2Cfieldset%2Cfigcaption%2Cfigure%2Cfooter%2Cform%2Ch1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2Chead%2Cheader%2Chgroup%2Chr%2Chtml%2Ci%2Ciframe%2Cimg%2Cinput%2Cins%2Ckbd%2Clabel%2Clegend%2Cli%2Clink%2Cmain%2Cmap%2Cmark%2Cmath%2Cmath%20%2A%2Cmenu%2Cmeta%2Cmeter%2Cnav%2Cnoscript%2Cobject%2Col%2Coptgroup%2Coption%2Coutput%2Cp%2Cparam%2Cpicture%2Cpre%2Cprogress%2Cq%2Crp%2Crt%2Cruby%2Cs%2Csamp%2Cscript%2Csection%2Cselect%2Cslot%2Csmall%2Csource%2Cspan%2Cstrong%2Cstyle%2Csub%2Csummary%2Csup%2Csvg%2Csvg%20%2A%2Ctable%2Ctbody%2Ctd%2Ctemplate%2Ctextarea%2Ctfoot%2Cth%2Cthead%2Ctime%2Ctitle%2Ctr%2Ctrack%2Cu%2Cul%2Cvar%2Cvideo%2Cwbr%27%20.split%28%27%2C%27%29%20.map%28s%20%3D%3E%20%60%3Anot%28%24%7Bs%7D%29%60%29%20.join%28%27%27%29%3B%20Array.from%28document.querySelectorAll%28notRegularHtmlElementsSelector%29%29%20.filter%28elem%20%3D%3E%20elem.shadowRoot%29%20.forEach%28elem%20%3D%3E%20allMedia%20%3D%20allMedia.concat%28Array.from%28elem.shadowRoot.querySelectorAll%28%27video%2C%20audio%27%29%29%29%29%3B%20allMedia.forEach%28media%20%3D%3E%20%7B%20%20if%20%28typeof%20playbackRateToUse%20%3D%3D%3D%20%27undefined%27%29%20%7B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20playbackRates.length%3B%20i%2B%2B%29%20%7B%20if%20%28media.playbackRate%20%3E%3D%20playbackRates%5Bi%5D%29%20%7B%20playbackRateToUse%20%3D%20i%20%3D%3D%3D%20playbackRates.length%20-%201%20%3F%20playbackRates%5B0%5D%20%3A%20playbackRates%5Bi%20%2B%201%5D%3B%20break%3B%20%7D%20%7D%20%7D%20media.playbackRate%20%3D%20playbackRateToUse%3B%20%20let%20visibleMediaContainer%20%3D%20media%3B%20let%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20while%20%28%28rect.height%20%3C%3D%200%20%7C%7C%20rect.width%20%3C%3D%200%29%20%26%26%20%28visibleMediaContainer%20%3D%20visibleMediaContainer.parentNode%29%29%20%7B%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20%7D%20const%20indicator%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%3B%20indicator.textContent%20%3D%20media.playbackRate%20%2B%20%27%C3%97%27%3B%20indicator.setAttribute%28%27style%27%2C%20%60%20display%3A%20flex%3B%20position%3A%20fixed%3B%20left%3A%20%24%7BMath.max%280%2C%20rect.left%29%7Dpx%3B%20top%3A%20%24%7BMath.max%280%2C%20rect.top%29%7Dpx%3B%20z-index%3A%2010000%3B%20width%3A%20%24%7Brect.width%7Dpx%3B%20height%3A%20%24%7Brect.height%7Dpx%3B%20font-size%3A%20%24%7Brect.height%20%2F%2010%7Dpx%3B%20justify-content%3A%20center%3B%20align-items%3A%20center%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%201%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%201%29%3B%20transition%3A%20all%200.75s%20ease-out%3B%20pointer-events%3A%20none%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20document.body.appendChild%28indicator%29%3B%20%20setTimeout%28_%20%3D%3E%20%7B%20setTimeout%28%20_%20%3D%3E%20indicator.remove%28%29%2C%20750%29%3B%20indicator.setAttribute%28%27style%27%2C%20indicator.getAttribute%28%27style%27%29%20%2B%20%60%20font-size%3A%20%24%7Brect.height%7Dpx%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%200%29%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20%7D%2C%200%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./content/ffwd.js */" ADD_DATE="1624434628" LAST_MODIFIED="1634155503" SHORTCUTURL="ffwd">FFWD ⏩</A>
<DD><P>Speed up the video and audio playback rate, starting from 10x back to 1x by
executing this bookmarklet multiple times. Executing it once more after the
normal speed will restart the cycle from the maximum speed again.</P></DD>
<DT><A HREF="javascript:%28function%20freeviddy%28%29%20%7B%20%22use%20strict%22%3B%20%20function%20execute%28document%29%20%7B%20document.addEventListener%28%27mousemove%27%2C%20function%20debouncer%28event%29%20%7B%20clearTimeout%28debouncer.timeoutId%29%3B%20debouncer.timeoutId%20%3D%20setTimeout%28function%20%28%29%20%7B%20let%20elementsUnderPointer%20%3D%20document.elementsFromPoint%28event.clientX%2C%20event.clientY%29%3B%20let%20overlaysToRemove%20%3D%20%5B%5D%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20elementsUnderPointer.length%3B%20i%2B%2B%29%20%7B%20if%20%28elementsUnderPointer%5Bi%5D.tagName.toUpperCase%28%29%20%3D%3D%3D%20%27VIDEO%27%20%26%26%20%21elementsUnderPointer%5Bi%5D.xxxJanFreeViddyProcessed%29%20%7B%20let%20video%20%3D%20elementsUnderPointer%5Bi%5D%3B%20video.controls%20%3D%20true%3B%20video.xxxJanFreeViddyProcessed%20%3D%20true%3B%20if%20%28i%20%3D%3D%3D%200%29%20%7B%20console.log%28%27Free%20Viddy%3A%20found%20video%20without%20overlays%3A%27%2C%20video%29%3B%20%7D%20else%20%7B%20overlaysToRemove%20%3D%20elementsUnderPointer.slice%280%2C%20i%29%3B%20console.log%28%60Free%20Viddy%3A%20found%20video%20with%20%24%7Bi%7D%20overlays%3A%60%2C%20video%29%3B%20%7D%20break%3B%20%7D%20%7D%20if%20%28overlaysToRemove.length%29%20%7B%20overlaysToRemove.forEach%28element%20%3D%3E%20element.remove%28%29%29%3B%20%7D%20%7D%2C%2050%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./content/freeviddy.js */" ADD_DATE="1545475708" LAST_MODIFIED="1545475708" SHORTCUTURL="freeviddy">Free Viddy</A>
<DD><P>Free the VIDEO elements: get rid of overlays, and enable the native controls.
Useful on https://www.instagram.com/ where the stupid overlays prevent
showing the controls and triggering the context menu, so you don’t know how
long the video will take and can't play the video in full screen mode.</P></DD>
<DT><A HREF="javascript:%28function%20fullimg%28%29%20%7B%20%20var%20parameterNames%20%3D%20%5B%20%27width%27%2C%20%27Width%27%2C%20%27height%27%2C%20%27Height%27%2C%20%27maxwidth%27%2C%20%27maxWidth%27%2C%20%27MaxWidth%27%2C%20%27maxheight%27%2C%20%27maxHeight%27%2C%20%27MaxHeight%27%2C%20%27w%27%2C%20%27W%27%2C%20%27h%27%2C%20%27H%27%2C%20%27fit%27%2C%20%27Fit%27%2C%20%27resize%27%2C%20%27reSize%27%2C%20%27Resize%27%2C%20%27size%27%2C%20%27Size%27%20%5D%3B%20parameterNames.forEach%28function%20%28parameterName%29%20%7B%20var%20selector%20%3D%20%27img%5Bsrc%2A%3D%22%3F%27%20%2B%20parameterName%20%2B%20%27%3D%22%5D%27%20%2B%20%27%2C%20img%5Bsrc%2A%3D%22%3F%22%5D%5Bsrc%2A%3D%22%26%27%20%2B%20parameterName%20%2B%20%27%3D%22%5D%27%3B%20%20var%20parameterReplacementRegexp%20%3D%20new%20RegExp%28%27%28%5C%5C%3F%5B%5E%23%5D%2A%26%29%3F%27%20%2B%20parameterName%20%2B%20%27%3D%5B1-9%5D%5B0-9%5D%2B%28%3F%3A%28%3F%3A%5BxX%2C%2A%3A%5D%7C%252%5BCcAa%5D%7C%253%5BAa%5D%29%5B1-9%5D%5B0-9%5D%2B%29%3F%28%5B%5E%26%23%5D%2A%29%27%29%3B%20%5B%5D.forEach.call%28document.querySelectorAll%28selector%29%2C%20function%20%28img%29%20%7B%20var%20newSrc%20%3D%20img.src%20%20.replace%28parameterReplacementRegexp%2C%20%27%241%242%27%29%20%20.replace%28%2F%28%5C%3F%5B%5E%23%5D%2A%29%26%28%23.%2A%29%3F%24%2F%2C%20%27%241%242%27%29%20%20.replace%28%2F%5C%3F%28%23.%2A%29%3F%24%2F%2C%20%27%241%27%29%20%20.replace%28%2F%23%24%2F%2C%20%27%27%29%20%3B%20changeSrc%28img%2C%20newSrc%2C%20%27found%20image%20with%20parameter%20%22%27%20%2B%20parameterName%20%2B%20%27%22%20in%20query%20string%27%29%3B%20%7D%29%3B%20%7D%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27img%5Bsrc%2A%3D%22_gen%2Fderivatives%2F%22%5D%27%29%2C%20function%20%28img%29%20%7B%20var%20matches%20%3D%20img.src.match%28%2F%28.%2A%5C.%28jpe%3Fg%7Cpng%7Cgif%29%29_gen.%2A%5C.%5C2%28%5C%3F.%2A%29%3F%24%2F%29%3B%20if%20%28matches%20%26%26%20matches%5B1%5D%29%20%7B%20changeSrc%28img%2C%20matches%5B1%5D%2C%20%27found%20image%20with%20Polopoly%20CMS%20%22generated%20derivative%22%20URL%27%29%3B%20%7D%20%7D%20%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27img%5Bsrc%5E%3D%22https%3A%2F%2Fassets.simpleviewcms.com%2Fsimpleview%2Fimage%2Fupload%22%5D%5Bsrc%2A%3D%22%2Fclients%2F%22%5D%27%29%2C%20function%20%28img%29%20%7B%20const%20oldSrc%20%3D%20img.src%3B%20newSrc%20%3D%20oldSrc.replace%28%2F%5E%28https%3A%5C%2F%5C%2Fassets%5C.simpleviewcms%5C.com%5C%2Fsimpleview%5C%2Fimage%5C%2Fupload%5C%2F%29%28.%2A%5C%2F%29%28clients%5C%2F%29%2F%2C%20%27%241%2F%243%27%29%3B%20if%20%28newSrc%20%21%3D%3D%20oldSrc%29%20%7B%20changeSrc%28img%2C%20newSrc%2C%20%27found%20image%20with%20Simpleview%20CMS%20resized%20asset%20URL%27%29%3B%20%7D%20%7D%20%29%3B%20%20document.querySelectorAll%28%27img%5Bsrc%2A%3D%22%2Fhttps%22%5D%2C%20img%5Bsrc%2A%3D%22%2Fhttp%5D%27%29.forEach%28img%20%3D%3E%20%7B%20const%20matches%20%3D%20img.src.match%28%2F%5B%3D%5C%2F%5D%28https%3F%28%3A%7C%253A%29%28%252F%7C%5C%2F%29%7B2%7D%5B%5E%5C%2F%26%3F%5D%2B%28%5C.jpe%3Fg%7Cpng%7Cgif%29%29%2Fi%29%3B%20if%20%28matches%20%26%26%20matches%5B1%5D%29%20%7B%20changeSrc%28img%2C%20decodeURIComponent%28matches%5B1%5D%29%2C%20%27found%20image%20with%20likely%20source%20URL%20in%20its%20path%27%29%3B%20%7D%20%7D%29%3B%20%20%5B%5D.forEach.call%28%20document.images%2C%20function%20%28img%29%20%7B%20var%20oldSrc%20%3D%20img.src%3B%20%20var%20matches%20%3D%20oldSrc.match%28%2F%28.%2A%29%5B-_.%40%5D%5Cd%2Bx%5Cd%2B%28%5C.%5B%5E%5C%2F.%5D%2B%29%2F%29%3B%20if%20%28matches%20%26%26%20matches%5B1%5D%20%26%26%20matches%5B2%5D%29%20%7B%20var%20newSrc%20%3D%20matches%5B1%5D%20%2B%20matches%5B2%5D%3B%20return%20changeSrc%28img%2C%20newSrc%2C%20%27found%20image%20whose%20URL%20looks%20like%20a%20thumbnail%2Fresized%20version%27%29%3B%20%7D%20%20matches%20%3D%20oldSrc.match%28%2F%28.%2A%5C%2F%29thumb%5C%2F%28.%2A%29%5C%2F%5B%5E%5C%2F%5D%2B%24%2F%29%3B%20if%20%28matches%29%20%7B%20var%20newSrc%20%3D%20matches%5B1%5D%20%2B%20matches%5B2%5D%3B%20return%20changeSrc%28img%2C%20newSrc%2C%20%27found%20image%20whose%20URL%20looks%20like%20a%20MediaWiki%20thumbnail%2Fresized%20version%27%29%3B%20%7D%20%7D%20%29%3B%20%20var%20thumbnailPathRegexp%20%3D%20%2F%28.%2A%5B%2F.-%5D%29%28small%7Cthumbs%3F%7Cthumbnails%3F%7Cresized%7Cpreviews%3F%7Cmedium%29%28%5B%2F.-%5D.%2A%29%2F%3B%20var%20fullSizePathParts%20%3D%20%5B%20%27large%27%2C%20%27original%27%2C%20%27originals%27%2C%20%27source%27%2C%20%27normal%27%2C%20%27xlarge%27%2C%20%27%27%2C%20%5D%3B%20%5B%5D.forEach.call%28%20document.images%2C%20function%20%28img%29%20%7B%20var%20oldSrc%20%3D%20img.src%3B%20var%20matches%20%3D%20oldSrc.match%28thumbnailPathRegexp%29%3B%20if%20%28matches%29%20%7B%20var%20newSources%20%3D%20%5B%5D%3B%20fullSizePathParts.forEach%28function%20%28part%29%20%7B%20if%20%28part%20%3D%3D%3D%20%27%27%29%20%7B%20newSources.push%28matches%5B1%5D.replace%28%2F%5C%2F%24%2F%2C%20%27%27%29%20%2B%20part%20%2B%20matches%5B3%5D%29%3B%20%7D%20else%20%7B%20newSources.push%28matches%5B1%5D%20%2B%20part%20%2B%20matches%5B3%5D%29%3B%20%7D%20%7D%29%3B%20changeSrc%28img%2C%20newSources%2C%20%27found%20image%20whose%20URL%20looks%20like%20a%20thumbnail%2Fresized%20version%27%29%3B%20%7D%20%7D%20%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27a%20img%27%29%2C%20function%20%28img%29%20%7B%20if%20%28%21img.src%29%20%7B%20return%3B%20%7D%20var%20a%20%3D%20img.parentNode%3B%20while%20%28a%20%26%26%20a.tagName%20%26%26%20a.tagName.toLowerCase%28%29%20%21%3D%3D%20%27a%27%29%20%7B%20a%20%3D%20a.parentNode%3B%20%7D%20if%20%28%21a%29%20%7B%20return%3B%20%7D%20var%20aHref%20%3D%20a.href%3B%20if%20%28a.hostname.match%28%2F%5C.blogspot%5C.com%24%2F%29%29%20%7B%20%20aHref%20%3D%20aHref.replace%28%2F%5C%2F%28s%5Cd%2B%29-h%5C%2F%28%5B%5E%5C%2F%5D%2B%29%24%2F%2C%20%27%2F%241%2F%242%27%29%3B%20%7D%20if%20%28aHref%20%3D%3D%3D%20img.src%29%20%7B%20return%3B%20%7D%20%20function%20simplifyUrl%28url%29%20%7B%20return%20%28%27%27%20%2B%20url%29%20.replace%28%2F%5Cd%2B%2Fg%2C%20%270%27%29%20.replace%28%2F%5Ehttps%3F%3A%2F%2C%20%27%27%29%3B%20%7D%20var%20similarity%20%3D%20getSimilarity%28simplifyUrl%28img.src%29%2C%20simplifyUrl%28a.href%29%29%3B%20if%20%28similarity%20%3E%200.66%29%20%7B%20changeSrc%28img%2C%20aHref%2C%20%27found%20linked%20image%20with%20%27%20%2B%20Math.round%28similarity%20%2A%20100%29%20%2B%20%27%25%20similarity%27%29%3B%20%7D%20%7D%20%29%3B%20%20document.querySelectorAll%28%27img%5Bsrc%2A%3D%22%3F%22%5D%27%29.forEach%28img%20%3D%3E%20%7B%20const%20oldSrc%20%3D%20img.src%3B%20const%20imgUrl%20%3D%20new%20URL%28oldSrc%29%3B%20imgUrl.searchParams.forEach%28%28value%2C%20key%29%20%3D%3E%20%7B%20if%20%28value%20%3D%3D%20img.naturalWidth%20%7C%7C%20value%20%3D%3D%3D%20img.naturalHeight%29%20%7B%20imgUrl.searchParams.delete%28key%29%3B%20%7D%20%7D%29%3B%20const%20newSrc%20%3D%20imgUrl.toString%28%29%3B%20if%20%28newSrc%20%21%3D%3D%20oldSrc%29%20%7B%20changeSrc%28img%2C%20newSrc%2C%20%27found%20image%20with%20query%20string%20parameter%20matching%20its%20width%2Fheight%27%29%3B%20%7D%20%7D%29%3B%20%20Array.from%28%20document.querySelectorAll%28%27img%5Bsrc%2A%3D%22bp.blogspot.com%2F%22%5D%27%29%20%29.forEach%28img%20%3D%3E%20%7B%20let%20matches%3B%20if%20%28%28matches%20%3D%20img.src.match%28%2F%5E%28.%2A%5C%2F%29s%28%5Cd%2B%29%28%5C%2F%5B%5E%2F%5D%2B%29%24%2F%29%29%20%26%26%20matches%5B2%5D%20%3C%209999%29%20%7B%20let%20newSrc%20%3D%20matches%5B1%5D%20%2B%20%27s9999%27%20%2B%20matches%5B3%5D%3B%20changeSrc%28img%2C%20newSrc%2C%20%27found%20Blogspot%20image%20with%20restricted%20size%20%28%27%20%2B%20matches%5B2%5D%20%2B%20%27%29%27%29%3B%20%7D%20%7D%29%3B%20%20Array.from%28%20document.querySelectorAll%28%27img%5Bsrc%2A%3D%22%2F%2Fyt%22%5D%5Bsrc%2A%3D%22.ggpht.com%22%5D%2C%20img%5Bsrc%2A%3D%22.googleusercontent.com%22%5D%27%29%20%29.forEach%28img%20%3D%3E%20%7B%20let%20matches%3B%20if%20%28%28matches%20%3D%20img.src.match%28%2F%5E%28.%2A%5C%2F%5BA-Za-z0-9_-%5D%7B16%2C%7D%3Ds%29%28%5Cd%2B%29%28%5B%5E%2F%5D%2B.%2A%29%24%2F%29%29%20%26%26%20matches%5B2%5D%20%3C%201024%29%20%7B%20let%20newSrc%20%3D%20matches%5B1%5D%20%2B%201024%20%2B%20matches%5B3%5D%3B%20changeSrc%28img%2C%20newSrc%2C%20%27found%20YouTube%20avatar%20with%20restricted%20size%20%28%27%20%2B%20matches%5B2%5D%20%2B%20%27%29%27%29%3B%20%7D%20%7D%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27img%5Bsrcset%5D%27%29%2C%20function%20%28img%29%20%7B%20console.log%28%27Load%20full%20images%3A%20removing%20srcset%20attribute%3A%20%27%2C%20img%29%3B%20img.originalSrcset%20%3D%20img.getAttribute%28%27srcset%27%29%3B%20img.removeAttribute%28%27srcset%27%29%3B%20%7D%20%29%3B%20%20var%20elementsToEnlargeSelectors%20%3D%20%5B%20%27video%27%2C%20%27iframe.twitter-tweet-rendered%27%2C%20%27iframe%5Bsrc%2A%3D%22embed%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22video%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22syndication%22%5D%27%2C%20%27iframe%5Bclass%2A%3D%22altura%22%5D%27%2C%20%27iframe%5Bid%2A%3D%22altura%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22altura%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22%2F%2Fe.infogr.am%2F%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22%2F%2Fwww.kickstarter.com%2Fprojects%2F%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22%2F%2Fmedia-service.vara.nl%2Fplayer.php%22%5D%27%2C%20%27iframe%5Bsrc%2A%3D%22%2F%2Fplayer.vimeo.com%2Fvideo%2F%22%5D%27%20%5D%3B%20%5B%5D.forEach.call%28%20document.querySelectorAll%28elementsToEnlargeSelectors.join%28%27%2C%20%27%29%29%2C%20function%20%28element%29%20%7B%20var%20scale%20%3D%20element.offsetParent.offsetWidth%20%2F%20element.offsetWidth%3B%20var%20newWidth%20%3D%20Math.round%28element.offsetWidth%20%2A%20scale%29%3B%20var%20newHeight%20%3D%20Math.round%28element.offsetHeight%20%2A%20scale%29%3B%20console.log%28%20%27Load%20full%20images%3A%20resizing%20element%20%27%2C%20element%2C%20%27%20from%20%27%20%2B%20element.offsetWidth%20%2B%20%27x%27%20%2B%20element.offsetHeight%20%2B%20%27%20to%20%27%20%2B%20newWidth%20%2B%20%27x%27%20%2B%20newHeight%20%29%3B%20element.xxxJanReadableAllowStyle%20%3D%20true%3B%20element.style.width%20%3D%20newWidth%20%2B%20%27px%27%3B%20element.style.height%20%3D%20newHeight%20%2B%20%27px%27%3B%20%7D%20%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27audio%2C%20video%27%29%2C%20function%20%28element%29%20%7B%20element.controls%20%3D%20true%3B%20%7D%20%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fembed%2F%22%5D%5Bsrc%2A%3D%22%3F%22%5D%5Bsrc%2A%3D%22%3D0%22%5D%27%29%2C%20function%20%28iframe%29%20%7B%20var%20beforeAndAfterHash%20%3D%20iframe.src.split%28%27%23%27%29%3B%20var%20beforeAndAfterQuery%20%3D%20beforeAndAfterHash%5B0%5D.split%28%27%3F%27%29%3B%20var%20newPrefix%20%3D%20beforeAndAfterQuery%5B0%5D%3B%20var%20newQueryString%20%3D%20%27%27%3B%20if%20%28beforeAndAfterQuery.length%20%3E%201%29%20%7B%20beforeAndAfterQuery.shift%28%29%3B%20var%20newQueryParts%20%3D%20beforeAndAfterQuery%20.join%28%27%3F%27%29%20.split%28%27%26%27%29%20.filter%28function%20%28keyValuePair%29%20%7B%20return%20%21keyValuePair.match%28%2F%5E%28controls%7Cshowinfo%7Crel%29%3D0%24%2F%29%3B%20%7D%20%29%3B%20if%20%28newQueryParts.length%29%20%7B%20newQueryString%20%3D%20%27%3F%27%20%2B%20newQueryParts.join%28%27%26%27%29%3B%20%7D%20%7D%20var%20newHash%20%3D%20%27%27%3B%20if%20%28beforeAndAfterHash.length%20%3E%201%29%20%7B%20beforeAndAfterHash.shift%28%29%3B%20newHash%20%3D%20%27%23%27%20%2B%20beforeAndAfterHash.join%28%27%23%27%29%3B%20%7D%20var%20newSrc%20%3D%20newPrefix%20%2B%20newQueryString%20%2B%20newHash%3B%20if%20%28newSrc%20%21%3D%3D%20iframe.src%29%20%7B%20iframe.src%20%3D%20newSrc%3B%20%7D%20%7D%20%29%3B%20%20function%20getSimilarity%28strA%2C%20strB%29%20%7B%20var%20result%20%3D%200%3B%20var%20i%20%3D%20Math.min%28strA.length%2C%20strB.length%29%3B%20if%20%28i%20%3D%3D%3D%200%29%20%7B%20return%3B%20%7D%20while%20%28--i%29%20%7B%20if%20%28strA%5Bi%5D%20%3D%3D%3D%20strB%5Bi%5D%29%20%7B%20continue%3B%20%7D%20if%20%28strA%5Bi%5D.toLowerCase%28%29%20%3D%3D%3D%20strB%5Bi%5D.toLowerCase%28%29%29%20%7B%20result%2B%2B%3B%20%7D%20else%20%7B%20result%20%2B%3D%204%3B%20%7D%20%7D%20return%201%20-%20%28result%20%2B%204%20%2A%20Math.abs%28strA.length%20-%20strB.length%29%29%20%2F%20%282%20%2A%20%28strA.length%20%2B%20strB.length%29%29%3B%20%7D%20%20function%20changeSrc%28img%2C%20newSrc%2C%20reason%29%20%7B%20var%20basename%20%3D%20img.src.replace%28%2F%5B%3F%23%5D.%2A%2F%2C%20%27%27%29.replace%28%2F.%2A%3F%28%5B%5E%5C%2F%5D%2A%29%5C%2F%2A%24%2F%2C%20%27%241%27%29%3B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20Load%20full%20images%3A%20%27%20%2B%20reason%20%2B%20%27%3A%20%27%2C%20img%29%3B%20if%20%28img.hasNewSource%29%20%7B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20Image%20already%20has%20a%20new%20source%3A%20%27%2C%20img%29%3B%20return%3B%20%7D%20var%20newSources%20%3D%20Array.isArray%28newSrc%29%20%3F%20newSrc%20%3A%20%5B%20newSrc%20%5D%3B%20while%20%28%28newSrc%20%3D%20newSources.shift%28%29%29%29%20%7B%20if%20%28newSrc%20%26%26%20img.src%20%21%3D%3D%20newSrc%29%20%7B%20break%3B%20%7D%20%7D%20if%20%28%21newSrc%29%20%7B%20return%3B%20%7D%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20%E2%86%92%20Old%20img.src%3A%20%27%20%2B%20img.src%29%3B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20%E2%86%92%20Try%20img.src%3A%20%27%20%2B%20newSrc%29%3B%20%20if%20%28%21img.originalSrc%29%20%7B%20img.originalSrc%20%3D%20img.src%3B%20%7D%20if%20%28%21img.originalNaturalWidth%29%20%7B%20img.originalNaturalWidth%20%3D%20img.naturalWidth%3B%20%7D%20if%20%28%21img.originalNaturalHeight%29%20%7B%20img.originalNaturalHeight%20%3D%20img.naturalHeight%3B%20%7D%20%20if%20%28img.hasAttribute%28%27srcset%27%29%29%20%7B%20img.originalSrcset%20%3D%20img.getAttribute%28%27srcset%27%29%3B%20img.removeAttribute%28%27srcset%27%29%3B%20%7D%20%20if%20%28img.parentNode.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27picture%27%29%20%7B%20%5B%5D.forEach.call%28%20img.parentNode.querySelectorAll%28%27source%5Bsrcset%5D%27%29%2C%20function%20%28source%29%20%7B%20source.originalSrcset%20%3D%20source.getAttribute%28%27srcset%27%29%3B%20source.removeAttribute%28%27srcset%27%29%3B%20%7D%20%29%3B%20%7D%20%20var%20errorHandler%3B%20if%20%28newSources.length%29%20%7B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20Setting%20errorHandler%20to%20loadNextNewSrc%20for%20%27%2C%20img%2C%20%27%3B%20newSources%3A%20%22%27%20%2B%20newSources.join%28%27%22%2C%20%22%27%29%20%2B%20%27%22%3B%20reason%3A%27%2C%20reason%29%3B%20errorHandler%20%3D%20function%20loadNextNewSrc%28%29%20%7B%20img.removeEventListener%28%27error%27%2C%20loadNextNewSrc%29%3B%20changeSrc%28img%2C%20newSources%2C%20reason%29%3B%20%7D%3B%20%7D%20else%20%7B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20Setting%20errorHandler%20to%20restoreOriginalSrc%20for%20%27%2C%20img%2C%20%27%3B%20originalSrc%3A%20%22%27%20%2B%20img.originalSrc%20%2B%20%27%22%3B%20reason%3A%27%2C%20reason%29%3B%20errorHandler%20%3D%20function%20restoreOriginalSrc%28%29%20%7B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20Load%20full%20images%3A%20error%20while%20loading%20new%20source%20for%20image%3A%20%27%2C%20img%29%3B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20%E2%86%92%20Unable%20to%20load%20new%20img.src%3A%20%27%20%2B%20newSrc%29%3B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20%E2%86%92%20Resetting%20to%20original%20img.src%3A%20%27%20%2B%20img.originalSrc%29%3B%20img.removeEventListener%28%27error%27%2C%20restoreOriginalSrc%29%3B%20%20img.src%20%3D%20img.originalSrc%3B%20%20if%20%28img.originalSrcset%29%20%7B%20img.setAttribute%28%27srcset%27%2C%20img.originalSrcset%29%3B%20delete%20img.originalSrcset%3B%20%7D%20%20if%20%28img.parentNode.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27picture%27%29%20%7B%20%5B%5D.forEach.call%28%20img.parentNode.querySelectorAll%28%27source%27%29%2C%20function%20%28source%29%20%7B%20if%20%28source.originalSrcset%29%20%7B%20source.setAttribute%28%27srcset%27%2C%20source.originalSrcset%29%3B%20delete%20source.originalSrcset%3B%20%7D%20%7D%20%29%3B%20%7D%20%7D%3B%20%7D%20img.addEventListener%28%27error%27%2C%20errorHandler%29%3B%20%20img.addEventListener%28%27load%27%2C%20function%20%28%29%20%7B%20if%20%28img.naturalWidth%20%2A%20img.naturalHeight%20%3C%20img.originalNaturalWidth%20%2A%20img.originalNaturalHeight%29%20%7B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20Load%20full%20images%3A%20new%20image%20%28%27%2C%20img.naturalWidth%2C%20%27x%27%2C%20img.naturalHeight%2C%20%27%29%20is%20smaller%20than%20old%20image%20%28%27%2C%20img.originalNaturalWidth%2C%20%27x%27%2C%20img.originalNaturalHeight%2C%20%27%29%3A%20%27%2C%20img%29%3B%20return%20errorHandler%28%29%3B%20%7D%20if%20%28img.src%20%21%3D%3D%20img.originalSrc%29%20%7B%20console.log%28%27%5B%27%20%2B%20basename%20%2B%20%27%5D%20%E2%86%92%20Success%3A%20%27%20%2B%20img.src%29%3B%20img.hasNewSource%20%3D%20true%3B%20%20if%20%28location.href%20%3D%3D%3D%20img.originalSrc%29%20%7B%20history.replaceState%28%7B%7D%2C%20%27%27%2C%20img.src%29%3B%20if%20%28document.title.indexOf%28basename%29%20%3E%20-1%29%20%7B%20const%20newBasename%20%3D%20img.src.replace%28%2F%5B%3F%23%5D.%2A%2F%2C%20%27%27%29.replace%28%2F.%2A%3F%28%5B%5E%5C%2F%5D%2A%29%5C%2F%2A%24%2F%2C%20%27%241%27%29%3B%20document.title%20%3D%20%60%24%7BnewBasename%7D%20%28%24%7Bimg.naturalWidth%7D%20%C3%97%20%24%7Bimg.naturalHeight%7D%20pixels%29%60%3B%20%7D%20%7D%20%7D%20%7D%29%3B%20%20img.src%20%3D%20newSrc%3B%20%7D%20%7D%29%28%29%3B/* ./content/fullimg.js */" ADD_DATE="1452292983" LAST_MODIFIED="1706093739" SHORTCUTURL="fullimg">Load full images</A>
<DD><P>Load the full-size versions of resized images based on their "src"
attribute, or their containing link's "href" attribute. Also, make IFRAMEs
take up the entire width of their offset parent (useful for embedded videos
and whatnot). Same goes for the VIDEO elements.</P></DD>
<DT><A HREF="javascript:%28function%20jump%28%29%20%7B%20%27use%20strict%27%3B%20let%20numSecondsToJump%20%3D%2030%3B%20%20function%20getMedia%28document%29%20%7B%20let%20allMedia%20%3D%20Array.from%28document.querySelectorAll%28%27video%2C%20audio%27%29%29%3B%20%20const%20notRegularHtmlElementsSelector%20%3D%20%27a%2Cabbr%2Caddress%2Carea%2Carticle%2Caside%2Caudio%2Cb%2Cbase%2Cbdi%2Cbdo%2Cblockquote%2Cbody%2Cbr%2Cbutton%2Ccanvas%2Ccaption%2Ccite%2Ccode%2Ccol%2Ccolgroup%2Cdata%2Cdatalist%2Cdd%2Cdel%2Cdetails%2Cdfn%2Cdialog%2Cdiv%2Cdl%2Cdt%2Cem%2Cembed%2Cfieldset%2Cfigcaption%2Cfigure%2Cfooter%2Cform%2Ch1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2Chead%2Cheader%2Chgroup%2Chr%2Chtml%2Ci%2Ciframe%2Cimg%2Cinput%2Cins%2Ckbd%2Clabel%2Clegend%2Cli%2Clink%2Cmain%2Cmap%2Cmark%2Cmath%2Cmath%20%2A%2Cmenu%2Cmeta%2Cmeter%2Cnav%2Cnoscript%2Cobject%2Col%2Coptgroup%2Coption%2Coutput%2Cp%2Cparam%2Cpicture%2Cpre%2Cprogress%2Cq%2Crp%2Crt%2Cruby%2Cs%2Csamp%2Cscript%2Csection%2Cselect%2Cslot%2Csmall%2Csource%2Cspan%2Cstrong%2Cstyle%2Csub%2Csummary%2Csup%2Csvg%2Csvg%20%2A%2Ctable%2Ctbody%2Ctd%2Ctemplate%2Ctextarea%2Ctfoot%2Cth%2Cthead%2Ctime%2Ctitle%2Ctr%2Ctrack%2Cu%2Cul%2Cvar%2Cvideo%2Cwbr%27%20.split%28%27%2C%27%29%20.map%28s%20%3D%3E%20%60%3Anot%28%24%7Bs%7D%29%60%29%20.join%28%27%27%29%3B%20Array.from%28document.querySelectorAll%28notRegularHtmlElementsSelector%29%29%20.filter%28elem%20%3D%3E%20elem.shadowRoot%29%20.forEach%28elem%20%3D%3E%20allMedia%20%3D%20allMedia.concat%28Array.from%28elem.shadowRoot.querySelectorAll%28%27video%2C%20audio%27%29%29%29%29%3B%20%20try%20%7B%20Array.from%28%20document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%20%29.forEach%28%20elem%20%3D%3E%20allMedia%20%3D%20allMedia.concat%28getMedia%28elem.contentDocument%29%29%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20return%20allMedia%3B%20%7D%20let%20allMedia%20%3D%20getMedia%28document%29%3B%20%20if%20%28%21allMedia.length%29%20%7B%20return%3B%20%7D%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%20.trim%28%29%3B%20let%20shouldJumpToSpecificTime%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20%7D%20else%20if%20%28s%20%3D%3D%3D%20%27-%27%29%20%7B%20numSecondsToJump%20%3D%20-numSecondsToJump%3B%20%7D%20else%20%7B%20let%20matches%20%3D%20s.match%28%2F%5E%28%3F%3Ato%5Cs%7C%40%29%5Cs%2A%28.%2A%29%2F%29%3B%20if%20%28matches%29%20%7B%20shouldJumpToSpecificTime%20%3D%20true%3B%20s%20%3D%20matches%5B1%5D.trim%28%29%3B%20%7D%20matches%20%3D%20s.match%28%2F%5E%28-%3F%29%5Cs%2A%28%5Cd%2B%5Cs%2A%5Bh%3A%5D%29%3F%5Cs%2A%28%5Cd%2B%5Cs%2A%5Bm%3A%5D%29%3F%5Cs%2A%28%5Cd%2B%28%5C.%5Cd%2B%29%3F%5Cs%2A%28s%7C%29%29%3F%2F%29%3B%20if%20%28matches%29%20%7B%20let%20isNegative%20%3D%20%21%21matches%5B1%5D%3B%20let%20numHours%20%3D%20parseInt%28matches%5B2%5D%20%7C%7C%200%29%3B%20let%20numMinutes%20%3D%20parseInt%28matches%5B3%5D%20%7C%7C%200%29%3B%20let%20numSeconds%20%3D%20parseFloat%28matches%5B4%5D%20%7C%7C%200%29%3B%20%20if%20%28typeof%20matches%5B3%5D%20%3D%3D%3D%20%27undefined%27%20%26%26%20typeof%20numHours%20%21%3D%3D%20%27undefined%27%29%20%7B%20numMinutes%20%3D%20numHours%3B%20numHours%20%3D%200%3B%20%7D%20numSecondsToJump%20%3D%20numHours%20%2A%203600%20%2B%20numMinutes%20%2A%2060%20%2B%20numSeconds%3B%20if%20%28isNegative%29%20%7B%20numSecondsToJump%20%3D%20-numSecondsToJump%3B%20%7D%20%7D%20%7D%20if%20%28numSecondsToJump%20%7C%7C%20shouldJumpToSpecificTime%29%20%7B%20let%20formattedDuration%20%3D%20%27%27%3B%20let%20numSecondsForFormatting%20%3D%20Math.abs%28numSecondsToJump%29%3B%20let%20numHours%20%3D%20parseInt%28numSecondsForFormatting%20%2F%203600%29%3B%20if%20%28numHours%20%3E%200%29%20%7B%20numSecondsForFormatting%20-%3D%20numHours%20%2A%203600%3B%20formattedDuration%20%2B%3D%20numHours%20%2B%20%27h%27%3B%20%7D%20let%20numMinutes%20%3D%20parseInt%28numSecondsForFormatting%20%2F%2060%29%3B%20if%20%28numHours%20%3E%200%20%7C%7C%20numMinutes%20%3E%200%29%20%7B%20numSecondsForFormatting%20-%3D%20numMinutes%20%2A%2060%3B%20formattedDuration%20%2B%3D%20numMinutes%20%2B%20%27m%27%3B%20%7D%20formattedDuration%20%2B%3D%20%28numSecondsForFormatting%20%2B%20%27%27%29.replace%28%2F%28%5C.%5Cd%5Cd%29%5Cd%2A%24%2F%2C%20%27%241%27%29%20%2B%20%27s%27%3B%20allMedia.forEach%28media%20%3D%3E%20%7B%20if%20%28shouldJumpToSpecificTime%29%20%7B%20formattedDuration%20%3D%20%27%40%C2%A0%27%20%2B%20formattedDuration%3B%20media.currentTime%20%3D%20numSecondsToJump%3B%20%7D%20else%20if%20%28numSecondsToJump%20%3C%200%29%20%7B%20formattedDuration%20%3D%20%27-%C2%A0%27%20%2B%20formattedDuration%3B%20media.currentTime%20%2B%3D%20numSecondsToJump%3B%20%7D%20else%20%7B%20formattedDuration%20%3D%20%27%2B%C2%A0%27%20%2B%20formattedDuration%3B%20media.currentTime%20%2B%3D%20numSecondsToJump%3B%20%7D%20%20let%20visibleMediaContainer%20%3D%20media%3B%20let%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20while%20%28%28rect.height%20%3C%3D%200%20%7C%7C%20rect.width%20%3C%3D%200%29%20%26%26%20%28visibleMediaContainer%20%3D%20visibleMediaContainer.parentNode%29%29%20%7B%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20%7D%20const%20indicator%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%3B%20indicator.textContent%20%3D%20formattedDuration%3B%20indicator.setAttribute%28%27style%27%2C%20%60%20display%3A%20flex%3B%20position%3A%20fixed%3B%20left%3A%20%24%7BMath.max%280%2C%20rect.left%29%7Dpx%3B%20top%3A%20%24%7BMath.max%280%2C%20rect.top%29%7Dpx%3B%20z-index%3A%2010000%3B%20width%3A%20%24%7Brect.width%7Dpx%3B%20height%3A%20%24%7Brect.height%7Dpx%3B%20font-size%3A%20%24%7Brect.height%20%2F%2010%7Dpx%3B%20justify-content%3A%20center%3B%20align-items%3A%20center%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%201%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%201%29%3B%20transition%3A%20all%200.75s%20ease-out%3B%20pointer-events%3A%20none%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20document.body.appendChild%28indicator%29%3B%20%20setTimeout%28_%20%3D%3E%20%7B%20setTimeout%28%20_%20%3D%3E%20indicator.remove%28%29%2C%20750%29%3B%20indicator.setAttribute%28%27style%27%2C%20indicator.getAttribute%28%27style%27%29%20%2B%20%60%20font-size%3A%20%24%7Brect.height%7Dpx%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%200%29%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20%7D%2C%200%29%3B%20%7D%29%3B%20%7D%20%7D%29%28%29%3B/* ./content/jump.js */" ADD_DATE="1545557441" LAST_MODIFIED="1634226895" SHORTCUTURL="jump">Jump to time</A>
<DD><P>Jump N (default: 30) seconds in the audio and video elements on the page, or
jump to a specific time.
A positive number jumps forward, a negative number goes back in time.
By starting the time with `to `, you can jump to that specific time, e.g. `jump to 35s`.
You can also use other units: `h` for hours, and `m` for days. `s` for
seconds is implied.</P></DD>
<DT><A HREF="javascript:%28function%20nocookie%28%29%20%7B%20%27use%20strict%27%3B%20%20let%20hasFoundSomethingToClick%20%3D%20false%3B%20%20const%20externalConsentManagerIframeSelectors%20%3D%20%5B%20%20%27iframe%5Bsrc%2A%3D%22.trustarc.com%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%2A%3D%22.consensu.org%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%2A%3D%22.privacymanager.io%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fcmp.%22%5D%27%2C%20%20%27iframe%5Bsrc%2A%3D%22.privacy-mgmt.com%2F%22%5D%27%2C%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fsourcepoint.theguardian.com%2F%22%5D%27%2C%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fsourcepointcmp.%22%5D%27%2C%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2F%22%5D%5Bsrc%2A%3D%22%2Findex.html%3F%22%5D%5Bsrc%2A%3D%22consentUUID%22%5D%27%2C%20%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Ftcf2.telegraph.co.uk%2F%22%5D%27%2C%20%20%27iframe%5Bsrc%5E%3D%22https%3A%2F%2Fnojazz.eu%2F%22%5D%27%2C%20%5D%3B%20const%20probableExternalConsentManagerIframeUris%20%3D%20%5B%5D%3B%20const%20probableExternalConsentManagerIframes%20%3D%20%5B%5D%3B%20%20function%20getAllDocuments%28currDocument%29%20%7B%20if%20%28%21getAllDocuments.cache%29%20%7B%20getAllDocuments.cache%20%3D%20new%20WeakMap%28%29%3B%20%7D%20if%20%28%21currDocument%29%20%7B%20currDocument%20%3D%20document%3B%20%7D%20if%20%28getAllDocuments.cache.get%28currDocument%29%29%20%7B%20return%20getAllDocuments.cache.get%28currDocument%29%3B%20%7D%20const%20documents%20%3D%20%5BcurrDocument%5D%3B%20%20currDocument.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29.forEach%28elem%20%3D%3E%20%7B%20if%20%28elem.contentDocument%29%20%7B%20documents.push%28...getAllDocuments%28elem.contentDocument%29%29%3B%20%7D%20%7D%29%3B%20getAllDocuments.cache.set%28currDocument%2C%20documents%29%3B%20return%20documents%3B%20%7D%20%20function%20deepQuerySelector%28selector%2C%20options%29%20%7B%20let%20%7Broots%2C%20maxShadowRootDepth%7D%20%3D%20options%20%7C%7C%20%7B%7D%3B%20if%20%28%21roots%29%20%7B%20roots%20%3D%20getAllDocuments%28%29%3B%20%7D%20else%20if%20%28%21Array.isArray%28roots%29%29%20%7B%20roots%20%3D%20%5Broots%5D%3B%20%7D%20if%20%28Number.isNaN%28maxShadowRootDepth%29%29%20%7B%20maxShadowRootDepth%20%3D%200%3B%20%7D%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20roots.length%3B%20i%2B%2B%29%20%7B%20const%20normalQuerySelectorResult%20%3D%20roots%5Bi%5D.querySelector%28selector%29%3B%20if%20%28normalQuerySelectorResult%29%20%7B%20return%20normalQuerySelectorResult%3B%20%7D%20%20if%20%28maxShadowRootDepth%20%3E%200%29%20%7B%20const%20shadowRoots%20%3D%20getShadowRoots%28roots%5Bi%5D%29%3B%20if%20%28shadowRoots.length%29%20%7B%20const%20deepQuerySelectorResult%20%3D%20deepQuerySelector%28selector%2C%20%7B%20roots%3A%20shadowRoots%2C%20maxShadowRootDepth%3A%20maxShadowRootDepth%20-%201%20%7D%29%3B%20if%20%28deepQuerySelectorResult%29%20%7B%20return%20deepQuerySelectorResult%3B%20%7D%20%7D%20%7D%20%7D%20%7D%20%20function%20deepQuerySelectorAll%28selector%29%20%7B%20let%20allElements%20%3D%20%5B%5D%3B%20const%20allDocuments%20%3D%20getAllDocuments%28%29%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20allDocuments.length%3B%20i%2B%2B%29%20%7B%20allElements%20%3D%20allElements.concat%28Array.from%28allDocuments%5Bi%5D.querySelectorAll%28selector%29%29%29%3B%20%7D%20return%20allElements%3B%20%7D%20%20const%20regularElementsThatCannotBeShadowHostsSelector%20%3D%20%27a%2Cabbr%2Caddress%2Carea%2Caudio%2Cb%2Cbase%2Cbdi%2Cbdo%2Cbr%2Cbutton%2Ccanvas%2Ccaption%2Ccite%2Ccode%2Ccol%2Ccolgroup%2Cdata%2Cdatalist%2Cdd%2Cdel%2Cdetails%2Cdfn%2Cdialog%2Cdl%2Cdt%2Cem%2Cembed%2Cfieldset%2Cfigcaption%2Cfigure%2Cform%2Chead%2Chgroup%2Chr%2Chtml%2Ci%2Ciframe%2Cimg%2Cinput%2Cins%2Ckbd%2Clabel%2Clegend%2Cli%2Clink%2Cmap%2Cmark%2Cmath%2Cmath%20%2A%2Cmenu%2Cmeta%2Cmeter%2Cnoscript%2Cobject%2Col%2Coptgroup%2Coption%2Coutput%2Cparam%2Cpicture%2Cpre%2Cprogress%2Cq%2Crp%2Crt%2Cruby%2Cs%2Csamp%2Cscript%2Cselect%2Cslot%2Csmall%2Csource%2Cstrong%2Cstyle%2Csub%2Csummary%2Csup%2Csvg%2Csvg%20%2A%2Ctable%2Ctbody%2Ctd%2Ctemplate%2Ctextarea%2Ctfoot%2Cth%2Cthead%2Ctime%2Ctitle%2Ctr%2Ctrack%2Cu%2Cul%2Cvar%2Cvideo%2Cwbr%27%3B%20const%20possibleShadowHostsSelector%20%3D%20regularElementsThatCannotBeShadowHostsSelector%20.split%28%27%2C%27%29%20.map%28s%20%3D%3E%20%60%3Anot%28%24%7Bs%7D%29%60%29%20.join%28%27%27%29%3B%20%20function%20getShadowRoots%28roots%29%20%7B%20if%20%28%21roots%29%20%7B%20roots%20%3D%20getAllDocuments%28%29%3B%20%7D%20else%20if%20%28roots.length%29%20%7B%20roots%20%3D%20Array.from%28roots%29%3B%20%7D%20else%20if%20%28%21Array.isArray%28roots%29%29%20%7B%20roots%20%3D%20%5Broots%5D%3B%20%7D%20const%20shadowRoots%20%3D%20%5B%5D%3B%20roots.forEach%28root%20%3D%3E%20shadowRoots.push%28...%20Array.from%28root.querySelectorAll%28possibleShadowHostsSelector%29%29%20.filter%28possibleShadowHost%20%3D%3E%20possibleShadowHost.shadowRoot%29%20.map%28shadowHost%20%3D%3E%20shadowHost.shadowRoot%29%20%29%29%3B%20return%20shadowRoots%3B%20%7D%20%20function%20clickAndWaitOrDoItNow%28selectorOrElement%2C%20provider%2C%20callback%29%20%7B%20if%20%28tryToClick%28selectorOrElement%2C%20provider%29%29%20%7B%20setTimeout%28callback%2C%20250%29%3B%20%7D%20else%20%7B%20callback%28%29%3B%20%7D%20%7D%20%20function%20tryToClick%28selectorOrElement%2C%20provider%2C%20deepQuerySelectorOptions%29%20%7B%20const%20elem%20%3D%20typeof%20selectorOrElement%20%3D%3D%3D%20%27string%27%20%3F%20deepQuerySelector%28selectorOrElement%2C%20deepQuerySelectorOptions%29%20%3A%20selectorOrElement%3B%20if%20%28elem%29%20%7B%20const%20text%20%3D%20elem.localName%20%3D%3D%3D%20%27input%27%20%3F%20elem.value%20%3A%20elem.textContent.replaceAll%28%27%5Cn%27%2C%20%27%20%27%29.trim%28%29.replace%28%2F%28.%7B32%7D%29.%2A%2F%2C%20%27%241%E2%80%A6%27%29%3B%20const%20msg%20%3D%20typeof%20selectorOrElement%20%3D%3D%3D%20%27string%27%20%3F%20%60nocookie%3A%20found%20%24%7Bprovider%7D%20element%20%28%E2%80%9C%24%7Btext%7D%E2%80%9D%29%20to%20click%20for%20selector%20%24%7BselectorOrElement%7D%3A%20%60%20%3A%20%60nocookie%3A%20found%20%24%7Bprovider%7D%20element%20%28%E2%80%9C%24%7Btext%7D%E2%80%9D%29%20to%20click%3A%20%60%3B%20console.log%28msg%2C%20elem%29%3B%20%20setTimeout%28_%20%3D%3E%20elem.click%28%29%2C%2050%29%3B%20hasFoundSomethingToClick%20%3D%20true%3B%20return%20true%3B%20%7D%20%7D%20%20function%20retryToClick%28selectorOrElement%2C%20provider%2C%20maxNumMilliseconds%2C%20deepQuerySelectorOptions%29%20%7B%20if%20%28typeof%20maxNumMilliseconds%20%3D%3D%3D%20%27undefined%27%29%20%7B%20maxNumMilliseconds%20%3D%205000%3B%20%7D%20const%20startTimestamp%20%3D%20%2Bnew%20Date%28%29%3B%20const%20numMillisecondsBetweenTries%20%3D%20100%3B%20const%20retrier%20%3D%20_%20%3D%3E%20%7B%20const%20currTimestamp%20%3D%20%2Bnew%20Date%28%29%3B%20if%20%28tryToClick%28selectorOrElement%2C%20provider%2C%20deepQuerySelectorOptions%29%29%20%7B%20const%20numMillisecondsElapsed%20%3D%20currTimestamp%20-%20startTimestamp%3B%20if%20%28numMillisecondsElapsed%20%3E%3D%20numMillisecondsBetweenTries%29%20%7B%20console.log%28%60nocookie%3A%20%E2%86%91%20found%20that%20button%20to%20click%20after%20%24%7BnumMillisecondsElapsed%7D%20milliseconds.%20%E2%86%91%60%29%3B%20%7D%20return%3B%20%7D%20if%20%28currTimestamp%20%2B%20numMillisecondsBetweenTries%20%3C%3D%20startTimestamp%20%2B%20maxNumMilliseconds%29%20%7B%20setTimeout%28retrier%2C%20numMillisecondsBetweenTries%29%3B%20%7D%20%7D%3B%20retrier%28%29%3B%20%7D%20%20function%20tryToUncheck%28selectorOrElements%29%20%7B%20const%20elems%20%3D%20typeof%20selectorOrElements%20%3D%3D%3D%20%27string%27%20%3F%20deepQuerySelectorAll%28selectorOrElements%29%20%3A%20selectorOrElements%3B%20elems.forEach%28check%20%3D%3E%20%7B%20%20let%20labellingElement%3B%20let%20labelText%3B%20if%20%28check.hasAttribute%28%27aria-label%27%29%29%20%7B%20labelText%20%3D%20check.getAttribute%28%27aria-label%27%29%3B%20%7D%20else%20if%20%28check.hasAttribute%28%27title%27%29%29%20%7B%20labelText%20%3D%20check.getAttribute%28%27title%27%29%3B%20%7D%20else%20%7B%20if%20%28check.hasAttribute%28%27aria-labelledby%27%29%29%20%7B%20labellingElement%20%3D%20document.getElementById%28check.getAttribute%28%27aria-labelledby%27%29%29%3B%20%7D%20if%20%28%21labellingElement%20%26%26%20check.hasAttribute%28%27id%27%29%29%20%7B%20try%20%7B%20labellingElement%20%3D%20document.querySelector%28%60label%5Bfor%3D%22%24%7Bcheck.id%7D%22%5D%60%29%3B%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20if%20%28%21labellingElement%29%20%7B%20labellingElement%20%3D%20check.closest%28%27label%27%29%3B%20%7D%20if%20%28labellingElement%29%20%7B%20labelText%20%3D%20labellingElement.textContent.trim%28%29%3B%20%7D%20%7D%20if%20%28typeof%20labelText%20%3D%3D%3D%20%27undefined%27%20%7C%7C%20labelText%20%3D%3D%3D%20%27%27%29%20%7B%20labelText%20%3D%20%60%3C%24%7Bcheck.localName%7D%60%20%2B%20%5B%27name%27%2C%20%27value%27%2C%20%27id%27%2C%20%27class%27%5D.map%28attrName%20%3D%3E%20check.hasAttribute%28attrName%29%20%3F%20%60%20%24%7BattrName%7D%3D%22%24%7Bcheck.getAttribute%28attrName%29%7D%22%60%20%3A%20%27%27%20%29.filter%28_%20%3D%3E%20_%29.join%28%27%27%29%20%2B%20%27%3E%27%3B%20%7D%20%20if%20%28check.checked%20%3D%3D%3D%20false%29%20%7B%20console.log%28%60nocookie%3A%20checkbox%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%20was%20already%20unchecked%3A%20%60%2C%20check%29%3B%20return%3B%20%7D%20%20console.log%28%60nocookie%3A%20unchecking%20checkbox%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%3A%20%60%2C%20check%29%3B%20check.click%28%29%3B%20check.checked%20%3D%20false%3B%20check.setAttribute%28%27aria-checked%27%2C%20%27false%27%29%3B%20%7D%29%3B%20%7D%20%20%7B%20%20if%20%28%21tryToClick%28%27.eu-cookie-compliance-banner%20.decline-button%2C%20.decline-button%5Bclass%2A%3D%22eu-cookie-compliance%22%5D%27%2C%20%27Drupal%27%29%29%20%7B%20tryToUncheck%28%27.eu-cookie-compliance-categories%20input%5Btype%3D%22checkbox%22%5D%5Bname%3D%22cookie-categories%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.eu-cookie-compliance-banner%20.eu-cookie-compliance-save-preferences-button%27%2C%20%27Drupal%27%29%3B%20%7D%20%20tryToClick%28%27%23truste-consent-required%27%2C%20%27TrustArc%27%29%3B%20%20tryToClick%28%27%23cookiescript_reject%27%2C%20%27Cookie-Script%27%29%3B%20%20tryToClick%28%27%23cookie_action_close_header_reject%2C%20%5Bdata-cky-tag%3D%22reject-button%22%5D%2C%20.cky-btn-reject%27%2C%20%27CookieYes%2FCookie-Law-Info%27%29%3B%20%20tryToClick%28%27%23essential_accept%20.btn-btn-save%27%2C%20%27GDPR%20Legal%20Cookie%20App%20for%20Shopify%27%29%3B%20%20if%20%28tryToClick%28%27.cck-actions-button%5Bhref%3D%22%23refuse%22%5D%2C%20.wt-cck-btn-refuse%27%2C%20%27NextEuropa%27%29%29%20%7B%20tryToClick%28%27.cck-actions%20%5Bhref%3D%22%23close%22%5D%27%2C%20%27NextEuropa%27%29%3B%20%7D%20%20tryToClick%28%27%23hs-eu-decline-button%27%2C%20%27HubSpot%27%29%3B%20%20tryToClick%28%27.nimbuCookie%20.cn-ok%20button%3Anot%28.cm-btn-success%29%3Anot%28.cm-btn-info%29%27%2C%20%27Nimbu%20%28Zenjoy%29%27%29%3B%20%20tryToClick%28%27.orejime-Button--decline%2C%20.orejime-Notice-declineButton%27%2C%20%27Orejime%27%29%3B%20%20if%20%28%21tryToClick%28%27.cookiefirst-root%20%5Bdata-cf-action%3D%22reject%22%5D%27%2C%20%27CookieFirst%27%29%29%20%7B%20const%20lastPossibleCookieFirstButton%20%3D%20deepQuerySelectorAll%28%27button%5Bdata-cookiefirst-button%3D%22secondary%22%5D%3Anth-of-type%283%29%3Alast-child%27%29.pop%28%29%3B%20if%20%28lastPossibleCookieFirstButton%29%20%7B%20tryToClick%28lastPossibleCookieFirstButton%2C%20%27CookieFirst%20modal%20dialog%27%29%3B%20%7D%20%7D%20%20if%20%28%21tryToClick%28%27%5Bdata-cookiefirst-action%3D%22reject%22%5D%27%2C%20%27CookieFirst%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%5Bdata-cookiefirst-action%3D%22adjust%22%5D%27%2C%20%27CookieFirst%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.cookiefirst-root%20%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%2C%20.cookiefirst-root%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-cookiefirst-action%3D%22save%22%5D%27%2C%20%27CookieFirst%27%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27.fc-cta-do-not-consent%27%2C%20%27Google%20Funding%20Choices%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.fc-cta-manage-options%27%2C%20%27Google%20Funding%20Choices%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.fc-preference-legitimate-interest%2C%20input%5Btype%3D%22checkbox%22%5D%5Bid%2A%3D%22egitimate%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.fc-confirm-choices%27%2C%20%27Google%20Funding%20Choices%27%29%3B%20%7D%20%29%3B%20%7D%20%20tryToClick%28%27%5Baria-modal%3D%22true%22%5D%5Baria-label%2A%3D%22Google%22%5D%20button%3Afirst-child%3Anot%28%3Aonly-child%29%3Anot%28%5Baria-haspopup%3D%22true%22%5D%29%27%2C%20%27Google%20consent%20modal%20dialog%27%29%20%7C%7C%20tryToClick%28%27form%5Baction%5E%3D%22https%3A%2F%2Fconsent.google.%22%5D%5Baction%24%3D%22%2Fsave%22%5D%20button%5Bjsaction%5D%27%2C%20%27Google%20consent%20modal%20dialog%20%28FORM%20version%29%27%29%20%7C%7C%20tryToClick%28%27form%5Baction%5E%3D%22https%3A%2F%2Fconsent.youtube.%22%5D%5Baction%24%3D%22%2Fsave%22%5D%20button%5Bjsaction%5D%27%2C%20%27Google%20consent%20modal%20dialog%20%28YouTube%20FORM%20version%29%27%29%3B%20%20tryToClick%28%27ytd-consent-bump-v2-lightbox%20ytd-button-renderer%3Afirst-of-type%3Anot%28%3Aonly-child%29%20button%27%2C%20%27YouTube%20consent%20bump%27%29%3B%20%20tryToClick%28%27%23consent-page%20button%5Bname%3D%22reject%22%5D%27%2C%20%27Yahoo%20IAB%27%29%3B%20%20if%20%28%21tryToClick%28%27%23onetrust-reject-all-handler%27%2C%20%27Onetrust%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23onetrust-pc-btn-handler%27%2C%20%27Onetrust%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%23onetrust-consent-sdk%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.onetrust-close-btn-handler%27%2C%20%27Onetrust%27%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23didomi-notice-disagree-button%2C%20.didomi-continue-without-agreeing%27%2C%20%27Didomi%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23didomi-notice-learn-more-button%27%2C%20%27Didomi%27%2C%20_%20%3D%3E%20%7B%20%20if%20%28%21tryToClick%28%27%23didomi-radio-option-disagree-to-all%27%2C%20%27Didomi%27%29%29%20%7B%20%20retryToClick%28%27.didomi-consent-popup-actions%20button%3Afirst-of-type%3Anot%28%3Aonly-child%29%27%2C%20%27Didomi%27%29%3B%20%7D%20%20setTimeout%28_%20%3D%3E%20retryToClick%28%27.didomi-consent-popup-actions%20button%3Afirst-of-type%27%2C%20%27Didomi%27%29%2C%20250%29%3B%20%7D%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27.qc-cmp2-summary-buttons%20button%5Bmode%3D%22secondary%22%5D%27%2C%20%27Quantcast%27%2C%20_%20%3D%3E%20%7B%20%20tryToClick%28%27.qc-cmp2-header-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28reject%20main%20cookies%29%27%29%3B%20%20if%20%28tryToClick%28%27.qc-cmp2-footer-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28go%20to%20partners%20tab%29%27%29%29%20%7B%20setTimeout%28_%20%3D%3E%20%7B%20tryToClick%28%27.qc-cmp2-header-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28reject%20partner%20cookies%29%27%29%3B%20%20if%20%28tryToClick%28%27.qc-cmp2-footer-links%20button%3Anth-of-type%282%29%27%2C%20%27Quantcast%20%28go%20to%20legitimate%20interests%20tab%29%27%29%29%20%7B%20setTimeout%28_%20%3D%3E%20tryToClick%28%27.qc-cmp2-header-links%20button%3Anth-of-type%281%29%27%2C%20%27Quantcast%20%28object%20to%20all%20interests%29%27%29%2C%2050%29%3B%20%7D%20%7D%2C%2050%29%3B%20%7D%20%20setTimeout%28_%20%3D%3E%20%7B%20retryToClick%28%27.qc-cmp2-footer%20button%5Bmode%3D%22primary%22%5D%27%2C%20%27Quantcast%20%28save%20%26%20exit%29%27%29%3B%20%7D%2C%20500%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-tracking-opt-in-learn-more%3D%22true%22%5D%27%2C%20%27Fandom%2FWikia%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-tracking-opt-in-overlay%3D%22true%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20retryToClick%28%27%5Bdata-tracking-opt-in-save%3D%22true%22%5D%27%2C%20%27Fandom%2FWikia%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.js-kmcc-extended-modal-button%5Bdata-target%3D%22legal_cookie_preferences%22%5D%27%2C%20%27Kunstmaan%20Cookie%20Bar%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.kmcc-cookies-toggle-pp%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23kmcc-accept-some-cookies%27%2C%20%27Kunstmaan%20Cookie%20Bar%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23SG-CookieConsent--TogglePreferencesButton%27%2C%20%27Stad%20Gent%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input.SG-CookieConsent--checkbox%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23SG-CookieConsent--SavePreferencesButton%27%2C%20%27Stad%20Gent%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27.osano-cm-denyAll%2C%20.osano-cm-button--type_denyAll%27%2C%20%27Osano%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27a%5Bhref%3D%22%23%22%5D.cookie_tool_more%2C%20%23cookie_tool_config%27%2C%20%27AdResults%27%2C%20_%20%3D%3E%20%7B%20%20%28deepQuerySelector%28%27input%5Bname%3D%22cookie_tool_choise%22%5D%5Bvalue%3D%223%22%5D%27%29%20%3F%3F%20%7B%7D%29.checked%20%3D%20true%3B%20%20tryToClick%28%27.cookie_tool_submit%27%2C%20%27AdResults%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.cc_dialog%20button.cc_b_cp%2C%20.cc_dialog%20.btn%3Anot%28.cc_b_ok_custom%29%27%2C%20%27Free%20Privacy%20Policy%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.checkbox_cookie_consent%3Achecked%27%29%3B%20tryToClick%28%27.cc_cp_f_save%20button%27%2C%20%27Free%20Privacy%20Policy%27%29%3B%20%7D%20%29%3B%20%20if%20%28%21tryToClick%28%27.iubenda-cs-reject-btn%27%2C%20%27Iubenda%20Cookie%20Solution%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.iubenda-cs-customize-btn%27%2C%20%27Iubenda%27%2C%20_%20%3D%3E%20%7B%20if%20%28%21tryToClick%28%27%5Bclass%2A%3D%22iubenda%22%5D%20.purposes-btn-reject%27%2C%20%27Iubenda%20Cookie%20Solution%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23iubFooterBtnIab%27%2C%20%27Iubenda%27%2C%20_%20%3D%3E%20%7B%20%20tryToClick%28%27.iub-cmp-reject-btn%27%2C%20%27Iubenda%27%29%3B%20%20tryToClick%28%27%23iubFooterBtn%2C%20.iubenda-cs-reject-btn%27%2C%20%27Iubenda%27%29%3B%20%7D%20%29%3B%20%7D%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23ez-accept-necessary%27%2C%20%27Ezoic%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23ez-manage-settings%2C%20%5Bonclick%2A%3D%22handleShowDetails%22%5D%2C%20%5Bonclick%2A%3D%22handleManageSettings%22%5D%27%2C%20%27Ezoic%27%2C%20_%20%3D%3E%20%7B%20%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D.ez-cmp-checkbox%3Achecked%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23ez-show-vendors%2C%20%5Bonclick%2A%3D%22savePurposesAndShowVendors%22%5D%27%2C%20%27Ezoic%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D.ez-cmp-checkbox%3Achecked%27%29%3B%20tryToClick%28%27%23ez-save-settings%2C%20%5Bonclick%2A%3D%22saveVendorsAndExitModal%22%5D%2C%20%5Bonclick%2A%3D%22handleSaveSettings%22%5D%27%2C%20%27Ezoic%27%29%3B%20%7D%20%29%3B%20%20retryToClick%28%27%23ez-save-settings%2C%20%5Bonclick%2A%3D%22savePurposesAndExitModal%22%5D%2C%20%5Bonclick%2A%3D%22handleSaveSettings%22%5D%27%2C%20%27Ezoic%27%29%3B%20%7D%20%29%3B%20%7D%20%20tryToClick%28%27%23CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll%2C%20%23CybotCookiebotDialogBodyButtonDecline%2C%20%23CybotCookiebotDialogBodyLevelButtonDecline%27%2C%20%27Cybot%27%29%3B%20%20const%20userCentricsShadowRoot%20%3D%20deepQuerySelector%28%27%23usercentrics-root%27%29%3F.shadowRoot%3B%20if%20%28userCentricsShadowRoot%29%20%7B%20clickAndWaitOrDoItNow%28%20userCentricsShadowRoot.querySelector%28%27button%5Bdata-testid%3D%22uc-more-button%22%5D%27%29%2C%20%27UserCentrics%20%28with%20Shadow%20DOM%29%27%2C%20%20_%20%3D%3E%20setTimeout%28_%20%3D%3E%20%7B%20tryToClick%28userCentricsShadowRoot.querySelector%28%27button%5Bdata-testid%3D%22uc-deny-all-button%22%5D%27%29%2C%20%27UserCentrics%20%28with%20Shadow%20DOM%29%27%29%3B%20%7D%2C%20250%29%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27.cmp__notice-buttons%20button.is-secondary%3Anth-child%282%29%27%2C%20%27WordPress%27%2C%20_%20%3D%3E%20%7B%20%20retryToClick%28%27.cmp__dialog-footer-buttons%20button.is-secondary%3Anth-child%282%29%27%2C%20%27WordPress%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.a8c-cookie-banner__customize-button%27%2C%20%27Automattic%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.a8c-cookie-banner__options-selection%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.a8c-cookie-banner__accept-selection-button%27%2C%20%27Automattic%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23notice-cookie-block%20%23btn-cookie-settings%27%2C%20%27Pon%20Bike%20Group%27%2C%20_%20%3D%3E%20%7B%20%20%20deepQuerySelectorAll%28%27%23cookie-manager-popup%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29.forEach%28check%20%3D%3E%20%7B%20%20tryToClick%28%60%23cookie-manager-popup%20label%5Bfor%3D%22%24%7Bcheck.id%7D%22%5D%60%2C%20%27Pon%20Bike%20Group%27%29%3B%20check.checked%20%3D%20false%3B%20%7D%29%3B%20%20deepQuerySelectorAll%28%27%23cookie-manager-popup%20%5Bdata-switch%3D%22on%22%5D%27%29.forEach%28fakeCheckbox%20%3D%3E%20%7B%20%20fakeCheckbox.click%28%29%3B%20fakeCheckbox.dataset.switch%20%3D%20%27off%27%3B%20%7D%29%3B%20%20tryToClick%28%27%23cookie-manager-popup%20.modal-footer%20button%2C%20.cookie-manager-popup%20.modal-footer%20button%27%2C%20%27Pon%20Bike%20Group%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27.frame-content%20.button__refuseAll%2C%20.frame-content%20.button__skip%27%2C%20%27SBFX%20AppConsent%27%29%20%7C%7C%20tryToClick%28%27.frame-content%20button%5Baria-roledescription%3D%22link%22%5D%3Aonly-child%27%2C%20%27SBFX%20AppConsent%20%28brittle%20selector%21%29%27%29%3B%20%20const%20openCmpShadowRoot%20%3D%20document.querySelector%28%27body%20%3E%20div.needsclick%27%29%3F.shadowRoot%3B%20if%20%28openCmpShadowRoot%29%20%7B%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_navi%20a%5Bpage%3D%22settings%22%5D%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CSettings%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_level0Container%20.cmp_levelItem%3Afirst-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CProcessing%20purposes%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_activateAll%20a%3Anth-child%282%29%3Alast-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CDeactivate%20all%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_level1Container%20.cmp_levelItem%3Anot%28.cmp_active%29%20%3E%20%2A%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CLegitimate%20interest%E2%80%9D%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20openCmpShadowRoot.querySelector%28%27.cmp_activateAll%20a%3Anth-child%282%29%3Alast-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CDeactivate%20all%E2%80%9D%27%2C%20_%20%3D%3E%20tryToClick%28%20openCmpShadowRoot.querySelector%28%27.cmp_navi%20.cmp_saveLink%20a%5Bhref%3D%22%23%22%5D%3Aonly-child%27%29%2C%20%27Traffective%20Open%20CMP%20%E2%80%9CConfirm%20selection%E2%80%9D%27%20%29%20%29%20%29%20%29%20%29%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20%5Bdata-view%3D%22manageSettings%22%5D%27%2C%20%27Mediavine%20GDPR%20CMP%27%2C%20_%20%3D%3E%20%7B%20%20tryToUncheck%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20%20if%20%28tryToClick%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20%5Bdata-view%3D%22partnerSettings%22%5D%27%2C%20%27Mediavine%20GDPR%20CMP%20%28go%20to%20partners%20tab%29%27%29%29%20%7B%20setTimeout%28_%20%3D%3E%20tryToUncheck%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%2C%20250%29%3B%20%7D%20%20setTimeout%28_%20%3D%3E%20retryToClick%28%27%5Bdata-name%3D%22mediavine-gdpr-cmp%22%5D%20%5Bformat%3D%22secondary%22%5D%27%2C%20%27Mediavine%20GDPR%20CMP%20%28save%20%26%20exit%29%27%29%2C%20500%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-hook%3D%22consent-banner-root%22%5D%20%5Bdata-hook%3D%22consent-banner-settings-button%22%5D%27%2C%20%27Wix%20cookie%20consent%20banner%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-hook%3D%22consent-banner-settings-container%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-hook%3D%22consent-banner-settings-container%22%5D%20%5Bdata-hook%3D%22consent-banner-settings-save-button%22%5D%27%2C%20%27Wix%20cookie%20consent%20banner%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.ncmp__btn%5Bonclick%2A%3D%22showModal%22%5D%27%2C%20%27NitroPay%20CMP%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20%27.ncmp__toggle-purposes-off%27%2C%20%27NitroPay%20CMP%20%28reject%20all%20purposes%29%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20%27.ncmp__nav%20%5Bonclick%2A%3D%22showModal%22%5D%5Bonclick%2A%3D%22object%22%5D%27%2C%20%27NitroPay%20CMP%20%28go%20to%20legimate%20interests%20tab%29%27%2C%20_%20%3D%3E%20clickAndWaitOrDoItNow%28%20%27.ncmp__toggle-legint-purposes-off%27%2C%20%27NitroPay%20CMP%20%28object%20to%20all%20legitimate%20interests%29%27%2C%20_%20%3D%3E%20retryToClick%28%27.ncmp__btn%5Bonclick%2A%3D%22hideModal%22%5D%27%2C%20%27NitroPay%20CMP%20%28save%20%26%20exit%29%27%29%20%29%20%29%20%29%20%29%3B%20%20let%20wieniCurrStep%20%3D%200%3B%20let%20wieniMaxSteps%20%3D%2010%3B%20const%20wieniButtonSelector%20%3D%20%27.cookie-notice%20.cookie-notice__footer%20button%3Afirst-child%27%3B%20function%20recursivelyClickWieniButtons%28%29%20%7B%20if%20%28%20tryToClick%28wieniButtonSelector%2C%20%60Wieni%20cookie%20notice%20%28step%20%24%7BwieniCurrStep%7D%29%60%29%20%29%20%7B%20wieniCurrStep%2B%2B%3B%20if%20%28wieniCurrStep%20%3C%20wieniMaxSteps%29%20%7B%20setTimeout%28recursivelyClickWieniButtons%2C%20125%29%3B%20%7D%20%7D%20%7D%20recursivelyClickWieniButtons%28%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%5Bhref%3D%22%23uxm-settings%22%5D%27%2C%20%27Google%20Tag%20Manager%20UXM%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input.uxm-toggle-input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23uxm-accept-custom%27%2C%20%27Google%20Tag%20Manager%20UXM%27%29%3B%20%7D%20%29%3B%20%20if%20%28%21tryToClick%28%27.cmplz-btn.cmplz-deny%27%2C%20%27Complianz%20cookie%20consent%20deny%20button%27%29%29%20%7B%20tryToUncheck%28%27.cmplz-consent-checkbox%3Achecked%27%29%3B%20tryToClick%28%27.cc-btn.cc-save-settings%27%2C%20%27Complianz%20cookie%20consent%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23ccc-notify-reject%2C%20%23ccc-reject-settings%27%2C%20%27Cookie%20Control%20by%20CIVIC%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.ccc-notify-link%2C%20%23ccc-icon%3Anot%28%5Baria-expanded%3D%22true%22%5D%29%27%2C%20%27Cookie%20Control%20by%20CIVIC%27%2C%20_%20%3D%3E%20%7B%20if%20%28%21tryToClick%28%27%23ccc-notify-reject%2C%20%23ccc-reject-settings%27%2C%20%27Cookie%20Control%20by%20CIVIC%27%29%29%20%7B%20tryToUncheck%28%27%23ccc-content%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23ccc-dismiss-button%2C%20%23ccc-close%27%2C%20%27Cookie%20Control%20by%20CIVIC%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%5Bdata-js-target%3D%22CookieSettingsNotificationRejectAll.rejectAllButton%22%5D%27%2C%20%27Stripe%27%29%29%20%7B%20if%20%28document.domain.match%28%2F%28%5E%7C%5C.%29stripe%5C.com%24%2F%29%29%20%7B%20const%20stripeManageButtonSelectors%20%3D%20%60%20%5Bdata-js-target%3D%22CookieSettingsNotification.manageButton%22%5D%2C%20.db-CookieBanner%20a%5Bhref%24%3D%22%2Fcookie-settings%22%5D%2C%20.NotificationContainer%20a%5Bhref%24%3D%22%2Fcookie-settings%22%5D%20%60%3B%20clickAndWaitOrDoItNow%28%20stripeManageButtonSelectors%2C%20%27Stripe%27%2C%20_%20%3D%3E%20%7B%20%20if%20%28location.pathname.match%28%2F%5C%2Fcookie-settings%24%2F%29%29%20%7B%20%20tryToUncheck%28%27%5Bdata-js-controller%3D%22CookieSettingsSection%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20%20setTimeout%28%20_%20%3D%3E%20%7B%20if%20%28history.length%20%3D%3D%3D%201%29%20%7B%20if%20%28confirm%28%27Preferences%20updated.%20Close%20tab%2Fwindow%3F%27%29%29%20%7B%20top.close%28%29%3B%20%7D%20%7D%20else%20%7B%20history.back%28%29%3B%20%7D%20%7D%2C%20250%20%29%3B%20%7D%20%7D%20%29%3B%20%7D%20%7D%20%20const%20deepLSaveSelectionButton%20%3D%20deepQuerySelector%28%27.dl_cookieBanner--buttonSelected%27%29%3B%20if%20%28deepLSaveSelectionButton%29%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D.dl_cookieBanner--checkbox%3Achecked%27%29%3B%20tryToClick%28deepLSaveSelectionButton%2C%20%27DeepL%20cookie%20banner%27%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23consent-layer%20.js-accept-essential-cookies%27%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%27%2C%20%7BmaxShadowRootDepth%3A%203%7D%29%29%20%7B%20const%20bahnShadowRoot%20%3D%20deepQuerySelector%28%27body%20%3E%20div%3Afirst-child%27%29%3F.shadowRoot%3B%20if%20%28bahnShadowRoot%20%26%26%20%21tryToClick%28bahnShadowRoot.querySelector%28%27%23consent-layer%20.js-accept-essential-cookies%27%29%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20bahnShadowRoot.querySelector%28%27%23consent-layer%20.js-show-cookie-settings%27%29%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28bahnShadowRoot.querySelectorAll%28%27%23consent-layer%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%29%3B%20tryToClick%28bahnShadowRoot.querySelector%28%27%23consent-layer%20.js-accept-selected-cookies%27%29%2C%20%27Deutsche%20Bahn%20cookie%20consent%20dialog%20%28with%20Shadow%20DOM%29%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%29%3B%20%7D%20%7D%20%20tryToClick%28%27.tarteaucitronDeny%27%2C%20%27tarteaucitron.js%20%28%E2%80%9CDeny%20all%E2%80%9D%20button%29%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23bs-gdpr-cookies-modal-advanced-btn%27%2C%20%27bsgdprcookies%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bname%3D%22bsgdpr%5B%5D%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23bs-gdpr-cookies-modal-accept-btn%27%2C%20%27bsgdprcookies%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.as-m-popover%20.as-a-btn--link%3Alast-child%3Anot%28%3Aonly-child%29%27%2C%20%27Yonderland%20group%20cookie%20message%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27.as-m-popover%20input%5Btype%3D%22checkbox%22%5D%5Bname%3D%22cookie-group%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.as-m-popover%20.as-m-group%20.as-a-btn%27%2C%20%27Yonderland%20group%20cookie%20message%20%28save%20%26%20exit%29%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27%5Bcky-i18n%3D%22gdpr.buttons.reject.title%22%5D%27%2C%20%27CookieYes%20GDPR%20Cookie%20Consent%27%29%3B%20%20tryToClick%28%27%23cookie-information-template-wrapper%20%23declineButton%27%2C%20%27Cookie%20Information%20CMP%20deny%20button%27%29%3B%20%20tryToClick%28%27.cookieplus-btn-decline-cookies%27%2C%20%27Cookie%20Plus%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.cookies-consent-banner%20%5Bdata-test%3D%22basic-consent-required-only-btn%22%5D%27%2C%20%27Happy%20Socks%27%2C%20_%20%3D%3E%20%7B%20%20if%20%28%21tryToClick%28%27.cookies-consent-banner%20button.required-only%2C%20%5Bname%3D%22advanced-cookie-consent%22%5D%20button.required-only%27%2C%20%27Happy%20Socks%27%29%29%20%7B%20tryToUncheck%28%27.cookies-consent-banner%20input%5Btype%3D%22checkbox%22%5D%3Achecked%2C%20%5Bname%3D%22advanced-cookie-consent%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27.cookies-consent-banner%20button.confirm%2C%20%5Bname%3D%22advanced-cookie-consent%22%5D%20button.confirm%27%2C%20%27Happy%20Socks%27%29%3B%20%7D%20%7D%20%29%3B%20%20if%20%28%21tryToClick%28%27%5Bdata-cookie-refuse%5D%27%2C%20%27Borlabs%20Cookie%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%5Bdata-cookie-individual%5D%27%2C%20%27Borlabs%20Cookie%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-borlabs-cookie-switch%5D%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-cookie-accept%5D%27%2C%20%27Borlabs%20Cookie%27%29%3B%20%7D%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%5Bdata-component-class%3D%22Dlw.ScBase.Features.CookieConsentModule.CookieConsentModal%22%5D%20.cookie-settings-open%27%2C%20%27KBC%2FCera%20cookie%20consent%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%5Bdata-component-class%3D%22Dlw.ScBase.Features.CookieConsentModule.CookieConsentModal%22%5D%20input%5Btype%3D%22checkbox%22%5D%3Anot%28%5Bname%3D%22Consent%22%5D%29%3Anot%28%5Bname%3D%22Functional%22%5D%29%3Anot%28%5Bname%3D%22Analytics%22%5D%29%3Achecked%27%29%3B%20tryToClick%28%27%5Bdata-component-class%3D%22Dlw.ScBase.Features.CookieConsentModule.CookieConsentModal%22%5D%20.cookie-save-button%27%2C%20%27KBC%2FCera%20cookie%20consent%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23ppms_cm_open-popup%2C%20.ppms_cm_open-popup_link%27%2C%20%27Piwik%20PRO%20Marketing%20Suite%27%2C%20_%20%3D%3E%20tryToClick%28%27%23ppms_cm_reject-all%2C%20.ppms_cm_reject-all%27%2C%20%27Piwik%20PRO%20Marketing%20Suite%27%29%20%29%3B%20%20tryToClick%28%27app-cookies%20button%3Anot%28.btn-primary%29%27%2C%20%27mynexuzhealth%27%29%3B%20%20if%20%28%21tryToClick%28%27.moove-gdpr-infobar-reject-btn%27%2C%20%27Moove%20GDPR%20Cookie%20Compliance%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27.moove-gdpr-infobar-settings-btn%2C%20%23moove_gdpr_save_popup_settings_button%2C%20%5Bdata-href%3D%22%23moove_gdpr_cookie_modal%22%5D%27%2C%20%27Moove%20GDPR%20Cookie%20Compliance%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bname%5E%3D%22moove_gdpr%22%5D%3Anot%28%23moove_gdpr_strict_cookies%29%3Achecked%27%29%3B%20tryToClick%28%27.moove-gdpr-modal-save-settings%27%2C%20%27Moove%20GDPR%20Cookie%20Compliance%27%29%3B%20%7D%20%29%3B%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%23fluv-cookies-button-goto-preferences%27%2C%20%27Fluvius%20cookie%20dialog%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bid%5E%3D%22fluv-cookies-checkbox%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23fluv-cookies-button-accept-preferences%27%2C%20%27Fluvius%20cookie%20dialog%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27%5Bdata-component-name%3D%22cookie-active-consent-notice%22%5D%20%5Bdata-component-name%3D%22reject%22%5D%27%2C%20%27Shopify%27%29%3B%20%20tryToClick%28%27.cc-btn.cc-deny%27%2C%20%27Pandectes%20%28one%20version%29%27%29%3B%20tryToClick%28%27.pd-cp-ui-rejectAll%27%2C%20%27Pandectes%20%28another%20version%29%27%29%3B%20%20tryToClick%28%27.js_cookie-bar__decline%27%2C%20%27Futurumshop.nl%27%29%3B%20%20if%20%28%21tryToClick%28%27.cmpboxbtnno%27%2C%20%27Consent%20Manager%20Provider%20%28without%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23cmpbox%20.cmptxt_btn_settings%27%2C%20%27Consent%20Manager%20Provider%20%28without%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27%23cmpbox%20%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%29%3B%20tryToClick%28%27%23cmpbox%20.cmptxt_btn_save%27%2C%20%27Consent%20Manager%20Provider%20%28without%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%7D%20%20const%20cmpShadowRoot%20%3D%20deepQuerySelector%28%27%23cmpwrapper%27%29%3F.shadowRoot%3B%20if%20%28cmpShadowRoot%20%26%26%20%21tryToClick%28cmpShadowRoot.querySelector%28%27.cmpboxbtnno%27%29%2C%20%27Consent%20Manager%20Provider%20%28with%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20cmpShadowRoot.querySelector%28%27.cmptxt_btn_settings%27%29%2C%20%27Consent%20Manager%20Provider%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28cmpShadowRoot.querySelectorAll%28%27%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%29%29%3B%20tryToClick%28cmpShadowRoot.querySelector%28%27.cmptxt_btn_save%27%29%2C%20%27Consent%20Manager%20Provider%20%28with%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21tryToClick%28%27%23axeptio_btn_dismiss%27%2C%20%27Axeptio%20%28without%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20%27%23axeptio_btn_configure%27%2C%20%27Axeptio%20%28without%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20let%20axeptioCurrStep%20%3D%200%3B%20let%20axeptioMaxSteps%20%3D%2010%3B%20const%20axeptioNextButtonSelector%20%3D%20%27%23axeptio_btn_next%27%3B%20const%20axeptioNextButtonsClicked%20%3D%20new%20WeakMap%28%29%3B%20const%20axeptioCheckboxSelector%20%3D%20%27%23axeptio_overlay%20%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%3B%20const%20axeptioCheckboxHoldersClicked%20%3D%20new%20WeakMap%28%29%3B%20function%20repeatedlyClickAxeptioButtons%28%29%20%7B%20axeptioCurrStep%2B%2B%3B%20%20const%20axeptioCheckboxes%20%3D%20deepQuerySelectorAll%28axeptioCheckboxSelector%29%3B%20axeptioCheckboxes.forEach%28checkbox%20%3D%3E%20%7B%20%20if%20%28%21checkbox.matches%28axeptioCheckboxSelector%29%29%20%7B%20return%3B%20%7D%20const%20axeptioCheckboxHolder%20%3D%20checkbox.closest%28%27.ListSwitch__Item%27%29%3F.querySelector%28%27.ListSwitch__Vendor%27%29%3B%20%20if%20%28%21axeptioCheckboxHolder%20%7C%7C%20axeptioCheckboxHoldersClicked.get%28axeptioCheckboxHolder%29%29%20%7B%20return%3B%20%7D%20axeptioCheckboxHoldersClicked.set%28axeptioCheckboxHolder%2C%20true%29%3B%20tryToClick%28axeptioCheckboxHolder%2C%20%60Axeptio%20%28without%20Shadow%20DOM%29%20%28step%20%24%7BaxeptioCurrStep%7D%29%20fake%20checkbox%20holder%60%29%3B%20%7D%29%3B%20%20const%20axeptioNextButton%20%3D%20deepQuerySelector%28axeptioNextButtonSelector%29%3B%20if%20%28%21axeptioNextButton%20%7C%7C%20axeptioNextButtonsClicked.get%28axeptioNextButton%29%29%20%7B%20return%3B%20%7D%20if%20%28%20tryToClick%28axeptioNextButton%2C%20%60Axeptio%20%28without%20Shadow%20DOM%29%20%28step%20%24%7BaxeptioCurrStep%7D%29%60%29%20%29%20%7B%20axeptioNextButtonsClicked.set%28axeptioNextButton%2C%20true%29%3B%20if%20%28axeptioCurrStep%20%3C%20axeptioMaxSteps%29%20%7B%20setTimeout%28repeatedlyClickAxeptioButtons%2C%20125%29%3B%20%7D%20%7D%20%7D%20repeatedlyClickAxeptioButtons%28%29%3B%20%7D%20%29%3B%20%7D%20%20const%20axeptioShadowRoot%20%3D%20deepQuerySelector%28%27%23axeptio_overlay%20%3E%20.needsclick%27%29%3F.shadowRoot%3B%20if%20%28axeptioShadowRoot%29%20%7B%20if%20%28%21tryToClick%28axeptioShadowRoot.querySelector%28%27%23axeptio_btn_dismiss%27%29%2C%20%27Axeptio%20%28with%20Shadow%20DOM%29%27%29%29%20%7B%20clickAndWaitOrDoItNow%28%20axeptioShadowRoot.querySelector%28%27%23axeptio_btn_configure%27%29%2C%20%27Axeptio%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20let%20axeptioCurrStep%20%3D%200%3B%20let%20axeptioMaxSteps%20%3D%2010%3B%20const%20axeptioNextButtonSelector%20%3D%20%27%23axeptio_btn_next%27%3B%20const%20axeptioNextButtonsClicked%20%3D%20new%20WeakMap%28%29%3B%20const%20axeptioCheckboxSelector%20%3D%20%27%5Brole%3D%22checkbox%22%5D%5Baria-checked%3D%22true%22%5D%27%3B%20const%20axeptioCheckboxHoldersClicked%20%3D%20new%20WeakMap%28%29%3B%20function%20repeatedlyClickAxeptioButtons%28%29%20%7B%20axeptioCurrStep%2B%2B%3B%20%20const%20axeptioCheckboxes%20%3D%20axeptioShadowRoot.querySelectorAll%28axeptioCheckboxSelector%29%3B%20axeptioCheckboxes.forEach%28checkbox%20%3D%3E%20%7B%20%20if%20%28%21checkbox.matches%28axeptioCheckboxSelector%29%29%20%7B%20return%3B%20%7D%20const%20axeptioCheckboxHolder%20%3D%20checkbox.closest%28%27.ListSwitch__Item%27%29%3F.querySelector%28%27.ListSwitch__Vendor%27%29%3B%20%20if%20%28%21axeptioCheckboxHolder%20%7C%7C%20axeptioCheckboxHoldersClicked.get%28axeptioCheckboxHolder%29%29%20%7B%20return%3B%20%7D%20axeptioCheckboxHoldersClicked.set%28axeptioCheckboxHolder%2C%20true%29%3B%20tryToClick%28axeptioCheckboxHolder%2C%20%60Axeptio%20%28step%20%24%7BaxeptioCurrStep%7D%29%20fake%20checkbox%20holder%60%29%3B%20%7D%29%3B%20%20const%20axeptioNextButton%20%3D%20axeptioShadowRoot.querySelector%28axeptioNextButtonSelector%29%3B%20if%20%28%21axeptioNextButton%20%7C%7C%20axeptioNextButtonsClicked.get%28axeptioNextButton%29%29%20%7B%20return%3B%20%7D%20if%20%28%20tryToClick%28axeptioNextButton%2C%20%60Axeptio%20%28step%20%24%7BaxeptioCurrStep%7D%29%60%29%20%29%20%7B%20axeptioNextButtonsClicked.set%28axeptioNextButton%2C%20true%29%3B%20if%20%28axeptioCurrStep%20%3C%20axeptioMaxSteps%29%20%7B%20setTimeout%28repeatedlyClickAxeptioButtons%2C%20125%29%3B%20%7D%20%7D%20%7D%20repeatedlyClickAxeptioButtons%28%29%3B%20%7D%20%29%3B%20%7D%20%7D%20%20clickAndWaitOrDoItNow%28%20%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--pre-step-next%27%2C%20%27NPO%20CCM%20bar%20%28without%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20%20deepQuerySelectorAll%28%27%5Bid%5E%3D%22ccm_%22%5D%20input%5Btype%3D%22radio%22%5D%5Bvalue%3D%22false%22%5D%3Anot%28%3Achecked%29%27%29.forEach%28radio%20%3D%3E%20%7B%20if%20%28radio.checked%29%20%7B%20return%3B%20%7D%20const%20labelText%20%3D%20radio.getAttribute%28%27aria-label%27%29%20%7C%7C%20%60NPO%20CCM%3A%20%24%7Bradio.name%7D%60%3B%20console.log%28%60nocookie%3A%20checking%20radio%20button%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%3A%20%60%2C%20radio%29%3B%20radio.click%28%29%3B%20radio.checked%20%3D%20true%3B%20%7D%29%3B%20tryToClick%28%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--save%27%2C%20%27NPO%20CCM%20bar%20%28without%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%20const%20npoCcmShadowRoot%20%3D%20deepQuerySelector%28%27%23ccm_notification_host%27%29%3F.shadowRoot%3B%20if%20%28npoCcmShadowRoot%29%20%7B%20clickAndWaitOrDoItNow%28%20npoCcmShadowRoot.querySelector%28%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--pre-step-next%27%29%2C%20%27NPO%20CCM%20bar%20%28with%20Shadow%20DOM%29%27%2C%20_%20%3D%3E%20%7B%20%20npoCcmShadowRoot.querySelectorAll%28%27%5Bid%5E%3D%22ccm_%22%5D%20input%5Btype%3D%22radio%22%5D%5Bvalue%3D%22false%22%5D%3Anot%28%3Achecked%29%27%29.forEach%28radio%20%3D%3E%20%7B%20if%20%28radio.checked%29%20%7B%20return%3B%20%7D%20const%20labelText%20%3D%20radio.getAttribute%28%27aria-label%27%29%20%7C%7C%20%60NPO%20CCM%3A%20%24%7Bradio.name%7D%60%3B%20console.log%28%60nocookie%3A%20checking%20radio%20button%20for%20%E2%80%9C%24%7BlabelText%7D%E2%80%9D%3A%20%60%2C%20radio%29%3B%20radio.click%28%29%3B%20radio.checked%20%3D%20true%3B%20%7D%29%3B%20tryToClick%28npoCcmShadowRoot.querySelector%28%27%5Bid%5E%3D%22ccm_%22%5D%20.ccm_btn.ccm_btn--save%27%29%2C%20%27NPO%20CCM%20bar%20%28with%20Shadow%20DOM%29%27%29%3B%20%7D%20%29%3B%20%7D%20%20tryToClick%28%27.wp-pt-cookie-consent__cta.vl-button%3Anot%28%23cookie-conosent-modal-accept%29%27%2C%20%27Flanders%20cookie%20consent%20%281%29%27%29%3B%20%20tryToClick%28%27button.minimal-cookies%27%2C%20%27Flanders%20cookie%20consent%20%282%29%27%29%3B%20%20clickAndWaitOrDoItNow%28%20%27%23btn-cookie-settings%27%2C%20%27Mobile%20Vikings%20cookie%20wall%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bname%24%3D%22-cookies%22%5D%3Achecked%27%29%3B%20tryToClick%28%27%23btn-accept-custom-cookies%27%2C%20%27Mobile%20Vikings%20cookie%20wall%27%29%3B%20%7D%20%29%3B%20%20clickAndWaitOrDoItNow%28%20%27.js-manage-modalCookiesTrigger%2C%20a.privacyCookieSwitch%27%2C%20%27Canyon%20cookies%20modal%27%2C%20_%20%3D%3E%20%7B%20tryToUncheck%28%27input%5Btype%3D%22checkbox%22%5D%5Bclass%2A%3D%22js-dataPrivacyCheckbox%22%5D%3Achecked%27%29%3B%20retryToClick%28%27%23js-manage-data-privacy-save-button%27%2C%20%27Canyon%20cookies%20modal%27%29%3B%20%7D%20%29%3B%20%20tryToClick%28%27.cc-nb-reject%27%2C%20%27FreePrivacyPolicy.com%20Free%20Cookie%20Consent%27%29%3B%20%20deepQuerySelectorAll%28externalConsentManagerIframeSelectors.join%28%27%2C%27%29%29.forEach%28%20iframe%20%3D%3E%20%7B%20probableExternalConsentManagerIframeUris.push%28iframe.src%29%3B%20probableExternalConsentManagerIframes.push%28iframe%29%3B%20%7D%20%29%3B%20%7D%20%20if%20%28%21hasFoundSomethingToClick%20%26%26%20%21probableExternalConsentManagerIframes.length%29%20%7B%20const%20denyAllTexts%20%3D%20%5B%20%20%27%20deny%20%27%2C%20%27%20disallow%20%27%2C%20%27%20decline%20%27%2C%20%27%20refuse%20%27%2C%20%27%20reject%20%27%2C%20%27%20dismiss%20%27%2C%20%27%20necessary%20%27%2C%20%27%20essential%27%2C%20%27%20mandatory%20%27%2C%20%27%20required%20%27%2C%20%27%20minimal%20%27%2C%20%27%20no%20cookies%20%27%2C%20%27%20without%20cookies%20%27%2C%20%27%20without%20accepting%20%27%2C%20%27%20without%20agreeing%20%27%2C%20%27%20without%20supporting%20%27%2C%20%27%20do%20not%20accept%20%27%2C%20%27%20do%20not%20agree%20%27%2C%20%22%20don%27t%20accept%20%22%2C%20%27%20no%20thank%27%2C%20%27%20no%2C%20thank%27%2C%20%20%27%20weigeren%20%27%2C%20%27%20weiger%20%27%2C%20%27%20afwijzen%20%27%2C%20%27%20verwerpen%20%27%2C%20%27%20noodzakelijk%27%2C%20%27%20essenti%C3%ABle%20%27%2C%20%27%20essentieel%20%27%2C%20%27%20verplichte%20%27%2C%20%27%20vereiste%20%27%2C%20%27%20minimale%20%27%2C%20%27%20enkel%20%27%2C%20%27%20alleen%20%27%2C%20%27%20geen%20cookies%20%27%2C%20%27%20zonder%20cookies%20%27%2C%20%27%20zonder%20aanvaarden%20%27%2C%20%27%20zonder%20te%20aanvaarden%20%27%2C%20%27%20zonder%20accepteren%20%27%2C%20%27%20zonder%20te%20accepteren%20%27%2C%20%27%20niet%20toestaan%20%27%2C%20%27%20niet%20toelaten%20%27%2C%20%27%20niets%20toestaan%20%27%2C%20%27%20niets%20toelaten%20%27%2C%20%27%20nee%2C%20bedankt%20%27%2C%20%27%20nee%20bedankt%20%27%2C%20%27%20nee%2C%20dank%27%2C%20%27%20nee%20dank%27%2C%20%27%20niet%20akkoord%20%27%2C%20%20%27%20refuse%27%2C%20%27%20rejete%27%2C%20%27%20rejette%27%2C%20%27%20n%C3%A9cessaire%27%2C%20%27%20essentiel%27%2C%20%27%20requis%27%2C%20%27%20obligatoire%27%2C%20%27%20minimum%20%27%2C%20%27%20minimal%27%2C%20%27%20seulement%20%27%2C%20%27%20seul%20%27%2C%20%27%20pas%20de%20cookies%20%27%2C%20%27%20aucun%20%27%2C%20%27%20sans%20cookies%20%27%2C%20%27%20sans%20accepter%20%27%2C%20%27%20pas%20accepter%20%27%2C%20%27%20rien%20accepter%20%27%2C%20%27%20non%20merci%20%27%2C%20%27%20non%2C%20merci%20%27%2C%20%20%27%20ablehnen%20%27%2C%20%27%20lehne%20%27%2C%20%27%20notwendig%27%2C%20%27%20erforderlich%27%2C%20%27%20obligatorisch%27%2C%20%27%20minimale%20%27%2C%20%27%20nur%20%27%2C%20%27%20kein%20cookies%20%27%2C%20%27%20ohne%20cookies%20%27%2C%20%27%20ohne%20zu%20akzeptieren%20%27%2C%20%27%20nicht%20akzeptieren%20%27%2C%20%27%20nichts%20akzeptieren%20%27%2C%20%27%20nein%20danke%20%27%2C%20%27%20nein%2C%20danke%20%27%2C%20%20%27%20rifiut%27%2C%20%27%20rifi%C3%B9t%27%2C%20%27%20necessari%27%2C%20%27%20essenziali%27%2C%20%27%20richiesti%27%2C%20%27%20obbligatori%27%2C%20%27%20minimi%27%2C%20%27%20solo%20%27%2C%20%27%20senza%20cookie%20%27%2C%20%27%20senza%20accettare%20%27%2C%20%27%20non%20accettare%20%27%2C%20%27%20non%20permettere%20%27%2C%20%27%20no%2C%20grazie%20%27%2C%20%27%20no%20grazie%20%27%2C%20%20%27%20rechaz%27%2C%20%27%20necesari%27%2C%20%27%20esencial%27%2C%20%27%20requerid%27%2C%20%27%20obligatori%27%2C%20%27%20m%C3%ADnim%27%2C%20%27%20solo%20%27%2C%20%27%20sin%20cookies%20%27%2C%20%27%20sin%20aceptar%20%27%2C%20%27%20no%20aceptar%20%27%2C%20%27%20no%20permitir%20%27%2C%20%27%20no%2C%20gracias%20%27%2C%20%27%20no%20gracias%20%27%2C%20%20%27%20nekte%20al%27%2C%20%27%20avvis%20al%27%2C%20%27%20avsl%C3%A5%27%2C%20%27%20n%C3%B8dvendig%27%2C%20%27%20obligatorisk%27%2C%20%27%20viktig%27%2C%20%27%20minimal%27%2C%20%27%20kun%20%27%2C%20%27%20uten%20informasjonskapsler%20%27%2C%20%27%20uten%20%C3%A5%20godta%20%27%2C%20%27%20uten%20%C3%A5%20akseptere%20%27%2C%20%27%20ikke%20akseptere%20%27%2C%20%27%20ikke%20tillate%20%27%2C%20%27%20nei%20takk%20%27%2C%20%27%20nei%2C%20takk%20%27%2C%20%20%27%20refusar%20%27%2C%20%27%20rebutjar%20%27%2C%20%27%20necessari%27%2C%20%27%20essencial%27%2C%20%27%20obligatori%27%2C%20%27%20m%C3%ADnim%27%2C%20%27%20nom%C3%A9s%20%27%2C%20%27%20solament%20%27%2C%20%27%20unicament%20%27%2C%20%27%20sense%20galetes%20%27%2C%20%27%20sense%20cookies%20%27%2C%20%27%20sense%20acceptar%20%27%2C%20%27%20no%20perm%C3%A8s%20%27%2C%20%27%20no%20permetre%20%27%2C%20%27%20no%20gr%C3%A0cies%20%27%2C%20%22%20no%20d%27acord%20%22%2C%20%5D%3B%20const%20xPathButtonishExpression%20%3D%20%5B%20%27local-name%28%29%20%3D%20%22button%22%27%2C%20%27local-name%28%29%20%3D%20%22a%22%27%2C%20%27%40role%20%3D%20%22button%22%27%2C%20%27%40type%20%3D%20%22button%22%27%2C%20%27%40type%20%3D%20%22submit%22%27%2C%20%27contains%28%40class%2C%20%22button%22%29%27%2C%20%27contains%28%40class%2C%20%22Button%22%29%27%2C%20%27contains%28%40class%2C%20%22btn%22%29%27%2C%20%27contains%28%40class%2C%20%22Btn%22%29%27%2C%20%27%40onclick%27%2C%20%5D.join%28%27%20or%20%27%29%3B%20const%20xPathTextExpression%20%3D%20denyAllTexts%20.map%28text%20%3D%3E%20%60contains%28translate%28concat%28%22%20%22%2C%20.%2C%20%22%20%22%2C%20%40value%2C%20%22%20%22%29%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%E2%80%99%C2%A0%5Ct%5Cn%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%27%20%22%29%2C%20%22%24%7Btext.toLowerCase%28%29.replaceAll%28%27%22%27%2C%20%27%5C%5C%22%27%29%7D%22%29%60%29%20.join%28%27%20or%20%27%29%3B%20const%20xPathExpression%20%3D%20%60%2F%2F%2A%5B%24%7BxPathButtonishExpression%7D%5D%5B%24%7BxPathTextExpression%7D%5D%60%3B%20%20function%20getXPathResults%28xPathExpression%2C%20roots%29%20%7B%20if%20%28%21roots%29%20%7B%20roots%20%3D%20getAllDocuments%28%29%3B%20%7D%20else%20if%20%28%21Array.isArray%28roots%29%29%20%7B%20roots%20%3D%20%5Broots%5D%3B%20%7D%20const%20xPathResults%20%3D%20%5B%5D%3B%20roots.forEach%28%28root%2C%20i%29%20%3D%3E%20%7B%20const%20document%20%3D%20root.documentElement%20%26%26%20typeof%20root.evaluate%20%3D%3D%3D%20%27function%27%20%3F%20root%20%3A%20root.ownerDocument%3B%20let%20xPathResult%20%3D%20document.evaluate%28xPathExpression%2C%20root%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%29%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20xPathResult.snapshotLength%3B%20i%2B%2B%29%20%7B%20xPathResults.push%28xPathResult.snapshotItem%28i%29%29%3B%20%7D%20%7D%29%3B%20return%20xPathResults%3B%20%7D%20const%20xPathResults%20%3D%20getXPathResults%28xPathExpression%29%3B%20%20if%20%28%21xPathResults.length%29%20%7B%20getShadowRoots%28%29.forEach%28%20%20shadowRoot%20%3D%3E%20shadowRoot.childElementCount%20%26%26%20xPathResults.push%28...getXPathResults%28xPathExpression%2C%20shadowRoot.children%5BshadowRoot.childElementCount%20-%201%5D%29%29%20%29%3B%20%7D%20const%20cssConsentDescendantSelector%20%3D%20%5B%20%27consent%27%2C%20%27cookie%27%2C%20%27gdpr%27%2C%20%27privacy%27%2C%20%27terms%27%2C%20%27tcf%27%2C%20%5D.map%28%20text%20%3D%3E%20%5B%20%60%3Anot%28body%29%5Bclass%2A%3D%22%24%7Btext%7D%22%5D%60%2C%20%60%3Anot%28body%29%5Bclass%2A%3D%22%24%7Btext%7D%22%5D%20%2A%60%2C%20%60%3Anot%28body%29%5Bid%2A%3D%22%24%7Btext%7D%22%5D%60%2C%20%60%3Anot%28body%29%5Bid%2A%3D%22%24%7Btext%7D%22%5D%20%2A%60%2C%20%60form%5Baction%2A%3D%22%24%7Btext%7D%22%5D%20%2A%60%20%5D.join%28%27%2C%20%27%29%20%29.join%28%27%2C%20%27%29%3B%20const%20cookieTextRegexp%20%3D%20%2Fcooki%7Cinformasjonskaps%2Fi%3B%20let%20genericDenyButtons%20%3D%20%5B%5D%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20xPathResults.length%3B%20i%2B%2B%29%20%7B%20const%20node%20%3D%20xPathResults%5Bi%5D%3B%20%20let%20offsetParentIsOutsideOfShadowDom%20%3D%20node.offsetParent%20%26%26%20%21node.offsetParent.contains%28node%29%3B%20let%20hasTextMatch%20%3D%20%28node.offsetParent%20%7C%7C%20node%29.textContent.match%28cookieTextRegexp%29%3B%20if%20%28%21hasTextMatch%20%26%26%20offsetParentIsOutsideOfShadowDom%29%20%7B%20hasTextMatch%20%3D%20node.getRootNode%28%29.textContent.match%28cookieTextRegexp%29%3B%20%7D%20let%20hasCssConsentDescendantMatch%20%3D%20node.matches%28cssConsentDescendantSelector%29%3B%20if%20%28%21hasCssConsentDescendantMatch%20%26%26%20offsetParentIsOutsideOfShadowDom%29%20%7B%20hasCssConsentDescendantMatch%20%3D%20node.offsetParent.matches%28cssConsentDescendantSelector%29%3B%20if%20%28%21hasCssConsentDescendantMatch%29%20%7B%20hasCssConsentDescendantMatch%20%3D%20node.getRootNode%28%29%3F.host%3F.matches%28cssConsentDescendantSelector%29%3B%20%7D%20%7D%20%20if%20%28hasTextMatch%20%7C%7C%20hasCssConsentDescendantMatch%29%20%7B%20genericDenyButtons.push%28node%29%3B%20%7D%20%7D%20%20genericDenyButtons%20%3D%20genericDenyButtons.filter%28node%20%3D%3E%20%21genericDenyButtons.some%28otherNode%20%3D%3E%20node%20%21%3D%3D%20otherNode%20%26%26%20node.contains%28otherNode%29%29%29%3B%20genericDenyButtons.forEach%28node%20%3D%3E%20%7B%20console.log%28%60nocookie%3A%20there%20was%20no%20known%20cookie%20dialog%2C%20but%20looking%20for%20generic%20button%2Flink%20text%2C%20I%20did%20find%20this%20to%20click%20%28%E2%80%9C%24%7Bnode.textContent.replace%28%2F%5Cs%2B%2Fg%2C%20%27%20%27%29.trim%28%29%7D%E2%80%9D%29%3A%20%60%2C%20node%29%3B%20node.click%28%29%3B%20%7D%29%3B%20%7D%20%20const%20hasAlreadyGrabbedAttention%20%3D%20probableExternalConsentManagerIframes.some%28%20iframe%20%3D%3E%20iframe.classList.contains%28%27xxxJanProbableExternalConsentManagerIframe%27%29%20%29%3B%20if%20%28hasAlreadyGrabbedAttention%29%20%7B%20if%20%28probableExternalConsentManagerIframeUris.length%20%3D%3D%3D%201%29%20%7B%20alert%28%60There%20appears%20to%20be%20an%20IFRAME%20of%20an%20external%20consent%20manager.%20This%20bookmarklet%20cannot%20access%20that%20IFRAME%2C%20sorry.%5Cn%5CnURI%3A%20%24%7BprobableExternalConsentManagerIframeUris%5B0%5D%7D%60%29%3B%20%7D%20else%20if%20%28probableExternalConsentManagerIframeUris.length%20%3E%201%29%20%7B%20alert%28%60There%20appear%20to%20be%20%24%7BprobableExternalConsentManagerIframeUris.length%7D%20IFRAMEs%20of%20an%20external%20consent%20manager.%20This%20bookmarklet%20cannot%20access%20such%20IFRAME%2C%20sorry.%5Cn%5CnURIs%3A%5Cn%2A%20%24%7BprobableExternalConsentManagerIframeUris.join%28%27%5Cn%5Cn%2A%20%27%29%7D%60%29%3B%20%7D%20%7D%20const%20randomRgb%20%3D%20_%20%3D%3E%20Math.round%28Math.random%28%29%20%2A%20255%29%3B%20const%20numKeyframes%20%3D%2010%3B%20const%20outlineWidth%20%3D%206%3B%20let%20keyframesBody%20%3D%20%27%27%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20numKeyframes%3B%20i%2B%2B%29%20%7B%20keyframesBody%20%2B%3D%20%60%24%7BMath.round%28i%20%2F%20%28numKeyframes%20-%201%29%20%2A%20100%29%7D%25%20%7B%20outline-width%3A%20%24%7BoutlineWidth%7Dpx%3B%20outline-style%3A%20%24%7Bi%20%25%202%20%3D%3D%3D%200%20%3F%20%27groove%27%20%3A%20%27ridge%27%7D%3B%20outline-color%3A%20rgb%28%24%7BrandomRgb%28%29%7D%2C%20%24%7BrandomRgb%28%29%7D%2C%20%24%7BrandomRgb%28%29%7D%29%3B%20%7D%60%3B%20%7D%20const%20animationName%20%3D%20%60xxxJanAttentionGrabber%24%7B%2Bnew%20Date%28%29%7D%60%3B%20probableExternalConsentManagerIframes.forEach%28iframe%20%3D%3E%20%7B%20iframe.classList.add%28%27xxxJanProbableExternalConsentManagerIframe%27%29%3B%20const%20iframeBounds%20%3D%20iframe.getBoundingClientRect%28%29%3B%20const%20div%20%3D%20iframe.parentNode.insertBefore%28iframe.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%2C%20iframe.nextSibling%29%3B%20div.classList.add%28%27xxxJanProbableExternalConsentManagerAttentionGrabber%27%29%3B%20div.style.width%20%3D%20%60%24%7Biframe.offsetWidth%20-%20%28outlineWidth%20%2A%202%29%7Dpx%60%3B%20div.style.height%20%3D%20%60%24%7Biframe.offsetHeight%20-%20%28outlineWidth%20%2A%202%29%7Dpx%60%3B%20div.style.left%20%3D%20%60%24%7BiframeBounds.x%20%2B%20outlineWidth%7Dpx%60%3B%20div.style.top%20%3D%20%60%24%7BiframeBounds.y%20%2B%20outlineWidth%7Dpx%60%3B%20div.style.zIndex%20%3D%20iframe.ownerDocument%3F.defaultView%3F.getComputedStyle%28iframe%29%3F.zIndex%20%3F%3F%201969%20%3B%20div.addEventListener%28%27animationend%27%2C%20_%20%3D%3E%20div.remove%28%29%29%3B%20const%20style%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20style.media%20%3D%20%27screen%20and%20%28prefers-reduced-motion%3A%20no-preference%29%27%3B%20style.textContent%20%3D%20%60%20.xxxJanProbableExternalConsentManagerAttentionGrabber%20%7B%20position%3A%20absolute%3B%20background%3A%20rgba%28128%2C%20216%2C%20255%2C%200.15%29%3B%20pointer-events%3A%20none%3B%20animation%3A%201s%20%24%7BanimationName%7D%3B%20%7D%20%40keyframes%20%24%7BanimationName%7D%20%7B%20%24%7BkeyframesBody%7D%20%7D%20%60%3B%20iframe.ownerDocument.head.appendChild%28style%29%3B%20%7D%29%3B%20%7D%29%28%29%3B/* ./content/nocookie.js */" ADD_DATE="1640550301" LAST_MODIFIED="1739135529" SHORTCUTURL="nocookie">⛔🍪⛔</A>
<DD><P>Close the cookies/tracking/personalization permission dialog rejecting all
non-essential cookies and objecting to all legitimate uses.</P></DD>
<DT><A HREF="javascript:%28function%20read%28%29%20%7B%20%20const%20css%20%3D%20%60%20%40namespace%20svg%20%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3B%20%20%2A%20%7B%20line-height%3A%201.5%3B%20%7D%20html%20%7B%20background%3A%20rgb%28245%2C%20245%2C%20225%29%3B%20color%3A%20rgb%2830%2C%2030%2C%2030%29%3B%20%7D%20body%20%7B%20max-width%3A%2048em%3B%20margin%3A%200%20auto%3B%20padding%3A%201em%3B%20font-family%3A%20%22Calibri%22%2C%20sans-serif%3B%20font-size%3A%201.05rem%3B%20%7D%20p%20%7B%20line-height%3A%201.7%3B%20%7D%20%3Alink%20%7B%20color%3A%20%2300e%3B%20%7D%20%3Avisited%20%7B%20color%3A%20%23528%3B%20%7D%20%3Alink%3Afocus%2C%20%3Avisited%3Afocus%2C%20%3Alink%3Ahover%2C%20%3Avisited%3Ahover%20%7B%20color%3A%20%23e30%3B%20%7D%20%3Alink%3Aactive%2C%20%3Avisited%3Aactive%20%7B%20color%3A%20%23e00%3B%20%7D%20center%2C%20%5Balign%5D%20%7B%20text-align%3A%20left%3B%20%7D%20b%3Anot%28.jancss-probably-structure%29%2C%20u%2C%20blink%20%7B%20font-weight%3A%20inherit%3B%20font-style%3A%20inherit%3B%20text-decoration%3A%20inherit%20%7D%20b.jancss-probably-structure%20%7B%20font-size%3A%20larger%3B%20%7D%20.jancss-probably-layout%20%7B%20font%3A%20inherit%3B%20%7D%20%20h1%3Anot%28.jancss-probably-layout%29%2C%20h2%3Anot%28.jancss-probably-layout%29%2C%20h3%3Anot%28.jancss-probably-layout%29%20%7B%20font-family%3A%20%22Cambria%22%2C%20serif%3B%20%7D%20h1%2C%20h1.jancss-probably-layout%20%7B%20border-bottom%3A%201px%20solid%20%23888%3B%20font-size%3A%20200%25%3B%20font-weight%3A%20100%3B%20%7D%20h2%2C%20h2.jancss-probably-layout%20%2A%20%7B%20border-bottom%3A%201px%20solid%20%23bbb%3B%20font-size%3A%20150%25%3B%20font-weight%3A%20100%3B%20%7D%20h3%2C%20h3.jancss-probably-layout%20%7B%20border-bottom%3A%201px%20dotted%20%23bbb%3B%20font-size%3A%20117%25%3B%20font-weight%3A%20100%3B%20%7D%20h1.jancss-probably-layout%20%2A%2C%20h2.jancss-probably-layout%20%2A%2C%20h3.jancss-probably-layout%20%2A%20%7B%20font-size%3A%201rem%3B%20%7D%20%20h1%20a%5Bhref%5D%3Anot%28%3Ahover%29%2C%20h2%20a%5Bhref%5D%3Anot%28%3Ahover%29%2C%20h3%20a%5Bhref%5D%3Anot%28%3Ahover%29%20%7B%20text-decoration%3A%20none%3B%20%7D%20h1%20a%5Bhref%5D%3A%3Aafter%2C%20h2%20a%5Bhref%5D%3A%3Aafter%2C%20h3%20a%5Bhref%5D%3A%3Aafter%20%7B%20font-size%3A%2075%25%3B%20content%3A%20%22%20%23%22%3B%20%7D%20%20pre%20%7B%20padding%3A%201ex%3B%20border%3A%201px%20dotted%3B%20%7D%20code%2C%20pre%2C%20.syntaxhighlighter%2C%20.dp-highlighter%20%7B%20font-family%3A%20%22Consolas%22%2C%20monospace%3B%20font-size%3A%20small%3B%20background%3A%20%23ffe%3B%20%7D%20.dp-highlighter%20%2B%20pre%5Bname%3D%22code%22%5D%20%7B%20display%3A%20none%3B%20%7D%20%20textarea%20%7B%20width%3A%20100%25%3B%20height%3A%2032ex%3B%20%7D%20%20table.jancss-probably-for-data%20th%2C%20table.jancss-probably-for-data%20td%20%7B%20vertical-align%3A%20top%3B%20text-align%3A%20left%3B%20padding%3A%200.5ex%3B%20%7D%20table.jancss-probably-for-data%20caption%20%7B%20font-weight%3A%20bold%3B%20border-bottom%3A%201px%20dotted%3B%20%7D%20table.jancss-probably-for-layout%20td%20%7B%20display%3A%20inline-block%3B%20%7D%20table.jancss-probably-for-data%20tr%3Anth-child%28odd%29%20td%3Anot%28.jancss-active-col%29%20%7B%20background%3A%20%23ffe%3B%20%7D%20table.jancss-probably-for-data%20tr%3Ahover%20td%3Anot%28.code%29%2C%20table.jancss-probably-for-data%20.jancss-active-col%20%7B%20background%3A%20%23ffc%3B%20%7D%20table.jancss-probably-for-data%20th%2C%20table.jancss-probably-for-data%20tr%20td%3Anot%28.code%29%3Ahover%20%7B%20background%3A%20%23ff9%3B%20%7D%20table.jancss-probably-for-data%20th%20code%2C%20table.jancss-probably-for-data%20td%20code%20%7B%20background%3A%20inherit%3B%20%7D%20%20img%2C%20input%5Btype%3D%22image%22%5D%2C%20object%2C%20embed%2C%20video%2C%20audio%2C%20iframe%2C%20canvas%2C%20%3Anot%28svg%7C%2A%29%20%3E%20svg%7C%2A%20%7B%20max-width%3A%20100%25%3B%20%7D%20iframe%5Bsrc%5E%3D%22https%3A%2F%2Fplayer.vimeo.com%2F%22%5D%2C%20iframe%5Bsrc%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fembed%2F%22%5D%2C%20iframe%5Bsrc%5E%3D%22https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2F%22%5D%20%7B%20height%3A%2080vh%3B%20%7D%20figure%20%7B%20margin%3A%200%3B%20%7D%20iframe%20%7B%20width%3A%20100%25%3B%20%7D%20iframe%5Bclass%2A%3D%22twitter%22%5D%20%7B%20min-height%3A%2015em%3B%20%7D%20%20body%3Anot%28%3Ahover%29%20img%2C%20body%3Anot%28%3Ahover%29%20input%5Btype%3D%22image%22%5D%2C%20body%3Anot%28%3Ahover%29%20object%2C%20body%3Anot%28%3Ahover%29%20embed%2C%20body%3Anot%28%3Ahover%29%20video%2C%20body%3Anot%28%3Ahover%29%20audio%2C%20body%3Anot%28%3Ahover%29%20iframe%2C%20body%3Anot%28%3Ahover%29%20canvas%2C%20body%3Anot%28%3Ahover%29%20%3Anot%28svg%7C%2A%29%20%3E%20svg%7C%2A%20%7B%20opacity%3A%200.25%3B%20%7D%20%20svg%3Anot%28%3Aroot%29%2C%20img%5Bclass%2A%3D%22icon%22%5D%5Bsrc%2A%3D%22.svg%22%5D%2C%20img%5Bclass%2A%3D%22Icon%22%5D%5Bsrc%2A%3D%22.svg%22%5D%2C%20.svg-icon%2C%20.inline-icon%2C%20.wp-smiley%2C%20.smiley%2C%20.emoticon%2C%20%3Anot%28html%29.emoji%20%7B%20max-width%3A%201.4em%3B%20max-height%3A%201.4em%3B%20%7D%20%20%5Bstyle%2A%3D%22position%3A%20fixed%22%5D%2C%20%5Bstyle%2A%3D%22position%3Afixed%22%5D%20%7B%20position%3A%20static%20%21important%3B%20%7D%20%20aside%3Anot%28%3Ahover%29%2C%20%5Bdata-expander-id%5D%2C%20%5Bid%5E%3D%22footnote_plugin_tooltip_text_%22%5D%3Anot%28%3Ahover%29%2C%20blockquote%5Bclass%2A%3D%22quote%22%5D%3Anot%28%3Ahover%29%2C%20q%5Bclass%2A%3D%22pull%22%5D%3Anot%28%3Ahover%29%2C%20blockquote%5Bclass%2A%3D%22pull%22%5D%3Anot%28%3Ahover%29%2C%20.quote-box%3Anot%28%3Ahover%29%2C%20article%20%5Bclass%2A%3D%22quote%22%5D%3Anot%28%3Ahover%29%2C%20%5Bclass%2A%3D%22article%22%5D%20%5Bclass%2A%3D%22quote%22%5D%3Anot%28%3Ahover%29%2C%20.su-pullquote%3Anot%28%3Ahover%29%2C%20.pullquote%3Anot%28%3Ahover%29%2C%20.pullQuote%3Anot%28%3Ahover%29%2C%20.pull-quote%3Anot%28%3Ahover%29%20%7B%20opacity%3A%200.25%3B%20%7D%20%20.postprofile%2C%20.signature%20%7B%20font-size%3A%20smaller%3B%20border-top%3A%201px%20dotted%3B%20opacity%3A%200.5%3B%20%7D%20%20iframe%5Bsrc%2A%3D%22.facebook.com%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22.twitter.com%2Fwidgets%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fplusone.google.com%2F_%2F%2B1%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fwww.reddit.com%2Fstatic%2Fbutton%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fs7.addthis.com%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fwww.stumbleupon.com%2Fbadge%2Fembed%2F%22%5D%2C%20iframe%5Bsrc%2A%3D%22%2F%2Fwidgets.bufferapp.com%2F%22%5D%20%7B%20width%3A%2012em%3B%20height%3A%204ex%3B%20border%3A%201px%20dotted%3B%20%7D%20.twtr-widget.twtr-scroll%20%7B%20max-height%3A%2030ex%3B%20overflow%3A%20auto%3B%20%7D%20.article__share%2C%20.social-share%2C%20%23social_btns%2C%20.social-media%20%3E%20.share%2C%20.taboola%20%7B%20display%3A%20none%3B%20%7D%20%3A-moz-any%28%20div%2C%20ul%2C%20li%20%29%3A-moz-any%28%20%3A-moz-any%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%29%3A-moz-any%28%20%5Bid%2A%3D%22media%22%5D%2C%20%5Bid%2A%3D%22Media%22%5D%20%29%3A-moz-any%28%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%2C%20%3A-moz-any%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%3A-moz-any%28%20%5Bid%2A%3D%22toolbar%22%5D%2C%20%5Bid%2A%3D%22Toolbar%22%5D%2C%20%5Bid%2A%3D%22buttons%22%5D%2C%20%5Bid%2A%3D%22Buttons%22%5D%2C%20%29%2C%20%3A-moz-any%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%29%3A-moz-any%28%20%5Bclass%2A%3D%22media%22%5D%2C%20%5Bclass%2A%3D%22Media%22%5D%20%29%3A-moz-any%28%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%2C%20%3A-moz-any%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%3A-moz-any%28%20%5Bclass%2A%3D%22toolbar%22%5D%2C%20%5Bclass%2A%3D%22Toolbar%22%5D%2C%20%5Bclass%2A%3D%22buttons%22%5D%2C%20%5Bclass%2A%3D%22Buttons%22%5D%2C%20%29%20%29%20%7B%20display%3A%20none%3B%20%7D%20%3Amatches%28%20div%2C%20ul%2C%20li%20%29%3Amatches%28%20%3Amatches%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%29%3Amatches%28%20%5Bid%2A%3D%22media%22%5D%2C%20%5Bid%2A%3D%22Media%22%5D%20%29%3Amatches%28%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%2C%20%3Amatches%28%20%5Bid%2A%3D%22social%22%5D%2C%20%5Bid%2A%3D%22Social%22%5D%20%5Bid%2A%3D%22share%22%5D%2C%20%5Bid%2A%3D%22Share%22%5D%2C%20%5Bid%2A%3D%22sharing%22%5D%2C%20%5Bid%2A%3D%22Sharing%22%5D%20%29%3Amatches%28%20%5Bid%2A%3D%22toolbar%22%5D%2C%20%5Bid%2A%3D%22Toolbar%22%5D%2C%20%5Bid%2A%3D%22buttons%22%5D%2C%20%5Bid%2A%3D%22Buttons%22%5D%2C%20%29%2C%20%3Amatches%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%29%3Amatches%28%20%5Bclass%2A%3D%22media%22%5D%2C%20%5Bclass%2A%3D%22Media%22%5D%20%29%3Amatches%28%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%2C%20%3Amatches%28%20%5Bclass%2A%3D%22social%22%5D%2C%20%5Bclass%2A%3D%22Social%22%5D%20%5Bclass%2A%3D%22share%22%5D%2C%20%5Bclass%2A%3D%22Share%22%5D%2C%20%5Bclass%2A%3D%22sharing%22%5D%2C%20%5Bclass%2A%3D%22Sharing%22%5D%20%29%3Amatches%28%20%5Bclass%2A%3D%22toolbar%22%5D%2C%20%5Bclass%2A%3D%22Toolbar%22%5D%2C%20%5Bclass%2A%3D%22buttons%22%5D%2C%20%5Bclass%2A%3D%22Buttons%22%5D%2C%20%29%20%29%20%7B%20display%3A%20none%3B%20%7D%20%20iframe%5Bid%5E%3D%22google_ads_%22%5D%20%7B%20display%3A%20none%3B%20%7D%20%20li%3Aempty%2C%20li.jancss-emptyish%20%7B%20display%3A%20none%3B%20%7D%20%20%3A-moz-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20ul%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%3B%20%7D%20%3A-webkit-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20ul%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%3B%20%7D%20%3Aany%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20ul%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%3B%20%7D%20%3A-moz-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20li%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%20.5em%3B%20border-right%3A%201px%20dotted%3B%20%7D%20%3A-webkit-any%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20li%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%20.5em%3B%20border-right%3A%201px%20dotted%3B%20%7D%20%3Aany%28%20nav%2C%20body%20%5Bclass%2A%3D%22avigat%22%5D%2C%20body%20%5Bid%2A%3D%22avigat%22%5D%2C%20body%20%5Bclass%2A%3D%22-nav-%22%5D%2C%20body%20%5Bclass%2A%3D%22nav-%22%5D%2C%20body%20%5Bclass%24%3D%22-nav%22%5D%2C%20body%20%5Bid%2A%3D%22-nav-%22%5D%2C%20body%20%5Bid%2A%3D%22nav-%22%5D%2C%20body%20%5Bid%24%3D%22-nav%22%5D%2C%20body%20%5Brole%3D%22navigation%22%5D%20%29%20li%20%7B%20display%3A%20inline%3B%20margin%3A%200%3B%20padding%3A%200%20.5em%3B%20border-right%3A%201px%20dotted%3B%20%7D%20%20.cufon-canvas%20canvas%20%7B%20display%3A%20none%3B%20%7D%20%20.contentitem-sidenote%3Anot%28%3Ahover%29%20%3E%20%3Anot%28.contentitem-sidenote-snippet%29%2C%20.contentitem-infocard-toggle-container%20%2B%20.contentitem-infocard-contents%3Anot%28%3Ahover%29%20%7B%20opacity%3A%200.25%3B%20%7D%20.contentitem-sidenote%3Ahover%20%3E%20%3Anot%28.contentitem-sidenote-snippet%29%2C%20.contentitem-infocard-toggle-container%20%2B%20.contentitem-infocard-contents%3Ahover%20%7B%20background%3A%20%23ffc%3B%20%7D%20%20.google-src-text%20%7B%20display%3A%20none%3B%20%7D%20%20.scrollmagic-pin-spacer%20%7B%20display%3A%20none%3B%20%7D%20%20%23xxxJanConsole%20%7B%20display%3A%20none%3B%20%7D%20%60%3B%20%20var%20attrs%20%3D%20%5B%20%27inert%27%2C%20%27style%27%2C%20%27background%27%2C%20%27bgcolor%27%2C%20%27color%27%2C%20%27text%27%2C%20%27link%27%2C%20%27vlink%27%2C%20%27alink%27%2C%20%27hlink%27%2C%20%27table%40width%27%2C%20%27colgroup%40width%27%2C%20%27col%40width%27%2C%20%27tr%40width%27%2C%20%27td%40width%27%2C%20%27th%40width%27%2C%20%27table%40height%27%2C%20%27tr%40height%27%2C%20%27td%40height%27%2C%20%27th%40height%27%2C%20%27img%40width%27%2C%20%27img%40height%27%2C%20%27source%40width%27%2C%20%27source%40height%27%2C%20%27border%27%2C%20%27frameborder%27%2C%20%27align%27%2C%20%27face%27%2C%20%27font%40size%27%2C%20%27basefont%40size%27%20%5D%3B%20%20var%20elementsToRemoveSelectors%20%3D%20%5B%20%27.bt-popin%27%20%20%5D%3B%20%20var%20headerSelectors%20%3D%20%5B%20%27%5Bclass%2A%3D%22head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bclass%2A%3D%22Head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bid%2A%3D%22head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bid%2A%3D%22Head%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Brole%3D%22heading%22%5D%27%2C%20%27%5Bclass%2A%3D%22title%22%5D%3Anot%28%3Aempty%29%27%2C%20%27%5Bclass%2A%3D%22Title%22%5D%3Anot%28%3Aempty%29%27%2C%20%27h1%3Anot%28%3Aempty%29%2C%20h2%3Anot%28%3Aempty%29%2C%20h3%3Anot%28%3Aempty%29%27%2C%20%27h1%3Anot%28%3Aempty%29%5Bitemprop~%3D%22name%22%5D%2C%20h2%3Anot%28%3Aempty%29%5Bitemprop~%3D%22name%22%5D%2C%20h3%3Anot%28%3Aempty%29%5Bitemprop~%3D%22name%22%5D%27%2C%20%27h1%3Anot%28%3Aempty%29%5Bitemprop~%3D%22headline%22%5D%2C%20h2%3Anot%28%3Aempty%29%5Bitemprop~%3D%22headline%22%5D%2C%20h3%3Anot%28%3Aempty%29%5Bitemprop~%3D%22headline%22%5D%27%20%5D%3B%20var%20ancestorsForHeadersToIgnoreSelectors%20%3D%20%5B%20%27aside%27%2C%20%27.related-posts%27%2C%20%27.article-slider%27%2C%20%27.article-drawer%27%20%5D%3B%20%20var%20contentSelectors%20%3D%20%5B%20%20%27main%20h1%3Anot%28%3Aempty%29%27%2C%20%27main%20header%27%2C%20%27main%20h2%3Anot%28%3Aempty%29%27%2C%20%27main%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%20header%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Bitemprop%3D%22blogPost%22%5D%27%2C%20%27body%20%5Brole%3D%22main%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22main%22%5D%20header%27%2C%20%27body%20%5Brole%3D%22main%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22main%22%5D%27%2C%20%27body%20%5Brole%3D%22document%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22document%22%5D%20header%27%2C%20%27body%20%5Brole%3D%22document%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22document%22%5D%27%2C%20%27body%20%5Brole%3D%22article%22%5D%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22article%22%5D%20header%27%2C%20%27body%20%5Brole%3D%22article%22%5D%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%5Brole%3D%22article%22%5D%27%2C%20%27body%20%23main%20h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%23main%20header%27%2C%20%27body%20%23main%20h2%3Anot%28%3Aempty%29%27%2C%20%27body%20%23main%27%2C%20%20%27%3Anot%28li%29%20%3E%20article%3Aonly-of-type%27%2C%20%20%27body%20%23article%27%2C%20%27body%20%3Anot%28%23spotlight%29%20%3E%20.article%27%2C%20%27body%20.articleContent%27%2C%20%27body%20%23article_top%27%2C%20%27body%20%23article_body%27%2C%20%27body%20%23article_main%27%2C%20%27body%20.post-body%3Anot%28.field-item%29%27%2C%20%27%3Anot%28input%29%3Anot%28textarea%29.post%27%2C%20%27%3Anot%28input%29%3Anot%28textarea%29.blogpost%27%2C%20%27%3Anot%28input%29%3Anot%28textarea%29.blogPost%27%2C%20%27body%20%5Bid%5E%3D%22post0%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post1%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post2%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post3%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post4%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post5%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post6%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post7%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post8%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post9%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-0%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-1%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-2%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-3%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-4%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-5%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-6%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-7%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-8%22%5D%27%2C%20%27body%20%5Bid%5E%3D%22post-9%22%5D%27%2C%20%27body%20%23entry%27%2C%20%27body%20.entry%27%2C%20%27body%20%23content%27%2C%20%27body%20.content%27%2C%20%27body%20%5Bid%5E%3D%22content%22%5D%27%2C%20%27body%20%5Bclass%5E%3D%22content%22%5D%27%2C%20%27body%20%23main%27%2C%20%27body%20.main%27%2C%20%20%27h1%3Anot%28%3Aempty%29%27%2C%20%27body%20%23header%27%2C%20%27header%27%2C%20%27body%20.header%27%2C%20%27h2%3Anot%28%3Aempty%29%27%2C%20%20%27big%27%20%5D%3B%20%20var%20structureElementsForLayoutSelectors%20%3D%20%5B%20%27%2F%2F%2A%5Bcontains%28%22%20h1%20h2%20h3%20h4%20h5%20h6%20h7%20%22%2C%20concat%28%22%20%22%2C%20local-name%28%29%2C%20%22%20%22%29%29%20and%20string-length%28normalize-space%28%29%29%20%3E%20120%5D%27%20%5D%3B%20%20var%20layoutElementsForStructureSelectors%20%3D%20%5B%20%20%27b%3Afirst-child%20%2B%20%3Aempty%27%2C%20%27%3Aempty%20%2B%20b%20%2B%20%3Aempty%27%2C%20%27%3Aempty%20%2B%20b%3Alast-child%27%2C%20%27div%20%3E%20b%3Aonly-child%2C%20p%20%3E%20b%3Aonly-child%27%20%5D%3B%20%20var%20syntaxHighlightHrefRegex%20%3D%20%2F%5Cb%28%28syntax%7Cpygments%29%28hi%28ghlight%28er%29%3F%7Clite%28r%29%3F%29%29%3F%7Csh%28Core%7CTheme%5B%5E.%5D%2A%29%7Cgeshi%7Ccodecolorer%29%5B.%2F%5D%2Fi%3B%20%20var%20elementsWithToggledEventHandlers%20%3D%20%7B%7D%3B%20var%20eventHandlerAttributesToToggle%20%3D%20%5B%20%27oncontextmenu%27%2C%20%27onshow%27%2C%20%27oninput%27%2C%20%27onkeydown%27%2C%20%27onkeyup%27%2C%20%27onkeypress%27%2C%20%27onmousedown%27%2C%20%27onmouseup%27%2C%20%27onmouseenter%27%2C%20%27onmouseleave%27%2C%20%27onmouseover%27%2C%20%27onmouseout%27%2C%20%27onmousemove%27%2C%20%27onresize%27%2C%20%27onscroll%27%2C%20%27onwheel%27%2C%20%27onselect%27%2C%20%27onselectstart%27%2C%20%27onselectionchange%27%20%5D%3B%20%20var%20contentElements%20%3D%20%5B%5D%3B%20%20%28function%20execute%28document%29%20%7B%20function%20addClass%28element%2C%20classNames%29%20%7B%20%20classNames.split%28%2F%5Cs%2B%2F%29.forEach%28function%20%28className%29%20%7B%20element.className%20%3D%20%28%28%27%20%27%20%2B%20element.className%20%2B%20%27%20%27%29.replace%28%27%20%27%20%2B%20className.trim%28%29%20%2B%20%27%20%27%2C%20%27%27%29%20%2B%20%27%20%27%20%2B%20className%29.trim%28%29%3B%20%7D%29%3B%20%7D%20function%20removeClass%28element%2C%20classNames%29%20%7B%20classNames.split%28%2F%5Cs%2B%2F%29.forEach%28function%20%28className%29%20%7B%20element.className%20%3D%20%28%27%20%27%20%2B%20element.className%20%2B%20%27%20%27%29.replace%28%27%20%27%20%2B%20className.trim%28%29%20%2B%20%27%20%27%2C%20%27%27%29.trim%28%29%3B%20%7D%29%3B%20%7D%20function%20toArray%28arrayLike%29%20%7B%20return%20Array.prototype.slice.call%28arrayLike%29%3B%20%7D%20var%20all%20%3D%20toArray%28document.getElementsByTagName%28%27%2A%27%29%29%2C%20ourStyleSheet%20%3D%20document.getElementById%28%27jancss%27%29%2C%20allStyleSheets%20%3D%20toArray%28document.styleSheets%29%2C%20prettyPrintStyleSheet%2C%20matches%3B%20%20window.TextResizeDetector%20%26%26%20TextResizeDetector.stopDetector%20%26%26%20TextResizeDetector.stopDetector%28%29%3B%20%20var%20maxTimeoutId%20%3D%20setTimeout%28function%20%28%29%20%7B%20for%20%28var%20i%20%3D%201%3B%20i%20%3C%20maxTimeoutId%3B%20i%2B%2B%29%20%7B%20clearTimeout%28i%29%3B%20clearInterval%28i%29%3B%20%7D%20%7D%2C%204%29%3B%20%20%20var%20requestAnimationFrame%20%3D%20window.requestAnimationFrame%20%7C%7C%20window.mozRequestAnimationFrame%20%7C%7C%20window.webkitRequestAnimationFrame%20%7C%7C%20window.msRequestAnimationFrame%20%7C%7C%20function%20%28%29%20%7B%20%7D%3B%20var%20cancelAnimationFrame%20%3D%20window.cancelAnimationFrame%20%7C%7C%20window.mozCancelAnimationFrame%20%7C%7C%20window.webkitCancelAnimationFrame%20%7C%7C%20window.msCancelAnimationFrame%20%7C%7C%20function%20%28%29%20%7B%20%7D%3B%20var%20maxAnimationFrameRequestId%20%3D%20requestAnimationFrame%28function%20%28%29%20%7B%20for%20%28i%20%3D%201%3B%20i%20%3C%20maxAnimationFrameRequestId%20%2A%202%3B%20i%2B%2B%29%20%7B%20cancelAnimationFrame%28i%29%3B%20%7D%20%20window.requestAnimationFrame%20%3D%20function%20%28callback%29%20%7B%20var%20callbackSource%20%3D%20callback.toSource%20%26%26%20callback.toSource%28%29%3B%20if%20%28callbackSource%20%26%26%20callbackSource.indexOf%28%27Readable%2B%2B%20requestAnimationFrame%20interceptor%27%29%20%3D%3D%3D%20-1%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20intercepted%20call%20to%20requestAnimationFrame%20at%20%27%20%2B%20new%20Date%28%29%29%3B%20console.log%28%27Readable%2B%2B%3A%20callback%20for%20requestAnimationFrame%3A%20%27%20%2B%20callbackSource%29%3B%20%7D%20%7D%3B%20%7D%29%3B%20%20%5Bwindow%2C%20document%2C%20document.documentElement%2C%20document.body%5D.forEach%28function%20%28elem%29%20%7B%20%20if%20%28%21elem%29%20%7B%20return%3B%20%7D%20%20if%20%28elementsWithToggledEventHandlers%5Belem%5D%29%20%7B%20return%3B%20%7D%20elementsWithToggledEventHandlers%5Belem%5D%20%3D%20true%3B%20%20eventHandlerAttributesToToggle.forEach%28function%20%28attrib%29%20%7B%20if%20%28elem%5B%27jancss-%27%20%2B%20attrib%5D%29%20%7B%20elem%5Battrib%5D%20%3D%20elem%5B%27jancss-%27%20%2B%20attrib%5D%3B%20delete%20elem%5B%27jancss-%27%20%2B%20attrib%5D%3B%20%7D%20else%20if%20%28elem%5Battrib%5D%29%20%7B%20elem%5B%27jancss-%27%20%2B%20attrib%5D%20%3D%20elem%5Battrib%5D%3B%20elem%5Battrib%5D%20%3D%20function%20%28%29%20%7B%20%7D%3B%20%7D%20%7D%29%3B%20%20if%20%28typeof%20jQuery%20%3D%3D%3D%20%27function%27%29%20%7B%20%20if%20%28typeof%20jQuery.hasData%20%3D%3D%3D%20%27function%27%20%26%26%20jQuery.hasData%28elem%29%29%20%7B%20%20if%20%28typeof%20jQuery._data%20%21%3D%3D%20%27function%27%29%20%7B%20return%3B%20%7D%20var%20data%20%3D%20jQuery._data%28elem%29%3B%20if%20%28data.jancssEvents%29%20%7B%20data.events%20%3D%20data.jancssEvents%3B%20delete%20data.jancssEvents%3B%20jQuery._data%28elem%2C%20data%29%3B%20return%3B%20%7D%20else%20if%20%28data.events%29%20%7B%20data.jancssEvents%20%3D%20data.events%3B%20delete%20data.events%3B%20jQuery._data%28elem%2C%20data%29%3B%20return%3B%20%7D%20%7D%20%20if%20%28jQuery.fn.data%29%20%7B%20var%20%24elem%20%3D%20jQuery%28elem%29%3B%20var%20eventsData%20%3D%20%24elem.data%28%27events%27%29%3B%20var%20jancssEventsData%20%3D%20%24elem.data%28%27jancssEvents%27%29%3B%20if%20%28jancssEventsData%29%20%7B%20%24elem.data%28%27events%27%2C%20jancssEventsData%29%3B%20%24elem.removeData%28%27jancssEvents%27%29%3B%20%7D%20else%20if%20%28eventsData%29%20%7B%20%24elem.data%28%27jancssEvents%27%2C%20eventsData%29%3B%20%24elem.removeData%28%27events%27%29%3B%20%7D%20%7D%20%7D%20%7D%29%3B%20%20if%20%28typeof%20MutationObserver%20%3D%3D%3D%20%27function%27%20%26%26%20%21document.jancssHasMutationObserver%29%20%7B%20document.jancssHasMutationObserver%20%3D%20true%3B%20var%20observer%20%3D%20new%20MutationObserver%28function%20%28mutations%29%20%7B%20if%20%28ourStyleSheet.disabled%29%20%7B%20return%3B%20%7D%20mutations.forEach%28function%28mutation%29%20%7B%20if%20%28%21mutation.target.hasAttribute%28%27style%27%29%20%7C%7C%20mutation.target.id%20%3D%3D%3D%20%27xxxJanConsole%27%20%7C%7C%20mutation.target.xxxJanReadableAllowStyle%29%20%7B%20return%3B%20%7D%20console.log%28%27Readable%2B%2B%3A%20removing%20%22style%22%20attribute%20set%20while%20in%20Readable%2B%2B%20mode%20on%20element%20%27%2C%20mutation.target%29%3B%20mutation.target.removeAttribute%28mutation.attributeName%29%3B%20%7D%29%3B%20%7D%29%3B%20observer.observe%28document%2C%20%7B%20attributes%3A%20true%2C%20attributeFilter%3A%20%5B%27style%27%5D%2C%20subtree%3A%20true%20%7D%29%3B%20%7D%20%20toArray%28document.querySelectorAll%28%27img.b-lazy%5Bdata-src%2A%3D%22%7C%22%5D%27%29%29.forEach%28function%20%28img%29%20%7B%20var%20attribute%20%3D%20%27data-src%27%3B%20var%20sources%20%3D%20img.getAttribute%28attribute%29.split%28%27%7C%27%29%3B%20img.src%20%3D%20sources.pop%28%29%3B%20img.removeAttribute%28attribute%29%3B%20%7D%29%3B%20%20toArray%28document.querySelectorAll%28%27img%5Bdata-src%5D%20%2B%20noscript%27%29%29.forEach%28function%20%28noscript%29%20%7B%20var%20img%20%3D%20noscript.previousElementSibling%3B%20var%20placeholder%20%3D%20img.previousElementSibling%3B%20if%20%28placeholder%20%26%26%20placeholder.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27svg%27%29%20%7B%20placeholder.parentNode.removeChild%28placeholder%29%3B%20%7D%20img.outerHTML%20%3D%20noscript.textContent%3B%20noscript.parentNode.removeChild%28noscript%29%3B%20%7D%29%3B%20%20%5B%20%27data-original%27%2C%20%27data-lazyload%27%2C%20%27data-lazy-src%27%2C%20%27data-full-src%27%2C%20%27data-src%27%20%5D.forEach%28function%20%28attribute%29%20%7B%20toArray%28document.querySelectorAll%28%27img%5B%27%20%2B%20attribute%20%2B%20%27%5D%27%29%29.forEach%28function%20%28img%29%20%7B%20img.src%20%3D%20img.getAttribute%28attribute%29%3B%20img.removeAttribute%28attribute%29%3B%20%7D%29%3B%20%7D%29%3B%20%20%5B%5D.forEach.call%28document.querySelectorAll%28%27audio%2C%20video%27%29%2C%20function%20%28element%29%20%7B%20element.controls%20%3D%20true%3B%20%7D%29%3B%20%20toArray%28document.querySelectorAll%28%27li%20%3Aempty%3Anot%28img%29%3Anot%28input%29%27%29%29.forEach%28function%20%28elem%29%20%7B%20while%20%28elem.tagName%20%26%26%20elem.tagName.toLowerCase%28%29%20%21%3D%3D%20%27li%27%29%20%7B%20elem%20%3D%20elem.parentNode%3B%20%7D%20if%20%28elem.textContent.trim%28%29%20%3D%3D%3D%20%27%27%20%26%26%20%21elem.querySelector%28%27img%2C%20input%27%29%29%20%7B%20addClass%28elem%2C%20%27jancss-emptyish%27%29%3B%20%7D%20%7D%29%3B%20%20toArray%28document.querySelectorAll%28elementsToRemoveSelectors.join%28%27%2C%20%27%29%29%29.forEach%28function%20%28element%29%20%7B%20element.parentNode.removeChild%28element%29%3B%20%7D%29%3B%20%20if%20%28%21ourStyleSheet%29%20%7B%20%28ourStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.id%20%3D%20%27jancss%27%3B%20ourStyleSheet.innerHTML%20%3D%20css%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28ourStyleSheet%29%3B%20ourStyleSheet.disabled%20%3D%20true%3B%20%20function%20columnMouseHandler%28e%29%20%7B%20if%20%28%21%2F%5Et%5Bdh%5D%24%2Fi.test%28%27%27%20%2B%20e.target.tagName%29%29%20%7B%20return%3B%20%7D%20var%20targetCell%20%3D%20e.target%2C%20nthChild%20%3D%20targetCell.cellIndex%20%2B%201%2C%20table%20%3D%20targetCell.parentNode%3B%20while%20%28table%20%26%26%20table.tagName.toLowerCase%28%29%20%21%3D%3D%20%27table%27%29%20%7B%20table%20%3D%20table.parentNode%3B%20%7D%20var%20activeColumnClassName%20%3D%20%27jancss-active-col%27%3B%20toArray%28table.querySelectorAll%28%27td%3Anth-child%28%27%20%2B%20nthChild%20%2B%20%27%29%27%29%29.forEach%28function%20%28cell%29%20%7B%20if%20%28e.type%20%3D%3D%3D%20%27mouseenter%27%29%20%7B%20addClass%28cell%2C%20activeColumnClassName%29%3B%20%7D%20else%20%7B%20removeClass%28cell%2C%20activeColumnClassName%29%3B%20%7D%20%7D%29%3B%20%7D%20%20toArray%28document.querySelectorAll%28%27table%27%29%29.forEach%28function%20%28table%29%20%7B%20var%20isTableForData%20%3D%20true%3B%20%20if%20%28table.querySelector%28%27table%27%29%29%20%7B%20var%20isWikipediaInfobox%20%3D%20%28%27%20%27%20%2B%20table.className%20%2B%20%27%20%27%29.match%28%2Finfobox%2F%29%3B%20if%20%28%21isWikipediaInfobox%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20contains%20other%20TABLEs%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%7D%20%20else%20if%20%28document.compatMode%20%3D%3D%3D%20%27BackCompat%27%20%26%26%20document.documentElement.scrollHeight%20%3E%20window.innerHeight%20%26%26%20table.scrollHeight%20%3E%203%2F4%20%2A%20document.documentElement.scrollHeight%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20seems%20pretty%20high%20in%20this%20document%20in%20quirks%20mode%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%20else%20if%20%28table.rows.length%20%3E%203%29%20%7B%20var%20numCellsPerRow%20%3D%20%5B%5D%3B%20toArray%28table.rows%29.forEach%28function%20%28row%29%20%7B%20if%20%28numCellsPerRow.indexOf%28row.cells.length%29%20%3D%3D%3D%20-1%29%20%7B%20numCellsPerRow.push%28row.cells.length%29%3B%20%7D%20%7D%29%3B%20%20if%20%28document.compatMode%20%3D%3D%3D%20%27BackCompat%27%20%26%26%20numCellsPerRow.length%20%3E%3D%203%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20has%20a%20lot%20of%20differing%20cell%20counts%20in%20this%20document%20in%20quirks%20mode%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%20else%20if%20%28numCellsPerRow.length%20%3D%3D%3D%201%20%26%26%20numCellsPerRow%5B0%5D%20%3D%3D%3D%201%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20TABLE%20has%20only%20rows%20of%20one%20cell%20each%2C%20so%20probably%20for%20layout%3A%20%27%2C%20table%29%3B%20isTableForData%20%3D%20false%3B%20%7D%20%7D%20if%20%28isTableForData%29%20%7B%20addClass%28table%2C%20%27jancss-probably-for-data%27%29%3B%20table.addEventListener%28%27mouseenter%27%2C%20columnMouseHandler%2C%20true%29%3B%20table.addEventListener%28%27mouseleave%27%2C%20columnMouseHandler%2C%20true%29%3B%20%7D%20else%20%7B%20addClass%28table%2C%20%27jancss-probably-for-layout%27%29%3B%20%7D%20%7D%29%3B%20%20if%20%28document.querySelector%28%27.prettyprint%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fprettify.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20else%20if%20%28document.querySelector%28%27.syntaxhighlighter%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fsyntaxhighlighter.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20else%20if%20%28document.querySelector%28%27.highlight%20.c%2C%20.highlight%20.k%2C%20.highlight%20.m%2C%20.highlight%20.s%2C%20.highlight%20.w%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fpygments.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20else%20if%20%28document.querySelector%28%27code%5Bclass%2A%3D%22language-%22%5D%20.token.punctuation%27%29%29%20%7B%20prettyPrintStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20prettyPrintStyleSheet.textContent%20%3D%20%27%40import%20url%28https%3A%2F%2Fjanmoesen.github.io%2Fbookmarklets%2Fcss%2Fprism.css%29%27%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28prettyPrintStyleSheet%29%3B%20%7D%20%20structureElementsForLayoutSelectors.forEach%28function%20%28selector%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28selector%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20xPathResult.snapshotLength%3B%20i%2B%2B%29%20%7B%20var%20elem%20%3D%20xPathResult.snapshotItem%28i%29%3B%20addClass%28elem%2C%20%27jancss-probably-layout%27%29%3B%20%7D%20%7D%29%3B%20%20layoutElementsForStructureSelectors.forEach%28function%20%28selector%29%20%7B%20toArray%28document.querySelectorAll%28selector%29%29.forEach%28function%20%28elem%29%20%7B%20if%20%28elem.tagName.toLowerCase%28%29%20%21%3D%3D%20%27b%27%29%20%7B%20elem%20%3D%20elem.previousElementSibling%3B%20%7D%20addClass%28elem%2C%20%27jancss-probably-structure%27%29%3B%20%7D%29%3B%20%7D%29%3B%20%7D%20%20function%20toggleStyles%28%29%20%7B%20ourStyleSheet.disabled%20%3D%20%21ourStyleSheet.disabled%3B%20if%20%28prettyPrintStyleSheet%29%20%7B%20prettyPrintStyleSheet.disabled%20%3D%20ourStyleSheet.disabled%3B%20%7D%20allStyleSheets.forEach%28function%20%28styleSheet%2C%20i%29%20%7B%20if%20%28styleSheet.ownerNode%20%21%3D%3D%20ourStyleSheet%20%26%26%20%21syntaxHighlightHrefRegex.test%28styleSheet.href%29%29%20%7B%20%20if%20%28ourStyleSheet%5B%27jancss-originally-disabled-%27%20%2B%20i%5D%20%3D%3D%3D%20undefined%29%20%7B%20ourStyleSheet%5B%27jancss-originally-disabled-%27%20%2B%20i%5D%20%3D%20styleSheet.disabled%3B%20%7D%20if%20%28ourStyleSheet.disabled%29%20%7B%20%20styleSheet.disabled%20%3D%20ourStyleSheet%5B%27jancss-originally-disabled-%27%20%2B%20i%5D%3B%20%7D%20else%20%7B%20%20styleSheet.disabled%20%3D%20true%3B%20try%20%7B%20%20if%20%28styleSheet.cssRules%5B0%5D%20%26%26%20styleSheet.cssRules%5B0%5D.type%20%3D%3D%3D%20styleSheet.cssRules%5B0%5D.IMPORT_RULE%20%26%26%20styleSheet.cssRules%5B0%5D.href%29%20%7B%20styleSheet.disabled%20%3D%20%21styleSheet.cssRules%5B0%5D.href.match%28%2F%5Ehttps%3A%5C%2F%5C%2Fjanmoesen%5C.github%5C.io%5C%2F%2F%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%7D%20%7D%29%3B%20%20all.forEach%28function%20%28elem%2C%20i%29%20%7B%20attrs.forEach%28function%20%28attr%2C%20j%29%20%7B%20%20if%20%28%21%28matches%20%3D%20attr.match%28%2F%28%5B%5E%40%5D%2B%29%40%28%5B%5E%40%5D%2B%29%2F%29%29%20%7C%7C%20%28elem.tagName%20%26%26%20elem.tagName.toLowerCase%28%29%20%3D%3D%20matches%5B1%5D%29%29%20%7B%20attr%20%3D%20matches%20%3F%20matches%5B2%5D%20%3A%20attr%3B%20var%20names%20%3D%20%7B%20enabled%3A%20attr%2C%20disabled%3A%20%27jancss-%27%20%2B%20attr%20%7D%3B%20if%20%28elem.hasAttribute%28names.enabled%29%29%20%7B%20elem.setAttribute%28names.disabled%2C%20elem.getAttribute%28names.enabled%29%29%3B%20elem.removeAttribute%28names.enabled%29%3B%20%7D%20else%20if%20%28elem.hasAttribute%28names.disabled%29%29%20%7B%20elem.setAttribute%28names.enabled%2C%20elem.getAttribute%28names.disabled%29%29%3B%20elem.removeAttribute%28names.disabled%29%3B%20%7D%20%7D%20%7D%29%3B%20%7D%29%3B%20%20var%20disabledStyleAttr%20%3D%20%27jancss-style%27%3B%20toArray%28document.querySelectorAll%28%27.wp_syntax%20%5B%27%20%2B%20disabledStyleAttr%20%2B%20%27%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20elem.setAttribute%28%27style%27%2C%20elem.getAttribute%28disabledStyleAttr%29%29%3B%20elem.removeAttribute%28disabledStyleAttr%29%3B%20%7D%29%3B%20%7D%20%20function%20findContentElement%28%29%20%7B%20%20if%20%28location.hash%29%20%7B%20var%20inPageAnchor%2C%20inPageAnchorSelectors%20%3D%20%5B%20%27a%5Bname%3D%22%27%20%2B%20location.hash.substring%281%29%20%2B%20%27%22%5D%27%2C%20location.hash.replace%28%2F%5C.%2Fg%2C%20%27%5C%5C.%27%29%20%5D%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20inPageAnchorSelectors.length%3B%20i%2B%2B%29%20%7B%20try%20%7B%20if%20%28%28inPageAnchor%20%3D%20document.querySelector%28inPageAnchorSelectors%5Bi%5D%29%29%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20found%20in-page%20anchor%20based%20on%20location.hash%3A%20%27%2C%20inPageAnchor%29%3B%20return%20inPageAnchor%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%7D%20%20var%20headerInPageTitle%3B%20var%20charactersToIgnore%20%3D%20%2F%5B%5EA-Za-z%5CxAA%5CxB5%5CxBA%5CxC0-%5CxD6%5CxD8-%5CxF6%5CxF8-%5Cu02C1%5Cu02C6-%5Cu02D1%5Cu02E0-%5Cu02E4%5Cu02EC%5Cu02EE%5Cu0370-%5Cu0374%5Cu0376%5Cu0377%5Cu037A-%5Cu037D%5Cu037F%5Cu0386%5Cu0388-%5Cu038A%5Cu038C%5Cu038E-%5Cu03A1%5Cu03A3-%5Cu03F5%5Cu03F7-%5Cu0481%5Cu048A-%5Cu052F%5Cu0531-%5Cu0556%5Cu0559%5Cu0561-%5Cu0587%5Cu05D0-%5Cu05EA%5Cu05F0-%5Cu05F2%5Cu0620-%5Cu064A%5Cu066E%5Cu066F%5Cu0671-%5Cu06D3%5Cu06D5%5Cu06E5%5Cu06E6%5Cu06EE%5Cu06EF%5Cu06FA-%5Cu06FC%5Cu06FF%5Cu0710%5Cu0712-%5Cu072F%5Cu074D-%5Cu07A5%5Cu07B1%5Cu07CA-%5Cu07EA%5Cu07F4%5Cu07F5%5Cu07FA%5Cu0800-%5Cu0815%5Cu081A%5Cu0824%5Cu0828%5Cu0840-%5Cu0858%5Cu08A0-%5Cu08B4%5Cu0904-%5Cu0939%5Cu093D%5Cu0950%5Cu0958-%5Cu0961%5Cu0971-%5Cu0980%5Cu0985-%5Cu098C%5Cu098F%5Cu0990%5Cu0993-%5Cu09A8%5Cu09AA-%5Cu09B0%5Cu09B2%5Cu09B6-%5Cu09B9%5Cu09BD%5Cu09CE%5Cu09DC%5Cu09DD%5Cu09DF-%5Cu09E1%5Cu09F0%5Cu09F1%5Cu0A05-%5Cu0A0A%5Cu0A0F%5Cu0A10%5Cu0A13-%5Cu0A28%5Cu0A2A-%5Cu0A30%5Cu0A32%5Cu0A33%5Cu0A35%5Cu0A36%5Cu0A38%5Cu0A39%5Cu0A59-%5Cu0A5C%5Cu0A5E%5Cu0A72-%5Cu0A74%5Cu0A85-%5Cu0A8D%5Cu0A8F-%5Cu0A91%5Cu0A93-%5Cu0AA8%5Cu0AAA-%5Cu0AB0%5Cu0AB2%5Cu0AB3%5Cu0AB5-%5Cu0AB9%5Cu0ABD%5Cu0AD0%5Cu0AE0%5Cu0AE1%5Cu0AF9%5Cu0B05-%5Cu0B0C%5Cu0B0F%5Cu0B10%5Cu0B13-%5Cu0B28%5Cu0B2A-%5Cu0B30%5Cu0B32%5Cu0B33%5Cu0B35-%5Cu0B39%5Cu0B3D%5Cu0B5C%5Cu0B5D%5Cu0B5F-%5Cu0B61%5Cu0B71%5Cu0B83%5Cu0B85-%5Cu0B8A%5Cu0B8E-%5Cu0B90%5Cu0B92-%5Cu0B95%5Cu0B99%5Cu0B9A%5Cu0B9C%5Cu0B9E%5Cu0B9F%5Cu0BA3%5Cu0BA4%5Cu0BA8-%5Cu0BAA%5Cu0BAE-%5Cu0BB9%5Cu0BD0%5Cu0C05-%5Cu0C0C%5Cu0C0E-%5Cu0C10%5Cu0C12-%5Cu0C28%5Cu0C2A-%5Cu0C39%5Cu0C3D%5Cu0C58-%5Cu0C5A%5Cu0C60%5Cu0C61%5Cu0C85-%5Cu0C8C%5Cu0C8E-%5Cu0C90%5Cu0C92-%5Cu0CA8%5Cu0CAA-%5Cu0CB3%5Cu0CB5-%5Cu0CB9%5Cu0CBD%5Cu0CDE%5Cu0CE0%5Cu0CE1%5Cu0CF1%5Cu0CF2%5Cu0D05-%5Cu0D0C%5Cu0D0E-%5Cu0D10%5Cu0D12-%5Cu0D3A%5Cu0D3D%5Cu0D4E%5Cu0D5F-%5Cu0D61%5Cu0D7A-%5Cu0D7F%5Cu0D85-%5Cu0D96%5Cu0D9A-%5Cu0DB1%5Cu0DB3-%5Cu0DBB%5Cu0DBD%5Cu0DC0-%5Cu0DC6%5Cu0E01-%5Cu0E30%5Cu0E32%5Cu0E33%5Cu0E40-%5Cu0E46%5Cu0E81%5Cu0E82%5Cu0E84%5Cu0E87%5Cu0E88%5Cu0E8A%5Cu0E8D%5Cu0E94-%5Cu0E97%5Cu0E99-%5Cu0E9F%5Cu0EA1-%5Cu0EA3%5Cu0EA5%5Cu0EA7%5Cu0EAA%5Cu0EAB%5Cu0EAD-%5Cu0EB0%5Cu0EB2%5Cu0EB3%5Cu0EBD%5Cu0EC0-%5Cu0EC4%5Cu0EC6%5Cu0EDC-%5Cu0EDF%5Cu0F00%5Cu0F40-%5Cu0F47%5Cu0F49-%5Cu0F6C%5Cu0F88-%5Cu0F8C%5Cu1000-%5Cu102A%5Cu103F%5Cu1050-%5Cu1055%5Cu105A-%5Cu105D%5Cu1061%5Cu1065%5Cu1066%5Cu106E-%5Cu1070%5Cu1075-%5Cu1081%5Cu108E%5Cu10A0-%5Cu10C5%5Cu10C7%5Cu10CD%5Cu10D0-%5Cu10FA%5Cu10FC-%5Cu1248%5Cu124A-%5Cu124D%5Cu1250-%5Cu1256%5Cu1258%5Cu125A-%5Cu125D%5Cu1260-%5Cu1288%5Cu128A-%5Cu128D%5Cu1290-%5Cu12B0%5Cu12B2-%5Cu12B5%5Cu12B8-%5Cu12BE%5Cu12C0%5Cu12C2-%5Cu12C5%5Cu12C8-%5Cu12D6%5Cu12D8-%5Cu1310%5Cu1312-%5Cu1315%5Cu1318-%5Cu135A%5Cu1380-%5Cu138F%5Cu13A0-%5Cu13F5%5Cu13F8-%5Cu13FD%5Cu1401-%5Cu166C%5Cu166F-%5Cu167F%5Cu1681-%5Cu169A%5Cu16A0-%5Cu16EA%5Cu16F1-%5Cu16F8%5Cu1700-%5Cu170C%5Cu170E-%5Cu1711%5Cu1720-%5Cu1731%5Cu1740-%5Cu1751%5Cu1760-%5Cu176C%5Cu176E-%5Cu1770%5Cu1780-%5Cu17B3%5Cu17D7%5Cu17DC%5Cu1820-%5Cu1877%5Cu1880-%5Cu18A8%5Cu18AA%5Cu18B0-%5Cu18F5%5Cu1900-%5Cu191E%5Cu1950-%5Cu196D%5Cu1970-%5Cu1974%5Cu1980-%5Cu19AB%5Cu19B0-%5Cu19C9%5Cu1A00-%5Cu1A16%5Cu1A20-%5Cu1A54%5Cu1AA7%5Cu1B05-%5Cu1B33%5Cu1B45-%5Cu1B4B%5Cu1B83-%5Cu1BA0%5Cu1BAE%5Cu1BAF%5Cu1BBA-%5Cu1BE5%5Cu1C00-%5Cu1C23%5Cu1C4D-%5Cu1C4F%5Cu1C5A-%5Cu1C7D%5Cu1CE9-%5Cu1CEC%5Cu1CEE-%5Cu1CF1%5Cu1CF5%5Cu1CF6%5Cu1D00-%5Cu1DBF%5Cu1E00-%5Cu1F15%5Cu1F18-%5Cu1F1D%5Cu1F20-%5Cu1F45%5Cu1F48-%5Cu1F4D%5Cu1F50-%5Cu1F57%5Cu1F59%5Cu1F5B%5Cu1F5D%5Cu1F5F-%5Cu1F7D%5Cu1F80-%5Cu1FB4%5Cu1FB6-%5Cu1FBC%5Cu1FBE%5Cu1FC2-%5Cu1FC4%5Cu1FC6-%5Cu1FCC%5Cu1FD0-%5Cu1FD3%5Cu1FD6-%5Cu1FDB%5Cu1FE0-%5Cu1FEC%5Cu1FF2-%5Cu1FF4%5Cu1FF6-%5Cu1FFC%5Cu2071%5Cu207F%5Cu2090-%5Cu209C%5Cu2102%5Cu2107%5Cu210A-%5Cu2113%5Cu2115%5Cu2119-%5Cu211D%5Cu2124%5Cu2126%5Cu2128%5Cu212A-%5Cu212D%5Cu212F-%5Cu2139%5Cu213C-%5Cu213F%5Cu2145-%5Cu2149%5Cu214E%5Cu2183%5Cu2184%5Cu2C00-%5Cu2C2E%5Cu2C30-%5Cu2C5E%5Cu2C60-%5Cu2CE4%5Cu2CEB-%5Cu2CEE%5Cu2CF2%5Cu2CF3%5Cu2D00-%5Cu2D25%5Cu2D27%5Cu2D2D%5Cu2D30-%5Cu2D67%5Cu2D6F%5Cu2D80-%5Cu2D96%5Cu2DA0-%5Cu2DA6%5Cu2DA8-%5Cu2DAE%5Cu2DB0-%5Cu2DB6%5Cu2DB8-%5Cu2DBE%5Cu2DC0-%5Cu2DC6%5Cu2DC8-%5Cu2DCE%5Cu2DD0-%5Cu2DD6%5Cu2DD8-%5Cu2DDE%5Cu2E2F%5Cu3005%5Cu3006%5Cu3031-%5Cu3035%5Cu303B%5Cu303C%5Cu3041-%5Cu3096%5Cu309D-%5Cu309F%5Cu30A1-%5Cu30FA%5Cu30FC-%5Cu30FF%5Cu3105-%5Cu312D%5Cu3131-%5Cu318E%5Cu31A0-%5Cu31BA%5Cu31F0-%5Cu31FF%5Cu3400-%5Cu4DB5%5Cu4E00-%5Cu9FD5%5CuA000-%5CuA48C%5CuA4D0-%5CuA4FD%5CuA500-%5CuA60C%5CuA610-%5CuA61F%5CuA62A%5CuA62B%5CuA640-%5CuA66E%5CuA67F-%5CuA69D%5CuA6A0-%5CuA6E5%5CuA717-%5CuA71F%5CuA722-%5CuA788%5CuA78B-%5CuA7AD%5CuA7B0-%5CuA7B7%5CuA7F7-%5CuA801%5CuA803-%5CuA805%5CuA807-%5CuA80A%5CuA80C-%5CuA822%5CuA840-%5CuA873%5CuA882-%5CuA8B3%5CuA8F2-%5CuA8F7%5CuA8FB%5CuA8FD%5CuA90A-%5CuA925%5CuA930-%5CuA946%5CuA960-%5CuA97C%5CuA984-%5CuA9B2%5CuA9CF%5CuA9E0-%5CuA9E4%5CuA9E6-%5CuA9EF%5CuA9FA-%5CuA9FE%5CuAA00-%5CuAA28%5CuAA40-%5CuAA42%5CuAA44-%5CuAA4B%5CuAA60-%5CuAA76%5CuAA7A%5CuAA7E-%5CuAAAF%5CuAAB1%5CuAAB5%5CuAAB6%5CuAAB9-%5CuAABD%5CuAAC0%5CuAAC2%5CuAADB-%5CuAADD%5CuAAE0-%5CuAAEA%5CuAAF2-%5CuAAF4%5CuAB01-%5CuAB06%5CuAB09-%5CuAB0E%5CuAB11-%5CuAB16%5CuAB20-%5CuAB26%5CuAB28-%5CuAB2E%5CuAB30-%5CuAB5A%5CuAB5C-%5CuAB65%5CuAB70-%5CuABE2%5CuAC00-%5CuD7A3%5CuD7B0-%5CuD7C6%5CuD7CB-%5CuD7FB%5CuF900-%5CuFA6D%5CuFA70-%5CuFAD9%5CuFB00-%5CuFB06%5CuFB13-%5CuFB17%5CuFB1D%5CuFB1F-%5CuFB28%5CuFB2A-%5CuFB36%5CuFB38-%5CuFB3C%5CuFB3E%5CuFB40%5CuFB41%5CuFB43%5CuFB44%5CuFB46-%5CuFBB1%5CuFBD3-%5CuFD3D%5CuFD50-%5CuFD8F%5CuFD92-%5CuFDC7%5CuFDF0-%5CuFDFB%5CuFE70-%5CuFE74%5CuFE76-%5CuFEFC%5CuFF21-%5CuFF3A%5CuFF41-%5CuFF5A%5CuFF66-%5CuFFBE%5CuFFC2-%5CuFFC7%5CuFFCA-%5CuFFCF%5CuFFD2-%5CuFFD7%5CuFFDA-%5CuFFDC%5D%2B%2Fg%3B%20function%20normalizeText%28str%29%20%7B%20return%20str%20.replace%28%2F%5CxAD%2Fg%2C%20%27%27%29%20.replace%28charactersToIgnore%2C%20%27%20%27%29%20.trim%28%29%20.toLowerCase%28%29%3B%20%7D%20var%20metaTitleElement%20%3D%20document.querySelector%28%27meta%5Bproperty%3D%22og%3Atitle%22%5D%2C%20meta%5Bproperty%3D%22twitter%3Atitle%22%5D%2C%20meta%5Bname%3D%22title%22%5D%27%29%3B%20var%20normalizedMetaTitle%20%3D%20metaTitleElement%20%26%26%20normalizeText%28metaTitleElement.content%29%3B%20var%20normalizedPageTitle%20%3D%20normalizeText%28document.title%29%3B%20headerSelectors.forEach%28function%20%28selector%29%20%7B%20toArray%28document.querySelectorAll%28selector%29%29.forEach%28function%20%28element%29%20%7B%20var%20normalizedText%20%3D%20normalizeText%28element.textContent%29%3B%20%20if%20%28%21normalizedText.length%29%20%7B%20return%3B%20%7D%20%20var%20boundingRect%20%3D%20element.getBoundingClientRect%28%29%3B%20if%20%28%21boundingRect.width%20%7C%7C%20%21boundingRect.height%29%20%7B%20return%3B%20%7D%20%20if%20%28boundingRect.top%20%2B%20window.scrollY%20%3E%20window.innerHeight%20%2A%201.5%29%20%7B%20return%3B%20%7D%20%20if%20%28%20normalizedPageTitle.length%20%3C%20normalizedText.length%20%26%26%20%28%21metaTitleElement%20%7C%7C%20normalizedMetaTitle.length%20%3C%20normalizedText.length%29%20%29%20%7B%20return%3B%20%7D%20%20var%20substringIndex%20%3D%20normalizedPageTitle.indexOf%28normalizedText%29%3B%20if%20%28substringIndex%20%3D%3D%3D%20-1%20%26%26%20metaTitleElement%29%20%7B%20substringIndex%20%3D%20normalizedMetaTitle.indexOf%28normalizedText%29%3B%20%7D%20if%20%28substringIndex%20%3D%3D%3D%20-1%29%20%7B%20return%3B%20%7D%20%20if%20%28typeof%20element.closest%20%3D%3D%3D%20%27function%27%20%26%26%20element.closest%28ancestorsForHeadersToIgnoreSelectors.join%28%27%2C%20%27%29%29%29%20%7B%20return%3B%20%7D%20headerInPageTitle%20%3D%20element%3B%20%7D%29%3B%20%7D%29%3B%20if%20%28headerInPageTitle%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20found%20suitable%20header%20element%20whose%20text%20appears%20in%20the%20page%20title%3A%20%27%2C%20headerInPageTitle%29%3B%20return%20headerInPageTitle%3B%20%7D%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20contentSelectors.length%3B%20i%2B%2B%29%20%7B%20try%20%7B%20var%20element%20%3D%20document.querySelector%28contentSelectors%5Bi%5D%29%3B%20%20if%20%28element%20%26%26%20%28element.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27a%27%20%7C%7C%20element.offsetWidth%20%7C%7C%20element.offsetHeight%29%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20found%20matching%20selector%20for%20content%20element%3A%20%27%20%2B%20contentSelectors%5Bi%5D%20%2B%20%27%5CnElement%3A%20%27%2C%20element%29%3B%20return%20element%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27Readable%2B%2B%3A%20bad%20selector%20for%20content%20element%3A%20%27%20%2B%20contentSelectors%5Bi%5D%20%2B%20%27%5CnException%3A%20%27%20%2B%20e%29%3B%20%7D%20%7D%20%7D%20%20var%20contentElement%2C%20shouldScrollContentIntoView%20%3D%20false%3B%20var%20selection%20%3D%20document.getSelection%20%26%26%20document.getSelection%28%29%3B%20if%20%28selection%20%26%26%20selection.anchorNode%20%26%26%20%28selection%20%2B%20%27%27%29.length%29%20%7B%20%20shouldScrollContentIntoView%20%3D%20true%3B%20contentElement%20%3D%20selection.anchorNode%3B%20while%20%28contentElement.nodeType%20%21%3D%3D%20contentElement.ELEMENT_NODE%20%26%26%20contentElement.parentNode%29%20%7B%20contentElement%20%3D%20contentElement.parentNode%3B%20%7D%20console.log%28%27Readable%2B%2B%3A%20found%20selected%20element%20to%20scroll%20into%20view%3A%20%27%2C%20contentElement%29%3B%20%7D%20else%20if%20%28ourStyleSheet.disabled%20%26%26%20%28contentElement%20%3D%20findContentElement%28%29%29%29%20%7B%20%20var%20tmpElement%20%3D%20contentElement%2C%20contentTop%20%3D%200%3B%20do%20%7B%20contentTop%20%2B%3D%20tmpElement.offsetTop%3B%20%7D%20while%20%28%28tmpElement%20%3D%20tmpElement.offsetParent%29%29%3B%20shouldScrollContentIntoView%20%3D%20%21window.scrollY%20%7C%7C%20Math.abs%28window.scrollY%20-%20contentTop%29%20%3C%2020%3B%20%7D%20%20toggleStyles%28%29%3B%20%20shouldScrollContentIntoView%20%26%26%20contentElements.push%28contentElement%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B%20%20var%20contentElement%3B%20while%20%28%28contentElement%20%3D%20contentElements.pop%28%29%29%29%20%7B%20contentElement.scrollIntoView%28%7B%20behavior%3A%20%27smooth%27%2C%20block%3A%20%27start%27%2C%20inline%3A%20%27start%27%20%7D%29%3B%20%7D%3B%20%7D%29%28%29%3B/* ./content/read.js */" ADD_DATE="1304084286" LAST_MODIFIED="1733241273" SHORTCUTURL="read">Readable++</A>
<DD><P>Make a page more readable by disabling all page styling and applying a
bare minimum of our own. Go to the first thing that looks like the start
of the actual content so no time is wasted scrolling past initial
navigation etc.</P></DD>
<DT><A HREF="javascript:%28function%20rmi%28%29%20%7B%20%20let%20processed%20%3D%20new%20Set%28%29%3B%20%20function%20isEmpty%28node%29%20%7B%20return%20%21node%20%7C%7C%20%28%21node.childElementCount%20%26%26%20%28typeof%20node.textContent%20%21%3D%3D%20%27string%27%20%7C%7C%20node.textContent.trim%28%29%20%3D%3D%3D%20%27%27%29%29%3B%20%7D%20%20%28function%20execute%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.querySelectorAll%20%21%3D%3D%20%27function%27%20%7C%7C%20processed.has%28document%29%29%20%7B%20return%3B%20%7D%20processed.add%28document%29%3B%20%20Array.from%28document.querySelectorAll%28%27iframe%3Anot%28%23xxxJanConsole%29%27%29%29.forEach%28iframe%20%3D%3E%20%7B%20let%20shouldDelete%20%3D%20false%3B%20try%20%7B%20shouldDelete%20%3D%20iframe.contentDocument%20%3D%3D%3D%20null%20%7C%7C%20iframe.src%20%3D%3D%3D%20%27%27%3B%20%7D%20catch%20%28e%29%20%7B%20shouldDelete%20%3D%20true%3B%20%7D%20if%20%28shouldDelete%29%20%7B%20console.log%28%27rm%20IFRAMEs%3A%20found%20suspicious%20IFRAME%20to%20delete%3A%20%27%2C%20iframe%29%3B%20let%20parentNode%20%3D%20iframe.parentNode%3B%20iframe.remove%28%29%3B%20while%20%28parentNode%20%26%26%20isEmpty%28parentNode%29%29%20%7B%20console.log%28%27rm%20IFRAMEs%3A%20found%20empty%20parent%20node%20to%20delete%3A%20%27%2C%20parentNode%29%3B%20let%20oldParentNode%20%3D%20parentNode%3B%20parentNode%20%3D%20parentNode.parentNode%3B%20oldParentNode.remove%28%29%3B%20%7D%20%7D%20else%20%7B%20console.log%28%27rm%20IFRAMEs%3A%20found%20non-suspicious%20IFRAME%20to%20recurse%20into%3A%20%27%2C%20iframe%29%3B%20execute%28iframe.contentDocument%29%3B%20%7D%20%7D%29%3B%20%7D%29%28document%29%3B%20%7D%29%28%29%3B/* ./content/rmi.js */" ADD_DATE="1538080649" LAST_MODIFIED="1548882032" SHORTCUTURL="rmi">rm IFRAMEs</A>
<DD><P>Remove all the IFRAMEs that are off-site or do not have a “src” attribute.
These are typically used for ads and unwanted external content.
navigation etc.
IFRAMEs without a “src” attribute are also used for sandboxing untrusted
content, e.g. on mailinator.com, but I have not yet found a way to
distinguish between src-less IFRAMEs for ads and src-less IFRAMEs for
“regular” content. Maybe try to guess based on the dimensions? Meh.</P></DD>
<DT><A HREF="javascript:%28function%20rmo%28%29%20%7B%20%22use%20strict%22%3B%20function%20getFirstZIndexedElement%28elements%29%20%7B%20if%20%28%21Array.isArray%28elements%29%29%20%7B%20elements%20%3D%20Array.from%28elements%29%3B%20%7D%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20elements.length%3B%20i%2B%2B%29%20%7B%20if%20%28%21isNaN%28getComputedStyle%28elements%5Bi%5D%29.zIndex%29%29%20%7B%20return%20elements%5Bi%5D%3B%20%7D%20%7D%20return%20null%3B%20%7D%20%20function%20execute%28document%29%20%7B%20%20let%20leftX%20%3D%2064%3B%20let%20leftY%20%3D%20document.defaultView.innerHeight%20%2F%202%3B%20let%20leftOverlay%20%3D%20getFirstZIndexedElement%28document.elementsFromPoint%28leftX%2C%20leftY%29%29%3B%20if%20%28%21leftOverlay%29%20%7B%20console.log%28%27rmo%3A%20did%20not%20find%20Z-indexed%20overlay%20at%20%28%27%20%2B%20leftX%20%2B%20%27%2C%20%27%20%2B%20leftY%20%2B%20%27%29%27%29%3B%20return%3B%20%7D%20let%20rightX%20%3D%20document.defaultView.innerWidth%20-%2064%3B%20let%20rightY%20%3D%20document.defaultView.innerHeight%20%2F%202%3B%20let%20rightOverlay%20%3D%20getFirstZIndexedElement%28document.elementsFromPoint%28rightX%2C%20rightY%29%29%3B%20if%20%28%21rightOverlay%29%20%7B%20console.log%28%27rmo%3A%20did%20not%20find%20Z-indexed%20overlay%20at%20%28%27%20%2B%20rightX%20%2B%20%27%2C%20%27%20%2B%20rightY%20%2B%20%27%29%27%29%3B%20return%3B%20%7D%20if%20%28leftOverlay%20%21%3D%3D%20rightOverlay%29%20%7B%20console.log%28%27rmo%3A%20did%20not%20detect%20full-width%20overlay%3B%20left%3A%27%2C%20leftOverlay%2C%20%27%3B%20right%3A%27%2C%20rightOverlay%29%3B%20return%3B%20%7D%20let%20centerX%20%3D%20document.defaultView.innerWidth%20%2F%202%3B%20let%20centerY%20%3D%20document.defaultView.innerHeight%20%2F%202%3B%20let%20centerElements%20%3D%20document.elementsFromPoint%28centerX%2C%20centerY%29%3B%20if%20%28%21centerElements.indexOf%28leftOverlay%29%20%3D%3D%3D%20-1%29%20%7B%20console.log%28%27rmo%3A%20overlay%20candidate%20%28%27%2C%20leftOverlay%2C%20%27%29%20not%20found%20at%20%28%27%20%2B%20centerX%20%2B%20%27%2C%20%27%20%2B%20centerY%20%2B%20%27%29%27%29%3B%20return%3B%20%7D%20%20if%20%28document.location.host.match%28%2F%5E%28.%2B%5C.%29%3Ftwitter%5C.com%24%2F%29%29%20%7B%20document.querySelectorAll%28%27div%5Brole%3D%22group%22%5D%27%29.forEach%28div%20%3D%3E%20%7B%20if%20%28div.offsetWidth%20%2F%20window.innerWidth%20%3E%3D%200.75%20%26%26%20div.offsetHeight%20%2F%20window.innerHeight%20%2A%20100%20%3E%3D%200.75%29%20%7B%20centerElements.unshift%28div%29%3B%20%7D%20%7D%29%3B%20%7D%20%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20centerElements.length%3B%20i%2B%2B%29%20%7B%20console.log%28%27rmo%3A%20hiding%27%2C%20centerElements%5Bi%5D%29%3B%20centerElements%5Bi%5D.style.display%20%3D%20%27none%27%3B%20if%20%28centerElements%5Bi%5D%20%3D%3D%3D%20leftOverlay%29%20%7B%20break%3B%20%7D%20%7D%20%20let%20currentBodyStyle%20%3D%20document.body.hasAttribute%28%27style%27%29%20%3F%20document.body.getAttribute%28%27style%27%29%20%3A%20%27%27%3B%20let%20newBodyStyle%20%3D%20currentBodyStyle%20%2B%20%27%3B%20overflow%3A%20auto%20%21important%27%20%2B%20%27%3B%20position%3A%20static%20%21important%27%3B%20document.body.setAttribute%28%27style%27%2C%20newBodyStyle%29%3B%20%20document.body.classList.remove%28%27login_no_scroll%27%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27%5Bstyle%2A%3D%22overflow%22%5D%5Bstyle%2A%3D%22hidden%22%5D%27%29%2C%20function%20%28elem%29%20%7B%20elem.setAttribute%28%27style%27%2C%20elem.getAttribute%28%27style%27%29.replace%28%2Foverflow%5Cs%2A%3A%5Cs%2Ahidden%5Cs%2A%3B%3F%2F%2C%20%27%27%29%29%3B%20%7D%20%29%3B%20%20%5B%5D.forEach.call%28%20document.querySelectorAll%28%27%5Bstyle%2A%3D%22pointer-events%22%5D%5Bstyle%2A%3D%22none%22%5D%27%29%2C%20function%20%28elem%29%20%7B%20elem.setAttribute%28%27style%27%2C%20elem.getAttribute%28%27style%27%29.replace%28%2Fpointer-events%5Cs%2A%3A%5Cs%2Anone%5Cs%2A%3B%3F%2F%2C%20%27%27%29%29%3B%20%7D%20%29%3B%20%20document.querySelectorAll%28%27%5Binert%5D%27%29.forEach%28elem%20%3D%3E%20elem.removeAttribute%28%27inert%27%29%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./content/rmo.js */" ADD_DATE="1547675074" LAST_MODIFIED="1733569795" SHORTCUTURL="rmo">rm overlays</A>
<DD><P>Get rid of full-page overlays.</P></DD>
<DT><A HREF="javascript:%28function%20sort%28%29%20%7B%20%27use%20strict%27%3B%20const%20localeCompareOptions%20%3D%20%7B%20usage%3A%20%27sort%27%2C%20sensitivity%3A%20%27base%27%2C%20numeric%3A%20true%20%7D%3B%20%20const%20regexpForThousandsWithCommas%20%3D%20%2F%5E%28%5Cd%7B1%2C3%7D%28%3F%3A%2C%5Cd%7B3%7D%29%2B%28%3F%3A%5C.%5Cd%2B%29%3F%29%24%2F%3B%20const%20regexpForThousandsWithPeriods%20%3D%20%2F%5E%28%5Cd%7B1%2C3%7D%28%3F%3A%5C.%5Cd%7B3%7D%29%2B%28%3F%3A%2C%5Cd%2B%29%3F%29%24%2F%3B%20const%20regexpForThousandsWithSpaces%20%3D%20%2F%5E%28%5Cd%7B1%2C3%7D%28%3F%3A%5Cs%5Cd%7B3%7D%29%2B%28%3F%3A%2C%5Cd%2B%29%3F%29%24%2F%3B%20const%20regexpForDecimalsWithPeriod%20%3D%20%2F%5E%28%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%29%24%2F%3B%20const%20regexpForDecimalsWithComma%20%3D%20%2F%5E%28%5Cd%2B%2C%5Cd%2B%29%24%2F%3B%20%20const%20regexpForDateWithYearAndNumber%20%3D%20%2F%5Cb%28%3F%3A1%5B7-9%5D%5B0-9%5D%7B2%7D%7C2%5B0-1%5D%5B0-9%5D%7B2%7D%29%5Cb.%2A%5B%5E0-9%5D%5B0-9%5D%7B1%2C2%7D%28%3F%3A%5B%5E0-9%5D%7C%24%29%2F%3B%20const%20regexpForDateWithNumberAndYear%20%3D%20%2F%28%3F%3A%5E%7C%5B%5E0-9%5D%29%5B0-9%5D%7B1%2C2%7D%5B%5E0-9%5D.%2A%5Cb%28%3F%3A1%5B7-9%5D%5B0-9%5D%7B2%7D%7C2%5B0-1%5D%5B0-9%5D%7B2%7D%29%5Cb%2F%3B%20%20function%20isNumeric%28value%29%20%7B%20return%20%21isNaN%28value%20-%20parseFloat%28value%29%29%3B%20%7D%20%20function%20extractTextContent%28element%2C%20forceExtraction%29%20%7B%20extractTextContent.cachedElements%20%3D%20extractTextContent.cachedElements%20%7C%7C%20%5B%5D%3B%20if%20%28extractTextContent.cachedElements.indexOf%28element%29%20%3E%20-1%29%20%7B%20return%20element.xxxJanTextContent%3B%20%7D%20extractTextContent.cachedElements.push%28element%29%3B%20return%20element.xxxJanTextContent%20%3D%20Array.from%28element.childNodes%29.map%28node%20%3D%3E%20%7B%20if%20%28node%20instanceof%20HTMLImageElement%20%7C%7C%20%28node%20instanceof%20HTMLInputElement%20%26%26%20node.type%20%3D%3D%3D%20%27image%27%29%29%20%7B%20%20if%20%28node.hasAttribute%28%27alt%27%29%29%20%7B%20return%20node.alt%3B%20%7D%20if%20%28node.hasAttribute%28%27title%27%29%29%20%7B%20return%20node.title%3B%20%7D%20if%20%28node.hasAttribute%28%27src%27%29%29%20%7B%20return%20node.src%3B%20%7D%20%7D%20if%20%28node%20instanceof%20HTMLInputElement%20%26%26%20%28node.type%20%3D%3D%3D%20%27radio%27%20%7C%7C%20node.type%20%3D%3D%3D%20%27checkbox%27%29%29%20%7B%20%20return%20%28node.checked%20%3F%20%271%27%20%3A%20%270%27%29%20%2B%20node.value%3B%20%7D%20if%20%28node%20instanceof%20HTMLInputElement%20%7C%7C%20node%20instanceof%20HTMLTextAreaElement%29%20%7B%20%20return%20node.value%3B%20%7D%20if%20%28node%20instanceof%20HTMLSelectElement%29%20%7B%20%20return%20node.options%5Bnode.selectedIndex%5D%20%3F%20node.options%5Bnode.selectedIndex%5D.label%20%7C%7C%20node.options%5Bnode.selectedIndex%5D.value%20%3A%20node.textContent%3B%20%7D%20if%20%28node%20instanceof%20HTMLElement%29%20%7B%20%20return%20extractTextContent%28node%2C%20forceExtraction%29%3B%20%7D%20%20return%20node.textContent%3B%20%7D%29.join%28%27%27%29%3B%20%7D%20%20function%20splitByNumbers%28text%29%20%7B%20splitByNumbers.cache%20%3D%20splitByNumbers.cache%20%7C%7C%20%7B%7D%3B%20if%20%28splitByNumbers.cache%5Btext%5D%29%20%7B%20return%20splitByNumbers.cache%5Btext%5D%3B%20%7D%20let%20chunks%20%3D%20%5B%5D%3B%20%20const%20coarseChunks%20%3D%20text.split%28%2F%28%5B0-9%5D%2B%28%3F%3A%5B0-9%2C.%5Cs%5D%2A%5B0-9%5D%29%3F%29%2F%29%3B%20coarseChunks.forEach%28%28coarseChunk%2C%20i%29%20%3D%3E%20%7B%20if%20%28i%20%25%202%20%3D%3D%3D%200%29%20%7B%20%20return%20chunks.push%28coarseChunk%29%3B%20%7D%20let%20number%20%3D%20undefined%3B%20let%20matches%3B%20if%20%28%28matches%20%3D%20coarseChunk.match%28regexpForThousandsWithCommas%29%29%29%20%7B%20number%20%3D%20coarseChunk.trim%28%29.replace%28%2F%2C%2Fg%2C%20%27%27%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20coarseChunk.match%28regexpForThousandsWithPeriods%29%29%29%20%7B%20number%20%3D%20coarseChunk.trim%28%29.replace%28%2F%5B%2C.%5D%2Fg%2C%20char%20%3D%3E%20char%20%3D%3D%3D%20%27%2C%27%20%3F%20%27.%27%20%3A%20%27%27%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20coarseChunk.match%28regexpForThousandsWithSpaces%29%29%29%20%7B%20number%20%3D%20coarseChunk.trim%28%29.replace%28%2F%5B%2C%5Cs%5D%2Fg%2C%20char%20%3D%3E%20char%20%3D%3D%3D%20%27%2C%27%20%3F%20%27.%27%20%3A%20%27%27%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20coarseChunk.match%28regexpForDecimalsWithPeriod%29%29%29%20%7B%20number%20%3D%20coarseChunk.trim%28%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20coarseChunk.match%28regexpForDecimalsWithComma%29%29%29%20%7B%20number%20%3D%20coarseChunk.trim%28%29.replace%28%27%2C%27%2C%20%27.%27%29%3B%20%7D%20%20if%20%28i%20%3D%3D%3D%201%29%20%7B%20if%20%28%28matches%20%3D%20chunks%5B0%5D.match%28%2F%28-%7C%E2%88%92%7C%E2%80%90%29%5Cs%7B0%2C3%7D%24%2F%29%29%20%26%26%20%21text.match%28%2F%5C.%5B%5E0-9.%5D%2B%5Cs%2A%24%2F%29%29%20%7B%20chunks%5B0%5D%20%3D%20chunks%5B0%5D.slice%280%2C%20matches%5B0%5D.length%29%3B%20number%20%3D%20%28-number%29.toString%28%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20chunks%5B0%5D.match%28%2F%5E%28%5Cs%2A%29%28%3F%3A-%7C%E2%88%92%7C%E2%80%90%29%28%5Cs%7B0%2C2%7D.%7B0%2C3%7D%5Cs%7B0%2C2%7D%29%24%2F%29%29%29%20%7B%20chunks%5B0%5D%20%3D%20matches%5B1%5D%20%2B%20matches%5B2%5D%3B%20number%20%3D%20%28-number%29.toString%28%29%3B%20%7D%20%7D%20if%20%28number%20%21%3D%3D%20undefined%29%20%7B%20return%20chunks.push%28number%29%3B%20%7D%20return%20chunks.push%28coarseChunk%29%3B%20%7D%29%3B%20return%20splitByNumbers.cache%5Btext%5D%20%3D%20chunks%3B%20%7D%20%20function%20determineContentType%28text%2C%20forceDetermination%29%20%7B%20determineContentType.cache%20%3D%20determineContentType.cache%20%7C%7C%20%7B%7D%3B%20if%20%28%21forceDetermination%20%26%26%20determineContentType.cache%5Btext%5D%29%20%7B%20return%20determineContentType.cache%5Btext%5D%3B%20%7D%20%20if%20%28isNumeric%28text%29%29%20%7B%20return%20determineContentType.cache%5Btext%5D%20%3D%20%27number%27%3B%20%7D%20%20if%20%28text.match%28%2F%5E%5Cs%2Ahttps%3F%3A%5C%2F%5C%2F%2F%29%29%20%7B%20return%20determineContentType.cache%5Btext%5D%20%3D%20%27url%27%3B%20%7D%20%20let%20matches%3B%20if%20%28%20%28matches%20%3D%20text.match%28%2F%5E%5Cs%2A%28%5Cd%7B1%2C3%7D%29%5C.%28%5Cd%7B1%2C3%7D%29%5C.%28%5Cd%7B1%2C3%7D%29%5C.%28%5Cd%7B1%2C3%7D%29%5Cs%2A%28%5CS%7C%24%29%2F%29%29%20%26%26%20parseInt%28matches%5B1%5D%2C%2010%29%20%3C%20256%20%26%26%20parseInt%28matches%5B2%5D%2C%2010%29%20%3C%20256%20%26%26%20parseInt%28matches%5B3%5D%2C%2010%29%20%3C%20256%20%26%26%20parseInt%28matches%5B4%5D%2C%2010%29%20%3C%20256%20%29%20%7B%20return%20determineContentType.cache%5Btext%5D%20%3D%20%27ipv4%27%3B%20%7D%20%20if%20%28text.match%28regexpForDateWithYearAndNumber%29%20%7C%7C%20text.match%28regexpForDateWithNumberAndYear%29%29%20%7B%20const%20date%20%3D%20new%20Date%28text%29%3B%20const%20timestamp%20%3D%20date.getTime%28%29%3B%20if%20%28%21isNaN%28timestamp%29%29%20%7B%20return%20determineContentType.cache%5Btext%5D%20%3D%20%27date%27%3B%20%7D%20%7D%20%20return%20determineContentType.cache%5Btext%5D%20%3D%20%27text%27%3B%20%7D%20%20function%20determineLocale%28element%29%20%7B%20if%20%28element.lang%29%20%7B%20return%20element.lang%3B%20%7D%20determineLocale.cachedElements%20%3D%20determineLocale.cachedElements%20%7C%7C%20%5B%5D%3B%20if%20%28determineLocale.cachedElements.indexOf%28element%29%20%3E%20-1%29%20%7B%20return%20element.xxxJanLocale%3B%20%7D%20determineLocale.cachedElements.push%28element%29%3B%20const%20closestAncestorWithLang%20%3D%20element.closest%28%27%5Blang%5D%27%29%3B%20if%20%28closestAncestorWithLang%29%20%7B%20return%20element.xxxJanLocale%20%3D%20closestAncestorWithLang.lang%3B%20%7D%20return%20element.xxxJanLocale%20%3D%20%27%27%3B%20%7D%20%20function%20calculateSortKey%28text%2C%20contentType%2C%20forceCalculation%29%20%7B%20calculateSortKey.cache%20%3D%20calculateSortKey.cache%20%7C%7C%20%7B%7D%3B%20if%20%28%21forceCalculation%20%26%26%20calculateSortKey.cache%5Btext%5D%29%20%7B%20return%20calculateSortKey.cache%5Btext%5D%3B%20%7D%20let%20matches%3B%20if%20%28%21contentType%29%20%7B%20contentType%20%3D%20determineContentType%28text%2C%20forceCalculation%29%3B%20%7D%20if%20%28contentType%20%3D%3D%3D%20%27number%27%29%20%7B%20const%20trimmedText%20%3D%20text.trim%28%29%3B%20let%20number%20%3D%20parseFloat%28trimmedText%29%3B%20%20if%20%28trimmedText.match%28%2F%5E-%3F%5Cs%2A0%2B%2F%29%29%20%7B%20const%20precision%20%3D%20number%20%3E%200%20%3F%20-1e-10%20%3A%201e-10%3B%20number%20%2B%3D%20precision%20%2A%20%28trimmedText.length%20-%20number.toString%28%29.length%29%3B%20%7D%20return%20calculateSortKey.cache%5Btext%5D%20%3D%20number%3B%20%7D%20if%20%28contentType%20%3D%3D%3D%20%27url%27%29%20%7B%20%20if%20%28%28matches%20%3D%20text.match%28%2F%5E%5Cs%2A%28https%3F%3A%5C%2F%5C%2F%29%28%3F%3Awww%5C.%29%3F%28%5B%5E%5C%2F%5D%2B%29%28.%2A%29%2F%29%29%29%20%7B%20const%20scheme%20%3D%20matches%5B1%5D%20%3D%3D%3D%20%27http%3A%2F%2F%27%20%3F%20%27r%27%20%20%3A%20%27s%27%3B%20const%20host%20%3D%20matches%5B2%5D%3B%20%20const%20path%20%3D%20matches%5B3%5D%20%7C%7C%20%27%27%3B%20return%20calculateSortKey.cache%5Btext%5D%20%3D%20host%20%2B%20scheme%20%2B%20path%3B%20%7D%20%7D%20if%20%28contentType%20%3D%3D%3D%20%27ipv4%27%29%20%7B%20%20const%20parts%20%3D%20text.split%28%27.%27%29%3B%20return%20calculateSortKey.cache%5Btext%5D%20%3D%200%20%2B%20parseInt%28parts%5B3%5D%29%20%2B%20parseInt%28parts%5B2%5D%29%20%2A%20256%20%2B%20parseInt%28parts%5B1%5D%29%20%2A%20256%20%2A%20256%20%2B%20parseInt%28parts%5B0%5D%29%20%2A%20256%20%2A%20256%20%2A%20256%3B%20%7D%20%20if%20%28contentType%20%3D%3D%3D%20%27date%27%29%20%7B%20if%20%28text.length%20%3E%3D%208%29%20%7B%20const%20date%20%3D%20new%20Date%28text%29%3B%20const%20timestamp%20%3D%20date.getTime%28%29%3B%20if%20%28%21isNaN%28timestamp%29%29%20%7B%20return%20calculateSortKey.cache%5Btext%5D%20%3D%20date.toISOString%28%29%3B%20%7D%20%7D%20%7D%20%20return%20calculateSortKey.cache%5Btext%5D%20%3D%20text%3B%20%7D%20%20function%20rowSorterAsc%28row1%2C%20row2%2C%20colIndex%2C%20contentType%29%20%7B%20const%20cell1%20%3D%20row1.cells%5BcolIndex%5D%3B%20const%20cell2%20%3D%20row2.cells%5BcolIndex%5D%3B%20if%20%28%21cell1%20%26%26%20cell2%29%20%7B%20return%20-1%3B%20%7D%20else%20if%20%28cell1%20%26%26%20%21cell2%29%20%7B%20return%201%3B%20%7D%20const%20cell1TextContent%20%3D%20extractTextContent%28cell1%29%3B%20const%20cell2TextContent%20%3D%20extractTextContent%28cell2%29%3B%20const%20cell1SortKey%20%3D%20calculateSortKey%28cell1TextContent%2C%20contentType%29%3B%20const%20cell2SortKey%20%3D%20calculateSortKey%28cell2TextContent%2C%20contentType%29%3B%20const%20locale%20%3D%20determineLocale%28cell1%29%20%7C%7C%20determineLocale%28cell2%29%20%7C%7C%20undefined%3B%20%20if%20%28cell1TextContent%20%3D%3D%3D%20%27%27%20%26%26%20cell2TextContent%20%3D%3D%3D%20%27%27%29%20%7B%20return%20cell1.innerHTML.localeCompare%28cell2.innerHTML%2C%20locale%2C%20localeCompareOptions%29%3B%20%7D%20%20if%20%28contentType%20%3D%3D%3D%20%27number%27%20%7C%7C%20contentType%20%3D%3D%3D%20%27ipv4%27%29%20%7B%20const%20cell1SortKeyIsNumber%20%3D%20%21isNaN%28cell1SortKey%29%20%26%26%20typeof%20cell1SortKey%20%3D%3D%3D%20%27number%27%3B%20const%20cell2SortKeyIsNumber%20%3D%20%21isNaN%28cell2SortKey%29%20%26%26%20typeof%20cell2SortKey%20%3D%3D%3D%20%27number%27%3B%20if%20%28cell1SortKeyIsNumber%20%26%26%20cell2SortKeyIsNumber%29%20%7B%20if%20%28cell1SortKey%20%3D%3D%3D%20cell2SortKey%29%20%7B%20return%200%3B%20%7D%20else%20if%20%28cell1SortKey%20%3C%20cell2SortKey%29%20%7B%20return%20-1%3B%20%7D%20else%20%7B%20return%201%3B%20%7D%20%7D%20if%20%28cell1SortKeyIsNumber%20%26%26%20%21cell2SortKeyIsNumber%29%20%7B%20return%20-1%3B%20%7D%20else%20if%20%28%21cell1SortKeyIsNumber%20%26%26%20cell2SortKeyIsNumber%29%20%7B%20return%201%3B%20%7D%20else%20%7B%20%20return%20cell1TextContent.localeCompare%28cell2TextContent%2C%20locale%2C%20localeCompareOptions%29%3B%20%7D%20%7D%20%20if%20%28contentType%20%3D%3D%3D%20%27date%27%20%7C%7C%20contentType%20%3D%3D%3D%20%27url%27%29%20%7B%20return%20cell1SortKey.localeCompare%28cell2SortKey%2C%20locale%2C%20localeCompareOptions%29%3B%20%7D%20%20const%20cell1Chunks%20%3D%20splitByNumbers%28cell1TextContent%29%3B%20const%20cell2Chunks%20%3D%20splitByNumbers%28cell2TextContent%29%3B%20let%20minNumChunks%20%3D%20Math.min%28cell1Chunks.length%2C%20cell2Chunks.length%29%3B%20let%20i%3B%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20minNumChunks%3B%20i%2B%2B%29%20%7B%20const%20chunk1%20%3D%20cell1Chunks%5Bi%5D%3B%20const%20chunk2%20%3D%20cell2Chunks%5Bi%5D%3B%20let%20localeComparison%3B%20if%20%28chunk1%20%3D%3D%3D%20chunk2%20%7C%7C%20%28localeComparison%20%3D%20chunk1.trim%28%29.localeCompare%28chunk2.trim%28%29%2C%20locale%2C%20localeCompareOptions%29%29%20%3D%3D%3D%200%29%20%7B%20continue%3B%20%7D%20if%20%28i%20%25%202%20%3D%3D%3D%201%20%26%26%20isNumeric%28chunk1%29%20%26%26%20isNumeric%28chunk2%29%29%20%7B%20const%20float1%20%3D%20parseFloat%28chunk1%29%3B%20const%20float2%20%3D%20parseFloat%28chunk2%29%3B%20%20if%20%28float1%20%3D%3D%3D%20float2%29%20%7B%20return%20chunk1.localeCompare%28chunk2%2C%20locale%2C%20localeCompareOptions%29%3B%20%7D%20return%20float1%20%3C%20float2%20%3F%20-1%20%3A%201%3B%20%7D%20return%20localeComparison%3B%20%7D%20return%20cell1TextContent.localeCompare%28cell2TextContent%2C%20locale%2C%20localeCompareOptions%29%3B%20%7D%20%20function%20rowSorterDesc%28row1%2C%20row2%2C%20colIndex%2C%20contentType%29%20%7B%20return%20rowSorterAsc%28row2%2C%20row1%2C%20colIndex%2C%20contentType%29%3B%20%7D%20%20function%20clearCaches%28%29%20%7B%20splitByNumbers.cache%20%3D%20%7B%7D%3B%20calculateSortKey.cache%20%3D%20%7B%7D%3B%20determineContentType.cache%20%3D%20%7B%7D%3B%20%28extractTextContent.cachedElements%20%7C%7C%20%5B%5D%29.forEach%28element%20%3D%3E%20delete%20element.xxxJanTextContent%29%3B%20extractTextContent.cachedElements%20%3D%20%5B%5D%3B%20%28determineLocale.cachedElements%20%7C%7C%20%5B%5D%29.forEach%28element%20%3D%3E%20delete%20element.xxxJanLocale%29%3B%20determineLocale.cachedElements%20%3D%20%5B%5D%3B%20%7D%20%20function%20execute%28document%29%20%7B%20Array.from%28document.querySelectorAll%28%27table%27%29%29.forEach%28table%20%3D%3E%20%7B%20if%20%28%21table.tBodies.length%20%7C%7C%20%21table.tBodies%5B0%5D.rows.length%29%20%7B%20return%3B%20%7D%20const%20headerRow%20%3D%20table.tHead%20%26%26%20table.tHead.rows%5B0%5D%20%26%26%20table.tHead.rows%5B0%5D.cells.length%20%3F%20table.tHead.rows%5B0%5D%20%3A%20table.tBodies%5B0%5D.rows%5B0%5D%3B%20const%20sortingIndicators%20%3D%20%5B%5D%3B%20Array.from%28headerRow.cells%29.forEach%28%28headerCell%2C%20colIndex%29%20%3D%3E%20%7B%20%20if%20%28%21headerCell.xxxJanSortingIndicator%29%20%7B%20const%20sortingIndicator%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27span%27%29%3B%20sortingIndicator.textContent%20%3D%20%27%E2%96%9A%27%3B%20sortingIndicators.push%28sortingIndicator%29%3B%20if%20%28getComputedStyle%28headerCell%29.position%20%3D%3D%3D%20%27static%27%29%20%7B%20headerCell.style.position%20%3D%20%27relative%27%3B%20%7D%20sortingIndicator.setAttribute%28%27style%27%2C%20%60%20display%3A%20inline-block%3B%20position%3A%20absolute%3B%20right%3A%200%3B%20top%3A%200%3B%20min-width%3A%201.5em%3B%20min-height%3A%203ex%3B%20text-align%3A%20right%3B%20opacity%3A%200.5%3B%20text-shadow%3A%20-2px%202px%204px%20black%2C%202px%202px%204px%20white%3B%20cursor%3A%20pointer%3B%20%60%29%3B%20const%20onFocus%20%3D%20_%20%3D%3E%20sortingIndicator.style.opacity%20%3D%201%3B%20const%20onBlur%20%3D%20_%20%3D%3E%20sortingIndicator.style.opacity%20%3D%200.5%3B%20%5B%27focus%27%2C%20%27mouseenter%27%5D.forEach%28eventName%20%3D%3E%20sortingIndicator.addEventListener%28eventName%2C%20onFocus%29%29%3B%20%5B%27blur%27%2C%20%27mouseleave%27%5D.forEach%28eventName%20%3D%3E%20sortingIndicator.addEventListener%28eventName%2C%20onBlur%29%29%3B%20sortingIndicator.tabIndex%20%3D%200%3B%20headerCell.xxxJanSortingIndicator%20%3D%20headerCell.appendChild%28sortingIndicator%29%3B%20%7D%20%20const%20handler%20%3D%20function%20%28event%29%20%7B%20%20headerCell.xxxJanSortingDirection%20%3D%20headerCell.xxxJanSortingDirection%20%3D%3D%3D%20%27asc%27%20%3F%20%27desc%27%20%3A%20%27asc%27%3B%20%20sortingIndicators.forEach%28indicator%20%3D%3E%20indicator.textContent%20%3D%20%27%E2%96%9A%27%29%3B%20headerCell.xxxJanSortingIndicator.textContent%20%3D%20headerCell.xxxJanSortingDirection%20%3D%3D%3D%20%27asc%27%20%3F%20%27%E2%96%B2%27%20%3A%20%27%E2%96%BC%27%3B%20%20Array.from%28table.tBodies%29.forEach%28tBody%20%3D%3E%20%7B%20const%20skipFirstRow%20%3D%20headerRow.closest%28%27tbody%27%29%20%3D%3D%3D%20tBody%3B%20if%20%28tBody.rows.length%20%3D%3D%3D%20%28skipFirstRow%20%3F%201%20%3A%200%29%29%20%7B%20return%3B%20%7D%20%20if%20%28%21headerCell.xxxJanContentType%29%20%7B%20const%20numRowsToCheck%20%3D%20Math.min%28tBody.rows.length%2C%2050%29%3B%20const%20countersPerContentType%20%3D%20%7B%7D%3B%20let%20rowIndex%3B%20for%20%28rowIndex%20%3D%20%28skipFirstRow%20%3F%201%20%3A%200%29%3B%20rowIndex%20%3C%20numRowsToCheck%3B%20rowIndex%2B%2B%29%20%7B%20const%20cell%20%3D%20tBody.rows%5BrowIndex%5D.cells%5BcolIndex%5D%3B%20if%20%28%21cell%29%20%7B%20continue%3B%20%7D%20const%20contentType%20%3D%20determineContentType%28extractTextContent%28cell%29%29%3B%20countersPerContentType%5BcontentType%5D%20%3D%20countersPerContentType%5BcontentType%5D%20%3F%20countersPerContentType%5BcontentType%5D%20%2B%201%20%3A%201%3B%20%7D%20const%20mostCommonContentType%20%3D%20Object.entries%28countersPerContentType%29%20.sort%28%28a%2C%20b%29%20%3D%3E%20a%5B1%5D%20%3D%3D%3D%20b%5B1%5D%20%3F%200%20%3A%20%28a%5B1%5D%20%3C%20b%5B1%5D%20%3F%20-1%20%3A%201%29%29%20.pop%28%29%5B0%5D%3B%20headerCell.xxxJanContentType%20%3D%20mostCommonContentType%3B%20%7D%20%20const%20rowSorter%20%3D%20headerCell.xxxJanSortingDirection%20%3D%3D%3D%20%27asc%27%20%3F%20rowSorterAsc%20%3A%20rowSorterDesc%3B%20%20let%20sortedRows%20%3D%20Array.from%28tBody.rows%29%20.slice%28skipFirstRow%20%3F%201%20%3A%200%29%20.sort%28%28row1%2C%20row2%29%20%3D%3E%20rowSorter%28row1%2C%20row2%2C%20colIndex%2C%20headerCell.xxxJanContentType%29%29%3B%20%20sortedRows.forEach%28%28row%2C%20sortedRowIndex%29%20%3D%3E%20%7B%20row.parentNode.insertBefore%28row%2C%20row.parentNode.rows%5BsortedRowIndex%20%2B%201%5D%20%7C%7C%20null%29%3B%20%7D%29%3B%20%7D%29%3B%20%20clearCaches%28%29%3B%20%7D%3B%20headerCell.addEventListener%28%27click%27%2C%20handler%29%3B%20headerCell.addEventListener%28%27keypress%27%2C%20event%20%3D%3E%20%28event.code%20%3D%3D%3D%2013%20%7C%7C%20event.keyCode%20%3D%3D%3D%2013%29%20%26%26%20handler%28event%29%29%3B%20%7D%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./content/sort.js */" ADD_DATE="1580848220" LAST_MODIFIED="1580848220" SHORTCUTURL="sort">Sort tables</A>
<DD><P>Allow sorting tables from their headers.
This is not meant to be a super intelligent sorting algorithm for all kinds
of content. (For that, use something like the jQuery tablesorter plugin:
https://mottie.github.io/tablesorter/. Rather, it is smart enough to sort
strings in a natural fashion. Examples:
- “foo1” comes before “FOO002” because it is case-insensitive and the
numbers are sorted numerically, not orthographically.
- “- EUR 99” comes before “EUR 1” because it considers the minus sign (or
dash or hyphen) to be part of the number if there only a limited number of
characters in between.
- “https://www.example.com/” comes before “https://google.com/”
because it ignores “www.”, and “http://www.example.com/zzz” comes before
“https://example.com/aaa”, because “http://” comes before “https://”.
- “31 Dec 2019” comes before “1 Apr 2020” because parsable dates are sorted
chronologically.</P></DD>
<DT><A HREF="javascript:%28function%20vidspeed%28%29%20%7B%20%22use%20strict%22%3B%20%20function%20getMedia%28document%29%20%7B%20let%20allMedia%20%3D%20Array.from%28document.querySelectorAll%28%27video%2C%20audio%27%29%29%3B%20%20const%20notRegularHtmlElementsSelector%20%3D%20%27a%2Cabbr%2Caddress%2Carea%2Carticle%2Caside%2Caudio%2Cb%2Cbase%2Cbdi%2Cbdo%2Cblockquote%2Cbody%2Cbr%2Cbutton%2Ccanvas%2Ccaption%2Ccite%2Ccode%2Ccol%2Ccolgroup%2Cdata%2Cdatalist%2Cdd%2Cdel%2Cdetails%2Cdfn%2Cdialog%2Cdiv%2Cdl%2Cdt%2Cem%2Cembed%2Cfieldset%2Cfigcaption%2Cfigure%2Cfooter%2Cform%2Ch1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2Chead%2Cheader%2Chgroup%2Chr%2Chtml%2Ci%2Ciframe%2Cimg%2Cinput%2Cins%2Ckbd%2Clabel%2Clegend%2Cli%2Clink%2Cmain%2Cmap%2Cmark%2Cmath%2Cmath%20%2A%2Cmenu%2Cmeta%2Cmeter%2Cnav%2Cnoscript%2Cobject%2Col%2Coptgroup%2Coption%2Coutput%2Cp%2Cparam%2Cpicture%2Cpre%2Cprogress%2Cq%2Crp%2Crt%2Cruby%2Cs%2Csamp%2Cscript%2Csection%2Cselect%2Cslot%2Csmall%2Csource%2Cspan%2Cstrong%2Cstyle%2Csub%2Csummary%2Csup%2Csvg%2Csvg%20%2A%2Ctable%2Ctbody%2Ctd%2Ctemplate%2Ctextarea%2Ctfoot%2Cth%2Cthead%2Ctime%2Ctitle%2Ctr%2Ctrack%2Cu%2Cul%2Cvar%2Cvideo%2Cwbr%27%20.split%28%27%2C%27%29%20.map%28s%20%3D%3E%20%60%3Anot%28%24%7Bs%7D%29%60%29%20.join%28%27%27%29%3B%20Array.from%28document.querySelectorAll%28notRegularHtmlElementsSelector%29%29%20.filter%28elem%20%3D%3E%20elem.shadowRoot%29%20.forEach%28elem%20%3D%3E%20allMedia%20%3D%20allMedia.concat%28Array.from%28elem.shadowRoot.querySelectorAll%28%27video%2C%20audio%27%29%29%29%29%3B%20%20try%20%7B%20Array.from%28%20document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%20%29.forEach%28%20elem%20%3D%3E%20allMedia%20%3D%20allMedia.concat%28getMedia%28elem.contentDocument%29%29%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20return%20allMedia%3B%20%7D%20let%20allMedia%20%3D%20getMedia%28document%29%3B%20%20if%20%28%21allMedia.length%29%20%7B%20return%3B%20%7D%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20prompt%28%27Specify%20the%20speed%20%28playback%20rate%29%20as%20a%20number%2C%20with%201%20being%20100%25.%20For%20example%2C%201.25%20%3D%20125%25%2C%200.75%20%3D%2075%25%2C%20and%201%20%3D%20100%25.%27%2C%20allMedia%5B0%5D.playbackRate%29%3B%20%7D%20if%20%28s%29%20%7B%20allMedia.forEach%28media%20%3D%3E%20%7B%20media.playbackRate%20%3D%20s%3B%20%20let%20visibleMediaContainer%20%3D%20media%3B%20let%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20while%20%28%28rect.height%20%3C%3D%200%20%7C%7C%20rect.width%20%3C%3D%200%29%20%26%26%20%28visibleMediaContainer%20%3D%20visibleMediaContainer.parentNode%29%29%20%7B%20rect%20%3D%20visibleMediaContainer.getBoundingClientRect%28%29%3B%20%7D%20const%20indicator%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%3B%20indicator.textContent%20%3D%20media.playbackRate%20%2B%20%27%C3%97%27%3B%20indicator.setAttribute%28%27style%27%2C%20%60%20display%3A%20flex%3B%20position%3A%20fixed%3B%20left%3A%20%24%7BMath.max%280%2C%20rect.left%29%7Dpx%3B%20top%3A%20%24%7BMath.max%280%2C%20rect.top%29%7Dpx%3B%20z-index%3A%2010000%3B%20width%3A%20%24%7Brect.width%7Dpx%3B%20height%3A%20%24%7Brect.height%7Dpx%3B%20font-size%3A%20%24%7Brect.height%20%2F%2010%7Dpx%3B%20justify-content%3A%20center%3B%20align-items%3A%20center%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%201%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%201%29%3B%20transition%3A%20all%200.75s%20ease-out%3B%20pointer-events%3A%20none%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20document.body.appendChild%28indicator%29%3B%20%20setTimeout%28_%20%3D%3E%20%7B%20setTimeout%28%20_%20%3D%3E%20indicator.remove%28%29%2C%20750%29%3B%20indicator.setAttribute%28%27style%27%2C%20indicator.getAttribute%28%27style%27%29%20%2B%20%60%20font-size%3A%20%24%7Brect.height%7Dpx%3B%20color%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%20text-shadow%3A%200%200%2010px%20rgba%28255%2C%20255%2C%20255%2C%200%29%3B%20%60.replace%28%2F%5E%5Cs%2A%7C%5Cs%2A%24%2Fgm%2C%20%27%27%29%29%3B%20%7D%2C%200%29%3B%20%7D%29%3B%20%7D%20%7D%29%28%29%3B/* ./content/vidspeed.js */" ADD_DATE="1545557441" LAST_MODIFIED="1634155503" SHORTCUTURL="vidspeed">Set video speed</A>
<DD><P>Change the video and audio speed (playback rate).</P></DD>
</DL>
<DT><H3>Development</H3>
<DD><P>Tools to help development.</P>
<DL><P>
<DT><A HREF="javascript:%28function%20addcss%28document%2C%20s%29%20%7B%20%20s%20%3D%20s%20%7C%7C%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20CSS%20code%3A%27%29%3B%20%7D%20else%20if%20%28s.includes%28%27~%27%29%20%26%26%20%21s.includes%28%27%7B%27%29%29%20%7B%20%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.textContent%20%3D%20s%3B%20%20try%20%7B%20Array.prototype.slice.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20addcss%28elem.contentDocument%2C%20s%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20%7D%29%28document%29%3B/* ./development/addcss.js */" ADD_DATE="1322171557" LAST_MODIFIED="1709888925" SHORTCUTURL="addcss">Add CSS</A>
<DD><P>Add the specified CSS to the current document.</P></DD>
<DT><A HREF="javascript:%28function%20b64%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20text%20to%20encode%2Fdecode%20using%20Base64%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20var%20result%2C%20operation%3B%20%20try%20%7B%20%20if%20%28%21s.trim%28%29.match%28%2F%5E%5BA-Za-z0-9%2B%2F%5D%2B%28%5BA-Z%5D%5Ba-z%5D%7C%5Ba-z%5D%5BA-Z%5D%29%5BA-Za-z0-9%2B%2F%5D%2A%3D%7B0%2C2%7D%24%2F%29%29%20%7B%20throw%20%27I%20guess%20this%20should%20be%20encoded%2C%20rather%20than%20encoded.%27%3B%20%7D%20s%20%3D%20s.trim%28%29%3B%20result%20%3D%20atob%28s%29%3B%20operation%20%3D%20%27decoded%27%3B%20%7D%20catch%20%28e%29%20%7B%20result%20%3D%20btoa%28s%29%3B%20operation%20%3D%20%27encoded%27%3B%20%7D%20var%20text%20%3D%20%27The%20Base64%20%27%20%2B%20operation%20%2B%20%27%20string%20of%20%22%27%20%2B%20s%20%2B%20%27%22%20is%3A%5Cn%5Cn%27%20%2B%20result%3B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fplain%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20text%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/b64.js */" ADD_DATE="1308256372" LAST_MODIFIED="1391180795" SHORTCUTURL="b64">Base64</A>
<DD><P>Convert plain text to Base64 and back. It determines which conversion to do.</P></DD>
<DT><A HREF="javascript:%28function%20dumphtml%28%29%20%7B%20%20var%20stringifiers%20%3D%20%7B%7D%3B%20stringifiers%5BNode.ELEMENT_NODE%5D%20%3D%20function%20handleElementNode%28node%29%20%7B%20return%20node.outerHTML%3B%20%7D%3B%20stringifiers%5BNode.ATTRIBUTE_NODE%5D%20%3D%20function%20handleAttributeNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20ATTRIBUTE_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20ATTRIBUTE_NODE%20--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.TEXT_NODE%5D%20%3D%20function%20handleTextNode%28node%29%20%7B%20var%20tempDiv%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%3B%20tempDiv.textContent%20%3D%20node.textContent%3B%20return%20tempDiv.innerHTML%3B%20%7D%3B%20stringifiers%5BNode.CDATA_SECTION_NODE%5D%20%3D%20function%20handleCdataSectionNode%28node%29%20%7B%20return%20%27%3C%21%5BCDATA%5B%27%20%2B%20node.textContent%20%2B%20%27%5D%5D%3E%27%3B%20%7D%3B%20stringifiers%5BNode.ENTITY_REFERENCE_NODE%5D%20%3D%20function%20handleEntityReferenceNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20ENTITY_REFERENCE_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20ENTITY_REFERENCE_NODE%20--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.ENTITY_NODE%5D%20%3D%20function%20handleEntityNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20ENTITY_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20ENTITY_NODE%20--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.PROCESSING_INSTRUCTION_NODE%5D%20%3D%20function%20handleProcessingInstructionNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20PROCESSING_INSTRUCTION_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20PROCESSING_INSTRUCTION_NODE%20--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.COMMENT_NODE%5D%20%3D%20function%20handleCommentNode%28node%29%20%7B%20return%20%27%3C%21--%27%20%2B%20node.data%20%2B%20%27--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.DOCUMENT_NODE%5D%20%3D%20function%20handleDocumentNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20DOCUMENT_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20DOCUMENT_NODE%20--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.DOCUMENT_TYPE_NODE%5D%20%3D%20function%20handleDocumentTypeNode%28node%29%20%7B%20var%20docTypeParts%20%3D%20%5B%27DOCTYPE%27%2C%20node.name%5D%3B%20if%20%28node.publicId%29%20%7B%20docTypeParts.push%28%27PUBLIC%27%2C%20node.publicId%29%3B%20%7D%20if%20%28node.systemId%29%20%7B%20docTypeParts.push%28node.systemId%29%3B%20%7D%3B%20return%20%27%3C%21%27%20%2B%20docTypeParts.join%28%27%20%27%29%20%2B%20%27%3E%27%3B%20%7D%3B%20stringifiers%5BNode.DOCUMENT_FRAGMENT_NODE%5D%20%3D%20function%20handleDocumentFragmentNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20DOCUMENT_FRAGMENT_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20DOCUMENT_FRAGMENT_NODE%20--%3E%27%3B%20%7D%3B%20stringifiers%5BNode.NOTATION_NODE%5D%20%3D%20function%20handleNotationNode%28node%29%20%7B%20if%20%28typeof%20console%20%21%3D%3D%20%27undefined%27%20%26%26%20console.debug%29%20%7B%20console.debug%28%27dump%3A%20unexpected%20NOTATION_NODE%27%29%3B%20%7D%20return%20%27%3C%21--%20Unhandled%20NOTATION_NODE%20--%3E%27%3B%20%7D%3B%20%20var%20htmlParts%20%3D%20%5B%5D%3B%20%20%20var%20baseHref%3B%20if%20%28document.documentElement.nodeName.toUpperCase%28%29%20%3D%3D%3D%20%27HTML%27%20%26%26%20%21document.querySelector%28%27base%5Bhref%5D%27%29%29%20%7B%20baseHref%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27base%27%29%3B%20baseHref.href%20%3D%20document.location%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28baseHref%29%3B%20%7D%20%20Array.prototype.slice.call%28document.childNodes%29.forEach%28function%20%28node%29%20%7B%20if%20%28stringifiers%5Bnode.nodeType%5D%29%20%7B%20htmlParts.push%28stringifiers%5Bnode.nodeType%5D%28node%29%29%3B%20%7D%20%7D%29%3B%20%20if%20%28baseHref%29%20%7B%20baseHref.parentNode.removeChild%28baseHref%29%3B%20%7D%20var%20html%20%3D%20htmlParts.join%28%27%5Cn%27%29%3B%20%20var%20newWindow%3B%20if%20%28%28newWindow%20%3D%20window.open%28%27%27%29%29%29%20%7B%20newWindow.document.open%28%29%3B%20newWindow.document.write%28%27%3Cplaintext%3E%27%20%2B%20html%29%3B%20newWindow.document.close%28%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/dumphtml.js */" ADD_DATE="1359886603" LAST_MODIFIED="1520415256" SHORTCUTURL="dumphtml">Dump HTML</A>
<DD><P>Dump the generated HTML of the current page as a plain-text document in a
new tab or window.</P></DD>
<DT><A HREF="javascript:%28function%20html%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20HTML%20snippet%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fhtml%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20s%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/html.js */" ADD_DATE="1305576357" LAST_MODIFIED="1305576357" SHORTCUTURL="html">View as HTML</A>
<DD><P>Render the specified or selected text as HTML.</P></DD>
<DT><A HREF="javascript:%28function%20len%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20string%20to%20measure%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20var%20codePoints%20%3D%20%5B%5D%2C%20counter%20%3D%200%2C%20length%20%3D%20s.length%2C%20value%2C%20extra%3B%20while%20%28counter%20%3C%20length%29%20%7B%20value%20%3D%20s.charCodeAt%28counter%2B%2B%29%3B%20if%20%28%28value%20%26%200xF800%29%20%3D%3D%3D%200xD800%29%20%7B%20extra%20%3D%20s.charCodeAt%28counter%2B%2B%29%3B%20if%20%28%28value%20%26%200xFC00%29%20%21%3D%200xD800%20%7C%7C%20%28extra%20%26%200xFC00%29%20%21%3D%200xDC00%29%20%7B%20alert%28%27Illegal%20UTF-16%20sequence%2C%20but%20continuing%20anyway.%27%29%3B%20%7D%20value%20%3D%20%28%28value%20%26%200x3FF%29%20%3C%3C%2010%29%20%2B%20%28extra%20%26%200x3FF%29%20%2B%200x10000%3B%20%7D%20codePoints.push%28value%29%3B%20%7D%20var%20numChars%20%3D%20codePoints.length%3B%20%20var%20numBytes%20%3D%20encodeURI%28s%29.replace%28%2F%25..%2Fg%2C%20%27x%27%29.length%3B%20%20var%20maxDisplayLength%20%3D%2064%3B%20if%20%28numChars%20%3E%20maxDisplayLength%29%20%7B%20var%20encodeUtf16%20%3D%20function%20%28value%29%20%7B%20var%20output%20%3D%20%27%27%3B%20if%20%28%28value%20%26%200xF800%29%20%3D%3D%200xD800%29%20%7B%20alert%28%27Invalid%20UTF-16%20value%2C%20but%20continuing%20anyway.%27%29%3B%20%7D%20if%20%28value%20%3E%200xFFFF%29%20%7B%20value%20-%3D%200x10000%3B%20output%20%2B%3D%20String.fromCharCode%28value%20%3E%3E%3E%2010%20%26%200x3FF%20%7C%200xD800%29%3B%20value%20%3D%200xDC00%20%7C%20value%20%26%200x3FF%3B%20%7D%20output%20%2B%3D%20String.fromCharCode%28value%29%3B%20return%20output%3B%20%7D%3B%20s%20%3D%20codePoints.slice%280%2C%20maxDisplayLength%20%2F%202%29.map%28encodeUtf16%29.join%28%27%27%29%20%2B%20%27%E2%80%A6%27%20%2B%20codePoints.slice%28numChars%20-%20maxDisplayLength%20%2F%202%20%2B%201%29.map%28encodeUtf16%29.join%28%27%27%29%3B%20%7D%20var%20displayString%20%3D%20numChars%20%3D%3D%3D%20numBytes%20%3F%20%27The%20number%20of%20characters%20in%20the%20ASCII%20string%20%22%27%20%2B%20s%20%2B%20%27%22%20is%3A%20%27%20%3A%20%27The%20number%20of%20characters%20in%20the%20non-ASCII%20string%20%22%27%20%2B%20s%20%2B%20%27%22%20%28%27%20%2B%20numBytes%20%2B%20%27%20UTF-8%20bytes%29%20is%3A%20%27%3B%20prompt%28displayString%2C%20numChars%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/len.js */" ADD_DATE="1305529240" LAST_MODIFIED="1326749304" SHORTCUTURL="len">Show length</A>
<DD><P>Show the length of the given string.</P></DD>
<DT><A HREF="javascript:%28function%20magic%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20input%20data%20for%20CyberChef%E2%80%99s%20magic%20mode%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fgchq.github.io%2FCyberChef%2F%23recipe%3DMagic%282%2Cfalse%2Cfalse%2C%2527%2527%29%26input%3D%27%20%2B%20encodeURIComponent%28btoa%28s%29.replace%28%2F%3D%2A%24%2F%2C%20%27%27%29%29%3B%20%7D%20%7D%29%28document%29%3B/* ./development/magic.js */" ADD_DATE="1306354325" LAST_MODIFIED="1709121115" SHORTCUTURL="magic">CyberChef Magic</A>
<DD><P>Use GCHQ’s CyberChef to magically determine what the input data is, e.g.
a Base64-encoded string of gzipped plaintext, a JSON Web Token, …
By default, this bookmarklet tells CyberChef to only go two levels deep to
save time and energy.
E.g. `magic H4sIAL8d32UAAyvJSFXIL8pMz8xLzFEoyEnMzCtJrSjRAwByt2jzFwAAAA`
will use CyberChef to produce this recipe:
1) `From_Base64('A-Za-z0-9+/=',true,false)`
2) `Gunzip()`
which leads to: `the original plaintext.`</P></DD>
<DT><A HREF="javascript:%28function%20reconsole%28%29%20%7B%20%27use%20strict%27%3B%20%20delete%20window.console%3B%20%20if%20%28%21window.console%29%20%7B%20const%20iframe%20%3D%20document.body.appendChild%28document.createElement%28%27iframe%27%29%29%3B%20window.console%20%3D%20iframe.contentWindow.console%3B%20%7D%20%7D%29%28%29%3B/* ./development/reconsole.js */" ADD_DATE="1314696756" LAST_MODIFIED="1709054060" SHORTCUTURL="reconsole">Re-console</A>
<DD><P>Restore window.console to its native state.</P></DD>
<DT><A HREF="javascript:%28function%20reloadcss%28%29%20%7B%20%20function%20update%28item%29%20%7B%20if%20%28item.disabled%29%20%7B%20return%3B%20%7D%20var%20timestamp%20%3D%20%2Bnew%20Date%28%29%20%2B%20%27%27%3B%20var%20paramName%20%3D%20%27janbm-date%27%2C%20paramRegex%20%3D%20new%20RegExp%28%27%28%5B%3F%26%5D%29%27%20%2B%20paramName%20%2B%20%27%3D%5B0-9%5D%7B%27%20%2B%20timestamp.length%20%2B%20%27%7D%5C%5Cb%27%29%3B%20%20var%20newHref%20%3D%20item.href.replace%28paramRegex%2C%20%27%27%29%3B%20if%28%21newHref.match%28paramRegex%29%29%20%7B%20newHref%20%2B%3D%20~newHref.indexOf%28%27%3F%27%29%20%3F%20%27%26%27%20%2B%20paramName%20%2B%20%27%3D%27%20%2B%20timestamp%20%3A%20%27%3F%27%20%2B%20paramName%20%2B%20%27%3D%27%20%2B%20timestamp%3B%20%7D%20%20var%20tmpItem%20%3D%20item%3B%20var%20allMedia%20%3D%20%5B%5D%3B%20while%20%28tmpItem%29%20%7B%20tmpItem.media.mediaText%20%26%26%20allMedia.unshift%28tmpItem.media.mediaText%29%3B%20tmpItem%20%3D%20tmpItem.parentStyleSheet%3B%20%7D%20%20var%20newStyleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27link%27%29%3B%20newStyleSheet.rel%20%3D%20%27StyleSheet%27%3B%20newStyleSheet.media%20%3D%20allMedia.join%28%27%2C%20%27%29%3B%20newStyleSheet.href%20%3D%20newHref%3B%20%28document.head%20%7C%7C%20document.body%20%7C%7C%20document.documentElement%29.appendChild%28newStyleSheet%29%3B%20item.disabled%20%3D%20true%3B%20%7D%20Array.prototype.slice.call%28document.styleSheets%29.forEach%28function%20%28styleSheet%2C%20i%29%20%7B%20if%20%28%21styleSheet.href%29%20%7B%20%20Array.prototype.slice.call%28styleSheet.cssRules%29.forEach%28function%20%28cssRule%29%20%7B%20if%20%28cssRule.type%20%3D%3D%3D%20cssRule.IMPORT_RULE%29%20%7B%20update%28cssRule%29%3B%20%7D%20%7D%29%3B%20return%3B%20%7D%20update%28styleSheet%29%3B%20%7D%29%3B%20%7D%29%28%29%3B/* ./development/reloadcss.js */" ADD_DATE="1324213935" LAST_MODIFIED="1324234042" SHORTCUTURL="reloadcss">Reload CSS</A>
<DD><P>Reload all external style sheets.</P></DD>
<DT><A HREF="javascript:%28function%20text%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20text%20to%20show%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fhtml%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20%27%3Cplaintext%3E%27%20%2B%20s%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/text.js */" ADD_DATE="1305664449" LAST_MODIFIED="1546888419" SHORTCUTURL="text">View as text</A>
<DD><P>Render the specified or selected text as plain text.</P></DD>
<DT><A HREF="javascript:%28function%20title%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20title%3A%27%2C%20document.title%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%20%21%3D%3D%20null%29%20%7B%20document.title%20%3D%20s%3B%20%20Array.from%28document.querySelectorAll%28%27meta%5Bproperty%3D%22og%3Atitle%22%5D%2C%20meta%5Bproperty%3D%22twitter%3Atitle%22%5D%27%29%29.forEach%28%20title%20%3D%3E%20title.setAttribute%28%27content%27%2C%20s%29%20%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/title.js */" ADD_DATE="1328894482" LAST_MODIFIED="1582234118" SHORTCUTURL="title">Set title</A>
<DD><P>Set the document title to the specified text.</P></DD>
<DT><A HREF="javascript:%28function%20urldec%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20text%20to%20URL-decode%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fplain%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20decodeURIComponent%28s%29%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/urldec.js */" ADD_DATE="1306354325" LAST_MODIFIED="1408614016" SHORTCUTURL="urldec">URL-decode</A>
<DD><P>Decode all %XX bytes into a (hopefully) readable string.</P></DD>
<DT><A HREF="javascript:%28function%20urlenc%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20text%20to%20URL-encode%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20s%20%3D%20s.split%28%27%27%29.map%28function%20%28c%29%20%7B%20return%20%27%25%27%20%2B%20%28%270%27%20%2B%20c.charCodeAt%280%29.toString%2816%29%29.slice%28-2%29%3B%20%7D%29.join%28%27%27%29.toUpperCase%28%29%3B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fplain%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20s%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%20%7D%29%28%29%3B/* ./development/urlenc.js */" ADD_DATE="1326749349" LAST_MODIFIED="1546888507" SHORTCUTURL="urlenc">URL-encode</A>
<DD><P>Change every character to its percent-encoded form (%XX), even if they are
URL-safe. (This makes "URL-encode" a bit of a misnomer.)
I use this mainly for pranks. If I want to reply with a link to Google
Images, I will typically obfuscate the search term so as not to give it
away immediately. For example:
https://www.google.com/images?q=cool+story+bro
https://www.google.com/images?q=%63%6F%6F%6C%20%73%74%6F%72%79%20%62%72%6F</P></DD>
</DL>
<DT><H3>Forms</H3>
<DD><P>Manipulate HTML forms.</P>
<DL><P>
<DT><A HREF="javascript:%28function%20checkpass%28%29%20%7B%20%22use%20strict%22%3B%20function%20execute%28document%29%20%7B%20let%20needsStyleSheet%20%3D%20false%3B%20Array.from%28document.querySelectorAll%28%27form%20input%5Btype%3D%22password%22%5D%2C%20form%20input%5Bautocomplete%3D%22new-password%22%5D%27%29%29.forEach%28input%20%3D%3E%20%7B%20if%20%28input.form.xxxJanHasCheckpass%29%20%7B%20return%3B%20%7D%20%20let%20allPasswordInputs%20%3D%20Array.from%28input.form.querySelectorAll%28%27input%5Bautocomplete%3D%22new-password%22%5D%27%29%29%3B%20if%20%28allPasswordInputs.length%20%3C%202%29%20%7B%20allPasswordInputs%20%3D%20Array.from%28input.form.querySelectorAll%28%27input%5Btype%3D%22password%22%5D%27%29%29%3B%20%7D%20if%20%28allPasswordInputs.length%20%3C%202%29%20%7B%20return%3B%20%7D%20let%20firstIndex%20%3D%20allPasswordInputs.length%20-%202%3B%20let%20secondIndex%20%3D%20allPasswordInputs.length%20-%201%3B%20function%20comparePasswords%28%29%20%7B%20if%20%28allPasswordInputs%5BfirstIndex%5D.value%20%3D%3D%3D%20allPasswordInputs%5BsecondIndex%5D.value%29%20%7B%20allPasswordInputs%5BfirstIndex%5D.classList.remove%28%27xxxJanPasswordMismatch%27%29%3B%20allPasswordInputs%5BsecondIndex%5D.classList.remove%28%27xxxJanPasswordMismatch%27%29%3B%20%7D%20else%20%7B%20allPasswordInputs%5BsecondIndex%5D.classList.add%28%27xxxJanPasswordMismatch%27%29%3B%20allPasswordInputs%5BfirstIndex%5D.classList.add%28%27xxxJanPasswordMismatch%27%29%3B%20%7D%20%7D%20allPasswordInputs%5BfirstIndex%5D.addEventListener%28%27input%27%2C%20comparePasswords%29%3B%20allPasswordInputs%5BsecondIndex%5D.addEventListener%28%27input%27%2C%20comparePasswords%29%3B%20comparePasswords%28%29%3B%20input.form.xxxJanHasCheckpass%20%3D%20true%3B%20needsStyleSheet%20%3D%20true%3B%20%7D%29%3B%20%20if%20%28needsStyleSheet%29%20%7B%20let%20styleSheet%20%3D%20document.getElementById%28%27xxxJanCheckpassCss%27%29%3B%20if%20%28%21styleSheet%29%20%7B%20styleSheet%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%3B%20styleSheet.id%20%3D%20%27xxxJanCheckpassCss%27%3B%20styleSheet.textContent%20%3D%20%60%20.xxxJanPasswordMismatch%20%7B%20box-shadow%3A%20none%20%21important%3B%20background%3A%20%23f44%20%21important%3B%20color%3A%20%23fff%20%21important%3B%20%7D%20%60%3B%20document.head.appendChild%28styleSheet%29%3B%20%7D%20%7D%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./forms/checkpass.js */" ADD_DATE="1546888871" LAST_MODIFIED="1581109997" SHORTCUTURL="checkpass">Check passwords</A>
<DD><P>Check whether password and probable password confirmation INPUTs have the
same value.</P></DD>
<DT><A HREF="javascript:%28function%20freeform%28document%29%20%7B%20var%20originalAttributesToPutInTooltip%20%3D%20%7B%20%27name%27%3A%20%27Name%27%2C%20%27id%27%3A%20%27HTML%20element%20ID%27%2C%20%27type%27%3A%20%27Original%20type%27%2C%20%27value%27%3A%20%27Original%20value%27%2C%20%27placeholder%27%3A%20%27Original%20placeholder%27%20%7D%3B%20var%20attributeNamesToRemove%20%3D%20%5B%20%27required%27%2C%20%27disabled%27%2C%20%27readonly%27%2C%20%27min%27%2C%20%27max%27%2C%20%27maxlength%27%2C%20%27pattern%27%20%5D%3B%20var%20allowedInputTypes%20%3D%20%5B%20%27password%27%2C%20%27checkbox%27%2C%20%27radio%27%2C%20%27file%27%2C%20%27submit%27%2C%20%27image%27%2C%20%27reset%27%2C%20%27button%27%20%5D%3B%20%5B%5D.forEach.call%28document.querySelectorAll%28%27input%2C%20textarea%2C%20select%27%29%2C%20function%20%28element%29%20%7B%20var%20tooltipLines%20%3D%20%5B%5D%3B%20%20let%20elementToShow%20%3D%20element%3B%20while%20%28elementToShow%20%26%26%20%28%21elementToShow.offsetWidth%20%7C%7C%20elementToShow.offsetHeight%29%29%20%7B%20const%20elementStyle%20%3D%20elementToShow.ownerDocument.defaultView.getComputedStyle%28element%29%3B%20if%20%28elementStyle.display%20%3D%3D%3D%20%27none%27%29%20%7B%20elementToShow.style.display%20%3D%20%27unset%27%3B%20%7D%20if%20%28elementStyle.visibility%20%3D%3D%3D%20%27hidden%27%29%20%7B%20elementToShow.style.visibility%20%3D%20%27visible%27%3B%20%7D%20elementToShow%20%3D%20elementToShow.parentElement%3B%20%7D%20%20Object.keys%28originalAttributesToPutInTooltip%29.forEach%28function%20%28attrName%29%20%7B%20if%20%28element.hasAttribute%28attrName%29%20%7C%7C%20element%5BattrName%5D%29%20%7B%20var%20attrValue%20%3D%20element.getAttribute%28attrName%29%20%7C%7C%20element%5BattrName%5D%3B%20if%20%28attrValue%20%21%3D%3D%20null%20%26%26%20attrValue%20%21%3D%3D%20%27%27%29%20%7B%20tooltipLines.push%28originalAttributesToPutInTooltip%5BattrName%5D%20%2B%20%27%3A%20%E2%80%9C%27%20%2B%20attrValue%20%2B%20%27%E2%80%9D%27%29%3B%20%7D%20%7D%20%7D%29%3B%20%20attributeNamesToRemove.forEach%28function%20%28attrName%29%20%7B%20if%20%28element.hasAttribute%28attrName%29%20%7C%7C%20element%5BattrName%5D%29%20%7B%20console.log%28%27Freeform%3A%20remove%20%E2%80%9C%27%20%2B%20attrName%20%2B%20%27%E2%80%9D%20attribute%20on%20element%3A%20%27%2C%20element%29%3B%20tooltipLines.push%28%27Removed%20%E2%80%9C%27%20%2B%20attrName%20%2B%20%27%E2%80%9D%20attribute%3B%20was%3A%20%E2%80%9C%27%20%2B%20%28element.getAttribute%28attrName%29%20%7C%7C%20element%5BattrName%5D%29%20%2B%20%27%E2%80%9D%27%29%3B%20delete%20element%5BattrName%5D%3B%20element.removeAttribute%28attrName%29%3B%20%7D%20%7D%29%3B%20if%20%28element.tagName.toUpperCase%28%29%20%3D%3D%3D%20%27INPUT%27%29%20%7B%20if%20%28element.hasAttribute%28%27type%27%29%29%20%7B%20var%20type%20%3D%20element.getAttribute%28%27type%27%29.toLowerCase%28%29%3B%20%20if%20%28type%20%21%3D%3D%20%27%27%20%26%26%20allowedInputTypes.indexOf%28type%29%20%3D%3D%3D%20-1%29%20%7B%20console.log%28%27Freeform%3A%20remove%20%E2%80%9Ctype%E2%80%9D%20attribute%20on%20element%3A%20%27%2C%20element%29%3B%20tooltipLines.push%28%27Removed%20%E2%80%9Ctype%E2%80%9D%20attribute%3B%20was%3A%20%E2%80%9C%27%20%2B%20element.getAttribute%28%27type%27%29%20%2B%20%27%E2%80%9D%27%29%3B%20element.removeAttribute%28%27type%27%29%3B%20%7D%20%20if%20%28type%20%3D%3D%3D%20%27radio%27%20%7C%7C%20type%20%3D%3D%3D%20%27checkbox%27%29%20%7B%20console.log%28%27Freeform%3A%20add%20new%20value%20prompt%20on%20click%20on%20element%3A%20%27%2C%20element%29%3B%20element.addEventListener%28%27click%27%2C%20function%20%28%29%20%7B%20var%20newValue%20%3D%20prompt%28%27New%20value%20for%20element%20%27%20%2B%20%28element.name%20%3F%20%27%E2%80%9C%27%20%2B%20element.name%20%2B%20%27%E2%80%9D%27%20%3A%20%27%5Btype%3D%22%27%20%2B%20type%20%2B%20%27%22%5D%27%29%20%2B%20%27%3A%27%2C%20element.value%29%3B%20if%20%28newValue%20%21%3D%3D%20null%29%20%7B%20element.value%20%3D%20newValue%3B%20%7D%20%7D%29%3B%20%7D%20%20if%20%28type%20%3D%3D%3D%20%27file%27%29%20%7B%20element.removeAttribute%28%27accept%27%29%3B%20%7D%20%7D%20%20if%20%28%21element.hasAttribute%28%27type%27%29%29%20%7B%20var%20textarea%20%3D%20element.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27textarea%27%29%3B%20textarea.name%20%3D%20element.name%3B%20textarea.value%20%3D%20element.value%3B%20textarea.rows%20%3D%201%3B%20if%20%28element.placeholder%29%20%7B%20textarea.placeholder%20%3D%20element.placeholder%3B%20%7D%20if%20%28element.id%29%20%7B%20textarea.id%20%3D%20element.id%3B%20%7D%20element.parentNode.replaceChild%28textarea%2C%20element%29%3B%20element%20%3D%20textarea%3B%20var%20computedStyle%20%3D%20getComputedStyle%28textarea%29%3B%20textarea.style.height%20%3D%20textarea.style.minHeight%20%3D%20parseInt%28computedStyle.paddingTop%20%7C%7C%200%2C%2010%29%20%2B%20parseInt%28computedStyle.lineHeight%20%7C%7C%200%2C%2010%29%20%2B%20parseInt%28computedStyle.paddingBottom%20%7C%7C%200%2C%2010%29%20%2B%20%27px%27%3B%20tooltipLines.push%28%27Changed%20from%20INPUT%20to%20TEXTAREA%27%29%3B%20%7D%20%7D%20else%20if%20%28element.tagName.toUpperCase%28%29%20%3D%3D%3D%20%27SELECT%27%29%20%7B%20%20element.insertBefore%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27option%27%29%2C%20element.firstChild%29%3B%20%20%5B%5D.forEach.call%28element.options%2C%20function%20%28option%29%20%7B%20if%20%28option.hasAttribute%28%27value%27%29%29%20%7B%20var%20oldTooltip%20%3D%20option.title%3B%20var%20newTooltip%20%3D%20%27Original%20value%3A%20%E2%80%9C%27%20%2B%20option.getAttribute%28%27value%27%29%20%2B%20%27%E2%80%9D%27%3B%20option.title%20%3D%20oldTooltip%20%3F%20oldTooltip%20%2B%20%27%5Cn%5Cn%27%20%2B%20newTooltip%20%3A%20newTooltip%3B%20%7D%20%7D%29%3B%20%20element.addEventListener%28%27change%27%2C%20function%20%28event%29%20%7B%20var%20option%20%3D%20element.options%5Belement.selectedIndex%5D%3B%20var%20newValue%20%3D%20prompt%28%27New%20value%20for%20option%20%27%20%2B%20element.selectedIndex%20%2B%20%27%20%28%E2%80%9C%27%20%2B%20%28option.textContent%20%7C%7C%20option.value%29%20%2B%20%27%E2%80%9D%29%3A%27%2C%20option.value%29%3B%20if%20%28newValue%20%21%3D%3D%20null%29%20%7B%20if%20%28newValue%20%21%3D%3D%20option.value%29%20%7B%20option.textContent%20%3D%20newValue%3B%20%7D%20option.value%20%3D%20newValue%3B%20%7D%20%7D%29%3B%20%7D%20%20if%20%28tooltipLines.length%29%20%7B%20var%20oldTooltip%20%3D%20element.title%3B%20var%20newTooltip%20%3D%20tooltipLines.join%28%27%5Cn%27%29%3B%20element.title%20%3D%20oldTooltip%20%3F%20oldTooltip%20%2B%20%27%5Cn%5Cn%27%20%2B%20newTooltip%20%3A%20newTooltip%3B%20%7D%20%7D%29%3B%20%20try%20%7B%20%5B%5D.forEach.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%2C%20function%20%28elem%29%20%7B%20freeform%28elem.contentDocument%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B/* ./forms/freeform.js */" ADD_DATE="1508915517" LAST_MODIFIED="1709653105" SHORTCUTURL="freeform">Freeform</A>
<DD><P>Remove the "required" attribute all form elements, as well as other
attributes like "min"/"max" or "maxlength" that restrict input.</P></DD>
<DT><A HREF="javascript:%28function%20frmblank%28document%29%20%7B%20Array.prototype.slice.call%28document.forms%20%7C%7C%20document.getElementsByTagName%28%27form%27%29%29.forEach%28function%20%28form%29%20%7B%20form.target%20%3D%20%27_blank%27%3B%20Array.prototype.slice.call%28form.querySelectorAll%28%27input%5Btype%3D%22submit%22%5D%2C%20input%5Btype%3D%22image%22%5D%2C%20button%3Anot%28%5Btype%5D%29%2C%20button%5Btype%3D%22submit%22%5D%27%29%29.forEach%28function%20%28submit%29%20%7B%20submit.parentNode.insertBefore%28document.createTextNode%28%27%20%5B_blank%5D%27%29%2C%20submit.nextSibling%29%3B%20%7D%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.prototype.slice.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20frmblank%28elem.contentDocument%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B/* ./forms/frmblank.js */" ADD_DATE="1304688279" LAST_MODIFIED="1308250852" SHORTCUTURL="frmblank">Form _blank</A>
<DD><P>Make all forms open in a new window/tab.</P></DD>
<DT><A HREF="javascript:%28function%20frmcomp%28document%29%20%7B%20%5B%5D.slice.call%28document.forms%29.forEach%28function%20%28form%29%20%7B%20if%20%28form.autocomplete%20%3D%3D%3D%20%27%27%20%7C%7C%20form.autocomplete%20%3D%3D%3D%20%27off%27%29%20%7B%20console.log%28%27Enable%20autocomplete%3A%20enabling%20on%20form%3A%20%27%2C%20form%29%3B%20form.autocomplete%20%3D%20%27on%27%3B%20%7D%20%5B%5D.slice.call%28form.elements%29.forEach%28function%20%28element%29%20%7B%20if%20%28element.autocomplete%20%3D%3D%3D%20%27%27%20%7C%7C%20element.autocomplete%20%3D%3D%3D%20%27off%27%29%20%7B%20console.log%28%27Enable%20autocomplete%3A%20enabling%20on%20element%3A%20%27%2C%20element%29%3B%20element.autocomplete%20%3D%20%27on%27%3B%20%7D%20%7D%29%3B%20%7D%29%3B%20%20try%20%7B%20%5B%5D.slice.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20autocomp%28elem.contentDocument%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B/* ./forms/frmcomp.js */" ADD_DATE="1508915400" LAST_MODIFIED="1521755449" SHORTCUTURL="frmcomp">Enable autocomplete</A>
<DD><P>Enable autocompletion on all forms and elements.</P></DD>
<DT><A HREF="javascript:%28function%20frmfill%28%29%20%7B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20let%20shouldOnlyFillRequired%20%3D%20s.match%28%2F%5E%28--%29%3F%28only%5B%20-%5D%29%3F%28fill%5B%20-%5D%29%3Frequired%28%5B%20-%5Donly%29%3F%24%2F%29%3B%20function%20execute%28document%29%20%7B%20Array.from%28document.querySelectorAll%28%27input%2C%20textarea%2C%20select%27%29%29.forEach%28input%20%3D%3E%20%7B%20%20if%20%28input.value%20%21%3D%3D%20%27%27%29%20%7B%20return%3B%20%7D%20%20if%20%28shouldOnlyFillRequired%20%26%26%20%21%28input.required%20%7C%7C%20input.className.match%28%2Frequired%2Fi%29%29%29%20%7B%20return%3B%20%7D%20%20if%20%28%5B%27hidden%27%2C%20%27file%27%2C%20%27password%27%2C%20%27color%27%5D.indexOf%28input.type%29%20%3E%20-1%29%20%7B%20return%3B%20%7D%20%20if%20%28input.type%20%3D%3D%3D%20%27checkbox%27%20%7C%7C%20input.type%20%3D%3D%3D%20%27radio%27%29%20%7B%20input.checked%20%3D%20true%3B%20return%3B%20%7D%20%20if%20%28input.type%20%3D%3D%3D%20%27email%27%20%7C%7C%20%5Binput.name%2C%20input.id%2C%20input.title%2C%20input.placeholder%5D.join%28%27%20%27%29.match%28%2F%5Cbe-%3Fmail%5Cb%2Fi%29%29%20%7B%20input.value%20%3D%20location.hostname.replace%28%2F%5Ewww%5C.%2F%2C%20%27%27%29%20%2B%20%27%40veryrealemail.com%27%3B%20return%3B%20%7D%20%20if%20%28input.type%20%3D%3D%3D%20%27number%27%20%7C%7C%20input.type%20%3D%3D%3D%20%27range%27%29%20%7B%20input.value%20%3D%20input.min%20%3D%3D%3D%20%27%27%20%3F%201%20%3A%20input.min%3B%20return%3B%20%7D%20%20if%20%28input.type%20%3D%3D%3D%20%27date%27%29%20%7B%20input.valueAsDate%20%3D%20new%20Date%28%29%3B%20return%3B%20%7D%20if%20%28input.type%20%3D%3D%3D%20%27datetime-local%27%20%7C%7C%20input.type%20%3D%3D%3D%20%27datetime%27%29%20%7B%20input.value%20%3D%20new%20Date%28%29.toISOString%28%29.replace%28%2F%5C..%2A%24%2F%2C%20%27%27%29%3B%20return%3B%20%7D%20%20if%20%28input.type%20%3D%3D%3D%20%27time%27%29%20%7B%20input.value%20%3D%20input.min%20%3D%3D%3D%20%27%27%20%3F%20%2712%3A00%27%20%3A%20input.min%3B%20return%3B%20%7D%20%20if%20%28input.labels%20%26%26%20input.labels%5B0%5D%29%20%7B%20input.value%20%3D%20input.labels%5B0%5D.textContent%20.trim%28%29%20%20.replace%28%2F%28%5E%5C%2A%5Cs%2A%29%7C%28%5Cs%2A%5C%2A%24%29%2F%2C%20%27%27%29%20%20.replace%28%2F%5Cs%2A%3A%24%2F%2C%20%27%27%29%3B%20if%20%28input.value%20%21%3D%3D%20%27%27%29%20%7B%20return%3B%20%7D%20%7D%20%20var%20attributes%20%3D%20%5B%20%27placeholder%27%2C%20%27title%27%2C%20%27name%27%2C%20%27id%27%20%5D%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20attributes.length%3B%20i%2B%2B%29%20%7B%20var%20attribute%20%3D%20attributes%5Bi%5D%3B%20if%20%28input%5Battribute%5D%29%20%7B%20input.value%20%3D%20input%5Battribute%5D%3B%20return%3B%20%7D%20%7D%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./forms/frmfill.js */" ADD_DATE="1546889344" LAST_MODIFIED="1546889344" SHORTCUTURL="frmfill">Form fill</A>
<DD><P>Fill the text inputs with their label contents, their placeholders, titles,
names or IDs. Fill other, more specialised inputs, with “sensible” defaults.</P></DD>
<DT><A HREF="javascript:%28function%20frmget%28document%29%20%7B%20Array.prototype.slice.call%28document.forms%20%7C%7C%20document.getElementsByTagName%28%27form%27%29%29.forEach%28function%20%28form%29%20%7B%20form.method%20%3D%20%27get%27%3B%20Array.prototype.slice.call%28form.querySelectorAll%28%27input%5Btype%3D%22submit%22%5D%2C%20input%5Btype%3D%22image%22%5D%2C%20button%3Anot%28%5Btype%5D%29%2C%20button%5Btype%3D%22submit%22%5D%27%29%29.forEach%28function%20%28submit%29%20%7B%20submit.parentNode.insertBefore%28document.createTextNode%28%27%20%5BGET%5D%27%29%2C%20submit.nextSibling%29%3B%20%7D%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.prototype.slice.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20frmget%28elem.contentDocument%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B/* ./forms/frmget.js */" ADD_DATE="1304688279" LAST_MODIFIED="1308250852" SHORTCUTURL="frmget">Form GET</A>
<DD><P>Make all forms use GET.</P></DD>
<DT><A HREF="javascript:%28function%20frmpost%28document%29%20%7B%20Array.prototype.slice.call%28document.forms%20%7C%7C%20document.getElementsByTagName%28%27form%27%29%29.forEach%28function%20%28form%29%20%7B%20form.method%20%3D%20%27post%27%3B%20Array.prototype.slice.call%28form.querySelectorAll%28%27input%5Btype%3D%22submit%22%5D%2C%20input%5Btype%3D%22image%22%5D%2C%20button%3Anot%28%5Btype%5D%29%2C%20button%5Btype%3D%22submit%22%5D%27%29%29.forEach%28function%20%28submit%29%20%7B%20submit.parentNode.insertBefore%28document.createTextNode%28%27%20%5BPOST%5D%27%29%2C%20submit.nextSibling%29%3B%20%7D%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.prototype.slice.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20frmpost%28elem.contentDocument%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B/* ./forms/frmpost.js */" ADD_DATE="1304688279" LAST_MODIFIED="1308250852" SHORTCUTURL="frmpost">Form POST</A>
<DD><P>Make all forms use POST.</P></DD>
<DT><A HREF="javascript:%28function%20showpass%28document%29%20%7B%20Array.prototype.slice.call%28document.querySelectorAll%28%27input%3Anot%28%5Btype%5D%29%2C%20input%5Btype%3D%22text%22%5D%2C%20input%5Btype%3D%22password%22%5D%27%29%29.forEach%28function%20%28input%29%20%7B%20if%20%28input.type%20%3D%3D%3D%20%27password%27%29%20%7B%20input.wasPassword%20%3D%20true%3B%20input.type%20%3D%20%27text%27%3B%20%7D%20else%20if%20%28input.wasPassword%29%20%7B%20input.type%20%3D%20%27password%27%3B%20%7D%20%7D%29%3B%20%20try%20%7B%20Array.prototype.slice.call%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28function%20%28elem%29%20%7B%20showpass%28elem.contentDocument%29%3B%20%7D%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%29%28document%29%3B/* ./forms/showpass.js */" ADD_DATE="1305295397" LAST_MODIFIED="1305295397" SHORTCUTURL="showpass">Show passwords</A>
<DD><P>Convert password inputs to normal text inputs and back again.</P></DD>
</DL>
<DT><H3>Language</H3>
<DD><P>Dictionaries, translators, …</P>
<DL><P>
<DT><H3>Dictionaries</H3>
<DD><P></P>
<DL><P>
<DT><A HREF="javascript:%28function%20ac%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Arch%20Chinese%20dictionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.archchinese.com%2Fchinese_english_dictionary.html%3Ffind%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/ac.js */" ADD_DATE="1306354325" LAST_MODIFIED="1501019672" SHORTCUTURL="ac">Arch Chinese</A>
<DD><P>Look up the specified or selected text in the Arch Chinese dictionary.</P></DD>
<DT><A HREF="javascript:%28function%20dewikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20German%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fde.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/dewikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="dewikt">German Wiktionary</A>
<DD><P>Look up the specified or selected text in the German Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20dict%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20on%20Dictionary.com%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.dictionary.com%2Fbrowse%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/dict.js */" ADD_DATE="1306354325" LAST_MODIFIED="1502633761" SHORTCUTURL="dict">Dictionary.com</A>
<DD><P>Look up the specified or selected text on Dictionary.com.</P></DD>
<DT><A HREF="javascript:%28function%20enwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20English%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fen.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/enwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="enwikt">English Wiktionary</A>
<DD><P>Look up the specified or selected text in the English Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20eswikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Spanish%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fes.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/eswikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1417129757" SHORTCUTURL="eswikt">Spanish Wiktionary</A>
<DD><P>Look up the specified or selected text in the Spanish Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20frwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20French%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Ffr.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/frwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="frwikt">French Wiktionary</A>
<DD><P>Look up the specified or selected text in the French Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20itwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Italian%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fit.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/itwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1417129757" SHORTCUTURL="itwikt">Italian Wiktionary</A>
<DD><P>Look up the specified or selected text in the Italian Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20mw%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20using%20Merriam-Webster%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.merriam-webster.com%2Fdictionary%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/mw.js */" ADD_DATE="1306354325" LAST_MODIFIED="1354134670" SHORTCUTURL="mw">Merriam-Webster</A>
<DD><P>Look up the specified or selected text using Merriam-Webster.</P></DD>
<DT><A HREF="javascript:%28function%20nlwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Dutch%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fnl.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/nlwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="nlwikt">Dutch Wiktionary</A>
<DD><P>Look up the specified or selected text in the Dutch Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20nowikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Norwegian%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fno.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/nowikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="nowikt">Norwegian Wiktionary</A>
<DD><P>Look up the specified or selected text in the Norwegian Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20oed%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Oxford%20English%20dictionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fen.oxforddictionaries.com%2Fdefinition%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/oed.js */" ADD_DATE="1306354325" LAST_MODIFIED="1559233697" SHORTCUTURL="oed">O.E.D.</A>
<DD><P>Look up the specified or selected text in the Oxford English dictionary.</P></DD>
<DT><A HREF="javascript:%28function%20ptwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Portuguese%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fpt.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/ptwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="ptwikt">Portuguese Wiktionary</A>
<DD><P>Look up the specified or selected text in the Portuguese Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20ruwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Russian%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fru.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/ruwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1648119206" SHORTCUTURL="ruwikt">Russian Wiktionary</A>
<DD><P>Look up the specified or selected text in the Russian Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20svwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Swedish%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fsv.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/svwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1417129757" SHORTCUTURL="svwikt">Swedish Wiktionary</A>
<DD><P>Look up the specified or selected text in the Swedish Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20thes%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20on%20Thesaurus.com%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.thesaurus.com%2Fbrowse%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/thes.js */" ADD_DATE="1306354325" LAST_MODIFIED="1502633761" SHORTCUTURL="thes">Thesaurus.com</A>
<DD><P>Look up the specified or selected text on Thesaurus.com.</P></DD>
<DT><A HREF="javascript:%28function%20ud%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Urban%20Dictionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.urbandictionary.com%2Fdefine.php%3Fterm%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/ud.js */" ADD_DATE="1306354325" LAST_MODIFIED="1306354325" SHORTCUTURL="ud">Urban Dictionary</A>
<DD><P>Look up the specified or selected text in the Urban Dictionary.</P></DD>
<DT><A HREF="javascript:%28function%20vd%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Dutch%20Van%20Dale%20dictionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.vandale.nl%2Fgratis-woordenboek%2Fnederlands%2Fbetekenis%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/vd.js */" ADD_DATE="1306354301" LAST_MODIFIED="1350489119" SHORTCUTURL="vd">Van Dale</A>
<DD><P>Look up the specified or selected text in the Dutch Van Dale dictionary.</P></DD>
<DT><A HREF="javascript:%28function%20viwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20Vietnamese%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fvi.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/viwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1375712918" SHORTCUTURL="viwikt">Vietnamese Wiktionary</A>
<DD><P>Look up the specified or selected text in the Vietnamese Wiktionary.</P></DD>
<DT><A HREF="javascript:%28function%20vw%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20%E2%80%9CFlemish%E2%80%9D%20dictionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.vlaamswoordenboek.be%2Fdefinities%2Fsearch%3Fdefinition%5Bq%5D%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/vw.js */" ADD_DATE="1306354325" LAST_MODIFIED="1633640041" SHORTCUTURL="vw">Vlaams Woordenboek</A>
<DD><P>Look up the specified or selected text in the “Flemish” dictionary.</P></DD>
<DT><A HREF="javascript:%28function%20zhwikt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20word%28s%29%20to%20look%20up%20in%20the%20%28Mandarin%29%20Chinese%20Wiktionary%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fzh.wiktionary.org%2Fwiki%2F%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/dictionaries/zhwikt.js */" ADD_DATE="1306354325" LAST_MODIFIED="1476303696" SHORTCUTURL="zhwikt">(Mandarin) Chinese Wiktionary</A>
<DD><P>Look up the specified or selected text in the (Mandarin) Chinese Wiktionary.</P></DD>
</DL>
<DT><H3>Translators</H3>
<DD><P></P>
<DL><P>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272de%27%2C%20languageCodes%3A%20%5B%27de%27%2C%20%27de-DE%27%2C%20%27de-AT%27%2C%20%27de-CH%27%2C%20%27de-LU%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27German%27%5D%2C%20languageNativeNames%3A%20%5B%27Deutsch%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27diese%20Seite%20auf%20Deutsch%27%2C%20%27Version%20auf%20Deutsch%27%2C%20%27Deutsche%20Version%27%5D%2C%20%7D%29%3B/* ./language/translations/2de.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2de">Translate to German</A>
<DD><P>Translate the specified or selected text or URL to German.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the German version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20%20keyword%3A%20%272en%27%2C%20languageCodes%3A%20%5B%27en%27%2C%20%27en-GB%27%2C%20%27en-US%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27English%27%5D%2C%20languageNativeNames%3A%20%5B%27English%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27This%20page%20in%20English%27%2C%20%27Current%20page%20in%20English%27%5D%2C%20%20%7D%29%3B/* ./language/translations/2en.js */" ADD_DATE="1305837263" LAST_MODIFIED="1736946163" SHORTCUTURL="2en">Translate to English</A>
<DD><P>Translate the specified or selected text or URL to English.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the English version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272es%27%2C%20languageCodes%3A%20%5B%27es%27%2C%20%27es-ES%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Spanish%27%5D%2C%20languageNativeNames%3A%20%5B%27espa%C3%B1ol%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27esta%20p%C3%A1gina%20en%20espa%C3%B1ol%27%2C%20%27versi%C3%B3n%20en%20espa%C3%B1ol%27%5D%2C%20%7D%29%3B/* ./language/translations/2es.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2es">Translate to Spanish</A>
<DD><P>Translate the specified or selected text or URL to Spanish.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Spanish version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272fr%27%2C%20languageCodes%3A%20%5B%27fr%27%2C%20%27fr-FR%27%2C%20%27fr-BE%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27French%27%5D%2C%20languageNativeNames%3A%20%5B%27fran%C3%A7ais%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27cette%20page%20en%20fran%C3%A7ais%27%2C%20%27version%20en%20fran%C3%A7ais%27%2C%20%27version%20fran%C3%A7aise%27%2C%20%27version%20francophone%27%5D%2C%20%7D%29%3B/* ./language/translations/2fr.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2fr">Translate to French</A>
<DD><P>Translate the specified or selected text or URL to French.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the French version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272it%27%2C%20languageCodes%3A%20%5B%27it%27%2C%20%27it-IT%27%2C%20%27it-CH%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Italian%27%5D%2C%20languageNativeNames%3A%20%5B%27italiano%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27questa%20pagina%20in%20italiano%27%2C%20%27questo%20sito%20in%20italiano%27%2C%20%27versione%20in%20italiano%27%5D%2C%20%7D%29%3B/* ./language/translations/2it.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2it">Translate to Italian</A>
<DD><P>Translate the specified or selected text or URL to Italian.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Italian version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272nl%27%2C%20languageCodes%3A%20%5B%27nl%27%2C%20%27nl-BE%27%2C%20%27nl-NL%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Dutch%27%5D%2C%20languageNativeNames%3A%20%5B%27Nederlands%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27deze%20pagina%20in%20het%20Nederlands%27%2C%20%27versie%20in%20het%20Nederlands%27%2C%20%27Nederlandse%20versie%27%2C%20%27Nederlandstalige%20versie%27%5D%2C%20%7D%29%3B/* ./language/translations/2nl.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2nl">Translate to Dutch</A>
<DD><P>Translate the specified or selected text or URL to Dutch.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Dutch version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272no%27%2C%20languageCodes%3A%20%5B%27no%27%2C%20%27no-NO%27%2C%20%27nb%27%2C%20%27nb-NO%27%2C%20%27nn%27%2C%20%27nn-NO%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Norwegian%27%5D%2C%20languageNativeNames%3A%20%5B%27Norsk%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27denne%20siden%20p%C3%A5%20norsk%27%2C%20%27denne%20siden%20p%C3%A5%20bokm%C3%A5l%27%2C%20%27denne%20siden%20p%C3%A5%20nynorsk%27%2C%20%27norsk%20versjon%27%2C%20%27bokm%C3%A5lsversjon%27%2C%20%27nynorsk%20versjon%27%2C%20%27versjon%20p%C3%A5%20norsk%27%2C%20%27versjon%20p%C3%A5%20nynorsk%27%2C%20%27versjon%20p%C3%A5%20bokm%C3%A5l%27%5D%2C%20%7D%29%3B/* ./language/translations/2no.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2no">Translate to Norwegian</A>
<DD><P>Translate the specified or selected text or URL to Norwegian.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Norwegian version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272pt%27%2C%20languageCodes%3A%20%5B%27pt%27%2C%20%27pt-PT%27%2C%20%27pt-BR%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Portuguese%27%5D%2C%20languageNativeNames%3A%20%5B%27portugu%C3%AAs%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27esta%20p%C3%A1gina%20em%20portugu%C3%AAs%27%2C%20%27este%20site%20em%20portugu%C3%AAs%27%2C%20%27vers%C3%A3o%20em%20portugu%C3%AAs%27%5D%2C%20%7D%29%3B/* ./language/translations/2pt.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2pt">Translate to Portuguese</A>
<DD><P>Translate the specified or selected text or URL to Portuguese.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Portuguese version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272ru%27%2C%20languageCodes%3A%20%5B%27ru%27%2C%20%27ru-RU%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Russian%27%5D%2C%20languageNativeNames%3A%20%5B%27%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27%D1%8D%D1%82%D0%B0%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BD%D0%B0%20%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%BC%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5%27%2C%20%27%D1%8D%D1%82%D0%BE%D1%82%20%D1%81%D0%B0%D0%B9%D1%82%20%D0%BD%D0%B0%20%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%BC%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5%27%2C%20%27%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%27%5D%2C%20%7D%29%3B/* ./language/translations/2ru.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2ru">Translate to Russian</A>
<DD><P>Translate the specified or selected text or URL to Russian.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Russian version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272sv%27%2C%20languageCodes%3A%20%5B%27sv%27%2C%20%27sv-SE%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Swedish%27%5D%2C%20languageNativeNames%3A%20%5B%27svenska%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27denna%20sida%20p%C3%A5%20svenska%27%2C%20%27svensk%20version%27%2C%20%27version%20p%C3%A5%20svenska%27%5D%2C%20%7D%29%3B/* ./language/translations/2sv.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2sv">Translate to Swedish</A>
<DD><P>Translate the specified or selected text or URL to Swedish.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Swedish version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272vi%27%2C%20languageCodes%3A%20%5B%27vi%27%2C%20%27vi-VN%27%5D%2C%20languageNamesInEnglish%3A%20%5B%27Vietnamese%27%5D%2C%20languageNativeNames%3A%20%5B%27ti%E1%BA%BFng%20Vi%E1%BB%87t%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27trang%20n%C3%A0y%20b%E1%BA%B1ng%20ti%E1%BA%BFng%20Vi%E1%BB%87t%27%2C%20%27phi%C3%AAn%20b%E1%BA%A3n%20ti%E1%BA%BFng%20Vi%E1%BB%87t%27%2C%20%27sang%20ti%E1%BA%BFng%20vi%E1%BB%87t%27%5D%2C%20%7D%29%3B/* ./language/translations/2vi.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2vi">Translate to Vietnamese</A>
<DD><P>Translate the specified or selected text or URL to Vietnamese.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the Vietnamese version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7Bkeyword%2C%20languageCodes%2C%20languageNamesInEnglish%2C%20languageNativeNames%2C%20thisPageInNativeNameTexts%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28%21s%29%20%7B%20%20const%20interLanguageSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%20%60.interlanguage-link%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%23language%20a%5Bhref%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22switch%22%5D%20a%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D-%22%5D%60%2C%20%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60link%5Brel%3D%22alternate%22%5D%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bid%2A%3D%22lang%22%5D%5Bid%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%3D%22%24%7BlanguageCode%7D%22%5D%60%2C%20%60%5Bclass%2A%3D%22lang%22%5D%5Bclass%2A%3D%22elect%22%5D%20a%5Bhreflang%5E%3D%22%24%7BlanguageCode%7D-%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%5E%3D%22lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22%20lang%22%5D%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a.language%5Bhref%2A%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22language%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode%7D%2F%22%5D%60%2C%20%60a%5Bclass%2A%3D%22choose%22%5D%5Bclass%2A%3D%22lang%22%5D%5Bhref%5E%3D%22%2F%24%7BlanguageCode.toLowerCase%28%29%7D%2F%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22this%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%2C%20%60a%5Bhref%5D%5Btitle%24%3D%22current%20page%20in%20%24%7BlanguageNameInEnglish%7D%22%5D%60%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60a%5Bhref%5D%5Btitle%24%3D%22%24%7BthisPageInNativeNameText%7D%22%5D%60%2C%20%29%29%3B%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20interLanguageSelectors.length%3B%20i%2B%2B%29%20%7B%20link%20%3D%20document.querySelector%28interLanguageSelectors%5Bi%5D%29%3B%20if%20%28link%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageSelectors%5Bi%5D%7D%3A%20%60%2C%20link%29%3B%20location%20%3D%20link.href%3B%20return%3B%20%7D%20%7D%20const%20interLanguageXPathSelectors%20%3D%20%5B%5D%3B%20languageCodes.forEach%28languageCode%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageCode%7D%22%5D%60%2C%20%29%29%3B%20languageNamesInEnglish.forEach%28languageNameInEnglish%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNameInEnglish.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20languageNativeNames.forEach%28languageNativeName%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Btranslate%28.%2C%20%22ABC%C3%87DEFGHIJKLMN%C3%91OPQRSTUVWXYZ%D0%A0%D0%A3%D0%A1%D0%9A%D0%98%D0%99%22%2C%20%22abc%C3%A7defghijklmn%C3%B1opqrstuvwxyz%D1%80%D1%83%D1%81%D0%BA%D0%B8%D0%B9%22%29%20%3D%20%22%24%7BlanguageNativeName.toLowerCase%28%29%7D%22%5D%60%2C%20%29%29%3B%20thisPageInNativeNameTexts.forEach%28thisPageInNativeNameText%20%3D%3E%20interLanguageSelectors.push%28%20%60%2F%2Fa%5B%40href%5D%5Bcontains%28.%2C%20%22%24%7BthisPageInNativeNameText%7D%22%29%5D%60%2C%20%29%29%3B%20for%20%28i%20%3D%200%3B%20i%20%3C%20interLanguageXPathSelectors.length%3B%20i%2B%2B%29%20%7B%20var%20xPathResult%20%3D%20document.evaluate%28interLanguageXPathSelectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%20if%20%28xPathResult.snapshotLength%29%20%7B%20console.log%28%60%24%7Bkeyword%7D%3A%20found%20link%20for%20selector%20%24%7BinterLanguageXPathSelectors%5Bi%5D%7D%3A%20%60%2C%20xPathResult.snapshotItem%280%29%29%3B%20location%20%3D%20xPathResult.snapshotItem%280%29.href%3B%20return%3B%20%7D%20%7D%20%20const%20wikimediaDomains%20%3D%20%5B%20%27wikipedia.org%27%2C%20%27wiktionary.org%27%2C%20%27wikibooks.org%27%2C%20%27wikinews.org%27%2C%20%27wikiquote.org%27%2C%20%27wikisource.org%27%2C%20%27wikiversity.org%27%2C%20%27wikivoyage.org%27%2C%20%5D%3B%20const%20possibleWikimediaDomainMatches%20%3D%20location.host.match%28%2F.%2A%3F%5C.%28m%5C.%29%3F%28%5B%5E.%5D%2B%5C.%5B%5E.%5D%2B%24%29%2F%29%3B%20if%20%28possibleWikimediaDomainMatches%29%20%7B%20const%20possibleWikimediaDomain%20%3D%20possibleWikimediaDomainMatches%5B2%5D%3B%20if%20%28wikimediaDomains.indexOf%28possibleWikimediaDomain%29%20%3E%20-1%29%20%7B%20const%20mobileSubdomain%20%3D%20possibleWikimediaDomainMatches%5B1%5D%3B%20const%20targetLanguageDomain%20%3D%20%60%24%7BlanguageCodes%5B0%5D%7D.%24%7BmobileSubdomain%20%3F%3F%20%27%27%7D%24%7BpossibleWikimediaDomain%7D%60%3B%20let%20urlForOtherLanguage%20%3D%20new%20URL%28location%29%3B%20urlForOtherLanguage.hostname%20%3D%20targetLanguageDomain%3B%20%20const%20allHtml%20%3D%20document.documentElement.outerHTML%3B%20let%20wgCanonicalNamespace%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalNamespace%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20if%20%28wgCanonicalNamespace%29%20%7B%20let%20wgCanonicalSpecialPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgCanonicalSpecialPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20let%20wgPageName%20%3D%20JSON.parse%28allHtml.match%28%2F%22wgPageName%22%5Cs%2A%3A%5Cs%2A%28%3F%3CjsonValue%3E%22%5B%5E%22%5D%2B%22%29%2F%29%3F.groups.jsonValue%20%3F%3F%20%27null%27%29%3B%20const%20newPageName%20%3D%20wgCanonicalSpecialPageName%20%3F%20wgPageName.replace%28%2F%5E%5B%5E%3A%5D%2B%3A%5B%5E%5C%2F%5D%2B%2F%2C%20%60%24%7BwgCanonicalNamespace%7D%3A%24%7BwgCanonicalSpecialPageName%7D%60%29%20%3A%20wgPageName.replace%28%2F%5E%5B%5E%3A%2F%5D%2B%2F%2C%20wgCanonicalNamespace%29%3B%20urlForOtherLanguage.pathname%20%3D%20decodeURIComponent%28urlForOtherLanguage.pathname%29.replace%28wgPageName%2C%20newPageName%29%3B%20if%20%28urlForOtherLanguage.searchParams.has%28%27title%27%29%29%20%7B%20urlForOtherLanguage.searchParams.set%28%27title%27%2C%20urlForOtherLanguage.searchParams.get%28%27title%27%29.replace%28wgPageName%2C%20newPageName%29%29%3B%20%7D%20%7D%20console.log%28%60%24%7Bkeyword%7D%3A%20Wikimedia%20special%20case%3A%20going%20to%20the%20corresponding%20page%20on%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20domain%20%24%7BtargetLanguageDomain%7D%3A%20%24%7BurlForOtherLanguage%7D%60%29%3B%20location%20%3D%20urlForOtherLanguage%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20%28location.protocol%20%2B%20%27%27%29.match%28%2F%5Ehttp%2F%29%20%3F%20location%20%2B%20%27%27%20%3A%20%27%27%3B%20%20if%20%28%21s%29%20%7B%20s%20%3D%20prompt%28%60Please%20enter%20your%20text%20to%20translate%20to%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%3A%60%29%3B%20%7D%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20languageCodeForGoogleTranslate%20%3D%20config.languageCodeForGoogleTranslate%20%3F%3F%20languageCodes%5B0%5D%3B%20if%20%28s.match%28%2F%5E%28https%3F%3A%5C%2F%5C%2F%29%28%5B%5E%5Cs.%5D%2B%5C.%29%2B%5B%5E%5Cs.%5D%2B%5C.%3F%28%5C%2F%5CS%2A%29%3F%24%2F%29%29%20%7B%20const%20googleTranslateUrl%20%3D%20new%20URL%28s%29%3B%20const%20isHttp%20%3D%20googleTranslateUrl.protocol%20%3D%3D%3D%20%27http%3A%27%3B%20googleTranslateUrl.protocol%20%3D%20%27https%27%3B%20googleTranslateUrl.host%20%3D%20googleTranslateUrl.host.replaceAll%28%27-%27%2C%20%27--%27%29.replaceAll%28%27.%27%2C%20%27-%27%29%20%2B%20%27.translate.goog%27%3B%20if%20%28isHttp%29%20%7B%20googleTranslateUrl.searchParams.set%28%27_x_tr_sch%27%2C%20%27http%27%29%3B%20%7D%20googleTranslateUrl.searchParams.set%28%27_x_tr_sl%27%2C%20%27auto%27%29%3B%20googleTranslateUrl.searchParams.set%28%27_x_tr_tl%27%2C%20languageCodeForGoogleTranslate%29%3B%20location%20%3D%20googleTranslateUrl%3B%20%7D%20else%20%7B%20location%20%3D%20%60https%3A%2F%2Ftranslate.google.com%2F%3Fop%3Dtranslate%26sl%3Dauto%26tl%3D%24%7BlanguageCodeForGoogleTranslate%7D%26text%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%20%7D%29%28%7B%20keyword%3A%20%272zh%27%2C%20languageCodes%3A%20%5B%27zh%27%2C%20%27zh-CN%27%2C%20%27zh-Hans%27%2C%20%27zh-TW%27%2C%20%27zh-Hant%27%2C%20%27cmn-TW%27%5D%2C%20languageCodeForGoogleTranslate%3A%20%27zh-CN%27%2C%20languageNamesInEnglish%3A%20%5B%27Chinese%27%5D%2C%20languageNativeNames%3A%20%5B%27%E6%B1%89%E8%AF%AD%27%2C%20%27%E6%BC%A2%E8%AA%9E%27%2C%20%27%E5%9C%8B%E8%AA%9E%27%2C%20%27%E8%8F%AF%E8%AA%9E%27%5D%2C%20thisPageInNativeNameTexts%3A%20%5B%27%E4%B8%BA%E4%B8%AD%E6%96%87%27%2C%20%27%E4%B8%AD%E6%96%87%E7%89%88%27%2C%20%27%E7%82%BA%E4%B8%AD%E6%96%87%27%5D%2C%20%7D%29%3B/* ./language/translations/2zh.js */" ADD_DATE="1305837284" LAST_MODIFIED="1736946163" SHORTCUTURL="2zh">Translate to (Mandarin) Chinese</A>
<DD><P>Translate the specified or selected text or URL to (Mandarin) Chinese.
It determines what and how to translate using the following logic:
- If a parameter has been specified, translate that using Google Translate.
- If text has been selected, translate that using Google Translate.
- If the page appears to link to the (Mandarin) Chinese version of itself (e.g. in a
language selector menu), follow that link.
- If the page is accessible via HTTP(S), use its URL with Google Translate.
- Otherwise, prompt the user for text to translate with Google Translate.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
</DL>
<DT><A HREF="javascript:%28function%20shuo%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20text%20to%20speak%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20var%20mp3Url%20%3D%20%27http%3A%2F%2Ftts.cndic.naver.com%2Ftts%2Fmp3ttsV1.cgi%3Fspk_id%3D250%26text_fmt%3D0%26pitch%3D100%26volume%3D200%26speed%3D80%26wrapper%3D0%26enc%3D0%26text%3D%27%20%2B%20encodeURI%28s%29%3B%20new%20Audio%28mp3Url%29.play%28%29.catch%28error%20%3D%3E%20alert%28%27Could%20not%20play%20Naver%E2%80%99s%20text-to-speech.%20This%20can%20have%20many%20causes%2C%20including%20ad%20and%20tracker%20blockers.%5Cn%5CnError%3A%20%27%20%2B%20error%20%2B%20%27%5Cn%5CnOriginal%20text%3A%5Cn%27%20%2B%20s%29%29%3B%20%7D%20%7D%29%28%29%3B/* ./language/shuo.js */" ADD_DATE="1306354325" LAST_MODIFIED="1512248591" SHORTCUTURL="shuo">Shuō (说)</A>
<DD><P>Use Naver’s text-to-speech on the selected (Mandarin Chinese) text.</P></DD>
</DL>
<DT><H3>Navigation</H3>
<DD><P>Get around easier.</P>
<DL><P>
<DT><A HREF="javascript:%28function%20back%28%29%20%7B%20if%20%28history.length%20%3E%201%29%20%7B%20history.back%28%29%3B%20%20window.setTimeout%28goToReferrer%2C%20250%29%3B%20%7D%20else%20%7B%20goToReferrer%28%29%3B%20%7D%20function%20goToReferrer%28%29%20%7B%20if%20%28document.referrer%29%20%7B%20location%20%3D%20document.referrer%3B%20%7D%20%7D%20%7D%29%28%29%3B/* ./navigation/back.js */" ADD_DATE="1305487270" LAST_MODIFIED="1305487270" SHORTCUTURL="back">Go back</A>
<DD><P>Go back to the previous page, or, failing that, to the referring page.</P></DD>
<DT><A HREF="javascript:%28function%20link%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28s%20%26%26%20%21s.match%28%2F%5E%5Ba-zA-Z%5D%5B-%2B.a-zA-Z0-9%5D%2A%3A%2F%29%29%20%7B%20s%20%3D%20%27https%3A%2F%2F%27%20%2B%20s%3B%20%7D%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20function%20normalize%28str%29%20%7B%20return%20str.replace%28%2F%5Cs%5Cs%2B%2Fg%2C%20%27%20%27%29.trim%28%29%3B%20%7D%20var%20titleText%20%3D%20normalize%28s%29%3B%20if%20%28%21titleText%29%20%7B%20var%20possibleTitleTexts%20%3D%20%5B%5D%3B%20var%20metaTitleElement%20%3D%20document.querySelector%28%27meta%5Bproperty%3D%22og%3Atitle%22%5D%2C%20meta%5Bproperty%3D%22twitter%3Atitle%22%5D%2C%20meta%5Bname%3D%22title%22%5D%27%29%3B%20if%20%28metaTitleElement%20%26%26%20metaTitleElement.content%29%20%7B%20possibleTitleTexts.push%28normalize%28metaTitleElement.content%29%29%3B%20%7D%20var%20titleElement%20%3D%20document.querySelector%28%27title%27%29%3B%20if%20%28titleElement%20%26%26%20titleElement.textContent%29%20%7B%20possibleTitleTexts.push%28normalize%28titleElement.textContent%29%29%3B%20%7D%20possibleTitleTexts.push%28normalize%28document.title%29%29%3B%20titleText%20%3D%20possibleTitleTexts.sort%28%28a%2C%20b%29%20%3D%3E%20a.length%20%3C%20b.length%29%5B0%5D%3B%20%7D%20if%20%28%21titleText%29%20%7B%20titleText%20%3D%20location%20%2B%20%27%27%3B%20%7D%20var%20originalIconLink%20%3D%20s%20%7C%7C%20document.querySelector%28%27link%5Brel~%3D%22icon%22%5D%27%29%3B%20%20var%20root%20%3D%20document.createDocumentFragment%28%29.appendChild%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27html%27%29%29%3B%20root.innerHTML%20%3D%20%60%20%3Ctitle%3E%3C%2Ftitle%3E%20%3Clink%20rel%3D%22icon%22%2F%3E%20%3Cstyle%3E%20html%20%7B%20font-family%3A%20%22Calibri%22%2C%20sans-serif%3B%20%7D%20img%20%7B%20max-width%3A%2032px%3B%20max-height%3A%2032px%3B%20%7D%20textarea%20%7B%20width%3A%20100%25%3B%20min-height%3A%2030ex%3B%20padding%3A%201ex%3B%20border%3A%201px%20dotted%20grey%3B%20%7D%20input%5Btype%3D%22url%22%5D%20%7B%20width%3A%20100%25%3B%20%7D%20%3C%2Fstyle%3E%20%3Cp%3E%20%3Cimg%2F%3E%20%3Cspan%3E%3Ca%3E%3C%2Fa%3E%3C%2Fspan%3E%20%3C%2Fp%3E%20%3Cp%3E%20Link%20code%3A%3Cbr%2F%3E%20%3Ctextarea%20rows%3D%2210%22%20cols%3D%2280%22%3E%3C%2Ftextarea%3E%20%3C%2Fp%3E%20%3Cp%20class%3D%22xxxJanExcludeFromDataUri%22%3E%20Data%20URI%20for%20this%20link%20page%3A%3Cbr%2F%3E%20%3Cinput%20type%3D%22url%22%2F%20onfocus%3D%22select%28%29%22%20readonly%3E%20%3C%2Fp%3E%20%3Cp%20class%3D%22xxxJanExcludeFromDataUri%22%3E%20%3Cbutton%3ERestore%20original%20page%3C%2Fbutton%3E%20%3C%2Fp%3E%20%3Cscript%3E%20%28function%20%28%29%20%7B%20const%20textarea%20%3D%20document.querySelector%28%27textarea%27%29%3B%20if%20%28textarea%29%20%7B%20textarea.style.height%20%3D%20textarea.scrollHeight%20%2B%20%27px%27%3B%20%7D%20%7D%29%28%29%3B%20%3C%2Fscript%3E%20%60%3B%20var%20title%20%3D%20root.querySelector%28%27title%27%29%3B%20var%20iconLink%20%3D%20root.querySelector%28%27link%27%29%3B%20var%20styleSheet%20%3D%20root.querySelector%28%27style%27%29%3B%20var%20iconImage%20%3D%20root.querySelector%28%27img%27%29%3B%20var%20link%20%3D%20root.querySelector%28%27a%27%29%3B%20var%20textarea%20%3D%20root.querySelector%28%27textarea%27%29%3B%20%20link.href%20%3D%20s%20%7C%7C%20location%3B%20link.textContent%20%3D%20title.textContent%20%3D%20s%20%7C%7C%20titleText%3B%20var%20domain%20%3D%20%28s%20%26%26%20link.hostname%29%20%7C%7C%20document.domain%20%7C%7C%20location.hostname%3B%20if%20%28domain%29%20%7B%20link.parentNode.insertBefore%28document.createTextNode%28%60%20%5B%24%7Bdomain%7D%5D%60%29%2C%20link.nextSibling%29%3B%20%7D%20%20if%20%28document.referrer%29%20%7B%20var%20viaLink%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27a%27%29%3B%20viaLink.setAttribute%28%27href%27%2C%20document.referrer%29%3B%20viaLink.textContent%20%3D%20viaLink.hostname%20%7C%7C%20viaLink.href%3B%20link.parentNode.parentNode.appendChild%28document.createTextNode%28%27%20%28via%20%27%29%29%3B%20link.parentNode.parentNode.appendChild%28viaLink%29%3B%20link.parentNode.parentNode.appendChild%28document.createTextNode%28%27%29%27%29%29%3B%20%7D%20%20iconLink.href%20%3D%20iconImage.src%20%3D%20originalIconLink%20%26%26%20originalIconLink.href%20%7C%7C%20%27https%3A%2F%2Fwww.google.com%2Fs2%2Ffavicons%3Fdomain%3D%27%20%2B%20%28domain%20%7C%7C%20link.hostname%20%7C%7C%20%27example.com%27%29%3B%20%20textarea.textContent%20%3D%20%27Plain%20text%3A%5Cn%22%27%20%2B%20link.textContent%20%2B%20%27%22%3A%20%27%20%2B%20link.href%3B%20var%20selectedText%20%3D%20getActiveSelection%28%29%3B%20if%20%28selectedText%29%20%7B%20textarea.textContent%20%2B%3D%20%27%5Cn%E2%80%9C%27%20%2B%20selectedText.trim%28%29%20%2B%20%27%E2%80%9D%27%3B%20%7D%20textarea.textContent%20%2B%3D%20%27%5Cn%5CnHTML%3A%5Cn%27%20%2B%20link.parentNode.innerHTML%3B%20textarea.textContent%20%2B%3D%20%27%5Cn%5CnMarkdown%3A%5Cn%5B%27%20%2B%20link.textContent%20%2B%20%27%5D%28%27%20%2B%20link.href%20%2B%20%27%29%27%3B%20%20var%20originalHtml%20%3D%20document.documentElement.outerHTML%3B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fhtml%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20%27%3C%21DOCTYPE%20html%3E%27%20%2B%20root.outerHTML%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%20const%20currTextarea%20%3D%20document.querySelector%28%27textarea%27%29%3B%20%20const%20dataUriInput%20%3D%20document.querySelector%28%27input%5Btype%3D%22url%22%5D%27%29%3B%20function%20updateDataUri%28%29%20%7B%20const%20domCopy%20%3D%20document.documentElement.cloneNode%28true%29%3B%20Array.from%28domCopy.querySelectorAll%28%27.xxxJanExcludeFromDataUri%27%29%29.forEach%28node%20%3D%3E%20node.remove%28%29%29%3B%20domCopy.querySelector%28%27textarea%27%29.textContent%20%3D%20currTextarea.value%3B%20dataUriInput.value%20%3D%20%27data%3Atext%2Fhtml%3Bcharset%3DUTF-8%2C%27%20%2B%20encodeURIComponent%28%27%3C%21DOCTYPE%20html%3E%27%20%2B%20domCopy.outerHTML%29%3B%20%7D%20updateDataUri%28%29%3B%20%20currTextarea.addEventListener%28%27input%27%2C%20updateDataUri%29%3B%20%20var%20button%20%3D%20document.querySelector%28%27button%27%29%3B%20button.textContent%20%3D%20%27Restore%20original%20page%27%3B%20button.onclick%20%3D%20function%20%28%29%20%7B%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fhtml%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20originalHtml%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%3B%20%7D%29%28%29%3B/* ./navigation/link.js */" ADD_DATE="1305323294" LAST_MODIFIED="1607814363" SHORTCUTURL="link">Link this</A>
<DD><P>Show a minimal HTML page linking to the current page.</P></DD>
<DT><A HREF="javascript:%28function%20linksto%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28document.janbmLinksToUrlText%20%3D%3D%3D%20undefined%29%20%7B%20%20document.janbmLinksToUrlText%20%3D%20%27jan.moesen.nu%27%3B%20%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20the%20text%20to%20look%20for%20in%20the%20URLs%3A%27%2C%20document.janbmLinksToUrlText%29%3B%20%7D%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20document.janbmLinksToUrlText%20%3D%20s%3B%20%7D%20%7D%20else%20if%20%28s%20%21%3D%3D%20%27%27%20%26%26%20s%20%21%3D%3D%20document.janbmLinksToUrlText%29%20%7B%20%20document.janbmLinksToUrlText%20%3D%20s%3B%20delete%20document%5B%27janbmLinksToIndex%27%5D%3B%20%7D%20%20var%20overlays%20%3D%20Array.prototype.slice.call%28document.querySelectorAll%28%27div%5Bid%5E%3D%22janbmLinksToOverlay%22%5D%27%29%29%3B%20if%20%28%21overlays.length%29%20%7B%20overlays%20%3D%20%5B%5D%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%204%3B%20i%2B%2B%29%20%7B%20overlays%5Bi%5D%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27div%27%29%3B%20overlays%5Bi%5D.setAttribute%28%27id%27%2C%20%27janbmLinksToOverlay%27%20%2B%20i%29%3B%20%20overlays%5Bi%5D.onclick%20%3D%20function%20%28%29%20%7B%20overlays.forEach%28function%20%28overlay%29%20%7B%20overlay.style.display%20%3D%20%27none%27%3B%20%7D%29%3B%20%7D%3B%20document.body.appendChild%28overlays%5Bi%5D%29%3B%20%7D%3B%20%7D%20document.janbmLinksToIndex%20%3D%20%27janbmLinksToIndex%27%20in%20document%20%3F%20document.janbmLinksToIndex%20%2B%201%20%3A%200%3B%20var%20all%20%3D%20document.querySelectorAll%28%27%5Bhref%2A%3D%22%27%20%2B%20document.janbmLinksToUrlText%20%2B%20%27%22%5D%2C%20%5Bsrc%2A%3D%22%27%20%2B%20document.janbmLinksToUrlText%20%2B%20%27%22%5D%27%29%3B%20if%20%28%21all.length%20%7C%7C%20document.janbmLinksToIndex%20%3E%3D%20all.length%29%20%7B%20%20overlays.forEach%28function%20%28overlay%29%20%7B%20overlay.style.display%20%3D%20%27none%27%3B%20%7D%29%3B%20delete%20document%5B%27janbmLinksToIndex%27%5D%3B%20return%3B%20%7D%20var%20element%20%3D%20all%5Bdocument.janbmLinksToIndex%5D%3B%20if%20%28%21element%29%20%7B%20return%3B%20%7D%20console.debug%28%27Links%20to%3A%20found%20element%3A%20%27%2C%20element%29%3B%20element.scrollIntoView%28%29%3B%20element.focus%28%29%3B%20var%20left%20%3D%200%2C%20top%20%3D%200%2C%20width%20%3D%20element.offsetWidth%2C%20height%20%3D%20element.offsetHeight%3B%20var%20tmpElement%20%3D%20element%3B%20do%20%7B%20left%20%2B%3D%20tmpElement.offsetLeft%3B%20top%20%2B%3D%20tmpElement.offsetTop%3B%20%7D%20while%20%28%28tmpElement%20%3D%20tmpElement.offsetParent%29%29%3B%20if%20%28element.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%27a%27%20%26%26%20element.children.length%20%3D%3D%3D%201%29%20%7B%20%20height%20%3D%20Math.max%28element.offsetHeight%2C%20element.children%5B0%5D.offsetHeight%29%3B%20%7D%20%20var%20overlayStyle%20%3D%20%27display%3A%20block%3B%20position%3A%20absolute%3B%20left%3A%20%7Bleft%7Dpx%3B%20top%3A%20%7Btop%7Dpx%3B%20width%3A%20%7Bwidth%7Dpx%3B%20height%3A%20%7Bheight%7Dpx%3B%20background%3A%20%23333%3B%20opacity%3A%200.85%3B%27%3B%20overlays%5B0%5D.setAttribute%28%27style%27%2C%20overlayStyle%20.replace%28%27%7Bleft%7D%27%2C%200%29%20.replace%28%27%7Btop%7D%27%2C%200%29%20.replace%28%27%7Bwidth%7D%27%2C%20document.documentElement.scrollWidth%29%20.replace%28%27%7Bheight%7D%27%2C%20top%29%20%29%3B%20overlays%5B1%5D.setAttribute%28%27style%27%2C%20overlayStyle%20.replace%28%27%7Bleft%7D%27%2C%200%29%20.replace%28%27%7Btop%7D%27%2C%20top%29%20.replace%28%27%7Bwidth%7D%27%2C%20left%29%20.replace%28%27%7Bheight%7D%27%2C%20height%29%20%29%3B%20overlays%5B2%5D.setAttribute%28%27style%27%2C%20overlayStyle%20.replace%28%27%7Bleft%7D%27%2C%20left%20%2B%20width%29%20.replace%28%27%7Btop%7D%27%2C%20top%29%20.replace%28%27%7Bwidth%7D%27%2C%20document.documentElement.scrollWidth%20-%20width%20-%20left%29%20.replace%28%27%7Bheight%7D%27%2C%20height%29%20%29%3B%20overlays%5B3%5D.setAttribute%28%27style%27%2C%20overlayStyle%20.replace%28%27%7Bleft%7D%27%2C%200%29%20.replace%28%27%7Btop%7D%27%2C%20top%20%2B%20height%29%20.replace%28%27%7Bwidth%7D%27%2C%20document.documentElement.scrollWidth%29%20.replace%28%27%7Bheight%7D%27%2C%20document.documentElement.scrollHeight%20-%20height%20-%20top%29%20%29%3B%20%7D%29%28%29/* ./navigation/linksto.js */" ADD_DATE="1323435623" LAST_MODIFIED="1423641976" SHORTCUTURL="linksto">Links to…</A>
<DD><P>Highlight all links and images with the given text in their URL.</P></DD>
<DT><A HREF="javascript:%28function%20linktitles%28%29%20%7B%20Array.prototype.slice.call%28document.links%29.forEach%28function%20%28link%29%20%7B%20if%20%28link.title.indexOf%28link.href%29%20%3C%200%29%20%7B%20link.title%20%3D%20link.title%20%3F%20link.title%20%2B%20%27%20%5B%27%20%2B%20link.href%20%2B%20%27%5D%27%20%3A%20link.href%3B%20%7D%20%7D%29%3B%20%7D%29%28%29%3B/* ./navigation/linktitles.js */" ADD_DATE="1305973453" LAST_MODIFIED="1305973453" SHORTCUTURL="linktitles">Add link titles</A>
<DD><P>Add the links' HREFs to their tooltips.</P></DD>
<DT><A HREF="javascript:%28function%20next%28%29%20%7B%20var%20symbols%20%3D%20%5B%20%27%3E%3E%27%2C%20%27%C2%BB%27%2C%20%27%E2%86%92%27%2C%20%27%E2%87%92%27%2C%20%27%E2%8E%98%27%20%5D%3B%20var%20keywords%20%3D%20symbols.concat%28%5B%20%27NEXT%27%2C%20%27Next%27%2C%20%27next%27%2C%20%27NEWER%27%2C%20%27Newer%27%2C%20%27newer%27%2C%20%27VOLGENDE%27%2C%20%27Volgende%27%2C%20%27volgende%27%2C%20%27NIEUWER%27%2C%20%27Nieuwer%27%2C%20%27nieuwer%27%2C%20%27PROCHAIN%27%2C%20%27Prochain%27%2C%20%27prochain%27%2C%20%5D%29%3B%20var%20identifiers%20%3D%20%5B%20%27next%27%2C%20%27nextArticle%27%2C%20%27nextPost%27%2C%20%27nextLink%27%2C%20%27navi-next%27%20%5D%3B%20var%20monthNames%20%3D%20%5B%20%27Jan%27%2C%20%27Feb%27%2C%20%27Mar%27%2C%20%27Apr%27%2C%20%27May%27%2C%20%27Jun%27%2C%20%27Jul%27%2C%20%27Aug%27%2C%20%27Sep%27%2C%20%27Oct%27%2C%20%27Nov%27%2C%20%27Dec%27%20%5D%3B%20var%20selectors%3B%20var%20newUrl%3B%20%20selectors%20%3D%20%5B%20%27link%5Brel%3D%22next%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%2C%20a%5Brel%3D%22next%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%20%5D%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27a%23%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20selectors.push%28%27a.%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27a%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%3Anot%28%5Bhref%5E%3D%22javascript%3A%22%5D%29%5Btitle%2A%3D%22%27%20%2B%20text%20%2B%20%27%22%5D%27%29%3B%20selectors.push%28%27%2F%2Fa%5B%40href%5D%5B%40href%20%21%3D%20%22%23%22%5D%5Bnot%28starts-with%28%40href%2C%20%22javascript%3A%22%29%29%5D%5Bcontains%28.%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20and%20string-length%28normalize-space%28substring-before%28.%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%29%29%20%3C%208%5D%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40alt%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%5D%5D%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40src%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%5D%5D%27%29%3B%20%7D%29%3B%20%20function%20processSelectors%28selectors%29%20%7B%20function%20getLastXPathResult%28result%29%20%7B%20return%20result.snapshotItem%28result.snapshotLength%20-%201%29%3B%20%7D%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20selectors.length%3B%20i%2B%2B%29%20%7B%20%20link%20%3D%20selectors%5Bi%5D.substring%280%2C%202%29%20%3D%3D%3D%20%27%2F%2F%27%20%3F%20getLastXPathResult%28document.evaluate%28selectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%29%20%3A%20Array.prototype.slice.call%28document.querySelectorAll%28selectors%5Bi%5D%29%29.pop%28%29%3B%20if%20%28link%29%20%7B%20console.log%28%27Next%20%C2%BB%3A%20Matching%20selector%3A%20%27%20%2B%20selectors%5Bi%5D%20%2B%20%27%5CnFound%20link%3A%20%27%2C%20link%29%3B%20return%20link.href%3B%20%7D%20%7D%20%7D%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20uri%20%3D%20decodeURIComponent%28location.pathname%20%2B%20location.search%20%2B%20location.hash%29%3B%20var%20yearPattern%20%3D%20%2720%5B0-9%5D%5B0-9%5D%27%3B%20var%20monthPattern%20%3D%20monthNames.concat%28%5B%27%28%3F%3A0%3F%5B1-9%5D%29%27%2C%20%27%28%3F%3A1%5B012%5D%29%27%5D%29.join%28%27%7C%27%29%3B%20var%20dayPattern%20%3D%20%27%28%3F%3A%27%20%2B%20%5B%273%5B01%5D%27%2C%20%27%5B12%5D%5B0-9%5D%27%2C%20%270%3F%5B1-9%5D%27%5D.join%28%27%29%7C%28%3F%3A%27%29%20%2B%20%27%29%27%3B%20var%20regexp%20%3D%20new%20RegExp%28%27%28.%2A%3F%5C%5Cb%29%28%27%20%2B%20yearPattern%20%2B%20%27%29%28%5B-%2F_.%5D%3F%29%28%27%20%2B%20monthPattern%20%2B%20%27%29%5C%5C3%28%27%20%2B%20dayPattern%20%2B%20%27%29%28%5B%5E0-9%5D.%2A%29%3F%24%27%29%3B%20var%20matches%3B%20if%20%28%28matches%20%3D%20uri.match%28regexp%29%29%29%20%7B%20var%20prefix%20%3D%20matches%5B1%5D%3B%20var%20year%20%3D%20matches%5B2%5D%3B%20var%20separator%20%3D%20matches%5B3%5D%3B%20var%20month%20%3D%20matches%5B4%5D%3B%20var%20day%20%3D%20matches%5B5%5D%3B%20var%20suffix%20%3D%20typeof%20matches%5B6%5D%20%3D%3D%3D%20%27undefined%27%20%3F%20%27%27%20%3A%20matches%5B6%5D%3B%20var%20newDate%20%3D%20new%20Date%28Date.UTC%28%20parseInt%28year%2C%2010%29%2C%20month.length%20%3D%3D%3D%203%20%3F%20monthNames.indexOf%28month%29%20%3A%20parseInt%28month%2C%2010%29%20-%201%2C%20parseInt%28day%2C%2010%29%20%29%20%2B%2024%20%2A%2060%20%2A%2060%20%2A%201000%29%3B%20var%20newYear%20%3D%20newDate.getUTCFullYear%28%29%3B%20var%20newMonth%20%3D%20month.length%20%3D%3D%3D%203%20%3F%20monthNames%5BnewDate.getUTCMonth%28%29%5D%20%3A%20newDate.getUTCMonth%28%29%20%2B%201%3B%20var%20newDay%20%3D%20newDate.getUTCDate%28%29%3B%20if%20%28newMonth%20%3C%2010%20%26%26%20month.length%20%3D%3D%3D%202%29%20%7B%20newMonth%20%3D%20%270%27%20%2B%20newMonth%3B%20%7D%20if%20%28newDay%20%3C%2010%20%26%26%20day.length%20%3D%3D%3D%202%29%20%7B%20newDay%20%3D%20%270%27%20%2B%20newDay%3B%20%7D%20newUrl%20%3D%20prefix%20%2B%20newYear%20%2B%20separator%20%2B%20newMonth%20%2B%20separator%20%2B%20newDay%20%2B%20suffix%3B%20console.log%28%27Next%20%C2%BB%3A%20Matching%20date%20in%20URL%3A%20%27%2C%20%5Byear%2C%20month%2C%20day%5D%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20if%20%28%28matches%20%3D%20uri.match%28%2F%28.%2A%3F%29%28%5B0-9%5D%2B%29%28%5B%5E0-9%5D%2A%29%24%2F%29%29%29%20%7B%20var%20number%20%3D%20parseInt%28matches%5B2%5D%2C%2010%29%3B%20var%20newNumber%20%3D%20number%20%2B%201%3B%20if%20%28matches%5B2%5D.substring%280%2C%201%29%20%3D%3D%3D%20%270%27%20%26%26%20%28newNumber%20%2B%20%27%27%29.length%20%3C%20matches%5B2%5D.length%29%20%7B%20newNumber%20%3D%20%28Math.pow%2810%2C%20matches%5B2%5D.length%29%20%2B%20%27%27%29.substring%281%20%2B%20%28newNumber%20%2B%20%27%27%29.length%29%20%2B%20newNumber%3B%20%7D%20newUrl%20%3D%20matches%5B1%5D%20%2B%20newNumber%20%2B%20matches%5B3%5D%3B%20console.log%28%27Next%20%C2%BB%3A%20Matching%20number%20in%20URL%3B%20going%20from%20%27%2C%20matches%5B2%5D%2C%20%27%20to%20%27%2C%20newNumber%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20selectors%20%3D%20%5B%5D%3B%20%20symbols.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2F%2A%5Bcontains%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20and%20substring-after%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20%3D%20%22%22%5D%2F%2Fpreceding-sibling%3A%3Aa%27%29%3B%20%7D%29%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27%23%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20selectors.push%28%27.%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20%7D%29%3B%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20numCycles%20%3D%200%3B%20var%20icons%20%3D%20%5B%20%27%E2%97%BB%27%2C%20%27%E2%97%BC%27%20%5D%3B%20if%20%28typeof%20document.janOriginalTitle%20%3D%3D%3D%20%27undefined%27%29%20%7B%20document.janOriginalTitle%20%3D%20document.title%3B%20%7D%20%28function%20flash%28%29%20%7B%20if%20%28numCycles%20%3C%206%29%20%7B%20document.title%20%3D%20icons%5BnumCycles%20%25%20icons.length%5D%20%2B%20%27%20No%20next%20page%3F%20%27%20%2B%20icons%5B%28numCycles%20%2B%201%29%20%25%20icons.length%5D%3B%20window.setTimeout%28flash%2C%20500%29%3B%20%7D%20else%20%7B%20document.title%20%3D%20document.janOriginalTitle%3B%20%7D%20numCycles%2B%2B%3B%20%7D%29%28%29%3B%20%7D%29%28%29%3B/* ./navigation/next.js */" ADD_DATE="1305573563" LAST_MODIFIED="1704227380" SHORTCUTURL="next">Next »</A>
<DD><P>Go to the next page. To do so, this bookmarklet will look:
- for <link rel="next"> or <a rel="next">
- for links whose text contains "Next", ">>", etc.
e.g. <a href="/bla">Next</a>
- for links whose (or their parents') ID or class contains "next"
- at the URL to see if there is a date, and increases that
- at the URL to see if there is a number, and increases that
- for links whose next sibling's text contains "Next", ">>", etc.
e.g. <a href="/bla">Whatever</a> »</P></DD>
<DT><A HREF="javascript:%28function%20prev%28%29%20%7B%20var%20symbols%20%3D%20%5B%20%27%3C%3C%27%2C%20%27%C2%AB%27%2C%20%27%E2%86%90%27%2C%20%27%E2%87%90%27%2C%20%27%E2%8E%97%27%20%5D%3B%20var%20keywords%20%3D%20symbols.concat%28%5B%20%27PREVIOUS%27%2C%20%27Previous%27%2C%20%27previous%27%2C%20%27PREV%21PREVIEW%27%2C%20%27Prev%21Preview%27%2C%20%27prev%21preview%27%2C%20%27OLDER%21FOLDER%27%2C%20%27Older%21Folder%27%2C%20%27older%21folder%27%2C%20%27VORIGE%27%2C%20%27Vorige%27%2C%20%27vorige%27%2C%20%27OUDER%27%2C%20%27Ouder%27%2C%20%27ouder%27%2C%20%27PRECEDENT%27%2C%20%27PR%C3%89C%C3%89DENT%27%2C%20%27Pr%C3%A9c%C3%A9dent%27%2C%20%27pr%C3%A9c%C3%A9dent%27%2C%20%5D%29%3B%20var%20identifiers%20%3D%20%5B%20%27prev%27%2C%20%27previous%27%2C%20%27prevArticle%27%2C%20%27previousArticle%27%2C%20%27prevPost%27%2C%20%27previousPost%27%2C%20%27prevLink%27%2C%20%27previousLink%27%2C%20%27navi-prev%27%20%5D%3B%20var%20monthNames%20%3D%20%5B%20%27Jan%27%2C%20%27Feb%27%2C%20%27Mar%27%2C%20%27Apr%27%2C%20%27May%27%2C%20%27Jun%27%2C%20%27Jul%27%2C%20%27Aug%27%2C%20%27Sep%27%2C%20%27Oct%27%2C%20%27Nov%27%2C%20%27Dec%27%20%5D%3B%20var%20selectors%3B%20var%20newUrl%3B%20%20selectors%20%3D%20%5B%20%27link%5Brel%3D%22prev%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%2C%20a%5Brel%3D%22prev%22%5D%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%20%5D%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27a%23%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20selectors.push%28%27a.%27%20%2B%20idOrClass%20%2B%20%27%3Anot%28%5Bhref%3D%22%23%22%5D%29%27%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20var%20mustContain%20%3D%20text.replace%28%2F%21.%2A%2F%2C%20%27%27%29%3B%20var%20mustNotContain%20%3D%20mustContain%20%21%3D%3D%20text%20%26%26%20text.replace%28%2F.%2A%21%2F%2C%20%27%27%29%3B%20var%20selector%20%3D%20%27%2F%2Fa%5B%40href%5D%5B%40href%20%21%3D%20%22%23%22%5D%5Bnot%28starts-with%28%40href%2C%20%22javascript%3A%22%29%29%5D%5Bcontains%28.%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%20and%20string-length%28normalize-space%28substring-before%28.%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%29%29%20%3C%208%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20selector%20%2B%3D%20%27%5Bnot%28contains%28.%2C%20%22%27%20%2B%20mustNotContain%20%2B%20%27%22%29%29%5D%27%3B%20%7D%20selectors.push%28selector%29%3B%20var%20titleSelector%20%3D%20%27a%5Bhref%5D%3Anot%28%5Bhref%3D%22%23%22%5D%29%3Anot%28%5Bhref%5E%3D%22javascript%3A%22%5D%29%5Btitle%2A%3D%22%27%20%2B%20mustContain%20%2B%20%27%22%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20titleSelector%20%2B%3D%20%27%3Anot%28%5Btitle%2A%3D%22%27%20%2B%20mustNotContain%20%2B%20%27%22%5D%29%27%3B%20%7D%20selectors.push%28titleSelector%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20var%20mustContain%20%3D%20text.replace%28%2F%21.%2A%2F%2C%20%27%27%29%2C%20mustNotContain%20%3D%20mustContain%20%21%3D%3D%20text%20%26%26%20text.replace%28%2F.%2A%21%2F%2C%20%27%27%29%3B%20var%20selector%20%3D%20%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40alt%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%5D%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20selector%20%2B%3D%20%27%5Bnot%28img%5Bcontains%28%40alt%2C%20%22%27%20%2B%20mustNotContain%20%2B%20%27%22%29%5D%29%5D%27%3B%20%7D%20selectors.push%28selector%29%3B%20%7D%29%3B%20%20keywords.forEach%28function%20%28text%29%20%7B%20var%20mustContain%20%3D%20text.replace%28%2F%21.%2A%2F%2C%20%27%27%29%2C%20mustNotContain%20%3D%20mustContain%20%21%3D%3D%20text%20%26%26%20text.replace%28%2F.%2A%21%2F%2C%20%27%27%29%3B%20var%20selector%20%3D%20%27%2F%2Fa%5B%40href%5D%5Bstring%28.%29%20%3D%20%22%22%5D%5Bimg%5Bcontains%28%40src%2C%20%22%27%20%2B%20mustContain%20%2B%20%27%22%29%5D%5D%27%3B%20if%20%28mustNotContain%29%20%7B%20selector%20%2B%3D%20%27%5Bnot%28img%5Bcontains%28%40src%2C%20%22%27%20%2B%20mustNotContain%20%2B%20%27%22%29%5D%29%5D%27%3B%20%7D%20selectors.push%28selector%29%3B%20%7D%29%3B%20%20function%20processSelectors%28selectors%29%20%7B%20function%20getLastXPathResult%28result%29%20%7B%20return%20result.snapshotItem%28result.snapshotLength%20-%201%29%3B%20%7D%20for%20%28var%20link%2C%20i%20%3D%200%3B%20i%20%3C%20selectors.length%3B%20i%2B%2B%29%20%7B%20%20link%20%3D%20selectors%5Bi%5D.substring%280%2C%202%29%20%3D%3D%3D%20%27%2F%2F%27%20%3F%20getLastXPathResult%28document.evaluate%28selectors%5Bi%5D%2C%20document%2C%20null%2C%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%29%20%3A%20Array.prototype.slice.call%28document.querySelectorAll%28selectors%5Bi%5D%29%29.pop%28%29%3B%20if%20%28link%29%20%7B%20console.log%28%27%C2%AB%20Previous%3A%20Matching%20selector%3A%20%27%20%2B%20selectors%5Bi%5D%20%2B%20%27%5CnFound%20link%3A%20%27%2C%20link%29%3B%20return%20link.href%3B%20%7D%20%7D%20%7D%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20uri%20%3D%20decodeURIComponent%28location.pathname%20%2B%20location.search%20%2B%20location.hash%29%3B%20var%20yearPattern%20%3D%20%2720%5B0-9%5D%5B0-9%5D%27%3B%20var%20monthPattern%20%3D%20monthNames.concat%28%5B%27%28%3F%3A0%3F%5B1-9%5D%29%27%2C%20%27%28%3F%3A1%5B012%5D%29%27%5D%29.join%28%27%7C%27%29%3B%20var%20dayPattern%20%3D%20%27%28%3F%3A%27%20%2B%20%5B%273%5B01%5D%27%2C%20%27%5B12%5D%5B0-9%5D%27%2C%20%270%3F%5B1-9%5D%27%5D.join%28%27%29%7C%28%3F%3A%27%29%20%2B%20%27%29%27%3B%20var%20regexp%20%3D%20new%20RegExp%28%27%28.%2A%3F%5C%5Cb%29%28%27%20%2B%20yearPattern%20%2B%20%27%29%28%5B-%2F_.%5D%3F%29%28%27%20%2B%20monthPattern%20%2B%20%27%29%5C%5C3%28%27%20%2B%20dayPattern%20%2B%20%27%29%28%5B%5E0-9%5D.%2A%29%3F%24%27%29%3B%20var%20matches%3B%20if%20%28%28matches%20%3D%20uri.match%28regexp%29%29%29%20%7B%20var%20prefix%20%3D%20matches%5B1%5D%3B%20var%20year%20%3D%20matches%5B2%5D%3B%20var%20separator%20%3D%20matches%5B3%5D%3B%20var%20month%20%3D%20matches%5B4%5D%3B%20var%20day%20%3D%20matches%5B5%5D%3B%20var%20suffix%20%3D%20typeof%20matches%5B6%5D%20%3D%3D%3D%20%27undefined%27%20%3F%20%27%27%20%3A%20matches%5B6%5D%3B%20var%20newDate%20%3D%20new%20Date%28Date.UTC%28%20parseInt%28year%2C%2010%29%2C%20month.length%20%3D%3D%3D%203%20%3F%20monthNames.indexOf%28month%29%20%3A%20parseInt%28month%2C%2010%29%20-%201%2C%20parseInt%28day%2C%2010%29%20%29%20-%2024%20%2A%2060%20%2A%2060%20%2A%201000%29%3B%20var%20newYear%20%3D%20newDate.getUTCFullYear%28%29%3B%20var%20newMonth%20%3D%20month.length%20%3D%3D%3D%203%20%3F%20monthNames%5BnewDate.getUTCMonth%28%29%5D%20%3A%20newDate.getUTCMonth%28%29%20%2B%201%3B%20var%20newDay%20%3D%20newDate.getUTCDate%28%29%3B%20if%20%28newMonth%20%3C%2010%20%26%26%20month.length%20%3D%3D%3D%202%29%20%7B%20newMonth%20%3D%20%270%27%20%2B%20newMonth%3B%20%7D%20if%20%28newDay%20%3C%2010%20%26%26%20day.length%20%3D%3D%3D%202%29%20%7B%20newDay%20%3D%20%270%27%20%2B%20newDay%3B%20%7D%20newUrl%20%3D%20prefix%20%2B%20newYear%20%2B%20separator%20%2B%20newMonth%20%2B%20separator%20%2B%20newDay%20%2B%20suffix%3B%20console.log%28%27%C2%AB%20Previous%3A%20Matching%20date%20in%20URL%3A%20%27%2C%20%5Byear%2C%20month%2C%20day%5D%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20if%20%28%28matches%20%3D%20uri.match%28%2F%28.%2A%3F%29%28%5B0-9%5D%2B%29%28%5B%5E0-9%5D%2A%29%24%2F%29%29%29%20%7B%20var%20number%20%3D%20parseInt%28matches%5B2%5D%2C%2010%29%3B%20var%20newNumber%20%3D%20number%20-%201%3B%20if%20%28matches%5B2%5D.substring%280%2C%201%29%20%3D%3D%3D%20%270%27%20%26%26%20%28newNumber%20%2B%20%27%27%29.length%20%3C%20matches%5B2%5D.length%29%20%7B%20newNumber%20%3D%20%28Math.pow%2810%2C%20matches%5B2%5D.length%29%20%2B%20%27%27%29.substring%281%20%2B%20%28newNumber%20%2B%20%27%27%29.length%29%20%2B%20newNumber%3B%20%7D%20newUrl%20%3D%20matches%5B1%5D%20%2B%20newNumber%20%2B%20matches%5B3%5D%3B%20console.log%28%27%C2%AB%20Previous%3A%20Matching%20number%20in%20URL%3B%20going%20from%20%27%2C%20matches%5B2%5D%2C%20%27%20to%20%27%2C%20newNumber%2C%20%27%5CnCalculated%20URL%3A%20%27%2C%20newUrl%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20selectors%20%3D%20%5B%5D%3B%20%20symbols.forEach%28function%20%28text%29%20%7B%20selectors.push%28%27%2F%2F%2A%5Bcontains%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20and%20substring-after%28text%28%29%2C%20%22%27%20%2B%20text%20%2B%20%27%22%29%20%3D%20%22%22%5D%2F%2Fpreceding-sibling%3A%3Aa%27%29%3B%20%7D%29%3B%20%20identifiers.forEach%28function%20%28idOrClass%29%20%7B%20selectors.push%28%27%23%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20selectors.push%28%27.%27%20%2B%20idOrClass%20%2B%20%27%20%3E%20a%27%29%3B%20%7D%29%3B%20%20if%20%28%28newUrl%20%3D%20processSelectors%28selectors%29%29%29%20%7B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%20var%20numCycles%20%3D%200%3B%20var%20icons%20%3D%20%5B%20%27%E2%97%BB%27%2C%20%27%E2%97%BC%27%20%5D%3B%20if%20%28typeof%20document.janOriginalTitle%20%3D%3D%3D%20%27undefined%27%29%20%7B%20document.janOriginalTitle%20%3D%20document.title%3B%20%7D%20%28function%20flash%28%29%20%7B%20if%20%28numCycles%20%3C%206%29%20%7B%20document.title%20%3D%20icons%5BnumCycles%20%25%20icons.length%5D%20%2B%20%27%20No%20previous%20page%3F%20%27%20%2B%20icons%5B%28numCycles%20%2B%201%29%20%25%20icons.length%5D%3B%20window.setTimeout%28flash%2C%20500%29%3B%20%7D%20else%20%7B%20document.title%20%3D%20document.janOriginalTitle%3B%20%7D%20numCycles%2B%2B%3B%20%7D%29%28%29%3B%20%7D%29%28%29%3B/* ./navigation/prev.js */" ADD_DATE="1305573563" LAST_MODIFIED="1704227380" SHORTCUTURL="prev">« Previous</A>
<DD><P>Go to the previous page. To do so, this bookmarklet will look:
- for <link rel="prev"> or <a rel="prev">
- for links whose text contains "Previous", ">>", etc.
e.g. <a href="/bla">Previous</a>
- for links whose (or their parents') ID or class contains "prev"
- at the URL to see if there is a date, and increases that
- at the URL to see if there is a number, and increases that
- for links whose previous sibling's text contains "Previous", ">>", etc.
e.g. « <a href="/bla">Whatever</a></P></DD>
<DT><A HREF="javascript:%28function%20refer%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20destination%20URL%3A%27%2C%20location%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20s%3B%20%7D%20%7D%29%28%29%3B/* ./navigation/refer.js */" ADD_DATE="1306052662" LAST_MODIFIED="1308257829" SHORTCUTURL="refer">Surf with referrer</A>
<DD><P>Go to the specified or selected URL using the current page as the referrer.</P></DD>
<DT><A HREF="javascript:%28function%20relink%28%29%20%7B%20%27use%20strict%27%3B%20%20function%20execute%28document%29%20%7B%20let%20thisDomain%20%3D%20location.protocol%20%2B%20%27%2F%2F%27%20%2B%20location.hostname%20%2B%20%27%2F%27%3B%20Array.from%28document.querySelectorAll%28%27a%5Bhref%5D%3Anot%28%5Bhref%5E%3D%22%2F%22%5D%29%3Anot%28%5Bhref%5E%3D%22%27%20%2B%20thisDomain%20%2B%20%27%22%5D%29%27%29%29.forEach%28a%20%3D%3E%20%7B%20let%20newA%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27a%27%29%3B%20newA.href%20%3D%20a.href%3B%20newA.setAttribute%28%27class%27%2C%20a.getAttribute%28%27class%27%29%29%3B%20newA.innerHTML%20%3D%20a.innerHTML%3B%20a.replaceWith%28newA%29%3B%20console.log%28%27relink%3A%20Replaced%27%2C%20a%2C%20%27with%27%2C%20newA%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./navigation/relink.js */" ADD_DATE="1555057059" LAST_MODIFIED="1569497845" SHORTCUTURL="relink">Re-link</A>
<DD><P>Replace all external links with new “A” elements with the same @href,
handlers.
Mainly useful for Google search result pages when trying to copy links
directly off those pages, so Google does not obfuscate them with tracker
garbage (which happens on click, before the link URL has been copied).</P></DD>
<DT><A HREF="javascript:%28function%20rmh%28%29%20%7B%20var%20oldLocation%20%3D%20%28%27%27%20%2B%20location%29%3B%20var%20newLocation%20%3D%20oldLocation.replace%28%2F%23.%2A%2F%2C%20%27%27%29%3B%20if%20%28newLocation%20%21%3D%3D%20oldLocation%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28%28%27%20%27%20%2B%20s%20%2B%20%27%20%27%29.match%28%2F%20--%28no%7Cskip%29-reload%20%2F%29%29%20%7B%20history.pushState%28%7B%7D%2C%20document.title%2C%20newLocation%29%3B%20%7D%20else%20%7B%20location%20%3D%20newLocation%3B%20%7D%20%7D%20%7D%29%28%29%3B/* ./navigation/rmh.js */" ADD_DATE="1452761176" LAST_MODIFIED="1452783276" SHORTCUTURL="rmh">Remove hash</A>
<DD><P>Remove the hash from the current page's URL, but keep the query string.</P></DD>
<DT><A HREF="javascript:%28function%20rmhq%28%29%20%7B%20var%20oldLocation%20%3D%20%28%27%27%20%2B%20location%29%3B%20var%20newLocation%20%3D%20oldLocation.replace%28%2F%5B%23%3F%5D.%2A%2F%2C%20%27%27%29%3B%20if%20%28newLocation%20%21%3D%3D%20oldLocation%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28%28%27%20%27%20%2B%20s%20%2B%20%27%20%27%29.match%28%2F%20--%28no%7Cskip%29-reload%20%2F%29%29%20%7B%20history.pushState%28%7B%7D%2C%20document.title%2C%20newLocation%29%3B%20%7D%20else%20%7B%20location%20%3D%20newLocation%3B%20%7D%20%7D%20%7D%29%28%29%3B/* ./navigation/rmhq.js */" ADD_DATE="1452761210" LAST_MODIFIED="1452783276" SHORTCUTURL="rmhq">Remove hash and query</A>
<DD><P>Remove the hash and query string from the current page's URL.
This is the same as "rmqh".</P></DD>
<DT><A HREF="javascript:%28function%20rmq%28%29%20%7B%20var%20oldLocation%20%3D%20%28%27%27%20%2B%20location%29%3B%20var%20newLocation%20%3D%20oldLocation.replace%28%2F%5E%28%5B%5E%23%5D%2A%29%5C%3F%5B%5E%23%5D%2A%28%23.%2A%29%3F%2F%2C%20%27%241%242%27%29%3B%20if%20%28newLocation%20%21%3D%3D%20oldLocation%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28%28%27%20%27%20%2B%20s%20%2B%20%27%20%27%29.match%28%2F%20--%28no%7Cskip%29-reload%20%2F%29%29%20%7B%20history.pushState%28%7B%7D%2C%20document.title%2C%20newLocation%29%3B%20%7D%20else%20%7B%20location%20%3D%20newLocation%3B%20%7D%20%7D%20%7D%29%28%29%3B/* ./navigation/rmq.js */" ADD_DATE="1320783341" LAST_MODIFIED="1452783276" SHORTCUTURL="rmq">Remove query</A>
<DD><P>Remove the query string from the current page's URL, but keep the hash.</P></DD>
<DT><A HREF="javascript:%28function%20rmqh%28%29%20%7B%20var%20oldLocation%20%3D%20%28%27%27%20%2B%20location%29%3B%20var%20newLocation%20%3D%20oldLocation.replace%28%2F%5B%23%3F%5D.%2A%2F%2C%20%27%27%29%3B%20if%20%28newLocation%20%21%3D%3D%20oldLocation%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20if%20%28%28%27%20%27%20%2B%20s%20%2B%20%27%20%27%29.match%28%2F%20--%28no%7Cskip%29-reload%20%2F%29%29%20%7B%20history.pushState%28%7B%7D%2C%20document.title%2C%20newLocation%29%3B%20%7D%20else%20%7B%20location%20%3D%20newLocation%3B%20%7D%20%7D%20%7D%29%28%29%3B/* ./navigation/rmqh.js */" ADD_DATE="1452761210" LAST_MODIFIED="1452783276" SHORTCUTURL="rmqh">Remove query and hash</A>
<DD><P>Remove the query string and hash from the current page's URL.
This is the same as "rmhq".</P></DD>
<DT><A HREF="javascript:%28function%20%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20var%20level%20%3D%20parseInt%28s%2C%2010%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20if%20%28isNaN%28level%29%29%20%7B%20return%20location%20%3D%20%27%2F%27%20%2B%20s%3B%20%7D%20else%20%7B%20level%20%3D%20Math.max%280%2C%20level%20%7C%7C%200%29%3B%20%7D%20%7D%20var%20parts%20%3D%20document.location.pathname.split%28%27%2F%27%29%3B%20var%20newParts%20%3D%20parts.slice%280%2C%20%28level%20%7C%7C%200%29%20%2B%201%29%3B%20if%20%28newParts.length%20%3C%20parts.length%29%20%7B%20newParts.push%28%27%27%29%3B%20%7D%20location%20%3D%20newParts.join%28%27%2F%27%29%3B%20%7D%29%28%29%3B/* ./navigation/root.js */" ADD_DATE="1322603740" LAST_MODIFIED="1403957945" SHORTCUTURL="/">Go to the root</A>
<DD><P>Go to the root directory, or the Nth directory starting from the root.
For example, when you are on "https://www.example.com/foo/bar/baz":
- executing "/" goes to "https://www.example.com/"
- executing "/ 1" goes to "https://www.example.com/foo/"
- executing "/ 2" goes to "https://www.example.com/foo/bar/"
- executing "/ quux" goes to "https://www.example.com/quux"</P></DD>
<DT><A HREF="javascript:%28function%20unarchive%28%29%20%7B%20%27use%20strict%27%3B%20%20function%20execute%28document%29%20%7B%20const%20isOnArchiveDotOrg%20%3D%20document.location.host%20%3D%3D%3D%20%27web.archive.org%27%3B%20let%20wbASelectors%3B%20if%20%28isOnArchiveDotOrg%29%20%7B%20wbASelectors%20%3D%20%5B%20%20%27a%5Bhref%5D%27%20%5D%3B%20%7D%20else%20%7B%20wbASelectors%20%3D%20%5B%20%27a%5Bhref%5E%3D%22%2F%2Fweb.archive.org%2Fweb%2F%22%5D%27%2C%20%27a%5Bhref%5E%3D%22http%3A%2F%2Fweb.archive.org%2Fweb%2F%22%5D%27%2C%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fweb.archive.org%2Fweb%2F%22%5D%27%20%5D%3B%20%7D%20%20Array.from%28document.querySelectorAll%28wbASelectors.join%28%27%2C%20%27%29%29%29.forEach%28a%20%3D%3E%20%7B%20let%20originalUri%20%3D%20a.href%3B%20if%20%28%21isOnArchiveDotOrg%29%20%7B%20originalUri%20%3D%20originalUri.replace%28%2F%5Ehttps%3F%5C%3A%5C%2F%5C%2Fweb.archive%5C.org%5C%2Fweb%5C%2F%28%5B%5E%5C%2F%5D%2B%5C%2F%29%3F%28https%3F%3A%5C%2F%5C%2F.%2A%29%2F%2C%20%27%242%27%29%3B%20%7D%20a.setAttributeNS%28%27%27%2C%20%27href%27%2C%20originalUri%29%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./navigation/unarchive.js */" ADD_DATE="1578508667" LAST_MODIFIED="1632482362" SHORTCUTURL="unarchive">Unarchive Wayback Machine links</A>
<DD><P>Rewrite links to the Internet Archive Wayback Machine’s saved pages back to
the original URIs.</P></DD>
<DT><A HREF="javascript:%28function%20untrack%28%29%20%7B%20%27use%20strict%27%3B%20%20const%20parameterPatterns%20%3D%20%5B%20%20%27utm_%5B%5E%3D%5D%2A%27%2C%20%27gclid%27%2C%20%27gclsrc%27%2C%20%27dclid%27%2C%20%27_ga%27%2C%20%27_gl%27%2C%20%27gad_source%27%2C%20%27gbraid%27%2C%20%27wbraid%27%2C%20%27srsltid%27%2C%20%20%27fbclid%27%2C%20%27__cft__%28%28%255B%7C%5C%5C%5B%29%5B%5E%3D%5D%2A%29%3F%27%2C%20%27__tn__%27%2C%20%27__eep__%27%2C%20%20%27igsh%27%2C%20%27igshid%27%2C%20%27ig_rid%27%2C%20%20%27twclid%27%2C%20%20%27msclkid%27%2C%20%20%27mc_eid%27%2C%20%20%27__hsfp%27%2C%20%27__hssc%27%2C%20%27__hstc%27%2C%20%27_hsenc%27%2C%20%27hsCtaTracking%27%2C%20%20%27__s%27%2C%20%20%27mkt_tok%27%2C%20%20%27ml_subscriber%27%2C%20%27ml_subscriber_hash%27%2C%20%20%27oly_anon_id%27%2C%20%27oly_enc_id%27%2C%20%20%27omnisendContactID%27%2C%20%20%27obOrigUrl%27%2C%20%27outbrainclickid%27%2C%20%20%27matomo_campaign%27%2C%20%27mtm_campaign%27%2C%20%27mtm_cid%27%2C%20%27mtm_content%27%2C%20%27mtm_group%27%2C%20%27mtm_keyword%27%2C%20%27mtm_kwd%27%2C%20%27mtm_medium%27%2C%20%27mtm_placement%27%2C%20%27mtm_source%27%2C%20%27piwik_campaign%27%2C%20%27piwik_kwd%27%2C%20%27pk_campaign%27%2C%20%27pk_cid%27%2C%20%27pk_content%27%2C%20%27pk_cpn%27%2C%20%27pk_keyword%27%2C%20%27pk_kwd%27%2C%20%27pk_medium%27%2C%20%27pk_source%27%2C%20%20%27__cf_chl_jschl_tk__%27%2C%20%27__cf_chl_captcha_tk__%27%2C%20%20%27rb_clickid%27%2C%20%20%27s_cid%27%2C%20%27ss_%5B%5E%3D%5D%2A%27%2C%20%20%27vero_conv%27%2C%20%27vero_id%27%2C%20%20%27wickedid%27%2C%20%20%27yclid%27%2C%20%27ymclid%27%2C%20%27_openstat%27%2C%20%20%27zanpid%27%20%5D%3B%20const%20hrefRegexp%20%3D%20new%20RegExp%28%27%5B%3F%26%5D%28%27%20%2B%20parameterPatterns.join%28%27%7C%27%29%20%2B%20%27%29%3D%27%29%3B%20const%20parameterRegexp%20%3D%20new%20RegExp%28%27%5E%28%27%20%2B%20parameterPatterns.join%28%27%7C%27%29%20%2B%20%27%29%24%27%29%3B%20%20const%20uriPatternsForWhichToDeleteAllParameters%20%3D%20%5B%20%20%20%2Fhttps%3F%3A%5C%2F%5C%2F%28www%5C.%29%3Fnytimes%5C.com%5C%2F%5B%5E%3F%5D%2A%5C.html%2F%2C%20%20%20%2Fhttps%3F%3A%5C%2F%5C%2F%28www%5C.%29%3Ftiktok%5C.com%5C%2F%5B%5E%3F%5D%2A%5C%2Fvideo%5C%2F%5Cd%2B%2F%2C%20%20%20%2Fhttps%3F%3A%5C%2F%5C%2F%28www%5C.%29%3F%28twitter%7Cx%29%5C.com%5C%2F.%2A%2F%2C%20%5D%3B%20const%20hrefRegexpForWhichToDeleteAllParameters%20%3D%20new%20RegExp%28%27%28%3F%3A%27%20%2B%20uriPatternsForWhichToDeleteAllParameters%20.map%28regexp%20%3D%3E%20regexp.toString%28%29.replace%28%2F%5E%5C%2F%28.%2A%29%5C%2F%5B%5E%5C%2F%5D%2A%24%2F%2C%20%27%241%27%29%29%20.join%28%27%7C%27%29%20%2B%20%27%29%5C%5C%3F%27%29%3B%20%20const%20linkRedirectors%20%3D%20%7B%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fl.facebook.com%2Fl.php%3F%22%5D%2C%20a%5Bhref%5E%3D%22https%3A%2F%2Flm.facebook.com%2Fl.php%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27u%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fl.instagram.com%2F%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27u%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.google.%22%5D%5Bhref%2A%3D%22%2Furl%3F%22%5D%2C%20a%5Bhref%5E%3D%22http%3A%2F%2Fwww.google.%22%5D%5Bhref%2A%3D%22%2Furl%3F%22%5D%2C%20a%5Bhref%5E%3D%22%2Furl%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20%20if%20%28a.getAttribute%28%27href%27%29.indexOf%28%27%2Furl%3F%27%29%20%3D%3D%3D%200%20%26%26%20%21a.hostname.match%28%2F%5Ewww%5C.google%5C.%28com%3F%5C.%29%3F%5B%5E.%5D%2B%24%2F%29%29%20%7B%20return%3B%20%7D%20const%20usp%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3B%20%20a.href%20%3D%20usp.get%28%27url%27%29%20%3F%3F%20usp.get%28%27q%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Ftranslate.google.%22%5D%5Bhref%2A%3D%22%2Fwebsite%3F%22%5D%5Bhref%2A%3D%22u%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20usp%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3B%20a.href%20%3D%20usp.get%28%27u%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fredirect%3F%22%5D%5Bhref%2A%3D%22q%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20let%20targetUri%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27q%27%29%3B%20if%20%28%21targetUri%29%20%7B%20return%3B%20%7D%20%20if%20%28%21targetUri.match%28%2F%5E%5B%5E%5C%2F%5D%2B%3A%2F%29%29%20%7B%20targetUri%20%3D%20%60https%3A%2F%2F%24%7BtargetUri%7D%60%3B%20%7D%20a.href%20%3D%20targetUri%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.youtube.com%2Fwatch%3F%22%5D%5Bhref%2A%3D%22v%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20url%20%3D%20new%20URL%28a.href%29%3B%20const%20usp%20%3D%20new%20URLSearchParams%28url.search%29%3B%20let%20videoId%20%3D%20usp%3F.get%28%27v%27%29%3B%20if%20%28%21videoId%29%20%7B%20return%3B%20%7D%20const%20newUsp%20%3D%20new%20URLSearchParams%28%29%3B%20usp.forEach%28%28value%2C%20key%29%20%3D%3E%20%7B%20if%20%28key%20%3D%3D%3D%20%27v%27%20%7C%7C%20key%20%3D%3D%3D%20%27t%27%29%20%7B%20newUsp.set%28key%2C%20value%29%3B%20%7D%20%7D%29%3B%20url.host%20%3D%20%27yewtu.be%27%3B%20url.search%20%3D%20newUsp.toString%28%29%3B%20a.href%20%3D%20url%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Ft.co%2F%22%5D%2C%20a%5Bhref%5E%3D%22http%3A%2F%2Ft.co%2F%22%5D%27%3A%20a%20%3D%3E%20%7B%20%20let%20possibleUri%20%3D%20a.textContent%3B%20%20if%20%28a.dataset.testid%20%3D%3D%3D%20%27UserUrl%27%20%26%26%20possibleUri.indexOf%28%27%E2%80%A6%27%29%20%3D%3D%3D%20-1%29%20%7B%20if%20%28possibleUri.indexOf%28%27%2F%27%29%20%3D%3D%3D%20-1%29%20%7B%20possibleUri%20%2B%3D%20%27%2F%27%3B%20%7D%20if%20%28%21possibleUri.match%28%2F%5Ehttps%3F%3A%5C%2F%5C%2F%2F%29%29%20%7B%20possibleUri%20%3D%20%60%24%7Ba.protocol%7D%2F%2F%24%7BpossibleUri%7D%60%3B%20%7D%20%7D%20possibleUri%20%3D%20possibleUri.replace%28%2F%28%5E%E2%80%A6%7C%E2%80%A6%24%29%2Fg%2C%20%27%27%29%3B%20if%20%28%21possibleUri.match%28%2F%5Ehttps%3F%3A%5C%2F%5C%2F%2F%29%29%20%7B%20return%3B%20%7D%20a.href%20%3D%20a.textContent%20%3D%20possibleUri%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.linkedin.com%2Fredir%2Fredirect%3F%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fwww.linkedin.com%2Fsignup%2Fcold-join%3F%22%5D%5Bhref%2A%3D%22session_redirect%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27session_redirect%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fflight.beehiiv.net%2Fv2%2Fclicks%2FeyJ%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20parts%20%3D%20a.pathname.split%28%27.%27%29%3B%20try%20%7B%20const%20originalUrl%20%3D%20JSON.parse%28atob%28parts%5B1%5D.replaceAll%28%27_%27%2C%20%27%2F%27%29.replaceAll%28%27-%27%2C%20%27%2B%27%29%29%29.url%3B%20if%20%28originalUrl%29%20%7B%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27untrack%3A%20error%20while%20decoding%20URL%20for%20link%3A%20%27%2C%20a%2C%20e%29%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%2A%3D%22app.link%22%5D%5Bhref%2A%3D%22fallback_url%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27%24fallback_url%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fout.reddit.com%2F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20a.href%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fapi.ffm.to%2Fsl%2Fe%2Fc%2F%22%5D%5Bhref%2A%3D%22cd%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20try%20%7B%20const%20originalUrl%20%3D%20JSON.parse%28atob%28new%20URL%28a.href%29.searchParams.get%28%27cd%27%29.replaceAll%28%27_%27%2C%20%27%2F%27%29.replaceAll%28%27-%27%2C%20%27%2B%27%29%29%29.destUrl%3B%20if%20%28originalUrl%29%20%7B%20if%20%28a.textContent.trim%28%29%20%3D%3D%3D%20a.href%29%20%7B%20a.textContent%20%3D%20originalUrl%3B%20%7D%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27untrack%3A%20error%20while%20decoding%20URL%20for%20link%3A%20%27%2C%20a%2C%20e%29%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Furldefense.proofpoint.com%2Fv2%2Furl%3F%22%5D%5Bhref%2A%3D%22u%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20try%20%7B%20const%20originalUrl%20%3D%20decodeURIComponent%28new%20URL%28a.href%29.searchParams.get%28%27u%27%29.replaceAll%28%27_%27%2C%20%27%2F%27%29.replaceAll%28%27-%27%2C%20%27%25%27%29%29%3B%20if%20%28originalUrl%29%20%7B%20if%20%28a.textContent.trim%28%29%20%3D%3D%3D%20a.href%29%20%7B%20a.textContent%20%3D%20originalUrl%3B%20%7D%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27untrack%3A%20error%20while%20decoding%20URL%20for%20link%3A%20%27%2C%20a%2C%20e%29%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fdisq.us%2Furl%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%2C%20a%5Bhref%5E%3D%22http%3A%2F%2Fdisq.us%2Furl%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20let%20originalUrl%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%3B%20if%20%28originalUrl%29%20%7B%20originalUrl%20%3D%20originalUrl.replace%28%2F%3A%5B%5E%3A%5C%2F%5D%2B%24%2F%2C%20%27%27%29%3B%20a.href%20%3D%20originalUrl%3B%20%7D%20%7D%2C%20%20%27a%5Bhref%5E%3D%22https%3A%2F%2Fgate.sc%2F%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%2C%20a%5Bhref%5E%3D%22https%3A%2F%2Fgate.sc%3F%22%5D%5Bhref%2A%3D%22url%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20let%20originalUrl%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3F.get%28%27url%27%29%3B%20if%20%28%21originalUrl%29%20%7B%20return%3B%20%7D%20if%20%28a.textContent.trim%28%29%20%3D%3D%3D%20a.href%20%7C%7C%20%28a.textContent.includes%28%27%E2%80%A6%27%29%20%26%26%20originalUrl.includes%28a.textContent.split%28%27%E2%80%A6%27%29%5B0%5D%29%29%29%20%7B%20a.textContent%20%3D%20originalUrl%3B%20%7D%20a.href%20%3D%20originalUrl%3B%20%7D%2C%20%20%27a%5Bhref%2A%3D%22%2FExternalLinkInterstitial%3F%22%5D%5Bhref%2A%3D%22redirectTo%3D%22%5D%27%3A%20a%20%3D%3E%20%7B%20const%20usp%20%3D%20new%20URLSearchParams%28new%20URL%28a.href%29.search%29%3B%20a.href%20%3D%20usp.get%28%27redirectTo%27%29%20%3F%3F%20a.href%3B%20%7D%2C%20%20%27a%5Bdata-xxx-jan-original-href%5D%27%3A%20a%20%3D%3E%20%7B%20if%20%28a.href%20%21%3D%3D%20a.dataset.xxxJanOriginalHref%29%20%7B%20a.href%20%3D%20a.dataset.xxxJanOriginalHref%3B%20%7D%20%7D%20%7D%3B%20%20function%20cleanQueryString%28queryString%29%20%7B%20return%20new%20URLSearchParams%28%20Array.from%28new%20URLSearchParams%28queryString%29%29%20.filter%28%28%5Bkey%2C%20value%5D%29%20%3D%3E%20%21key.match%28parameterRegexp%29%29%20%29.toString%28%29%3B%20%7D%20%20function%20cleanQueryStringForHrefAttribute%28element%29%20%7B%20try%20%7B%20const%20textEqualsUrl%20%3D%20element.textContent.trim%28%29%20%3D%3D%3D%20element.href.trim%28%29%3B%20const%20oldUrl%20%3D%20new%20URL%28element.href%29%3B%20const%20newUrl%20%3D%20new%20URL%28element.href%29%3B%20newUrl.search%20%3D%20cleanQueryString%28oldUrl.search%29%3B%20if%20%28oldUrl.toString%28%29%20%21%3D%3D%20newUrl.toString%28%29%29%20%7B%20element.href%20%3D%20newUrl%3B%20if%20%28textEqualsUrl%29%20%7B%20element.textContent%20%3D%20newUrl%3B%20%7D%20%7D%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%20function%20execute%28document%29%20%7B%20%20const%20oldUrl%20%3D%20new%20URL%28document.location%29%3B%20const%20newUrl%20%3D%20new%20URL%28document.location%29%3B%20newUrl.search%20%3D%20cleanQueryString%28oldUrl.search%29%3B%20if%20%28oldUrl.toString%28%29%20%21%3D%3D%20newUrl.toString%28%29%29%20%7B%20document.defaultView.history.replaceState%28%7B%7D%2C%20document.title%2C%20newUrl%29%3B%20%7D%20%20document.querySelectorAll%28%27.OUTBRAIN%27%29.forEach%28element%20%3D%3E%20%7B%20element.querySelectorAll%28%27a%27%29.forEach%28a%20%3D%3E%20%7B%20Array.from%28a.attributes%29.forEach%28attribute%20%3D%3E%20%7B%20if%20%28attribute.name.match%28%2F%5Eon%2Fi%29%29%20%7B%20a.removeAttribute%28attribute.name%29%3B%20%7D%20%7D%29%3B%20%20const%20usp%20%3D%20new%20URLSearchParams%28a.search%29%3B%20Array.from%28usp%29.forEach%28%28%5Bname%2C%20value%5D%29%20%3D%3E%20%7B%20if%20%28value.match%28%2F%5E%5C%24.%2A%5C%24%24%2F%29%29%20%7B%20usp.delete%28name%29%3B%20%7D%20%7D%29%3B%20a.search%20%3D%20usp.toString%28%29%3B%20%7D%29%3B%20element.outerHTML%20%3D%20element.outerHTML%3B%20%7D%29%3B%20%20document.querySelectorAll%28%27%5Bdata-text-ad%5D%20a%5Bhref%5D%27%29.forEach%28a%20%3D%3E%20%7B%20if%20%28a.dataset.xxxJanOriginalHref%29%20%7B%20return%3B%20%7D%20%20let%20isGoogleAd%20%3D%20Object.entries%28a.dataset%29.some%28%20%28%5Bname%2C%20value%5D%29%20%3D%3E%20value.indexOf%28%27https%3A%2F%2Fwww.googleadservices.com%2Fpagead%27%29%20%3D%3D%3D%200%20%7C%7C%20value.indexOf%28%27https%3A%2F%2Fwww.google.com%2Faclk%27%29%20%3D%3D%3D%200%20%29%3B%20if%20%28isGoogleAd%29%20%7B%20a.dataset.xxxJanOriginalHref%20%3D%20a.href%3B%20%7D%20%7D%29%3B%20%20Object.entries%28linkRedirectors%29.forEach%28%20%28%5Bselector%2C%20callback%5D%29%20%3D%3E%20document.querySelectorAll%28selector%29.forEach%28element%20%3D%3E%20callback%28element%29%29%20%29%3B%20%20const%20allAHrefs%20%3D%20Array.from%28document.querySelectorAll%28%27a%5Bhref%5D%27%29%29%3B%20allAHrefs%20.filter%28a%20%3D%3E%20a.href.match%28hrefRegexpForWhichToDeleteAllParameters%29%29%20.forEach%28a%20%3D%3E%20a.search%20%3D%20%27%27%29%3B%20allAHrefs%20.filter%28a%20%3D%3E%20a.href.match%28hrefRegexp%29%29%20.forEach%28a%20%3D%3E%20cleanQueryStringForHrefAttribute%28a%29%29%3B%20%20new%20MutationObserver%28mutations%20%3D%3E%20%7B%20mutations.forEach%28mutation%20%3D%3E%20%7B%20cleanQueryStringForHrefAttribute%28mutation.target%29%3B%20Object.entries%28linkRedirectors%29.forEach%28%20%28%5Bselector%2C%20callback%5D%29%20%3D%3E%20%7B%20mutation.target.matches%28selector%29%20%26%26%20callback%28mutation.target%29%20%7D%20%29%3B%20%7D%29%3B%20%7D%29.observe%28document%2C%20%7B%20attributes%3A%20true%2C%20attributeFilter%3A%20%5B%27href%27%5D%2C%20subtree%3A%20true%20%7D%29%3B%20%20if%20%28typeof%20skimlinksAPI%20%21%3D%3D%20%27undefined%27%29%20%7B%20document.querySelectorAll%28%27a%5Bhref%5D%27%29.forEach%28a%20%3D%3E%20%7B%20if%20%28a.dataset.xxxJanOriginalHref%29%20%7B%20return%3B%20%7D%20a.dataset.xxxJanOriginalHref%20%3D%20a.href%3B%20%7D%29%3B%20%7D%20%20document.querySelectorAll%28%27a%5Bhref%5D%27%29.forEach%28a%20%3D%3E%20%7B%20const%20normalizedDomainName%20%3D%20a.href.replace%28%2F%5Ehttps%3F%3A%5C%2F%5C%2F%28%3F%3Awww%5C.%29%3F%28%5B%5E%2F%5D%2B%29.%2A%2F%2C%20%27%241%27%29%3B%20const%20textContainersToCheck%20%3D%20Array.from%28a.querySelectorAll%28%27%2A%27%29%29%3B%20textContainersToCheck.unshift%28a%29%3B%20for%20%28let%20i%20%3D%20textContainersToCheck.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%29%20%7B%20const%20textContainer%20%3D%20textContainersToCheck%5Bi%5D%3B%20const%20normalizedInnerText%20%3D%20textContainer.textContent.replace%28%2F%5E%28%3F%3Ahttps%3F%3A%5C%2F%5C%2F%29%3F%28%3F%3Awww%5C.%29%3F%28%5B%5E%2F%5D%2B%29.%2A%2F%2C%20%27%241%27%29%3B%20if%20%28normalizedDomainName%20%3D%3D%3D%20normalizedInnerText%29%20%7B%20textContainer.textContent%20%3D%20a.href%3B%20break%3B%20%7D%20%7D%20%7D%29%3B%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./navigation/untrack.js */" ADD_DATE="1562616552" LAST_MODIFIED="1734300131" SHORTCUTURL="untrack">Untrack links</A>
<DD><P>Remove analytics and tracking parameters such as Google Analytics’ “utm_*”
and Facebook’s “fbclid” from the current document location (URI/URL) and
from the links on the page. It does not reload the page or its frames.</P></DD>
<DT><A HREF="javascript:%28function%20%28%29%20%7B%20var%20parts%20%3D%20location.pathname.split%28%27%2F%27%29%3B%20if%20%28parts.length%20%3D%3D%3D%202%29%20%7B%20%20%20%20parts%5Bparts.length%20-%201%5D%20%3D%20%27%27%3B%20%7D%20else%20if%20%28parts%5Bparts.length%20-%201%5D%20%3D%3D%3D%20%27%27%20%7C%7C%20parts%5Bparts.length%20-%201%5D.match%28%2F%5E%28default%7Cindex%29%28%5C..%2A%29%3F%24%2F%29%29%20%7B%20%20parts%5Bparts.length%20-%202%5D%20%3D%20parts.pop%28%29%3B%20%7D%20else%20%7B%20%20parts%5Bparts.length%20-%201%5D%20%3D%20%27%27%3B%20%7D%20location%20%3D%20parts.join%28%27%2F%27%29%3B%20%7D%29%28%29%3B/* ./navigation/up.js */" ADD_DATE="1305486490" LAST_MODIFIED="1305486490" SHORTCUTURL="..">Go up</A>
<DD><P>Go to the parent "directory". Note that this function tries to be somewhat
smart about it:
- If the path ends in a slash, go to the parent directory.
- If the path looks like the default index, go to the parent directory and
use the same filename.
- For all other paths, go to the containing directory.
For example:
- "/foo/bar/baz/" becomes "/foo/bar/"
- "/foo/bar/baz/index.html" becomes "/foo/bar/index.html"
- "/foo/bar/baz" becomes "/foo/bar/" (which in turn will become "/foo/")</P></DD>
</DL>
<DT><H3>Search engines</H3>
<DD><P></P>
<DL><P>
<DT><H3>Maps & transportation</H3>
<DD><P></P>
<DL><P>
<DT><A HREF="javascript:%28function%20bmap%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20const%20method%20%3D%20language%20%3D%3D%3D%20selectedLanguage%20%3F%20%27unshift%27%20%3A%20%27push%27%3B%20possibleReplacements%5Bmethod%5D%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20location%20%3D%20%27https%3A%2F%2Fwww.bing.com%2Fmaps%2F%3Fobox%3D1%26q%3D%27%20%2B%20encodeURIComponent%28s%29%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/bmap.js */" ADD_DATE="1306354325" LAST_MODIFIED="1697215591" SHORTCUTURL="bmap">Bing Maps</A>
<DD><P>Search Bing Maps.</P></DD>
<DT><A HREF="javascript:%28function%20drive%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20const%20method%20%3D%20language%20%3D%3D%3D%20selectedLanguage%20%3F%20%27unshift%27%20%3A%20%27push%27%3B%20possibleReplacements%5Bmethod%5D%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2Afrom%5Cs%2B%2Fg%2C%20%27from%3A%27%29%3B%20s%20%3D%20s.replace%28%2F%5Cs%2B%28to%7C%E2%80%93%29%5Cs%2B%2Fg%2C%20%27%20to%3A%27%29%3B%20if%20%28s.match%28%2F%5Csto%3A%2F%29%20%26%26%20%21s.match%28%2F%5E%5Cs%2Afrom%3A%2F%29%29%20%7B%20s%20%3D%20%27from%3A%27%20%2B%20s%3B%20%7D%20var%20locations%20%3D%20s.split%28%2F%5Cs%2Bto%5Cs%2A%3A%5Cs%2A%2F%29%3B%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fmaps%2F%27%3B%20if%20%28locations.length%20%3D%3D%3D%201%29%20%7B%20%20url%20%2B%3D%20%27search%2F%27%20%2B%20locations.map%28encodeURIComponent%29%3B%20%7D%20else%20%7B%20%20url%20%2B%3D%20%27dir%2Fdata%3D%214m3%214m2%213e0%214e0%2F%27%3B%20url%20%2B%3D%20locations.map%28function%20%28str%29%20%7B%20return%20encodeURIComponent%28%20str.replace%28%2F%5E%5Cs%2A%28from%7Cto%29%5Cs%2A%3A%5Cs%2A%2F%2C%20%27%27%29%20%29%3B%20%7D%29.join%28%27%2F%27%29%3B%20%7D%20%20location%20%3D%20url%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%252C%2Fg%2C%20%27%2C%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/drive.js */" ADD_DATE="1359900294" LAST_MODIFIED="1697215591" SHORTCUTURL="drive">Google Maps (for cars)</A>
<DD><P>Search Google Maps for a route by car.</P></DD>
<DT><A HREF="javascript:%28function%20fly%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20const%20method%20%3D%20language%20%3D%3D%3D%20selectedLanguage%20%3F%20%27unshift%27%20%3A%20%27push%27%3B%20possibleReplacements%5Bmethod%5D%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2Afrom%5Cs%2B%2Fg%2C%20%27from%3A%27%29%3B%20s%20%3D%20s.replace%28%2F%5Cs%2B%28to%7C%E2%80%93%29%5Cs%2B%2Fg%2C%20%27%20to%3A%27%29%3B%20if%20%28s.match%28%2F%5Csto%3A%2F%29%20%26%26%20%21s.match%28%2F%5E%5Cs%2Afrom%3A%2F%29%29%20%7B%20s%20%3D%20%27from%3A%27%20%2B%20s%3B%20%7D%20var%20locations%20%3D%20s.split%28%2F%5Cs%2Bto%5Cs%2A%3A%5Cs%2A%2F%29%3B%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fmaps%2F%27%3B%20if%20%28locations.length%20%3D%3D%3D%201%29%20%7B%20%20url%20%2B%3D%20%27search%2F%27%20%2B%20locations.map%28encodeURIComponent%29%3B%20%7D%20else%20%7B%20%20url%20%2B%3D%20%27dir%2Fdata%3D%214m3%214m2%213e4%214e0%2F%27%3B%20url%20%2B%3D%20locations.map%28function%20%28str%29%20%7B%20return%20encodeURIComponent%28%20str.replace%28%2F%5E%5Cs%2A%28from%7Cto%29%5Cs%2A%3A%5Cs%2A%2F%2C%20%27%27%29%20%29%3B%20%7D%29.join%28%27%2F%27%29%3B%20%7D%20%20location%20%3D%20url%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%252C%2Fg%2C%20%27%2C%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/fly.js */" ADD_DATE="1359900294" LAST_MODIFIED="1697215591" SHORTCUTURL="fly">Google Maps (for flights)</A>
<DD><P>Search Google Maps for flights.</P></DD>
<DT><A HREF="javascript:%28function%20map%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20if%20%28language%20%3D%3D%3D%20selectedLanguage%29%20%7B%20possibleReplacements.unshift%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20else%20%7B%20possibleReplacements.push%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2Afrom%5Cs%2B%2Fg%2C%20%27from%3A%27%29%3B%20s%20%3D%20s.replace%28%2F%5Cs%2B%28to%7C%E2%80%93%29%5Cs%2B%2Fg%2C%20%27%20to%3A%27%29%3B%20if%20%28s.match%28%2F%5Csto%3A%2F%29%20%26%26%20%21s.match%28%2F%5E%5Cs%2Afrom%3A%2F%29%29%20%7B%20s%20%3D%20%27from%3A%27%20%2B%20s%3B%20%7D%20var%20locations%20%3D%20s.split%28%2F%5Cs%2Bto%5Cs%2A%3A%5Cs%2A%2F%29%3B%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fmaps%2F%27%3B%20if%20%28locations.length%20%3D%3D%3D%201%29%20%7B%20%20url%20%2B%3D%20%27search%2F%27%20%2B%20locations.map%28encodeURIComponent%29%3B%20%7D%20else%20%7B%20%20url%20%2B%3D%20%27dir%2Fdata%3D%214m3%214m2%214e0%2F%27%3B%20url%20%2B%3D%20locations.map%28function%20%28str%29%20%7B%20return%20encodeURIComponent%28%20str.replace%28%2F%5E%5Cs%2A%28from%7Cto%29%5Cs%2A%3A%5Cs%2A%2F%2C%20%27%27%29%20%29%3B%20%7D%29.join%28%27%2F%27%29%3B%20%7D%20%20location%20%3D%20url%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%252C%2Fg%2C%20%27%2C%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/map.js */" ADD_DATE="1359900294" LAST_MODIFIED="1732098154" SHORTCUTURL="map">Google Maps</A>
<DD><P>Search Google Maps.</P></DD>
<DT><A HREF="javascript:%28function%20mapi%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Specify%20the%20%28lat%2C%20lng%29%20coordinates%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20%5Blat%2C%20lng%5D%20%3D%20s%20.replace%28%2F%5E%5Cs%2A%5C%28%5Cs%2A%2F%2C%20%27%27%29%20.replace%28%2F%5Cs%2A%5C%28%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Ehttps%3A%5C%2F%5C%2Fwww%5C.google%5C.com%5C%2Fmaps%5C%2F%28%5B%5E%40%5D%2B%5C%2F%29%2A%40%2F%2C%20%27%27%29%20.split%28%2F%5Cs%2A%5B%20%2C%5D%5Cs%2A%2F%29%20.map%28parseFloat%29%3B%20if%20%28isNaN%28lat%29%20%7C%7C%20isNaN%28lng%29%29%20%7B%20alert%28%60Could%20not%20parse%20%28lat%2C%20lng%29%20coordinates%20from%20%E2%80%9C%24%7Bs%7D%E2%80%9D%60%29%3B%20return%3B%20%7D%20location%20%3D%20%60https%3A%2F%2Fwww.mapillary.com%2Fapp%2F%3Flat%3D%24%7BencodeURIComponent%28lat%29%7D%26lng%3D%24%7BencodeURIComponent%28lng%29%7D%26z%3D15%60%3B%20%7D%20%7D%29%28document%29%3B/* ./search/maps/mapi.js */" ADD_DATE="1552339250" LAST_MODIFIED="1669035395" SHORTCUTURL="mapi">Mapillary</A>
<DD><P>Go to the specified (lat, lng) coordinates with Mapillary.</P></DD>
<DT><A HREF="javascript:%28function%20ride%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20const%20method%20%3D%20language%20%3D%3D%3D%20selectedLanguage%20%3F%20%27unshift%27%20%3A%20%27push%27%3B%20possibleReplacements%5Bmethod%5D%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2Afrom%5Cs%2B%2Fg%2C%20%27from%3A%27%29%3B%20s%20%3D%20s.replace%28%2F%5Cs%2B%28to%7C%E2%80%93%29%5Cs%2B%2Fg%2C%20%27%20to%3A%27%29%3B%20if%20%28s.match%28%2F%5Csto%3A%2F%29%20%26%26%20%21s.match%28%2F%5E%5Cs%2Afrom%3A%2F%29%29%20%7B%20s%20%3D%20%27from%3A%27%20%2B%20s%3B%20%7D%20var%20locations%20%3D%20s.split%28%2F%5Cs%2Bto%5Cs%2A%3A%5Cs%2A%2F%29%3B%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fmaps%2F%27%3B%20if%20%28locations.length%20%3D%3D%3D%201%29%20%7B%20%20url%20%2B%3D%20%27search%2F%27%20%2B%20locations.map%28encodeURIComponent%29%3B%20%7D%20else%20%7B%20%20url%20%2B%3D%20%27dir%2Fdata%3D%214m3%214m2%213e1%214e0%2F%27%3B%20url%20%2B%3D%20locations.map%28function%20%28str%29%20%7B%20return%20encodeURIComponent%28%20str.replace%28%2F%5E%5Cs%2A%28from%7Cto%29%5Cs%2A%3A%5Cs%2A%2F%2C%20%27%27%29%20%29%3B%20%7D%29.join%28%27%2F%27%29%3B%20%7D%20%20location%20%3D%20url%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%252C%2Fg%2C%20%27%2C%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/ride.js */" ADD_DATE="1359900294" LAST_MODIFIED="1697215591" SHORTCUTURL="ride">Google Maps (for cyclists)</A>
<DD><P>Search Google Maps for a bicycle route.</P></DD>
<DT><A HREF="javascript:%28function%20transit%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20const%20method%20%3D%20language%20%3D%3D%3D%20selectedLanguage%20%3F%20%27unshift%27%20%3A%20%27push%27%3B%20possibleReplacements%5Bmethod%5D%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2Afrom%5Cs%2B%2Fg%2C%20%27from%3A%27%29%3B%20s%20%3D%20s.replace%28%2F%5Cs%2B%28to%7C%E2%80%93%29%5Cs%2B%2Fg%2C%20%27%20to%3A%27%29%3B%20if%20%28s.match%28%2F%5Csto%3A%2F%29%20%26%26%20%21s.match%28%2F%5E%5Cs%2Afrom%3A%2F%29%29%20%7B%20s%20%3D%20%27from%3A%27%20%2B%20s%3B%20%7D%20var%20locations%20%3D%20s.split%28%2F%5Cs%2Bto%5Cs%2A%3A%5Cs%2A%2F%29%3B%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fmaps%2F%27%3B%20if%20%28locations.length%20%3D%3D%3D%201%29%20%7B%20%20url%20%2B%3D%20%27search%2F%27%20%2B%20locations.map%28encodeURIComponent%29%3B%20%7D%20else%20%7B%20%20url%20%2B%3D%20%27dir%2Fdata%3D%214m3%214m2%213e3%214e0%2F%27%3B%20url%20%2B%3D%20locations.map%28function%20%28str%29%20%7B%20return%20encodeURIComponent%28%20str.replace%28%2F%5E%5Cs%2A%28from%7Cto%29%5Cs%2A%3A%5Cs%2A%2F%2C%20%27%27%29%20%29%3B%20%7D%29.join%28%27%2F%27%29%3B%20%7D%20%20location%20%3D%20url%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%252C%2Fg%2C%20%27%2C%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/transit.js */" ADD_DATE="1359900294" LAST_MODIFIED="1697215591" SHORTCUTURL="transit">Google Maps (for transit)</A>
<DD><P>Search Google Maps for a route using public transit.</P></DD>
<DT><A HREF="javascript:%28function%20walk%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20sourceWasSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%3B%20if%20%28s%20%21%3D%3D%20%27%27%29%20%7B%20sourceWasSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20your%20Google%20Maps%20search%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20anchorNode%20%3D%20getSelection%28%29%3F.anchorNode%3B%20while%20%28anchorNode%20%26%26%20%21%28anchorNode%20instanceof%20HTMLElement%29%29%20%7B%20anchorNode%20%3D%20anchorNode.parentNode%3B%20%7D%20const%20selectedLanguage%20%3D%20%28anchorNode%3F.closest%28%27%5Blang%5D%2C%20%5Bxml%5C%5C%3Alang%5D%27%29%20%7C%7C%20document.documentElement%29%3F.lang%3B%20%20const%20localizedCoordinatesLabels%20%3D%20%7B%20%20en%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20nl%3A%20%7B%20%20N%3A%20%5B%27NB%27%2C%20%27N%27%5D%2C%20S%3A%20%5B%27ZB%27%2C%20%27Z%27%5D%2C%20W%3A%20%5B%27WL%27%2C%20%27W%27%5D%2C%20E%3A%20%5B%27OL%27%2C%20%27O%27%5D%2C%20%7D%2C%20fr%3A%20%7B%20%20N%3A%20%5B%27N%27%2C%20%27nord%27%5D%2C%20S%3A%20%5B%27S%27%2C%20%27sud%27%5D%2C%20W%3A%20%5B%27O%27%2C%20%27ouest%27%5D%2C%20E%3A%20%5B%27E%27%2C%20%27est%27%5D%2C%20%7D%2C%20de%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27W%27%5D%2C%20E%3A%20%5B%27O%27%5D%2C%20%7D%2C%20es%3A%20%7B%20%20N%3A%20%5B%27N%27%5D%2C%20S%3A%20%5B%27S%27%5D%2C%20W%3A%20%5B%27O%27%5D%2C%20E%3A%20%5B%27E%27%5D%2C%20%7D%2C%20vi%3A%20%7B%20%20N%3A%20%5B%27B%27%5D%2C%20S%3A%20%5B%27N%27%5D%2C%20W%3A%20%5B%27T%27%5D%2C%20E%3A%20%5B%27%C4%90%27%5D%2C%20%7D%2C%20ru%3A%20%7B%20%20N%3A%20%5B%27%D1%81.%20%D1%88.%27%5D%2C%20S%3A%20%5B%27%D1%8E.%20%D1%88.%27%5D%2C%20W%3A%20%5B%27%D0%B7.%20%D0%B4.%27%5D%2C%20E%3A%20%5B%27%D0%B2.%20%D0%B4.%27%5D%2C%20%7D%2C%20%7D%3B%20const%20possibleReplacements%20%3D%20%5B%5D%3B%20for%20%28const%20%5Blanguage%2C%20labels%5D%20of%20Object.entries%28localizedCoordinatesLabels%29%29%20%7B%20%20const%20method%20%3D%20language%20%3D%3D%3D%20selectedLanguage%20%3F%20%27unshift%27%20%3A%20%27push%27%3B%20possibleReplacements%5Bmethod%5D%28%7Blanguage%2C%20labels%7D%29%3B%20%7D%20const%20regexpWithPlaceholders%20%3D%20%2F%28%3F%3Clatitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClatitudeLabel%3EXXX_LAT_XXX%29%5Cs%2A%2C%3F%5Cs%2A%28%3F%3Clongitude%3E%5Cd%2B%28%3F%3A%5C.%5Cd%2B%29%3F%5Cs%2A%C2%B0%28%3F%3A%5Cs%2A%5Cd%2B%5Cs%2A%E2%80%B2%28%3F%3A%5Cs%2A%5Cd%2B%28%3F%3A%5B.%2C%5D%5Cd%2B%29%3F%5Cs%2A%28%3F%3A%E2%80%B2%E2%80%B2%7C%E2%80%B3%29%29%3F%29%3F%29%5Cs%2A%28%3F%3ClongitudeLabel%3EXXX_LNG_XXX%29%2F%3B%20const%20stringRegexpWithPlaceholders%20%3D%20regexpWithPlaceholders%20.toString%28%29%20.replace%28%2F%28%5E%5C%2F%29%7C%28%5C%2F%24%29%2Fg%2C%20%27%27%29%3B%20const%20rewrittenCoordinates%20%3D%20new%20Set%28%29%3B%20for%20%28let%20%7Blanguage%2C%20labels%7D%20of%20possibleReplacements%29%20%7B%20let%20hasReplaced%20%3D%20false%3B%20const%20regexp%20%3D%20new%20RegExp%28%20stringRegexpWithPlaceholders%20.replace%28%27XXX_LAT_XXX%27%2C%20%60%24%7Blabels.N.concat%28labels.S%29.join%28%27%7C%27%29%7D%60%29%20.replace%28%27XXX_LNG_XXX%27%2C%20%60%24%7Blabels.W.concat%28labels.E%29.join%28%27%7C%27%29%7D%60%29%2C%20%27g%27%20%29%3B%20%20s%20%3D%20s.replaceAll%28regexp%2C%20%28...arguments%29%20%3D%3E%20%7B%20const%20matchedGroups%20%3D%20arguments.pop%28%29%3B%20%20hasReplaced%20%3D%20true%3B%20const%20rewrittenCoordinate%20%3D%20%27%27%20%2B%20matchedGroups.latitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.N.indexOf%28matchedGroups.latitudeLabel%29%20%3E%20-1%20%3F%20%27N%27%20%3A%20%27S%27%29%20%2B%20%27%2C%20%27%20%2B%20matchedGroups.longitude.replace%28%2F%2C%2Fg%2C%20%27.%27%29%20%2B%20%27%20%27%20%2B%20%28labels.W.indexOf%28matchedGroups.longitudeLabel%29%20%3E%20-1%20%3F%20%27W%27%20%3A%20%27E%27%29%3B%20rewrittenCoordinates.add%28rewrittenCoordinate%29%3B%20return%20rewrittenCoordinate%3B%20%7D%29%3B%20if%20%28hasReplaced%29%20%7B%20%20break%3B%20%7D%20%7D%20%20if%20%28sourceWasSelectedText%20%26%26%20rewrittenCoordinates.size%29%20%7B%20s%20%3D%20Array.from%28rewrittenCoordinates%29.join%28%27%20to%20%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2Afrom%5Cs%2B%2Fg%2C%20%27from%3A%27%29%3B%20s%20%3D%20s.replace%28%2F%5Cs%2B%28to%7C%E2%80%93%29%5Cs%2B%2Fg%2C%20%27%20to%3A%27%29%3B%20if%20%28s.match%28%2F%5Csto%3A%2F%29%20%26%26%20%21s.match%28%2F%5E%5Cs%2Afrom%3A%2F%29%29%20%7B%20s%20%3D%20%27from%3A%27%20%2B%20s%3B%20%7D%20var%20locations%20%3D%20s.split%28%2F%5Cs%2Bto%5Cs%2A%3A%5Cs%2A%2F%29%3B%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fmaps%2F%27%3B%20if%20%28locations.length%20%3D%3D%3D%201%29%20%7B%20%20url%20%2B%3D%20%27search%2F%27%20%2B%20locations.map%28encodeURIComponent%29%3B%20%7D%20else%20%7B%20%20url%20%2B%3D%20%27dir%2Fdata%3D%214m3%214m2%213e2%214e0%2F%27%3B%20url%20%2B%3D%20locations.map%28function%20%28str%29%20%7B%20return%20encodeURIComponent%28%20str.replace%28%2F%5E%5Cs%2A%28from%7Cto%29%5Cs%2A%3A%5Cs%2A%2F%2C%20%27%27%29%20%29%3B%20%7D%29.join%28%27%2F%27%29%3B%20%7D%20%20location%20%3D%20url%20.replace%28%2F%2520%2Fg%2C%20%27%2B%27%29%20.replace%28%2F%252C%2Fg%2C%20%27%2C%27%29%20.replace%28%2F%253A%2Fg%2C%20%27%3A%27%29%20%3B%20%7D%20%7D%29%28%29%3B/* ./search/maps/walk.js */" ADD_DATE="1359900294" LAST_MODIFIED="1697215591" SHORTCUTURL="walk">Google Maps (for pedestrians)</A>
<DD><P>Search Google Maps for a walking route.</P></DD>
</DL>
<DT><H3>Wikipedia</H3>
<DD><P></P>
<DL><P>
<DT><A HREF="javascript:%28function%28%29%20%7B%20%27use%20strict%27%3B%20%20function%20execute%28document%29%20%7B%20const%20commonsLink%20%3D%20document.querySelector%28%27.wb-otherproject-link.wb-otherproject-commons%20a%5Bhref%5D%2C%20.sistersitebox%20a%5Bhref%5E%3D%22https%3A%2F%2Fcommons.wikimedia.org%2Fwiki%2F%22%5D%2C%20.sistersitebox%20a%5Bhref%5E%3D%22https%3A%2F%2Fcommons.m.wikimedia.org%2Fwiki%2F%22%5D%27%29%3B%20if%20%28commonsLink%29%20%7B%20try%20%7B%20top.location%20%3D%20commonsLink.href%3B%20return%3B%20%7D%20catch%20%28e%29%20%7B%20location%20%3D%20commonsLink.href%3B%20%7D%20%7D%20%20try%20%7B%20Array.from%28document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%29.forEach%28%20elem%20%3D%3E%20%7B%20try%20%7B%20execute%28elem.contentDocument%29%20%7D%20catch%20%28e%29%20%7B%20%7D%20%7D%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./search/wikipedia/2comm.js */" ADD_DATE="1679484110" LAST_MODIFIED="1688457997" SHORTCUTURL="2comm">Go to Wikimedia Commons</A>
<DD><P>Go to the corresponding Wikimedia Commons page for a Wikipedia article.</P></DD>
<DT><A HREF="javascript:%28function%20anyw%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20subject%20to%20look%20up%20on%20any%20Wikipedia%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20location%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fsearch%3FbtnI%3D%26ie%3Dutf-8%26sourceid%3Dnavclient%26q%3D%27%20%2B%20encodeURIComponent%28%27site%3Awikipedia.org%20%27%20%2B%20s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/wikipedia/anyw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1375712752" SHORTCUTURL="anyw">Any Wikipedia</A>
<DD><P>Look up the specified or selected text in any Wikipedia.
This does a Google "I'm feeling lucky" search for all wikipedia.org sites.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27de%27%2C%20languageNamesInEnglish%3A%20%5B%27German%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28Begriffskl%C3%A4rung%29%27%2C%20%7D%29%3B/* ./search/wikipedia/dew.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="dew">German Wikipedia</A>
<DD><P>Look up the specified or selected text in the German Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20%20languageCode%3A%20%27en%27%2C%20languageNamesInEnglish%3A%20%5B%27English%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28disambiguation%29%27%2C%20%20%7D%29%3B/* ./search/wikipedia/enw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="enw">English Wikipedia</A>
<DD><P>Look up the specified or selected text in the English Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27es%27%2C%20languageNamesInEnglish%3A%20%5B%27Spanish%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28desambiguaci%C3%B3n%29%27%2C%20%7D%29%3B/* ./search/wikipedia/esw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="esw">Spanish Wikipedia</A>
<DD><P>Look up the specified or selected text in the Spanish Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27fr%27%2C%20languageNamesInEnglish%3A%20%5B%27French%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28homonymie%29%27%2C%20%7D%29%3B/* ./search/wikipedia/frw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="frw">French Wikipedia</A>
<DD><P>Look up the specified or selected text in the French Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27it%27%2C%20languageNamesInEnglish%3A%20%5B%27Italian%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28disambigua%29%27%2C%20%7D%29%3B/* ./search/wikipedia/itw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="itw">Italian Wikipedia</A>
<DD><P>Look up the specified or selected text in the Italian Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27nl%27%2C%20languageNamesInEnglish%3A%20%5B%27Dutch%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28doorverwijspagina%29%27%2C%20%7D%29%3B/* ./search/wikipedia/nlw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="nlw">Dutch Wikipedia</A>
<DD><P>Look up the specified or selected text in the Dutch Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27no%27%2C%20languageNamesInEnglish%3A%20%5B%27Norwegian%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28andre%20betydninger%29%27%2C%20%7D%29%3B/* ./search/wikipedia/now.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="now">Norwegian Wikipedia</A>
<DD><P>Look up the specified or selected text in the Norwegian Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27pt%27%2C%20languageNamesInEnglish%3A%20%5B%27Portuguese%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28desambigua%C3%A7%C3%A3o%29%27%2C%20%7D%29%3B/* ./search/wikipedia/ptw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="ptw">Portuguese Wikipedia</A>
<DD><P>Look up the specified or selected text in the Portuguese Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27ru%27%2C%20languageNamesInEnglish%3A%20%5B%27Russian%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%29%27%2C%20%7D%29%3B/* ./search/wikipedia/ruw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="ruw">Russian Wikipedia</A>
<DD><P>Look up the specified or selected text in the Russian Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27sv%27%2C%20languageNamesInEnglish%3A%20%5B%27Swedish%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28olika%20betydelser%29%27%2C%20%7D%29%3B/* ./search/wikipedia/svw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="svw">Swedish Wikipedia</A>
<DD><P>Look up the specified or selected text in the Swedish Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27vi%27%2C%20languageNamesInEnglish%3A%20%5B%27Vietnamese%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28%C4%91%E1%BB%8Bnh%20h%C6%B0%E1%BB%9Bng%29%27%2C%20%7D%29%3B/* ./search/wikipedia/viw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="viw">Vietnamese Wikipedia</A>
<DD><P>Look up the specified or selected text in the Vietnamese Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
<DT><A HREF="javascript:%28function%20wikiv%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20English%20Wikivoyage%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20location%20%3D%20%27https%3A%2F%2Fen.wikivoyage.org%2Fw%2Findex.php%3FsearchToken%3D%26title%3DSpecial%253ASearch%26search%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/wikipedia/wikiv.js */" ADD_DATE="1328465540" LAST_MODIFIED="1512248770" SHORTCUTURL="wikiv">English Wikivoyage</A>
<DD><P>Look up the specified or selected text in the English Wikivoyage.</P></DD>
<DT><A HREF="javascript:%28function%20%28config%29%20%7B%20const%20%7BlanguageCode%2C%20languageNamesInEnglish%2C%20disambigationPageSuffix%7D%20%3D%20config%3B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%60Please%20enter%20the%20subject%20to%20look%20up%20in%20the%20%24%7BlanguageNamesInEnglish.join%28%27%2F%27%29%7D%20Wikipedia%3A%60%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20let%20matches%20%3D%20s.match%28%2F%5E%5Cs%2A--dis%5Cs%2A%28.%2B%29%2F%29%3B%20if%20%28matches%29%20%7B%20s%20%3D%20matches%5B1%5D%20%2B%20disambigationPageSuffix%3B%20%7D%20%20location%20%3D%20%60https%3A%2F%2F%24%7BlanguageCode%7D.wikipedia.org%2Fw%2Findex.php%3FsearchToken%3D.%26title%3DSpecial%253ASearch%26ns0%3D1%26search%3D%24%7BencodeURIComponent%28s%29%7D%60%3B%20%7D%20%7D%29%28%7B%20languageCode%3A%20%27zh%27%2C%20languageNamesInEnglish%3A%20%5B%27Chinese%27%5D%2C%20disambigationPageSuffix%3A%20%27%20%28%E6%B6%88%E6%AD%A7%E4%B9%89%29%27%2C%20%7D%29%3B/* ./search/wikipedia/zhw.js */" ADD_DATE="1328465540" LAST_MODIFIED="1672915122" SHORTCUTURL="zhw">Chinese Wikipedia</A>
<DD><P>Look up the specified or selected text in the Chinese Wikipedia.
Use `--dis` as the first parameter to show the disambiguation page, if any.
E.g. `enw --dis 1` would open `1 (disambiguation)`, which is a lot faster to
type then `enw 1 (disambiguation)`, and also works for the non-English
Wikipedia instances, which use other words for “disambiguation”.
Get the active text selection, diving into frames and
text controls when necessary and possible.</P></DD>
</DL>
<DT><A HREF="javascript:%28function%20bimg%28%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Bing%20Images%20search%20query%20or%20image%20URL%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20%20if%20%28s.match%28%2F%5E%28%5Cw%2B%3A%28%5C%2F%5C%2F%29%3F%29%3F%5B%5E%5Cs%5D%2B%28%5C.%5B%5E%5Cs%5D%2B%29%2B%5C%2F%2F%29%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.bing.com%2Fimages%2Fsearch%3Fview%3Ddetailv2%26iss%3Dsbi%26FORM%3DSBIIRP%26sbisrc%3DUrlPaste%26q%3Dimgurl%3A%27%20%2B%20encodeURIComponent%28s%29%20%2B%20%27%26idpbck%3D1%27%3B%20return%3B%20%7D%20location%20%3D%20%27https%3A%2F%2Fwww.bing.com%2Fimages%2Fsearch%3Fq%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./search/bimg.js */" ADD_DATE="1306354325" LAST_MODIFIED="1734090349" SHORTCUTURL="bimg">Bing Images</A>
<DD><P>Search Bing Images. For reverse image search, specify the URL as the first parameter.</P></DD>
<DT><A HREF="javascript:%28function%20ddg%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20DuckDuckGo%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fduckduckgo.com%2F%3Fia%3Dweb%26kv%3D1%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/ddg.js */" ADD_DATE="1345738094" LAST_MODIFIED="1678377198" SHORTCUTURL="ddg">DuckDuckGo</A>
<DD><P>Search DuckDuckGo for the given text, numbering the search result pages.</P></DD>
<DT><A HREF="javascript:%28function%20ddimg%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20DuckDuckGo%20image%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fduckduckgo.com%2F%3Fia%3Dimages%26iax%3Dimages%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./search/ddimg.js */" ADD_DATE="1306354325" LAST_MODIFIED="1652975413" SHORTCUTURL="ddimg">DuckDuckGo image search</A>
<DD><P>Search DuckDuckGo for images for the given text.</P></DD>
<DT><A HREF="javascript:%28function%20e%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Ecosia%20web%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.ecosia.org%2Fsearch%3Fq%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./search/e.js */" ADD_DATE="1306354325" LAST_MODIFIED="1707320827" SHORTCUTURL="e">Ecosia</A>
<DD><P>Search using Ecosia, for “A better planet with every search”.</P></DD>
<DT><A HREF="javascript:%28function%20eimg%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Ecosia%20image%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.ecosia.org%2Fimages%3Fq%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./search/eimg.js */" ADD_DATE="1306354325" LAST_MODIFIED="1707320827" SHORTCUTURL="eimg">Ecosia Images</A>
<DD><P>Search using Ecosia Images, for “A better planet with every search”.</P></DD>
<DT><A HREF="javascript:%28function%20g%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Google%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fsearch%3Fie%3Dutf-8%26hl%3Den%26num%3D100%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/g.js */" ADD_DATE="1345737390" LAST_MODIFIED="1411918094" SHORTCUTURL="g">Google Search</A>
<DD><P>Search the international (English) Google for the given text, with a 100
results per SERP and without Instant Search.</P></DD>
<DT><A HREF="javascript:%28function%20gc%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20URL%20whose%20Google%20cache%20to%20view%3A%27%2C%20location%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20var%20url%20%3D%20%27https%3A%2F%2Fwebcache.googleusercontent.com%2Fsearch%3F%27%2C%20words%20%3D%20s.split%28%27%20%27%29%3B%20if%20%28words%5B0%5D%20%3D%3D%20%27html%27%29%20%7B%20s%20%3D%20words.slice%281%29.join%28%27%20%27%29%3B%20%7D%20else%20%7B%20url%20%2B%3D%20%27strip%3D1%26%27%3B%20%7D%20location%20%3D%20url%20%2B%20%27q%3Dcache%3A%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/gc.js */" ADD_DATE="1308257789" LAST_MODIFIED="1375712654" SHORTCUTURL="gc">Google cache</A>
<DD><P>View the Google cached text for the specified URL.
Specify "html" as the first parameter to view the cached HTML.</P></DD>
<DT><A HREF="javascript:%28function%20gimg%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Google%20Images%20search%20query%20or%20image%20URL%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20var%20words%20%3D%20s.split%28%27%20%27%29%2C%20matches%3B%20%20if%20%28words%5B0%5D.match%28%2F%5E%28%5Cw%2B%3A%28%5C%2F%5C%2F%29%3F%29%3F%5B%5E%5Cs%5D%2B%28%5C.%5B%5E%5Cs%5D%2B%29%2B%5C%2F%2F%29%29%20%7B%20location%20%3D%20%27https%3A%2F%2Flens.google.com%2Fuploadbyurl%3Furl%3D%27%20%2B%20encodeURIComponent%28words%5B0%5D%29%20%2B%20%27%26q%3D%27%20%2B%20encodeURIComponent%28words.slice%281%29.join%28%27%20%27%29%29%3B%20return%3B%20%7D%20var%20url%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fsearch%3Ftbm%3Disch%26safe%3Doff%26gws_rd%3Dcr%26ei%3D%27%3B%20if%20%28words.length%20%3E%201%29%20%7B%20if%20%28words%5B0%5D%20%3D%3D%3D%20%27wallpaper%27%29%20%7B%20words%5B0%5D%20%3D%20screen.width%20%2B%20%27x%27%20%2B%20screen.height%3B%20%7D%20if%20%28%28matches%20%3D%20words%5B0%5D.match%28%2F%5E%3D%3F%28%5B0-9%5D%2B%29x%28%5B0-9%5D%2B%29%24%2F%29%29%29%20%7B%20%20url%20%2B%3D%20%27%26tbs%3Disz%3Aex%2Ciszw%3A%27%20%2B%20encodeURIComponent%28matches%5B1%5D%29%20%2B%20%27%2Ciszh%3A%27%20%2B%20encodeURIComponent%28matches%5B2%5D%29%3B%20words.shift%28%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20words%5B0%5D.match%28%2F%5E%3E%28%28%5B1-9%5D%5B0-9%5D%2A%29x%28%5B1-9%5D%5B0-9%5D%2A%29%7Cqsvga%7Cvga%7Csvga%7Cxga%7C%28%3F%3A%28%5B1-9%5D%5B0-9%5D%2A%29mp%29%29%24%2F%29%29%29%20%7B%20var%20minWidth%20%3D%20matches%5B2%5D%20%2A%201%2C%20minHeight%20%3D%20matches%5B3%5D%20%2A%201%2C%20minMegapixels%20%3D%20matches%5B4%5D%20%2A%201%3B%20%20var%20resolutions%20%3D%20%7B%20%27400x300%27%3A%20%27qsvga%27%2C%20%27640x480%27%3A%20%27vga%27%2C%20%27800x600%27%3A%20%27svga%27%2C%20%271024x768%27%3A%20%27xga%27%2C%20%271600x1200%27%3A%20%272mp%27%2C%20%272272x1704%27%3A%20%274mp%27%2C%20%272816x2112%27%3A%20%276mp%27%2C%20%273264x2448%27%3A%20%278mp%27%2C%20%273648x2736%27%3A%20%2710mp%27%2C%20%274096x3072%27%3A%20%2712mp%27%2C%20%274480x3360%27%3A%20%2715mp%27%2C%20%275120x3840%27%3A%20%2720mp%27%2C%20%277216x5412%27%3A%20%2740mp%27%2C%20%279600x7200%27%3A%20%2770mp%27%20%7D%3B%20var%20size%20%3D%20matches%5B1%5D%3B%20if%20%28minWidth%20%26%26%20minHeight%29%20%7B%20for%20%28var%20dimensions%20in%20resolutions%29%20%7B%20var%20width%20%3D%20dimensions.split%28%27x%27%29%5B0%5D%20%2A%201%2C%20height%20%3D%20dimensions.split%28%27x%27%29%5B1%5D%20%2A%201%3B%20if%20%28minWidth%20%3E%3D%20width%20%26%26%20minHeight%20%3E%3D%20height%29%20%7B%20size%20%3D%20resolutions%5Bdimensions%5D%3B%20%7D%20%7D%20%7D%20else%20if%20%28minMegapixels%29%20%7B%20for%20%28var%20dimensions%20in%20resolutions%29%20%7B%20var%20megapixels%20%3D%20parseInt%28resolutions%5Bdimensions%5D%2C%2010%29%3B%20if%20%28minMegapixels%20%3E%3D%20megapixels%29%20%7B%20size%20%3D%20resolutions%5Bdimensions%5D%3B%20%7D%20%7D%20%7D%20url%20%2B%3D%20%27%26tbs%3Disz%3Alt%2Cislt%3A%27%20%2B%20encodeURIComponent%28size%29%3B%20words.shift%28%29%3B%20%7D%20s%20%3D%20words.join%28%27%20%27%29%3B%20%7D%20location%20%3D%20url%20%2B%20%27%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/gimg.js */" ADD_DATE="1306533220" LAST_MODIFIED="1731966924" SHORTCUTURL="gimg">Google Images</A>
<DD><P>Search Google Images, optionally limiting to certain sizes using:
- "wallpaper" word to find images the size of your screen.
- "640x480" to find images with exactly those dimensions
- ">1600x1200" to find images approximately larger than 1600x1200
- ">4mp" to find images approximately larger than 4 megapixels (2272x1704)</P></DD>
<DT><A HREF="javascript:%28function%20go%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20DuckDuckGo%20%E2%80%9CI%E2%80%99m%20Feeling%20Ducky%E2%80%9D%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20s%20%2B%3D%20%27%20%21%27%3B%20location%20%3D%20%27https%3A%2F%2Fwww.duckduckgo.com%2F%3Fq%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/go.js */" ADD_DATE="1345736537" LAST_MODIFIED="1378190713" SHORTCUTURL="go">Go</A>
<DD><P>Go to the first DuckDuckGo result ("I'm Feeling Ducky") for the given text.</P></DD>
<DT><A HREF="javascript:%28function%20gs%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Google%20search%20query%20for%20%27%20%2B%20location.host%20%2B%20%27t%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20s%20%3D%20%27site%3A%27%20%2B%20location.host%20%2B%20%27%20%27%20%2B%20s%3B%20location%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fsearch%3Fie%3Dutf-8%26hl%3Den%26num%3D100%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/gs.js */" ADD_DATE="1345737390" LAST_MODIFIED="1411918094" SHORTCUTURL="gs">Google Site Search</A>
<DD><P>Search the international (English) Google for the given text on the current
site's domain, with a 100 results per SERP and without Instant Search.</P></DD>
<DT><A HREF="javascript:%28function%20eimg%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Ecosia%20image%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.ecosia.org%2Fimages%3Fq%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./search/img.js */" ADD_DATE="1306533220" LAST_MODIFIED="1707322798" SHORTCUTURL="img">Image search</A>
<DD><P>Defaults to Ecosia Images (see `eimg`).</P></DD>
<DT><A HREF="javascript:%28function%20search%28%29%20%7B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20const%20openSearchLink%20%3D%20document.querySelector%28%60%20link%5Brel%3D%22search%22%5D%5Btype%3D%22application%2Fopensearchdescription%2Bxml%22%5D%2C%20link%5Brel%3D%22search%22%5D%3Anot%28%5Btype%5D%29%60%20%29%3B%20if%20%28openSearchLink%3F.href%29%20%7B%20console.log%28%60search%3A%20found%20OpenSearch%20description%20at%20%24%7BopenSearchLink.href%7D%60%29%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20site%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20fetch%28openSearchLink.href%29%20.then%28response%20%3D%3E%20response.text%28%29%29%20.then%28xmlString%20%3D%3E%20%7B%20try%20%7B%20const%20xml%20%3D%20new%20DOMParser%28%29.parseFromString%28xmlString%2C%20%27application%2Fxml%27%29%3B%20const%20templateUrl%20%3D%20xml.querySelector%28%27Url%3Anot%28%5Btype%5D%29%2C%20Url%5Btype%2A%3D%22html%22%5D%27%29%20%3F.getAttribute%28%27template%27%29%3B%20if%20%28%21templateUrl%29%20%7B%20console.log%28%27search%3A%20could%20not%20find%20%60template%60%20for%20%60Url%60%20element%20in%20OpenSearch%20description%20XML%3A%5Cn%27%2C%20xmlString%29%3B%20return%3B%20%7D%20const%20searchUrl%20%3D%20templateUrl%20.replaceAll%28%27%7BsearchTerms%7D%27%2C%20encodeURIComponent%28s%29%29%20.replaceAll%28%27%7Bcount%3F%7D%27%2C%20%27%27%29%20.replaceAll%28%27%7BstartIndex%3F%7D%27%2C%20%27%27%29%20.replaceAll%28%27%7BstartPage%3F%7D%27%2C%20%27%27%29%20.replaceAll%28%27%7Blanguage%3F%7D%27%2C%20%27%27%29%20.replaceAll%28%27%7Bcount%7D%27%2C%20100%29%20.replaceAll%28%27%7BstartIndex%7D%27%2C%200%29%20.replaceAll%28%27%7BstartPage%7D%27%2C%200%29%20.replaceAll%28%27%7Blanguage%7D%27%2C%20%27%2A%27%29%3B%20location%20%3D%20searchUrl%3B%20%7D%20catch%20%28e%29%20%7B%20console.log%28%27search%3A%20exception%20when%20trying%20to%20process%20OpenSearch%20description%20XML%3A%20%27%2C%20e%29%3B%20%7D%20%7D%29%3B%20return%3B%20%7D%20%20var%20input%3B%20var%20invisibleInputs%20%3D%20%5B%5D%3B%20var%20allSearchInputs%20%3D%20document.querySelectorAll%28%27input%5Btype%3D%22search%22%5D%27%29%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20allSearchInputs.length%3B%20i%2B%2B%29%20%7B%20if%20%28%21allSearchInputs%5Bi%5D.offsetHeight%29%20%7B%20console.log%28%27search%3A%20found%20invisible%20dedicated%20search%20input%3A%20%27%2C%20input%29%3B%20invisibleInputs.push%28allSearchInputs%5Bi%5D%29%3B%20continue%3B%20%7D%20input%20%3D%20allSearchInputs%5Bi%5D%3B%20break%3B%20%7D%20if%20%28input%29%20%7B%20console.log%28%27search%3A%20found%20visible%20dedicated%20search%20input%3A%20%27%2C%20input%29%3B%20%7D%20%20if%20%28%21input%29%20%7B%20var%20controlNames%20%3D%20%5B%20%27q%27%2C%20%27query%27%2C%20%27search%27%2C%20%27searchword%27%2C%20%27s%27%2C%20%27filter%27%20%5D%3B%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20controlNames.length%3B%20i%2B%2B%29%20%7B%20input%20%3D%20document.querySelector%28%27input%5Btype%3D%22text%22%5D%5Bname%3D%22%27%20%2B%20controlNames%5Bi%5D%20%2B%20%27%22%5D%2C%20input%3Anot%28%5Btype%5D%29%5Bname%3D%22%27%20%2B%20controlNames%5Bi%5D%20%2B%20%27%22%5D%27%29%3B%20if%20%28input%29%20%7B%20if%20%28%21input.offsetHeight%29%20%7B%20console.log%28%60search%3A%20found%20invisible%20search%20input%20with%20name%3D%22%24%7BcontrolNames%5Bi%5D%7D%22%3A%20%60%2C%20input%29%3B%20invisibleInputs.push%28currInput%29%3B%20continue%3B%20%7D%20console.log%28%60search%3A%20found%20visible%20search%20input%20with%20name%3D%22%24%7BcontrolNames%5Bi%5D%7D%22%3A%20%60%2C%20input%29%3B%20break%3B%20%7D%20%7D%20%7D%20var%20searchControlRegexps%20%3D%20%5B%20%2Fsearch%7Cquery%7Czoek%7Ccherche%7Csuch%7Cbusca%7Ccerca%2Fi%2C%20%2F%28%5E%7C%5B_%20-%5D%29%28q%7Cfilter%7Ckeywords%3F%29%28%5CS%2A%28string%7Cterms%3F%7Cbox%7Cfield%29%29%3F%28%5B_%20-%5D%7C%24%29%2Fi%2C%20%5D%3B%20%20if%20%28%21input%29%20%7B%20var%20inputAttributesToCheck%20%3D%20%5B%20%27name%27%2C%20%27id%27%2C%20%27class%27%2C%20%27placeholder%27%2C%20%27title%27%20%5D%3B%20var%20allTextInputs%20%3D%20document.querySelectorAll%28%27input%3Anot%28%5Btype%5D%29%2C%20input%5Btype%3D%22text%22%5D%27%29%3B%20for%20%28var%20i%20%3D%200%3B%20%21input%20%26%26%20i%20%3C%20inputAttributesToCheck.length%3B%20i%2B%2B%29%20%7B%20var%20attributeToCheck%20%3D%20inputAttributesToCheck%5Bi%5D%3B%20for%20%28var%20j%20%3D%200%3B%20%21input%20%26%26%20j%20%3C%20searchControlRegexps.length%3B%20j%2B%2B%29%20%7B%20var%20regexp%20%3D%20searchControlRegexps%5Bj%5D%3B%20for%20%28var%20k%20%3D%200%3B%20%21input%20%26%26%20k%20%3C%20allTextInputs.length%3B%20k%2B%2B%29%20%7B%20var%20currInput%20%3D%20allTextInputs%5Bk%5D%3B%20var%20attributeValue%20%3D%20currInput.getAttribute%28attributeToCheck%29%20%7C%7C%20%27%27%3B%20if%20%28attributeValue.match%28regexp%29%29%20%7B%20if%20%28%21currInput.offsetHeight%29%20%7B%20console.log%28%60search%3A%20found%20invisible%20input%20with%20attribute%20%24%7BattributeToCheck%7D%3D%22%24%7BattributeValue%7D%22%20matching%20%24%7Bregexp%7D%3A%20%60%2C%20input%29%3B%20invisibleInputs.push%28currInput%29%3B%20continue%3B%20%7D%20input%20%3D%20currInput%3B%20console.log%28%60search%3A%20found%20visible%20input%20with%20attribute%20%24%7BattributeToCheck%7D%3D%22%24%7BattributeValue%7D%22%20matching%20%24%7Bregexp%7D%3A%20%60%2C%20input%29%3B%20break%3B%20%7D%20%7D%20%7D%20%7D%20%7D%20%20if%20%28%21input%29%20%7B%20var%20formAttributesToCheck%20%3D%20%5B%20%27action%27%2C%20%27id%27%2C%20%27class%27%2C%20%27name%27%2C%20%27title%27%20%5D%3B%20for%20%28var%20i%20%3D%200%3B%20%21input%20%26%26%20i%20%3C%20formAttributesToCheck.length%3B%20i%2B%2B%29%20%7B%20var%20attributeToCheck%20%3D%20formAttributesToCheck%5Bi%5D%3B%20for%20%28var%20j%20%3D%200%3B%20%21input%20%26%26%20j%20%3C%20searchControlRegexps.length%3B%20j%2B%2B%29%20%7B%20var%20regexp%20%3D%20searchControlRegexps%5Bj%5D%3B%20for%20%28var%20k%20%3D%200%3B%20%21input%20%26%26%20k%20%3C%20document.forms.length%3B%20k%2B%2B%29%20%7B%20var%20currForm%20%3D%20document.forms%5Bk%5D%3B%20var%20attributeValue%20%3D%20currForm.getAttribute%28attributeToCheck%29%20%7C%7C%20%27%27%3B%20if%20%28attributeValue.match%28regexp%29%29%20%7B%20var%20currInput%20%3D%20currForm.querySelector%28%27input%3Anot%28%5Btype%5D%29%2C%20input%5Btype%3D%22text%22%5D%27%29%3B%20if%20%28currInput%29%20%7B%20if%20%28%21currInput.offsetHeight%29%20%7B%20console.log%28%60search%3A%20found%20invisible%20input%20in%20search%20form%20with%20attribute%20%24%7BattributeToCheck%7D%3D%22%24%7BattributeValue%7D%22%20matching%20%24%7Bregexp%7D%3A%20%60%2C%20currInput%29%3B%20invisibleInputs.push%28currInput%29%3B%20continue%3B%20%7D%20console.log%28%60search%3A%20found%20visible%20input%20in%20search%20form%20with%20attribute%20%24%7BattributeToCheck%7D%3D%22%24%7BattributeValue%7D%22%20matching%20%24%7Bregexp%7D%3A%20%60%2C%20currInput%29%3B%20input%20%3D%20currInput%3B%20break%3B%20%7D%20%7D%20%7D%20%7D%20%7D%20%7D%20%20if%20%28%21input%20%26%26%20invisibleInputs.length%29%20%7B%20input%20%3D%20invisibleInputs%5B0%5D%3B%20console.log%28%27search%3A%20defaulting%20to%20first%20invisible%20input%20found%3A%20%27%2C%20input%29%3B%20%7D%20%20if%20%28%21input%29%20%7B%20alert%28%27search%3A%20could%20not%20find%20search%20form%20on%20the%20current%20page.%27%29%3B%20return%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%2B%20%27%27%20%7C%7C%20prompt%28%27Please%20enter%20your%20site%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20%20if%20%28s%29%20%7B%20%20input.scrollIntoView%28%7B%20behavior%3A%20%27smooth%27%2C%20block%3A%20%27center%27%2C%20inline%3A%20%27center%27%20%7D%29%3B%20setTimeout%28function%20%28%29%20%7B%20input.focus%28%29%3B%20%7D%2C%20250%29%3B%20input.value%20%3D%20s%3B%20%20var%20eventTypes%20%3D%20%5B%27keypress%27%2C%20%27keyup%27%2C%20%27keydown%27%5D%3B%20%20var%20isUnloading%20%3D%20false%3B%20window.addEventListener%28%27unload%27%2C%20function%20%28event%29%20%7B%20console.log%28%27search%3A%20caught%20unload%20event%3B%20not%20dispatching%20any%20more%20synthetic%20events%20on%20the%20search%20input%21%27%29%3B%20isUnloading%20%3D%20true%3B%20%7D%29%3B%20%20function%20dispatchNextEvent%28%29%20%7B%20if%20%28isUnloading%29%20%7B%20return%3B%20%7D%20var%20eventType%20%3D%20eventTypes.shift%28%29%3B%20if%20%28%21eventType%29%20%7B%20%20if%20%28input.form%20%26%26%20input.form.tagName%20%26%26%20input.form.tagName.toLowerCase%28%29%20%3D%3D%3D%20%27form%27%29%20%7B%20%20HTMLFormElement.prototype.submit.call%28input.form%29%3B%20%7D%20%20return%3B%20%7D%20%20console.log%28%27search%3A%20dispatching%20synthetic%20input%20event%27%29%3B%20input.dispatchEvent%28new%20Event%28%27input%27%2C%20%7B%7D%29%29%3B%20%20console.log%28%60search%3A%20dispatching%20synthetic%20%24%7BeventType%7D%20event%60%29%3B%20input.dispatchEvent%28new%20KeyboardEvent%28eventType%2C%20%7B%20keyCode%3A%2013%2C%20charCode%3A%2013%2C%20which%3A%2013%20%7D%29%29%3B%20setTimeout%28dispatchNextEvent%2C%20250%29%3B%20%7D%20dispatchNextEvent%28%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/search.js */" ADD_DATE="1476700661" LAST_MODIFIED="1737904994" SHORTCUTURL="search">Search site</A>
<DD><P>Search the current site for the given text using the site's own search form,
if any.
This bookmarklet first looks for an OpenSearch description (an XML file with
a URL template): https://developer.mozilla.org/en-US/docs/Web/OpenSearch
If that does not exist, it looks foe `INPUT[type="search"]`. If not found,
it looks for typical values in the `INPUT` attributes like `name`, `id`,
`class`, … If it still could not find anything, it looks for those values in
`FORM` attributes like `id`, `class`, `action`, …
If no search inputs were found, it alerts the user.</P></DD>
<DT><A HREF="javascript:%28function%20tin%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20image%20URL%20for%20TinEye%20to%20reverse%20search%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20if%20%28%21s.match%28%2F%5E%28%5Cw%2B%3A%28%5C%2F%5C%2F%29%3F%29%3F%5B%5E%5Cs%5D%2B%28%5C.%5B%5E%5Cs%5D%2B%29%2B%5C%2F%2F%29%29%20%7B%20alert%28%60Are%20you%20sure%20that%E2%80%99s%20an%20image%20URL%3F%5Cn%5Cn%24%7Bs%7D%60%29%3B%20return%3B%20%7D%20location%20%3D%20%27https%3A%2F%2Ftineye.com%2Fsearch%2F%3Furl%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/tineye.js */" ADD_DATE="1306354325" LAST_MODIFIED="1684830001" SHORTCUTURL="tin">TinEye</A>
<DD><P>Search images using the TinEye reverse image search.</P></DD>
<DT><A HREF="javascript:%28function%20tw%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Twitter%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Ftwitter.com%2Fsearch%3Ff%3Dlive%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/tw.js */" ADD_DATE="1328894482" LAST_MODIFIED="1580849343" SHORTCUTURL="tw">Twitter search</A>
<DD><P>Search Twitter for the specified text or URL.</P></DD>
<DT><A HREF="javascript:%28function%20tweep%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20Twitter%20user%20to%20search%20for%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Ftwitter.com%2Fsearch%3Ff%3Duser%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/tweep.js */" ADD_DATE="1328894482" LAST_MODIFIED="1595942660" SHORTCUTURL="tweep">Twitter user (Tweep) search</A>
<DD><P>Search Twitter for the specified user.</P></DD>
<DT><A HREF="javascript:%28function%20wb%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20URL%20to%20look%20up%20in%20the%20Wayback%20Machine%3A%27%2C%20location%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20%20s%20%3D%20s.replace%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%5C%2A%3F%7C%5C%2A%29%5Cs%2B%2F%2C%20%27%241%2F%27%29%3B%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fweb.archive.org%2Fweb%2F%27%20%2B%20s%3B%20%7D%20%7D%29%28%29%3B/* ./search/wb.js */" ADD_DATE="1308257801" LAST_MODIFIED="1704889981" SHORTCUTURL="wb">Wayback Machine</A>
<DD><P>View the Internet Archive Wayback Machine's latest cache for the specified URL.</P></DD>
<DT><A HREF="javascript:%28function%20yanimg%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20Yandex.Images%20search%20query%20or%20image%20URL%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20var%20words%20%3D%20s.split%28%27%20%27%29%2C%20matches%3B%20%20if%20%28words%5B0%5D.match%28%2F%5E%28%5Cw%2B%3A%28%5C%2F%5C%2F%29%3F%29%3F%5B%5E%5Cs%5D%2B%28%5C.%5B%5E%5Cs%5D%2B%29%2B%5C%2F%2F%29%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fyandex.com%2Fimages%2Fsearch%3Frpt%3Dimageview%26url%3D%27%20%2B%20encodeURIComponent%28words%5B0%5D%29%20%2B%20%27%26text%3D%27%20%2B%20encodeURIComponent%28words.slice%281%29.join%28%27%20%27%29%29%3B%20return%3B%20%7D%20location%20%3D%20%27https%3A%2F%2Fyandex.com%2Fimages%2Fsearch%3Ftext%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/yanimg.js */" ADD_DATE="1328894482" LAST_MODIFIED="1577659545" SHORTCUTURL="yanimg">Yandex.Images</A>
<DD><P>Search Yandex with its reverse image search.</P></DD>
<DT><A HREF="javascript:%28function%20yt%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20%20const%20invidiousDetectorSelector%20%3D%20%5B%20%27head%20link%5Btitle%3D%22Invidious%22%5D%27%2C%20%27script%5Bid%3D%22video_data%22%5D%5Btype%3D%22application%2Fjson%22%5D%27%2C%20%27a%5Bhref%3D%22https%3A%2F%2Fgithub.com%2Fiv-org%2Finvidious%22%5D%27%2C%20%5D.join%28%27%2C%20%27%29%3B%20if%20%28location.host%20%21%3D%3D%20%27www.youtube.com%27%20%26%26%20document.querySelector%28invidiousDetectorSelector%29%29%20%7B%20if%20%28location.pathname.match%28%2F%5E%5C%2F%28embed%7Cwatch%7Cplaylist%7Cchannel%29%28%24%7C%5C%2F%29%2F%29%29%20%7B%20location.host%20%3D%20%27www.youtube.com%27%3B%20return%3B%20%7D%20else%20if%20%28location.pathname%20%3D%3D%3D%20%27%2Fsearch%27%29%20%7B%20let%20newUrl%20%3D%20new%20URL%28location%29%3B%20newUrl.host%20%3D%20%27www.youtube.com%27%3B%20newUrl.pathname%20%3D%20%27%2Fresults%27%3B%20const%20query%20%3D%20newUrl.searchParams.get%28%27q%27%29%3B%20newUrl.search%20%3D%20%27%27%3B%20newUrl.searchParams.set%28%27search_query%27%2C%20query%29%3B%20location%20%3D%20newUrl%3B%20return%3B%20%7D%20%7D%20%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20YouTube%20search%20query%20%28or%20jump%20directly%20to%20a%2011-character%20video%20ID%2C%20optionally%20followed%20by%20%22%20%21%22%29%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20s%20%3D%20s.replace%28%2F%5CuFEFF%2Fg%2C%20%27%27%29%3B%20%20var%20matches%3B%20if%20%28%28matches%20%3D%20s.match%28%2F%5E%28%5B-_a-zA-Z0-9%5D%7B11%7D%29%28%20%2A%21%29%3F%24%2F%29%29%20%26%26%20%21s.match%28%2F%5E%28%28%5BA-Z%5D%3F%5Ba-z-%5D%2B%29%7C%28%5BA-Z-%5D%2B%29%29%24%2F%29%29%20%7B%20if%20%28matches%5B2%5D%29%20%7B%20var%20html%20%3D%20%27%3Ciframe%20width%3D%22854%22%20height%3D%22510%22%20src%3D%22https%3A%2F%2Fyewtu.be%2Fembed%2F%27%20%2B%20encodeURIComponent%28matches%5B1%5D%29%20%2B%20%27%22%3E%3C%2Fiframe%3E%27%3B%20%20HTMLDocument.prototype.open.call%28document%2C%20%27text%2Fhtml%3B%20charset%3DUTF-8%27%29%3B%20HTMLDocument.prototype.write.call%28document%2C%20html%29%3B%20HTMLDocument.prototype.close.call%28document%29%3B%20%7D%20else%20%7B%20location%20%3D%20%27https%3A%2F%2Fyewtu.be%2Fwatch%3Fv%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%20else%20%7B%20%20var%20filters%20%3D%20%7B%20video%3A%20%7B%20type%3A%20%27video%27%2C%20%7D%2C%20channel%3A%20%7B%20type%3A%20%27channel%27%2C%20%7D%2C%20playlist%3A%20%7B%20type%3A%20%27playlist%27%2C%20%7D%2C%20short%3A%20%7B%20duration%3A%20%27short%27%2C%20%7D%2C%20medium%3A%20%7B%20duration%3A%20%27medium%27%2C%20%7D%2C%20long%3A%20%7B%20duration%3A%20%27long%27%2C%20%7D%2C%20live%3A%20%7B%20features%3A%20%27live%27%2C%20%7D%2C%20hd%3A%20%7B%20features%3A%20%27hd%27%2C%20%7D%2C%20%274k%27%3A%20%7B%20features%3A%20%27four_k%27%2C%20%7D%2C%20views%3A%20%7B%20sort%3A%20%27views%27%2C%20%7D%2C%20popular%3A%20%7B%20sort%3A%20%27views%27%2C%20%7D%2C%20date%3A%20%7B%20sort%3A%20%27date%27%2C%20%7D%2C%20recent%3A%20%7B%20sort%3A%20%27date%27%2C%20%7D%2C%20%7D%3B%20let%20url%20%3D%20new%20URL%28%27https%3A%2F%2Fyewtu.be%2Fsearch%27%29%3B%20const%20filterRegexp%20%3D%20new%20RegExp%28%27%5E%5C%5Cs%2A--%28%27%20%2B%20Object.keys%28filters%29.join%28%27%7C%27%29%20%2B%20%27%29%5C%5Cs%2B%28.%2A%29%24%27%29%3B%20while%20%28%28matches%20%3D%20s.match%28filterRegexp%29%29%29%20%7B%20const%20filterName%20%3D%20matches%5B1%5D%3B%20s%20%3D%20matches%5B2%5D%3B%20Object.entries%28filters%5BfilterName%5D%29.forEach%28%28%5Bkey%2C%20value%5D%29%20%3D%3E%20%7B%20url.searchParams.append%28key%2C%20value%29%3B%20%7D%29%3B%20%7D%20url.searchParams.set%28%27q%27%2C%20s%29%3B%20location%20%3D%20url%3B%20%7D%20%7D%20%7D%29%28%29%3B/* ./search/yt.js */" ADD_DATE="1336165056" LAST_MODIFIED="1730401620" SHORTCUTURL="yt">YouTube search</A>
<DD><P>Search YouTube for the specified or selected text, using Invidious (“an
alternative front-end to YouTube”).
If the text looks like a video ID, you are taken directly to the video.
If you append a "!" to the video ID, it will be opened in an IFRAME, so you
do not need to sign in for "restricted" videos.</P></DD>
<DT><A HREF="javascript:%28function%20yttop%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20your%20YouTube%20topic%20search%20query%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20s%20%3D%20s.replace%28%2F%5CuFEFF%2Fg%2C%20%27%27%29%3B%20location%20%3D%20%27https%3A%2F%2Fyewtu.be%2Fsearch%3Fq%3D%27%20%2B%20encodeURIComponent%28s%20%2B%20%27%20%22Provided%20to%20YouTube%20by%22%27%29%3B%20%7D%20%7D%29%28%29%3B/* ./search/yttop.js */" ADD_DATE="1328465540" LAST_MODIFIED="1730100985" SHORTCUTURL="yttop">YouTube topic search</A>
<DD><P>Search YouTube for the specified or selected text inside “topic” videos,
using Invidious (“an alternative front-end to YouTube”).
“Topic” videos are the official channels for artists/bands/musicians and can
be recognized by either “ - Topic” or “🎵” suffixed to the name. However, it
is easier to search for the text “Provided to YouTube by”, which is at the
start of the auto-generated description for music “videos”.</P></DD>
</DL>
<DT><H3>Site-specific</H3>
<DD><P>Might as well turn these into Greasemonkey scripts one day.</P>
<DL><P>
<DT><H3>Strava</H3>
<DD><P>Utilities for “the social network for athletes”.</P>
<DL><P>
<DT><A HREF="javascript:%28function%20pace2speed%28%29%20%7B%20%27use%20strict%27%3B%20%20function%20execute%28document%29%20%7B%20const%20possiblePaceLeafNodes%20%3D%20%5B%5D%3B%20Array.from%28document.querySelectorAll%28%27body%20%2A%27%29%29.forEach%28node%20%3D%3E%20%7B%20const%20matches%20%3D%20node.textContent.match%28%2F%5E%5Cs%2A%28%3F%3Cminutes%3E%5Cd%2B%29%5Cs%2A%28%3A%7C%27%7C%E2%80%B2%7Cmin%28ute%29%3Fs%3F%29%5Cs%2A%28%3F%3Cseconds%3E%5Cd%2B%29%5Cs%2A%28%27%27%7C%22%7C%E2%80%B3%7Csec%28ond%29%3Fs%3F%29%3F%5Cs%2A%5C%2F%5Cs%2A%28%3F%3Cunit%3Ekm%7Cmi%29%2F%29%20%3F%3F%20node.textContent.match%28%2F%5E%5Cs%2A%28%3F%3Cminutes%3E%5Cd%2B%29%5Cs%2A%3A%5Cs%2A%28%3F%3Cseconds%3E%5Cd%2B%29%5Cs%2A%28%3F%3Amin%28%3F%3Autes%3F%29%3F%29%5Cs%2A%5C%2F%5Cs%2A%28%3F%3Cunit%3Ekm%7Cmi%29%2F%29%3B%20if%20%28%21matches%29%20%7B%20return%3B%20%7D%20const%20durationInSeconds%20%3D%20parseInt%28matches.groups.minutes%2C%2010%29%20%2A%2060%20%2B%20parseInt%28matches.groups.seconds%2C%2010%29%3B%20let%20speedInKilometersPerHour%20%3D%203600%20%2F%20durationInSeconds%3B%20if%20%28matches.groups.unit%20%3D%3D%3D%20%27mi%27%29%20%7B%20speedInKilometersPerHour%20%2A%3D%201.60934%3B%20%7D%20speedInKilometersPerHour%20%3D%20speedInKilometersPerHour.toFixed%281%29%3B%20node.setAttribute%28%27xxxJanPace2Speed%27%2C%20speedInKilometersPerHour%29%3B%20possiblePaceLeafNodes.push%28node%29%3B%20%7D%29%3B%20%20possiblePaceLeafNodes.forEach%28node%20%3D%3E%20%7B%20if%20%28node.querySelector%28%27%5BxxxJanPace2Speed%5D%27%29%29%20%7B%20return%3B%20%7D%20node.textContent%20%3D%20%60%24%7Bnode.getAttribute%28%27xxxJanPace2Speed%27%29%7D%20km%2Fh%60%3B%20%7D%29%3B%20%20try%20%7B%20Array.from%28%20document.querySelectorAll%28%27frame%2C%20iframe%2C%20object%5Btype%5E%3D%22text%2Fhtml%22%5D%2C%20object%5Btype%5E%3D%22application%2Fxhtml%2Bxml%22%5D%27%29%20%29.forEach%28%20elem%20%3D%3E%20execute%28elem.contentDocument%29%20%29%3B%20%7D%20catch%20%28e%29%20%7B%20%20%7D%20%7D%20execute%28document%29%3B%20%7D%29%28%29%3B/* ./site-specific/strava/pace2speed.js */" ADD_DATE="1640551810" LAST_MODIFIED="1640551810" SHORTCUTURL="pace2speed">Pace2Speed</A>
<DD><P>Convert pace (e.g. “4:38/km”) to speed (e.g. “12.95 km/h”) on a web page.</P></DD>
<DT><A HREF="javascript:%28function%20sact%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20Strava%20activity%20name%20to%20look%20for%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.strava.com%2Fathlete%2Ftraining%3Fkeywords%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./site-specific/strava/sact.js */" ADD_DATE="1306354325" LAST_MODIFIED="1679899728" SHORTCUTURL="sact">Strava activity</A>
<DD><P>Search for a Strava activity.</P></DD>
<DT><A HREF="javascript:%28function%20sath%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20Strava%20athlete%2Fmember%20name%20to%20look%20for%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.strava.com%2Fathletes%2Fsearch%3Futf8%3D%25E2%259C%2593%26text%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./site-specific/strava/sath.js */" ADD_DATE="1345738094" LAST_MODIFIED="1508600101" SHORTCUTURL="sath">Strava athlete</A>
<DD><P>Search for a Strava member (athlete).</P></DD>
<DT><A HREF="javascript:%28function%20sclub%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20Strava%20club%20name%20to%20look%20for%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.strava.com%2Fclubs%2Fsearch%3Futf8%3D%25E2%259C%2593%26text%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./site-specific/strava/sclub.js */" ADD_DATE="1306052662" LAST_MODIFIED="1508600101" SHORTCUTURL="sclub">Strava club</A>
<DD><P>Search for a Strava club.</P></DD>
<DT><A HREF="javascript:%28function%20shide%28%29%20%7B%20%20%20const%20cyrb53%20%3D%20function%28str%2C%20seed%20%3D%200%29%20%7B%20let%20h1%20%3D%200xdeadbeef%20%5E%20seed%2C%20h2%20%3D%200x41c6ce57%20%5E%20seed%3B%20for%20%28let%20i%20%3D%200%2C%20ch%3B%20i%20%3C%20str.length%3B%20i%2B%2B%29%20%7B%20ch%20%3D%20str.charCodeAt%28i%29%3B%20h1%20%3D%20Math.imul%28h1%20%5E%20ch%2C%202654435761%29%3B%20h2%20%3D%20Math.imul%28h2%20%5E%20ch%2C%201597334677%29%3B%20%7D%20h1%20%3D%20Math.imul%28h1%20%5E%20%28h1%3E%3E%3E16%29%2C%202246822507%29%20%5E%20Math.imul%28h2%20%5E%20%28h2%3E%3E%3E13%29%2C%203266489909%29%3B%20h2%20%3D%20Math.imul%28h2%20%5E%20%28h2%3E%3E%3E16%29%2C%202246822507%29%20%5E%20Math.imul%28h1%20%5E%20%28h1%3E%3E%3E13%29%2C%203266489909%29%3B%20return%204294967296%20%2A%20%282097151%20%26%20h2%29%20%2B%20%28h1%3E%3E%3E0%29%3B%20%7D%3B%20function%20calculateHash%28str%29%20%7B%20return%20cyrb53%28str%29.toString%2816%29%3B%20%7D%20%20function%20parseDistance%28str%29%20%7B%20const%20matches%20%3D%20str.match%28%2F%5Cb%28%5B0-9%5D%2B%28%5B.%2C%5D%5B0-9%5D%2A%29%29%5Cs%2Akm%5Cs%2A%24%2F%29%3B%20if%20%28matches%29%20%7B%20return%20parseFloat%28matches%5B1%5D.replace%28%27%2C%27%2C%20%27.%27%29%29%3B%20%7D%20%7D%20%20function%20parseElevation%28str%29%20%7B%20const%20matches%20%3D%20str.match%28%2F%5Cb%28-%3F%28%5B0-9%5D%2B%2C%29%2A%5B0-9%5D%2B%29%5Cs%2Am%5Cs%2A%24%2F%29%3B%20if%20%28matches%29%20%7B%20return%20parseFloat%28matches%5B1%5D.replace%28%2F%2C%2Fg%2C%20%27%27%29%29%3B%20%7D%20%7D%20%20function%20parseGradient%28str%29%20%7B%20const%20matches%20%3D%20str.match%28%2F%28%3F%3A%5E%7C%20%29%28-%3F%5B0-9%5D%2B%28%5B.%2C%5D%5B0-9%5D%2B%29%3F%29s%2A%25%5Cs%2A%24%2F%29%3B%20if%20%28matches%29%20%7B%20return%20parseFloat%28matches%5B1%5D.replace%28%27%2C%27%2C%20%27.%27%29%29%3B%20%7D%20else%20console.log%28%7Bstr%2C%20matches%7D%29%3B%20%7D%20const%20svgHashesToActivityTypes%20%3D%20%7B%20%2711aee5c6a05c68%27%3A%20%27Ride%27%2C%20%277bff3f2fc88c%27%3A%20%27MountainBikeRide%27%2C%20%277a2bf999b4f3b%27%3A%20%27GravelRide%27%2C%20%27931d5cb9192ef%27%3A%20%27EBikeRide%27%2C%20%271b2b11443451d8%27%3A%20%27Run%27%2C%20%27f2bdf771a3337%27%3A%20%27TrailRun%27%2C%20%271eb790ca0d49e3%27%3A%20%27Hike%27%2C%20%27f4f09ecc49e9d%27%3A%20%27Walk%27%2C%20%27b75670032154d%27%3A%20%27Swim%27%2C%20%271ce1f590343417%27%3A%20%27IceSkate%27%2C%20%2712a38b7f5edc98%27%3A%20%27BackcountrySki%27%2C%20%20%27bff242f16fcb0%27%3A%20%27Wheelchair%27%2C%20%27b34dc55e98b69%27%3A%20%27WeightTraining%27%2C%20%271877faad59afe8%27%3A%20%27Windsurf%27%2C%20%7D%3B%20const%20css%20%3D%20%60%40charset%20%22utf-8%22%3B%20.xxxJanStravaHidden%20%7B%20transition%3A%20max-height%200.25s%20ease-in%200s%3B%20overflow%3A%20hidden%3B%20max-height%3A%2012ex%3B%20border-top%3A%200.5ex%20solid%20%23fc4c02%3B%20opacity%3A%200.25%3B%20%7D%20.xxxJanStravaHidden%3Ahover%20%7B%20transition%3A%20%20opacity%200.2s%20ease-in%200s%2C%20border-top-color%201s%20ease-in%200s%2C%20max-height%200.5s%20ease-out%201s%3B%20max-height%3A%201000vh%3B%20border-top%3A%200.5ex%20solid%20transparent%3B%20opacity%3A%201%3B%20%7D%20%20.grid.clubs%20%7B%20max-height%3A%2050vh%3B%20overflow%3A%20scroll%3B%20%7D%20%60%3B%20document.head.appendChild%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.textContent%20%3D%20css%3B%20%20const%20ownProfileLink%20%3D%20Array.from%28document.querySelectorAll%28%27.user-nav%20a%5Bhref%5E%3D%22%2Fathletes%2F%22%5D%27%29%29%20.filter%28a%20%3D%3E%20a.getAttribute%28%27href%27%29.match%28%2F%5E%5C%2Fathletes%5C%2F%5B%5E%5C%2F%5D%2B%5C%2F%3F%24%2F%29%29%5B0%5D%3B%20const%20ownProfileHref%20%3D%20ownProfileLink%3F.getAttribute%28%27href%27%29%3B%20const%20ownProfileUrl%20%3D%20ownProfileLink%3F.href%3B%20%20function%20processEntry%28entry%29%20%7B%20%20const%20isActivity%20%3D%20%21%21entry.querySelector%28%27%5Bclass%2A%3D%22ActivityEntry%22%5D%27%29%3B%20const%20isGroupActivity%20%3D%20%21%21entry.querySelector%28%27%5Bclass%2A%3D%22GroupActivity%22%5D%27%29%3B%20const%20isClubJoin%20%3D%20%21%21%28entry.querySelector%28%27%5Bclass%2A%3D%22AthleteJoinEntry%22%5D%27%29%20%26%26%20entry.querySelector%28%27%5Bclass%2A%3D%22ClubJoin%22%5D%27%29%29%3B%20const%20isChallengeJoin%20%3D%20%21%21%28entry.querySelector%28%27%5Bclass%2A%3D%22AthleteJoinEntry%22%5D%27%29%20%26%26%20entry.querySelector%28%27%5Bclass%2A%3D%22ChallengeJoin%22%5D%27%29%29%3B%20const%20isPromo%20%3D%20%21%21entry.querySelector%28%27%5Bclass%2A%3D%22PromoEntry%22%5D%27%29%3B%20const%20isPost%20%3D%20%21%21entry.querySelector%28%27a%5Bhref%2A%3D%22%2Fposts%2F%22%5D%27%29%3B%20const%20firstActivityFromGroup%20%3D%20isGroupActivity%20%26%26%20entry.querySelector%28%27%5Bclass%2A%3D%22GroupActivityEntry%22%5D%27%29%3B%20%20const%20isOwnActivity%20%3D%20%21%21entry.querySelector%28%27%5Bclass%2A%3D%22Owner%22%5D%27%29%3F.querySelector%28%60a%5Bhref%3D%22%24%7BownProfileHref%7D%22%5D%60%29%3B%20const%20isCommute%20%3D%20%21%21document.evaluate%28%27.%2F%2F%2A%5B%40data-testid%3D%22tag%22%5D%5Bcontains%28.%2C%20%22Commute%22%29%20or%20contains%28.%2C%20%22Woon-werkverkeer%22%29%5D%27%2C%20entry%2C%20null%2C%20XPathResult.FIRST_ORDERED_NODE_TYPE%2C%20null%29.singleNodeValue%3B%20const%20isVirtual%20%3D%20%21%21document.evaluate%28%27.%2F%2F%2A%5B%40data-testid%3D%22tag%22%5D%5Bcontains%28.%2C%20%22Virtu%22%29%5D%27%2C%20entry%2C%20null%2C%20XPathResult.FIRST_ORDERED_NODE_TYPE%2C%20null%29.singleNodeValue%3B%20const%20activityName%20%3D%20entry.querySelector%28%27%5Bdata-testid%3D%22activity_name%22%5D%27%29%3F.textContent%3B%20%20const%20svgIcon%20%3D%20entry.querySelector%28%27%5Bclass%2A%3D%22activityIcon%22%5D%20path%27%29%3B%20const%20svgHash%20%3D%20svgIcon%20%3F%20calculateHash%28svgIcon.outerHTML%29%20%3A%20%27%27%3B%20const%20activityType%20%3D%20svgHashesToActivityTypes%5BsvgHash%5D%3B%20%20if%20%28isActivity%29%20%7B%20const%20svg%20%3D%20svgIcon%3F.closest%28%27svg%27%29%3B%20const%20svgTitle%20%3D%20%28svg%3F.getAttribute%28%27title%27%29%20%7C%7C%20svg%3F.querySelector%28%27title%27%29%3F.textContent%29%3F.replace%28%2F%5B%20-%5D%2Fg%2C%20%27%27%29%3B%20if%20%28typeof%20activityType%20%3D%3D%3D%20%27undefined%27%29%20%7B%20if%20%28typeof%20svgTitle%20%3D%3D%3D%20%27undefined%27%29%20%7B%20console.warn%28%60%E2%9A%A0%EF%B8%8F%20Activity%20%E2%80%9C%24%7BactivityName%7D%E2%80%9D%3A%20Unknown%20activity%20type%20for%20SVG%20with%20checksum%20%E2%80%9C%24%7BsvgHash%7D%E2%80%9D%20but%20without%20SVG%20title%3B%20svg%3A%20%60%2C%20svg%2C%20%27%3B%20entry%3A%20%27%2C%20entry%29%3B%20%7D%20else%20%7B%20svgHashesToActivityTypes%5BsvgHash%5D%20%3D%20svgTitle%3B%20console.info%28%60%F0%9F%86%95%20Activity%20%E2%80%9C%24%7BactivityName%7D%E2%80%9D%3A%20Updated%20svgHashesToActivityTypes%20with%20checksum%20%E2%80%9C%24%7BsvgHash%7D%E2%80%9D%20for%20title%20%E2%80%9C%24%7BsvgTitle%7D%E2%80%9D%60%29%3B%20console.log%28%60const%20svgHashesToActivityTypes%20%3D%20%24%7BJSON.stringify%28svgHashesToActivityTypes%2C%20null%2C%20%27%20%27%29%7D%3B%5Cn%5Cn%60%2C%20svgHashesToActivityTypes%29%3B%20%7D%20%7D%20else%20if%20%28typeof%20svgTitle%20%21%3D%3D%20%27undefined%27%20%26%26%20svgHashesToActivityTypes%5BsvgHash%5D%20%21%3D%3D%20svgTitle%20%26%26%20%21isVirtual%29%20%7B%20console.error%28%60%E2%9A%A0%EF%B8%8F%20%E2%9A%A0%EF%B8%8F%20%E2%9A%A0%EF%B8%8F%20Activity%20%E2%80%9C%24%7BactivityName%7D%E2%80%9D%3A%20SVG%20CHECKSUM%20COLLISION%3F%21%20%E2%80%9C%24%7BsvgHash%7D%E2%80%9D%20already%20is%20%E2%80%9C%24%7BsvgHashesToActivityTypes%5BsvgHash%5D%7D%E2%80%9D%2C%20not%20%E2%80%9C%24%7BsvgTitle%7D%E2%80%9D%21%20%E2%9A%A0%EF%B8%8F%20%E2%9A%A0%EF%B8%8F%20%E2%9A%A0%EF%B8%8F%20%3B%20svg%3A%20%60%2C%20svg%2C%20%27%3B%20entry%3A%20%27%2C%20entry%29%20%7D%20%7D%20const%20isRide%20%3D%20activityType%20%3D%3D%3D%20%27Ride%27%3B%20const%20isMountainBikeRide%20%3D%20activityType%20%3D%3D%3D%20%27MountainBikeRide%27%3B%20const%20isGravelRide%20%3D%20activityType%20%3D%3D%3D%20%27GravelRide%27%3B%20const%20isEBikeRide%20%3D%20activityType%20%3D%3D%3D%20%27EBikeRide%27%3B%20const%20isRun%20%3D%20activityType%20%3D%3D%3D%20%27Run%27%3B%20const%20isTrailRun%20%3D%20activityType%20%3D%3D%3D%20%27TrailRun%27%3B%20const%20isHike%20%3D%20activityType%20%3D%3D%3D%20%27Hike%27%3B%20const%20isWalk%20%3D%20activityType%20%3D%3D%3D%20%27Walk%27%3B%20const%20isSwim%20%3D%20activityType%20%3D%3D%3D%20%27Swim%27%3B%20const%20isWaterSport%20%3D%20activityType%20%3D%3D%3D%20%27WaterSport%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Surfing%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Kitesurf%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Windsurf%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Canoeing%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Kayaking%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Rowing%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27StandUpPaddling%27%3B%20const%20isWinterSport%20%3D%20activityType%20%3D%3D%3D%20%27WinterSport%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27AlpineSki%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27BackcountrySki%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27NordicSki%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27RollerSki%27%20%20%7C%7C%20activityType%20%3D%3D%3D%20%27CrossCountrySkiing%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Snowboard%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27Snowshoe%27%20%7C%7C%20activityType%20%3D%3D%3D%20%27IceSkate%27%3B%20%20const%20isOther%20%3D%20%21isCommute%20%26%26%20%21isRide%20%26%26%20%21isMountainBikeRide%20%26%26%20%21isGravelRide%20%26%26%20%21isVirtual%20%26%26%20%21isEBikeRide%20%26%26%20%21isRun%20%26%26%20%21isTrailRun%20%26%26%20%21isHike%20%26%26%20%21isWalk%20%26%26%20%21isSwim%20%26%26%20%21isWaterSport%20%26%26%20%21isWinterSport%20%26%26%20%21isPost%3B%20%20const%20hasPhotos%20%3D%20%21%21entry.querySelector%28%27%5Bdata-testid%3D%22photo%22%5D%27%29%3B%20const%20hasMap%20%3D%20%21%21entry.querySelector%28%27%5Bdata-testid%3D%22map%22%5D%27%29%3B%20%20const%20numKudos%20%3D%20parseInt%28%28firstActivityFromGroup%20%7C%7C%20entry%29.querySelector%28%27%5Bdata-testid%3D%22kudos_count%22%5D%27%29%3F.textContent%2C%2010%29%3B%20const%20hasKudos%20%3D%20numKudos%20%3E%200%3B%20const%20numComments%20%3D%20parseInt%28%28firstActivityFromGroup%20%7C%7C%20entry%29.querySelector%28%27%5Bdata-testid%3D%22comments_count%22%5D%27%29%3F.textContent%2C%2010%29%3B%20const%20hasComments%20%3D%20numComments%20%3E%200%3B%20%20let%20distanceInKm%3B%20let%20hasDistanceInKm%20%3D%20false%3B%20let%20elevationInM%3B%20let%20hasElevationInM%20%3D%20false%3B%20let%20durationInS%3B%20let%20hasDurationInS%20%3D%20false%3B%20const%20stats%20%3D%20%5B%5D%3B%20%28firstActivityFromGroup%20%7C%7C%20entry%29.querySelectorAll%28%27%5Bclass%2A%3D%22list-stats%22%5D%20%3E%20li%2C%20%5Bclass%2A%3D%22listStats%22%5D%20%3E%20li%27%29.forEach%28statContainer%20%3D%3E%20%7B%20const%20statLabelContainer%20%3D%20statContainer.querySelector%28%27%5Bclass%2A%3D%22stat-label%22%5D%2C%20%5Bclass%2A%3D%22statLabel%22%5D%27%29%3B%20const%20statValueContainer%20%3D%20statContainer.querySelector%28%27%5Bclass%2A%3D%22stat-value%22%5D%2C%20%5Bclass%2A%3D%22statValue%22%5D%27%29%3B%20if%20%28statLabelContainer%20%26%26%20statValueContainer%29%20%7B%20stats.push%28%7Blabel%3A%20statLabelContainer.textContent%2C%20value%3A%20statValueContainer.textContent%7D%29%3B%20%7D%20%7D%29%3B%20stats.forEach%28stat%20%3D%3E%20%7B%20const%20label%20%3D%20stat.label%3B%20const%20value%20%3D%20stat.value%3B%20%20if%20%28label.match%28%2F%5E%28distan%7Cafstand%7Cdist%C3%A2ncia%29%2Fi%29%29%20%7B%20const%20parsedValue%20%3D%20parseDistance%28value%29%3B%20if%20%28Number.isFinite%28parsedValue%29%29%20%7B%20hasDistanceInKm%20%3D%20true%3B%20distanceInKm%20%3D%20parsedValue%3B%20%7D%20%7D%20else%20if%20%28label.match%28%2F%5E%28elev%5CS%2A%20gain%7Choogteverschil%7Ch%C3%B6henmeter%7Cdesnivel%7Cdislivello%7Cganho%20de%20eleva%C3%A7%C3%A3o%29%2Fi%29%29%20%7B%20const%20parsedValue%20%3D%20parseElevation%28value%29%3B%20if%20%28Number.isFinite%28parsedValue%29%29%20%7B%20hasElevationInM%20%3D%20true%3B%20elevationInM%20%3D%20parsedValue%3B%20%7D%20%7D%20else%20if%20%28label.match%28%2F%5E%28time%7Ctijd%7Czeit%7Ctiempo%7Ctempo%29%2Fi%29%29%20%7B%20let%20tmpDurationInS%20%3D%200%3B%20let%20hasParsedDuration%20%3D%20true%3B%20value.split%28%2F%5Cs%28%5B0-9%5D%2B%5Cs%2A%5B%5E0-9%5D%2B%29%5Cs%2A%2F%29.forEach%28durationPart%20%3D%3E%20%7B%20let%20matches%3B%20if%20%28durationPart.trim%28%29%20%3D%3D%3D%20%27%27%29%20%7B%20%7D%20else%20if%20%28%28matches%20%3D%20durationPart.match%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%29s%2F%29%29%29%20%7B%20tmpDurationInS%20%2B%3D%20parseInt%28matches%5B1%5D%2C%2010%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20durationPart.match%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%29m%2F%29%29%29%20%7B%20tmpDurationInS%20%2B%3D%20parseInt%28matches%5B1%5D%2C%2010%29%20%2A%2060%3B%20%7D%20else%20if%20%28%28matches%20%3D%20durationPart.match%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%29%5Bhu%5D%2F%29%29%29%20%7B%20tmpDurationInS%20%2B%3D%20parseInt%28matches%5B1%5D%2C%2010%29%20%2A%203600%3B%20%7D%20else%20%7B%20console.log%28%60%E2%80%9C%24%7Bvalue%7D%E2%80%9D%3A%20did%20not%20understand%20duration%20part%20%E2%80%9C%24%7BdurationPart%7D%E2%80%9D%20for%20entry%20%60%2C%20entry%29%3B%20hasParsedDuration%20%3D%20false%3B%20%7D%20%7D%29%3B%20if%20%28hasParsedDuration%29%20%7B%20hasDurationInS%20%3D%20true%3B%20durationInS%20%3D%20tmpDurationInS%3B%20%7D%20%7D%20%7D%29%3B%20%20let%20shouldHide%20%3D%20false%3B%20let%20reasonForHiding%20%3D%20null%3B%20if%20%28%21isActivity%20%26%26%20%21isGroupActivity%20%26%26%20%21isPost%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Not%20an%20activity%20or%20post%27%3B%20%7D%20else%20if%20%28isEBikeRide%20%26%26%20%21hasPhotos%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27E-bike%20ride%20without%20photos%27%3B%20%7D%20else%20if%20%28isVirtual%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Virtual%20ride%27%3B%20%7D%20else%20if%20%28%21hasMap%20%26%26%20%21isGroupActivity%20%26%26%20%21isPost%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27No%20map%2FGPS%20data%20%28and%20not%20a%20group%20activity%20or%20post%29%27%3B%20%7D%20else%20if%20%28isRide%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2030%29%20%26%26%20%28%21hasElevationInM%20%7C%7C%20elevationInM%20%3C%20400%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20ride%20without%20photos%20and%20without%20noteworthy%20elevation%20gain%27%3B%20%7D%20else%20if%20%28isMountainBikeRide%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2020%29%20%26%26%20%28%21hasElevationInM%20%7C%7C%20elevationInM%20%3C%20300%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20mountain%20bike%20ride%20without%20photos%20and%20without%20noteworthy%20elevation%20gain%27%3B%20%7D%20else%20if%20%28isGravelRide%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2030%29%20%26%26%20%28%21hasElevationInM%20%7C%7C%20elevationInM%20%3C%20300%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20gravel%20ride%20without%20photos%20and%20without%20noteworthy%20elevation%20gain%27%3B%20%7D%20else%20if%20%28isRun%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2020%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20run%20without%20photos%27%3B%20%7D%20else%20if%20%28isTrailRun%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2010%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20trail%20run%20without%20photos%27%3B%20%7D%20else%20if%20%28isHike%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2015%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20hike%20without%20photos%27%3B%20%7D%20else%20if%20%28isWalk%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2010%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20walk%20without%20photos%27%3B%20%7D%20else%20if%20%28isSwim%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDurationInS%20%7C%7C%20durationInS%20%3C%203600%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20swim%20without%20photos%27%3B%20%7D%20else%20if%20%28isWinterSport%20%26%26%20%21hasPhotos%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Winter%20sports%20without%20photos%27%3B%20%7D%20else%20if%20%28isOther%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDurationInS%20%7C%7C%20durationInS%20%3C%203600%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Other%20short%20activity%20without%20photos%27%3B%20%7D%20else%20if%20%28isCommute%20%26%26%20%21hasPhotos%20%26%26%20%28%21hasDistanceInKm%20%7C%7C%20distanceInKm%20%3C%2030%29%29%20%7B%20shouldHide%20%3D%20true%3B%20reasonForHiding%20%3D%20%27Short%20commute%20without%20photos%27%3B%20%7D%20if%20%28shouldHide%29%20%7B%20entry.classList.add%28%27xxxJanStravaHidden%27%29%3B%20%7D%20%20entry.title%20%3D%20%5B%20%27Decision%3A%27%2C%20%60shouldHide%20%3D%20%24%7BshouldHide%7D%60%2C%20reasonForHiding%20%3F%20%60reasonForHiding%20%3D%20%24%7BreasonForHiding%7D%60%20%3A%20null%2C%20%27Feed%20entry%20types%3A%27%2C%20%60isActivity%20%3D%20%24%7BisActivity%7D%60%2C%20%60isGroupActivity%20%3D%20%24%7BisGroupActivity%7D%60%2C%20isClubJoin%20%3F%20%60isClubJoin%20%3D%20%24%7BisClubJoin%7D%60%20%3A%20null%2C%20isChallengeJoin%20%3F%20%60isChallengeJoin%20%3D%20%24%7BisChallengeJoin%7D%60%20%3A%20null%2C%20isPromo%20%3F%20%60isPromo%20%3D%20%24%7BisPromo%7D%60%20%3A%20null%2C%20isPost%20%3F%20%60isPost%20%3D%20%24%7BisPost%7D%60%20%3A%20null%2C%20%27Tags%2Fspecial%20properties%3A%27%2C%20%60isOwnActivity%20%3D%20%24%7BisOwnActivity%7D%60%2C%20%60isCommute%20%3D%20%24%7BisCommute%7D%60%2C%20%60isVirtual%20%3D%20%24%7BisVirtual%7D%60%2C%20%27Activity%20type%3A%27%2C%20isRide%20%3F%20%60isRide%20%3D%20%24%7BisRide%7D%60%20%3A%20null%2C%20isMountainBikeRide%20%3F%20%60isMountainBikeRide%20%3D%20%24%7BisMountainBikeRide%7D%60%20%3A%20null%2C%20isGravelRide%20%3F%20%60isGravelRide%20%3D%20%24%7BisGravelRide%7D%60%20%3A%20null%2C%20isEBikeRide%20%3F%20%60isEBikeRide%20%3D%20%24%7BisEBikeRide%7D%60%20%3A%20null%2C%20isRun%20%3F%20%60isRun%20%3D%20%24%7BisRun%7D%60%20%3A%20null%2C%20isTrailRun%20%3F%20%60isTrailRun%20%3D%20%24%7BisTrailRun%7D%60%20%3A%20null%2C%20isHike%20%3F%20%60isHike%20%3D%20%24%7BisHike%7D%60%20%3A%20null%2C%20isWalk%20%3F%20%60isWalk%20%3D%20%24%7BisWalk%7D%60%20%3A%20null%2C%20isSwim%20%3F%20%60isSwim%20%3D%20%24%7BisSwim%7D%60%20%3A%20null%2C%20isWaterSport%20%3F%20%60isWaterSport%20%3D%20%24%7BisWaterSport%7D%60%20%3A%20null%2C%20isWinterSport%20%3F%20%60isWinterSport%20%3D%20%24%7BisWinterSport%7D%60%20%3A%20null%2C%20isOther%20%3F%20%60isOther%20%3D%20%24%7BisOther%7D%60%20%3A%20null%2C%20%27Media%3A%27%2C%20%60hasPhotos%20%3D%20%24%7BhasPhotos%7D%60%2C%20%60hasMap%20%3D%20%24%7BhasMap%7D%60%2C%20%27Kudos%20and%20comments%3A%27%2C%20hasKudos%20%3F%20%60numKudos%20%3D%20%24%7BnumKudos%7D%60%20%3A%20%60hasKudos%20%3D%20%24%7BhasKudos%7D%60%2C%20hasComments%20%3F%20%60numComments%20%3D%20%24%7BnumComments%7D%60%20%3A%20%60hasComments%20%3D%20%24%7BhasComments%7D%60%2C%20%27Statistics%3A%27%2C%20hasDistanceInKm%20%3F%20%60distanceInKm%20%3D%20%24%7BdistanceInKm%7D%60%20%3A%20%60hasDistanceInKm%20%3D%20%24%7BhasDistanceInKm%7D%60%2C%20hasElevationInM%20%3F%20%60elevationInM%20%3D%20%24%7BelevationInM%7D%60%20%3A%20null%2C%20hasDurationInS%20%3F%20%60durationInS%20%3D%20%24%7BdurationInS%7D%60%20%3A%20null%2C%20hasDistanceInKm%20%26%26%20hasDurationInS%20%3F%20%60calculatedAverageSpeed%20%3D%20%24%7B%28distanceInKm%20%2F%20durationInS%20%2A%203600%29.toFixed%281%29%7D%20km%2Fh%60%20%3A%20null%2C%20%60%24%7Bentry.title%20%3F%20%27%5Cn%5Cn%3D%3D%3D%3D%3D%3D%5Cn%5Cn%27%20%2B%20entry.title%20%3A%20%27%27%7D%60%20%5D.filter%28_%20%3D%3E%20_%29.join%28%27%5Cn%27%29.replace%28%2F%5E%28%5BA-Z%5D%29%2Fgm%2C%20%27%5Cn%241%27%29.trim%28%29%3B%20%7D%20%20const%20entrySelector%20%3D%20%27%5Bclass%2A%3D%22FeedEntry%22%5D%5Bclass%2A%3D%22entryContainer%22%5D%27%3B%20Array.from%28document.querySelectorAll%28entrySelector%29%29.forEach%28processEntry%29%3B%20%20new%20MutationObserver%28function%20%28mutations%29%20%7B%20mutations.forEach%28function%28mutation%29%20%7B%20if%20%28%21mutation%3F.addedNodes%3F.length%29%20%7B%20return%3B%20%7D%20Array.from%28mutation.addedNodes%29%20.forEach%28node%20%3D%3E%20%7B%20if%20%28typeof%20node.matches%20%3D%3D%3D%20%27function%27%20%26%26%20node.matches%28entrySelector%29%29%20%7B%20processEntry%28node%29%3B%20%7D%20else%20if%20%28typeof%20node.querySelectorAll%20%3D%3D%3D%20%27function%27%29%20%7B%20Array.from%28node.querySelectorAll%28entrySelector%29%29.forEach%28processEntry%29%3B%20%7D%20%7D%29%3B%20%7D%29%3B%20%7D%29.observe%28document%2C%20%7B%20childList%3A%20true%2C%20subtree%3A%20true%20%7D%29%3B%20%20Array.from%28document.querySelectorAll%28%27.upsell%2C%20%5Bid%2A%3D%22upsell%22%5D%27%29%29.forEach%28%20element%20%3D%3E%20element.classList.add%28%27xxxJanStravaHidden%27%29%20%29%3B%20%20Array.from%28document.querySelectorAll%28%27%23notifications-list-view%20tr%27%29%29.forEach%28notification%20%3D%3E%20%7B%20if%20%28notification.textContent.trim%28%29.match%28%2F%5Cbkudos%5Cb%2Fi%29%29%20%7B%20notification.classList.add%28%27xxxJanStravaHidden%27%29%3B%20%7D%20%7D%29%3B%20%20document.querySelectorAll%28%27tr%5Bdata-segment-effort-id%5D%27%29.forEach%28tr%20%3D%3E%20%7B%20const%20%5BdistanceElement%2C%20elevationElement%2C%20averageGradientElement%5D%20%3D%20tr.querySelectorAll%28%27.stats%20%3E%20span%27%29%3B%20const%20distanceInKm%20%3D%20parseDistance%28distanceElement.textContent%29%3B%20const%20elevationInM%20%3D%20parseElevation%28elevationElement.textContent%29%3B%20const%20gradientPercentage%20%3D%20parseGradient%28averageGradientElement.textContent%29%3B%20%20if%20%28tr.querySelector%28%27%5Bclass%2A%3D%22icon-at-kom-%22%5D%27%29%29%20%7B%20tr.title%20%3D%20%60shide%3A%20Not%20hiding%2C%20because%20a%20top%2010%20result%3A%20%24%7BdistanceInKm%7D%20km%20%2F%20%24%7BelevationInM%7D%20m%20%2F%20%24%7BgradientPercentage%7D%25%60%3B%20return%3B%20%7D%20%20if%20%28tr.querySelector%28%27td.climb-cat-col%3Anot%28%3Aempty%29%27%29%29%20%7B%20tr.title%20%3D%20%60shide%3A%20Not%20hiding%2C%20because%20a%20categorized%20climb%3A%20%24%7BdistanceInKm%7D%20km%20%2F%20%24%7BelevationInM%7D%20m%20%2F%20%24%7BgradientPercentage%7D%25%60%3B%20return%3B%20%7D%20if%20%28%20%28distanceInKm%20%3E%3D%2010%29%20%7C%7C%20%28distanceInKm%20%3E%3D%205%20%26%26%20gradientPercentage%20%3E%3D%202%29%20%7C%7C%20%28distanceInKm%20%3E%3D%200.75%20%26%26%20gradientPercentage%20%3E%3D%203%29%20%7C%7C%20%28distanceInKm%20%3E%3D%200.50%20%26%26%20gradientPercentage%20%3E%3D%206%29%20%29%20%7B%20tr.title%20%3D%20%60shide%3A%20Not%20hiding%20because%20steep%20and%2For%20long%20enough%3A%20%24%7BdistanceInKm%7D%20km%20%2F%20%24%7BelevationInM%7D%20m%20%2F%20%24%7BgradientPercentage%7D%25%60%3B%20return%3B%20%7D%20tr.title%20%3D%20%60shide%3A%20Hiding%20because%20not%20interesting%3A%20%24%7BdistanceInKm%7D%20km%20%2F%20%24%7BelevationInM%7D%20m%20%2F%20%24%7BgradientPercentage%7D%25%60%3B%20tr.classList.add%28%27xxxJanStravaHidden%27%29%3B%20%20%7D%29%3B%20%20document.querySelectorAll%28%27.my-segments%20tbody%20tr%27%29.forEach%28tr%20%3D%3E%20%7B%20const%20distanceElement%20%3D%20tr.cells%5B3%5D%3B%20const%20elevationElement%20%3D%20tr.cells%5B4%5D%3B%20const%20distanceInKm%20%3D%20parseDistance%28distanceElement.textContent%29%3B%20const%20elevationInM%20%3D%20parseElevation%28elevationElement.textContent%29%3B%20const%20gradientPercentage%20%3D%20%28elevationInM%20%2F%20%28distanceInKm%20%2A%2010%29%29.toFixed%281%29%3B%20if%20%28%20%28distanceInKm%20%3E%3D%2010%29%20%7C%7C%20%28distanceInKm%20%3E%3D%205%20%26%26%20gradientPercentage%20%3E%3D%202%29%20%7C%7C%20%28distanceInKm%20%3E%3D%200.75%20%26%26%20gradientPercentage%20%3E%3D%203%29%20%7C%7C%20%28distanceInKm%20%3E%3D%200.50%20%26%26%20gradientPercentage%20%3E%3D%206%29%20%29%20%7B%20tr.title%20%3D%20%60shide%3A%20Not%20hiding%20because%20steep%20and%2For%20long%20enough%3A%20%24%7BdistanceInKm%7D%20km%20%2F%20%24%7BelevationInM%7D%20m%20%2F%20%24%7BgradientPercentage%7D%25%60%3B%20return%3B%20%7D%20tr.title%20%3D%20%60shide%3A%20Hiding%20because%20not%20interesting%3A%20%24%7BdistanceInKm%7D%20km%20%2F%20%24%7BelevationInM%7D%20m%20%2F%20%24%7BgradientPercentage%7D%25%60%3B%20tr.classList.add%28%27xxxJanStravaHidden%27%29%3B%20%7D%29%3B%20%20document.querySelectorAll%28%27button%5Btitle%5D%2C%20abbr.unit%5Btitle%5D%2C%20div%5Bdata-testid%3D%22achievement_container%22%5D%27%29.forEach%28element%20%3D%3E%20element.removeAttribute%28%27title%27%29%20%29%3B%20document.querySelectorAll%28%27a%5Btitle%5D%27%29.forEach%28a%20%3D%3E%20%7B%20if%20%28a.title.trim%28%29%20%3D%3D%3D%20a.textContent.trim%28%29%29%20%7B%20a.removeAttribute%28%27title%27%29%3B%20%7D%20%7D%29%3B%20%7D%29%28%29%3B/* ./site-specific/strava/shide.js */" ADD_DATE="1508600101" LAST_MODIFIED="1732783210" SHORTCUTURL="shide">Hide Strava pollution</A>
<DD><P>Hide visual pollution from the Strava feed.
“Pollution” is a highly subjective term, meaning “everything I do not care
enough about to want to see featured in the feed”. That means things like
very short rides (unless they have photos), short runs/hikes/walks, water
sports and winter sports, Zwift sessions, people joining clubs or
challenges, …
On individual activity pages, hide segment efforts that are either too short
or not “climby” enough.</P></DD>
<DT><A HREF="javascript:%28function%20sseg%28%29%20%7B%20%20var%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28doc%29%20%7B%20if%20%28arguments.length%20%3D%3D%3D%200%29%20%7B%20doc%20%3D%20document%3B%20%7D%20if%20%28%21doc%20%7C%7C%20typeof%20doc.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21doc.activeElement%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20var%20activeElement%20%3D%20doc.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20doc.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20Strava%20segment%20title%20to%20look%20for%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.strava.com%2Fsegments%2Fsearch%3Futf8%3D%25E2%259C%2593%26filter_type%3Dcycling%26min-cat%3D0%26max-cat%3D5%26terrain%3Dall%26keywords%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28%29%3B/* ./site-specific/strava/sseg.js */" ADD_DATE="1306354325" LAST_MODIFIED="1508600101" SHORTCUTURL="sseg">Strava segment</A>
<DD><P>Search for a Strava segment.</P></DD>
<DT><A HREF="javascript:%28function%20sstats%28%29%20%7B%20%27use%20strict%27%3B%20const%20isDebug%20%3D%20false%3B%20%20function%20parseNumberFromFormattedText%28text%29%20%7B%20text%20%3D%20text.trim%28%29%3B%20let%20type%3B%20let%20number%20%3D%20NaN%3B%20let%20decimalSeparator%3B%20let%20thousandsSeparator%3B%20let%20matches%3B%20if%20%28%28matches%20%3D%20text.match%28%2F%5E%28%5B0-9%5D%2B%29%5Cb%5B%5E0-9%5D%2A%24%2F%29%29%29%20%7B%20number%20%3D%20parseInt%28matches%5B1%5D%2C%2010%29%3B%20type%20%3D%20%60an%20integer%20without%20decimal%20separator%20or%20thousands%20separator%60%3B%20%7D%20else%20if%20%28%28matches%20%3D%20text.match%28%2F%5E%28%5B1-9%5D%5B0-9%5D%7B1%2C2%7D%28%5B%2C.%5D%29%5B0-9%5D%7B1%2C2%7D%29%5Cb%5B%5E0-9%5D%2A%24%2F%29%29%29%20%7B%20decimalSeparator%20%3D%20matches%5B2%5D%3B%20number%20%3D%20parseFloat%28matches%5B1%5D.replaceAll%28thousandsSeparator%2C%20%27%27%29%2C%2010%29%3B%20type%20%3D%20%60a%20decimal%20number%20%3C%201000%60%3B%20%7D%20else%20if%20%28%28matches%20%3D%20text.match%28%2F%5E%28%28%3F%3A%5B1-9%5D%5B0-9%5D%7B0%2C2%7D%28%5B%2C.%5D%29%29%28%3F%3A%5B0-9%5D%7B3%7D%5C2%29%2A%5B0-9%5D%7B3%7D%29%5Cb%5B%5E0-9%5D%2A%24%2F%29%29%29%20%7B%20thousandsSeparator%20%3D%20matches%5B2%5D%3B%20number%20%3D%20parseInt%28matches%5B1%5D.replaceAll%28thousandsSeparator%2C%20%27%27%29%2C%2010%29%3B%20type%20%3D%20%60an%20integer%20number%20with%20thousands%20separator%20%E2%80%9C%24%7BthousandsSeparator%7D%E2%80%9D%60%3B%20%7D%20else%20if%20%28%28matches%20%3D%20text.match%28%2F%5E%28%28%3F%3A%5B1-9%5D%5B0-9%5D%7B0%2C2%7D%28%2C%29%29%28%3F%3A%5B0-9%5D%7B3%7D%5C2%29%2A%5B0-9%5D%7B3%7D%28%5C.%29%5B0-9%5D%2B%29%5Cb%5B%5E0-9%5D%2A%24%2F%29%29%29%20%7B%20thousandsSeparator%20%3D%20matches%5B2%5D%3B%20decimalSeparator%20%3D%20matches%5B3%5D%3B%20number%20%3D%20parseFloat%28matches%5B1%5D.replaceAll%28thousandsSeparator%2C%20%27%27%29%2C%2010%29%3B%20type%20%3D%20%60a%20decimal%20number%20%E2%89%A5%201000%E2%80%9D%60%3B%20%7D%20else%20if%20%28%28matches%20%3D%20text.match%28%2F%5E%28%28%3F%3A%5B1-9%5D%5B0-9%5D%7B0%2C2%7D%28%5C.%29%29%28%3F%3A%5B0-9%5D%7B3%7D%5C2%29%2A%5B0-9%5D%7B3%7D%28%2C%29%5B0-9%5D%2B%29%5Cb%5B%5E0-9%5D%2A%24%2F%29%29%29%20%7B%20thousandsSeparator%20%3D%20matches%5B2%5D%3B%20decimalSeparator%20%3D%20matches%5B3%5D%3B%20number%20%3D%20parseFloat%28matches%5B1%5D.replaceAll%28thousandsSeparator%2C%20%27%27%29.replace%28decimalSeparator%2C%20%27.%27%29%2C%2010%29%3B%20type%20%3D%20%60a%20decimal%20number%20%E2%89%A5%201000%E2%80%9D%60%3B%20%7D%20else%20%7B%20type%20%3D%20%27something%20I%20don%E2%80%99t%20recognize%27%3B%20%7D%20%20return%20number%3B%20%7D%20%20let%20needsToAddCss%20%3D%20true%3B%20document.querySelectorAll%28%27.sidebar%20tbody%3Anth-child%282n%29%3Anot%28%3Aempty%29%20%2B%20tbody%3Anot%28%3Ahas%28%5Bdata-glossary-term%3D%22definition-best-efforts%22%5D%29%29%27%29.forEach%28tbody%20%3D%3E%20%7B%20const%20rowFields%20%3D%20%5B%27numActivities%27%2C%20%27distance%27%2C%20%27elevationGain%27%2C%20%27time%27%5D%3B%20if%20%28%21tbody.rows%5BrowFields.length%20-%201%5D%29%20%7B%20isDebug%20%26%26%20console.log%28%60sstats%3A%20Could%20not%20find%20enough%20rows%20in%20tbody%20for%20all%20the%20data%20fields%20%28%E2%80%9C%24%7BrowFields.join%28%27%E2%80%9D%2C%20%E2%80%9C%27%29%7D%E2%80%9D%29%60%2C%20tbody%29%3B%20return%3B%20%7D%20if%20%28tbody.rows%5B0%5D%3F.dataset.xxxJanHasAddedStats%29%20%7B%20isDebug%20%26%26%20console.log%28%27sstats%3A%20Already%20added%20stats%20to%20tbody%3A%20%27%2C%20tbody%29%3B%20needsToAddCss%20%3D%20false%3B%20return%3B%20%7D%20tbody.rows%5B0%5D.dataset.xxxJanHasAddedStats%20%3D%20true%3B%20isDebug%20%26%26%20console.log%28%27sstats%3A%20Processing%20tbody%3A%20%27%2C%20tbody%29%3B%20const%20data%20%3D%20%7B%7D%3B%20rowFields.forEach%28%28field%2C%20rowIndex%29%20%3D%3E%20%7B%20if%20%28%21data%5Bfield%5D%29%20%7B%20data%5Bfield%5D%20%3D%20%5B%5D%3B%20%7D%20const%20row%20%3D%20tbody.rows%5BrowIndex%5D%3B%20const%20dataCells%20%3D%20Array.from%28tbody.rows%5BrowIndex%5D.cells%29.slice%281%29%3B%20isDebug%20%26%26%20console.log%28%60sstats%3A%20Processing%20row%20%24%7BrowIndex%7D%20%28%E2%80%9C%24%7Bfield%7D%E2%80%9D%29%3A%20%60%2C%20row%2C%20dataCells%29%3B%20data%5Bfield%5D.row%20%3D%20row%3B%20data%5Bfield%5D.unit%20%3D%20row.cells%5B1%5D.textContent.replace%28%2F%5E.%2A%20%2F%2C%20%27%27%29%3B%20dataCells.forEach%28%28td%2C%20cellIndex%29%20%3D%3E%20%7B%20if%20%28field%20%3D%3D%3D%20%27time%27%29%20%7B%20%20let%20tmpDurationInS%20%3D%200%3B%20let%20hasParsedDuration%20%3D%20true%3B%20td.textContent.split%28%2F%5Cs%28%5B0-9%5D%2B%5Cs%2A%5B%5E0-9%5D%2B%29%5Cs%2A%2F%29.forEach%28durationPart%20%3D%3E%20%7B%20let%20matches%3B%20if%20%28durationPart.trim%28%29%20%3D%3D%3D%20%27%27%29%20%7B%20%7D%20else%20if%20%28%28matches%20%3D%20durationPart.match%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%29s%2F%29%29%29%20%7B%20tmpDurationInS%20%2B%3D%20parseInt%28matches%5B1%5D%2C%2010%29%3B%20%7D%20else%20if%20%28%28matches%20%3D%20durationPart.match%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%29m%2F%29%29%29%20%7B%20tmpDurationInS%20%2B%3D%20parseInt%28matches%5B1%5D%2C%2010%29%20%2A%2060%3B%20%7D%20else%20if%20%28%28matches%20%3D%20durationPart.match%28%2F%5E%5Cs%2A%28%5B0-9%5D%2B%29%5Bhu%5D%2F%29%29%29%20%7B%20tmpDurationInS%20%2B%3D%20parseInt%28matches%5B1%5D%2C%2010%29%20%2A%203600%3B%20%7D%20else%20%7B%20console.log%28%60sstats%3A%20%E2%80%9C%24%7Btd.textContent%7D%E2%80%9D%3A%20did%20not%20understand%20duration%20part%20%E2%80%9C%24%7BdurationPart%7D%E2%80%9D%20for%20td%20%60%2C%20td%29%3B%20hasParsedDuration%20%3D%20false%3B%20%7D%20%7D%29%3B%20data%5Bfield%5D%5BcellIndex%5D%20%3D%20tmpDurationInS%3B%20isDebug%20%26%26%20%21hasParsedDuration%20%26%26%20console.log%28%60sstats%3A%20Time%20%E2%80%9C%24%7Btd.textContent%7D%E2%80%9D%20could%20not%20be%20parsed%20as%20a%20duration.%60%29%3B%20%7D%20else%20%7B%20data%5Bfield%5D%5BcellIndex%5D%20%3D%20parseNumberFromFormattedText%28td.textContent%29%3B%20%7D%20%7D%29%3B%20%7D%29%3B%20const%20distanceFormatter%20%3D%20new%20Intl.NumberFormat%28document.documentElement.lang%2C%20%7BmaximumFractionDigits%3A%201%7D%29%3B%20const%20elevationGainFormatter%20%3D%20new%20Intl.NumberFormat%28document.documentElement.lang%2C%20%7BmaximumFractionDigits%3A%200%7D%29%3B%20%20const%20avgDistanceRow%20%3D%20tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27tr%27%29%3B%20avgDistanceRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29.textContent%20%3D%20%27Avg%20Distance%20%2F%20Activity%27%3B%20data.distance.forEach%28%28distance%2C%20i%29%20%3D%3E%20%7B%20const%20td%20%3D%20avgDistanceRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29%3B%20td.textContent%20%3D%20data.numActivities%5Bi%5D%20%26%26%20data.distance%5Bi%5D%20%3F%20%60%24%7BdistanceFormatter.format%28data.distance%5Bi%5D%20%2F%20data.numActivities%5Bi%5D%29%7D%20%24%7Bdata.distance.unit%7D%60%20%3A%20%27n%2Fa%27%3B%20%7D%29%3B%20data.distance.row.after%28avgDistanceRow%29%3B%20%20const%20avgElevationGainPerActivityRow%20%3D%20tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27tr%27%29%3B%20avgElevationGainPerActivityRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29.textContent%20%3D%20%27Avg%20Elev%20Gain%20%2F%20Activity%27%3B%20data.elevationGain.forEach%28%28elevationGain%2C%20i%29%20%3D%3E%20%7B%20const%20td%20%3D%20avgElevationGainPerActivityRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29%3B%20td.textContent%20%3D%20data.numActivities%5Bi%5D%20%26%26%20data.elevationGain%5Bi%5D%20%3F%20%60%24%7BelevationGainFormatter.format%28Math.round%28data.elevationGain%5Bi%5D%20%2F%20data.numActivities%5Bi%5D%29%29%7D%20%24%7Bdata.elevationGain.unit%7D%60%20%3A%20%27n%2Fa%27%3B%20%7D%29%3B%20data.elevationGain.row.after%28avgElevationGainPerActivityRow%29%3B%20%20const%20distanceForAvgElevationGain%20%3D%20100%3B%20const%20avgElevationGainPerDistanceRow%20%3D%20tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27tr%27%29%3B%20avgElevationGainPerDistanceRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29.textContent%20%3D%20%60Avg%20Elev%20Gain%20%2F%20%24%7BdistanceForAvgElevationGain%7D%20%24%7Bdata.distance.unit%7D%60%3B%20data.elevationGain.forEach%28%28elevationGain%2C%20i%29%20%3D%3E%20%7B%20const%20td%20%3D%20avgElevationGainPerDistanceRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29%3B%20td.textContent%20%3D%20data.numActivities%5Bi%5D%20%26%26%20data.elevationGain%5Bi%5D%20%3F%20%60%24%7BelevationGainFormatter.format%28Math.round%28data.elevationGain%5Bi%5D%20%2F%20%28data.distance%5Bi%5D%20%2F%20distanceForAvgElevationGain%29%29%29%7D%20%24%7Bdata.elevationGain.unit%7D%60%20%3A%20%27n%2Fa%27%3B%20%7D%29%3B%20avgElevationGainPerActivityRow.after%28avgElevationGainPerDistanceRow%29%3B%20%20const%20avgSpeedRow%20%3D%20tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27tr%27%29%3B%20avgSpeedRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29.textContent%20%3D%20%27Avg%20Speed%20%2F%20Activity%27%3B%20data.time.forEach%28%28time%2C%20i%29%20%3D%3E%20%7B%20const%20td%20%3D%20avgSpeedRow.appendChild%28tbody.ownerDocument.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27td%27%29%29%3B%20td.textContent%20%3D%20data.distance%5Bi%5D%20%26%26%20data.time%5Bi%5D%20%3F%20%60%24%7BdistanceFormatter.format%28data.distance%5Bi%5D%20%2F%20data.time%5Bi%5D%20%2A%203600%29%7D%20%24%7Bdata.distance.unit%7D%2Fh%60%20%3A%20%27n%2Fa%27%3B%20%7D%29%3B%20data.time.row.after%28avgSpeedRow%29%3B%20%7D%29%3B%20%20document.querySelectorAll%28%27%5Bdata-glossary-term%3D%22definition-best-efforts%22%5D%27%29.forEach%28bestEffortsLabel%20%3D%3E%20%7B%20Array.from%28bestEffortsLabel.closest%28%27tbody%27%29%3F.querySelectorAll%28%27td%3Afirst-child%27%29%29.filter%28%20td%20%3D%3E%20td.textContent.trim%28%29.match%28%2F%5E%5Cd%2F%29%20%26%26%20%21td.textContent.trim%28%29.match%28%2F%5E%5Cd%5Cd%5Cd%2B%5Cs%2A%5BKk%5D%2F%29%20%29.forEach%28td%20%3D%3E%20td.closest%28%27tr%27%29.classList.add%28%27notInteresting%27%29%29%3B%20%7D%29%3B%20%20document.querySelectorAll%28%27a%5Bhref%24%3D%22%2Fbest-efforts%22%5D%27%29.forEach%28a%20%3D%3E%20%7B%20const%20pseudoFragmentId%20%3D%20%60%24%7Ba.closest%28%27tr%27%29.querySelector%28%27td%27%29%3F.textContent%7D%3D%24%7Ba.textContent%7D%60.trim%28%29.replace%28%2F%5Cs%2B%2Fg%2C%20%27%27%29%3B%20a.href%20%3D%20a.href.replace%28%2F%5C%2Fbest-efforts%24%2F%2C%20%27%2Foverview%23%27%20%2B%20pseudoFragmentId%29%3B%20%7D%29%3B%20%20if%20%28needsToAddCss%29%20%7B%20document.head.appendChild%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.textContent%20%3D%20%60%20.sidebar%20tbody%20td%20%7B%20white-space%3A%20nowrap%3B%20%7D%20.sidebar%20tbody%20td%3Anot%28%3Afirst-child%29%20%7B%20text-align%3A%20end%3B%20%7D%20.sidebar%20tbody%20tr.notInteresting%20%7B%20display%3A%20none%3B%20%7D%20%60%3B%20%7D%20%7D%29%28%29%3B/* ./site-specific/strava/sstats.js */" ADD_DATE="1672586723" LAST_MODIFIED="1718878362" SHORTCUTURL="sstats">Expand Strava stats</A>
<DD><P>Expand the statistics on a Strava profile by adding average
distance/elevation gain/speed per activity.</P></DD>
</DL>
<DT><A HREF="javascript:%28function%20discogs%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20enter%20the%20text%20to%20search%20in%20the%20Discogs%20release%20masters%20database%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Fwww.discogs.com%2Fsearch%2F%3Ftype%3Dmaster%26limit%3D250%26sort%3Dyear%252Casc%26q%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./site-specific/discogs.js */" ADD_DATE="1306354325" LAST_MODIFIED="1707501712" SHORTCUTURL="discogs">Search Discogs</A>
<DD><P>Search the Discogs master release for the given text.
I prefer searching for the master record instead of a specific release, to
get more “general” info.</P></DD>
<DT><A HREF="javascript:%28function%20emo%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%20%7C%7C%20prompt%28%27Please%20specify%20the%20text%20or%20emoji%20to%20search%20on%20Emojipedia.org%3A%27%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20location%20%3D%20%27https%3A%2F%2Femojipedia.org%2Fsearch%2F%3Fq%3D%27%20%2B%20encodeURIComponent%28s%29%3B%20%7D%20%7D%29%28document%29%3B/* ./site-specific/emo.js */" ADD_DATE="1306354325" LAST_MODIFIED="1707501198" SHORTCUTURL="emo">Emojipedia</A>
<DD><P>Search Emojipedia for the given text or emoji.</P></DD>
<DT><A HREF="javascript:%28function%20githublet%28%29%20%7B%20var%20codeContainer%20%3D%20document.querySelector%28%27.file%20.lines%20.highlight%27%29%3B%20if%20%28%21codeContainer%29%20%7B%20alert%28%27No%20file%20contents%20found%20on%20page.%27%29%3B%20return%3B%20%7D%20%20var%20lineContainers%20%3D%20Array.prototype.slice.call%28codeContainer.querySelectorAll%28%27.line%27%29%29%3B%20if%20%28%21lineContainers.length%29%20%7B%20alert%28%27No%20lines%20found%20in%20file%20contents.%27%29%3B%20return%3B%20%7D%20var%20lines%20%3D%20%5B%5D%3B%20lineContainers.forEach%28function%20%28line%29%20%7B%20lines.push%28line.textContent%29%3B%20%7D%29%3B%20%20var%20textarea%20%3D%20document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27textarea%27%29%3B%20textarea.value%20%3D%20%27javascript%3A%27%20%2B%20lines.join%28%27%5Cn%27%29%3B%20var%20codeContainerStyle%20%3D%20window.getComputedStyle%28codeContainer%29%3B%20%5B%27width%27%2C%20%27height%27%2C%20%27margin%27%2C%20%27padding%27%5D.forEach%28function%20%28property%29%20%7B%20if%20%28property%20%3D%3D%3D%20%27width%27%20%7C%7C%20property%20%3D%3D%3D%20%27height%27%29%20%7B%20textarea.style%5Bproperty%5D%20%3D%20codeContainerStyle%5Bproperty%5D%3B%20%7D%20else%20%7B%20%5B%27Top%27%2C%20%27Right%27%2C%20%27Bottom%27%2C%20%27Left%27%5D.forEach%28function%20%28edge%29%20%7B%20textarea.style%5Bproperty%20%2B%20edge%5D%20%3D%20codeContainerStyle%5Bproperty%20%2B%20edge%5D%3B%20%7D%29%3B%20%7D%20%7D%29%3B%20textarea.style.border%20%3D%200%3B%20textarea.style.lineHeight%20%3D%20lineContainers%5B0%5D.offsetHeight%20%2B%20%27px%27%3B%20var%20lineContainerStyle%20%3D%20window.getComputedStyle%28lineContainers%5B0%5D%29%3B%20%5B%27fontFamily%27%2C%20%27fontSize%27%2C%20%27paddingLeft%27%5D.forEach%28function%20%28property%29%20%7B%20textarea.style%5Bproperty%5D%20%3D%20lineContainerStyle%5Bproperty%5D%3B%20%7D%29%3B%20codeContainer.parentNode.replaceChild%28textarea%2C%20codeContainer%29%3B%20textarea.focus%28%29%3B%20textarea.select%28%29%3B%20%7D%29%28%29%3B/* ./site-specific/githublet.js */" ADD_DATE="1327145462" LAST_MODIFIED="1520415256" SHORTCUTURL="githublet">GitHublet</A>
<DD><P>Put a bookmarklet's code on GitHub in a TEXTAREA so it is easy to copy.
I use this because selecting and copying bookmarklet code to put them in my
Safari on iOS is a pain.</P></DD>
<DT><A HREF="javascript:%28function%20kbo%28document%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20let%20isSelectedText%20%3D%20false%3B%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20if%20%28%28s%20%3D%20getActiveSelection%28document%29%29%29%20%7B%20isSelectedText%20%3D%20true%3B%20%7D%20else%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20the%20Belgian%20company%20number%20%2F%20VAT%20number%3A%27%29%3B%20%7D%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20if%20%28s%29%20%7B%20const%20possibleVatNumbers%20%3D%20%5B%5D%3B%20const%20regexp%20%3D%20%2F%5Cb%28%3F%3CbePrefix%3EBE%29%3F%5Cs%3F%28%3F%3CleadingDigit%3E%5B01%5D%29%3F%28%3F%3Cp1%3E%5Cd%7B3%7D%29%28%5B%20.-%5D%3F%29%28%3F%3Cp2%3E%5Cd%7B3%7D%29%5C4%28%3F%3Cp3%3E%5Cd%7B3%7D%29%5Cb%2Fgi%3B%20for%20%28const%20matches%20of%20s.matchAll%28regexp%29%29%20%7B%20%20possibleVatNumbers.push%28%7B%20hasBePrefix%3A%20%21%21matches.groups.bePrefix%2C%20hasLeadingZero%3A%20matches.groups.leadingDigit%20%3D%3D%3D%20%270%27%2C%20vatNumber%3A%20%28matches.groups.leadingDigit%20%7C%7C%20%27%27%29%20%2B%20matches.groups.p1%20%2B%20matches.groups.p2%20%2B%20matches.groups.p3%2C%20matches%20%7D%29%3B%20%7D%20if%20%28possibleVatNumbers.length%29%20%7B%20const%20bestMatch%20%3D%20possibleVatNumbers.find%28possibleVatNumber%20%3D%3E%20possibleVatNumber.hasBePrefix%29%20%20%7C%7C%20possibleVatNumbers.find%28possibleVatNumber%20%3D%3E%20possibleVatNumber.hasLeadingZero%20%26%26%20%21possibleVatNumber.vatNumber.match%28%2F%5E04%2F%29%29%20%7C%7C%20possibleVatNumbers%5B0%5D%3B%20location%20%3D%20%27https%3A%2F%2Fkbopub.economie.fgov.be%2Fkbopub%2Ftoonondernemingps.html%3Fondernemingsnummer%3D%27%20%2B%20encodeURIComponent%28bestMatch.vatNumber%29%3B%20%7D%20else%20%7B%20let%20normalizedS%20%3D%20s.trim%28%29.replaceAll%28%2F%20%28bus%7Cbo%C3%AEte%7Cboite%29%20%2Fgi%2C%20%27b%27%29.replaceAll%28%2F%5Cs%2B%2Fg%2C%20%27%20%27%29%3B%20let%20matches%20%3D%20normalizedS.match%28%2F%28%3F%3Cstreet%3E.%7B3%2C63%7D%5B%5E0-9%5D%29%2C%3F%20%28%3F%3Cnumber%3E%5Cd%2B%5B%5E%2C%5D%7B0%2C5%7D%29%5B%2C%2F-%5D%3F%20%28%3F%3CpostalCode%3E%5B1-9%5D%5Cd%5Cd%5Cd%29%5Cb%2F%29%20%7C%7C%20normalizedS.match%28%2F%28%3F%3Cnumber%3E%5Cd%2B%5B%5E%2C%5D%7B0%2C5%7D%29%2C%3F%20%28%3F%3Cstreet%3E.%7B3%2C63%7D%5B%5E0-9%5D%29%2C%3F%20%28%3F%3CpostalCode%3E%5B1-9%5D%5Cd%5Cd%5Cd%29%5Cb%2F%29%3B%20if%20%28matches%29%20%7B%20%20location%20%3D%20%60https%3A%2F%2Fkbopub.economie.fgov.be%2Fkbopub%2Fzoekadresform.html%3F%24%7Bnew%20URLSearchParams%28%7B%20filterEnkelActieve%3A%20false%2C%20actionLU%3A%20%27Zoek%27%2C%20sort%3A%20%27SORT_BY_ENTERPRISE_NUMBER%27%2C%20dir%3A%20%27asc%27%2C%20postcod1%3A%20matches.groups.postalCode%2C%20postgemeente1%3A%20%27%27%2C%20straatgemeente1%3A%20matches.groups.street%2C%20huisnummer%3A%20matches.groups.number%2C%20%7D%29%7D%60%3B%20return%3B%20%7D%20if%20%28isSelectedText%20%26%26%20s.length%20%3E%20512%29%20%7B%20alert%28%27No%20Belgian%20company%20number%20%2F%20VAT%20number%20or%20easily-parsable%20postal%20address%20was%20found%20in%20the%20text%20you%20selected.%20If%20you%20select%20a%20shorter%20text%2C%20it%20will%20be%20used%20to%20look%20up%20the%20company%20by%20name.%27%29%3B%20return%3B%20%7D%20location%20%3D%20%60https%3A%2F%2Fkbopub.economie.fgov.be%2Fkbopub%2Fzoeknaamfonetischform.html%3F%24%7Bnew%20URLSearchParams%28%7B%20oudeBenaming%3A%20%27true%27%2C%20ondNP%3A%20%27true%27%2C%20ondRP%3A%20%27true%27%2C%20rechtsvormFonetic%3A%20%27ALL%27%2C%20vest%3A%20%27true%27%2C%20filterEnkelActieve%3A%20%27false%27%2C%20sort%3A%20%27SORT_BY_ENTERPRISE_NUMBER%27%2C%20dir%3A%20%27asc%27%2C%20searchWord%3A%20s%2C%20%7D%29%7D%60%3B%20%7D%20%7D%20%7D%29%28document%29%3B/* ./site-specific/kbo.js */" ADD_DATE="1552339250" LAST_MODIFIED="1739135370" SHORTCUTURL="kbo">KBO</A>
<DD><P>Search for a company number / VAT number in the Belgian company registry
“Crossroads Bank for Enterprises”: https://kbopub.economie.fgov.be/
If the selected text or parameter does not look like a VAT number, look it
up as the company name.</P></DD>
<DT><A HREF="javascript:%28function%20printriodos%28%29%20%7B%20var%20table%20%3D%20document.querySelector%28%27table%5Bid%24%3D%22%3AsearchResultTable%22%5D%27%29%3B%20%20var%20total%20%3D%20parseFloat%28%20document.querySelector%28%27.dataView%20table%3Afirst-child%20tr%3Afirst-child%20td%3Alast-child%27%29%20.textContent%20.replace%28%27.%27%2C%20%27%27%29%20.replace%28%27%2C%27%2C%20%27.%27%29%20%29%3B%20Array.prototype.slice.call%28table.querySelectorAll%28%27tbody%5Bid%24%3D%22searchResultTable%3Atb%22%5D%20td%3Alast-child%27%29%29.reverse%28%29.forEach%28function%20%28td%29%20%7B%20td.style.textAlign%20%3D%20%27right%27%3B%20var%20amount%20%3D%20td.textContent.replace%28%27.%27%2C%20%27%27%29.replace%28%27%2C%27%2C%20%27.%27%29%3B%20total%20%3D%20%28parseFloat%28total%29%20%2B%20parseFloat%28amount%29%29.toFixed%282%29%3B%20var%20newTd%20%3D%20td.cloneNode%28%29%3B%20newTd.textContent%20%3D%20total.replace%28%27.%27%2C%20%27%2C%27%29.replace%28%2F%28%5B0-9%5D%29%28%5B0-9%5D%7B3%7D%29%2C%2F%2C%20%27%241.%242%2C%27%29%3B%20td.classList.remove%28%27lastItem%27%29%3B%20td.parentNode.appendChild%28newTd%29%3B%20%7D%29%3B%20%20var%20th%20%3D%20table.querySelector%28%27thead%20th%3Alast-child%27%29%3B%20var%20newTh%20%3D%20th.cloneNode%28%29%3B%20newTh.textContent%20%3D%20%27Saldo%20%28EUR%29%27%3B%20th.parentNode.appendChild%28newTh%29%3B%20%20Array.prototype.slice.call%28document.querySelectorAll%28%27link%5Brel%3D%22StyleSheet%22%5D%5Bmedia%3D%22screen%22%5D%27%29%29.forEach%28function%20%28link%29%20%7B%20link.media%20%3D%20%27all%27%3B%20%7D%29%3B%20%20document.head.appendChild%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.textContent%20%3D%20%27.dataView%20th%3Alast-child%2C%20.dataView%20td%3Alast-child%20%7B%20border-right%3A%200%3B%20%7D%27%3B%20%20document.head.appendChild%28document.createElementNS%28%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%2C%20%27style%27%29%29.textContent%20%3D%20%27.dataView%20tr.evenRow%20th%2C%20.dataView%20tr.evenRow%20td%20%7B%20background-color%3A%20%23cee%3B%20%7D%27%3B%20%7D%29%28%29%3B/* ./site-specific/printriodos.js */" ADD_DATE="1349015110" LAST_MODIFIED="1380614265" SHORTCUTURL="printriodos">Triodos pretty-printer</A>
<DD><P>Improve the Triodos account statement print-out.
This bookmarklets adds the account balance after each operation, which
makes it easier to keep track of the balance throughout the year/month.
It also darkens the odd row background so it stands out more when printing
in black and white. (Remember to check the "Print background colours and
images" box.)</P></DD>
<DT><A HREF="javascript:%28function%20redtop%28%29%20%7B%20%27use%20strict%27%3B%20%20let%20s%20%3D%20%28function%20%28%29%20%7B%20%2F%2A%s%2A%2F%3B%20%7D%29.toString%28%29%20.replace%28%2F%5Efunction%5Cs%2A%5C%28%5Cs%2A%5C%29%5Cs%2A%5C%7B%5Cs%2A%5C%2F%5C%2A%2F%2C%20%27%27%29%20.replace%28%2F%5C%2A%5C%2F%5Cs%2A%5C%3B%3F%5Cs%2A%5C%7D%5Cs%2A%24%2F%2C%20%27%27%29%20.replace%28%2F%5Cu0025s%2F%2C%20%27%27%29%3B%20%20function%20getActiveSelection%28document%29%20%7B%20if%20%28%21document%20%7C%7C%20typeof%20document.getSelection%20%21%3D%3D%20%27function%27%29%20%7B%20return%20%27%27%3B%20%7D%20if%20%28%21document.activeElement%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20const%20activeElement%20%3D%20document.activeElement%3B%20%20try%20%7B%20if%20%28%20typeof%20activeElement.contentDocument%20%3D%3D%3D%20%27object%27%20%26%26%20activeElement.contentDocument%20%21%3D%3D%20null%20%29%20%7B%20return%20getActiveSelection%28activeElement.contentDocument%29%3B%20%7D%20%7D%20catch%20%28e%29%20%7B%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20%20if%20%28typeof%20activeElement.value%20%3D%3D%3D%20%27string%27%29%20%7B%20if%20%28activeElement.selectionStart%20%21%3D%3D%20activeElement.selectionEnd%29%20%7B%20return%20activeElement.value.substring%28activeElement.selectionStart%2C%20activeElement.selectionEnd%29%3B%20%7D%20return%20activeElement.value%3B%20%7D%20%20return%20document.getSelection%28%29%20%2B%20%27%27%3B%20%7D%20if%20%28s%20%3D%3D%3D%20%27%27%29%20%7B%20s%20%3D%20getActiveSelection%28document%29%3B%20%7D%20else%20%7B%20s%20%3D%20s.replace%28%2F%28%5E%7C%5Cs%7C%22%29~%28%22%7C%5Cs%7C%24%29%2Fg%2C%20%27%241%27%20%2B%20getActiveSelection%28document%29%20%2B%20%27%242%27%29%3B%20%7D%20const%20subredditRegexp%20%3D%20%2F%5Cb%28%3F%3CredditUrlPrefix%3Ehttps%3F%3A%5C%2F%5C%2F%28%5B%5E%5C%2F%5D%2B%5C.%29%3Freddit%5C.com%5C%2F%29%3F%28%3F%3CsubredditName%3Er%5C%2F%5Ba-zA-Z0-9_-%5D%2B%29%2F%3B%20%20let%20subredditMatches%20%3D%20s.match%28subredditRegexp%29%3B%20%20if%20%28%21subredditMatches%29%20%7B%20subredditMatches%20%3D%20location.href.match%28subredditRegexp%29%3B%20%7D%20%20if%20%28%21subredditMatches%29%20%7B%20s%20%3D%20prompt%28%27Please%20enter%20the%20%60r%2FSubredditNameHere%60%20or%20the%20full%20%60https%3A%2F%2Fwww.reddit.com%2Fr%2FSubredditNameHere%60%20URL%20to%20view%20its%20top%20posts.%27%2C%20location%29%3B%20subredditMatches%20%3D%20s.match%28subredditRegexp%29%3B%20%7D%20if%20%28%21subredditMatches%29%20%7B%20alert%28%60%E2%80%9C%24%7Bs%7D%E2%80%9D%20does%20not%20look%20like%20a%20valid%20subreddit.%60%29%3B%20return%3B%20%7D%20location%20%3D%20%28subredditMatches.groups.redditUrlPrefix%20%7C%7C%20%27https%3A%2F%2Fwww.reddit.com%2F%27%29%20%2B%20subredditMatches%3F.groups.subredditName%20%2B%20%27%2Ftop%2F%3Fsort%3Dtop%26t%3Dall%27%3B%20%7D%29%28%29%3B/* ./site-specific/redtop.js */" ADD_DATE="1552339250" LAST_MODIFIED="1707500556" SHORTCUTURL="redtop">Subreddit’s top posts</A>
<DD><P>Show the top posts for the current/selected subreddit.
I hardly ever use Reddit, but when I do, I’m most likely looking at a
humour-related subreddit to have a laugh, so “just play the hits, dammit!”.</P></DD>
<DT><A HREF="javascript:%28function%20somanp%28%29%20%7B%20var%20playlistContainer%20%3D%20document.querySelector%28%27.now-playing%20.list-body%27%29%3B%20if%20%28%21playlistContainer%29%20%7B%20return%3B%20%7D%20var%20originalTitle%20%3D%20document.title%3B%20function%20updateTitle%28%29%20%7B%20var%20artistNode%20%3D%20playlistContainer.querySelector%28%27.row%20%3E%20%3Anth-child%282%29%27%29%3B%20var%20titleNode%20%3D%20playlistContainer.querySelector%28%27.row%20%3E%20%3Anth-child%283%29%27%29%3B%20if%20%28%21artistNode%20%7C%7C%20%21titleNode%29%20%7B%20return%3B%20%7D%20document.title%20%3D%20artistNode.textContent%20%2B%20%27%20-%20%27%20%2B%20titleNode.textContent.toLowerCase%28%29%20%2B%20%27%20%7C%20%27%20%2B%20originalTitle%3B%20%7D%20var%20observer%20%3D%20new%20MutationObserver%28updateTitle%29%3B%20observer.observe%28playlistContainer%2C%20%7B%20childList%3A%20true%2C%20subtree%3A%20true%20%7D%29%3B%20updateTitle%28%29%3B%20%7D%29%28%29%3B/* ./site-specific/somanp.js */" ADD_DATE="1538081435" LAST_MODIFIED="1538081435" SHORTCUTURL="somanp">SomaFM np</A>
<DD><P>Show the currently playing track in the window/tab title on SomaFM Player
pages like https://somafm.com/player/#/now-playing/cliqhop</P></DD>
</DL>
</DL>
</DD>
</DL>