// source --> /js/webpush.min.js 
(function() {
    var wt_webpushConfig = window.wt_webpushConfig || {
        serviceURL: 'jamie.c.shortest-route.com/charon',
        webpushScriptIncluded: false,
        useUserMatching: true,
        xKey: '19d2bab1f9469c.89085106',
        serviceWorkerScript: '/firebase-messaging-sw.js',
        includeFirebaseScripts: true,
        firebaseConfig: {
            apiKey: 'AIzaSyCn85Mrv5XBXmC1Ap_QY6wDQ5Nu3O1QIVU',
            authDomain: 'mapp-web-push-b9072.firebaseapp.com',
            projectId: 'mapp-web-push-b9072',
            storageBucket: 'mapp-web-push-b9072.firebasestorage.app',
            messagingSenderId: '732572211460',
            appId: '1:732572211460:web:e2d15c5d1278182b37d851',
            measurementId: 'G-KDXM3NK8KY'
        }
    };

var Crypto=Crypto||{};
Crypto.SHA256=function(){var d=function(c,d){return d>>>c|d<<32-c},l=function(c){for(var d="",a,g=7;0<=g;g--)a=c>>>4*g&15,d+=a.toString(16);return d};this.encode=function(c){c=unescape(encodeURIComponent(c+""));var v=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,
3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];c+=String.fromCharCode(128);
var g=Math.ceil((c.length/4+2)/16),n=Array(g),e;for(e=0;e<g;e++){n[e]=Array(16);for(var b=0;16>b;b++)n[e][b]=c.charCodeAt(64*e+4*b)<<24|c.charCodeAt(64*e+4*b+1)<<16|c.charCodeAt(64*e+4*b+2)<<8|c.charCodeAt(64*e+4*b+3)}n[g-1][14]=8*(c.length-1)/Math.pow(2,32);n[g-1][14]=Math.floor(n[g-1][14]);n[g-1][15]=8*(c.length-1)&4294967295;c=Array(64);for(e=0;e<g;e++){for(b=0;16>b;b++)c[b]=n[e][b];for(b=16;64>b;b++){var m=b;var h=c[b-2];h=(d(17,h)^d(19,h)^h>>>10)+c[b-7];var k=c[b-15];k=d(7,k)^d(18,k)^k>>>3;c[m]=
h+k+c[b-16]&4294967295}m=a[0];h=a[1];k=a[2];var u=a[3];var p=a[4];var q=a[5];var r=a[6];var f=a[7];for(b=0;64>b;b++){var t=f;f=p;f=d(6,f)^d(11,f)^d(25,f);t=t+f+(p&q^~p&r)+v[b]+c[b];f=m;var w=(d(2,f)^d(13,f)^d(22,f))+(m&h^m&k^h&k);f=r;r=q;q=p;p=u+t&4294967295;u=k;k=h;h=m;m=t+w&4294967295}a[0]=a[0]+m&4294967295;a[1]=a[1]+h&4294967295;a[2]=a[2]+k&4294967295;a[3]=a[3]+u&4294967295;a[4]=a[4]+p&4294967295;a[5]=a[5]+q&4294967295;a[6]=a[6]+r&4294967295;a[7]=a[7]+f&4294967295}return l(a[0])+l(a[1])+l(a[2])+
l(a[3])+l(a[4])+l(a[5])+l(a[6])+l(a[7])}};

var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,e,g){b!=Array.prototype&&b!=Object.prototype&&(b[e]=g.value)};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var b=0;return function(e){return $jscomp.SYMBOL_PREFIX+(e||"")+b++}}();
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(b){var e=0;return $jscomp.iteratorPrototype(function(){return e<b.length?{done:!1,value:b[e++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};$jscomp.makeIterator=function(b){$jscomp.initSymbolIterator();var e=b[Symbol.iterator];return e?e.call(b):$jscomp.arrayIterator(b)};
$jscomp.polyfill=function(b,e,g,k){if(e){g=$jscomp.global;b=b.split(".");for(k=0;k<b.length-1;k++){var a=b[k];a in g||(g[a]={});g=g[a]}b=b[b.length-1];k=g[b];e=e(k);e!=k&&null!=e&&$jscomp.defineProperty(g,b,{configurable:!0,writable:!0,value:e})}};$jscomp.FORCE_POLYFILL_PROMISE=!1;
$jscomp.polyfill("Promise",function(b){function e(){this.batch_=null}function g(c){return c instanceof a?c:new a(function(a,b){a(c)})}if(b&&!$jscomp.FORCE_POLYFILL_PROMISE)return b;e.prototype.asyncExecute=function(c){null==this.batch_&&(this.batch_=[],this.asyncExecuteBatch_());this.batch_.push(c);return this};e.prototype.asyncExecuteBatch_=function(){var c=this;this.asyncExecuteFunction(function(){c.executeBatch_()})};var k=$jscomp.global.setTimeout;e.prototype.asyncExecuteFunction=function(c){k(c,
0)};e.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var c=this.batch_;this.batch_=[];for(var a=0;a<c.length;++a){var b=c[a];c[a]=null;try{b()}catch(l){this.asyncThrow_(l)}}}this.batch_=null};e.prototype.asyncThrow_=function(c){this.asyncExecuteFunction(function(){throw c;})};var a=function(c){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var a=this.createResolveAndReject_();try{c(a.resolve,a.reject)}catch(h){a.reject(h)}};a.prototype.createResolveAndReject_=
function(){function c(c){return function(q){b||(b=!0,c.call(a,q))}}var a=this,b=!1;return{resolve:c(this.resolveTo_),reject:c(this.reject_)}};a.prototype.resolveTo_=function(c){if(c===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(c instanceof a)this.settleSameAsPromise_(c);else{a:switch(typeof c){case "object":var b=null!=c;break a;case "function":b=!0;break a;default:b=!1}b?this.resolveToNonPromiseObj_(c):this.fulfill_(c)}};a.prototype.resolveToNonPromiseObj_=function(c){var a=
void 0;try{a=c.then}catch(h){this.reject_(h);return}"function"==typeof a?this.settleSameAsThenable_(a,c):this.fulfill_(c)};a.prototype.reject_=function(a){this.settle_(2,a)};a.prototype.fulfill_=function(a){this.settle_(1,a)};a.prototype.settle_=function(a,b){if(0!=this.state_)throw Error("Cannot settle("+a+", "+b+"): Promise already settled in state"+this.state_);this.state_=a;this.result_=b;this.executeOnSettledCallbacks_()};a.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var a=
0;a<this.onSettledCallbacks_.length;++a)n.asyncExecute(this.onSettledCallbacks_[a]);this.onSettledCallbacks_=null}};var n=new e;a.prototype.settleSameAsPromise_=function(a){var b=this.createResolveAndReject_();a.callWhenSettled_(b.resolve,b.reject)};a.prototype.settleSameAsThenable_=function(a,b){var c=this.createResolveAndReject_();try{a.call(b,c.resolve,c.reject)}catch(l){c.reject(l)}};a.prototype.then=function(b,e){function c(a,b){return"function"==typeof a?function(b){try{l(a(b))}catch(t){g(t)}}:
b}var l,g,q=new a(function(a,b){l=a;g=b});this.callWhenSettled_(c(b,l),c(e,g));return q};a.prototype["catch"]=function(a){return this.then(void 0,a)};a.prototype.callWhenSettled_=function(a,b){function c(){switch(e.state_){case 1:a(e.result_);break;case 2:b(e.result_);break;default:throw Error("Unexpected state: "+e.state_);}}var e=this;null==this.onSettledCallbacks_?n.asyncExecute(c):this.onSettledCallbacks_.push(c)};a.resolve=g;a.reject=function(b){return new a(function(a,c){c(b)})};a.race=function(b){return new a(function(a,
c){for(var e=$jscomp.makeIterator(b),h=e.next();!h.done;h=e.next())g(h.value).callWhenSettled_(a,c)})};a.all=function(b){var c=$jscomp.makeIterator(b),e=c.next();return e.done?g([]):new a(function(a,b){function l(b){return function(c){h[b]=c;k--;0==k&&a(h)}}var h=[],k=0;do h.push(void 0),k++,g(e.value).callWhenSettled_(l(h.length-1),b),e=c.next();while(!e.done)})};return a},"es6","es3");
$jscomp.polyfill("Promise.prototype.finally",function(b){return b?b:function(b){return this.then(function(e){return Promise.resolve(b()).then(function(){return e})},function(e){return Promise.resolve(b()).then(function(){throw e;})})}},"es9","es3");
(function(b){var e=b.serviceURL||"jamie.c.shortest-route.com/charon",g=function(){function a(a){var b="";try{b=a.replace(/^ +| +$/g,"")}catch(L){}return b}var b=Math.pow(2,53)-1,m=Object.prototype.hasOwnProperty,c=function(a,d){var f=-1,c=a?a.length:0;if("number"==typeof c&&-1<c&&c<=b)for(;++f<c;)d(a[f],f,a);else for(var p in a)m.call(a,p)&&d(a[p],p,a)},e=function(a){return String(a).replace(/([ -])(?!$)/g,"$1?")},p=function(a,b){var d=null;c(a,function(f,m){d=b(d,f,m,a)});return d},g=function(a,
b){return p(a,function(a,d){return a||RegExp("\\b"+(d.pattern||e(d))+"\\b","i").exec(b)&&(d.label||d)})},h=function(a,b){var d=window.operamini||window.opera;return(d=d&&"function"===typeof d.version&&d.version())?d:p(a,function(a,d){return a||(RegExp(d+"(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)","i").exec(b)||0)[1]||null})},k=function(a,b){return p(a,function(a,d){return a||RegExp("\\b"+e(d)+"(?:\\b|\\w*\\d)","i").exec(b)&&d})},l=function(a,b){return p(a,function(a,d){var f=d.pattern||
e(d);return a||RegExp("\\b"+f+"(?:/[\\d.]+|[ \\w.]*)","i").exec(b)&&(d.label||d)})},n=function(a,b){return p(a,function(a,d){return a||(RegExp("\\b"+e(d)+"((?:/[\\d.]+|[ \\w.]*))","i").exec(b)||0)[1]||null})},q=function(a,b){return p(a,function(a,d){var f=d.pattern||e(d);return a||RegExp("\\b"+f,"i").exec(b)&&(d.label||d)})};this.parse=function(d){var b=g(["Electron","Iceweasel",{label:"Microsoft Edge",pattern:"(?:Edge|Edg|EdgA|EdgiOS)"},{label:"Samsung Internet",pattern:"SamsungBrowser"},"Vivaldi",
"Opera Mini",{label:"Opera Mini",pattern:"OPiOS"},"Opera",{label:"Opera",pattern:"OPR"},"Chromium","Chrome",{label:"Chrome",pattern:"(?:HeadlessChrome)"},{label:"Chrome Mobile",pattern:"(?:CriOS|CrMo)"},{label:"Firefox",pattern:"(?:Firefox|Minefield)"},{label:"Firefox for iOS",pattern:"FxiOS"},{label:"IE",pattern:"IEMobile"},{label:"IE",pattern:"MSIE"},"Safari"],d),f=["(?:Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Opera ?Mini|SamsungBrowser|Version)",e(b),"(?:Firefox|Minefield|NetFront)"],
m=["Windows Phone","Android","CentOS",{label:"Chrome OS",pattern:"CrOS"},"Debian","SuSE","Ubuntu","webOS","Linux","Mac OS X","Macintosh","Mac","Windows"],c=l(m,d);return{name:a(b),version:a(h(f,d)),manufacturer:a(k("Apple Google HP HTC Huawei Lenovo LG Microsoft Motorola Nintendo Nokia Samsung Sony".split(" "),d)),osName:a(c),osVersion:a(n(m,d)).replace(/_/g,"."),platform:a(q([{label:"Windows",pattern:"Windows"},{label:"MacOS",pattern:"Mac"},{label:"Linux",pattern:".+"}],c))}}},k=function(){return"undefined"!==
typeof window.firebase&&"function"===typeof window.firebase.initializeApp&&"function"===typeof window.firebase.messaging},a=function(){if(-1!==document.location.href.indexOf("mapp_debug=1")||-1!==document.cookie.indexOf("mapp_debug=1"))arguments[0]="Mapp Webpush: "+arguments[0],console.log.apply(null,arguments)},n=function(a,b){window.localStorage.setItem("mapp.intelligence."+a,b)},c=function(a){"undefined"===typeof a&&(a=(new Crypto.SHA256).encode(l().token));n("uuid",a)},q=function(a){n("alias2",
a)},h=function(a){return window.localStorage.getItem("mapp.intelligence."+a)||""},l=function(){return{dmc:h("dmc"),uuid:h("uuid"),alias:h("alias2"),token:h("token")}},w=function(){n("token","");n("dmc","");q("");c("")},u=function(){return"https://"+e+"/api/v3/web"},r=function(a,f,m){a={method:"PUT",headers:{X_KEY:b.xKey,"Content-Type":"application/json"},body:{actions:{time:Date.now()+""},key:a}};if(m)for(var d in m){var c=d+"";a.body[c]=m[c]}if(f)for(var p in f)m=p+"",a.body.actions[m]=f[m];a.body=
JSON.stringify(a.body);return a},z=function(b,f){var d=r(b,{get:["alias"]},{alias:f}),c=JSON.parse(JSON.stringify(d));c.body=JSON.parse(c.body);a("get current alias (fetch request): <pre>"+JSON.stringify(c,null,4)+"</pre>");return new Promise(function(a,b){fetch(u(),d).then(function(b){a(b)})["catch"](function(a){b(a)})})},A=function(b){var d="";try{d=window.Intl.DateTimeFormat().resolvedOptions().timeZone}catch(B){}var c={};try{c=(new g).parse(navigator.userAgent)}catch(B){}b=r(b,{register:{appVersion:"1.0.3",
clientName:c.name||"",clientVersion:c.version||"",locale:navigator.language,timeZone:d,manufacturer:c.manufacturer||"",platform:c.platform||"",resolution:screen.height+"x"+screen.width,osName:c.osName||"",osNumber:c.osVersion||"",density:Math.round(window.devicePixelRatio)+"",pushToken:""}});d=JSON.parse(JSON.stringify(b));d.body=JSON.parse(d.body);a("register new user (fetch request): <pre>"+JSON.stringify(d,null,4)+"</pre>");return fetch(u(),b)},t=function(a){return new Promise(function(b){if(document.createElement){var d=
document.getElementsByTagName("head").item(0),c=document.createElement("script");c.setAttribute("language","javascript");c.setAttribute("type","text/javascript");c.setAttribute("src",a);c.onload=function(){window.setTimeout(function(){b()},100)};d.appendChild(c)}})},C=function(b){var d=b;(new Promise(function(b,f){if(d.uuid&&d.dmc){var m=h("alias");m?z(d.uuid,m).then(function(a){return"function"===typeof a.json?a.json():a}).then(function(a){a&&a.payload&&a.payload.get&&a.payload.get.alias?q(a.payload.get.alias):
w();n("alias","");b(l())})["catch"](function(d){a("get alias (response error): "+d.toString());b({})}):(a("existing user (key): "+d.uuid),a("existing user (dmcUserId): "+d.dmc),b(d))}else d.uuid||(c(),d=l(),a("register new user (key): "+d.uuid)),A(d.uuid).then(function(a){b(a)})["catch"](function(a){f(a)})})).then(function(a){return"function"===typeof a.json?a.json():a}).then(function(b){a("user (response): <pre>"+JSON.stringify(b,null,4)+"</pre>");if(b.payload&&b.payload.dmcUserId){var d={action:"dmc",
value:b.payload.dmcUserId};window.wtWebpushMessage=window.wtWebpushMessage||[];window.wtWebpushMessage.push(d);n("dmc",b.payload.dmcUserId);a:{d=b.payload.dmcUserId;if((b=b.payload.register)&&"number"===typeof b.length){b=$jscomp.makeIterator(b);for(var c=b.next();!c.done;c=b.next())if(c=c.value,d!==c){d=c;break a}}d=""}q(d);v(!0)}})["catch"](function(b){a("user (response error): "+b.toString())})},D=function(d){return new Promise(function(c,e){a("call firebase");firebase.initializeApp(b.firebaseConfig);
navigator.serviceWorker.register(b.serviceWorkerScript).then(function(b){var f=firebase.messaging();f.useServiceWorker(b);f.requestPermission().then(function(){f.getToken().then(function(b){a("firebase token: "+b);n("token",b);d&&d!==b?c({token:b,status:"update"}):c({token:b,status:"new"})})["catch"](function(a){e("firebase token (error): "+a.toString())})})["catch"](function(b){a("firebase request (permission): "+b.toString());c({token:"",status:"delete"})});f.onMessage(function(b){if(b&&b.notification){a("message received: <pre>"+
JSON.stringify(b,null,4)+"</pre>");var d=b.notification.title;b=b.notification;b.image&&!b.icon&&(b.icon=b.image);new Notification(d,b)}})})["catch"](function(a){e("firebase register (error): "+a.toString())})})},v=function(b){var d=l(),c={pushToken_bk:"",pushToken:""};b?c.pushToken=d.token:c.pushToken_bk=d.token;d=r(d.uuid,{set:c},{alias:d.alias});c=JSON.parse(JSON.stringify(d));c.body=JSON.parse(c.body);a("opt-in / -out (request): <pre>"+JSON.stringify(c,null,4)+"</pre>");fetch(u(),d).then(function(a){return"function"===
typeof a.json?a.json():a}).then(function(b){a("opt-in / -out (response): <pre>"+JSON.stringify(b,null,4)+"</pre>")})["catch"](function(b){a("opt-in / -out (error): "+b.toString())})["finally"](function(){b||w()})},E=function(b){return new Promise(function(d,c){var e=l();if(e.alias!==b){e=r(e.uuid,{set:{alias:b}},{oldAlias:e.alias});var f=JSON.parse(JSON.stringify(e));f.body=JSON.parse(f.body);a("alias (fetch request): <pre>"+JSON.stringify(f,null,4)+"</pre>");fetch(u(),e).then(function(a){"function"===
typeof a.json?d(a.json()):d(a)})["catch"](function(a){c("alias (response error): "+a.toString())})}else return d("old and new alias are equal ("+e.alias+", "+b+")")})},F=function(b){b&&E(b).then(function(d){try{a("alias (response): <pre>"+JSON.stringify(d,null,4)+"</pre>"),400>d.metadata.statusCode&&q(b)}catch(m){a(d)}})["catch"](function(b){a(b)})},x=function(a){a&&"object"===typeof a&&"alias"===a.action&&F(a.value)},G=function(){var b=l();D(b.token).then(function(d){"new"===d.status?C(b):"update"===
d.status?v(!0):b.token&&b.token!==d.token?v(!1):a("user has already an opt-"+(d.status?"in":"out"))})["catch"](function(b){a(b)})},H=function(a){k()&&a();var b=window.setInterval(function(){k()&&(window.clearInterval(b),a())},500)},I=function(){return new Promise(function(a){b.includeFirebaseScripts&&t("https://www.gstatic.com/firebasejs/8.9.1/firebase-app.js").then(function(){t("https://www.gstatic.com/firebasejs/8.9.1/firebase-messaging.js").then(function(){})});H(a)})},y=function(a,b,c){a.removeEventListener?
a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},J=function(a,b,c){a.addEventListener?("webkitvisibilitychange"===b&&y(a,b,c),a.addEventListener(b,c,!1)):a.attachEvent&&("beforeunload"!==b&&"webkitvisibilitychange"!==b||y(a,b,c),a.attachEvent("on"+b,c))},K=function(){return new Promise(function(a){"complete"===document.readyState?a():J(window,"load",function(){a()})})};(function(){"undefined"!==typeof window.Promise&&"function"===typeof window.fetch&&"undefined"!==typeof window.navigator.serviceWorker&&
"undefined"!==typeof window.localStorage&&"function"===typeof window.localStorage.setItem&&"function"===typeof window.localStorage.getItem&&K().then(function(){I().then(function(){G();for(var a=$jscomp.makeIterator(window.mappWebpushMessage||[]),b=a.next();!b.done;b=a.next())x(b.value);window.mappWebpushMessage={version:"1.0.3",length:0,push:x}})})})()})(wt_webpushConfig);

})();