CINXE.COM

Delivering Outcomes that Matter to Learners | Efficacy

<!DOCTYPE HTML> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"/> <meta name="template" content="global-store-en-template"/> <link href="https://www.pearson.com/pcp-hed/css/pcp-hed.css" rel='stylesheet'/> <title>Delivering Outcomes that Matter to Learners | Efficacy </title> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta property="og:title" content="Efficacy &amp; Research at Pearson"/> <meta name="twitter:title" content="Efficacy &amp; Research at Pearson"/> <meta name="description" content="Discover how efficacy ensures that Pearson educational products and services help more learners reach their learning goals."/> <meta name="title" content="Delivering Outcomes that Matter to Learners | Efficacy "/> <meta property="og:description" content="Discover how efficacy ensures that Pearson educational products and services help more learners reach their learning goals."/> <meta property="og:url" content="https://www.pearson.com/efficacy.html"/> <meta name="twitter:description" content="Discover how efficacy ensures that Pearson educational products and services help more learners reach their learning goals."/> <meta name="article:modified_time" content="2023-09-15T16:45:56.868Z"/> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/page/page-properties-dialog.min.ACSHASH1de7355ba14c780dbdf61ff69fb685cf.css" type="text/css"> <link rel="shortcut icon" media="(prefers-color-scheme: dark)" href="/conf/pearson/settings/wcm/templates/global-store-en-template/favicon-on-dark.ico"/> <link rel="shortcut icon" media="(prefers-color-scheme: light)" href="/conf/pearson/settings/wcm/templates/global-store-en-template/favicon-on-light.ico"/> <script type="text/javascript" src="https://www.pearson.com/assets/9904570549167f794e266452faa1fa11422373f0727" ></script><script src="/etc/clientlibs/platform/aem-core/libraries/jquery-3-6-0.min.ACSHASHf7f88c154f8dde28b5bcdd9e1c79f655.js"></script> <script src="/etc/clientlibs/platform/aem-core/libraries/jquery-ui-1-13-2.min.ACSHASH1e2047978946a1d271356d0b557a84a3.js"></script> <script src="/etc/clientlibs/platform/aem-core/libraries/picturefill.min.ACSHASH173a529fee52e78dd3735db343325617.js"></script> <script src="/etc/clientlibs/platform/aem-core/form-validator.min.ACSHASH36c30c0fad3028f0587f00d798961847.js"></script> <script src="/etc.clientlibs/clientlibs/granite/lodash/modern.min.ACSHASH76136ba6e7c9276b178edc785c389ba7.js"></script> <script src="/etc.clientlibs/cq/personalization/clientlib/underscore.min.ACSHASH03540ac0f1ea39be635e17b62c718dd5.js"></script> <script src="/etc.clientlibs/clientlibs/granite/backbone.min.ACSHASHe590febe6539b40e39ec9c983d8e96c0.js"></script> <script src="/etc/clientlibs/platform/aem-core/libraries/template-settings.min.ACSHASH6e38b7e6a576e04396c34830c83f30fc.js"></script> <script src="/etc/clientlibs/platform/aem-core/components.min.ACSHASH87f2a153a867306fd643f097683c1831.js"></script> <script src="/etc/clientlibs/platform/aem-core/libraries/bootstrap-4-3-1.min.ACSHASHcb8bf3d1be0523e7c0bd6ce9a1c7a388.js"></script> <script src="/etc/clientlibs/platform/aem-core/libraries/parsley-2-8.min.ACSHASH556fd9ab479352b3d4b9e80b17f0b476.js"></script> <script src="/etc/clientlibs/one-dot-com/one-dot-com/highered-reimagined.min.ACSHASH8484c9b42a7d840d13f47526d5f50435.js"></script> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/libraries/bootstrap-4-3-1.min.ACSHASHcf4d74070a73cdb86117b5ecea837a56.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/libraries/font-awesome-4-2.min.ACSHASHbd12c3d96f5473480f04fb430338d21c.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/libraries/parsley-2-8.min.ACSHASHca334e633e206e73cb76e8ce5f18875f.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/static-collection.min.ACSHASHd8d236ca379e8a2f4fda3e67ba9e1224.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/video-common.min.ACSHASHb41659e9aebfc61648ef1e6283e6e6ef.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/column-control.min.ACSHASH6371e8f53bc80147ef09e70201ed9df7.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/column-nav.min.ACSHASH72c9c50403bd963fcb6e0e49268c9504.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/youtube-video.min.ACSHASHb4f8a1709ea5e6bebb8f47c1a7a30078.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/modal-window-pop-up.min.ACSHASH9e8a7baff9560796c704601fa9097501.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/events/events-calendar.min.ACSHASH0887ef49815a1b7c07691cecf69b0b86.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/one-dot-com/one-dot-com/static-collection.min.ACSHASH4d4a2616c5ebe9372c4f8a686430979d.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/one-dot-com/one-dot-com/highered-reimagined.min.ACSHASHce355b072dcaf346b9f2a06a1de50f4e.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/global-message.min.ACSHASHf9caedf14ceff1d7ebee18b5b70365b8.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/one-dot-com/one-dot-com/column-control-collapse.min.ACSHASHce2e9e8aa192f718db55e5af9287386c.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/one-dot-com/one-dot-com/hed-navigation/nav-footer.min.ACSHASH851a9145e3332c10a8217b1a43d101c6.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/one-dot-com/one-dot-com/hed-navigation/nav-aem-header.min.ACSHASHe9b4543d7488869f27e8e055fd6cddb1.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/one-dot-com/one-dot-com/he-marketing-block.min.ACSHASHd31b923ccec12225148aa3e811416ec5.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/rte-styles-for-ordered-list.min.ACSHASH5f44c4b223bc4ea49340790d743bacd4.css" type="text/css"> <script id="digital-data-layer" type="text/javascript"> dataLayer = [{ "version" : "1.0", "site" : { "siteId" : "pearson.com", "siteLabel" : "global", "domain" : "pearson.com", "siteSection" : "efficacy", "language" : "en" }, "pageInfo" : { "pageTitle" : "Efficacy", "pageURL" : "/efficacy.html", "pageTemplate" : "/conf/pearson/settings/wcm/templates/global-store-en-template", "dateCreated" : "2022-04-28T14:23:40.184Z", "lastUpdated" : "2023-09-15T16:45:56.868Z", "pageCategory" : "Static", "isBypassEnabled" : false, "loginPageLink" : "/store/login", "breadcrumb" : [ "Home", "Efficacy" ], "pageLayout" : "/conf/pearson/settings/wcm/templates/initial-content-category-page-editable-template", "disableProgressiveProfile" : false, "redirectIfAuthenticatedByIES" : false } }]; </script> <!-- Google Tag Manager New --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MVH69VF');</script> <!-- End Google Tag Manager --> <script src='https://login.pearson.com/v1/piapi/login/js/v2/session.js'></script> <!-- This is the path to script for the current cloud service --> <script src="/etc/cloudservices/geolocation/global-store/_jcr_content/geolocation-context.js" charset="iso-8859-1"></script> <script src="/etc/cloudservices/geolocation/global-store/_jcr_content/geolocation-context.initScript.js"></script> <!-- NR Script Start for www.pearson.com --> <script> window.NREUM || (NREUM = {}); NREUM.init = { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true }, ajax: { deny_list: ['bam.nr-data.net'] }, }; NREUM.loader_config = { accountID: '1765996', trustKey: '691807', agentID: '1120248489', licenseKey: '068b3faa02', applicationID: '1120248489', }; NREUM.info = { beacon: 'bam.nr-data.net', errorBeacon: 'bam.nr-data.net', licenseKey: '068b3faa02', applicationID: '1120248489', sa: 1, }; /*! For license information please see nr-loader-spa-1.246.1.min.js.LICENSE.txt */ (() => { 'use strict'; var e, t, r = { 234: (e, t, r) => { r.d(t, { P_: () => g, Mt: () => v, C5: () => s, DL: () => A, OP: () => D, lF: () => N, Yu: () => x, Dg: () => m, CX: () => c, GE: () => w, sU: () => j, }); var n = r(8632), i = r(9567); const o = { beacon: n.ce.beacon, errorBeacon: n.ce.errorBeacon, licenseKey: void 0, applicationID: void 0, sa: void 0, queueTime: void 0, applicationTime: void 0, ttGuid: void 0, user: void 0, account: void 0, product: void 0, extra: void 0, jsAttributes: {}, userAttributes: void 0, atts: void 0, transactionName: void 0, tNamePlain: void 0, }, a = {}; function s(e) { if (!e) throw new Error('All info objects require an agent identifier!'); if (!a[e]) throw new Error('Info for '.concat(e, ' was never set')); return a[e]; } function c(e, t) { if (!e) throw new Error('All info objects require an agent identifier!'); (a[e] = (0, i.D)(t, o)), (0, n.Qy)(e, a[e], 'info'); } const u = e => { if (!e || 'string' != typeof e) return !1; try { document.createDocumentFragment().querySelector(e); } catch { return !1; } return !0; }; var d = r(7056), l = r(50); const f = () => { const e = { mask_selector: '*', block_selector: '[data-nr-block]', mask_input_options: { color: !1, date: !1, 'datetime-local': !1, email: !1, month: !1, number: !1, range: !1, search: !1, tel: !1, text: !1, time: !1, url: !1, week: !1, textarea: !1, select: !1, password: !0, }, }; return { feature_flags: [], proxy: { assets: void 0, beacon: void 0 }, privacy: { cookies_enabled: !0 }, ajax: { deny_list: void 0, block_internal: !0, enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, distributed_tracing: { enabled: void 0, exclude_newrelic_header: void 0, cors_use_newrelic_header: void 0, cors_use_tracecontext_headers: void 0, allowed_origins: void 0, }, session: { domain: void 0, expiresMs: d.oD, inactiveMs: d.Hb }, ssl: void 0, obfuscate: void 0, jserrors: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, metrics: { enabled: !0, autoStart: !0 }, page_action: { enabled: !0, harvestTimeSeconds: 30, autoStart: !0 }, page_view_event: { enabled: !0, autoStart: !0 }, page_view_timing: { enabled: !0, harvestTimeSeconds: 30, long_task: !1, autoStart: !0 }, session_trace: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, harvest: { tooManyRequestsDelay: 60 }, session_replay: { autoStart: !0, enabled: !1, harvestTimeSeconds: 60, sampling_rate: 50, error_sampling_rate: 50, collect_fonts: !1, inline_images: !1, inline_stylesheet: !0, mask_all_inputs: !0, get mask_text_selector() { return e.mask_selector; }, set mask_text_selector(t) { u(t) ? (e.mask_selector = t + ',[data-nr-mask]') : null === t ? (e.mask_selector = t) : (0, l.Z)('An invalid session_replay.mask_selector was provided and will not be used', t); }, get block_class() { return 'nr-block'; }, get ignore_class() { return 'nr-ignore'; }, get mask_text_class() { return 'nr-mask'; }, get block_selector() { return e.block_selector; }, set block_selector(t) { u(t) ? (e.block_selector += ','.concat(t)) : '' !== t && (0, l.Z)('An invalid session_replay.block_selector was provided and will not be used', t); }, get mask_input_options() { return e.mask_input_options; }, set mask_input_options(t) { t && 'object' == typeof t ? (e.mask_input_options = { ...t, password: !0 }) : (0, l.Z)('An invalid session_replay.mask_input_option was provided and will not be used', t); }, }, spa: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, }; }, h = {}, p = 'All configuration objects require an agent identifier!'; function g(e) { if (!e) throw new Error(p); if (!h[e]) throw new Error('Configuration for '.concat(e, ' was never set')); return h[e]; } function m(e, t) { if (!e) throw new Error(p); (h[e] = (0, i.D)(t, f())), (0, n.Qy)(e, h[e], 'config'); } function v(e, t) { if (!e) throw new Error(p); var r = g(e); if (r) { for (var n = t.split('.'), i = 0; i < n.length - 1; i++) if ('object' != typeof (r = r[n[i]])) return; r = r[n[n.length - 1]]; } return r; } const b = { accountID: void 0, trustKey: void 0, agentID: void 0, licenseKey: void 0, applicationID: void 0, xpid: void 0, }, y = {}; function A(e) { if (!e) throw new Error('All loader-config objects require an agent identifier!'); if (!y[e]) throw new Error('LoaderConfig for '.concat(e, ' was never set')); return y[e]; } function w(e, t) { if (!e) throw new Error('All loader-config objects require an agent identifier!'); (y[e] = (0, i.D)(t, b)), (0, n.Qy)(e, y[e], 'loader_config'); } const x = (0, n.mF)().o; var E = r(385), _ = r(6818); const T = { buildEnv: _.Re, customTransaction: void 0, disabled: !1, distMethod: _.gF, isolatedBacklog: !1, loaderType: void 0, maxBytes: 3e4, offset: Math.floor( E._A?.performance?.timeOrigin || E._A?.performance?.timing?.navigationStart || Date.now(), ), onerror: void 0, origin: '' + E._A.location, ptid: void 0, releaseIds: {}, session: void 0, xhrWrappable: 'function' == typeof E._A.XMLHttpRequest?.prototype?.addEventListener, version: _.q4, denyList: void 0, }, S = {}; function D(e) { if (!e) throw new Error('All runtime objects require an agent identifier!'); if (!S[e]) throw new Error('Runtime for '.concat(e, ' was never set')); return S[e]; } function j(e, t) { if (!e) throw new Error('All runtime objects require an agent identifier!'); (S[e] = (0, i.D)(t, T)), (0, n.Qy)(e, S[e], 'runtime'); } function N(e) { return (function (e) { try { const t = s(e); return !!t.licenseKey && !!t.errorBeacon && !!t.applicationID; } catch (e) { return !1; } })(e); } }, 9567: (e, t, r) => { r.d(t, { D: () => i }); var n = r(50); function i(e, t) { try { if (!e || 'object' != typeof e) return (0, n.Z)('Setting a Configurable requires an object as input'); if (!t || 'object' != typeof t) return (0, n.Z)('Setting a Configurable requires a model to set its initial properties'); const r = Object.create(Object.getPrototypeOf(t), Object.getOwnPropertyDescriptors(t)), o = 0 === Object.keys(r).length ? e : r; for (let a in o) if (void 0 !== e[a]) try { Array.isArray(e[a]) && Array.isArray(t[a]) ? (r[a] = Array.from(new Set([...e[a], ...t[a]]))) : 'object' == typeof e[a] && 'object' == typeof t[a] ? (r[a] = i(e[a], t[a])) : (r[a] = e[a]); } catch (e) { (0, n.Z)('An error occurred while setting a property of a Configurable', e); } return r; } catch (e) { (0, n.Z)('An error occured while setting a Configurable', e); } } }, 6818: (e, t, r) => { r.d(t, { Re: () => i, gF: () => o, lF: () => a, q4: () => n }); const n = '1.246.1', i = 'PROD', o = 'CDN', a = '2.0.0-alpha.11'; }, 385: (e, t, r) => { r.d(t, { FN: () => s, IF: () => d, Nk: () => f, Tt: () => c, _A: () => o, cv: () => h, iS: () => a, il: () => n, ux: () => u, v6: () => i, w1: () => l, }); const n = 'undefined' != typeof window && !!window.document, i = 'undefined' != typeof WorkerGlobalScope && (('undefined' != typeof self && self instanceof WorkerGlobalScope && self.navigator instanceof WorkerNavigator) || ('undefined' != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis.navigator instanceof WorkerNavigator)), o = n ? window : 'undefined' != typeof WorkerGlobalScope && (('undefined' != typeof self && self instanceof WorkerGlobalScope && self) || ('undefined' != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis)), a = Boolean('hidden' === o?.document?.visibilityState), s = '' + o?.location, c = /iPad|iPhone|iPod/.test(o.navigator?.userAgent), u = c && 'undefined' == typeof SharedWorker, d = (() => { const e = o.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/); return Array.isArray(e) && e.length >= 2 ? +e[1] : 0; })(), l = Boolean(n && window.document.documentMode), f = !!o.navigator?.sendBeacon, h = Math.floor(o?.performance?.timeOrigin || o?.performance?.timing?.navigationStart || Date.now()); }, 1117: (e, t, r) => { r.d(t, { w: () => o }); var n = r(50); const i = { agentIdentifier: '', ee: void 0 }; class o { constructor(e) { try { if ('object' != typeof e) return (0, n.Z)('shared context requires an object as input'); (this.sharedContext = {}), Object.assign(this.sharedContext, i), Object.entries(e).forEach(e => { let [t, r] = e; Object.keys(i).includes(t) && (this.sharedContext[t] = r); }); } catch (e) { (0, n.Z)('An error occured while setting SharedContext', e); } } } }, 8e3: (e, t, r) => { r.d(t, { L: () => d, R: () => c }); var n = r(8325), i = r(1284), o = r(4322), a = r(3325); const s = {}; function c(e, t) { const r = { staged: !1, priority: a.p[t] || 0 }; u(e), s[e].get(t) || s[e].set(t, r); } function u(e) { e && (s[e] || (s[e] = new Map())); } function d() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : '', t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 'feature'; if ((u(e), !e || !s[e].get(t))) return a(t); s[e].get(t).staged = !0; const r = [...s[e]]; function a(t) { const r = e ? n.ee.get(e) : n.ee, a = o.X.handlers; if (r.backlog && a) { var s = r.backlog[t], c = a[t]; if (c) { for (var u = 0; s && u < s.length; ++u) l(s[u], c); (0, i.D)(c, function (e, t) { (0, i.D)(t, function (t, r) { r[0].on(e, r[1]); }); }); } delete a[t], (r.backlog[t] = null), r.emit('drain-' + t, []); } } r.every(e => { let [t, r] = e; return r.staged; }) && (r.sort((e, t) => e[1].priority - t[1].priority), r.forEach(t => { let [r] = t; s[e].delete(r), a(r); })); } function l(e, t) { var r = e[1]; (0, i.D)(t[r], function (t, r) { var n = e[0]; if (r[0] === n) { var i = r[1], o = e[3], a = e[2]; i.apply(o, a); } }); } }, 8325: (e, t, r) => { r.d(t, { A: () => c, ee: () => u }); var n = r(8632), i = r(2210), o = r(234); class a { constructor(e) { this.contextId = e; } } var s = r(3117); const c = 'nr@context:'.concat(s.a), u = (function e(t, r) { var n = {}, s = {}, d = {}, f = !1; try { f = 16 === r.length && (0, o.OP)(r).isolatedBacklog; } catch (e) {} var h = { on: g, addEventListener: g, removeEventListener: function (e, t) { var r = n[e]; if (!r) return; for (var i = 0; i < r.length; i++) r[i] === t && r.splice(i, 1); }, emit: function (e, r, n, i, o) { !1 !== o && (o = !0); if (u.aborted && !i) return; t && o && t.emit(e, r, n); for (var a = p(n), c = m(e), d = c.length, l = 0; l < d; l++) c[l].apply(a, r); var f = b()[s[e]]; f && f.push([h, e, r, a]); return a; }, get: v, listeners: m, context: p, buffer: function (e, t) { const r = b(); if (((t = t || 'feature'), h.aborted)) return; Object.entries(e || {}).forEach(e => { let [n, i] = e; (s[i] = t), t in r || (r[t] = []); }); }, abort: l, aborted: !1, isBuffering: function (e) { return !!b()[s[e]]; }, debugId: r, backlog: f ? {} : t && 'object' == typeof t.backlog ? t.backlog : {}, }; return h; function p(e) { return e && e instanceof a ? e : e ? (0, i.X)(e, c, () => new a(c)) : new a(c); } function g(e, t) { n[e] = m(e).concat(t); } function m(e) { return n[e] || []; } function v(t) { return (d[t] = d[t] || e(h, t)); } function b() { return h.backlog; } })(void 0, 'globalEE'), d = (0, n.fP)(); function l() { (u.aborted = !0), (u.backlog = {}); } d.ee || (d.ee = u); }, 5546: (e, t, r) => { r.d(t, { E: () => n, p: () => i }); var n = r(8325).ee.get('handle'); function i(e, t, r, i, o) { o ? (o.buffer([e], i), o.emit(e, t, r)) : (n.buffer([e], i), n.emit(e, t, r)); } }, 4322: (e, t, r) => { r.d(t, { X: () => o }); var n = r(5546); o.on = a; var i = (o.handlers = {}); function o(e, t, r, o) { a(o || n.E, i, e, t, r); } function a(e, t, r, i, o) { o || (o = 'feature'), e || (e = n.E); var a = (t[o] = t[o] || {}); (a[r] = a[r] || []).push([e, i]); } }, 3239: (e, t, r) => { r.d(t, { bP: () => s, iz: () => c, m$: () => a }); var n = r(385); let i = !1, o = !1; try { const e = { get passive() { return (i = !0), !1; }, get signal() { return (o = !0), !1; }, }; n._A.addEventListener('test', null, e), n._A.removeEventListener('test', null, e); } catch (e) {} function a(e, t) { return i || o ? { capture: !!e, passive: i, signal: t } : !!e; } function s(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; window.addEventListener(e, t, a(r, n)); } function c(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; document.addEventListener(e, t, a(r, n)); } }, 3117: (e, t, r) => { r.d(t, { a: () => n }); const n = (0, r(4402).Rl)(); }, 4402: (e, t, r) => { r.d(t, { Ht: () => u, M: () => c, Rl: () => a, ky: () => s }); var n = r(385); const i = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; function o(e, t) { return e ? 15 & e[t] : (16 * Math.random()) | 0; } function a() { const e = n._A?.crypto || n._A?.msCrypto; let t, r = 0; return ( e && e.getRandomValues && (t = e.getRandomValues(new Uint8Array(31))), i .split('') .map(e => ('x' === e ? o(t, ++r).toString(16) : 'y' === e ? ((3 & o()) | 8).toString(16) : e)) .join('') ); } function s(e) { const t = n._A?.crypto || n._A?.msCrypto; let r, i = 0; t && t.getRandomValues && (r = t.getRandomValues(new Uint8Array(31))); const a = []; for (var s = 0; s < e; s++) a.push(o(r, ++i).toString(16)); return a.join(''); } function c() { return s(16); } function u() { return s(32); } }, 7056: (e, t, r) => { r.d(t, { Bq: () => n, Hb: () => o, oD: () => i }); const n = 'NRBA', i = 144e5, o = 18e5; }, 7894: (e, t, r) => { function n() { return Math.round(performance.now()); } r.d(t, { z: () => n }); }, 7243: (e, t, r) => { r.d(t, { e: () => i }); var n = r(385); function i(e) { if (0 === (e || '').indexOf('data:')) return { protocol: 'data' }; try { const t = new URL(e, location.href), r = { port: t.port, hostname: t.hostname, pathname: t.pathname, search: t.search, protocol: t.protocol.slice(0, t.protocol.indexOf(':')), sameOrigin: t.protocol === n._A?.location?.protocol && t.host === n._A?.location?.host, }; return ( (r.port && '' !== r.port) || ('http:' === t.protocol && (r.port = '80'), 'https:' === t.protocol && (r.port = '443')), r.pathname && '' !== r.pathname ? r.pathname.startsWith('/') || (r.pathname = '/'.concat(r.pathname)) : (r.pathname = '/'), r ); } catch (e) { return {}; } } }, 50: (e, t, r) => { function n(e, t) { 'function' == typeof console.warn && (console.warn('New Relic: '.concat(e)), t && console.warn(t)); } r.d(t, { Z: () => n }); }, 2587: (e, t, r) => { r.d(t, { N: () => c, T: () => u }); var n = r(8325), i = r(5546), o = r(3325); const a = { stn: [o.D.sessionTrace], err: [o.D.jserrors, o.D.metrics], ins: [o.D.pageAction], spa: [o.D.spa], sr: [o.D.sessionReplay, o.D.sessionTrace], }, s = new Set(); function c(e, t) { const r = n.ee.get(t); e && 'object' == typeof e && (s.has(t) || Object.entries(e).forEach(e => { let [t, n] = e; a[t] ? a[t].forEach(e => { n ? (0, i.p)('feat-' + t, [], void 0, e, r) : (0, i.p)('block-' + t, [], void 0, e, r), (0, i.p)('rumresp-' + t, [Boolean(n)], void 0, e, r); }) : n && (0, i.p)('feat-' + t, [], void 0, void 0, r), (u[t] = Boolean(n)); }), Object.keys(a).forEach(e => { void 0 === u[e] && (a[e]?.forEach(t => (0, i.p)('rumresp-' + e, [!1], void 0, t, r)), (u[e] = !1)); }), s.add(t)); } const u = {}; }, 2210: (e, t, r) => { r.d(t, { X: () => i }); var n = Object.prototype.hasOwnProperty; function i(e, t, r) { if (n.call(e, t)) return e[t]; var i = r(); if (Object.defineProperty && Object.keys) try { return Object.defineProperty(e, t, { value: i, writable: !0, enumerable: !1 }), i; } catch (e) {} return (e[t] = i), i; } }, 1284: (e, t, r) => { r.d(t, { D: () => n }); const n = (e, t) => Object.entries(e || {}).map(e => { let [r, n] = e; return t(r, n); }); }, 4351: (e, t, r) => { r.d(t, { P: () => o }); var n = r(8325); const i = () => { const e = new WeakSet(); return (t, r) => { if ('object' == typeof r && null !== r) { if (e.has(r)) return; e.add(r); } return r; }; }; function o(e) { try { return JSON.stringify(e, i()); } catch (e) { try { n.ee.emit('internal-error', [e]); } catch (e) {} } } }, 3960: (e, t, r) => { r.d(t, { K: () => a, b: () => o }); var n = r(3239); function i() { return 'undefined' == typeof document || 'complete' === document.readyState; } function o(e, t) { if (i()) return e(); (0, n.bP)('load', e, t); } function a(e) { if (i()) return e(); (0, n.iz)('DOMContentLoaded', e); } }, 8632: (e, t, r) => { r.d(t, { EZ: () => u, Qy: () => c, ce: () => o, fP: () => a, gG: () => d, mF: () => s }); var n = r(7894), i = r(385); const o = { beacon: 'bam.nr-data.net', errorBeacon: 'bam.nr-data.net' }; function a() { return i._A.NREUM || (i._A.NREUM = {}), void 0 === i._A.newrelic && (i._A.newrelic = i._A.NREUM), i._A.NREUM; } function s() { let e = a(); return ( e.o || (e.o = { ST: i._A.setTimeout, SI: i._A.setImmediate, CT: i._A.clearTimeout, XHR: i._A.XMLHttpRequest, REQ: i._A.Request, EV: i._A.Event, PR: i._A.Promise, MO: i._A.MutationObserver, FETCH: i._A.fetch, }), e ); } function c(e, t, r) { let i = a(); const o = i.initializedAgents || {}, s = o[e] || {}; return ( Object.keys(s).length || (s.initializedAt = { ms: (0, n.z)(), date: new Date() }), (i.initializedAgents = { ...o, [e]: { ...s, [r]: t } }), i ); } function u(e, t) { a()[e] = t; } function d() { return ( (function () { let e = a(); const t = e.info || {}; e.info = { beacon: o.beacon, errorBeacon: o.errorBeacon, ...t }; })(), (function () { let e = a(); const t = e.init || {}; e.init = { ...t }; })(), s(), (function () { let e = a(); const t = e.loader_config || {}; e.loader_config = { ...t }; })(), a() ); } }, 7956: (e, t, r) => { r.d(t, { N: () => i }); var n = r(3239); function i(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = arguments.length > 2 ? arguments[2] : void 0, i = arguments.length > 3 ? arguments[3] : void 0; (0, n.iz)( 'visibilitychange', function () { if (t) return void ('hidden' === document.visibilityState && e()); e(document.visibilityState); }, r, i, ); } }, 1214: (e, t, r) => { r.d(t, { em: () => b, u5: () => D, QU: () => C, _L: () => I, Gm: () => H, Lg: () => L, BV: () => G, Kf: () => K, }); var n = r(8325), i = r(3117); const o = 'nr@original:'.concat(i.a); var a = Object.prototype.hasOwnProperty, s = !1; function c(e, t) { return ( e || (e = n.ee), (r.inPlace = function (e, t, n, i, o) { n || (n = ''); const a = '-' === n.charAt(0); for (let s = 0; s < t.length; s++) { const c = t[s], u = e[c]; d(u) || (e[c] = r(u, a ? c + n : n, i, c, o)); } }), (r.flag = o), r ); function r(t, r, n, s, c) { return d(t) ? t : (r || (r = ''), (nrWrapper[o] = t), (function (e, t, r) { if (Object.defineProperty && Object.keys) try { return ( Object.keys(e).forEach(function (r) { Object.defineProperty(t, r, { get: function () { return e[r]; }, set: function (t) { return (e[r] = t), t; }, }); }), t ); } catch (e) { u([e], r); } for (var n in e) a.call(e, n) && (t[n] = e[n]); })(t, nrWrapper, e), nrWrapper); function nrWrapper() { var o, a, d, l; try { (a = this), (o = [...arguments]), (d = 'function' == typeof n ? n(o, a) : n || {}); } catch (t) { u([t, '', [o, a, s], d], e); } i(r + 'start', [o, a, s], d, c); try { return (l = t.apply(a, o)); } catch (e) { throw (i(r + 'err', [o, a, e], d, c), e); } finally { i(r + 'end', [o, a, l], d, c); } } } function i(r, n, i, o) { if (!s || t) { var a = s; s = !0; try { e.emit(r, n, i, t, o); } catch (t) { u([t, r, n, i], e); } s = a; } } } function u(e, t) { t || (t = n.ee); try { t.emit('internal-error', e); } catch (e) {} } function d(e) { return !(e && 'function' == typeof e && e.apply && !e[o]); } var l = r(2210), f = r(385); const h = {}, p = f._A.XMLHttpRequest, g = 'addEventListener', m = 'removeEventListener', v = 'nr@wrapped:'.concat(n.A); function b(e) { var t = (function (e) { return (e || n.ee).get('events'); })(e); if (h[t.debugId]++) return t; h[t.debugId] = 1; var r = c(t, !0); function i(e) { r.inPlace(e, [g, m], '-', o); } function o(e, t) { return e[1]; } return ( 'getPrototypeOf' in Object && (f.il && y(document, i), y(f._A, i), y(p.prototype, i)), t.on(g + '-start', function (e, t) { var n = e[1]; if (null !== n && ('function' == typeof n || 'object' == typeof n)) { var i = (0, l.X)(n, v, function () { var e = { object: function () { if ('function' != typeof n.handleEvent) return; return n.handleEvent.apply(n, arguments); }, function: n, }[typeof n]; return e ? r(e, 'fn-', null, e.name || 'anonymous') : n; }); this.wrapped = e[1] = i; } }), t.on(m + '-start', function (e) { e[1] = this.wrapped || e[1]; }), t ); } function y(e, t) { let r = e; for (; 'object' == typeof r && !Object.prototype.hasOwnProperty.call(r, g); ) r = Object.getPrototypeOf(r); for (var n = arguments.length, i = new Array(n > 2 ? n - 2 : 0), o = 2; o < n; o++) i[o - 2] = arguments[o]; r && t(r, ...i); } var A = 'fetch-', w = A + 'body-', x = ['arrayBuffer', 'blob', 'json', 'text', 'formData'], E = f._A.Request, _ = f._A.Response, T = 'prototype'; const S = {}; function D(e) { const t = (function (e) { return (e || n.ee).get('fetch'); })(e); if (!(E && _ && f._A.fetch)) return t; if (S[t.debugId]++) return t; function r(e, r, i) { var o = e[r]; 'function' == typeof o && (e[r] = function () { var e, r = [...arguments], a = {}; t.emit(i + 'before-start', [r], a), a[n.A] && a[n.A].dt && (e = a[n.A].dt); var s = o.apply(this, r); return ( t.emit(i + 'start', [r, e], s), s.then( function (e) { return t.emit(i + 'end', [null, e], s), e; }, function (e) { throw (t.emit(i + 'end', [e], s), e); }, ) ); }); } return ( (S[t.debugId] = 1), x.forEach(e => { r(E[T], e, w), r(_[T], e, w); }), r(f._A, 'fetch', A), t.on(A + 'end', function (e, r) { var n = this; if (r) { var i = r.headers.get('content-length'); null !== i && (n.rxSize = i), t.emit(A + 'done', [null, r], n); } else t.emit(A + 'done', [e], n); }), t ); } const j = {}, N = ['pushState', 'replaceState']; function C(e) { const t = (function (e) { return (e || n.ee).get('history'); })(e); return !f.il || j[t.debugId]++ || ((j[t.debugId] = 1), c(t).inPlace(window.history, N, '-')), t; } var O = r(3239); const P = {}, R = ['appendChild', 'insertBefore', 'replaceChild']; function I(e) { const t = (function (e) { return (e || n.ee).get('jsonp'); })(e); if (!f.il || P[t.debugId]) return t; P[t.debugId] = !0; var r = c(t), i = /[?&](?:callback|cb)=([^&#]+)/, o = /(.*)\.([^.]+)/, a = /^(\w+)(\.|$)(.*)$/; function s(e, t) { if (!e) return t; const r = e.match(a), n = r[1]; return s(r[3], t[n]); } return ( r.inPlace(Node.prototype, R, 'dom-'), t.on('dom-start', function (e) { !(function (e) { if (!e || 'string' != typeof e.nodeName || 'script' !== e.nodeName.toLowerCase()) return; if ('function' != typeof e.addEventListener) return; var n = ((a = e.src), (c = a.match(i)), c ? c[1] : null); var a, c; if (!n) return; var u = (function (e) { var t = e.match(o); if (t && t.length >= 3) return { key: t[2], parent: s(t[1], window) }; return { key: e, parent: window }; })(n); if ('function' != typeof u.parent[u.key]) return; var d = {}; function l() { t.emit('jsonp-end', [], d), e.removeEventListener('load', l, (0, O.m$)(!1)), e.removeEventListener('error', f, (0, O.m$)(!1)); } function f() { t.emit('jsonp-error', [], d), t.emit('jsonp-end', [], d), e.removeEventListener('load', l, (0, O.m$)(!1)), e.removeEventListener('error', f, (0, O.m$)(!1)); } r.inPlace(u.parent, [u.key], 'cb-', d), e.addEventListener('load', l, (0, O.m$)(!1)), e.addEventListener('error', f, (0, O.m$)(!1)), t.emit('new-jsonp', [e.src], d); })(e[0]); }), t ); } const k = {}; function H(e) { const t = (function (e) { return (e || n.ee).get('mutation'); })(e); if (!f.il || k[t.debugId]) return t; k[t.debugId] = !0; var r = c(t), i = f._A.MutationObserver; return ( i && ((window.MutationObserver = function (e) { return this instanceof i ? new i(r(e, 'fn-')) : i.apply(this, arguments); }), (MutationObserver.prototype = i.prototype)), t ); } const z = {}; function L(e) { const t = (function (e) { return (e || n.ee).get('promise'); })(e); if (z[t.debugId]) return t; z[t.debugId] = !0; var r = t.context, i = c(t), a = f._A.Promise; return ( a && (function () { function e(r) { var n = t.context(), o = i(r, 'executor-', n, null, !1); const s = Reflect.construct(a, [o], e); return ( (t.context(s).getCtx = function () { return n; }), s ); } (f._A.Promise = e), Object.defineProperty(e, 'name', { value: 'Promise' }), (e.toString = function () { return a.toString(); }), Object.setPrototypeOf(e, a), ['all', 'race'].forEach(function (r) { const n = a[r]; e[r] = function (e) { let i = !1; [...(e || [])].forEach(e => { this.resolve(e).then(a('all' === r), a(!1)); }); const o = n.apply(this, arguments); return o; function a(e) { return function () { t.emit('propagate', [null, !i], o, !1, !1), (i = i || !e); }; } }; }), ['resolve', 'reject'].forEach(function (r) { const n = a[r]; e[r] = function (e) { const r = n.apply(this, arguments); return e !== r && t.emit('propagate', [e, !0], r, !1, !1), r; }; }), (e.prototype = a.prototype); const n = a.prototype.then; (a.prototype.then = function () { var e = this, o = r(e); o.promise = e; for (var a = arguments.length, s = new Array(a), c = 0; c < a; c++) s[c] = arguments[c]; (s[0] = i(s[0], 'cb-', o, null, !1)), (s[1] = i(s[1], 'cb-', o, null, !1)); const u = n.apply(this, s); return (o.nextPromise = u), t.emit('propagate', [e, !0], u, !1, !1), u; }), (a.prototype.then[o] = n), t.on('executor-start', function (e) { (e[0] = i(e[0], 'resolve-', this, null, !1)), (e[1] = i(e[1], 'resolve-', this, null, !1)); }), t.on('executor-err', function (e, t, r) { e[1](r); }), t.on('cb-end', function (e, r, n) { t.emit('propagate', [n, !0], this.nextPromise, !1, !1); }), t.on('propagate', function (e, r, n) { (this.getCtx && !r) || (this.getCtx = function () { if (e instanceof Promise) var r = t.context(e); return r && r.getCtx ? r.getCtx() : this; }); }); })(), t ); } const M = {}, F = 'setTimeout', B = 'setInterval', U = 'clearTimeout', Z = '-start', V = '-', q = [F, 'setImmediate', B, U, 'clearImmediate']; function G(e) { const t = (function (e) { return (e || n.ee).get('timer'); })(e); if (M[t.debugId]++) return t; M[t.debugId] = 1; var r = c(t); return ( r.inPlace(f._A, q.slice(0, 2), F + V), r.inPlace(f._A, q.slice(2, 3), B + V), r.inPlace(f._A, q.slice(3), U + V), t.on(B + Z, function (e, t, n) { e[0] = r(e[0], 'fn-', null, n); }), t.on(F + Z, function (e, t, n) { (this.method = n), (this.timerDuration = isNaN(e[1]) ? 0 : +e[1]), (e[0] = r(e[0], 'fn-', this, n)); }), t ); } var W = r(50); const X = {}, Q = ['open', 'send']; function K(e) { var t = e || n.ee; const r = (function (e) { return (e || n.ee).get('xhr'); })(t); if (X[r.debugId]++) return r; (X[r.debugId] = 1), b(t); var i = c(r), o = f._A.XMLHttpRequest, a = f._A.MutationObserver, s = f._A.Promise, u = f._A.setInterval, d = 'readystatechange', l = ['onload', 'onerror', 'onabort', 'onloadstart', 'onloadend', 'onprogress', 'ontimeout'], h = [], p = (f._A.XMLHttpRequest = function (e) { const t = new o(e), n = r.context(t); try { r.emit('new-xhr', [t], n), t.addEventListener( d, ((a = n), function () { var e = this; e.readyState > 3 && !a.resolved && ((a.resolved = !0), r.emit('xhr-resolved', [], e)), i.inPlace(e, l, 'fn-', w); }), (0, O.m$)(!1), ); } catch (e) { (0, W.Z)('An error occurred while intercepting XHR', e); try { r.emit('internal-error', [e]); } catch (e) {} } var a; return t; }); function g(e, t) { i.inPlace(t, ['onreadystatechange'], 'fn-', w); } if ( ((function (e, t) { for (var r in e) t[r] = e[r]; })(o, p), (p.prototype = o.prototype), i.inPlace(p.prototype, Q, '-xhr-', w), r.on('send-xhr-start', function (e, t) { g(e, t), (function (e) { h.push(e), a && (m ? m.then(A) : u ? u(A) : ((v = -v), (y.data = v))); })(t); }), r.on('open-xhr-start', g), a) ) { var m = s && s.resolve(); if (!u && !s) { var v = 1, y = document.createTextNode(v); new a(A).observe(y, { characterData: !0 }); } } else t.on('fn-end', function (e) { (e[0] && e[0].type === d) || A(); }); function A() { for (var e = 0; e < h.length; e++) g(0, h[e]); h.length && (h = []); } function w(e, t) { return t; } return r; } }, 7825: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.ajax; }, 6660: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.jserrors; }, 3081: (e, t, r) => { r.d(t, { gF: () => o, mY: () => i, t9: () => n, vz: () => s, xS: () => a }); const n = r(3325).D.metrics, i = 'sm', o = 'cm', a = 'storeSupportabilityMetrics', s = 'storeEventMetrics'; }, 4649: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageAction; }, 7633: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewEvent; }, 9251: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewTiming; }, 7144: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.sessionReplay; }, 3614: (e, t, r) => { r.d(t, { BST_RESOURCE: () => i, END: () => s, FEATURE_NAME: () => n, FN_END: () => u, FN_START: () => c, PUSH_STATE: () => d, RESOURCE: () => o, START: () => a, }); const n = r(3325).D.sessionTrace, i = 'bstResource', o = 'resource', a = '-start', s = '-end', c = 'fn' + a, u = 'fn' + s, d = 'pushState'; }, 7836: (e, t, r) => { r.d(t, { BODY: () => x, CB_END: () => E, CB_START: () => u, END: () => w, FEATURE_NAME: () => i, FETCH: () => T, FETCH_BODY: () => v, FETCH_DONE: () => m, FETCH_START: () => g, FN_END: () => c, FN_START: () => s, INTERACTION: () => f, INTERACTION_API: () => d, INTERACTION_EVENTS: () => o, JSONP_END: () => b, JSONP_NODE: () => p, JS_TIME: () => _, MAX_TIMER_BUDGET: () => a, REMAINING: () => l, SPA_NODE: () => h, START: () => A, originalSetTimeout: () => y, }); var n = r(234); const i = r(3325).D.spa, o = ['click', 'submit', 'keypress', 'keydown', 'keyup', 'change'], a = 999, s = 'fn-start', c = 'fn-end', u = 'cb-start', d = 'api-ixn-', l = 'remaining', f = 'interaction', h = 'spaNode', p = 'jsonpNode', g = 'fetch-start', m = 'fetch-done', v = 'fetch-body-', b = 'jsonp-end', y = n.Yu.ST, A = '-start', w = '-end', x = '-body', E = 'cb' + w, _ = 'jsTime', T = 'fetch'; }, 5938: (e, t, r) => { r.d(t, { W: () => i }); var n = r(8325); class i { constructor(e, t, r) { (this.agentIdentifier = e), (this.aggregator = t), (this.ee = n.ee.get(e)), (this.featureName = r), (this.blocked = !1); } } }, 7530: (e, t, r) => { r.d(t, { j: () => b }); var n = r(3325), i = r(234), o = r(5546), a = r(8325), s = r(7894), c = r(8e3), u = r(3960), d = r(385), l = r(50), f = r(3081), h = r(8632); function p() { const e = (0, h.gG)(); [ 'setErrorHandler', 'finished', 'addToTrace', 'addRelease', 'addPageAction', 'setCurrentRouteName', 'setPageViewName', 'setCustomAttribute', 'interaction', 'noticeError', 'setUserId', 'setApplicationVersion', 'start', ].forEach(t => { e[t] = function () { for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++) n[i] = arguments[i]; return (function (t) { for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) n[i - 1] = arguments[i]; let o = []; return ( Object.values(e.initializedAgents).forEach(e => { e.exposed && e.api[t] && o.push(e.api[t](...n)); }), o.length > 1 ? o : o[0] ); })(t, ...n); }; }); } var g = r(2587); const m = e => { const t = e.startsWith('http'); (e += '/'), (r.p = t ? e : 'https://' + e); }; let v = !1; function b(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, b = arguments.length > 2 ? arguments[2] : void 0, y = arguments.length > 3 ? arguments[3] : void 0, { init: A, info: w, loader_config: x, runtime: E = { loaderType: b }, exposed: _ = !0 } = t; const T = (0, h.gG)(); w || ((A = T.init), (w = T.info), (x = T.loader_config)), (0, i.Dg)(e, A || {}), (0, i.GE)(e, x || {}), (w.jsAttributes ??= {}), d.v6 && (w.jsAttributes.isWorker = !0), (0, i.CX)(e, w); const S = (0, i.P_)(e), D = [w.beacon, w.errorBeacon]; v || ((v = !0), S.proxy.assets && (m(S.proxy.assets), D.push(S.proxy.assets)), S.proxy.beacon && D.push(S.proxy.beacon)), (E.denyList = [...(S.ajax.deny_list || []), ...(S.ajax.block_internal ? D : [])]), (0, i.sU)(e, E), p(); const j = (function (e, t) { t || (0, c.R)(e, 'api'); const h = {}; var p = a.ee.get(e), g = p.get('tracer'), m = 'api-', v = m + 'ixn-'; function b(t, r, n, o) { const a = (0, i.C5)(e); return ( null === r ? delete a.jsAttributes[t] : (0, i.CX)(e, { ...a, jsAttributes: { ...a.jsAttributes, [t]: r } }), w(m, n, !0, o || null === r ? 'session' : void 0)(t, r) ); } function y() {} ['setErrorHandler', 'finished', 'addToTrace', 'addRelease'].forEach(e => { h[e] = w(m, e, !0, 'api'); }), (h.addPageAction = w(m, 'addPageAction', !0, n.D.pageAction)), (h.setCurrentRouteName = w(m, 'routeName', !0, n.D.spa)), (h.setPageViewName = function (t, r) { if ('string' == typeof t) return ( '/' !== t.charAt(0) && (t = '/' + t), ((0, i.OP)(e).customTransaction = (r || 'http://custom.transaction') + t), w(m, 'setPageViewName', !0)() ); }), (h.setCustomAttribute = function (e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if ('string' == typeof e) { if (['string', 'number', 'boolean'].includes(typeof t) || null === t) return b(e, t, 'setCustomAttribute', r); (0, l.Z)( 'Failed to execute setCustomAttribute.\nNon-null value must be a string, number or boolean type, but a type of <'.concat( typeof t, '> was provided.', ), ); } else (0, l.Z)( 'Failed to execute setCustomAttribute.\nName must be a string type, but a type of <'.concat( typeof e, '> was provided.', ), ); }), (h.setUserId = function (e) { if ('string' == typeof e || null === e) return b('enduser.id', e, 'setUserId', !0); (0, l.Z)( 'Failed to execute setUserId.\nNon-null value must be a string type, but a type of <'.concat( typeof e, '> was provided.', ), ); }), (h.setApplicationVersion = function (e) { if ('string' == typeof e || null === e) return b('application.version', e, 'setApplicationVersion', !1); (0, l.Z)( 'Failed to execute setApplicationVersion. Expected <String | null>, but got <'.concat(typeof e, '>.'), ); }), (h.start = e => { try { const t = e ? 'defined' : 'undefined'; (0, o.p)(f.xS, ['API/start/'.concat(t, '/called')], void 0, n.D.metrics, p); const r = Object.values(n.D); if (void 0 === e) e = r; else { if ((e = Array.isArray(e) && e.length ? e : [e]).some(e => !r.includes(e))) return (0, l.Z)('Invalid feature name supplied. Acceptable feature names are: '.concat(r)); e.includes(n.D.pageViewEvent) || e.push(n.D.pageViewEvent); } e.forEach(e => { p.emit(''.concat(e, '-opt-in')); }); } catch (e) { (0, l.Z)('An unexpected issue occurred', e); } }), (h.interaction = function () { return new y().get(); }); var A = (y.prototype = { createTracer: function (e, t) { var r = {}, i = this, a = 'function' == typeof t; return ( (0, o.p)(v + 'tracer', [(0, s.z)(), e, r], i, n.D.spa, p), function () { if ((g.emit((a ? '' : 'no-') + 'fn-start', [(0, s.z)(), i, a], r), a)) try { return t.apply(this, arguments); } catch (e) { throw (g.emit('fn-err', [arguments, this, e], r), e); } finally { g.emit('fn-end', [(0, s.z)()], r); } } ); }, }); function w(e, t, r, i) { return function () { return ( (0, o.p)(f.xS, ['API/' + t + '/called'], void 0, n.D.metrics, p), i && (0, o.p)(e + t, [(0, s.z)(), ...arguments], r ? null : this, i, p), r ? void 0 : this ); }; } function x() { r.e(111) .then(r.bind(r, 7438)) .then(t => { let { setAPI: r } = t; r(e), (0, c.L)(e, 'api'); }) .catch(() => (0, l.Z)('Downloading runtime APIs failed...')); } return ( ['actionText', 'setName', 'setAttribute', 'save', 'ignore', 'onEnd', 'getContext', 'end', 'get'].forEach( e => { A[e] = w(v, e, void 0, n.D.spa); }, ), (h.noticeError = function (e, t) { 'string' == typeof e && (e = new Error(e)), (0, o.p)(f.xS, ['API/noticeError/called'], void 0, n.D.metrics, p), (0, o.p)('err', [e, (0, s.z)(), !1, t], void 0, n.D.jserrors, p); }), d.il ? (0, u.b)(() => x(), !0) : x(), h ); })(e, y); return (0, h.Qy)(e, j, 'api'), (0, h.Qy)(e, _, 'exposed'), (0, h.EZ)('activatedFeatures', g.T), j; } }, 3325: (e, t, r) => { r.d(t, { D: () => n, p: () => i }); const n = { ajax: 'ajax', jserrors: 'jserrors', metrics: 'metrics', pageAction: 'page_action', pageViewEvent: 'page_view_event', pageViewTiming: 'page_view_timing', sessionReplay: 'session_replay', sessionTrace: 'session_trace', spa: 'spa', }, i = { [n.pageViewEvent]: 1, [n.pageViewTiming]: 2, [n.metrics]: 3, [n.jserrors]: 4, [n.ajax]: 5, [n.sessionTrace]: 6, [n.pageAction]: 7, [n.spa]: 8, [n.sessionReplay]: 9, }; }, }, n = {}; function i(e) { var t = n[e]; if (void 0 !== t) return t.exports; var o = (n[e] = { exports: {} }); return r[e](o, o.exports, i), o.exports; } (i.m = r), (i.d = (e, t) => { for (var r in t) i.o(t, r) && !i.o(e, r) && Object.defineProperty(e, r, { enumerable: !0, get: t[r] }); }), (i.f = {}), (i.e = e => Promise.all(Object.keys(i.f).reduce((t, r) => (i.f[r](e, t), t), []))), (i.u = e => ({ 111: 'nr-spa', 164: 'nr-spa-compressor', 433: 'nr-spa-recorder' }[e] + '-1.246.1.min.js')), (i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)), (e = {}), (t = 'NRBA-1.246.1.PROD:'), (i.l = (r, n, o, a) => { if (e[r]) e[r].push(n); else { var s, c; if (void 0 !== o) for (var u = document.getElementsByTagName('script'), d = 0; d < u.length; d++) { var l = u[d]; if (l.getAttribute('src') == r || l.getAttribute('data-webpack') == t + o) { s = l; break; } } s || ((c = !0), ((s = document.createElement('script')).charset = 'utf-8'), (s.timeout = 120), i.nc && s.setAttribute('nonce', i.nc), s.setAttribute('data-webpack', t + o), (s.src = r)), (e[r] = [n]); var f = (t, n) => { (s.onerror = s.onload = null), clearTimeout(h); var i = e[r]; if ((delete e[r], s.parentNode && s.parentNode.removeChild(s), i && i.forEach(e => e(n)), t)) return t(n); }, h = setTimeout(f.bind(null, void 0, { type: 'timeout', target: s }), 12e4); (s.onerror = f.bind(null, s.onerror)), (s.onload = f.bind(null, s.onload)), c && document.head.appendChild(s); } }), (i.r = e => { 'undefined' != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' }), Object.defineProperty(e, '__esModule', { value: !0 }); }), (i.p = 'https://js-agent.newrelic.com/'), (() => { var e = { 801: 0, 92: 0 }; i.f.j = (t, r) => { var n = i.o(e, t) ? e[t] : void 0; if (0 !== n) if (n) r.push(n[2]); else { var o = new Promise((r, i) => (n = e[t] = [r, i])); r.push((n[2] = o)); var a = i.p + i.u(t), s = new Error(); i.l( a, r => { if (i.o(e, t) && (0 !== (n = e[t]) && (e[t] = void 0), n)) { var o = r && ('load' === r.type ? 'missing' : r.type), a = r && r.target && r.target.src; (s.message = 'Loading chunk ' + t + ' failed.\n(' + o + ': ' + a + ')'), (s.name = 'ChunkLoadError'), (s.type = o), (s.request = a), n[1](s); } }, 'chunk-' + t, t, ); } }; var t = (t, r) => { var n, o, [a, s, c] = r, u = 0; if (a.some(t => 0 !== e[t])) { for (n in s) i.o(s, n) && (i.m[n] = s[n]); if (c) c(i); } for (t && t(r); u < a.length; u++) (o = a[u]), i.o(e, o) && e[o] && e[o][0](), (e[o] = 0); }, r = (self['webpackChunk:NRBA-1.246.1.PROD'] = self['webpackChunk:NRBA-1.246.1.PROD'] || []); r.forEach(t.bind(null, 0)), (r.push = t.bind(null, r.push.bind(r))); })(), (() => { var e = i(50); class t { addPageAction(t, r) { (0, e.Z)('Call to agent api addPageAction failed. The page action feature is not currently initialized.'); } setPageViewName(t, r) { (0, e.Z)('Call to agent api setPageViewName failed. The page view feature is not currently initialized.'); } setCustomAttribute(t, r, n) { (0, e.Z)('Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.'); } noticeError(t, r) { (0, e.Z)('Call to agent api noticeError failed. The js errors feature is not currently initialized.'); } setUserId(t) { (0, e.Z)('Call to agent api setUserId failed. The js errors feature is not currently initialized.'); } setApplicationVersion(t) { (0, e.Z)('Call to agent api setApplicationVersion failed. The agent is not currently initialized.'); } setErrorHandler(t) { (0, e.Z)('Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.'); } finished(t) { (0, e.Z)('Call to agent api finished failed. The page action feature is not currently initialized.'); } addRelease(t, r) { (0, e.Z)('Call to agent api addRelease failed. The js errors feature is not currently initialized.'); } start(t) { (0, e.Z)('Call to agent api addRelease failed. The agent is not currently initialized.'); } } var r = i(3325), n = i(234); const o = Object.values(r.D); function a(e) { const t = {}; return ( o.forEach(r => { t[r] = (function (e, t) { return !1 !== (0, n.Mt)(t, ''.concat(e, '.enabled')); })(r, e); }), t ); } var s = i(7530); var c = i(8e3), u = i(5938), d = i(3960), l = i(385); class f extends u.W { constructor(e, t, r) { let i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; super(e, t, r), (this.auto = i), (this.abortHandler = void 0), (this.featAggregate = void 0), (this.onAggregateImported = void 0), !1 === (0, n.Mt)(this.agentIdentifier, ''.concat(this.featureName, '.autoStart')) && (this.auto = !1), this.auto && (0, c.R)(e, r); } importAggregator() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (this.featAggregate) return; if (!this.auto) return void this.ee.on(''.concat(this.featureName, '-opt-in'), () => { (0, c.R)(this.agentIdentifier, this.featureName), (this.auto = !0), this.importAggregator(); }); const r = l.il && !0 === (0, n.Mt)(this.agentIdentifier, 'privacy.cookies_enabled'); let o; this.onAggregateImported = new Promise(e => { o = e; }); const a = async () => { let n; try { if (r) { const { setupAgentSession: e } = await i.e(111).then(i.bind(i, 3228)); n = e(this.agentIdentifier); } } catch (t) { (0, e.Z)( 'A problem occurred when starting up session manager. This page will not start or extend any session.', t, ); } try { if (!this.shouldImportAgg(this.featureName, n)) return (0, c.L)(this.agentIdentifier, this.featureName), void o(!1); const { lazyFeatureLoader: e } = await i.e(111).then(i.bind(i, 8582)), { Aggregate: r } = await e(this.featureName, 'aggregate'); (this.featAggregate = new r(this.agentIdentifier, this.aggregator, t)), o(!0); } catch (t) { (0, e.Z)('Downloading and initializing '.concat(this.featureName, ' failed...'), t), this.abortHandler?.(), (0, c.L)(this.agentIdentifier, this.featureName), o(!1); } }; l.il ? (0, d.b)(() => a(), !0) : a(); } shouldImportAgg(e, t) { return ( e !== r.D.sessionReplay || (!!n.Yu.MO && !1 !== (0, n.Mt)(this.agentIdentifier, 'session_trace.enabled') && (!!t?.isNew || !!t?.state.sessionReplayMode)) ); } } var h = i(7633); class p extends f { static featureName = h.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, h.t, r), this.importAggregator(); } } var g = i(1117), m = i(1284); class v extends g.w { constructor(e) { super(e), (this.aggregatedData = {}); } store(e, t, r, n, i) { var o = this.getBucket(e, t, r, i); return ( (o.metrics = (function (e, t) { t || (t = { count: 0 }); return ( (t.count += 1), (0, m.D)(e, function (e, r) { t[e] = b(r, t[e]); }), t ); })(n, o.metrics)), o ); } merge(e, t, r, n, i) { var o = this.getBucket(e, t, n, i); if (o.metrics) { var a = o.metrics; (a.count += r.count), (0, m.D)(r, function (e, t) { if ('count' !== e) { var n = a[e], i = r[e]; i && !i.c ? (a[e] = b(i.t, n)) : (a[e] = (function (e, t) { if (!t) return e; t.c || (t = y(t.t)); return ( (t.min = Math.min(e.min, t.min)), (t.max = Math.max(e.max, t.max)), (t.t += e.t), (t.sos += e.sos), (t.c += e.c), t ); })(i, a[e])); } }); } else o.metrics = r; } storeMetric(e, t, r, n) { var i = this.getBucket(e, t, r); return (i.stats = b(n, i.stats)), i; } getBucket(e, t, r, n) { this.aggregatedData[e] || (this.aggregatedData[e] = {}); var i = this.aggregatedData[e][t]; return i || ((i = this.aggregatedData[e][t] = { params: r || {} }), n && (i.custom = n)), i; } get(e, t) { return t ? this.aggregatedData[e] && this.aggregatedData[e][t] : this.aggregatedData[e]; } take(e) { for (var t = {}, r = '', n = !1, i = 0; i < e.length; i++) (t[(r = e[i])] = A(this.aggregatedData[r])), t[r].length && (n = !0), delete this.aggregatedData[r]; return n ? t : null; } } function b(e, t) { return null == e ? (function (e) { e ? e.c++ : (e = { c: 1 }); return e; })(t) : t ? (t.c || (t = y(t.t)), (t.c += 1), (t.t += e), (t.sos += e * e), e > t.max && (t.max = e), e < t.min && (t.min = e), t) : { t: e }; } function y(e) { return { t: e, min: e, max: e, sos: e * e, c: 1 }; } function A(e) { return 'object' != typeof e ? [] : (0, m.D)(e, w); } function w(e, t) { return t; } var x = i(8632), E = i(4402), _ = i(4351); var T = i(5546), S = i(7956), D = i(3239), j = i(7894), N = i(9251); class C extends f { static featureName = N.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, N.t, r), l.il && ((0, S.N)(() => (0, T.p)('docHidden', [(0, j.z)()], void 0, N.t, this.ee), !0), (0, D.bP)('pagehide', () => (0, T.p)('winPagehide', [(0, j.z)()], void 0, N.t, this.ee)), this.importAggregator()); } } var O = i(3081); class P extends f { static featureName = O.t9; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, O.t9, r), this.importAggregator(); } } var R = i(6660); class I { constructor(e, t, r, n) { (this.name = 'UncaughtError'), (this.message = e), (this.sourceURL = t), (this.line = r), (this.column = n); } } class k extends f { static featureName = R.t; #e = new Set(); constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, R.t, n); try { this.removeOnAbort = new AbortController(); } catch (e) {} this.ee.on('fn-err', (e, t, n) => { this.abortHandler && !this.#e.has(n) && (this.#e.add(n), (0, T.p)('err', [this.#t(n), (0, j.z)()], void 0, r.D.jserrors, this.ee)); }), this.ee.on('internal-error', e => { this.abortHandler && (0, T.p)('ierr', [this.#t(e), (0, j.z)(), !0], void 0, r.D.jserrors, this.ee); }), l._A.addEventListener( 'unhandledrejection', e => { this.abortHandler && (0, T.p)( 'err', [this.#r(e), (0, j.z)(), !1, { unhandledPromiseRejection: 1 }], void 0, r.D.jserrors, this.ee, ); }, (0, D.m$)(!1, this.removeOnAbort?.signal), ), l._A.addEventListener( 'error', e => { this.abortHandler && (this.#e.has(e.error) ? this.#e.delete(e.error) : (0, T.p)('err', [this.#n(e), (0, j.z)()], void 0, r.D.jserrors, this.ee)); }, (0, D.m$)(!1, this.removeOnAbort?.signal), ), (this.abortHandler = this.#i), this.importAggregator(); } #i() { this.removeOnAbort?.abort(), this.#e.clear(), (this.abortHandler = void 0); } #t(e) { return e instanceof Error ? e : void 0 !== e?.message ? new I(e.message, e.filename || e.sourceURL, e.lineno || e.line, e.colno || e.col) : new I('string' == typeof e ? e : (0, _.P)(e)); } #r(e) { let t = 'Unhandled Promise Rejection: '; if (e?.reason instanceof Error) try { return (e.reason.message = t + e.reason.message), e.reason; } catch (t) { return e.reason; } if (void 0 === e.reason) return new I(t); const r = this.#t(e.reason); return (r.message = t + r.message), r; } #n(e) { return e.error instanceof Error ? e.error : new I(e.message, e.filename, e.lineno, e.colno); } } var H = i(2210); let z = 1; const L = 'nr@id'; function M(e) { const t = typeof e; return !e || ('object' !== t && 'function' !== t) ? -1 : e === l._A ? 0 : (0, H.X)(e, L, function () { return z++; }); } function F(e) { if ('string' == typeof e && e.length) return e.length; if ('object' == typeof e) { if ('undefined' != typeof ArrayBuffer && e instanceof ArrayBuffer && e.byteLength) return e.byteLength; if ('undefined' != typeof Blob && e instanceof Blob && e.size) return e.size; if (!('undefined' != typeof FormData && e instanceof FormData)) try { return (0, _.P)(e).length; } catch (e) { return; } } } var B = i(1214), U = i(7243); class Z { constructor(e) { this.agentIdentifier = e; } generateTracePayload(e) { if (!this.shouldGenerateTrace(e)) return null; var t = (0, n.DL)(this.agentIdentifier); if (!t) return null; var r = (t.accountID || '').toString() || null, i = (t.agentID || '').toString() || null, o = (t.trustKey || '').toString() || null; if (!r || !i) return null; var a = (0, E.M)(), s = (0, E.Ht)(), c = Date.now(), u = { spanId: a, traceId: s, timestamp: c }; return ( (e.sameOrigin || (this.isAllowedOrigin(e) && this.useTraceContextHeadersForCors())) && ((u.traceContextParentHeader = this.generateTraceContextParentHeader(a, s)), (u.traceContextStateHeader = this.generateTraceContextStateHeader(a, c, r, i, o))), ((e.sameOrigin && !this.excludeNewrelicHeader()) || (!e.sameOrigin && this.isAllowedOrigin(e) && this.useNewrelicHeaderForCors())) && (u.newrelicHeader = this.generateTraceHeader(a, s, c, r, i, o)), u ); } generateTraceContextParentHeader(e, t) { return '00-' + t + '-' + e + '-01'; } generateTraceContextStateHeader(e, t, r, n, i) { return i + '@nr=0-1-' + r + '-' + n + '-' + e + '----' + t; } generateTraceHeader(e, t, r, n, i, o) { if (!('function' == typeof l._A?.btoa)) return null; var a = { v: [0, 1], d: { ty: 'Browser', ac: n, ap: i, id: e, tr: t, ti: r } }; return o && n !== o && (a.d.tk = o), btoa((0, _.P)(a)); } shouldGenerateTrace(e) { return this.isDtEnabled() && this.isAllowedOrigin(e); } isAllowedOrigin(e) { var t = !1, r = {}; if ( ((0, n.Mt)(this.agentIdentifier, 'distributed_tracing') && (r = (0, n.P_)(this.agentIdentifier).distributed_tracing), e.sameOrigin) ) t = !0; else if (r.allowed_origins instanceof Array) for (var i = 0; i < r.allowed_origins.length; i++) { var o = (0, U.e)(r.allowed_origins[i]); if (e.hostname === o.hostname && e.protocol === o.protocol && e.port === o.port) { t = !0; break; } } return t; } isDtEnabled() { var e = (0, n.Mt)(this.agentIdentifier, 'distributed_tracing'); return !!e && !!e.enabled; } excludeNewrelicHeader() { var e = (0, n.Mt)(this.agentIdentifier, 'distributed_tracing'); return !!e && !!e.exclude_newrelic_header; } useNewrelicHeaderForCors() { var e = (0, n.Mt)(this.agentIdentifier, 'distributed_tracing'); return !!e && !1 !== e.cors_use_newrelic_header; } useTraceContextHeadersForCors() { var e = (0, n.Mt)(this.agentIdentifier, 'distributed_tracing'); return !!e && !!e.cors_use_tracecontext_headers; } } var V = i(7825), q = ['load', 'error', 'abort', 'timeout'], G = q.length, W = n.Yu.REQ, X = n.Yu.XHR; class Q extends f { static featureName = V.t; constructor(e, t) { let i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; if ((super(e, t, V.t, i), (0, n.OP)(e).xhrWrappable)) { (this.dt = new Z(e)), (this.handler = (e, t, r, n) => (0, T.p)(e, t, r, n, this.ee)); try { const e = { xmlhttprequest: 'xhr', fetch: 'fetch', beacon: 'beacon' }; l._A?.performance?.getEntriesByType('resource').forEach(t => { if (t.initiatorType in e && 0 !== t.responseStatus) { const n = { status: t.responseStatus }, i = { rxSize: t.transferSize, duration: Math.floor(t.duration), cbTime: 0 }; K(n, t.name), this.handler('xhr', [n, i, t.startTime, t.responseEnd, e[t.initiatorType]], void 0, r.D.ajax); } }); } catch (e) {} (0, B.u5)(this.ee), (0, B.Kf)(this.ee), (function (e, t, i, o) { function a(e) { var t = this; (t.totalCbs = 0), (t.called = 0), (t.cbTime = 0), (t.end = x), (t.ended = !1), (t.xhrGuids = {}), (t.lastSize = null), (t.loadCaptureCalled = !1), (t.params = this.params || {}), (t.metrics = this.metrics || {}), e.addEventListener( 'load', function (r) { E(t, e); }, (0, D.m$)(!1), ), l.IF || e.addEventListener( 'progress', function (e) { t.lastSize = e.loaded; }, (0, D.m$)(!1), ); } function s(e) { (this.params = { method: e[0] }), K(this, e[1]), (this.metrics = {}); } function c(t, r) { var i = (0, n.DL)(e); i.xpid && this.sameOrigin && r.setRequestHeader('X-NewRelic-ID', i.xpid); var a = o.generateTracePayload(this.parsedOrigin); if (a) { var s = !1; a.newrelicHeader && (r.setRequestHeader('newrelic', a.newrelicHeader), (s = !0)), a.traceContextParentHeader && (r.setRequestHeader('traceparent', a.traceContextParentHeader), a.traceContextStateHeader && r.setRequestHeader('tracestate', a.traceContextStateHeader), (s = !0)), s && (this.dt = a); } } function u(e, r) { var n = this.metrics, i = e[0], o = this; if (n && i) { var a = F(i); a && (n.txSize = a); } (this.startTime = (0, j.z)()), (this.body = i), (this.listener = function (e) { try { 'abort' !== e.type || o.loadCaptureCalled || (o.params.aborted = !0), ('load' !== e.type || (o.called === o.totalCbs && (o.onloadCalled || 'function' != typeof r.onload) && 'function' == typeof o.end)) && o.end(r); } catch (e) { try { t.emit('internal-error', [e]); } catch (e) {} } }); for (var s = 0; s < G; s++) r.addEventListener(q[s], this.listener, (0, D.m$)(!1)); } function d(e, t, r) { (this.cbTime += e), t ? (this.onloadCalled = !0) : (this.called += 1), this.called !== this.totalCbs || (!this.onloadCalled && 'function' == typeof r.onload) || 'function' != typeof this.end || this.end(r); } function f(e, t) { var r = '' + M(e) + !!t; this.xhrGuids && !this.xhrGuids[r] && ((this.xhrGuids[r] = !0), (this.totalCbs += 1)); } function h(e, t) { var r = '' + M(e) + !!t; this.xhrGuids && this.xhrGuids[r] && (delete this.xhrGuids[r], (this.totalCbs -= 1)); } function p() { this.endTime = (0, j.z)(); } function g(e, r) { r instanceof X && 'load' === e[0] && t.emit('xhr-load-added', [e[1], e[2]], r); } function m(e, r) { r instanceof X && 'load' === e[0] && t.emit('xhr-load-removed', [e[1], e[2]], r); } function v(e, t, r) { t instanceof X && ('onload' === r && (this.onload = !0), ('load' === (e[0] && e[0].type) || this.onload) && (this.xhrCbStart = (0, j.z)())); } function b(e, r) { this.xhrCbStart && t.emit('xhr-cb-time', [(0, j.z)() - this.xhrCbStart, this.onload, r], r); } function y(e) { var t, r = e[1] || {}; if ( ('string' == typeof e[0] ? 0 === (t = e[0]).length && l.il && (t = '' + l._A.location.href) : e[0] && e[0].url ? (t = e[0].url) : l._A?.URL && e[0] && e[0] instanceof URL ? (t = e[0].href) : 'function' == typeof e[0].toString && (t = e[0].toString()), 'string' == typeof t && 0 !== t.length) ) { t && ((this.parsedOrigin = (0, U.e)(t)), (this.sameOrigin = this.parsedOrigin.sameOrigin)); var n = o.generateTracePayload(this.parsedOrigin); if (n && (n.newrelicHeader || n.traceContextParentHeader)) if (e[0] && e[0].headers) s(e[0].headers, n) && (this.dt = n); else { var i = {}; for (var a in r) i[a] = r[a]; (i.headers = new Headers(r.headers || {})), s(i.headers, n) && (this.dt = n), e.length > 1 ? (e[1] = i) : e.push(i); } } function s(e, t) { var r = !1; return ( t.newrelicHeader && (e.set('newrelic', t.newrelicHeader), (r = !0)), t.traceContextParentHeader && (e.set('traceparent', t.traceContextParentHeader), t.traceContextStateHeader && e.set('tracestate', t.traceContextStateHeader), (r = !0)), r ); } } function A(e, t) { (this.params = {}), (this.metrics = {}), (this.startTime = (0, j.z)()), (this.dt = t), e.length >= 1 && (this.target = e[0]), e.length >= 2 && (this.opts = e[1]); var r, n = this.opts || {}, i = this.target; 'string' == typeof i ? (r = i) : 'object' == typeof i && i instanceof W ? (r = i.url) : l._A?.URL && 'object' == typeof i && i instanceof URL && (r = i.href), K(this, r); var o = ('' + ((i && i instanceof W && i.method) || n.method || 'GET')).toUpperCase(); (this.params.method = o), (this.body = n.body), (this.txSize = F(n.body) || 0); } function w(e, t) { var n; (this.endTime = (0, j.z)()), this.params || (this.params = {}), (this.params.status = t ? t.status : 0), 'string' == typeof this.rxSize && this.rxSize.length > 0 && (n = +this.rxSize); var o = { txSize: this.txSize, rxSize: n, duration: (0, j.z)() - this.startTime }; i('xhr', [this.params, o, this.startTime, this.endTime, 'fetch'], this, r.D.ajax); } function x(e) { var t = this.params, n = this.metrics; if (!this.ended) { this.ended = !0; for (var o = 0; o < G; o++) e.removeEventListener(q[o], this.listener, !1); t.aborted || ((n.duration = (0, j.z)() - this.startTime), this.loadCaptureCalled || 4 !== e.readyState ? null == t.status && (t.status = 0) : E(this, e), (n.cbTime = this.cbTime), i('xhr', [t, n, this.startTime, this.endTime, 'xhr'], this, r.D.ajax)); } } function E(e, t) { e.params.status = t.status; var r = (function (e, t) { var r = e.responseType; return 'json' === r && null !== t ? t : 'arraybuffer' === r || 'blob' === r || 'json' === r ? F(e.response) : 'text' === r || '' === r || void 0 === r ? F(e.responseText) : void 0; })(t, e.lastSize); if ((r && (e.metrics.rxSize = r), e.sameOrigin)) { var n = t.getResponseHeader('X-NewRelic-App-Data'); n && (e.params.cat = n.split(', ').pop()); } e.loadCaptureCalled = !0; } t.on('new-xhr', a), t.on('open-xhr-start', s), t.on('open-xhr-end', c), t.on('send-xhr-start', u), t.on('xhr-cb-time', d), t.on('xhr-load-added', f), t.on('xhr-load-removed', h), t.on('xhr-resolved', p), t.on('addEventListener-end', g), t.on('removeEventListener-end', m), t.on('fn-end', b), t.on('fetch-before-start', y), t.on('fetch-start', A), t.on('fn-start', v), t.on('fetch-done', w); })(e, this.ee, this.handler, this.dt), this.importAggregator(); } } } function K(e, t) { var r = (0, U.e)(t), n = e.params || e; (n.hostname = r.hostname), (n.port = r.port), (n.protocol = r.protocol), (n.host = r.hostname + ':' + r.port), (n.pathname = r.pathname), (e.parsedOrigin = r), (e.sameOrigin = r.sameOrigin); } var Y = i(3614); const { BST_RESOURCE: J, RESOURCE: ee, START: te, END: re, FEATURE_NAME: ne, FN_END: ie, FN_START: oe, PUSH_STATE: ae, } = Y; var se = i(7144); class ce extends f { static featureName = se.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, se.t, r), this.importAggregator(); } } var ue = i(7836); const { FEATURE_NAME: de, START: le, END: fe, BODY: he, CB_END: pe, JS_TIME: ge, FETCH: me, FN_START: ve, CB_START: be, FN_END: ye, } = ue; var Ae = i(4649); class we extends f { static featureName = Ae.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, Ae.t, r), this.importAggregator(); } } new (class extends t { constructor(t) { let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, E.ky)(16); super(), l._A ? ((this.agentIdentifier = r), (this.sharedAggregator = new v({ agentIdentifier: this.agentIdentifier })), (this.features = {}), (this.desiredFeatures = new Set(t.features || [])), this.desiredFeatures.add(p), Object.assign(this, (0, s.j)(this.agentIdentifier, t, t.loaderType || 'agent')), this.run()) : (0, e.Z)('Failed to initial the agent. Could not determine the runtime environment.'); } get config() { return { info: (0, n.C5)(this.agentIdentifier), init: (0, n.P_)(this.agentIdentifier), loader_config: (0, n.DL)(this.agentIdentifier), runtime: (0, n.OP)(this.agentIdentifier), }; } run() { const t = 'features'; try { const n = a(this.agentIdentifier), i = [...this.desiredFeatures]; i.sort((e, t) => r.p[e.featureName] - r.p[t.featureName]), i.forEach(t => { if (n[t.featureName] || t.featureName === r.D.pageViewEvent) { const i = (function (e) { switch (e) { case r.D.ajax: return [r.D.jserrors]; case r.D.sessionTrace: return [r.D.ajax, r.D.pageViewEvent]; case r.D.sessionReplay: return [r.D.sessionTrace]; case r.D.pageViewTiming: return [r.D.pageViewEvent]; default: return []; } })(t.featureName); i.every(e => n[e]) || (0, e.Z)( '' .concat(t.featureName, ' is enabled but one or more dependent features has been disabled (') .concat((0, _.P)(i), '). This may cause unintended consequences or missing data...'), ), (this.features[t.featureName] = new t(this.agentIdentifier, this.sharedAggregator)); } }), (0, x.Qy)(this.agentIdentifier, this.features, t); } catch (r) { (0, e.Z)('Failed to initialize all enabled instrument classes (agent aborted) -', r); for (const e in this.features) this.features[e].abortHandler?.(); const n = (0, x.fP)(); return ( delete n.initializedAgents[this.agentIdentifier]?.api, delete n.initializedAgents[this.agentIdentifier]?.[t], delete this.sharedAggregator, n.ee?.abort(), delete n.ee?.get(this.agentIdentifier), !1 ); } } addToTrace(t) { (0, e.Z)('Call to agent api addToTrace failed. The session trace feature is not currently initialized.'); } setCurrentRouteName(t) { (0, e.Z)('Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.'); } interaction() { (0, e.Z)('Call to agent api interaction failed. The spa feature is not currently initialized.'); } })({ features: [ Q, p, C, class extends f { static featureName = ne; constructor(e, t) { if ((super(e, t, ne, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il)) return; const n = this.ee; let i; (0, B.QU)(n), (this.eventsEE = (0, B.em)(n)), this.eventsEE.on(oe, function (e, t) { this.bstStart = (0, j.z)(); }), this.eventsEE.on(ie, function (e, t) { (0, T.p)('bst', [e[0], t, this.bstStart, (0, j.z)()], void 0, r.D.sessionTrace, n); }), n.on(ae + te, function (e) { (this.time = (0, j.z)()), (this.startPath = location.pathname + location.hash); }), n.on(ae + re, function (e) { (0, T.p)('bstHist', [location.pathname + location.hash, this.startPath, this.time], void 0, r.D.sessionTrace, n); }); try { (i = new PerformanceObserver(e => { const t = e.getEntries(); (0, T.p)(J, [t], void 0, r.D.sessionTrace, n); })), i.observe({ type: ee, buffered: !0 }); } catch (e) {} this.importAggregator({ resourceObserver: i }); } }, ce, P, we, k, class extends f { static featureName = de; constructor(e, t) { if ((super(e, t, de, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il)) return; if (!(0, n.OP)(e).xhrWrappable) return; try { this.removeOnAbort = new AbortController(); } catch (e) {} let r, i = 0; const o = this.ee.get('tracer'), a = (0, B._L)(this.ee), s = (0, B.Lg)(this.ee), c = (0, B.BV)(this.ee), u = (0, B.Kf)(this.ee), d = this.ee.get('events'), f = (0, B.u5)(this.ee), h = (0, B.QU)(this.ee), p = (0, B.Gm)(this.ee); function g(e, t) { h.emit('newURL', ['' + window.location, t]); } function m() { i++, (r = window.location.hash), (this[ve] = (0, j.z)()); } function v() { i--, window.location.hash !== r && g(0, !0); var e = (0, j.z)(); (this[ge] = ~~this[ge] + e - this[ve]), (this[ye] = e); } function b(e, t) { e.on(t, function () { this[t] = (0, j.z)(); }); } this.ee.on(ve, m), s.on(be, m), a.on(be, m), this.ee.on(ye, v), s.on(pe, v), a.on(pe, v), this.ee.buffer([ve, ye, 'xhr-resolved'], this.featureName), d.buffer([ve], this.featureName), c.buffer(['setTimeout' + fe, 'clearTimeout' + le, ve], this.featureName), u.buffer([ve, 'new-xhr', 'send-xhr' + le], this.featureName), f.buffer([me + le, me + '-done', me + he + le, me + he + fe], this.featureName), h.buffer(['newURL'], this.featureName), p.buffer([ve], this.featureName), s.buffer(['propagate', be, pe, 'executor-err', 'resolve' + le], this.featureName), o.buffer([ve, 'no-' + ve], this.featureName), a.buffer(['new-jsonp', 'cb-start', 'jsonp-error', 'jsonp-end'], this.featureName), b(f, me + le), b(f, me + '-done'), b(a, 'new-jsonp'), b(a, 'jsonp-end'), b(a, 'cb-start'), h.on('pushState-end', g), h.on('replaceState-end', g), window.addEventListener('hashchange', g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener('load', g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener( 'popstate', function () { g(0, i > 1); }, (0, D.m$)(!0, this.removeOnAbort?.signal), ), (this.abortHandler = this.#i), this.importAggregator(); } #i() { this.removeOnAbort?.abort(), (this.abortHandler = void 0); } }, ], loaderType: 'spa', }); })(); })(); </script> <!-- NR Script End for www.pearson.com --> <!-- OneTrust Cookies Consent Notice start for www.pearson.com --> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="0d545d30-0e52-4bd4-bbe4-db2d55525649"></script> <script type="text/javascript"> function OptanonWrapper() { var profile = blueConicClient.profile.getProfile(); if(!OnetrustActiveGroups.includes("C0004")){ profile.permission.setLevel(blueConicClient.permission.level.DO_NOT_TRACK); blueConicClient.profile.updateProfile(); } else { profile.permission.setLevel(blueConicClient.permission.level.PERSONAL); blueConicClient.profile.updateProfile(); } } </script> <!-- OneTrust Cookies Consent Notice end for www.pearson.com --> <!-- Start VWO Async SmartCode --> <script> window._vwo_code = window._vwo_code || (function () { var account_id = 725134, version = 1.5, settings_tolerance = 2000, library_tolerance = 2500, use_existing_jquery = false, is_spa = 1, hide_element = "", hide_element_style = "opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important", /* DO NOT EDIT BELOW THIS LINE */ f = false, d = document, vwoCodeEl = d.querySelector("#vwoCode"), filterToleranceTimer, code = { use_existing_jquery: function () { return use_existing_jquery; }, library_tolerance: function () { return library_tolerance; }, hide_element_style: function () { return "{" + hide_element_style + "}"; }, finish: function () { if (!f) { f = true; var a = d.getElementById("_vis_opt_path_hides"); if (a) a.parentNode.removeChild(a); } }, finished: function () { return f; }, load: function (a) { var b = d.createElement("script"); b.src = a; b.type = "text/javascript"; b.innerText; b.onerror = function () { _vwo_code.finish(); }; d.getElementsByTagName("head")[0].appendChild(b); }, getVersion: function () { return version; }, getMatchedCookies: function (matchPattern) { var matchedCookies = []; if (document.cookie) { matchedCookies = document.cookie.match(matchPattern) || []; } return matchedCookies; }, getCombinationCookie: function () { var matchedCookies = code.getMatchedCookies( /(?:^|;)\s?(_vis_opt_exp_\d+_combi=[^;$]*)/gi ); matchedCookies = matchedCookies.map(function (cookie) { try { var decodedCookie = decodeURIComponent(cookie); if ( !/_vis_opt_exp_\d+_combi=(?:\d+,?)+\s*$/.test(decodedCookie) ) { return ""; } return decodedCookie; } catch (e) { return ""; } }); var combinations = []; matchedCookies.forEach(function (each) { var cookiePair = each.match(/([\d,]+)/g); cookiePair && combinations.push(cookiePair.join("-")); }); return combinations.join("|"); }, init: function () { if (d.URL.indexOf("__vwo_disable__") > -1) return; window.settings_timer = setTimeout(function () { _vwo_code.finish(); _vwo_code.removeLoaderAndOverlay(); }, settings_tolerance); var filterConfig = this.filterConfig; if (!filterConfig || filterConfig.filterTime === "balanced") { var a = d.createElement("style"), b = hide_element ? hide_element + "{" + hide_element_style + "}" : "", h = d.getElementsByTagName("head")[0]; a.setAttribute("id", "_vis_opt_path_hides"); vwoCodeEl && a.setAttribute("nonce", vwoCodeEl.nonce); a.setAttribute("type", "text/css"); if (a.styleSheet) a.styleSheet.cssText = b; else a.appendChild(d.createTextNode(b)); h.appendChild(a); } if (filterConfig && filterConfig.filterTime === "early") { this.removeLoaderAndOverlay(); } var c = this.getCombinationCookie(); this.load( "https://dev.visualwebsiteoptimizer.com/j.php?a=" + account_id + "&u=" + encodeURIComponent(d.URL) + "&f=" + +is_spa + "&vn=" + version + (c ? "&c=" + c : "") ); return settings_timer; }, setFilterConfigAndApplyFilter: function (config) { if (!config) { return; } var state = this.isNonLiveMode(account_id) || config.isConsentGiven(); if (state === "1") { hide_element = "body"; window._vwo_settings_timer = _vwo_code.init(); return; } else if (state === "2") { return; } function clearIntervals(timerIds) { for (var i = 0; i < timerIds.length; i++) { clearInterval(timerIds[i]); } } this.filterConfig = config; var popupTimer = setInterval(function () { if (_vwo_code.applyFilters(config)) { clearInterval(popupTimer); } }, 100); var timer = setInterval(function () { var state = config.isConsentGiven(); var shouldClearAllIntervals; if (state === "1") { _vwo_code.showLoader(); window._vwo_settings_timer = _vwo_code.init(); shouldClearAllIntervals = true; } else if (state === "2") { _vwo_code.filterConfig = undefined; _vwo_code.removeLoaderAndOverlay(); shouldClearAllIntervals = true; } if (shouldClearAllIntervals) { clearIntervals([timer, popupTimer]); clearInterval(filterToleranceTimer); } }, 100); if (config.filterTolerance) { filterToleranceTimer = setTimeout(function () { _vwo_code.removeLoaderAndOverlay(); clearIntervals([timer, popupTimer]); }, config.filterTolerance); } }, showLoader: function () { var vwoOverlay = d.getElementsByClassName("vwo-overlay")[0]; if (!vwoOverlay) return; var vwoContentLoader = d.createElement("div"); vwoContentLoader.classList.add("vwo-content-loader"); vwoOverlay.parentNode.insertBefore( vwoContentLoader, vwoOverlay.nextSibling ); }, applyFilters: function (config) { var popup = d.querySelector(config.popupSelector); var popupZIndex; if (!popup && d.getElementById("_vis_opt_overlay")) { return; } var maxZIndex = 2147483647; if (popup) { var popupStyle = window.getComputedStyle(popup); popupZIndex = popupStyle.getPropertyValue("z-index"); if (!popupZIndex || popupZIndex === "auto") { popupZIndex = maxZIndex; } popup.style.zIndex = popupZIndex; } popupZIndex = popupZIndex || maxZIndex; var vwoFilter = "position: fixed; top: 0; left: 0; right: 0; bottom: 0; height: 100%; width: 100%; -webkit-filter: blur(5px); filter: blur(5px); backdrop-filter: saturate(180%) blur(3px); -webkit-backdrop-filter: saturate(180%) blur(3px); z-index:" + (popupZIndex - 1) + ";", vwoLoaderCss = " .vwo-content-loader{ border: 16px solid #f3f3f3; border-top: 16px solid #3498db; border-radius: 50%; width: 90px; height: 90px; position: fixed; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); animation: vwo-spin 2s linear infinite; z-index:" + (popupZIndex - 1) + "; }" + "@keyframes vwo-spin { 0% { -webkit-transform: translate(-50%, -50%) rotate(0deg); transform: translate(-50%, -50%) rotate(0deg); } 100% { -webkit-transform: translate(-50%, -50%) rotate(360deg); transform: translate(-50%, -50%) rotate(360deg); } }"; /** * This below written code should not be tweaked * */ var overlayStyleTag = d.getElementById("_vis_opt_overlay"), overlayCSS = ".vwo-overlay{" + vwoFilter + "}" + vwoLoaderCss; if (overlayStyleTag) { if (overlayStyleTag.styleSheet) { overlayStyleTag.styleSheet.cssText = overlayCSS; } else { var _vwo_textNode = d.createTextNode(overlayCSS); overlayStyleTag.appendChild(_vwo_textNode); overlayStyleTag.removeChild(overlayStyleTag.childNodes[0]); } } else { var a = d.createElement("style"), h = d.getElementsByTagName("head")[0], body = d.getElementsByTagName("body")[0]; var vwoOverlay = d.createElement("div"); vwoOverlay.classList.add("vwo-overlay"); body.prepend(vwoOverlay); a.setAttribute("id", "_vis_opt_overlay"); a.setAttribute("type", "text/css"); if (a.styleSheet) a.styleSheet.cssText = overlayCSS; else a.appendChild(d.createTextNode(overlayCSS)); h.appendChild(a); } return !!popup; }, removeLoaderAndOverlay: function () { var overlay = d.getElementsByClassName("vwo-overlay"); var loader = d.getElementsByClassName("vwo-content-loader"); var overlayStyleTag = d.getElementById("_vis_opt_overlay"); overlay && (overlay = overlay[0]) && overlay.parentElement.removeChild(overlay); loader && (loader = loader[0]) && loader.parentElement.removeChild(loader); overlayStyleTag && overlayStyleTag.parentElement.removeChild(overlayStyleTag); }, isNonLiveMode: function (accountId) { var wName = window.name; if (!wName) { return; } return ( (wName.indexOf("_vis_editor") > -1 || wName.indexOf("_vis_preview_" + accountId) > -1 || wName.indexOf("_vis_heatmap_" + accountId) > -1) && "1" ); }, }; return code; })(); _vwo_code.setFilterConfigAndApplyFilter({ popupSelector: "SELECTOR_PATH_OF_POPUP", filterTime: "FILTER_TIME_AS_PER_YOUR_PREFERENCE", isConsentGiven: function () { var consented =document.cookie.indexOf("C0004%3A1"); if(consented >-1) { return '1'; } else if (consented === -1) { return '2'; } else { return '3'; } }, filterTolerance: "HARD_TIMER_FOR_REMOVING_OVERLAY_AND_POPUP", }); </script> <!-- End VWO Async SmartCode --> <!-- BlueConic script start --> <script type="text/javascript" class="optanon-category-C0004" src="https://k244.pearson.com/script.js"></script> <!-- BlueConic script end --> <script type="text/javascript"> var globalProperties = {"siteId":"global-store-en","homePageLevel":3,"sitemapLevel":4,"sitemapIndexLevel":3,"msmSitesLevel":0,"selfReferencingCanonical":false,"extensionRemovalEnabled":false,"sitemapAlternativeLinksEnabled":false,"firstLevelNavEnabled":true,"secondLevelNavEnabled":true,"navContentEnabled":true,"footerFilteringEnabled":true,"useHomePageLevelInBreadcrumbs":true,"automaticMSMCanonicalTagEnabled":true,"columnControlConfigPath":"/etc/config/platform/aem-core/components/content/column-control-v3/columns","excludedContentPathsForSelfReferencingCanonicalTag":[],"navColumnControlConfigPath":"/etc/config/platform/aem-core/components/content/column-control-v3/columns","embedPageConfigPath":"/etc/config/platform/aem-core/components/page/embed-page/column-width-v2","megaNavContentBSVersion":4,"breadcrumbVersion":"v1","seoBreadcrumbEnabled":false,"seoHtmlMarkupEnabled":false,"enablePageLevelBreadcrumb":true,"blogPostConfig":false,"displayViewAllTagsForBlogs":true,"displayViewAllTagsForEvents":true,"rtlPage":false,"displayPastDatesForEvents":true,"walletAddEditEnabled":false,"walletAttemptsLimitationLogic":false,"cartMergeEnabled":false,"cartToHybrisEnabled":false,"manageSubscriptionEnabled":false,"showAutorenew":false,"updateProfileEnabled":false,"seoToolEnabled":true,"masterNodeDisabledForPreviewServer":true,"altTextGenerationEnabled":true,"recaptchValidationEnabled":false,"recaptchaV3Enabled":false,"multicoloredFaviconEnabled":true,"includeHiddenPagesInSitemap":false,"disableChatbotForInternalUsers":false,"contentSelectorExportJsonEnabled":false,"customDropdownEnabled":false,"contentTileNonSemanticMarkupEnabled":true,"tabPanelAccessibleMarkupEnabled":false,"localeSelectionAccessibleMarkupEnabled":true,"youTubeLazyLoadingEnabled":false,"heroSlideVideoBackgroundEnabled":false,"eventHeadingStyle":"h2","globalProperties":[{"download-limit-highrisk":"8"},{"download-limit-lowrisk":"50"},{"ies-server-root":"https://login.pearson.com/v1/piapi"},{"cart-data-host":"https://api-pgi.pearson.com/headless/ecommerce/v2"},{"sign-up-educator-redirect":"/instructor-verification"},{"ies-ispmc":"true"},{"global-property-upsert-url":"https://api-gip-01.pgi.pearsonprd.tech/educator-account-upsert-papi/v1/account_upsert"},{"ies-terms-of-use-url":"/en/legal-information/terms-of-use.html"},{"ies-privacy-policy-url":"/en/legal-information/privacy-policy.html"},{"sift-api-url":"https://apigw-us-gip.pearson.com/sift/api/v205/events"},{"sift-beacon-key":"25bd44c182"},{"sift-api-key":"a39b3061b675f905"},{"sift-script-url":"https://cdn.siftscience.com/s.js"},{"user-restricted-redirect":"/en.html"},{"pagesToRedirectFromAfterLogout":"/store/cart,/store/checkout,/store/my-account,/my-learning"},{"terms-and-conditions-platforms-url":"/content/dam/global-store/global/educator/resources/aivmap.json"},{"brand_name":"pearson"},{"product-not-found-page-url":"/en/legal-information/platforms-terms-and-conditions/product-not-found.html"},{"hybris-logout-url":"/store/logout?autoLogoutFlag=true"},{"ies-server-login-path":"/iesui/signin"},{"ies-server-reset-password-path":"/iesui/forgot-unpw"},{"pmc-services-server-root":"https://service.pearson.com/pmc-services/user-profile-state"},{"progressive-profile-second-step-url":"https://www.pearson.com/en-gb/user/profiling"},{"launchdarkly-client-id":"65314c1b6faa991281047bf6"},{"allowed-return-hosts":"mypearson.com,pearson.com"},{"ies-client-id":"5K06p9cX8Y35wQqBqRMHregkqjUdH5m4"}],"translations":{},"productMetatagNames":[],"navLibsCategories":["global.store.algolia-search.educator","one-dot-com.one-dot-com.he-js-base","dmcp.globalmessage","one-dot-com.one-dot-com.hed-navigation.nav-aem-header","one-dot-com.one-dot-com.hed-navigation.nav-footer"],"localesInfo":[{"en-us":"https://www.pearson.com/en-us.html"},{"en-gb":"https://www.pearson.com/en-gb.html"},{"en-ca":"https://www.pearson.com/en-ca.html"},{"en-au":"https://www.pearson.com/en-au.html"},{"en-nz":"https://www.pearson.com/en-nz.html"}],"suppressedExcludedLibsCategories":[],"standaloneLibsCategories":[],"tagListRootPaths":[]}; </script> <link rel="canonical" href="https://www.pearson.com/en-us/efficacy.html"/> <script>!function(e){var n="https://s.go-mpulse.net/boomerang/";if("False"=="True")e.BOOMR_config=e.BOOMR_config||{},e.BOOMR_config.PageParams=e.BOOMR_config.PageParams||{},e.BOOMR_config.PageParams.pci=!0,n="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="XCNNJ-G8PCV-U855W-LP259-ULUSU",function(){function e(){if(!r){var e=document.createElement("script");e.id="boomr-scr-as",e.src=window.BOOMR.url,e.async=!0,o.appendChild(e),r=!0}}function t(e){r=!0;var n,t,a,i,d=document,O=window;if(window.BOOMR.snippetMethod=e?"if":"i",t=function(e,n){var t=d.createElement("script");t.id=n||"boomr-if-as",t.src=window.BOOMR.url,BOOMR_lstart=(new Date).getTime(),e=e||d.body,e.appendChild(t)},!window.addEventListener&&window.attachEvent&&navigator.userAgent.match(/MSIE [67]\./))return window.BOOMR.snippetMethod="s",void t(o,"boomr-async");a=document.createElement("IFRAME"),a.src="about:blank",a.title="",a.role="presentation",a.loading="eager",i=(a.frameElement||a).style,i.width=0,i.height=0,i.border=0,i.display="none",o.appendChild(a);try{O=a.contentWindow,d=O.document.open()}catch(_){n=document.domain,a.src="javascript:var d=document.open();d.domain='"+n+"';void 0;",O=a.contentWindow,d=O.document.open()}if(n)d._boomrl=function(){this.domain=n,t()},d.write("<bo"+"dy onload='document._boomrl();'>");else if(O._boomrl=function(){t()},O.addEventListener)O.addEventListener("load",O._boomrl,!1);else if(O.attachEvent)O.attachEvent("onload",O._boomrl);d.close()}function a(e){window.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!window.BOOMR||!window.BOOMR.version&&!window.BOOMR.snippetExecuted){window.BOOMR=window.BOOMR||{},window.BOOMR.snippetStart=(new Date).getTime(),window.BOOMR.snippetExecuted=!0,window.BOOMR.snippetVersion=14,window.BOOMR.url=n+"XCNNJ-G8PCV-U855W-LP259-ULUSU";var i=document.currentScript||document.getElementsByTagName("script")[0],o=i.parentNode,r=!1,d=document.createElement("link");if(d.relList&&"function"==typeof d.relList.supports&&d.relList.supports("preload")&&"as"in d)window.BOOMR.snippetMethod="p",d.href=window.BOOMR.url,d.rel="preload",d.as="script",d.addEventListener("load",e),d.addEventListener("error",function(){t(!0)}),setTimeout(function(){if(!r)t(!0)},3e3),BOOMR_lstart=(new Date).getTime(),o.appendChild(d);else t(!1);if(window.addEventListener)window.addEventListener("load",a,!1);else if(window.attachEvent)window.attachEvent("onload",a)}}(),"".length>0)if(e&&"performance"in e&&e.performance&&"function"==typeof e.performance.setResourceTimingBufferSize)e.performance.setResourceTimingBufferSize();!function(){if(BOOMR=e.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var n=""=="true"?1:0,t="",a="bdpnbevydq2gsz53plpa-f-072a6f1b6-clientnsv4-s.akamaihd.net",i="false"=="true"?2:1,o={"ak.v":"39","ak.cp":"797525","ak.ai":parseInt("503985",10),"ak.ol":"0","ak.cr":4,"ak.ipv":4,"ak.proto":"http/1.1","ak.rid":"16babf3c","ak.r":23331,"ak.a2":n,"ak.m":"x","ak.n":"essl","ak.bpcip":"8.222.208.0","ak.cport":58162,"ak.gh":"184.86.250.133","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.0rtt.ed":"","ak.csrc":"-","ak.acc":"bbr","ak.t":"1740339934","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==r4yl+eWofrgeBJGI/jh77JCtTOhI2dcxcOsaZhqSd7p0l3FJfTMEASP+PiS7glU9xVe/veTfZPyW8dSMYZFyuGlL5a2HEsd80u3eT5DIgoit1DE5hmqsP8PzzwAlVjMwJJ5jhssNRFgThP5c22QqOdZ7s+Dt8s516M2OsbXOp9RxPBiiuyfathq1ZCCGBpLkeO7QmedhcLxY4Ekw1suqxrQxdsXx8l2rf2Cihbw2y1IrMTrGT0d9xYAV2mCMXSodlZiCo0wEmRIWalFrNJBL43MMB1bgq6L+1uluwEUouIf4zWW05GqDFKyP0ijKaSvQbwteNEa+K68d00SZJyJnPKgln9hZLoTdlPBXWTUsHn4H2UtTEl89akmmPsohjMEwRYfcRkj/Q/isBX2x3p5JTcdHlZ/vVjWmGeRWQDtZgk4=","ak.pv":"155","ak.dpoabenc":"","ak.tf":i};if(""!==t)o["ak.ruds"]=t;var r={i:!1,av:function(n){var t="http.initiator";if(n&&(!n[t]||"spa_hard"===n[t]))o["ak.feo"]=void 0!==e.aFeoApplied?1:0,BOOMR.addVar(o)},rv:function(){var e=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.0rtt.ed","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(e)}};BOOMR.plugins.AK={akVars:o,akDNSPreFetchDomain:a,init:function(){if(!r.i){var e=BOOMR.subscribe;e("before_beacon",r.av,null,null),e("onbeacon",r.rv,null,null),r.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script></head> <body data-breadcrumb="true" class="page basicpage" id="page-37b3cf8ce7"> <script src="/etc/clientlibs/platform/aem-core/ies-session.min.ACSHASH70b4b3c7e053d633c2d7be7163e8646a.js"></script> <header> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <div class="iparsys parsys aem-GridColumn aem-GridColumn--default--12"><div class="section"><div class="new"></div> </div><div class="iparys_inherited"><div class="iparsys parsys"><div class="experiencefragment section"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> </div> </div> </div> </div> </div> </div> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <div class="iparsys parsys aem-GridColumn aem-GridColumn--default--12"><div class="section"><div class="new"></div> </div><div class="iparys_inherited"><div class="iparsys parsys"><div class="experiencefragment section"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <section class="column-control aem-GridColumn aem-GridColumn--default--12 he-navigation-topnav"> <div class="container"> <div class="row"><div class="col-sm-9 col-xs-12"><div role="navigation" class="mega-nav navbar navbar-default section"> <div class="navbar-header"> <button aria-label=" items" data-toggle="collapse" data-target="#navbar-collapse-grid" class="navbar-toggle" aria-expanded="false"><span class="fa fa-bars"></span></button> </div> <div id="navbar-collapse-grid" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li class="dropdown mega-nav-full-width"> <a href="https://www.pearson.com/schools.html" role="link" target="_self" aria-label="for-school" class="dropdown-toggle js-opacity-0"> For School </a> </li> <li class="dropdown mega-nav-full-width"> <a href="https://www.pearson.com/higher-education.html" role="link" target="_self" aria-label="for-college" class="dropdown-toggle js-opacity-0"> For College </a> </li> <li class="dropdown mega-nav-full-width"> <a href="https://www.pearson.com/work.html" role="link" target="_self" aria-label="for-work" class="dropdown-toggle js-opacity-0"> For Work </a> </li> <li class="dropdown mega-nav-full-width"> <a href="https://www.pearson.com/explore-pearson.html" role="link" target="_self" aria-label="all-pearson" class="dropdown-toggle js-opacity-0"> Explore Pearson </a> </li> </ul> </div> </div> </div><div class=" col-sm-3 col-xs-12"><div class="locale-selection section"> <div> <button class="locale-selection__button selected_en" aria-haspopup="true" aria-label="Locale Selection. Currently selected: All countries" aria-expanded="false" aria-controls="locale-selection-dropdown"> All countries </button> <div class="locale-selection__dropdown" aria-describedby="locale-selection-description" id="locale-selection-dropdown"> <ul role="menu" aria-label="Locale Selection"> <li role="none"> <a role="menuitem" lang="en-US" hreflang="en-US" href="https://www.pearson.com/en-us.html"> United States </a> </li> <li role="none"> <a role="menuitem" lang="en-CA" hreflang="en-CA" href="https://www.pearson.com/en-ca.html"> Canada </a> </li> <li role="none"> <a role="menuitem" lang="en-GB" hreflang="en-GB" href="https://www.pearson.com/en-gb.html"> United Kingdom </a> </li> <li role="none"> <a role="menuitem" lang="en" hreflang="en" href="https://www.pearson.com/location-selector.html" aria-selected="true"> All countries </a> </li> </ul> </div> </div> </div> </div></div> </div> </section> </div> </div> </div> </div> </div> </div> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <div class="iparsys parsys aem-GridColumn aem-GridColumn--default--12"><div class="section"><div class="new"></div> </div><div class="iparys_inherited"><div class="iparsys parsys"><div class="experiencefragment section"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <section class="column-control he-pr-nav__wrapper layout-default clipping-default clip-target-default default-texture default-animation default-gutters has-padding-top--none has-padding-bottom--none default-padding-horizontal default-min-height default-rule default-corner-radius default-shadow aem-GridColumn nav-content-selector aem-GridColumn--default--12 isAuthenticated"> <div class="container"> <div class="row"><div class="col-12"><div role="navigation" class="mega-nav navbar navbar-default he-header-mobile-nav he-drop-down-nav section"> <div data-aria-label-nav="Menu"></div> <div class="navbar-header"> <button aria-label="Menu items" data-toggle="collapse" data-target="#navbar-collapse-grid" class="navbar-toggle" aria-expanded="false"><span class="fa fa-bars"></span></button> </div> <div id="navbar-collapse-grid" class="navbar-collapse collapse"> <div class="mega-nav-items-container"> <ul class="nav navbar-nav"> <li class="dropdown mega-nav-full-width"> <a href="#" role="button" target="_self" aria-label="for-school" aria-controls="menu-item--forschool" class="dropdown-toggle js-opacity-0" data-toggle="dropdown"> For School <span class="caret"></span> </a> <div id="menu-item--forschool" class="dropdown-menu"> <div class="text he-nav--mobile-only mobile-nav--back section"> <p><a href="#">Back to main menu</a></p> </div> <div class="text he-nav--mobile-only section"> <h2>FOR SCHOOL</h2> </div> <div class="text explore-link-text he-nav--mobile-only section"> <p><a href="https://www.pearson.com/schools.html">Explore for School</a></p> </div> <div role="navigation" class="mega-nav navbar navbar-default he-nav--arrow-links section"> </div> <div class="ghost section"> </div> </div> </li> <li class="dropdown mega-nav-full-width"> <a href="#" role="button" target="_self" aria-label="for-college" aria-controls="menu-item--forcollege" class="dropdown-toggle js-opacity-0" data-toggle="dropdown"> For College <span class="caret"></span> </a> <div id="menu-item--forcollege" class="dropdown-menu"> <div class="text he-nav--mobile-only mobile-nav--back section"> <p><a href="#">Back to main menu</a></p> </div> <div class="text he-nav--mobile-only section"> <h2>FOR COLLEGE</h2> </div> <div class="text explore-link-text he-nav--mobile-only section"> <p><a href="https://www.pearson.com/higher-education.html">Explore for College</a></p> </div> <div role="navigation" class="mega-nav navbar navbar-default he-nav--arrow-links section"> </div> <div class="ghost section"> </div> <div class="ghost section"> </div> </div> </li> <li class="dropdown mega-nav-full-width"> <a href="#" role="button" target="_self" aria-label="for-work" aria-controls="menu-item--forwork" class="dropdown-toggle js-opacity-0" data-toggle="dropdown"> For Work <span class="caret"></span> </a> <div id="menu-item--forwork" class="dropdown-menu"> <div class="text he-nav--mobile-only mobile-nav--back section"> <p><a href="#">Back to main menu</a></p> </div> <div class="text he-nav--mobile-only section"> <h2>FOR WORK</h2> </div> <div class="text explore-link-text he-nav--mobile-only section"> <p><a href="https://www.pearson.com/work.html">Explore for work</a></p> </div> <div role="navigation" class="mega-nav navbar navbar-default he-nav--arrow-links section"> </div> <div class="ghost section"> </div> </div> </li> <li class="dropdown mega-nav-full-width"> <a href="https://www.pearson.com/explore-pearson.html" role="link" target="_self" aria-label="all-pearson" class="dropdown-toggle js-opacity-0"> Explore Pearson </a> </li> </ul> <div class="text he-nav--mobile-only cart-link-text section"> <p><a href="/store/cart" title="Cart" class="cart-link">Cart</a></p> </div> <div class="ghost section"> </div> </div> </div> </div> <div class="logo-v2 header__logo section"> <a id="logo" href="https://www.pearson.com/en.html" aria-label="Pearson Logo"> <picture> <source media="(max-width: 414px)" srcset="/content/dam/help/hedReimagined/logos/logo-hed--on-dark.svg"/> <img src="/content/dam/help/hedReimagined/logos/logo-hed--on-dark.svg" alt="Pearson"/> </picture> </a> </div> <div role="navigation" class="mega-nav navbar navbar-default section he-header-desktop-nav"> </div> <div class="function-panel section function-panel educator-nav__search c-nav__search aem-GridColumn aem-GridColumn--default--12"> <div class="facet__auto_suggest" data-fp-attributes="{&quot;productsTitle&quot;:&quot;PRODUCTS&quot;,&quot;suggestedTitle&quot;:&quot;SUGGESTED SEARCHES&quot;}" data-hide-tags="true"></div> </div> <section class="column-control layout-default clipping-default clip-target-default default-texture default-animation default-gutters has-padding-top--none has-padding-bottom--none default-padding-horizontal default-min-height default-rule default-corner-radius default-shadow he-header-icon-navigation section"> <div class="row"><div class="col-12"><div class="parsys section"><div class="ghost section"> </div> <div class="ghost section"> </div> <div class="ghost section"> </div> </div> </div></div> </section> </div></div> </div> </section> </div> </div> </div> <nav class="breadcrumb-wrapper-nav-hide c-breadcrumb__wrapper section"> </nav> </div> </div> </div> </div> </header> <main role="main"><div> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <div class="hero-carousel aem-GridColumn aem-GridColumn--default--12"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/accessible-slick.min.ACSHASHf0691f5daad7b1f777967912f6e36a22.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/hero-carousel.min.ACSHASHb0359f371ae542806f3095f2010f6fc1.css" type="text/css"> <div class="slider slider-slide--height-45" data-slick='{ "autoplay": false, "useAutoplayToggleButton": false}'> <div> <div class="hero-carousel-slide"> <style> .slider-slide-666884690 { background-image: url("/content/dam/global-store/global/resources/efficacy/2400x800-shutterstock750997051.jpg"); } </style> <div class="slider-slide slider-slide-666884690 slider-slide--theme-dark slider-slide--gradient slider-slide--has-image-right "> <div class="slider-slide__container"> <div class="container"> <div class="row"> <div class="col-md-5 col-12"> <div class="slider-slide-content slider-slide-content--bg slider-slide-content--end"> <span class="hero-carousel-user-data sans"> <h2>Efficacy &amp; Research<br /> </h2> </span> <p>Harnessing the science of learning<br /> </p> </div> </div> <div class=" col-md-7 col-12"></div> </div> </div> </div> </div> </div> </div> </div> </div> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <div class="hero-carousel aem-GridColumn aem-GridColumn--default--12"> <div class="slider slider-slide--height-" data-slick='{ "autoplay": false, "useAutoplayToggleButton": false}'> </div> </div> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <section class="column-control layout-default default-padding-top default-padding-bottom default-rule aem-GridColumn aem-GridColumn--default--12"> <div class="container"> <div class="row"><div class="col-md-2 col-12"></div><div class="col-md-8 col-12"><div class="content-tile behavior--none content-tile-portrait bgcolor--default default-links default-btn-type default-btn-size default-btn-width pad--default__figure pad-eq-vertical--default__caption pad-eq-horizontal--default__caption default-title-typesize default-title-typeweight default-subtitle-typesize default-subtitle-typeweight default-subtitle-color default-content-tile-text--col-count section"> <div class="content-tile-container"> <div class="content-tile__figure"> <div class="content-tile__figcaption"> <div class="content-tile-text rte-container"><h2 style="text-align: left;">What is efficacy?<br /> </h2> <p style="text-align: left;">At its heart, efficacy is looking at a way of doing something and asking ‘Does this achieve what it’s meant to achieve – and why?’   </p> <p style="text-align: left;">This inquisitive, evidence based approach is at the heart of everything we do. We don’t assume something works just because that’s how it’s always done. We use research to find out what works and why.   </p> <p style="text-align: left;">That’s why you can trust Pearson to help you reach your learning goals.<br /> </p> </div> </div> </div> </div> </div> </div><div class="col-md-2 col-12"></div></div> </div> </section> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <section class="column-control bgcolor--ui-01 default-padding-top has-padding-bottom--15 aem-GridColumn aem-GridColumn--default--12"> <div class="container"> <div class="row"><div class="col-12"><div class="content-tile section"> <div class="content-tile-container"> <div class="content-tile__figure"> <div class="content-tile__figcaption"> <div class="content-tile-text rte-container"><h2 style="text-align: center;">Explore efficacy and research</h2> </div> </div> </div> </div> </div> </div></div> </div> </section> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <section class="column-control bgcolor--ui-01 has-padding-top--none aem-GridColumn aem-GridColumn--default--12"> <div class="container"> <div class="row"><div class="col-12"><div class="static-collection section"> <div class="c-collection--light-bg"></div> <div class="c-collection c-collection--basic c-collection--light c-collection--grid"> <div class="container"> <div class="c-collection__row " data-slick='{"slidesToShow": 3, "slidesToScroll": 3, "infinite": true}' data-next-label-slick="Next" data-previous-label-slick="Previous"> <div class="38975626713061650 static-collection-card c-collection__col-3"> <div class=" c-collection__item " data-gtm-attribute="Evidence about learning"> <div class="c-collection__img"> <picture style="--original-image-ratio: 2"> <source srcset="/content/dam/global-store/global/resources/efficacy/1600x800-offset-327812.jpg.transform/card-size/img.jpeg" media="(min-width:320px)"/> <img loading='lazy' src="/content/dam/global-store/global/resources/efficacy/1600x800-offset-327812.jpg" alt="" role="presentation"/> </picture> </div> <div class="c-collection__footer"> <h3 class="c-collection__footer-title"> Evidence about learning </h3> <div class="c-collection__footer-textBasic"> <p>What helps learners achieve the outcomes that matter to them?</p> </div> <div class="c-collection__footer-bottom "> <div class="c-collection__footer-btnBasic"> <a href="https://www.pearson.com/efficacy/learning-evidence.html" class="button--tertiary button--small " aria-label="Explore the evidence about learning"> Explore the evidence </a> </div> </div> </div> </div> </div> <div class="530970189052035100 static-collection-card c-collection__col-3"> <div class=" c-collection__item " data-gtm-attribute="Evidence about our products"> <div class="c-collection__img"> <picture style="--original-image-ratio: 2"> <source srcset="/content/dam/global-store/global/resources/efficacy/1600x800-GettyImages-1063791066.jpg.transform/card-size/img.jpeg" media="(min-width:320px)"/> <img loading='lazy' src="/content/dam/global-store/global/resources/efficacy/1600x800-GettyImages-1063791066.jpg" alt="" role="presentation"/> </picture> </div> <div class="c-collection__footer"> <h2 class="c-collection__footer-title"> Evidence about our products </h2> <div class="c-collection__footer-textBasic"> <p>What impact do our products have on learning outcomes? </p> </div> <div class="c-collection__footer-bottom "> <div class="c-collection__footer-btnBasic"> <a href="https://www.pearson.com/efficacy/product-evidence.html" class="button--tertiary button--small " aria-label="Explore the evidence about products"> Explore the evidence </a> </div> </div> </div> </div> </div> <div class="725744392660560900 static-collection-card c-collection__col-3"> <div class=" c-collection__item " data-gtm-attribute="How we produce our research"> <div class="c-collection__img"> <picture style="--original-image-ratio: 2"> <source srcset="/content/dam/global-store/global/resources/efficacy/1600x800-GettyImages-1138451009.jpg.transform/card-size/img.jpeg" media="(min-width:320px)"/> <img loading='lazy' src="/content/dam/global-store/global/resources/efficacy/1600x800-GettyImages-1138451009.jpg" alt="" role="presentation"/> </picture> </div> <div class="c-collection__footer"> <h2 class="c-collection__footer-title"> How we produce our research </h2> <div class="c-collection__footer-textBasic"> <p>How do you know you can trust our findings?</p> </div> <div class="c-collection__footer-bottom "> <div class="c-collection__footer-btnBasic"> <a href="https://www.pearson.com/efficacy/research-framework.html" class="button--tertiary button--small "> Discover our process </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div></div> </div> </section> </div> </div> </main> <footer><div> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <div class="iparsys parsys aem-GridColumn aem-GridColumn--default--12"><div class="section"><div class="new"></div> </div><div class="iparys_inherited"><div class="iparsys parsys"><div class="experiencefragment section"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <!-- Getting class names set from developer configurations and combining it with the one configured in the style tab --> <section class="column-control he-footer-global layout-default bgcolor--default clipping-default gradients-default default-animation default-gutters has-padding-top--none has-padding-bottom--none default-padding-horizontal default-min-height default-rule default-corner-radius default-shadow aem-GridColumn aem-GridColumn--default--12"> <div class="container"> <div class="row"><div class="col-12"><section class="column-control layout-default bgcolor--default clipping-default gradients-default default-animation default-gutters default-padding-top default-padding-bottom default-padding-horizontal default-min-height default-rule default-corner-radius default-shadow section c-footer__main"> <div class="row"><div class="col-md-3 col-12"><div class="logo-v2 section c-footer__logo"> <a id="footer__vCake-logo" href="https://www.pearson.com/en.html"> <picture> <source media="(max-width: 800px)" srcset="/content/dam/help/hedReimagined/logos/logo-hed--on-dark.svg"/> <img src="/content/dam/help/hedReimagined/logos/logo-hed--on-dark.svg" alt="Pearson Home"/> </picture> </a> </div> <div class="social-links c-footer__social-links section"> <link rel="stylesheet" href="/etc/clientlibs/platform/aem-core/components/content/social-links.min.ACSHASHda4fe63359349df9709a7c55ffa945e7.css" type="text/css"> <ul class="social-links__list"> <li class="social-links__item"> <a href="https://www.facebook.com/PearsonNorthAmerica" target="_blank" rel="noopener noreferrer" aria-label="Facebook" class="social-links--facebook"></a> </li> <li class="social-links__item"> <a href="https://twitter.com/PearsonNorthAm" target="_blank" rel="noopener noreferrer" aria-label="Twitter" class="social-links--twitter"></a> </li> <li class="social-links__item"> <a href="https://www.youtube.com/c/PearsonNorthAmerica" target="_blank" rel="noopener noreferrer" aria-label="Youtube" class="social-links--youtube"></a> </li> <li class="social-links__item"> <a href="https://www.linkedin.com/showcase/pearson-north-america/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="social-links--linkedin"></a> </li> <li class="social-links__item"> <a href="https://www.instagram.com/pearsonofficial/" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="social-links--instagram"></a> </li> </ul> </div> <div class="parsys section"><div class="parsys section"><div class="parsys section"><div class="locale-selection he-nav--mobile-only section"> <div> <button class="locale-selection__button selected_en" aria-haspopup="true" aria-label="Locale Selection. Currently selected: All countries" aria-expanded="false" aria-controls="locale-selection-dropdown"> All countries </button> <div class="locale-selection__dropdown" aria-describedby="locale-selection-description" id="locale-selection-dropdown"> <ul role="menu" aria-label="Locale Selection"> <li role="none"> <a role="menuitem" lang="en-US" hreflang="en-US" href="https://www.pearson.com/en-us.html"> United States </a> </li> <li role="none"> <a role="menuitem" lang="en-CA" hreflang="en-CA" href="https://www.pearson.com/en-ca.html"> Canada </a> </li> <li role="none"> <a role="menuitem" lang="en-GB" hreflang="en-GB" href="https://www.pearson.com/en-gb.html"> United Kingdom </a> </li> <li role="none"> <a role="menuitem" lang="en" hreflang="en" href="https://www.pearson.com/location-selector.html" aria-selected="true"> All countries </a> </li> </ul> </div> </div> </div> </div> <div class="parsys section"><div class="parsys section"></div> </div> </div> </div> <div class="parsys section"></div> </div><div class="col-md-9 col-12"><section class="column-control layout-default bgcolor--default clipping-default gradients-default default-animation default-gutters has-padding-top--none has-padding-bottom--none default-padding-horizontal default-min-height default-rule default-corner-radius default-shadow section c-footer__navigation"> <div class="row"><div class="col-20pct col-12"><div class="accordion acord section"> <section class="accordion-panel"> <h3 class="accordion-panel-header"> <button aria-controls="-2033578333-1" aria-expanded="false"> <span>Explore</span> <span class="pull-right fa fa-plus"></span> </button> </h3> <div class="accordion-panel-content accordion-panel-hide" id="-2033578333-1"> <div class="link-list default section c-footer__link-list"> <div> <ul id="mn-root--842179"> <li> <a href="https://www.pearson.com/schools.html">Schools </a> </li> <li> <a href="https://www.pearson.com/higher-education.html">College </a> </li> <li> <a href="https://www.pearson.com/work.html">Work </a> </li> </ul> </div> </div> </div> </section> </div> </div><div class="col-20pct col-12"><div class="accordion section"> <section class="accordion-panel"> <h3 class="accordion-panel-header"> <button aria-controls="1750854786-1" aria-expanded="false"> <span>Major businesses</span> <span class="pull-right fa fa-plus"></span> </button> </h3> <div class="accordion-panel-content accordion-panel-hide" id="1750854786-1"> <div class="link-list default section c-footer__link-list"> <div> <ul id="mn-root--1808689700"> <li> <a href="https://www.pearsonassessments.com/" target="_blank" class="new-window" rel="noreferrer">Assessments </a> </li> <li> <a href="https://www.pearson.com/languages" target="_blank" class="new-window" rel="noreferrer">Pearson Languages </a> </li> <li> <a href="https://www.pearson.com/international-schools" target="_blank" class="new-window" rel="noreferrer">International Schools </a> </li> <li> <a href="https://home.pearsonvue.com/" target="_blank" class="new-window" rel="noreferrer">Pearson VUE </a> </li> <li> <a href="http://www.connectionseducation.com/" target="_blank" class="new-window" rel="noreferrer">Virtual Schools </a> </li> </ul> </div> </div> <div class="ghost section"> </div> </div> </section> </div> </div><div class="col-20pct col-12"><div class="accordion section"> <section class="accordion-panel"> <h3 class="accordion-panel-header"> <button aria-controls="1074786963-1" aria-expanded="false"> <span>About us</span> <span class="pull-right fa fa-plus"></span> </button> </h3> <div class="accordion-panel-content accordion-panel-hide" id="1074786963-1"> <div class="link-list default section c-footer__link-list"> <div> <ul id="mn-root-473564321"> <li> <a href="https://pearson.jobs/" target="_blank" class="new-window" rel="noreferrer">Careers </a> </li> <li> <a href="https://www.pearson.com/efficacy.html">Efficacy at Pearson </a> </li> <li> <a href="https://plc.pearson.com/investors" target="_blank" class="new-window" rel="noreferrer">Investor Relations </a> </li> <li> <a href="https://plc.pearson.com/company" target="_blank" class="new-window" rel="noreferrer">Our Company </a> </li> <li> <a href="https://www.pearson.com">Pearson.com </a> </li> <li> <a href="https://www.pearson.com/report-piracy.html">Report Piracy </a> </li> </ul> </div> </div> <div class="ghost section"> </div> </div> </section> </div> </div><div class="col-20pct col-12"><div class="ghost section"> </div> </div><div class="col-20pct col-12"><div class="ghost section"> </div> </div></div> </section> </div></div> </section> <section class="column-control layout-default bgcolor--default clipping-default gradients-default default-animation default-gutters has-padding-top--30 has-padding-bottom--30 default-padding-horizontal default-min-height default-rule default-corner-radius default-shadow section c-footer__main c-footer__bottom"> <div class="row"><div class="col-12"><div class="link-list default section c-footer__link-list"> <div> <ul id="mn-root-2107762321"> <li> <a href="https://www.pearson.com/legal-information/terms-of-use.html">Terms of Use </a> </li> <li> <a href="https://www.pearson.com/privacy-center/privacy-notices.html">Privacy </a> </li> <li> <a href="https://www.pearson.com/legal-information/cookie-policy.html" aria-label="Cookie Settings" id="open-ot-preference-modal">Cookies </a> </li> <li> <a href="https://www.pearson.com/legal-information/cookie-policy.html#do-not-sell-or-share-my-data">Do Not Sell Or Share My Personal Information </a> </li> <li> <a href="https://www.pearson.com/legal-information/accessibility.html">Accessibility </a> </li> <li> <a href="https://www.pearson.com/legal-information/patent-notice.html">Patent Notice </a> </li> </ul> </div> </div> <div class="text section c-footer__bottom-copyright"> <p>© 1996–2025 Pearson All rights reserved.</p> </div> </div></div> </section> </div></div> </div> </section> </div> </div> </div> </div> </div> </div> </div> </footer> <script src="/etc/clientlibs/global-store/parse-data-layer.min.ACSHASHf33cc89d499e9552305582b58c89767d.js"></script> <script src="/etc/clientlibs/one-dot-com/one-dot-com/he-js-base.min.ACSHASH911bcaf7fe95ad924b4d5441f7b59a72.js"></script> <script src="/etc/clientlibs/one-dot-com/one-dot-com/column-control-collapse.min.ACSHASHedfe505c62d117a26f847348e9799da0.js"></script> <script src="/etc/clientlibs/one-dot-com/one-dot-com/hed-navigation/nav-footer.min.ACSHASH7de5ea17868d1e85194735505a3dad9b.js"></script> <script src="/etc/clientlibs/one-dot-com/one-dot-com/hed-navigation/nav-aem-header.min.ACSHASH7008168049cd2898d4c823973f7f9c29.js"></script> <script src="/etc/clientlibs/one-dot-com/one-dot-com/he-ies-signin-modal.min.ACSHASH241772f65f00a3abe7fe627720819e23.js"></script> <div class="cloudservice pearson-data-layer"> <script src="/etc/clientlibs/platform/aem-core/data-layer/user-info.min.ACSHASHca102e1b1b56cceaaa7c112f1b42d549.js"></script> </div> <div class="cloudservice gtm"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MVH69VF" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> </div> <div class="cloudservice ecommerce-service-component"> <script src="https://www.pearson.com/store/_ui/addons/b2bacceleratoraddon/responsive/common/js/acc.orderform.js"></script> <script src="https://www.pearson.com/store/_ui/addons/pmciamaddon/responsive/common/js/pmciamaddon.js"></script> <div id="expectedMarkup" data-expected-markup="userNav"></div> <script src="/etc/clientlibs/platform/aem-core/components/content/ecommerce-header.min.ACSHASH0b52cc84ef21ee9597e975519ebcf164.js"></script> </div> <div class="cloudservice geolocation-service-component"></div> <div class="cloudservice script-include-service"> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10