CINXE.COM
Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback] | shopAAP
<!DOCTYPE html> <html lang="en"> <head> <style> html { visibility: hidden; opacity: 0; } </style> <link rel="shortcut icon" href="/Images/Favicon/AAP-Favicon-4_Black.png" type="image/x-icon"> <meta name="viewport" content="width=device-width" /> <meta http-equiv="X-UA-Compatible" content="IE=11;IE=Edge,chrome=1" /> <meta name="referrer" content="always" /> <meta property="og:title" content="Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback] | AAP" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.aap.org/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-paperback/" /> <meta property="og:image" content="https://www.aap.org/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-paperback-product.png" /> <meta property="og:description" content="" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback] | AAP" /> <meta name="twitter:description" content="In book 2 of this 3-part series, we are pleased to present an extensive collection of adolescent health articles that address contraception and sexuality e" /> <meta name="twitter:image" content="https://www.aap.org/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-paperback-product.png" /> <meta name="robots" content="" /> <meta name="description" content="In book 2 of this 3-part series, we are pleased to present an extensive collection of adolescent health articles that address contraception and sexuality e" /> <meta name="keywords" /> <meta name="generator" content="EPiServer"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="creation_date" content="Sat, 05 Aug 2023 06:18:56 GMT"> <meta name="last-modified" content="Fri, 07 Feb 2025 15:19:16 GMT"> <meta name="revised" content="Fri, 07 Feb 2025 15:19:16 GMT"> <meta http-equiv="Content-Language" content="English"> <meta name="publish_date" content="2023-07-10"> <meta name="publish_image" content="https://www.aap.org/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-paperback-product.png"> <meta name="vertex_type" content="product"> <meta name="vertex_retail_price" content="24.95"> <meta name="vertex_member_price" content="24.95"> <meta name="vertex_product_code" content="APC033"> <title>Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback] | shopAAP</title> <!-- CookiePro Cookies Consent Notice start for www.aap.org --> <script src="https://cookie-cdn.cookiepro.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="3e68ef05-4f6d-4004-898a-78b94ce0823e" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- CookiePro Cookies Consent Notice end for www.aap.org --> <!-- Google Tag Manager --> <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-N2RV28J'); </script> <!-- End Google Tag Manager --> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script type='text/javascript'> googletag.cmd.push(function() { var AAPorg = googletag.sizeMapping(). addSize([730, 0], [728, 90]) //desktop .build(); var gptAdSlots = []; gptAdSlots[0] =googletag.defineSlot('/22410314033/aap_leadert', [728, 90], 'div-gpt-ad-1633540336787-0').defineSizeMapping(AAPorg).addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); </script> <!-- Donate Widget Script --> <script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track'.split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o:function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a; t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=4;o.h=w.location.href;o.l=[];for(i=0;i<7;i++)o[l[i]]=o(l[i]);w[n]=o}})(window,document,'script','FundraiseUp','ADAHKUXY');</script> <!-- End Donate Widget Script --> <!-- Magnet Mail --> <script type="text/javascript" src="https://tracking.magnetmail.net/MagnetLeads.js"> </script> <script type="text/javascript"> com.realmagnet.MagnetLeads.init('hXdIOUQOZEy77inoSnCQWg'); com.realmagnet.MagnetLeads.visitPage(); </script> <!-- share this script --> <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=6480b01ae58f550012ea9faa&product=sop' async='async'></script> <!--New Relic --> <script type = "text/javascript" > ; window.NREUM || (NREUM = {}); NREUM.init = { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true } }; ; NREUM.loader_config = { accountID: "1613493", trustKey: "1613493", agentID: "342119000", licenseKey: "0c3b4b61ad", applicationID: "342118967" };; NREUM.info = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net", licenseKey: "0c3b4b61ad", applicationID: "342118967", sa: 1 };; /*! For license information please see nr-loader-spa-1.246.0.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.0", 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.0.min.js"), i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.246.0.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.0.PROD"] = self["webpackChunk:NRBA-1.246.0.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> <script> function mobileGlobalNav(elementName) { var icon = document.getElementsByClassName(elementName)[0]; icon.classList.toggle('active'); } </script> <meta charset="utf-8" /> <meta name="theme-color" content="#00247F"> <link href="/Bundles/css/main.css?v=8ad296c4d84118c9596d083f2c393e52b88cf947265f3189d9527ce00e9451d0" rel="stylesheet" /> <style> .preload-hide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #fff; z-index: 900; overflow: hidden; } </style> <script src='/Bundles/js/recommended-courses-bundle.js?v=c14132f570a0b529f454eb87d0c553923beb5cafaf7ad0fb719b8885534c7857'></script> </head> <body class="theme-aap " style="padding-top:0"> <div class="browser-message-container " data-browser-message-container> <div class="browser-alert ie"> <div class="browser-alert-inner"> <div class="browser-alert-title"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-warning" /> </svg> <p class="browser-alert-title-text"> Internet Explorer Alert </p> </div> <div class="browser-alert-content"> <p>It appears you are using Internet Explorer as your web browser. Please note, Internet Explorer is no longer up-to-date and can cause problems in how this website functions<br />This site functions best using the latest versions of any of the following browsers: <strong>Edge, Firefox, Chrome, Opera, or Safari</strong>. <br />You can find the latest versions of these browsers at <a href="https://browsehappy.com/" target="_blank" rel="noopener">https://browsehappy.com</a></p> </div> </div> <svg class="svg-icon" aria-hidden="true" focusable="false" data-browser-message-close="ie"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close" /> </svg> </div> </div> <header> </header> <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N2RV28J" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <header class="mobile-header print-hide"> <div class="mobile-header-top"> <div class="mobile-header-left"> <div class="mobile-header-top-trigger"> <svg class="mobile-header-top-trigger-open"> <use xlink:href="#mobile-menu-open"></use> </svg> <svg class="mobile-header-top-trigger-close"> <use xlink:href="#mobile-menu-close"></use> </svg> </div> <svg class="mobile-header-logo"> <use xlink:href="#Seal_Pos"></use> </svg> </div> <div class="utility-nav"> <div class="utility-nav-item utility-nav-search"> <svg class="utility-nav-search-icon"> <use xlink:href="#info-magnifying-glass"></use> </svg> <svg class="utility-nav-close"> <use xlink:href="#mobile-menu-close"></use> </svg> </div> <a class="utility-nav-item utility-nav-cart" data-cart-popup-button-mobile aria-expanded="false" href="javascript:;"> <svg> <use xlink:href="#icon-cart"></use> </svg> <div class="utility-nav-cart-amount hidden" data-cart-amount-mobile></div> </a> <div class="utility-nav-item utility-nav-account"> <svg id="mobile-my-account-link"> <use xlink:href="#icon-profile"></use> </svg> <svg id="mobile-my-account-close" style="display: none;"> <use xlink:href="#mobile-menu-close"></use> </svg> <div id="mobile-my-account-menu" class="utility-my-account-menu"> <a class="utility-my-account-menu-logout" href="/en/my-account/login/">Login</a> </div> </div> <div class="utility-nav-item utility-nav-explore explore-aap-mobile" explore-nav-mobile> <a href="javascript:;" class="explore-aap-mobile-trigger" explore-nav-button aria-controls="explore-aap-nav-mobile" aria-expanded="false"> <svg id="mobile-explore-aap-link" class="explore-icon"> <use xlink:href="#icon-explore"></use> </svg> <svg id="mobile-explore-close" class="close-icon"> <use xlink:href="#mobile-menu-close"></use> </svg> </a> <div id="explore-aap-nav-mobile" class="explore-aap-links-wrap" explore-nav-menu aria-hidden="true"> <div class="explore-aap-links-wrap-inner"> <ul class="explore-aap-links"> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://publications.aap.org/" target="_blank"> Publications </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/shopaap/" target=""> shopAAP </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/pedialink/" target=""> PediaLink </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://www.healthychildren.org/" target="_blank"> HealthyChildren.org </a> </li> </ul> </div> </div> </div> </div> </div> <div class="popup-cart popup-cart-mobile" data-cart-popup-mobile aria-hidden="true"> <div class="popup-cart-header"> <div class="popup-cart-header-content"><h3>Shopping cart</h3> <p data-cart-popup-item-number></p></div> <button class="unbutton" type="button" data-cart-popup-button-close-mobile><svg> <use xlink:href="#icon-close"></use> </svg></button> </div> <div class="popup-cart-warning popup-cart-warning-mobile" data-cart-validation-messages></div> <div class="popup-cart-wrapper" data-cart-popup-cart> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/"><svg><use xlink:href="#icon-cart"></use></svg>Go to Cart</a> <a class="button-primary" id="cart-popup-checkout-cta-mobile" href="/en/shopaap/cart/shipping/">Checkout</a> </div> <div class="popup-cart-item-list" data-cart-popup-items></div> <div class="popup-cart-more" data-cart-popup-overflow></div> <button type="button" class="unbutton button-link" data-cart-clear-cart-cta id="cart-popup-clear-cart-cta-mobile">Clear Cart</button> <div class="popup-cart-total"><p class="paragraph-large">Order Subtotal</p><p class="paragraph-large" data-cart-popup-subtotal></p></div> </div> <div data-cart-popup-empty class="popup-cart-empty active"> <svg> <use xlink:href="#icon-cart"></use> </svg> <p class="popup-cart-empty-title">Your cart is empty.</p> <p class="popup-cart-empty-subtitle">Looks like you haven't added anything to your cart.</p> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/">View Saved Items</a> <a class="button-primary" href="https://www.aap.org/en/shopaap">Go Shopping</a></div> </div> <div data-cart-popup-loading class="popup-cart-empty active"> <p>Loading</p> <div class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </div> </div> <div class="mobile-search-wrapper"> <div id="mobile-search-bar-component"></div> </div> <div class="mobile-global-nav"> <ul class="mobile-global-nav-menu unlisted" id="main-nav-menu-mobile"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('aaphome')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/"> News </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/membership-application/join-aap/"> Membership </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/career-resources/"> Career Resources </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/research/"> Research </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/philanthropy/"> Philanthropy </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/about-the-aap/"> About the AAP </a> </li> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('policy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://doi.org/10.1542/peds.2024-069987"> Recommended Childhood and Adolescent Immunization Schedule: United States, 2025: Policy Statement </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://publications.aap.org/aapnews/news/30742"> CDC Releases 2025 Immunization Schedules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://www.healthychildren.org/English/ages-stages/teen/substance-abuse/Pages/dangers-of-prescription-drug-misuse-tips-to-keep-your-teen-safe.aspx"> Dangers of Prescription Drug Misuse: Tips to Keep Your Teen Safe </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/news-releases-from-the-aap/"> News Releases </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://pediatrics.aappublications.org/collection"> Policy Collections </a> </li> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('advocacy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/the-state-of-children-in-2020/"> The State of Children in 2020 </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/healthy-children/"> Healthy Children </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/secure-families/"> Secure Families </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/strong-communities/"> Strong Communities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/a-leading-nation-for-youth/"> A Leading Nation for Youth </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/transition-plan-2020/"> Transition Plan: Advancing Child Health in the Biden-Harris Administration </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/health-care-access-coverage/"> Health Care Access & Coverage </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/immigrant-child-health/"> Immigrant Child Health </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/gun-violence-prevention/"> Gun Violence Prevention </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/tobacco-e-cigarettes/"> Tobacco & E-Cigarettes </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/vaccines/"> Vaccines </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/child-nutrition/"> Child Nutrition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/assault-weapons-bans/"> Assault Weapons Bans </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/childhood-immunizations/"> Childhood Immunizations </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/flavored-e-cigarette-and-tobacco-products/"> E-Cigarette and Tobacco Products </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/childrens-health-care-coverage-fact-sheets/"> Children’s Health Care Coverage Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/opioid-fact-sheets/"> Opioid Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/advocacy-training-modules/"> Advocacy Training Modules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/my-account/login/Authenticate?returnurl=/globalassets/documents/academic-and-subspecialty-advocacy-washington-report_march-2020.pdf"> Subspecialty Advocacy Report </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/aap-advocacy-internship-program/"> AAP Washington Office Internship </a> </li> </ul> </li> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('pedialink')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/online-courses/"> Online Courses </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/live-activities/"> Live and Virtual Activities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://aapexperience.org/"> National Conference and Exhibition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/self-assessments/"> Prep®- Pediatric Review and Education Programs </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/publications/journals/"> Journals and Publications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/pedialink/neonatal-resuscitation-program/"> NRP </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://login.healthstream.com/hstmsts/login.aspx"> NRP LMS Login </a> </li> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('community')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-committees/"> AAP Committees </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-councils/"> AAP Councils </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-sections/"> AAP Sections </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://collaborate.aap.org/AAP-Volunteer-Network/Pages/Volunteer-Board-National.aspx"> Volunteer Network </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/join-your-chapter/"> Join a Chapter </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/chapter-websites/"> Chapter Websites </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/members/home/directories-and-rosters/chapter-district-leadership-rosters/chapter-and-district-executive-directors/"> Chapter Executive Directors </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/district-map/"> District Map </a> </li> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="_blank" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap main-nav-menu-item-mobile-only "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> </div> </header> <header class="global-header "> <div class="global-header-top"> <div class="main-nav print-hide" id="main-nav"> <div class="main-nav-wrapper" id="main-nav-wrapper"> <div class="main-nav-left-wrapper"> <ul class="main-nav-menu unlisted" id="main-nav-menu"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('aaphome')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/"> News </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/membership-application/join-aap/"> Membership </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/career-resources/"> Career Resources </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/research/"> Research </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/philanthropy/"> Philanthropy </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/about-the-aap/"> About the AAP </a> </li> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('policy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://doi.org/10.1542/peds.2024-069987"> Recommended Childhood and Adolescent Immunization Schedule: United States, 2025: Policy Statement </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://publications.aap.org/aapnews/news/30742"> CDC Releases 2025 Immunization Schedules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://www.healthychildren.org/English/ages-stages/teen/substance-abuse/Pages/dangers-of-prescription-drug-misuse-tips-to-keep-your-teen-safe.aspx"> Dangers of Prescription Drug Misuse: Tips to Keep Your Teen Safe </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/news-releases-from-the-aap/"> News Releases </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://pediatrics.aappublications.org/collection"> Policy Collections </a> </li> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('advocacy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/the-state-of-children-in-2020/"> The State of Children in 2020 </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/healthy-children/"> Healthy Children </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/secure-families/"> Secure Families </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/strong-communities/"> Strong Communities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/a-leading-nation-for-youth/"> A Leading Nation for Youth </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/transition-plan-2020/"> Transition Plan: Advancing Child Health in the Biden-Harris Administration </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/health-care-access-coverage/"> Health Care Access & Coverage </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/immigrant-child-health/"> Immigrant Child Health </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/gun-violence-prevention/"> Gun Violence Prevention </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/tobacco-e-cigarettes/"> Tobacco & E-Cigarettes </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/vaccines/"> Vaccines </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/child-nutrition/"> Child Nutrition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/assault-weapons-bans/"> Assault Weapons Bans </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/childhood-immunizations/"> Childhood Immunizations </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/flavored-e-cigarette-and-tobacco-products/"> E-Cigarette and Tobacco Products </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/childrens-health-care-coverage-fact-sheets/"> Children’s Health Care Coverage Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/opioid-fact-sheets/"> Opioid Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/advocacy-training-modules/"> Advocacy Training Modules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/my-account/login/Authenticate?returnurl=/globalassets/documents/academic-and-subspecialty-advocacy-washington-report_march-2020.pdf"> Subspecialty Advocacy Report </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/aap-advocacy-internship-program/"> AAP Washington Office Internship </a> </li> </ul> </li> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('pedialink')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/online-courses/"> Online Courses </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/live-activities/"> Live and Virtual Activities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://aapexperience.org/"> National Conference and Exhibition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/self-assessments/"> Prep®- Pediatric Review and Education Programs </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/publications/journals/"> Journals and Publications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/pedialink/neonatal-resuscitation-program/"> NRP </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://login.healthstream.com/hstmsts/login.aspx"> NRP LMS Login </a> </li> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('community')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-committees/"> AAP Committees </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-councils/"> AAP Councils </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-sections/"> AAP Sections </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://collaborate.aap.org/AAP-Volunteer-Network/Pages/Volunteer-Board-National.aspx"> Volunteer Network </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/join-your-chapter/"> Join a Chapter </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/chapter-websites/"> Chapter Websites </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/members/home/directories-and-rosters/chapter-district-leadership-rosters/chapter-and-district-executive-directors/"> Chapter Executive Directors </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/district-map/"> District Map </a> </li> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="_blank" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap main-nav-menu-item-mobile-only "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <div class="main-nav-dropdown" id="main-nav-dropdown"> <div class="main-nav-dropdown-button" id="main-nav-dropdown-button"> <span>More</span> <svg> <use xlink:href="#arrow-down"></use> </svg> </div> <ul class="main-nav-dropdown-menu unlisted" id="main-nav-dropdown-menu"></ul> </div> </div> <ul class="main-nav-menu unlisted" id="main-nav-menu-utility"> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart " id="li-shop-link"> <a href="https://www.aap.org/en/shopaap">shopAAP</a> </li> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart" id="li-shop-cart"> <a class="utility-nav-item utility-nav-cart" data-cart-popup-button aria-expanded="false" href="javascript:;"> <svg> <use xlink:href="#icon-cart"></use> </svg> <div class="utility-nav-cart-amount hidden" data-cart-amount></div> </a> <div class="popup-cart" data-cart-popup aria-hidden="true"> <div class="popup-cart-header"> <div class="popup-cart-header-content"> <h3>Shopping cart</h3> <p data-cart-popup-item-number></p> </div> <button class="unbutton" type="button" data-cart-popup-button-close> <svg> <use xlink:href="#icon-close"></use> </svg> </button> </div> <div class="popup-cart-warning" data-cart-validation-messages></div> <div class="popup-cart-wrapper" data-cart-popup-cart> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/"><svg><use xlink:href="#icon-cart"></use></svg>Go to Cart</a> <a class="button-primary" id="cart-popup-checkout-cta" href="/en/shopaap/cart/shipping/">Checkout</a> </div> <div class="popup-cart-item-list" data-cart-popup-items></div> <div class="popup-cart-more" data-cart-popup-overflow></div> <button type="button" class="unbutton button-link" data-cart-clear-cart-cta id="cart-popup-clear-cart-cta">Clear Cart</button> <div class="popup-cart-total"><p class="paragraph-large">Order Subtotal</p><p class="paragraph-large" data-cart-popup-subtotal></p></div> </div> <div data-cart-popup-empty class="popup-cart-empty active"> <svg> <use xlink:href="#icon-cart"></use> </svg> <p class="popup-cart-empty-title">Your cart is empty.</p> <p class="popup-cart-empty-subtitle">Looks like you haven't added anything to your cart.</p> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/">View Saved Items</a> <a class="button-primary" href="https://www.aap.org/en/shopaap">Go Shopping</a> </div> </div> <div data-cart-popup-loading class="popup-cart-empty active"> <p>Loading</p> <div class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </div> </div> </li> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart" id="li-utilitynav-create-account-link"> <a href="/en/my-account/create-account-landing-page/">Create Account</a> </li> <li class="main-nav-menu-item main-nav-menu-item-right-bullet utility-nav-item utility-nav-cart" id="li-utilitynav-login-link"> <a href="/en/my-account/login/?ReturnUrl=https://www.aap.org/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-paperback/"> Login </a> </li> <!--Explore AAP Button --> <div class="explore-aap-wrap" explore-nav> <a href="javascript:;" class="explore-aap-trigger" explore-nav-button aria-controls="explore-aap-nav" aria-expanded="false"> <span class="explore-icon"> <svg class="icon-explore"><use xlink:href="#icon-explore"></use></svg><span class="explore-aap-text">Explore AAP</span> </span> <span class="explore-aap-close"> <i class="icon-general-close"> <span class="screen-reader-only">Close</span> </i> </span> </a> <div id="explore-aap-nav" class="explore-aap-links-wrap" explore-nav-menu aria-hidden="true"> <div class="explore-aap-links-wrap-inner"> <ul class="explore-aap-links"> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://publications.aap.org/" target="_blank"> Publications </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/shopaap/" target=""> shopAAP </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/pedialink/" target=""> PediaLink </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://www.healthychildren.org/" target="_blank"> HealthyChildren.org </a> </li> </ul> </div> </div> </div> </ul> </div> </div> <div class="global-search-wrapper"> <a href="https://www.aap.org"> <div class="global-logo-aap"> <svg class="icon icon-AAP-Logo_1-Line_Black"> <use xlink:href="#icon-AAP-Logo_2-Line_Black"></use> </svg> </div> </a> <div id="search-bar-component"></div> </div> </div> <div class="global-header-contextual-nav shop-header-contextual-nav"> <div class="global-header-wrapper"> <a class="global-header-contextual-nav-current" href="/link/b5c1d88acc2342f081929757e70cfcfc.aspx"> <img class="global-header-contextual-nav-logo" alt="shopAAP" src="/globalassets/shopaap_logo-1.png" /> </a> <ul class="global-header-contextual-nav-links unlisted"> <li class="main-nav-menu-item shopbyproduct " onmouseenter="onMegaNavHover('shopbyproduct')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Shop By Product </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Shop By Product</div> <div class="description">Browse AAP product collections by type and learning format.</div> <div class="cta"> <a href="/en/shopaap/shop-by-product/"> Shop By Product </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/shopaap/shop-by-product/books/" title="Books">Books</a> </li> <li> <a href="https://publications.aap.org/pages/aap-library/" target="_blank" title="Institutional Licensing">Institutional Licensing</a> </li> <li> <a href="/en/shopaap/shop-by-product/journals/" title="Journals">Journals</a> </li> <li> <a href="/en/shopaap/shop-by-product/live-activities/" title="Live & Virtual Education">Live & Virtual Education</a> </li> <li> <a href="https://aapexperience.org/" target="_blank" title="National Conference & Exhibition">National Conference & Exhibition</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/shopaap/shop-by-product/parenting-resources/" title="Parenting Resources">Parenting Resources</a> </li> <li> <a href="/en/shopaap/shop-by-product/patient-education/" title="Patient Education">Patient Education</a> </li> <li> <a href="/en/shopaap/shop-by-product/online-courses/" title="PediaLink® & EQIPP Courses">PediaLink® & EQIPP Courses</a> </li> <li> <a href="/en/shopaap/shop-by-product/self-assessments/" title="PREP® Self Assessments">PREP® Self Assessments</a> </li> <li> <a href="/en/shopaap/shop-by-product/solutions-toolkits/" title="Solutions & Toolkits">Solutions & Toolkits</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item shopbytopic " onmouseenter="onMegaNavHover('shopbytopic')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Shop By Topic </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Shop By Topic</div> <div class="description">Browse AAP product collections by pediatrics-focused topic.</div> <div class="cta"> <a href="/en/shopaap/shop-by-topic/"> Shop By Topic </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/shopaap/shop-by-topic/bright-futures/" title="Bright Futures">Bright Futures</a> </li> <li> <a href="/en/shopaap/shop-by-topic/coding/" title="Coding">Coding</a> </li> <li> <a href="/en/shopaap/shop-by-topic/hospital-medicine/" title="Hospital Medicine">Hospital Medicine</a> </li> <li> <a href="/en/shopaap/shop-by-topic/infectious-disease-resources/" title="Infectious Disease Resources">Infectious Disease Resources</a> </li> <li> <a href="/en/shopaap/shop-by-topic/mental-health-resources/" title="Mental Health">Mental Health</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/shopaap/shop-by-topic/Neonatal-Perinatal/" title="Neonatal-Perinatal">Neonatal-Perinatal</a> </li> <li> <a href="/en/shopaap/shop-by-topic/neonatal-resuscitation-program/" title="Neonatal Resuscitation Program® (NRP®)">Neonatal Resuscitation Program® (NRP®)</a> </li> <li> <a href="/en/shopaap/shop-by-topic/nutrition/" title="Nutrition">Nutrition</a> </li> <li> <a href="/en/shopaap/shop-by-topic/pediatric-collections/" title="Pediatric Collections">Pediatric Collections</a> </li> <li> <a href="/en/shopaap/shop-by-topic/school-health-and-child-care/" title="School Health and Child Care">School Health and Child Care</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item specialoffers "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/special-offers/" target="" data-testid="link-specialoffers"> Special Offers </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item membership " onmouseenter="onMegaNavHover('membership')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Membership </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Membership</div> <div class="description">There’s a place for you in the Academy no matter where you are in your career. Learn more about all our membership categories.</div> <div class="cta"> <a href="/en/membership-application/join-aap/"> Membership </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title">Be a Part of the AAP</div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/membership-application/join-aap/" title="Join the AAP">Join the AAP</a> </li> <li> <a href="/en/membership-application/join-aap/join-the-aap-enterprise-membership/">Join the AAP – Enterprise Membership</a> </li> <li> <a href="/en/members/home/" title="Exclusive for Members">Exclusive for Members</a> </li> <li> <a href="/en/membership-application/faq/" title="Membership FAQs">Membership FAQs</a> </li> <li> <a href="/en/members/home/directories-and-rosters/" title="AAP Membership Directory">AAP Membership Directory</a> </li> <li> <a href="/en/members/home/member-advantage-programs/" title="Member Advantage Programs">Member Advantage Programs</a> </li> <li> <a href="/en/shopaap/shop-by-product/getredbook/?utm_source=aap-ecommerce&utm_medium=link&utm_campaign=getredbook-membership-dropdown-menu&utm_content=2024-04-09" title="Red Book Member Benefit">Red Book Member Benefit</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/my-account/my-membership/" target="_blank" title="My Membership">My Membership</a> </li> <li> <a href="/en/community/aap-councils/" title="Join a Council">Join a Council</a> </li> <li> <a href="/en/community/aap-sections/" title="Join a Section">Join a Section</a> </li> <li> <a href="/en/community/join-your-chapter/" title="Join a Chapter">Join a Chapter</a> </li> <li> <a href="/en/members/home/national-aap-election-center/" title="National Election Center">National Election Center</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item myaccount " onmouseenter="onMegaNavHover('myaccount')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > My Account </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">My Account</div> <div class="description">Log in and access your online content, manage your learning activities, review your membership and your subscriptions, and much more.</div> <div class="cta"> <a href="/en/my-account/"> My Account </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/my-account/" title="Access your account dashboard.">Account Hub</a> </li> <li> <a href="/en/my-account/products-subscriptions/library/" title=" Access your subscriptions, courses, e-books and other online content">Access Your Library</a> </li> <li> <a href="/en/my-account/products-subscriptions/order-history/" target="_top" title="See your purchase history, print receipts, and initiate returns. ">Order History</a> </li> <li> <a href="/en/my-account/education/" title="Keep track of your learning activities, claim credits, and print transcripts.">Education Activities & Credit Management</a> </li> <li> <a href="/en/my-account/my-membership/" title="Access membership information, view benefits, and manage groups including sections, councils, and Chapters.">My Membership</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/my-account/products-subscriptions/product-activation-center/" title="Have an activation code? Activate products here.">Product Activation Center</a> </li> <li> <a href="/en/my-account/profile/" title="Edit Profile, Address and Contact Information">Edit Profile, Address and Contact Information</a> </li> <li> <a href="/en/my-account/products-subscriptions/library/" title="Browse your subscription library, and check for your upcoming subscription renewals.">View & Renew Your Subscriptions</a> </li> <li> <a href="/en/my-account/products-subscriptions/order-history/return-form/" title="Have an issue with an order? Submit a form to return or report missing items.">Return & Report Missing Items</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item help " onmouseenter="onMegaNavHover('help')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Help </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Help</div> <div class="description">Instructions to help you find answers to commonly-asked questions.</div> <div class="cta"> <a href="/en/support-center/"> Support Center </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/support-center/shopaap-faq/" target="_blank">shopAAP FAQ</a> </li> <li> <a href="/en/support-center/" target="_blank" title="Find answers to commonly-asked account and technical support questions.">Support Center</a> </li> <li> <a href="/en/my-account/my-account-faq/" title="Account FAQ">Account FAQ</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/membership-application/faq/" target="_blank" title="Membership FAQ">Membership FAQ</a> </li> <li> <a href="~/link/7d46797ea60a423d9e1f714a8a2c4058.aspx">Neonatal Resuscitation Program (NRP) FAQ</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item contact " onmouseenter="onMegaNavHover('contact')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Contact </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Contact</div> <div class="description">Reach out to Member and Customer Care when you need assistance.</div> <div class="cta"> <a href="/en/support-center/contact-support-center/"> Contact Us </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-wysiwyg"> <p><strong>Member and Customer Care</strong><br />866-843-2271 Toll Free US & Canada<br />630-626-6000 Outside US & Canada</p> <p><strong>Hours of Operation</strong><br />7:30AM-5:00PM CT Monday thru Friday</p> <p><strong><a href="/en/support-center/" target="_blank" rel="noopener">Visit the AAP Support center</a></strong></p> </div> </div> </div> </div> </div> </li> </ul> </div> </div> <div class="shop-header-search-bar-component" id="shop-search-bar-component"></div> <div class="global-header-contextual-mobile-nav shop-header-contextual-mobile-nav" > <div class="global-header-contextual-mobile-wrapper" data-horizontal-scroll-container> <nav class="sub-nav"> <ul class="global-header-contextual-mobile-nav-links unlisted tabbed sub-nav-contents" data-horizontal-scroll-content> <li class="main-nav-menu-item shopbyproduct"> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/shop-by-product/" > Shop By Product </a> </div> </li> <li class="main-nav-menu-item shopbytopic"> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/shop-by-topic/" > Shop By Topic </a> </div> </li> <li class="main-nav-menu-item specialoffers"> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/special-offers/" target="" data-testid="link-specialoffers"> Special Offers </a> </div> </li> <li class="main-nav-menu-item membership"> <div class="main-nav-menu-item-top"> <a class="" href="/en/membership-application/join-aap/" > Membership </a> </div> </li> <li class="main-nav-menu-item myaccount"> <div class="main-nav-menu-item-top"> <a class="" href="/en/my-account/" > My Account </a> </div> </li> <li class="main-nav-menu-item help"> <div class="main-nav-menu-item-top"> <a class="" href="/en/support-center/" > Help </a> </div> </li> <li class="main-nav-menu-item contact"> <div class="main-nav-menu-item-top"> <a class="" href="/en/support-center/contact-support-center/" > Contact </a> </div> </li> </ul> </nav> <button id="subNavAdvancerLeft" class="sub-nav-advancer sub-nav-advancer-left" type="button"> <svg class="sub-nav-advancer-icon sub-nav-advancer-icon-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 551 1024"><path d="M445.44 38.183L-2.53 512l447.97 473.817 85.857-81.173-409.6-433.23v81.172l409.6-433.23L445.44 38.18z"></path></svg> </button> <button id="subNavAdvancerRight" class="sub-nav-advancer sub-nav-advancer-right" type="button"> <svg class="sub-nav-advancer-icon sub-nav-advancer-icon-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 551 1024"><path d="M105.56 985.817L553.53 512 105.56 38.183l-85.857 81.173 409.6 433.23v-81.172l-409.6 433.23 85.856 81.174z"></path></svg> </button> </div> </div> <script type="text/javascript"> // Get all links inside of the mega-nav and add onclick listeners var links = document.querySelectorAll(".mega-nav-inner * a"); if (links && links.length > 0) { links.forEach(function (link, index, list) { link.addEventListener("click", () => onMegaNavLinkClick(link)); }); } // Send tag for clicking mega-nav links onMegaNavLinkClick = (link) => { var dataLayer = window.dataLayer || []; const event = "MegaNavLinkClickEvent"; const tag = { event, megaNavLinkName: link.innerText, magaNavLinkUrl: link.href }; console.log(`Sending tag to data layer: ${JSON.stringify(tag)}`); dataLayer.push(tag); } var hoverTimer; var waitTime = 500; // Using timer to weed out momentary/incidental mouse enter events onMegaNavHover = (name) => { hoverTimer = setTimeout(function() { var dataLayer = window.dataLayer || []; const event = "MegaNavHoverEvent"; const tag = { event, megaNavItem: name, }; console.log(`Sending tag to data layer: ${JSON.stringify(tag)}`); dataLayer.push(tag); }, waitTime); } onMegaNavLeave = () => { clearTimeout(hoverTimer); } </script> <script> // add view_shop_page event to data layer var dataLayer = window.dataLayer || []; dataLayer.push({ 'event': 'view_shop_page', 'url': '/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-paperback/' }); </script> </header> <div class="preload-hide"></div> <div class="container main-body " id="main-body"> <div class="pdp-books product-detail-page"> <div class="breadcrumbs"> <a href="/Adolescent-Health">Adolescent Health</a> <span class="breadcrumbs-divider"> / </span> <span class="breadcrumb-page-name">Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback]</span> </div><div class="pdp-cart-error"> <div data-add-cart-error class="alert-message alert-message-error closed" role="dialog"> <div class="alert-message-icon"> <svg> <use xlink:href="#icon-error"></use> </svg> </div> <div class="alert-message-text" data-add-cart-error-text> Add to cart failed. Please try again. If problem continues please Contact Member and Customer Care at 866-843-2271 or mcc@aap.org. </div> <div class="alert-message-close" onclick="javascript:document.querySelector('[data-add-cart-error]').classList.add('closed')"> <svg> <use xlink:href="#icon-close"></use> </svg> </div> </div> </div> <div class="pdp-intro"> <div class="pdp-intro-feature"> <div class="pdp-feature" data-product-detail-feature data-unique-id=""> <div class="pdp-feature-thumbnails" pdp-feature-pagination> <div class="pdp-feature-thumb" data-thumb-id=""> <img class="pdp-feature-thumbnail" src="/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-paperback-lightbox.png" alt="" data-thumbnail-id="657985c4-e912-4523-9c76-6892b0269eb5" /> </div> </div> <div class="swiper-container" data-product-swiper data-total-slides="1"> <div class="pdp-feature-wrap swiper-wrapper"> <div class="pdp-feature-wrap-img swiper-slide"> <img class="pdp-feature-img" src="/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-paperback-lightbox.png" alt="" data-thumbnail-id="657985c4-e912-4523-9c76-6892b0269eb5" data-is-featured-video="False" data-is-featured-image="True" imagesharp-width="464" imagesharp-height="567" imagesharp-rmode="ResizeMode.Pad" imagesharp-rcolor="ffffff" /> </div> </div> <div class="pdp-feature-navigation"> <button type="button" class="adage-gallery-btn-prev swiper-button-prev"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-next" /> </svg> <span class="visually-hidden">Go to previous slide.</span> </button> <div class="pdp-feature-bullets"></div> <button type="button" class="adage-gallery-btn-next swiper-button-next"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-next" /> </svg> <span class="visually-hidden">Go to next slide.</span> </button> </div> <div class="pdp-feature-links-wrap"> <div class="pdp-feature-buttons"> </div> <div class="pdp-feature-links"> <a class="pdp-feature-link" href="https://publications.aap.org/aapbooks/book/742/">Take a Look Inside!</a> </div> </div> </div> </div> </div> <div class="pdp-intro-details"> <h1>Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback]</h1> <div class="alert-info alert-message pdp-alert-message alert-message-info"> <div class="alert-message-icon"> <svg> <use xlink:href="#icon-information"></use> </svg> </div> <div class="alert-message-text"> <p><a href="https://www.aap.org/Pediatric-Collections-Adolescent-Health-Care-Part-2-Reproductive-Health-Paperback-and-eBook-Package">Buy Print Book and Save 50% on eBook with this exclusive package offer! Click here to order.</a></p> </div> </div> <div data-intersection-observer="info-cart" class="pdp-pricing"> <div class="pdp-format"> <p class="paragraph-large">Format</p> <div class="pdp-pricing-buttons"> <a href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-ebook/"> <button class="button-pdp button-secondary" type="button">eBook</button> </a> <a href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-paperback/"> <button class="button-pdp button-primary" selected="selected" type="button">Paperback</button> </a> </div> </div> <div> <div class="price"> <div class="base-price"> <span class="price-title">Price:</span> <span class="price-number">$24.95</span> </div> <div class="member-price"> <span class="price-title">Member Price:</span> <span class="price-number">$24.95</span> </div> </div> <p class="price-subtitle"><a class="log-in" href="/en/my-account/login/?returnUrl=https://www.aap.org/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-paperback/"> Log in to see pricing </a></p> </div> <div id="amount-container" data-testid="pdp-counter-container" class="quantity-counter" disable-button="submit-button"> <input type="number" name="Amount" id="amount" data-testid="" class="form-element-input quantity-counter-input form-element-input-spinner" step="1" max="100" min="0" value="1" ,="" disable-button="submit-button" required="" onkeypress="return event.charCode >= 48 && event.charCode <= 57"> <label for="amount" class="form-element-label"> <span class="form-element-label-main">Quantity</span> </label> <button type="button" class="spinner-arrow spinner-arrow-plus"> <span class="">add item</span> </button> <button type="button" class="spinner-arrow spinner-arrow-minus"> <span class="">remove item</span> </button> <div class="form-element-error"> <svg class="form-element-error-icon"> <use xlink:href="#icon-error"></use> </svg> <div class="form-element-error-text" id="Amount-error" data-testid="-error"> The amount must be greater than 0 </div> </div> </div> <button type="button" class="button-primary pdp-pricing-cart-button button-loader " id="addToCartCta" data-add-to-cart-price="24.95" data-add-to-cart-title="Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback]" data-add-to-cart-category="Adolescent HealthJournals" data-add-to-cart-key="eeabe286-1fa6-485e-b11e-2441286a414e" > <span>Add to Cart</span><div data-add-cart-load class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </button> </div> </div> </div> <div class="pdp-books-info" data-intersection-observer="pdp-info"> <div class="row pdp-product-information" data-accordion-list="pdp-productinformation"> <div class="pdp-accordion-header"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-pdp-productinformation" aria-expanded="true" data-epi-property-name="Title"> Product Information </button> </div> <div class="pdp-accordion-panel" aria-hidden="false" id="accordion-panel-pdp-productinformation"> <div class="pdp-accordion-panel-content" data-accordion-content-id="accordion-panel-pdp-productinformation" data-epi-property-name="AccordionContent"> <div class="col-sm-12 col-xxl-6"> <h3 class="h4-styled">Description</h3> <p>In book 2 of this 3-part series, we are pleased to present an extensive collection of adolescent health articles that address contraception and sexuality education, counseling the pregnant adolescent patient, confidential care when considering abortion, HPV trends, providing care after sexual assault. Types of reproductive health services can vary based on race and ethnicity. Help close care gaps by providing essential care to students conducive to their circumstances, comfort levels, and sense of empowerment.</p> <p>SAVE with volume discounts!*<br />10-49 copies – Price $44 each Member Price: $34 (Save $5 on each copy)<br />50-99 copies – Price $39 each Member Price: $29 (Save $10 on each copy)<br />100-250 copies – Price $34 each Member Price: $24 (Save $15 on each copy)</p> <p>For quantities of 250+, call for pricing: 866/843-2271<br /><br />* Other promotional discounts and promo codes do not apply. Volume discounts are available for print books only and are taken from the retail price.</p> </div> <div class="col-sm-12 col-xxl-6"> <h3 class="h4-styled">Details</h3> <ul> <li><span class="bold">ISBN-13:</span> 978-1-61002-706-9</li> <li><span class="bold">Product Code:</span> APC033</li> <li><span class="bold">Publication Date:</span> July 10, 2023</li> <li><span class="bold">Format:</span> Paperback</li> <li><span class="bold">Pages:</span> 125</li> <li><span class="bold">Availability:</span> In Stock</li> </ul> </div> </div> </div> </div> <div class="row pdp-editors" data-accordion-list="pdp-editors"> <div class="pdp-accordion-header"> <button class="adage-accordion-trigger" type="button" aria-controls="accordion-panel-pdp-editors" aria-expanded="true" data-epi-property-name="Title"> About the Authors </button> </div> <div class="pdp-accordion-panel" aria-hidden="false" id="accordion-panel-pdp-editors"> <div class="pdp-accordion-panel-content" data-accordion-content-id="accordion-panel-pdp-editors" data-epi-property-name="AccordionContent"> <div class="pdp-editors-editor"> <div class="pdp-editors-img-wrap"><img class="pdp-editors-img" src="/globalassets/catalogs/imagefile/d/e/della-robbia.jpg" alt="" /></div> <div class="pdp-editors-info"> <p class="pdp-editors-title">Editor</p> <p class="pdp-editors-name">American Academy of Pediatrics </p> <p><p>The American Academy of Pediatrics is an organization of 67,000 primary care pediatricians, pediatric medical subspecialists and pediatric surgical specialists dedicated to the health, safety and well-being of infants, children, adolescents and young adults. The AAP is the largest pediatric publisher in the world, with a diverse list of resources that includes essential clinical and practice management titles and award-winning books for parents. </p></p> </div> </div> </div> </div> </div> <section class="adage-block"> <div class="shop-carousel"> <div class="shop-carousel-container swiper-container swiper" data-product-carousel data-total-slides=5 data-unique-id="4006related-items" data-total-slides=""> <div class="shop-carousel-header"> <div class="shop-carousel-header-wrap"> <h2 class="adage-block-heading shop-carousel-title" data-product-carousel-title > Related Items </h2> </div> <div class="shop-carousel-button-wrap"> <button type="button" class="swiper-button-prev"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-next" /> </svg> <span class="visually-hidden">Go to previous slide.</span> </button> <button type="button" class="swiper-button-next"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-next" /> </svg> <span class="visually-hidden">Go to next slide.</span> </button> </div> </div> <div class="swiper-wrapper"> <div class="data-wrapper swiper-slide" data-product-carousel-item data-product-carousel-item-title='Pediatric Collections: Adolescent Health Care Part 1: Promoting Wellness [eBook]' data-product-carousel-item-id="5752dd59-4e96-427d-bd20-b2d7faef97fe" data-product-carousel-item-price="24.95" data-product-carousel-item-category="JournalsAdolescent Health"> <div class="carousel-image" carousel-image> <a class="carousel-link" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-1-promoting-wellness-ebook/" target="_self"> <img src="/globalassets/catalogs/imagefile/a/p/apc032-adolescent-health-care-part-1-ebook-product.png" class="carousel-image" /> </a> </div> <div class="medium"> <ul class="unlisted"> <li class="tag-carousel">EBOOK</li> </ul> </div> <div class="title-click"> <a class="carousel-title" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-1-promoting-wellness-ebook/" target="_self" onclick="sendSelectItemAnalyticsScriptToGTM(this, '5752dd59-4e96-427d-bd20-b2d7faef97fe', 'Pediatric Collections: Adolescent Health Care Part 1: Promoting Wellness [eBook]', '24.95', 'JournalsAdolescent Health', '4006related-items', 'Related Items')"> Pediatric Collections: Adolescent Health Care Part 1: Promoting Wellness [eBook] </a> </div> <div class="publish-dates"> <p class="publish-date">Published: 2023</p> </div> <div class="retail-price"> <span class="priceLabel">Price:</span> <span class="price cash">$24.95</span> </div> <div class="member-price"> <span class="priceLabel">Member Price:</span> <span class="price cash">$24.95</span> </div> <div style="display: none" class="id-carousel-js" id-carousel-js"></div> </div> <div class="data-wrapper swiper-slide" data-product-carousel-item data-product-carousel-item-title='Pediatric Collections: Adolescent Health Care Part 1: Promoting Wellness [Paperback]' data-product-carousel-item-id="e60c37e2-7545-4d89-8844-f358ef377d91" data-product-carousel-item-price="24.95" data-product-carousel-item-category="JournalsAdolescent Health"> <div class="carousel-image" carousel-image> <a class="carousel-link" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-1-promoting-wellness-paperback/" target="_self"> <img src="/globalassets/catalogs/imagefile/a/p/apc032-adolescent-health-care-part-1-paperback-product.png" class="carousel-image" /> </a> </div> <div class="medium"> <ul class="unlisted"> <li class="tag-carousel">PAPERBACK</li> </ul> </div> <div class="title-click"> <a class="carousel-title" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-1-promoting-wellness-paperback/" target="_self" onclick="sendSelectItemAnalyticsScriptToGTM(this, 'e60c37e2-7545-4d89-8844-f358ef377d91', 'Pediatric Collections: Adolescent Health Care Part 1: Promoting Wellness [Paperback]', '24.95', 'JournalsAdolescent Health', '4006related-items', 'Related Items')"> Pediatric Collections: Adolescent Health Care Part 1: Promoting Wellness [Paperback] </a> </div> <div class="publish-dates"> <p class="publish-date">Published: 2023</p> </div> <div class="retail-price"> <span class="priceLabel">Price:</span> <span class="price cash">$24.95</span> </div> <div class="member-price"> <span class="priceLabel">Member Price:</span> <span class="price cash">$24.95</span> </div> <div style="display: none" class="id-carousel-js" id-carousel-js"></div> </div> <div class="data-wrapper swiper-slide" data-product-carousel-item data-product-carousel-item-title='Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [eBook]' data-product-carousel-item-id="18fbe898-13c3-4f1f-a4bc-74cdd4ef2641" data-product-carousel-item-price="24.95" data-product-carousel-item-category="Adolescent HealthJournals"> <div class="carousel-image" carousel-image> <a class="carousel-link" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-ebook/" target="_self"> <img src="/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-ebook-product.png" class="carousel-image" /> </a> </div> <div class="medium"> <ul class="unlisted"> <li class="tag-carousel">EBOOK</li> </ul> </div> <div class="title-click"> <a class="carousel-title" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-ebook/" target="_self" onclick="sendSelectItemAnalyticsScriptToGTM(this, '18fbe898-13c3-4f1f-a4bc-74cdd4ef2641', 'Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [eBook]', '24.95', 'Adolescent HealthJournals', '4006related-items', 'Related Items')"> Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [eBook] </a> </div> <div class="publish-dates"> <p class="publish-date"></p> </div> <div class="retail-price"> <span class="priceLabel">Price:</span> <span class="price cash">$24.95</span> </div> <div class="member-price"> <span class="priceLabel">Member Price:</span> <span class="price cash">$24.95</span> </div> <div style="display: none" class="id-carousel-js" id-carousel-js"></div> </div> <div class="data-wrapper swiper-slide" data-product-carousel-item data-product-carousel-item-title='Pediatric Collections: Adolescent Health Care Part 3: Transition of Care [Paperback]' data-product-carousel-item-id="dd8e7a2b-ae8f-4b8b-8608-e8e71d710d9a" data-product-carousel-item-price="24.95" data-product-carousel-item-category="Adolescent HealthJournals"> <div class="carousel-image" carousel-image> <a class="carousel-link" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-3-transition-of-care-paperback/" target="_self"> <img src="/globalassets/catalogs/imagefile/a/p/apc034-adolescent-health-care-part-3-paperback-product.png" class="carousel-image" /> </a> </div> <div class="medium"> <ul class="unlisted"> <li class="tag-carousel">PAPERBACK</li> </ul> </div> <div class="title-click"> <a class="carousel-title" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-3-transition-of-care-paperback/" target="_self" onclick="sendSelectItemAnalyticsScriptToGTM(this, 'dd8e7a2b-ae8f-4b8b-8608-e8e71d710d9a', 'Pediatric Collections: Adolescent Health Care Part 3: Transition of Care [Paperback]', '24.95', 'Adolescent HealthJournals', '4006related-items', 'Related Items')"> Pediatric Collections: Adolescent Health Care Part 3: Transition of Care [Paperback] </a> </div> <div class="publish-dates"> <p class="publish-date">Published: 2023</p> </div> <div class="retail-price"> <span class="priceLabel">Price:</span> <span class="price cash">$24.95</span> </div> <div class="member-price"> <span class="priceLabel">Member Price:</span> <span class="price cash">$24.95</span> </div> <div style="display: none" class="id-carousel-js" id-carousel-js"></div> </div> <div class="data-wrapper swiper-slide" data-product-carousel-item data-product-carousel-item-title='Pediatric Collections: Adolescent Health Care Part 3: Transition of Care [eBook]' data-product-carousel-item-id="8e6ae13f-ef75-4d16-9c84-626282bca9e8" data-product-carousel-item-price="24.95" data-product-carousel-item-category="Adolescent HealthJournals"> <div class="carousel-image" carousel-image> <a class="carousel-link" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-3-transition-of-care-ebook/" target="_self"> <img src="/globalassets/catalogs/imagefile/a/p/apc034-adolescent-health-care-part-3-ebook-product.png" class="carousel-image" /> </a> </div> <div class="medium"> <ul class="unlisted"> <li class="tag-carousel">EBOOK</li> </ul> </div> <div class="title-click"> <a class="carousel-title" href="/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-3-transition-of-care-ebook/" target="_self" onclick="sendSelectItemAnalyticsScriptToGTM(this, '8e6ae13f-ef75-4d16-9c84-626282bca9e8', 'Pediatric Collections: Adolescent Health Care Part 3: Transition of Care [eBook]', '24.95', 'Adolescent HealthJournals', '4006related-items', 'Related Items')"> Pediatric Collections: Adolescent Health Care Part 3: Transition of Care [eBook] </a> </div> <div class="publish-dates"> <p class="publish-date"></p> </div> <div class="retail-price"> <span class="priceLabel">Price:</span> <span class="price cash">$24.95</span> </div> <div class="member-price"> <span class="priceLabel">Member Price:</span> <span class="price cash">$24.95</span> </div> <div style="display: none" class="id-carousel-js" id-carousel-js"></div> </div> </div> </div> </div> </section> <script src='/Bundles/js/shop-google-analytics-bundle.js?v=3991dddf7f805020f060c9976b0e64dbddede854cae62303c2988796b3e418af'></script> <section class="adage-block"> <div class="shop-carousel"> <div class="shop-carousel-container swiper-container swiper" data-product-carousel-personalized data-total-slides data-unique-id="4006you-may-also-like" data-total-slides=""> <div class="shop-carousel-header"> <div class="shop-carousel-header-wrap"> <h2 class="adage-block-heading shop-carousel-title" data-product-carousel-title > You May Also Like </h2> </div> <div class="shop-carousel-button-wrap"> <button type="button" class="swiper-button-prev"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-next" /> </svg> <span class="visually-hidden">Go to previous slide.</span> </button> <button type="button" class="swiper-button-next"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-next" /> </svg> <span class="visually-hidden">Go to next slide.</span> </button> </div> </div> <div class="swiper-wrapper"> </div> </div> </div> </section> <script src='/Bundles/js/shop-google-analytics-bundle.js?v=3991dddf7f805020f060c9976b0e64dbddede854cae62303c2988796b3e418af'></script> <div data-intersection-observer="mini-cart" class="pdp-fixed-cart row"> <div class="pdp-fixed-cart-header"> <h2 class="pdp-fixed-cart-title">Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback]</h2> <p class="pdp-fixed-cart-price"> Price:: 24.95 </p> </div> <button type="button" class="button-primary button-loader " id="miniSummaryAddToCartCta" data-add-to-cart-price="24.95" data-add-to-cart-title="Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback]" data-add-to-cart-category="Adolescent HealthJournals" data-add-to-cart-key="eeabe286-1fa6-485e-b11e-2441286a414e"> <span>Add to Cart</span><div data-add-cart-load class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </button> </div> </div> </div> <script> window.productDetailPageBootstrap = { currentContentCode: 'EEABE286-1FA6-485E-B11E-2441286A414E', } </script> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "Pediatric Collections: Adolescent Health Care Part 2: Reproductive Health [Paperback]", "gtin13": "9781610027069", "image": ["https://www.aap.org/globalassets/catalogs/imagefile/a/p/apc033-adolescent-health-care-part-2-paperback-product.png"], "sku": "EEABE286-1FA6-485E-B11E-2441286A414E", "description" : "In book 2 of this 3-part series, we are pleased to present an extensive collection of adolescent health articles that address contraception and sexuality education, counseling the pregnant…", "offers": { "@type": "AggregateOffer", "url": "https://www.aap.org/en/catalog/categories/adolescent-health/pediatric-collections-adolescent-health-care-part-2-reproductive-health-paperback/", "priceCurrency": "USD", "lowPrice": 24.95, "highPrice": 24.95, "offerCount": 1 }, "brand": { "@type": "Organization", "name": "American Academy of Pediatrics" } } </script> <div class="back-to-top" tabindex="0" id="backToTop"> <svg class="back-to-top-arrow"> <use xlink:href="#back-to-top-arrow"></use> </svg> </div> </div> <script type="text/javascript"> window.searchBox = { searchBoxText: 'Search All AAP', searchButtonText: 'Search', findIndexUrl: 'https://es-us-api01.episerver.com/3fu1nB75NF5xwBMuzJdHOF0KFePbaflM/aaop_index00214/', searchPageUrl: '/en/search/', shopSearchBoxText: 'Search shopAAP' }; </script> <script> window.errorText = { dismissButtonText: 'Dismiss', requiredErrorText: 'This is a required field', invalidErrorText: 'This field is invalid', invalidPasswordText: 'Password must be at least 10 characters long', passwordMatchErrorText: 'Passwords must match', } window.passwordValidation = { passwordRequiredLength: 10, passwordRequireNonLetterOrDigit: false, passwordRequireDigit: false, passwordRequireUpperCase: false, passwordRequireLowerCase: false, } </script> <script> window.loginInfo = { loginUrl: '/en/my-account/login/' } </script> <footer class="footer" id="footer"> <div class="footer-top"> <div class="footer-top-wrapper"> <div class="footer-aap-logo"> <svg> <use xlink:href="#Seal_Pos"></use> </svg> </div> <div class="row"> <div class="col-xxl-6 col-sm-12"> <div class="footer-top-about"> We're 67​,000 pediatricians committed to the optimal physical, mental, and social health and well-being for all infants, children, adolescents, and young adults. </div> </div> <div class="col-xxl-6 col-sm-12"> <div class="footer-top-nav"> <div class="row"> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> </div> </div> <div class="footer-top-mobile-nav"> <div class="row"> <ul class="col-sm-6 unlisted"> </ul> <ul class="col-sm-6 unlisted"> </ul> </div> </div> </div> </div> </div> </div> <div class="footer-links-wrapper"> <div class="footer-links" id="footer-links"> <div class="footer-links-main"> <ul class="unlisted col-sm-6"> <li class="main-nav-menu-item privacystatement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/privacy-statement/" target="" data-testid="link-privacystatement"> Privacy Statement </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item termsofuse "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/terms-of-use/" target="" data-testid="link-termsofuse"> Terms of Use </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item auto-renewterms "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/terms-of-use/membership-and-subscription-auto-renew-terms-and-conditions/" target="" data-testid="link-auto-renewterms"> Auto-Renew Terms </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item supportcenter "> <div class="main-nav-menu-item-top"> <a class="" href="/en/support-center/" target="" data-testid="link-supportcenter"> Support Center </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item contactus "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/contact-us/" target="" data-testid="link-contactus"> Contact Us </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item codeofconduct "> <div class="main-nav-menu-item-top"> <a class="" href="/en/about-the-aap/american-academy-of-pediatrics-equity-and-inclusion-efforts/code-of-conduct/" target="" data-testid="link-codeofconduct"> Code of Conduct </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="unlisted col-sm-6"> </ul> </div> <ul class="footer-links-social unlisted"> <li class="main-nav-menu-item"> <a href="https://www.linkedin.com/company/american-academy-of-pediatrics" target="_blank"> <svg> <use xlink:href="#linkedin-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.instagram.com/ameracadpeds/" target="_blank"> <svg> <use xlink:href="#instagram-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.facebook.com/AmerAcadPeds" target="_blank"> <svg> <use xlink:href="#facebook-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.youtube.com/channel/UClR8YIQX5Fb8J2wmsUKLhvQ" target="_blank"> <svg> <use xlink:href="#youtube-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.threads.net/@ameracadpeds" target="_blank"> <svg> <use xlink:href="#threads-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://twitter.com/AmerAcadPeds" target="_blank"> <svg> <use xlink:href="#x-icon"></use> </svg> </a> </li> </ul> </div> </div> <div class="footer-copyright-wrapper"> <div class="footer-copyright"> <p class="paragraph-caption">© Copyright 2025 American Academy of Pediatrics. All rights reserved.</p> </div> </div> </footer> <a class="feedback-form-link" target="_blank" href="/en/forms/feedback-form/"> Feedback Form </a> <!-- CookiePro Cookies Consent Notice start for www.aap.org --> <script src="https://cookie-cdn.cookiepro.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="3e68ef05-4f6d-4004-898a-78b94ce0823e" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- CookiePro Cookies Consent Notice end for www.aap.org --> <!-- Google Tag Manager --> <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-N2RV28J'); </script> <!-- End Google Tag Manager --> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script type='text/javascript'> googletag.cmd.push(function() { var AAPorg = googletag.sizeMapping(). addSize([730, 0], [728, 90]) //desktop .build(); var gptAdSlots = []; gptAdSlots[0] =googletag.defineSlot('/22410314033/aap_leadert', [728, 90], 'div-gpt-ad-1633540336787-0').defineSizeMapping(AAPorg).addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); </script> <!-- Donate Widget Script --> <script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track'.split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o:function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a; t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=4;o.h=w.location.href;o.l=[];for(i=0;i<7;i++)o[l[i]]=o(l[i]);w[n]=o}})(window,document,'script','FundraiseUp','ADAHKUXY');</script> <!-- End Donate Widget Script --> <!-- Magnet Mail --> <script type="text/javascript" src="https://tracking.magnetmail.net/MagnetLeads.js"> </script> <script type="text/javascript"> com.realmagnet.MagnetLeads.init('hXdIOUQOZEy77inoSnCQWg'); com.realmagnet.MagnetLeads.visitPage(); </script> <!-- share this script --> <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=6480b01ae58f550012ea9faa&product=sop' async='async'></script> <!--New Relic --> <script type = "text/javascript" > ; window.NREUM || (NREUM = {}); NREUM.init = { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true } }; ; NREUM.loader_config = { accountID: "1613493", trustKey: "1613493", agentID: "342119000", licenseKey: "0c3b4b61ad", applicationID: "342118967" };; NREUM.info = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net", licenseKey: "0c3b4b61ad", applicationID: "342118967", sa: 1 };; /*! For license information please see nr-loader-spa-1.246.0.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.0", 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.0.min.js"), i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.246.0.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.0.PROD"] = self["webpackChunk:NRBA-1.246.0.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> <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js"></script> <script> WebFont.load({ google: { families: ['Alegreya Sans:400,400italic,700,700italic', 'Alegreya:400,400italic,700,700italic'] } }); </script> <script src="https://players.brightcove.net/6056665225001/default_default/index.js"></script> <script src='/Bundles/js/common-bundle.js?v=a99dc922fdeee0f0be9b7e610920b0b2b3609c493afbd24db398782b8ec36907'></script> <script src='/Bundles/js/global-bundle.js?v=cbd09da9c9ce184c42d166b78a619cb5313bc511eab24079d8147d434530e20e'></script> <script src='/Bundles/js/date-picker-bundle.js?v=5607472c79b4b8cf1231917918b9acd002bc7181ff9f2f508d9d2b29ce5f2b3c'></script> <script src='/Bundles/js/shop-carousel-bundle.js?v=e0b81793f12e054ce9f69548a6b10fe1db02a9df3ca353bd3723b471ae686e4c'></script> <script >var PeeriusCallbacks = { apiVersion:'v1_4', track: {"type":"product","lang":"en-us","recContent":"refCodeOnly","user":{"id":""},"product":{"refCode":"eeabe286-1fa6-485e-b11e-2441286a414e"}}, smartRecs: function(jsonData) { window.InitPeeriusCarousel(jsonData); }, info: function(jsonData) {}};</script><script type='text/JavaScript' src='https://aap.peerius.com/tracker/peerius.page' charset='UTF-8'></script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; dataLayer.push({'event': 'view_item', 'ecommerce': { 'currency': 'USD', 'value': 0.00, 'items': [{'item_id' : 'eeabe286-1fa6-485e-b11e-2441286a414e', 'item_name' : 'Pediatric Collections Adolescent Health Care Part 2 Reproductive Health Paperback', 'price' : 24.95, 'item_category' : 'Adolescent HealthJournals' }]}}); </script> <script src='/Bundles/js/product-detail-page-bundle.js?v=a308c03ad02be1965e82ec7aa600f64bc9cb7524681ef7f496ce212ce8777ac6'></script> <footer> <script defer="true" src="/Util/Find/epi-util/find.js"></script> <script> document.addEventListener('DOMContentLoaded',function(){if(typeof FindApi === 'function'){var api = new FindApi();api.setApplicationUrl('/');api.setServiceApiBaseUrl('/find_v2/');api.processEventFromCurrentUri();api.bindWindowEvents();api.bindAClickEvent();api.sendBufferedEvents();}}) </script> </footer> <!-- Custom Lucky Orange User Data --> </body> </html>