Skip to content

Instantly share code, notes, and snippets.

@pamo
Created November 15, 2019 19:49
Show Gist options
  • Save pamo/f78eb013ffb5e782ba27544ef5c1d785 to your computer and use it in GitHub Desktop.
Save pamo/f78eb013ffb5e782ba27544ef5c1d785 to your computer and use it in GitHub Desktop.
new relic agent
window.NREUM || (NREUM = {}),
(__nr_require = (function(t, e, n) {
function r(n) {
if (!e[n]) {
const o = (e[n] = { exports: {} });
t[n][0].call(
o.exports,
e => {
const o = t[n][1][e];
return r(o || e);
},
o,
o.exports,
);
}
return e[n].exports;
}
if (typeof __nr_require === 'function') return __nr_require;
for (let o = 0; o < n.length; o++) r(n[o]);
return r;
})(
{
1: [
function(t, e, n) {
function r(t) {
try {
s.console && console.log(t);
} catch (e) {}
}
var o,
i = t('ee'),
a = t(21),
s = {};
try {
(o = localStorage.getItem('__nr_flags').split(',')),
console &&
typeof console.log === 'function' &&
((s.console = !0),
o.indexOf('dev') !== -1 && (s.dev = !0),
o.indexOf('nr_dev') !== -1 && (s.nrDev = !0));
} catch (c) {}
s.nrDev &&
i.on('internal-error', t => {
r(t.stack);
}),
s.dev &&
i.on('fn-err', (t, e, n) => {
r(n.stack);
}),
s.dev &&
(r('NR AGENT IN DEVELOPMENT MODE'),
r(`flags: ${a(s, (t, e) => t).join(', ')}`));
},
{},
],
2: [
function(t, e, n) {
function r(t, e, n, r, s) {
try {
l ? (l -= 1) : o(s || new UncaughtException(t, e, n), !0);
} catch (f) {
try {
i('ierr', [f, c.now(), !0]);
} catch (d) {}
}
return typeof u === 'function' && u.apply(this, a(arguments));
}
function UncaughtException(t, e, n) {
(this.message =
t || 'Uncaught error with no additional information'),
(this.sourceURL = e),
(this.line = n);
}
function o(t, e) {
const n = e ? null : c.now();
i('err', [t, n]);
}
var i = t('handle'),
a = t(22),
s = t('ee'),
c = t('loader'),
f = t('gos'),
u = window.onerror,
d = !1,
p = 'nr@seenError',
l = 0;
(c.features.err = !0), t(1), (window.onerror = r);
try {
throw new Error();
} catch (h) {
'stack' in h &&
(t(13),
t(12),
'addEventListener' in window && t(6),
c.xhrWrappable && t(14),
(d = !0));
}
s.on('fn-start', (t, e, n) => {
d && (l += 1);
}),
s.on('fn-err', function(t, e, n) {
d && !n[p] && (f(n, p, () => !0), (this.thrown = !0), o(n));
}),
s.on('fn-end', function() {
d && !this.thrown && l > 0 && (l -= 1);
}),
s.on('internal-error', t => {
i('ierr', [t, c.now(), !0]);
});
},
{},
],
3: [
function(t, e, n) {
t('loader').features.ins = !0;
},
{},
],
4: [
function(t, e, n) {
function r() {
M++, (N = y.hash), (this[u] = g.now());
}
function o() {
M--, y.hash !== N && i(0, !0);
const t = g.now();
(this[h] = ~~this[h] + t - this[u]), (this[d] = t);
}
function i(t, e) {
E.emit('newURL', [`${y}`, e]);
}
function a(t, e) {
t.on(e, function() {
this[e] = g.now();
});
}
var s = '-start',
c = '-end',
f = '-body',
u = `fn${s}`,
d = `fn${c}`,
p = `cb${s}`,
l = `cb${c}`,
h = 'jsTime',
m = 'fetch',
v = 'addEventListener',
w = window,
y = w.location,
g = t('loader');
if (w[v] && g.xhrWrappable) {
var b = t(10),
x = t(11),
E = t(8),
O = t(6),
P = t(13),
R = t(7),
T = t(14),
L = t(9),
j = t('ee'),
S = j.get('tracer');
t(15), (g.features.spa = !0);
var N,
M = 0;
j.on(u, r),
j.on(p, r),
j.on(d, o),
j.on(l, o),
j.buffer([u, d, 'xhr-done', 'xhr-resolved']),
O.buffer([u]),
P.buffer([`setTimeout${c}`, `clearTimeout${s}`, u]),
T.buffer([u, 'new-xhr', `send-xhr${s}`]),
R.buffer([m + s, `${m}-done`, m + f + s, m + f + c]),
E.buffer(['newURL']),
b.buffer([u]),
x.buffer(['propagate', p, l, 'executor-err', `resolve${s}`]),
S.buffer([u, `no-${u}`]),
L.buffer(['new-jsonp', 'cb-start', 'jsonp-error', 'jsonp-end']),
a(T, `send-xhr${s}`),
a(j, 'xhr-resolved'),
a(j, 'xhr-done'),
a(R, m + s),
a(R, `${m}-done`),
a(L, 'new-jsonp'),
a(L, 'jsonp-end'),
a(L, 'cb-start'),
E.on('pushState-end', i),
E.on('replaceState-end', i),
w[v]('hashchange', i, !0),
w[v]('load', i, !0),
w[v](
'popstate',
() => {
i(0, M > 1);
},
!0,
);
}
},
{},
],
5: [
function(t, e, n) {
function r(t) {}
if (
window.performance &&
window.performance.timing &&
window.performance.getEntriesByType
) {
let o = t('ee'),
i = t('handle'),
a = t(13),
s = t(12),
c = 'learResourceTimings',
f = 'addEventListener',
u = 'resourcetimingbufferfull',
d = 'bstResource',
p = 'resource',
l = '-start',
h = '-end',
m = `fn${l}`,
v = `fn${h}`,
w = 'bstTimer',
y = 'pushState',
g = t('loader');
(g.features.stn = !0), t(8);
const b = NREUM.o.EV;
o.on(m, function(t, e) {
const n = t[0];
n instanceof b && (this.bstStart = g.now());
}),
o.on(v, function(t, e) {
const n = t[0];
n instanceof b && i('bst', [n, e, this.bstStart, g.now()]);
}),
a.on(m, function(t, e, n) {
(this.bstStart = g.now()), (this.bstType = n);
}),
a.on(v, function(t, e) {
i(w, [e, this.bstStart, g.now(), this.bstType]);
}),
s.on(m, function() {
this.bstStart = g.now();
}),
s.on(v, function(t, e) {
i(w, [e, this.bstStart, g.now(), 'requestAnimationFrame']);
}),
o.on(y + l, function(t) {
(this.time = g.now()),
(this.startPath = location.pathname + location.hash);
}),
o.on(y + h, function(t) {
i('bstHist', [
location.pathname + location.hash,
this.startPath,
this.time,
]);
}),
f in window.performance &&
(window.performance[`c${c}`]
? window.performance[f](
u,
t => {
i(d, [window.performance.getEntriesByType(p)]),
window.performance[`c${c}`]();
},
!1,
)
: window.performance[f](
`webkit${u}`,
t => {
i(d, [window.performance.getEntriesByType(p)]),
window.performance[`webkitC${c}`]();
},
!1,
)),
document[f]('scroll', r, { passive: !0 }),
document[f]('keypress', r, !1),
document[f]('click', r, !1);
}
},
{},
],
6: [
function(t, e, n) {
function r(t) {
for (var e = t; e && !e.hasOwnProperty(u); )
e = Object.getPrototypeOf(e);
e && o(e);
}
function o(t) {
s.inPlace(t, [u, d], '-', i);
}
function i(t, e) {
return t[1];
}
var a = t('ee').get('events'),
s = t(24)(a, !0),
c = t('gos'),
f = XMLHttpRequest,
u = 'addEventListener',
d = 'removeEventListener';
(e.exports = a),
'getPrototypeOf' in Object
? (r(document), r(window), r(f.prototype))
: f.prototype.hasOwnProperty(u) && (o(window), o(f.prototype)),
a.on(`${u}-start`, function(t, e) {
let n = t[1],
r = c(n, 'nr@wrapped', () => {
function t() {
if (typeof n.handleEvent === 'function')
return n.handleEvent(...arguments);
}
const e = { object: t, function: n }[typeof n];
return e ? s(e, 'fn-', null, e.name || 'anonymous') : n;
});
this.wrapped = t[1] = r;
}),
a.on(`${d}-start`, function(t) {
t[1] = this.wrapped || t[1];
});
},
{},
],
7: [
function(t, e, n) {
function r(t, e, n) {
const r = t[e];
typeof r === 'function' &&
(t[e] = function() {
const t = r.apply(this, arguments);
return (
o.emit(`${n}start`, arguments, t),
t.then(e => o.emit(`${n}end`, [null, e], t), e, e => {
throw (o.emit(`${n}end`, [e], t), e);
})
);
});
}
var o = t('ee').get('fetch'),
i = t(21);
e.exports = o;
let a = window,
s = 'fetch-',
c = `${s}body-`,
f = ['arrayBuffer', 'blob', 'json', 'text', 'formData'],
u = a.Request,
d = a.Response,
p = a.fetch,
l = 'prototype';
u &&
d &&
p &&
(i(f, (t, e) => {
r(u[l], e, c), r(d[l], e, c);
}),
r(a, 'fetch', s),
o.on(`${s}end`, function(t, e) {
const n = this;
if (e) {
const r = e.headers.get('content-length');
r !== null && (n.rxSize = r), o.emit(`${s}done`, [null, e], n);
} else o.emit(`${s}done`, [t], n);
}));
},
{},
],
8: [
function(t, e, n) {
let r = t('ee').get('history'),
o = t(24)(r);
(e.exports = r),
o.inPlace(window.history, ['pushState', 'replaceState'], '-');
},
{},
],
9: [
function(t, e, n) {
function r(t) {
function e() {
c.emit('jsonp-end', [], p),
t.removeEventListener('load', e, !1),
t.removeEventListener('error', n, !1);
}
function n() {
c.emit('jsonp-error', [], p),
c.emit('jsonp-end', [], p),
t.removeEventListener('load', e, !1),
t.removeEventListener('error', n, !1);
}
const r =
t &&
typeof t.nodeName === 'string' &&
t.nodeName.toLowerCase() === 'script';
if (r) {
const o = typeof t.addEventListener === 'function';
if (o) {
const a = i(t.src);
if (a) {
let u = s(a),
d = typeof u.parent[u.key] === 'function';
if (d) {
var p = {};
f.inPlace(u.parent, [u.key], 'cb-', p),
t.addEventListener('load', e, !1),
t.addEventListener('error', n, !1),
c.emit('new-jsonp', [t.src], p);
}
}
}
}
}
function o() {
return 'addEventListener' in window;
}
function i(t) {
const e = t.match(u);
return e ? e[1] : null;
}
function a(t, e) {
let n = t.match(p),
r = n[1],
o = n[3];
return o ? a(o, e[r]) : e[r];
}
function s(t) {
const e = t.match(d);
return e && e.length >= 3
? { key: e[2], parent: a(e[1], window) }
: { key: t, parent: window };
}
var c = t('ee').get('jsonp'),
f = t(24)(c);
if (((e.exports = c), o())) {
var u = /[?&](?:callback|cb)=([^&#]+)/,
d = /(.*)\.([^.]+)/,
p = /^(\w+)(\.|$)(.*)$/,
l = ['appendChild', 'insertBefore', 'replaceChild'];
f.inPlace(HTMLElement.prototype, l, 'dom-'),
f.inPlace(HTMLHeadElement.prototype, l, 'dom-'),
f.inPlace(HTMLBodyElement.prototype, l, 'dom-'),
c.on('dom-start', t => {
r(t[0]);
});
}
},
{},
],
10: [
function(t, e, n) {
let r = t('ee').get('mutation'),
o = t(24)(r),
i = NREUM.o.MO;
(e.exports = r),
i &&
((window.MutationObserver = function(t) {
return this instanceof i
? new i(o(t, 'fn-'))
: i.apply(this, arguments);
}),
(MutationObserver.prototype = i.prototype));
},
{},
],
11: [
function(t, e, n) {
function r(t) {
let e = a.context(),
n = s(t, 'executor-', e),
r = new f(n);
return (
(a.context(r).getCtx = function() {
return e;
}),
a.emit('new-promise', [r, e], e),
r
);
}
function o(t, e) {
return e;
}
var i = t(24),
a = t('ee').get('promise'),
s = i(a),
c = t(21),
f = NREUM.o.PR;
(e.exports = a),
f &&
((window.Promise = r),
['all', 'race'].forEach(t => {
const e = f[t];
f[t] = function(n) {
function r(t) {
return function() {
a.emit('propagate', [null, !o], i), (o = o || !t);
};
}
var o = !1;
c(n, (e, n) => {
Promise.resolve(n).then(r(t === 'all'), r(!1));
});
var i = e.apply(f, arguments),
s = f.resolve(i);
return s;
};
}),
['resolve', 'reject'].forEach(t => {
const e = f[t];
f[t] = function(t) {
const n = e.apply(f, arguments);
return t !== n && a.emit('propagate', [t, !0], n), n;
};
}),
(f.prototype.catch = function(t) {
return this.then(null, t);
}),
(f.prototype = Object.create(f.prototype, {
constructor: { value: r },
})),
c(Object.getOwnPropertyNames(f), (t, e) => {
try {
r[e] = f[e];
} catch (n) {}
}),
a.on('executor-start', function(t) {
(t[0] = s(t[0], 'resolve-', this)),
(t[1] = s(t[1], 'resolve-', this));
}),
a.on('executor-err', (t, e, n) => {
t[1](n);
}),
s.inPlace(f.prototype, ['then'], 'then-', o),
a.on('then-start', function(t, e) {
(this.promise = e),
(t[0] = s(t[0], 'cb-', this)),
(t[1] = s(t[1], 'cb-', this));
}),
a.on('then-end', function(t, e, n) {
this.nextPromise = n;
const r = this.promise;
a.emit('propagate', [r, !0], n);
}),
a.on('cb-end', function(t, e, n) {
a.emit('propagate', [n, !0], this.nextPromise);
}),
a.on('propagate', function(t, e, n) {
(this.getCtx && !e) ||
(this.getCtx = function() {
if (t instanceof Promise) var e = a.context(t);
return e && e.getCtx ? e.getCtx() : this;
});
}),
(r.toString = function() {
return `${f}`;
}));
},
{},
],
12: [
function(t, e, n) {
let r = t('ee').get('raf'),
o = t(24)(r),
i = 'equestAnimationFrame';
(e.exports = r),
o.inPlace(
window,
[`r${i}`, `mozR${i}`, `webkitR${i}`, `msR${i}`],
'raf-',
),
r.on('raf-start', t => {
t[0] = o(t[0], 'fn-');
});
},
{},
],
13: [
function(t, e, n) {
function r(t, e, n) {
t[0] = a(t[0], 'fn-', null, n);
}
function o(t, e, n) {
(this.method = n),
(this.timerDuration = isNaN(t[1]) ? 0 : +t[1]),
(t[0] = a(t[0], 'fn-', this, n));
}
var i = t('ee').get('timer'),
a = t(24)(i),
s = 'setTimeout',
c = 'setInterval',
f = 'clearTimeout',
u = '-start',
d = '-';
(e.exports = i),
a.inPlace(window, [s, 'setImmediate'], s + d),
a.inPlace(window, [c], c + d),
a.inPlace(window, [f, 'clearImmediate'], f + d),
i.on(c + u, r),
i.on(s + u, o);
},
{},
],
14: [
function(t, e, n) {
function r(t, e) {
d.inPlace(e, ['onreadystatechange'], 'fn-', s);
}
function o() {
let t = this,
e = u.context(t);
t.readyState > 3 &&
!e.resolved &&
((e.resolved = !0), u.emit('xhr-resolved', [], t)),
d.inPlace(t, y, 'fn-', s);
}
function i(t) {
g.push(t),
h && (x ? x.then(a) : v ? v(a) : ((E = -E), (O.data = E)));
}
function a() {
for (let t = 0; t < g.length; t++) r([], g[t]);
g.length && (g = []);
}
function s(t, e) {
return e;
}
function c(t, e) {
for (const n in t) e[n] = t[n];
return e;
}
t(6);
var f = t('ee'),
u = f.get('xhr'),
d = t(24)(u),
p = NREUM.o,
l = p.XHR,
h = p.MO,
m = p.PR,
v = p.SI,
w = 'readystatechange',
y = [
'onload',
'onerror',
'onabort',
'onloadstart',
'onloadend',
'onprogress',
'ontimeout',
],
g = [];
e.exports = u;
const b = (window.XMLHttpRequest = function(t) {
const e = new l(t);
try {
u.emit('new-xhr', [e], e), e.addEventListener(w, o, !1);
} catch (n) {
try {
u.emit('internal-error', [n]);
} catch (r) {}
}
return e;
});
if (
(c(l, b),
(b.prototype = l.prototype),
d.inPlace(b.prototype, ['open', 'send'], '-xhr-', s),
u.on('send-xhr-start', (t, e) => {
r(t, e), i(e);
}),
u.on('open-xhr-start', r),
h)
) {
var x = m && m.resolve();
if (!v && !m) {
var E = 1,
O = document.createTextNode(E);
new h(a).observe(O, { characterData: !0 });
}
} else
f.on('fn-end', t => {
(t[0] && t[0].type === w) || a();
});
},
{},
],
15: [
function(t, e, n) {
function r(t) {
let e = this.params,
n = this.metrics;
if (!this.ended) {
this.ended = !0;
for (let r = 0; r < d; r++)
t.removeEventListener(u[r], this.listener, !1);
if (!e.aborted) {
if (
((n.duration = a.now() - this.startTime), t.readyState === 4)
) {
e.status = t.status;
const i = o(t, this.lastSize);
if ((i && (n.rxSize = i), this.sameOrigin)) {
const c = t.getResponseHeader('X-NewRelic-App-Data');
c && (e.cat = c.split(', ').pop());
}
} else e.status = 0;
(n.cbTime = this.cbTime),
f.emit('xhr-done', [t], t),
s('xhr', [e, n, this.startTime]);
}
}
}
function o(t, e) {
const n = t.responseType;
if (n === 'json' && e !== null) return e;
const r =
n === 'arraybuffer' || n === 'blob' || n === 'json'
? t.response
: t.responseText;
return h(r);
}
function i(t, e) {
let n = c(e),
r = t.params;
(r.host = `${n.hostname}:${n.port}`),
(r.pathname = n.pathname),
(t.sameOrigin = n.sameOrigin);
}
var a = t('loader');
if (a.xhrWrappable) {
var s = t('handle'),
c = t(16),
f = t('ee'),
u = ['load', 'error', 'abort', 'timeout'],
d = u.length,
p = t('id'),
l = t(19),
h = t(18),
m = window.XMLHttpRequest;
(a.features.xhr = !0),
t(14),
f.on('new-xhr', function(t) {
const e = this;
(e.totalCbs = 0),
(e.called = 0),
(e.cbTime = 0),
(e.end = r),
(e.ended = !1),
(e.xhrGuids = {}),
(e.lastSize = null),
(l && (l > 34 || l < 10)) ||
window.opera ||
t.addEventListener(
'progress',
t => {
e.lastSize = t.loaded;
},
!1,
);
}),
f.on('open-xhr-start', function(t) {
(this.params = { method: t[0] }),
i(this, t[1]),
(this.metrics = {});
}),
f.on('open-xhr-end', function(t, e) {
'loader_config' in NREUM &&
'xpid' in NREUM.loader_config &&
this.sameOrigin &&
e.setRequestHeader('X-NewRelic-ID', NREUM.loader_config.xpid);
}),
f.on('send-xhr-start', function(t, e) {
let n = this.metrics,
r = t[0],
o = this;
if (n && r) {
const i = h(r);
i && (n.txSize = i);
}
(this.startTime = a.now()),
(this.listener = function(t) {
try {
t.type === 'abort' && (o.params.aborted = !0),
(t.type !== 'load' ||
(o.called === o.totalCbs &&
(o.onloadCalled ||
typeof e.onload !== 'function'))) &&
o.end(e);
} catch (n) {
try {
f.emit('internal-error', [n]);
} catch (r) {}
}
});
for (let s = 0; s < d; s++)
e.addEventListener(u[s], this.listener, !1);
}),
f.on('xhr-cb-time', function(t, e, n) {
(this.cbTime += t),
e ? (this.onloadCalled = !0) : (this.called += 1),
this.called !== this.totalCbs ||
(!this.onloadCalled && typeof n.onload === 'function') ||
this.end(n);
}),
f.on('xhr-load-added', function(t, e) {
const n = `${p(t)}${!!e}`;
this.xhrGuids &&
!this.xhrGuids[n] &&
((this.xhrGuids[n] = !0), (this.totalCbs += 1));
}),
f.on('xhr-load-removed', function(t, e) {
const n = `${p(t)}${!!e}`;
this.xhrGuids &&
this.xhrGuids[n] &&
(delete this.xhrGuids[n], (this.totalCbs -= 1));
}),
f.on('addEventListener-end', (t, e) => {
e instanceof m &&
t[0] === 'load' &&
f.emit('xhr-load-added', [t[1], t[2]], e);
}),
f.on('removeEventListener-end', (t, e) => {
e instanceof m &&
t[0] === 'load' &&
f.emit('xhr-load-removed', [t[1], t[2]], e);
}),
f.on('fn-start', function(t, e, n) {
e instanceof m &&
(n === 'onload' && (this.onload = !0),
((t[0] && t[0].type) === 'load' || this.onload) &&
(this.xhrCbStart = a.now()));
}),
f.on('fn-end', function(t, e) {
this.xhrCbStart &&
f.emit(
'xhr-cb-time',
[a.now() - this.xhrCbStart, this.onload, e],
e,
);
});
}
},
{},
],
16: [
function(t, e, n) {
e.exports = function(t) {
let e = document.createElement('a'),
n = window.location,
r = {};
(e.href = t), (r.port = e.port);
const o = e.href.split('://');
!r.port &&
o[1] &&
(r.port = o[1]
.split('/')[0]
.split('@')
.pop()
.split(':')[1]),
(r.port && r.port !== '0') ||
(r.port = o[0] === 'https' ? '443' : '80'),
(r.hostname = e.hostname || n.hostname),
(r.pathname = e.pathname),
(r.protocol = o[0]),
r.pathname.charAt(0) !== '/' && (r.pathname = `/${r.pathname}`);
let i =
!e.protocol || e.protocol === ':' || e.protocol === n.protocol,
a = e.hostname === document.domain && e.port === n.port;
return (r.sameOrigin = i && (!e.hostname || a)), r;
};
},
{},
],
17: [
function(t, e, n) {
function r() {}
function o(t, e, n) {
return function() {
return (
i(t, [f.now()].concat(s(arguments)), e ? null : this, n),
e ? void 0 : this
);
};
}
var i = t('handle'),
a = t(21),
s = t(22),
c = t('ee').get('tracer'),
f = t('loader'),
u = NREUM;
typeof window.newrelic === 'undefined' && (newrelic = u);
let d = [
'setPageViewName',
'setCustomAttribute',
'setErrorHandler',
'finished',
'addToTrace',
'inlineHit',
'addRelease',
],
p = 'api-',
l = `${p}ixn-`;
a(d, (t, e) => {
u[e] = o(p + e, !0, 'api');
}),
(u.addPageAction = o(`${p}addPageAction`, !0)),
(u.setCurrentRouteName = o(`${p}routeName`, !0)),
(e.exports = newrelic),
(u.interaction = function() {
return new r().get();
});
const h = (r.prototype = {
createTracer(t, e) {
let n = {},
r = this,
o = typeof e === 'function';
return (
i(`${l}tracer`, [f.now(), t, n], r),
function() {
if (
(c.emit(`${o ? '' : 'no-'}fn-start`, [f.now(), r, o], n), o)
)
try {
return e.apply(this, arguments);
} catch (t) {
throw (c.emit('fn-err', [arguments, this, t], n), t);
} finally {
c.emit('fn-end', [f.now()], n);
}
}
);
},
});
a(
'actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get'.split(
',',
),
(t, e) => {
h[e] = o(l + e);
},
),
(newrelic.noticeError = function(t) {
typeof t === 'string' && (t = new Error(t)),
i('err', [t, f.now()]);
});
},
{},
],
18: [
function(t, e, n) {
e.exports = function(t) {
if (typeof t === 'string' && t.length) return t.length;
if (typeof t === 'object') {
if (
typeof ArrayBuffer !== 'undefined' &&
t instanceof ArrayBuffer &&
t.byteLength
)
return t.byteLength;
if (typeof Blob !== 'undefined' && t instanceof Blob && t.size)
return t.size;
if (!(typeof FormData !== 'undefined' && t instanceof FormData))
try {
return JSON.stringify(t).length;
} catch (e) {}
}
};
},
{},
],
19: [
function(t, e, n) {
let r = 0,
o = navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);
o && (r = +o[1]), (e.exports = r);
},
{},
],
20: [
function(t, e, n) {
function r(t, e) {
if (!o) return !1;
if (t !== o) return !1;
if (!e) return !0;
if (!i) return !1;
for (
let n = i.split('.'), r = e.split('.'), a = 0;
a < r.length;
a++
)
if (r[a] !== n[a]) return !1;
return !0;
}
var o = null,
i = null,
a = /Version\/(\S+)\s+Safari/;
if (navigator.userAgent) {
let s = navigator.userAgent,
c = s.match(a);
c &&
s.indexOf('Chrome') === -1 &&
s.indexOf('Chromium') === -1 &&
((o = 'Safari'), (i = c[1]));
}
e.exports = { agent: o, version: i, match: r };
},
{},
],
21: [
function(t, e, n) {
function r(t, e) {
let n = [],
r = '',
i = 0;
for (r in t) o.call(t, r) && ((n[i] = e(r, t[r])), (i += 1));
return n;
}
var o = Object.prototype.hasOwnProperty;
e.exports = r;
},
{},
],
22: [
function(t, e, n) {
function r(t, e, n) {
e || (e = 0), typeof n === 'undefined' && (n = t ? t.length : 0);
for (
var r = -1, o = n - e || 0, i = Array(o < 0 ? 0 : o);
++r < o;
)
i[r] = t[e + r];
return i;
}
e.exports = r;
},
{},
],
23: [
function(t, e, n) {
e.exports = {
exists:
typeof window.performance !== 'undefined' &&
window.performance.timing &&
typeof window.performance.timing.navigationStart !== 'undefined',
};
},
{},
],
24: [
function(t, e, n) {
function r(t) {
return !(t && t instanceof Function && t.apply && !t[a]);
}
var o = t('ee'),
i = t(22),
a = 'nr@original',
s = Object.prototype.hasOwnProperty,
c = !1;
e.exports = function(t, e) {
function n(t, e, n, o) {
function nrWrapper() {
let r, a, s, c;
try {
(a = this),
(r = i(arguments)),
(s = typeof n === 'function' ? n(r, a) : n || {});
} catch (f) {
p([f, '', [r, a, o], s]);
}
u(`${e}start`, [r, a, o], s);
try {
return (c = t.apply(a, r));
} catch (d) {
throw (u(`${e}err`, [r, a, d], s), d);
} finally {
u(`${e}end`, [r, a, c], s);
}
}
return r(t)
? t
: (e || (e = ''),
(nrWrapper[a] = t),
d(t, nrWrapper),
nrWrapper);
}
function f(t, e, o, i) {
o || (o = '');
let a,
s,
c,
f = o.charAt(0) === '-';
for (c = 0; c < e.length; c++)
(s = e[c]),
(a = t[s]),
r(a) || (t[s] = n(a, f ? s + o : o, i, s));
}
function u(n, r, o) {
if (!c || e) {
const i = c;
c = !0;
try {
t.emit(n, r, o, e);
} catch (a) {
p([a, n, r, o]);
}
c = i;
}
}
function d(t, e) {
if (Object.defineProperty && Object.keys)
try {
const n = Object.keys(t);
return (
n.forEach(n => {
Object.defineProperty(e, n, {
get() {
return t[n];
},
set(e) {
return (t[n] = e), e;
},
});
}),
e
);
} catch (r) {
p([r]);
}
for (const o in t) s.call(t, o) && (e[o] = t[o]);
return e;
}
function p(e) {
try {
t.emit('internal-error', e);
} catch (n) {}
}
return t || (t = o), (n.inPlace = f), (n.flag = a), n;
};
},
{},
],
ee: [
function(t, e, n) {
function r() {}
function o(t) {
function e(t) {
return t && t instanceof r ? t : t ? c(t, s, i) : i();
}
function n(n, r, o, i) {
if (!p.aborted || i) {
t && t(n, r, o);
for (var a = e(o), s = m(n), c = s.length, f = 0; f < c; f++)
s[f].apply(a, r);
const d = u[g[n]];
return d && d.push([b, n, r, a]), a;
}
}
function l(t, e) {
y[t] = m(t).concat(e);
}
function h(t, e) {
const n = y[t];
if (n)
for (let r = 0; r < n.length; r++) n[r] === e && n.splice(r, 1);
}
function m(t) {
return y[t] || [];
}
function v(t) {
return (d[t] = d[t] || o(n));
}
function w(t, e) {
f(t, (t, n) => {
(e = e || 'feature'), (g[n] = e), e in u || (u[e] = []);
});
}
var y = {},
g = {},
b = {
on: l,
addEventListener: l,
removeEventListener: h,
emit: n,
get: v,
listeners: m,
context: e,
buffer: w,
abort: a,
aborted: !1,
};
return b;
}
function i() {
return new r();
}
function a() {
(u.api || u.feature) && ((p.aborted = !0), (u = p.backlog = {}));
}
var s = 'nr@context',
c = t('gos'),
f = t(21),
u = {},
d = {},
p = (e.exports = o());
p.backlog = u;
},
{},
],
gos: [
function(t, e, n) {
function r(t, e, n) {
if (o.call(t, e)) return t[e];
const r = n();
if (Object.defineProperty && Object.keys)
try {
return (
Object.defineProperty(t, e, {
value: r,
writable: !0,
enumerable: !1,
}),
r
);
} catch (i) {}
return (t[e] = r), r;
}
var o = Object.prototype.hasOwnProperty;
e.exports = r;
},
{},
],
handle: [
function(t, e, n) {
function r(t, e, n, r) {
o.buffer([t], r), o.emit(t, e, n);
}
var o = t('ee').get('handle');
(e.exports = r), (r.ee = o);
},
{},
],
id: [
function(t, e, n) {
function r(t) {
const e = typeof t;
return !t || (e !== 'object' && e !== 'function')
? -1
: t === window
? 0
: a(t, i, () => o++);
}
var o = 1,
i = 'nr@id',
a = t('gos');
e.exports = r;
},
{},
],
loader: [
function(t, e, n) {
function r() {
if (!E++) {
let t = (x.info = NREUM.info),
e = l.getElementsByTagName('script')[0];
if (
(setTimeout(u.abort, 3e4),
!(t && t.licenseKey && t.applicationID && e))
)
return u.abort();
f(g, (e, n) => {
t[e] || (t[e] = n);
}),
c('mark', ['onload', a() + x.offset], null, 'api');
const n = l.createElement('script');
(n.src = `https://${t.agent}`), e.parentNode.insertBefore(n, e);
}
}
function o() {
l.readyState === 'complete' && i();
}
function i() {
c('mark', ['domContent', a() + x.offset], null, 'api');
}
function a() {
return O.exists && performance.now
? Math.round(performance.now())
: (s = Math.max(new Date().getTime(), s)) - x.offset;
}
var s = new Date().getTime(),
c = t('handle'),
f = t(21),
u = t('ee'),
d = t(20),
p = window,
l = p.document,
h = 'addEventListener',
m = 'attachEvent',
v = p.XMLHttpRequest,
w = v && v.prototype;
NREUM.o = {
ST: setTimeout,
SI: p.setImmediate,
CT: clearTimeout,
XHR: v,
REQ: p.Request,
EV: p.Event,
PR: p.Promise,
MO: p.MutationObserver,
};
var y = `${location}`,
g = {
beacon: 'bam.nr-data.net',
errorBeacon: 'bam.nr-data.net',
agent: 'js-agent.newrelic.com/nr-spa-1099.min.js',
},
b = v && w && w[h] && !/CriOS/.test(navigator.userAgent),
x = (e.exports = {
offset: s,
now: a,
origin: y,
features: {},
xhrWrappable: b,
userAgent: d,
});
t(17),
l[h]
? (l[h]('DOMContentLoaded', i, !1), p[h]('load', r, !1))
: (l[m]('onreadystatechange', o), p[m]('onload', r)),
c('mark', ['firstbyte', s], null, 'api');
var E = 0,
O = t(23);
},
{},
],
},
{},
['loader', 2, 15, 5, 3, 4],
));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment