1// polyfills 2if (!String.prototype.includes) { 3 String.prototype.includes = function(search, start) { 4 'use strict'; 5 if (typeof start !== 'number') { 6 start = 0; 7 } 8 9 if (start + search.length > this.length) { 10 return false; 11 } else { 12 return this.indexOf(search, start) !== -1; 13 } 14 }; 15} 16 17// global functions 18function readCookie(name) 19{ 20 if (name == '') 21 return ''; 22 var cookies = '' + document.cookie; 23 if (cookies == '') 24 return ''; 25 var start = cookies.indexOf(name); 26 if (start == -1) 27 return ''; 28 var end = cookies.indexOf(';', start); 29 if (end == -1) 30 end = cookies.length; 31 return atob(unescape(cookies.substring(start + name.length + 1, end))); 32} // end readCookie 33 34function setCookie(name, value) 35{ 36 document.cookie = name + '=' + escape(btoa(value == null ? '' : value)) + '; path=/'; 37} // end setCookie 38 39// init 40$(function() { 41 $('[data-bs-toggle~="tooltip"]').each(function(index, element) { 42 new bootstrap.Tooltip(element); 43 }); 44 $('[data-bs-toggle-extra~="tooltip"]').each(function(index, element) { 45 new bootstrap.Tooltip(element); 46 }); 47 $('[data-bs-toggle~="popover"]').each(function(index, element) { 48 new bootstrap.Popover(element); 49 }); 50 Stickyfill.add($('.sticky-top')); 51 52 // ensure tabs are initialized before historyTabs runs 53 $('[data-bs-toggle="tab"]').each(function(index, element) { 54 new bootstrap.Tab(element); 55 }); 56 $('#page-tabs [data-bs-toggle="tab"]').historyTabs(); 57 58 var installTablesorter = function ($obj) { 59 $obj.tablesorter({ 60 textSorter: { 61 '.plainsort': $.tablesorter.sortText 62 } 63 }); 64 }; 65 installTablesorter($('.tablesorter')); 66 67 var installFilterable = function ($obj) { 68 $obj.filterable(); 69 }; 70 installFilterable($('[data-toggle="filterable"]')); 71 72 // linktrack - may fail due to content blockers 73 var installLinkTrack = function ($obj) { 74 try { 75 $obj.linktrack(); 76 } catch (error) { 77 // no response 78 } 79 }; 80 installLinkTrack($('[data-toggle="linktrack"]')); 81 82 // scrollspy 83 $('[data-counterspy]').each(function () { 84 var $this = $(this); 85 $($this.attr('data-counterspy')).scrollspy({ target: '#' + this.id, offset: 10 }); 86 }); 87 $(window).on('activate.bs.scrollspy', function (evt) { 88 $('[data-counterspy] .page-item.nav-item').removeClass('active'); 89 $('[data-counterspy] .page-item.nav-item > .nav-link.active').parent().addClass('active'); 90 }); 91 92 // page tabs 93 $('a[href^="#"]').click(function (e) { 94 var $this = $(this); 95 if ($this.is('[data-bs-toggle="tab"]')) { 96 return; 97 } 98 var fragment = $this.attr('href'); 99 if ($(fragment).is('#page-panes > .tab-pane')) { 100 e.preventDefault(); 101 $('#tab-' + fragment.substr(1)).tab('show'); 102 $('#page-tabs').get(0).scrollIntoView(); 103 } 104 }); 105 106 // rate this page 107 $('.rate-this-page').click(function (e) { 108 e.preventDefault(); 109 var $this = $(this); 110 var tdata = $this.data(); 111 if (!tdata.completed) { 112 $('.rate-this-page').data('completed', true); 113 $('.rate-this-page').tooltip('dispose'); 114 $('.rate-this-page').not($this).css('cursor', 'default'); 115 $('.rate-this-page').not($this).fadeTo('slow', 0.5); 116 117 $.post(tdata.rateUrl, 118 { u: tdata.pageUrl, 119 t: tdata.pageTitle, 120 h: tdata.helpful 121 }, 122 function (data, status, xhr) { 123 tdata.token = data.token; 124 }); 125 126 $this.attr('title', tdata.completedTitle); 127 var pop = new bootstrap.Popover(this, { 128 html: true, 129 sanitize: false, 130 placement: 'top', 131 trigger: 'manual' 132 }); 133 pop.show(); 134 } else { 135 bootstrap.Popover.getInstance(this).hide(); 136 } 137 }); 138 $('.rate-this-page').on('inserted.bs.popover', function () { 139 var $this = $(this); 140 var that = this; 141 var tdata = $this.data(); 142 var $popover = $('#' + $this.attr('aria-describedby')); 143 var $mbox = $popover.find('.feedback-message'); 144 var $mbtn = $popover.find('.feedback-button'); 145 var $cbtn = $popover.find('.close-button'); 146 $cbtn.click(function () { 147 bootstrap.Popover.getInstance(that).hide(); 148 }); 149 $mbtn.click(function () { 150 var comment = $mbox.val(); 151 if (comment != "") { 152 $.post(tdata.rateUrl, 153 { token: tdata.token, 154 u: tdata.pageUrl, 155 t: tdata.pageTitle, 156 h: tdata.helpful, 157 comments: $mbox.val() }); 158 } 159 bootstrap.Popover.getInstance(that).hide(); 160 }); 161 }); 162 $('.rate-this-page').on('hidden.bs.popover', function () { 163 bootstrap.Popover.getInstance(this).dispose(); 164 new bootstrap.Tooltip(this); 165 }); 166 167 // form validation 168 var installValidation = function ($obj) { 169 $obj.submit(function (e) { 170 if (this.checkValidity() === false) { 171 e.preventDefault(); 172 e.stopImmediatePropagation(); 173 } 174 $(this).addClass('was-validated'); 175 }); 176 }; 177 installValidation($('.needs-validation')); 178 179 // ajax forms 180 var installAjaxForm = function ($obj) { 181 $obj.find('.ajax-form-showprogress').hide(); 182 $obj.find('.ajax-form-showerror').hide(); 183 $obj.find('.ajax-form-showsuccess').hide(); 184 $obj.find('.ajax-form-disableprogress').prop('disabled', false); 185 $obj.ajaxForm({ 186 beforeSubmit: function(arr, $form, options) { 187 $form.find('.ajax-form-showerror').hide(); 188 $form.find('.ajax-form-showsuccess').hide(); 189 $form.find('.ajax-form-showprogress').show(); 190 $form.find('.ajax-form-disableprogress').prop('disabled', true);
191 $form.trigger('ajax.form.beforeSubmit'); 192 return $form[0].checkValidity(); 193 }, 194 data: { ajax: 'true' }, 195 error: function(xhr, status, error, $form) { 196 $form.find('.ajax-form-showprogress').hide(); 197 $form.find('.ajax-form-showerror').show(); 198 $form.find('.ajax-form-disableprogress').prop('disabled', false); 199 $form.trigger('ajax.form.error', status, error); 200 }, 201 success: function(data, status, xhr, $form) { 202 $form.find('.ajax-form-showprogress').hide(); 203 $form.find('.ajax-form-hidesuccess').hide(); 204 $form.find('.ajax-form-showsuccess.ajax-form-fade').fadeIn(); 205 $form.find('.ajax-form-showsuccess').not('.ajax-form-fade').show(); 206 $form.find('.ajax-form-disableprogress').prop('disabled', false); 207 $form.trigger('ajax.form.success', data, status); 208 } 209 }); 210 }; 211 installAjaxForm($('.ajax-form')); 212 213 var _cachedFilters = undefined; 214var _rawFilterData = 'eyJjb250YWlucy1tYXJrdXAiOlsiKD86PGEgaHJlZj18XFxbXFwvdXJsXFxdfFxcW3VybD18XFxbXFwvYlxcXSkiXSwiY29udGFpbnMtZm9yZWlnbiI6WyJcXGIoPzpzdmVpa2l8a2FpeG98emRyYXZvfGlsW15hLXpdK3R1b1teYS16XStwcmV6em98aGFpW15hLXpdK3NheWFbXmEtel0raW5naW58am91W15hLXpdK3ByeXNbXmEtel0ra2VufG9bXmEtel0rc2V1W15hLXpdK3ByZXpvfGVsW15hLXpdK3NldVteYS16XStwcmV1fGthbVteYS16XStkYXNodXJ8Z3d5Ym9kW15hLXpdK2VpY2hbXmEtel0rcHJpc3xib25qb3VyfGplW15hLXpdK21bXmEtel0rYXBwZWxsZXxzaVteYS16XSttdW5kW15hLXpdK3RlfHZlclx1MDBmMFteYS16XStcdTAwZmVpdHR8YmlsbVx1MDI1OWtbXmEtel0raXN0XHUwMjU5ZGltKVxcYiIsIig/OltcXHV7MzcwfS1cXHV7MWZmZn1cXHV7MmMwMH0tXFx1e2Q3ZmZ9XSkiXSwiaXMtZW1wdHkiOlsiXlxccyooXFxTLnswLDE2fVxcUz8pP1xccyokIiwiXlxccypcXFMqXFxzKiQiXSwiY29udGFpbnMtc3BhbSI6WyIoPzotc2VvLXxcXC5seVxcL3xcXC50b3BcXC98aHR0cHM6XFwvXFwvdGlueXVybFxcLmNvbXxzZWFyY2hcXD9xPXNpdGUpIiwiXFxiKD86YWZmaWxpYXRlW15hLXpdK2xpbmtzP3xhcnRpY2xlcz9bXmEtel0rb25bXmEtel0reW91clteYS16XStzaXRlcz98YXJ0aWNsZXM/W15hLXpdK2ZvclteYS16XSt5b3VyW15hLXpdK3dlYnNpdGVzP3xhcnRpY2xlcz9bXmEtel0rb25bXmEtel0rYVteYS16XSt0b3BpY3xhcnRpY2xlW15hLXpdK3Byb3Bvc2Fscz98YmxvZ1teYS16XStwb3N0fGJyaWVmW15hLXpdK3N1cnZleXM/fGJ1eVteYS16XStkaXNjb3VudHxjYWxlbmRseXxjbGlja1teYS16XStoZXJlfGNsaWNrW15hLXpdK25vd3xjb3N0W15hLXpdK29mW15hLXpdK3NlbmRpbmd8ZGVhbHNbXmEtel0rb25bXmEtel0rb3VyfGV4Y2l0ZW1lbnRbXmEtel0rb2ZbXmEtel0rb25saW5lW15hLXpdK2Nhc2lub3N8Zmlsc2hpZXxmaW5kW15hLXpdK215W15hLXpdK3Byb2ZpbGVbXmEtel0raGVyZXxmcmVlW15hLXpdK3Rlc3RbXmEtel0rbWFpbGluZ3xnb29nbGVbXmEtel0rbXlbXmEtel0rYnVzaW5lc3N8Z3Vlc3RbXmEtel0rYXJ0aWNsZXM/fGd1ZXN0W15hLXpdK2Jsb2dnZXJzP3xndWVzdFteYS16XStwb3N0cz98Z3Vlc3RbXmEtel0rcG9zdGluZ3M/fGd1bW1pZXN8aGFwcHlraWRkaXxsYXRlc3RbXmEtel0rZ2FtYmxpbmdbXmEtel0rbmV3c3xtYWpvclteYS16XStzZWFyY2hbXmEtel0rZW5naW5lcz98bXlbXmEtel0rcHJvZmlsZVteYS16XStpc1teYS16XStoZXJlfG5vLW9ibGlnYXRpb25bXmEtel0rZXN0aW1hdGVzP3xub1teYS16XStjb3N0W15hLXpdK2F0dGFjaGVkfG5vZm9sbG93fG91clteYS16XSthcnRpY2xlW15hLXpdK3BpdGNofHByb2N1cmVtZW50W15hLXpdK2NvbnRyYWN0cz98cHJvbW9bXmEtel0rY29kZXM/fHB1cmNoYXNlW15hLXpdK2RpcmVjdGx5W15hLXpdK2F0fHJhbmtpbmdbXmEtel0raW5bXmEtel0rZ29vZ2xlfHJhbmtpbmdbXmEtel0rb25bXmEtel0rZ29vZ2xlfHJhbmtpbmdbXmEtel0ra2V5d29yZHN8cmVzcG9uZFteYS16XSt3aXRoW15hLXpdK3N0b3B8c2VvW15hLXpdK2NvbnRlbnR8c2VvW15hLXpdK21ldHJpY3M/fHNlb1teYS16XStwYWNrYWdlcz98c2VvW15hLXpdK3Jlc3VsdHM/fHNlb1teYS16XStzZXJ2aWNlcz98c2hha2VzcGVhcnxzaGFyZVteYS16XSt5b3VyW15hLXpdK3ByaWNpbmd8c2hhcmluZ1teYS16XStpdFteYS16XSthc1teYS16XSthW15hLXpdK3Jlc291cmNlfHNpbmdsZVteYS16XStnaXJscz98c3BvbnNvcmVkW15hLXpdK2xpbmtzP3xzcG9uc29yZWRbXmEtel0rcG9zdHM/fHRhZ3M/W15hLXpdK29wdGltaXphdGlvbnx0ZXN0W15hLXpdK291clteYS16XStzZXJ2aWNlcz9bXmEtel0rZm9yW15hLXpdK2ZyZWV8dG9waWNzP1teYS16XStmb3JbXmEtel0reW91clteYS16XSt3ZWJzaXRlcz98dG94aWNbXmEtel0rbGlua3M/fHRvW15hLXpdK2tub3dbXmEtel0reW91clteYS16XStwcmljZXx0b1teYS16XSt0aGlzW15hLXpdK2VtYWlsfHdyaXRlW15hLXpdK2Fib3V0W15hLXpdK3RoaXNbXmEtel0rdG9waWN8d3JpdGVycz9bXmEtel0rZm9yW15hLXpdK3lvdXJbXmEtel0rYmxvZ3M/fHdyaXRlcnM/W15hLXpdK2ZvclteYS16XSt5b3VyW15hLXpdK3dlYnNpdGVzP3x4cnVtZXJ8eW91clteYS16XSthbGxbXmEtel0rY2FybmFsbHlbXmEtel0rbWluZGVkKVxcYiIsIlxcYig/OnNhYmVyW15hLXpdK3R1W15hLXpdK3ByZWNpb3xzaW5bXmEtel0rcGVybWFuZW5jaWEpXFxiIl0sImNvbnRhaW5zLXByb2Zhbml0eSI6WyJcXGIoPzphYmVlZHxhZnJpY29vbnxhbGxpZ2F0b3JbXmEtel0rYmFpdHxhbGxpZ2F0b3JiYWl0fGFuYWxhbm5pZXxhcmFidXNocz98YXJnaWV8YXJtb3M/fGFyc2V8YXJzZWhvbGV8YXNzfGFzc2JhZ2dlcnxhc3NibGFzdGVyfGFzc2Nsb3dufGFzc2Nvd2JveXxhc3NmdWNrfGFzc2Z1Y2tlcnM/fGFzc2hhdHxhc3Nob2xlcz98YXNzaG9yZXxhc3Nqb2NrZXl8YXNza2lzc3xhc3NraXNzZXJzP3xhc3NrbG93bnM/fGFzc2xpY2tzP3xhc3NsaWNrZXJzP3xhc3Nsb3ZlcnM/fGFzc21hbnxhc3Ntb25rZXl8YXNzbXVuY2h8YXNzbXVuY2hlcnM/fGFzc3BhY2tlcnM/fGFzc3BpcmF0ZXM/fGFzc3B1cHBpZXN8YXNzcmFuZ2VyfGFzc3dob3Jlcz98YXNzd2lwZXM/fGJhY2tkb29ybWFufGJhZGZ1Y2t8YmFsbGxpY2tlcnxiYXJlbHlsZWdhbHxiYXJmcz98YmFyZmFjZXxiYXJmZmFjZXxiYXR0eVteYS16XStib3l8YmF6b25nYXM/fGJhem9vbXM/fGJlYW5lcnM/fGJlYW5leXM/fGJlYXRvZmZ8YmVhdHlvdXJtZWF0fGJpYXRjaHxiaWdhc3N8YmlnYmFzdGFyZHxiaWdidXR0fGJpdGNofGJpdGNoZXJ8Yml0Y2hlc3xiaXRjaGV6fGJpdGNoaW58Yml0Y2hpbmd8Yml0Y2hzbGFwfGJpdGNoeXxiaXRlbWV8Ymxvd2pvYnM
214/fGJsdWVndW1zP3xib2FuZ3xib2NoZXM/fGJvZ2FufGJvaHVua3xib2xsaWNrfGJvbGxvY2tzP3xib25lcnxib25nfGJvb2JpZXN8Ym9vYnl8Ym9vZHl8Ym9vbmd8Ym9vbmdhfGJvb25nYXM/fGJvb25nc3xib29uaWV8Ym9vdGxpcHxib290bGlwc3xib290eXxib290eWNhbGx8Ym9zY2hlcz98Ym9zY2hzfGJyZWE1dHxicmVhc3Rqb2J8YnJlYXN0bG92ZXJ8YnJlYXN0bWFufGJ1ZGRoYWhlYWRzP3xidWZmaWVzfGJ1ZnRlcnxidWZ0eXxidWdnZXJ8YnVnZ2VyZWR8YnVnZ2VyeXxidWxlfGJ1bGVzfGJ1bGxjcmFwfGJ1bGxkaWtlfGJ1bGxkeWtlfGJ1bGxzaGl0fGJ1bVteYS16XStib3l8YnVtW15hLXpdK2NodW18YnVtW15hLXpdK3JvYmJlcnxidW1ibGVmdWNrfGJ1bWZ1Y2t8YnVuZ3xidW5nYXxidW5nYXM/fGJ1bmdob2xlcz98YnVyclteYS16XStoZWFkcz98YnVycmhlYWRzP3xidXRjaGJhYmVzP3xidXRjaGRpa2V8YnV0Y2hkeWtlfGJ1dHRiYW5nfGJ1dHRmYWNlcz98YnV0dGZ1Y2t8YnV0dGZ1Y2tlcnM/fGJ1dHRoZWFkcz98YnV0dG1hbnxidXR0bXVuY2h8YnV0dG11bmNoZXJzP3xidXR0cGlyYXRlcz98YnV0dHN0YWlufGJ5YXRjaHxjYWNrZXJ8Y2FtZWxbXmEtel0ram9ja2V5cz98Y2FtZWxqb2NrZXlzP3xjYW1lbHRvZXxjYXJwZXRtdW5jaGVycz98Y2FycnV0aHxjaGF2fGNoZWVzZVteYS16XStlYXRpbmdbXmEtel0rc3VycmVuZGVyW15hLXpdK21vbmtleXxjaGVlc2VbXmEtel0rZWF0aW5nW15hLXpdK3N1cnJlbmRlclteYS16XSttb25raWVzfGNoZWVzZWVhdGluZ1teYS16XStzdXJyZW5kZXJbXmEtel0rbW9ua2V5fGNoZWVzZWVhdGluZ1teYS16XStzdXJyZW5kZXJbXmEtel0rbW9ua2llc3xjaGVycnlwb3BwZXJ8Y2hpW15hLXpdK2NoaVteYS16XSttYW58Y2hpY2tzbGlja3xjaGluYVteYS16XStzd2VkZXM/fGNoaW5hbWFufGNoaW5hbWVufGNoaW5hc3dlZGVzP3xjaGluZ1teYS16XStjaG9uZ3M/fGNoaW5nY2hvbmdzP3xjaGlua3M/fGNoaW5reXxjaG9hZHM/fGNob2Rlcz98Y2hvbmtpZXN8Y2hvbmt5cz98Y2hyaXN0W15hLXpdK2tpbGxlcnM/fGNodWdzP3xjaHVuZ2Vycz98Y2h1bmtpZXN8Y2h1bmt5cz98Y2xhbWRpZ2dlcnxjbGFtZGl2ZXJ8Y2xhbnNtYW58Y2xhbnNtZW58Y2xhbnN3b21hbnxjbGFuc3dvbWVufGNsb2d3b2d8Y29ja3M/fGNvY2tibG9ja3xjb2NrYmxvY2tlcnxjb2NrY293Ym95fGNvY2tmaWdodHxjb2NraGVhZHxjb2Nra25vYnxjb2NrbGlja2Vycz98Y29ja2xvdmVyfGNvY2tub2J8Y29ja3F1ZWVucz98Y29ja3JpZGVycz98Y29ja3NtYW58Y29ja3NtaXRofGNvY2tzbW9rZXJ8Y29ja3N1Y2Vycz98Y29ja3N1Y2t8Y29ja3N1Y2tlZHxjb2Nrc3Vja2Vycz98Y29ja3N1Y2tpbmd8Y29ja3RlYXNlfGNvY2t5fGNvaGVlfGNvbW1pZXM/fGNvb2xpZXM/fGNvb2x5fGNvb25zP3xjb29uYXNzfGNvb25hc3Nlc3xjb29uZG9nfGNvcm5ob2xlfGNyYWNrYXxjcmFja3dob3JlfGNyYXB8Y3JhcG9sYXxjcmFwcGllc3R8Y3JhcHB5fGNyb3RjaGpvY2tleXxjcm90Y2htb25rZXl8Y3JvdGNocm90fGN1bXxjdW1idWJibGV8Y3VtZmVzdHxjdW1qb2NrZXl8Y3VtbXxjdW1tZXJ8Y3VtbWluZ3xjdW1xdWF0fGN1bXF1ZWVufGN1bXNob3RzP3xjdW5ufGN1bm50dHxjdW50Lip8Y3VycnlbXmEtel0rbXVuY2hlcnM/fGN1cnJ5bXVuY2hlcnM/fGN1c2hpcz98Y3liZXJzbGltZXJ8ZGFnb3M/fGRhaG1lcnxkYW1taXR8ZGFtbml0fGRhcmtleXM/fGRhcmtpZXM/fGRhcmt5fGRhdG5pZ2dhfGRlYXB0aHJvYXR8ZGVlcHRocm9hdHxkZWdvcz98ZGlhcGVyW15hLXpdK2hlYWRzP3xkaWFwZXJoZWFkcz98ZGlja3M/fGRpY2ticmFpbnxkaWNrZm9yYnJhaW5zfGRpY2toZWFkcz98ZGlja2xlc3N8ZGlja2xpY2tzP3xkaWNrbGlja2Vycz98ZGlja21hbnxkaWNrd2Fkcz98ZGlja3dlZWRzP3xkaWRkbGVzP3xkaW5nbGViZXJyeXxkaW5rcz98ZGlwc2hpdHM/fGRpeHxkaXhpZWRpa2V8ZGl4aWVkeWtlfGRvZ2dpZXN0eWxlfGRvZ2d5c3R5bGV8ZG9uZ3xkb29kb298ZG9wZXxkb3RbXmEtel0raGVhZHM/fGRvdGhlYWRzP3xkcmFncXVlZW58ZHJhZ3F3ZWVufGRyaXBkaWNrfGR1bWJhc3N8ZHVtYmJpdGNofGR1bWJmdWNrfGR5ZWZseXxlYXN5c2x1dHxlYXRiYWxsc3xlYXRtZXxlYXRwdXNzeXxlaWdodFteYS16XStiYWxscz98ZXJvfGVzcXVhfGV2bHxleGt3ZXd8ZmFjZWZ1Y2tlcnxmYWVjZXN8ZmFnZ2luZ3xmYWdnb3RzP3xmYWdvdHxmYW5ueWZ1Y2tlcnxmYXJ0eXxmYXN0ZnVja3xmYXRhaHxmYXRhc3N8ZmF0ZnVja3xmYXRmdWNrZXJ8ZmF0c298ZmNrY3VtfGZlbGNofGZlbGNoZXJ8ZmVsY2hpbmd8ZmVsbGF0aW98ZmVsdGNofGZlbHRjaGVyfGZlbHRjaGluZ3xmaW5nZXJmdWNrcz98ZmluZ2VyZnVja2VkfGZpbmdlcmZ1Y2tlcnM/fGZpbmdlcmZ1Y2tpbmd8ZmlzdGVyfGZpc3RmdWNrfGZpc3RmdWNrZWR8ZmlzdGZ1Y2tlcnxmaXN0ZnVja2luZ3xmaXN0aW5nfGZsYW5nZXxmbG9vfGZseWRpZXxmbHlkeWV8Zm9rfGZvb3RmdWNrfGZvb3RmdWNrZXJzP3xmb290bGlja2Vycz98Zm9vdHN0YXJ8Zm9ybml8ZnJlYWtmdWNrfGZyZWFreWZ1Y2tlcnM/fGZyZWVmdWNrfGZ1fGZ1YmFyfGZ1Y3xmdWNja3M/fGZ1Y2suKnxmdWRnZVteYS16XStwYWNrZXJ8ZnVkZ2VwYWNrZXJ8ZnVnbHl8ZnVrcz98ZnVuZnVja3xmdXVja3M/fGdhbmdiYW5nfGdhbmdiYW5nZWR8Z2FuZ2JhbmdlcnxnYW5nc3Rhcz98Z2F0b3JbXmEtel0rYmFpdHxnYXRvcmJhaXR8Z2F5bXV0aGFmdWNraW53aG9yZXxnYXlzZXh8Z2VlemVyfGdlbml8Z2V0aXRvbnxnaW56b3M/fGdpcHBzP3xnaXBwb3M/fGdpdmVoZWFkfGdsYXplZGRvbnV0fGdvZGFtbWl0fGdvZGRhbWl0fGdvZGRhbW1pdHxnb2RkYW1ufGdvZGRhbW5lZHxnb2RkYW1uZXN8Z29kZGFtbml0fGdvZGRhbW5tdXRoYWZ1Y2tlcnM/fGdvbGRlbnNob3dlcnM/fGdvbGxpd29ncz98Z29ub3JyZWhlYXxnb29rcz98Z29va1teYS16XStleWVzP3xnb29rZXllc3xnb29raWVzfGdvb2t5fGdvcmFzP3xnb3RvaGVsbHxncmVhc2ViYWxscz98Z3JlYXNlcnM/fGdyaW5nb3M/fGdyb2lkcz98Z3ViYmFzP3xndWJzfGd1bW1lcnxnd2FpbG9zP3xnd2VpbG9zP3xneW9wb3M/fGd5cHxneXBlZHxneXBvfGd5cG9zP3xneXBwfGd5cHBlZHxneXBwaWV8Z3lwcGllcz98Z3lwcG9zP3xneXBweXM/fGd5cHNpZXN8Z3lwc3lzP3xoYWRqaXM/fGhhaXJ5YmFja3M/fGhhamlzP3xoYWpqaXM/fGhhbGZbXmEtel0rYnJlZWR8aGFsZlteYS16XStjYXN0ZXxoYWxmYnJlZWR8aGFsZmNhc3RlfGhhbmRqb2JzP3xoYW9sZXM/fGhhcGF8aGFyZG9ufGhlYWRmdWNrfGhlYmVzP3xoZWVicz98aGlsbGJpbGxpZXN8aGlsbGJpbGx5fGhpbmRvb3xoaXNjb2NrfGhpdGxlcmlzbXxoaXRsZXJpc3R8aG98aG9ib3xob2RnaWV8aG9sZXN0dWZmZXJ8aG9tb3xob21vYmFuZ2Vyc3xob25nZXJ8aG9ua2Vyc3xob25rZXlzP3xob25raWVzP3xob25reXxob29rZXJzP3xob290ZXJzfGhvcmV8aG9yaXM/fGhvcmt8aG9ybmV5fGhvcm5pZXN0fGhvcnNlc2hpdHxob3Nlam9ifGhvc2VyfGhvdGRhbW58aG90cHVzc3l8aG90dG90cm90fGh1c3N5fGh5bWllcz98aWJsb3d1fGlkaW90fGlrZXltb3M/fGlrd2V8aW5jZXN0fGluZG9ucz98aW5qdW5zP3xpbnNlc3R8aW50aGVhc3N8aW50aGVidWZmfGphY2thc3N8amFja29mZnxqYWNrc2hpdHxqYWNrdGhlcmlwcGVyfGphcHM/fGphcGNyYXB8amFwaWVzP3xqZWJ1c3xqZWV6fGplcmtvZmZ8amV3Ym95fGpld2VkfGpld2Vzc3xqaWdhfGppZ2Fib29zP3xqaWdhcm9vbmlzP3xqaWdnYWJvcz98amlnZ2FzP3xqaWdncz98amlqamlib29zP3xqaW1maXNofGppc218aml6fGppemltfGppemp1aWNlfGppem18aml6enxqaXp6aW18aml6enVtfGp1Z2dhbG98anVuZ2xlW15hLXpdK2J1bm5pZXN8anVuZ2xlW15hLXpdK2J1bm55fGp1bmdsZWJ1bm55fGthY2Fwcz98a2FjYXBhc3xrYWZmZXJ8a2FmZmlyfGthZmZyZXxrYWZpcnxrYW5ha2V8a2F0c2Fwcz98a2hva2hvbHM/fGtpZ2dlcnxraWtlcz98a2ltY2hpc3xraXNzYXNzfGtra3xrbGFuc21hbnxrbGFuc21lbnxrbGFuc3dvbWFufGtsYW5zd29tZW58a29uZHVtfGtvb258a3JhcHxrcmFwcHl8a3JhdXRzfGt1ZmZhcnxrdW1zP3xrdW1idWJibGV8a3VtYnVsbGJlfGt1bW1lcnxrdW1taW5nfGt1bmlsaW5ndXN8a3VubmlsaW5ndXN8a3VudHxrdXNoaXM/fGt3YXxrd2FpW15hLXpdK2xvcz98a3lrZXM/fGt5b3Bvcz98bGVib3M/fGxlc2JhaW58bGVzYmF5bnxsZXNiaW58bGVzYm9zP3xsZXpiZXxsZXpiZWZyaWVuZHN8bGV6enxsZXp6b3M/fGxpY2ttZXxsaW1leXxsaW1wZGlja3xsaW15fGxpdmVzZXh8bG9hZGVkZ3VufGxvb3NlcnM/fGxvc2Vycz98bG92ZWJvbmV8bG92ZWdvb3xsb3ZlZ3VufGxvdmVqdWljZXxsb3ZlbXVzY2xlfGxvdmVwaXN0b2x8bG92ZXJvY2tldHxsb3dsaWZlfGx1YmVqb2J8bHVicmF8bHVja3ljYW1tZWx0b2V8bHVnYW5zP3xtYWJ1bm9zP3xtYWNhY2FzP3xtYWdpY3dhbmR8bWFoYnVub3M/fG1hbXN8bWFuaGF0ZXJ8bWFucGFzdGV8bWFzdGFiYXRlcz98bWFzdGFiYXRlcnxtYXN0ZXJiYXRlcz98bWFzdGVyYmxhc3RlcnxtYXN0cmFiYXRvcnxtYXN0dXJiYXRlcz98bWFzdHVyYmF0aW5nfG1hdHRyZXNzcHJpbmNlc3N8bWF1W15hLXpdK21hdXM/fG1hdW1hdXxtYXVtYXVzfG1lYXRiZWF0dGVyfG1lYXRyYWNrfG1nZ2VyfG1nZ29yfG1pY2tleWZpbm58bWlsZnM/fG1vY2tleXxtb2NraWV8bW9ja3l8bW9mb3M/fG1va3l8bW9uZXlzaG90cz98bW9vblteYS16XStjcmlja2V0cz98bW9vbmNyaWNrZXRzP3xtb3JvbnM/fG1vc2thbHM/fG1vc2xlbXxtb3NzaGVhZHxtb3RoYWZ1Y2suKnxtb3RoZXJmdWNrLip8bW90aGVybG92ZWJvbmV8bXVmZnM/fG11ZmZkaXZlfG11ZmZkaXZlcnM/fG11ZmZpbmRpdmVycz98bXVmZmxpY2tlcnM/fG11ZmZsaWtjZXJzP3xtdWxhdHRvcz98bXVuY2hlcnM/fG11bnR8bXp1bmd1fG16dW5ndXN8bmFzdHliaXRjaHxuYXN0eWhvfG5hc3R5c2x1dHxuYXN0eXdob3JlfG5lZ3Jlc3xuZWdyZXNzfG5lZ3Jvcz98bmVncm9lc3xuZWdyb2lkfG5pZ2Fycz98bmlnZXJzfG5pZ2V0dGVzP3xuaWdncz98bmlnZ2FzP3xuaWdnYWhzP3xuaWdnYXJzP3xuaWdnYXJhY2NpfG5pZ2dhcmRzP3xuaWdnYXJkZWR8bmlnZ2FyZGluZ3xuaWdnYXJkbGluZXNzfG5pZ2dhcmRsaW5lc3NzfG5pZ2dhenxuaWdnZXJzP3xuaWdnZXJoZWFkfG5pZ2dlcmhvbGV8bmlnZ2VyenxuaWdnbGVzP3xuaWdnbGVkfG5pZ2dsaW5ncz98bmlnZ29yfG5pZ2dyZXNzfG5pZ2dyZXNzZXN8bmlnZ3Vocz98bmlnZ3Vycz98bmlnbGV0fG5pZ25vZ3xuaWdvcnM/fG5pZ3J8bmlncmFzP3xuaWdyZXM/fG5pZ3Jlc3N8bmlncmVzc2VzfG5pZ3M/fG5pdHRpdHxubGdnZXJzP3xubGdnb3J8bm9mdWNraW5nd2F5fG5vb2tleXxub29raWV8bm9vbmFufG51ZGdlcnxudXRmdWNrZXJ8b250aGVyYWd8b3JnYXxvcmdhc2ltfHBha2lzP3xwYWxlc2ltaWFufHBhbmNha2VbXmEtel0rZmFjZXM/fHBhbnNpZXN8cGFuc3l8cGFudGl8cGF5b3xwZWNrZXJ3b29kfHBlZG98cGVlaG9sZXxwZWVwZWV8cGVlcHNob3d8cGVlcHNocHd8cGVuaTV8cGVuaXN8cGVuaXNlc3xwZXJ2fHBodWt8cGh1a2
214VkfHBodWtpbmd8cGh1a2tlZHxwaHVra2luZ3xwaHVuZ2t5fHBodXF8cGk1NXxwaWNhbmlubnl8cGljY2FuaW5ueXxwaWNrYW5pbm5pZXN8cGlja2FuaW5ueXxwaWVma2VzP3xwaWtlcnxwaWtleXxwaWt5fHBpbGxvd1teYS16XStiaXRlcnxwaW1wfHBpbXBlZHxwaW1wZXJ8cGltcGp1aWN8cGltcGp1aWNlfHBpbXBzaW1wfHBpbmRpY2t8cGlzc3xwaXNzZWR8cGlzc2VyfHBpc3Nlc3xwaXNzaGVhZHxwaXNzaW58cGlzc2luZ3xwaXNzb2ZmfHBvY2hhcz98cG9jaG9zcz98cG9ja2V0cG9vbHxwb2htcz98cG9sYWNrcz98cG9sbG9ja3M/fHBvbXxwb21taWV8cG9tbWllc3xwb21teXxwb21zfHBvb3M/fHBvb2VkfHBvb2luZ3xwb29mfHBvb2Z0YXxwb29mdGVyfHBvb258cG9vbnRhbmd8cG9vcndoaXRldHJhc2h8cG9waW1wfHBvcmNoW15hLXpdK21vbmtleXxwb3JjaFteYS16XSttb25raWVzfHBvcmNobW9ua2V5fHBvcm58cG9ybmtpbmd8cG9ybnByaW5jZXNzfHByaWN8cHJpY2t8cHJpY2toZWFkfHB1NTVpfHB1NTV5fHB1YmljbGljZXxwdWR8cHVkYm95fHB1ZGR8cHVkZGJveXxwdWtlfHB1bnRhbmd8cHVyaW5hcHJpY25lc3N8cHVzc3xwdXNzeS4qfHB1c3NpZXM/fHB1c3l8cXVhc2hpZXxxdWVlZnxxdWlja2llfHF1aW18cmE4c3xyYWdoZWFkcz98cmFwZXJ8cmVhcmVuZHxyZWFyZW50cnl8cmVkbGVncz98cmVkbmVja3M/fHJlZHNraW5zP3xyZWVmZXJ8cmVlc3RpZXxyZW50YWZ1Y2t8cmVyZXxyaW1qb2J8cmltbWluZ3xyb3VuZFteYS16XStleWVzfHJvdW5kZXllfHJ1c3NraXxydXNza2llfHNhZGlzfHNhZG9tfHNhbWJvfHNhbWJvc3xzYW1ja2RhZGR5fHNhbmRtfHNhbmRuaWdnZXJzP3xzY2FsbHl3YWd8c2NobG9uZ3M/fHNjaHZhcnRzZXxzY2h2YXJ0c2VufHNjaHdhcnR6ZXxzY2h3YXJ0emVufHNjcmV3eW91fHNlcHBvfHNlcHBvc3xzZXhlZHxzZXhmYXJtfHNleGhvdW5kfHNleGluZ3xzZXhraXR0ZW58c2V4cG90fHNleHNsYXZlfHNleHRvZ298c2V4d2hvcmV8c2V4eW1vbWF8c2V4eXNsaW18c2hhZ2dpbnxzaGFnZ2luZ3xzaGF0fHNoYXZ8c2hhd3R5cGltcHxzaGVlbmV5fHNoaGl0fHNoaWtzYXxzaGl0Lip8c2hvcnRmdWNrfHNoeWxvY2tzP3xzaXNzeXxzaXhzaXhzaXh8c2l4dHluaW5lfHNpeHR5bmluZXJ8c2thbmt8c2thbmtiaXRjaHxza2Fua2Z1Y2t8c2thbmt3aG9yZXxza2Fua3l8c2thbmt5Yml0Y2h8c2thbmt5d2hvcmV8c2tpbmZsdXRlfHNrdW18c2t1bWJhZ3xza3dhfHNrd2V8c2xhbnRleWV8c2xhbnR5fHNsYXBwZXJ8c2xhdmV8c2xhdmVkcml2ZXJ8c2xlZXplYmFnfHNsZWV6ZWJhbGx8c2xpZGVpdGlufHNsaW1lYmFsbHxzbGltZWJ1Y2tldHxzbG9wZWhlYWRzP3xzbG9wZXJzP3xzbG9wZXlzP3xzbG9waWVzfHNsb3B5fHNsdXRzP3xzbHV0dHxzbHV0dGluZ3xzbHV0dHl8c2x1dHdlYXJ8c2x1dHdob3JlfHNtYWNrdGhlbW9ua2V5fHNtdXR8c25hdGNocGF0Y2h8c25vd2JhY2t8c25vd25pZ2dlcnxzb2RvbWlzZXxzb2RvbWl6ZXxzb2RvbXl8c29ub2ZhYml0Y2h8c29ub2ZiaXRjaHxzb290aWVzfHNvb3R5fHNwYWdoZXR0aWJlbmRlcnxzcGFnaGV0dGluaWdnZXJ8c3Bhbmt0aGVtb25rZXl8c3BlYXJjaHVja2Vycz98c3Blcm1iYWdzP3xzcGVybWhlYXJkZXJ8c3Blcm1oZXJkZXJ8c3BpY3M/fHNwaWNrcz98c3BpZ3xzcGlnb3R0eXxzcGlrfHNwbGl0dGFpbHxzcG9vZ2V8c3ByZWFkZWFnbGV8c3B1bmt8c3B1bmt5fHNxZWh8c3F1YXxzcXVhcmVoZWFkcz98c3F1YXd8c3F1aW50eXxzdHJpcGNsdWJ8c3R1aW50aWVzfHN0dXBpZGZ1Y2t8c3R1cGlkZnVja2VyfHN1Y2tkaWNrfHN1Y2tlcnxzdWNrbWV8c3Vja215YXNzfHN1Y2tteWRpY2t8c3Vja215dGl0fHN1Y2tvZmZ8c3dhbXBbXmEtel0rZ3VpbmVhcz98dGFjb2hlYWRzP3x0YWZmfHRhbmd8dGFyW15hLXpdK2JhYmllc3x0YXJbXmEtel0rYmFieXx0YXJiYWJ5fHRhcmR8dGVzdGV8dGhpY2tsaXBzP3x0aGlyZGV5ZXx0aGlyZGxlZ3x0aW1iZXJuaWdnZXJ8dGl0Yml0bmlwcGx5fHRpdGZ1Y2tzP3x0aXRmdWNrZXJ8dGl0ZnVja2lufHRpdGpvYnM/fHRpdGxpY2tlcnM/fHRpdGxvdmVycz98dGl0dGllcz98dGl0dHl8dG9uZ3VldGhydXN0ZXJzP3x0b25ndWV0aHJ1c3RzP3x0b25ndWV0cmFtcHM/fHRvcnR1cnx0b3NzZXJzP3x0b3dlbFteYS16XStoZWFkcz98dG93ZWxoZWFkcz98dHJhaWxlcnRyYXNofHRyYW5uaWVzP3x0cmFubnl8dHJhbnN2ZXN0aXRlcz98dHJpcGxleHx0dWNrYWhvZXx0dW5uZWxvZmxvdmV8dHVybm9ufHR3YXRzP3x0d2lua3M/fHR3aW5raWV8dHdvYml0d2hvcmV8dWNrfHVrcm9wfHVuY2xlW15hLXpdK3RvbXx1bmZ1Y2thYmxlfHVwc2tpcnRzP3x1cHRoZWFzc3x1cHRoZWJ1dHR8dXNhbWF8dmlicnx2aWJyYXRlcnM/fHZpcmdpbmJyZWFrZXJzP3x2b21pdHM/fHdhYnx3YW5rfHdhbmtlcnM/fHdhbmtpbmd8d2F5c3RlZHx3ZWVuaWVzP3x3ZWV3ZWVzP3x3ZWxjaGVyfHdldGJ8d2V0YmFja3M/fHdldHNwb3RzP3x3aGFja2VyfHdoYXNofHdoaWdnZXJzP3x3aGlza2V5ZGlja3x3aGlza3lkaWNrfHdoaXRlW15hLXpdK3RyYXNofHdoaXRlbmlnZ2VyfHdoaXRldHJhc2h8d2hpdGV5cz98d2hpdGllc3x3aGl6fHdob3B8d2hvcmVzP3x3aG9yZWZ1Y2tlcnM/fHdob3JlaG91c2VzP3x3aWdnYXM/fHdpZ2dlcnM/fHdpbGxpZXM/fHdpbGxpZXdhbmtlcnM/fHdufHdvZ3M/fHdvcHx3dGZ8d3Vzc3x3dXp6aWV8eGt3ZXx5YXJwaWVzP3x5ZWxsb3dtYW58eWlkcz98emlnYWJvcz98emlwcGVyaGVhZHM/KVxcYiJdfQ=='; 215 var _getContactFilters = function () { 216 if (_cachedFilters === undefined) { 217 _cachedFilters = {}; 218 var rawFilters = JSON.parse(atob(_rawFilterData)); 219 for (var k of Object.keys(rawFilters)) { 220 _cachedFilters[k] = []; 221 for (var s of rawFilters[k]) { 222 _cachedFilters[k].push(new RegExp(s, 'ui')); 223 } 224 } 225 } 226 return _cachedFilters; 227 }; 228 var _runFilters = function ($obj) { 229 var message = $obj.val(); 230 var filters = _getContactFilters(); 231 var matched = []; 232 for (var k of Object.keys(filters)) { 233 var matchedKey = false;
234 for (var re of filters[k]) { 235 if (re.test(message)) { 236 matchedKey = true; 237 matched.push(k); 238 break; 239 } 240 } 241 } 242 return matched; 243 }; 244 var buildValidator = function ($obj) { 245 return function () { 246 $obj.removeClass(Object.keys(_getContactFilters())); 247 var matched = _runFilters($obj); 248 if (matched.length) { 249 $obj.addClass(matched); 250 $obj.each(function (i) { 251 this.setCustomValidity('triggered filter'); 252 }); 253 } else { 254 $obj.each(function (i) { 255 this.setCustomValidity(''); 256 }); 257 } 258 }; 259 }; 260 var installContactFilter = function ($obj) { 261 var $textarea = $obj.find('#commentText'); 262 var validator = buildValidator($textarea); 263 validator(); 264 var filterTimer = undefined; 265 $textarea.on('input', function () { 266 clearTimeout(filterTimer); 267 filterTimer = setTimeout(validator, 250); 268 }); 269 $obj.on('ajax.form.beforeSubmit', function () { 270 clearTimeout(filterTimer); 271 filterTimer = undefined; 272 validator(); 273 }); 274 }; 275 installContactFilter($('#contactform')); 276 277 // modal ajax loading 278 $('.modal.ajax').on('show.bs.modal', function (e) { 279 var $button = $(e.relatedTarget); 280 var dest = $button.attr('href'); 281 var $modal = $(this); 282 if ($modal.attr('data-content') != dest) { 283 $modal.attr('data-content', dest); 284 var $modalDialog = $modal.find('.modal-dialog'); 285 var customClasses = $button.data('modalCustomClass'); 286 if (customClasses) { 287 $modalDialog.attr('class', 'modal-dialog ' + customClasses); 288 } else { 289 $modalDialog.attr('class', 'modal-dialog ' + $modalDialog.data('defaultClass')); 290 } 291 $modal.find('.modal-body .loaded').empty(); 292 $modal.find('.modal-body .loading').show(); 293 $modal.find('.modal-title .loaded').empty(); 294 $modal.find('.modal-title .loading').show(); 295 $modal.modal('handleUpdate'); 296 if (dest.includes('?')) { 297 dest += '&modal=true'; 298 } else { 299 dest += '?modal=true'; 300 } 301 $.get({ 302 url: dest, 303 dataType: 'html', 304 success: function (data) { 305 var $data = $(data); 306 var $content = $data.find('#content'); 307 $modal.find('.modal-body .loading').hide(); 308 $modal.find('.modal-body .loaded').append($content.children()); 309 var $titlefull = $modal.find('.modal-body .loaded h1').first(); 310 $modal.find('.modal-title .loaded').append($titlefull.find('.main')); 311 $titlefull.remove(); 312 $modal.find('.modal-title .loading').hide(); 313 $modal.modal('handleUpdate'); 314 315 // install any JS hooks on new content 316 var $loaded = $modal.find('.modal-body .loaded'); 317 $loaded.find('[data-bs-toggle~="tooltip"]').tooltip(); 318 $loaded.find('[data-bs-toggle-extra~="tooltip"]').tooltip(); 319 $loaded.find('[data-bs-toggle~="popover"]').popover(); 320 installTablesorter($loaded.find('.tablesorter')); 321 installValidation($loaded.find('.needs-validation')); 322 installAjaxForm($loaded.find('.ajax-form')); 323 installFilterable($loaded.find('[data-toggle="filterable"]')); 324 installLinkTrack($loaded.find('[data-toggle="linktrack"]')); 325 installContactFilter($loaded.find('#contactform')); 326 }}); 327 } 328 }); 329 330});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.