1function base64Encode(n){return btoa(String.fromCharCode.apply(null,new Uint8Array(n)))}function base64UrlToUint8Array(n){for(var u="=".repeat((4-n.length%4)%4),f=(n+u).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(f),r=new Uint8Array(i.length),t=0;t<i.length;++t)r[t]=i.charCodeAt(t);return r}compareUint8Arrays=function(n,t){if(!n||!t||n.length!==t.length)return!1;for(var i=0,r=n.length;i<r;i++)if(n[i]!==t[i])return!1;return!0};$(function(){if(PushNotificationsKey&&"serviceWorker"in navigator&&"Notification"in window&&"PushManager"in window&&"showNotification"in ServiceWorkerRegistration.prototype){var t=function(n){var t={userVisibleOnly:!0,applicationServerKey:base64UrlToUint8Array(PushNotificationsKey)};n.pushManager.subscribe(t).then(function(n){var t=base64Encode(n.getKey("p256dh")),i=base64Encode(n.getKey("auth")),r={endpoint:n.endpoint,p256dh:t,auth:i};$.post("/api/notif/CreatePushSubscription",r).done(function(n){n.Success&&SetLocalStorage("PushSubId",n.SubscriptionId)})}).catch(function(n){console.error("Unable to subscribe to push.",n)})},i=function(n){n.pushManager.getSubscription().then(function(i){if(i){var r=base64UrlToUint8Array(PushNotificationsKey),u=new Uint8Array(i.options.applicationServerKey);(!compareUint8Arrays(u,r)||isNaN(parseInt(GetLocalStorage("PushSubId"))))&&i.unsubscribe()}else t(n)})},n=function(){navigator.serviceWorker.register("/scripts/serviceworker.js?t=29").then(i)};if(Notification.permission==="granted")n();else{const t=GetLocalStorage("PushNotificationRejectedDate");(!t||(new Date).getTime()-parseInt(t)>2592e6)&&typeof Notification.requestPermission=="function"&&Notification.requestPermission(function(t){t==="granted"?n():SetLocalStorage("PushNotificationRejectedDate",(new Date).getTime())})}}})
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.