CINXE.COM
Lab Coats - Princeton Engineering
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8" /><script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1588608049",accountID:"3348991",trustKey:"66686",xpid:"VwUDWV9aCRABUVNbDgUPUlMF",licenseKey:"NRJS-b00d4b4e7850ab82d90",applicationID:"1529948474"};;/*! For license information please see nr-loader-spa-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);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{if(null===e[a]){r[a]=null;continue}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.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.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){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(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 u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{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{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},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,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){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,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,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(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}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.274.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,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=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).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))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);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.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),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.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));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)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);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.gm?.location?.protocol&&t.host===n.gm?.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{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>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}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);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){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){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()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),h(a.gm,f),h(c.prototype,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(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(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);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])}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,Zp:()=>i,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(3969),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>s,Qu:()=>c,TZ:()=>a,ih:()=>u,tC:()=>i});var n=r(860);const i=["click","keydown","submit"],o="api",a=n.K7.softNav,s={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},c={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},u={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>E,uP:()=>s,wW:()=>T,xq:()=>a});var n=r(384);const i=r(860).K7.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=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",T="cb"+R,A="jsTime",E="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>j});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(2646),x=r(3434);function T(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,x.YM)(i),a=new R.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function A(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var S=r(9417),N=r(5603),O=r(5284);const _=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let I=!1;function j(e,t={},g,R){let{init:x,info:j,loader_config:P,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();j||(x=L.init,j=L.info,P=L.loader_config),(0,S.xN)(e.agentIdentifier,x||{}),(0,N.a)(e.agentIdentifier,P||{}),j.jsAttributes??={},d.bv&&(j.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,j);const H=(0,S.D0)(e.agentIdentifier),D=[j.beacon,j.errorBeacon];I||(H.proxy.assets&&(_(H.proxy.assets),D.push(H.proxy.assets)),H.proxy.beacon&&D.push(H.proxy.beacon),A(),(0,h.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?D:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var R=s.ee.get(e),x=R.get("tracer");E[e]=b.g.OFF,R.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var A="api-",S=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(A,n,!0,o||null===r?"session":void 0)(t,r)}function O(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,R),(0,w.R)(R,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,R),T(R,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(A,e,!0,"api")})),g.addPageAction=I(A,"addPageAction",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(A,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,R),R.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,R)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,R)},g.interaction=function(e){return(new O).get("object"==typeof e?e:{})};const _=O.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,R),h||(0,a.p)(S+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,R),function(){if(x.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw x.emit("fn-err",[arguments,this,t],r),t}finally{x.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,R),i&&(0,a.p)(e+t,[(0,v.t)(),...arguments],r?null:this,i,R),r?void 0:this}}function j(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),R.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{_[e]=I(S,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(S,"routeName",void 0,n.K7.softNav):I(A,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,R),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,R)},d.RI?(0,u.GG)((()=>j()),!0):j(),g}(e.agentIdentifier,R,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),I=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},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=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.274.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.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}}if(!s){c=!0;var f={478:"sha512-1vUqEfJPB8Pihje9mv5CfYgkitO1FWcS+UQb84DbXqP8oYctRv4/lzl/MzNLPlRhcY1WVDBGL20I8vm6s2VV7g==",249:"sha512-Y/BeZAh6VSTmUtUNmS5XdyKxL92s30Fyyj8xVW76HSPxcKItL4+x2+kGMZc8pMJnUpZDz1L4eftZQAJh3D8NnA==",212:"sha512-Gn2tQ3qog5Yhrx/gRutkSTYPp+7nkKFt4/mIXg99LxcNpMDAYJZDBYmAACdoHNM86+iq1F3cBcQotFNzjIX8bw=="};(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,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.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={38:0,788: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.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(425);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(478).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),T=i(2843),A=i(3878),E=i(782),S=i(1863);class N extends b{static featureName=E.T;constructor(e,t=!0){super(e,E.T,t),p.RI&&((0,T.u)((()=>(0,x.p)("docHidden",[(0,S.t)()],void 0,E.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,S.t)()],void 0,E.T,this.ee))),this.importAggregator(e))}}var O=i(3969);class _ extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),this.importAggregator(e)}}var I=i(6774),j=i(3304);class P{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,j.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new P(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new P(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class D extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(e=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var M=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,M.I)(e,U,(function(){return K++}))}function G(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,j.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",J=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),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,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,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 p.gm?.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,j.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){T(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),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<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(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 d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.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,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}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 y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),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 le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCazptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function T(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,x.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(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}const ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Te,Lc:Ae,uP:Ee,Rz:Se}=be;class Ne extends b{static featureName=Te;constructor(e,t=!0){super(e,Te,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Ee,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Se+Re,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Se+xe,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class _e extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class je extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,S.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,S.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var Pe=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,"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 o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function De(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[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=i[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=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(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 Me={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(Me[t.debugId]++)return t;Me[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Xe,wW:Je,e5:Qe,tH:$e,uP:et,rw:tt,Lc:rt}=Pe;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=De(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,S.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,S.t)();this[Qe]=~~this[Qe]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,S.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Je,m),o.on(Je,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([$e+Ze,$e+"-done",$e+Xe+Ze,$e+Xe+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Je,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,$e+Ze),v(d,$e+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled];p.RI&&e.init.user_actions.enabled&&(it.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)))))),r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785);class ct extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,N,Ne,_e,_,D,ot,ct,je,nt],loaderType:"spa"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v23.6) - https://yoast.com/wordpress/plugins/seo/ --> <meta name="description" content="Lab Coats may be purchased through your Department Purchasing Office. " /> <link rel="canonical" href="https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Princeton Engineering - Lab Coats" /> <meta property="og:description" content="Lab Coats may be purchased through your Department Purchasing Office. " /> <meta property="og:url" content="https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats" /> <meta property="og:site_name" content="Princeton Engineering" /> <meta property="article:publisher" content="https://www.facebook.com/princetonengineering/" /> <meta property="article:modified_time" content="2024-10-19T12:26:59+00:00" /> <meta property="og:image" content="https://engineering.princeton.edu/wp-content/uploads/2024/10/princeton-engineering-pages.png" /> <meta property="og:image:width" content="1600" /> <meta property="og:image:height" content="900" /> <meta property="og:image:type" content="image/png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@EPrinceton" /> <meta name="twitter:label1" content="Est. reading time" /> <meta name="twitter:data1" content="1 minute" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats","url":"https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats","name":"Lab Coats - Princeton Engineering","isPartOf":{"@id":"https://engineering.princeton.edu/#website"},"datePublished":"2021-08-27T16:31:23+00:00","dateModified":"2024-10-19T12:26:59+00:00","description":"Lab Coats may be purchased through your Department Purchasing Office. ","breadcrumb":{"@id":"https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats"]}]},{"@type":"BreadcrumbList","@id":"https://engineering.princeton.edu/resources/policies-and-procedures/lab-coats#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://engineering.princeton.edu/"},{"@type":"ListItem","position":2,"name":"Resources","item":"https://engineering.princeton.edu/resources"},{"@type":"ListItem","position":3,"name":"Policies and Procedures","item":"https://engineering.princeton.edu/resources/policies-and-procedures"},{"@type":"ListItem","position":4,"name":"Lab Coats"}]},{"@type":"WebSite","@id":"https://engineering.princeton.edu/#website","url":"https://engineering.princeton.edu/","name":"Princeton Engineering","description":"","publisher":{"@id":"https://engineering.princeton.edu/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://engineering.princeton.edu/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://engineering.princeton.edu/#organization","name":"Princeton Engineering | Princeton University","url":"https://engineering.princeton.edu/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://engineering.princeton.edu/#/schema/logo/image/","url":"https://engineering.princeton.edu/wp-content/uploads/2024/10/Princeton-Engineering-Social-Media-5-X-Profile-Icon.png","contentUrl":"https://engineering.princeton.edu/wp-content/uploads/2024/10/Princeton-Engineering-Social-Media-5-X-Profile-Icon.png","width":500,"height":500,"caption":"Princeton Engineering | Princeton University"},"image":{"@id":"https://engineering.princeton.edu/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/princetonengineering/","https://x.com/EPrinceton","https://www.instagram.com/eprinceton/","https://www.linkedin.com/school/princetonengineering/","https://www.youtube.com/user/princetonengineering","https://en.m.wikipedia.org/wiki/Princeton_University_School_of_Engineering_and_Applied_Science"]}]}</script> <!-- / Yoast SEO Premium plugin. --> <title>Lab Coats - Princeton Engineering</title> <link rel='dns-prefetch' href='//engineering.princeton.edu' /> <link rel='dns-prefetch' href='//kit.fontawesome.com' /> <link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> <link rel='dns-prefetch' href='//www.googletagmanager.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel="alternate" type="application/rss+xml" title="Princeton Engineering » Feed" href="https://engineering.princeton.edu/feed" /> <link rel="alternate" type="application/rss+xml" title="Princeton Engineering » Comments Feed" href="https://engineering.princeton.edu/comments/feed" /> <script> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/engineering.princeton.edu\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.6.2"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); </script> <style id='wp-block-group-inline-css'> .wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative} </style> <style id='wp-block-post-title-inline-css'> .wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title a{display:inline-block} </style> <style id='wp-block-separator-inline-css'> @charset "UTF-8";.wp-block-separator{border:none;border-top:2px solid}:root :where(.wp-block-separator.is-style-dots){height:auto;line-height:1;text-align:center}:root :where(.wp-block-separator.is-style-dots):before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}.wp-block-separator.is-style-dots{background:none!important;border:none!important} </style> <style id='wp-block-heading-inline-css'> h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} </style> <style id='wp-block-paragraph-inline-css'> .is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} </style> <style id='engineering-notes-style-inline-css'> </style> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <style id='wp-block-library-inline-css'> :root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px;--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color)}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip:auto!important;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} </style> <link rel='stylesheet' id='engineering-block-global-style-css' href='https://engineering.princeton.edu/wp-content/plugins/engineering/engineering-block-global-style.css?ver=1732641266' media='all' /> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--base: #f9f9f9;--wp--preset--color--base-2: #ffffff;--wp--preset--color--base-3: #00000025;--wp--preset--color--contrast-yellow: #FEF9C3;--wp--preset--color--contrast-green: #EEFDF2;--wp--preset--color--contrast-blue: #EDF5FF;--wp--preset--color--contrast-red: #FEF0F0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--gradient--gradient-1: linear-gradient(to bottom, #cfcabe 0%, #F9F9F9 100%);--wp--preset--gradient--gradient-2: linear-gradient(to bottom, #C2A990 0%, #F9F9F9 100%);--wp--preset--gradient--gradient-3: linear-gradient(to bottom, #D8613C 0%, #F9F9F9 100%);--wp--preset--gradient--gradient-4: linear-gradient(to bottom, #B1C5A4 0%, #F9F9F9 100%);--wp--preset--gradient--gradient-5: linear-gradient(to bottom, #B5BDBC 0%, #F9F9F9 100%);--wp--preset--gradient--gradient-6: linear-gradient(to bottom, #A4A4A4 0%, #F9F9F9 100%);--wp--preset--gradient--gradient-7: linear-gradient(to bottom, #cfcabe 50%, #F9F9F9 50%);--wp--preset--gradient--gradient-8: linear-gradient(to bottom, #C2A990 50%, #F9F9F9 50%);--wp--preset--gradient--gradient-9: linear-gradient(to bottom, #D8613C 50%, #F9F9F9 50%);--wp--preset--gradient--gradient-10: linear-gradient(to bottom, #B1C5A4 50%, #F9F9F9 50%);--wp--preset--gradient--gradient-11: linear-gradient(to bottom, #B5BDBC 50%, #F9F9F9 50%);--wp--preset--gradient--gradient-12: linear-gradient(to bottom, #A4A4A4 50%, #F9F9F9 50%);--wp--preset--font-size--small: 0.9rem;--wp--preset--font-size--medium: 1.05rem;--wp--preset--font-size--large: clamp(1.39rem, 1.39rem + ((1vw - 0.2rem) * 0.767), 1.85rem);--wp--preset--font-size--x-large: clamp(1.85rem, 1.85rem + ((1vw - 0.2rem) * 1.083), 2.5rem);--wp--preset--font-size--xx-large: clamp(2.5rem, 2.5rem + ((1vw - 0.2rem) * 1.283), 3.27rem);--wp--preset--font-family--body: "Inter", sans-serif;--wp--preset--font-family--heading: Cardo;--wp--preset--font-family--system-sans-serif: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--wp--preset--font-family--system-serif: Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--wp--preset--spacing--20: min(1.5rem, 2vw);--wp--preset--spacing--30: min(2.5rem, 3vw);--wp--preset--spacing--40: min(4rem, 5vw);--wp--preset--spacing--50: min(6.5rem, 8vw);--wp--preset--spacing--60: min(10.5rem, 13vw);--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--spacing--10: 1rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:root { --wp--style--global--content-size: 620px;--wp--style--global--wide-size: 1280px; }:where(body) { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1.2rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 1.2rem; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 1.2rem;}:root :where(.is-layout-grid){gap: 1.2rem;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{background-color: var(--wp--preset--color--base);color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--body);font-size: var(--wp--preset--font-size--medium);font-style: normal;font-weight: 400;line-height: 1.55;--wp--style--root--padding-top: 0px;--wp--style--root--padding-right: var(--wp--preset--spacing--50);--wp--style--root--padding-bottom: 0px;--wp--style--root--padding-left: var(--wp--preset--spacing--50);}a:where(:not(.wp-element-button)){color: var(--wp--preset--color--contrast);text-decoration: underline;}:root :where(a:where(:not(.wp-element-button)):hover){text-decoration: none;}h1, h2, h3, h4, h5, h6{color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--heading);font-weight: 400;line-height: 1.2;}h1{font-size: var(--wp--preset--font-size--xx-large);line-height: 1.15;}h2{font-size: var(--wp--preset--font-size--x-large);}h3{font-size: var(--wp--preset--font-size--large);}h4{font-size: clamp(1.1rem, 1.1rem + ((1vw - 0.2rem) * 0.767), 1.5rem);}h5{font-size: var(--wp--preset--font-size--medium);}h6{font-size: var(--wp--preset--font-size--small);}:root :where(.wp-element-button, .wp-block-button__link){background-color: var(--wp--preset--color--contrast);border-radius: .33rem;border-color: var(--wp--preset--color--contrast);border-width: 0;color: var(--wp--preset--color--base);font-family: inherit;font-size: var(--wp--preset--font-size--small);font-style: normal;font-weight: 500;line-height: inherit;padding-top: 0.6rem;padding-right: 1rem;padding-bottom: 0.6rem;padding-left: 1rem;text-decoration: none;}:root :where(.wp-element-button:hover, .wp-block-button__link:hover){background-color: var(--wp--preset--color--contrast-2);border-color: var(--wp--preset--color--contrast-2);color: var(--wp--preset--color--base);}:root :where(.wp-element-button:focus, .wp-block-button__link:focus){background-color: var(--wp--preset--color--contrast-2);border-color: var(--wp--preset--color--contrast-2);color: var(--wp--preset--color--base);outline-color: var(--wp--preset--color--contrast);outline-offset: 2px;outline-style: dotted;outline-width: 1px;}:root :where(.wp-element-button:active, .wp-block-button__link:active){background-color: var(--wp--preset--color--contrast);color: var(--wp--preset--color--base);}:root :where(.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption){color: var(--wp--preset--color--contrast-2);font-family: var(--wp--preset--font-family--body);font-size: 0.8rem;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-base-color{color: var(--wp--preset--color--base) !important;}.has-base-2-color{color: var(--wp--preset--color--base-2) !important;}.has-base-3-color{color: var(--wp--preset--color--base-3) !important;}.has-contrast-yellow-color{color: var(--wp--preset--color--contrast-yellow) !important;}.has-contrast-green-color{color: var(--wp--preset--color--contrast-green) !important;}.has-contrast-blue-color{color: var(--wp--preset--color--contrast-blue) !important;}.has-contrast-red-color{color: var(--wp--preset--color--contrast-red) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-base-background-color{background-color: var(--wp--preset--color--base) !important;}.has-base-2-background-color{background-color: var(--wp--preset--color--base-2) !important;}.has-base-3-background-color{background-color: var(--wp--preset--color--base-3) !important;}.has-contrast-yellow-background-color{background-color: var(--wp--preset--color--contrast-yellow) !important;}.has-contrast-green-background-color{background-color: var(--wp--preset--color--contrast-green) !important;}.has-contrast-blue-background-color{background-color: var(--wp--preset--color--contrast-blue) !important;}.has-contrast-red-background-color{background-color: var(--wp--preset--color--contrast-red) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-base-border-color{border-color: var(--wp--preset--color--base) !important;}.has-base-2-border-color{border-color: var(--wp--preset--color--base-2) !important;}.has-base-3-border-color{border-color: var(--wp--preset--color--base-3) !important;}.has-contrast-yellow-border-color{border-color: var(--wp--preset--color--contrast-yellow) !important;}.has-contrast-green-border-color{border-color: var(--wp--preset--color--contrast-green) !important;}.has-contrast-blue-border-color{border-color: var(--wp--preset--color--contrast-blue) !important;}.has-contrast-red-border-color{border-color: var(--wp--preset--color--contrast-red) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-gradient-1-gradient-background{background: var(--wp--preset--gradient--gradient-1) !important;}.has-gradient-2-gradient-background{background: var(--wp--preset--gradient--gradient-2) !important;}.has-gradient-3-gradient-background{background: var(--wp--preset--gradient--gradient-3) !important;}.has-gradient-4-gradient-background{background: var(--wp--preset--gradient--gradient-4) !important;}.has-gradient-5-gradient-background{background: var(--wp--preset--gradient--gradient-5) !important;}.has-gradient-6-gradient-background{background: var(--wp--preset--gradient--gradient-6) !important;}.has-gradient-7-gradient-background{background: var(--wp--preset--gradient--gradient-7) !important;}.has-gradient-8-gradient-background{background: var(--wp--preset--gradient--gradient-8) !important;}.has-gradient-9-gradient-background{background: var(--wp--preset--gradient--gradient-9) !important;}.has-gradient-10-gradient-background{background: var(--wp--preset--gradient--gradient-10) !important;}.has-gradient-11-gradient-background{background: var(--wp--preset--gradient--gradient-11) !important;}.has-gradient-12-gradient-background{background: var(--wp--preset--gradient--gradient-12) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-body-font-family{font-family: var(--wp--preset--font-family--body) !important;}.has-heading-font-family{font-family: var(--wp--preset--font-family--heading) !important;}.has-system-sans-serif-font-family{font-family: var(--wp--preset--font-family--system-sans-serif) !important;}.has-system-serif-font-family{font-family: var(--wp--preset--font-family--system-serif) !important;} :root :where(.wp-block-post-title a:where(:not(.wp-element-button))){text-decoration: none;} :root :where(.wp-block-post-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;} :root :where(.wp-block-separator){border-color: currentColor;border-width: 0 0 1px 0;border-style: solid;color: var(--wp--preset--color--contrast);}:root :where(.wp-block-separator){}:root :where(.wp-block-separator:not(.is-style-wide):not(.is-style-dots):not(.alignwide):not(.alignfull)){width: var(--wp--preset--spacing--60)} :where(.wp-site-blocks *:focus){outline-width:2px;outline-style:solid}:root :where(.wp-block-calendar.wp-block-calendar table:where(:not(.has-text-color)) th){background-color:var(--wp--preset--color--contrast-2);color:var(--wp--preset--color--base);border-color:var(--wp--preset--color--contrast-2)}:root :where(.wp-block-calendar table:where(:not(.has-text-color)) td){border-color:var(--wp--preset--color--contrast-2)}:root :where(.wp-block-categories){list-style-type:none;}:root :where(.wp-block-categories li){margin-bottom: 0.5rem;}:root :where(.wp-block-post-comments-form textarea, .wp-block-post-comments-form input){border-radius:.33rem}:root :where(.wp-block-loginout input){border-radius:.33rem;padding:calc(0.667em + 2px);border:1px solid #949494;}:root :where(.wp-block-post-terms .wp-block-post-terms__prefix){color: var(--wp--preset--color--contrast-2);}:root :where(.wp-block-query-title span){font-style: italic;}:root :where(.wp-block-quote :where(p)){margin-block-start:0;margin-block-end:calc(var(--wp--preset--spacing--10) + 0.5rem);}:root :where(.wp-block-quote :where(:last-child)){margin-block-end:0;}:root :where(.wp-block-quote.has-text-align-right.is-style-plain, .rtl .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-left)){border-width: 0 2px 0 0;padding-left:calc(var(--wp--preset--spacing--20) + 0.5rem);padding-right:calc(var(--wp--preset--spacing--20) + 0.5rem);}:root :where(.wp-block-quote.has-text-align-left.is-style-plain, body:not(.rtl) .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-right)){border-width: 0 0 0 2px;padding-left:calc(var(--wp--preset--spacing--20) + 0.5rem);padding-right:calc(var(--wp--preset--spacing--20) + 0.5rem)}:root :where(.wp-block-search .wp-block-search__input){border-radius:.33rem}:root :where(.wp-block-separator){}:root :where(.wp-block-separator:not(.is-style-wide):not(.is-style-dots):not(.alignwide):not(.alignfull)){width: var(--wp--preset--spacing--60)} </style> <style id='wp-block-template-skip-link-inline-css'> .skip-link.screen-reader-text { border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; } .skip-link.screen-reader-text:focus { background-color: #eee; clip: auto !important; clip-path: none; color: #444; display: block; font-size: 1em; height: auto; left: 5px; line-height: normal; padding: 15px 23px 14px; text-decoration: none; top: 5px; width: auto; z-index: 100000; } </style> <link rel='stylesheet' id='dashicons-css' href='https://engineering.princeton.edu/wp-includes/css/dashicons.min.css?ver=6.6.2' media='all' /> <link rel='stylesheet' id='megamenu-google-fonts-css' href='//fonts.googleapis.com/css?family=Libre+Franklin%3A400%2C700&ver=6.6.2' media='all' /> <link rel='stylesheet' id='megamenu-genericons-css' href='https://engineering.princeton.edu/wp-content/plugins/megamenu-pro/icons/genericons/genericons/genericons.css?ver=2.4' media='all' /> <link rel='stylesheet' id='megamenu-fontawesome-css' href='https://engineering.princeton.edu/wp-content/plugins/megamenu-pro/icons/fontawesome/css/font-awesome.min.css?ver=2.4' media='all' /> <link rel='stylesheet' id='megamenu-fontawesome5-css' href='https://engineering.princeton.edu/wp-content/plugins/megamenu-pro/icons/fontawesome5/css/all.min.css?ver=2.4' media='all' /> <link rel='stylesheet' id='megamenu-fontawesome6-css' href='https://engineering.princeton.edu/wp-content/plugins/megamenu-pro/icons/fontawesome6/css/all.min.css?ver=2.4' media='all' /> <link rel='stylesheet' id='search-filter-plugin-styles-css' href='https://engineering.princeton.edu/wp-content/plugins/search-filter-pro/public/assets/css/search-filter.min.css?ver=2.5.17' media='all' /> <link rel='stylesheet' id='twentytwentyfour-style-css' href='https://engineering.princeton.edu/wp-content/themes/twentytwentyfour/style.css?ver=6.6.2' media='all' /> <link rel='stylesheet' id='engineering-style-v2-css' href='https://engineering.princeton.edu/wp-content/themes/engineering/style.css?ver=1732641275' media='all' /> <script src="https://engineering.princeton.edu/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script src="https://engineering.princeton.edu/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script defer crossorigin="anonymous" src="https://kit.fontawesome.com/8299227453.js" id="font-awesome-official-js"></script> <!-- Google tag (gtag.js) snippet added by Site Kit --> <!-- Google Analytics snippet added by Site Kit --> <script src="https://www.googletagmanager.com/gtag/js?id=G-LKJSE43ML1" id="google_gtagjs-js" async></script> <script id="google_gtagjs-js-after"> window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);} gtag("set","linker",{"domains":["engineering.princeton.edu"]}); gtag("js", new Date()); gtag("set", "developer_id.dZTNiMT", true); gtag("config", "G-LKJSE43ML1"); </script> <!-- End Google tag (gtag.js) snippet added by Site Kit --> <link rel="https://api.w.org/" href="https://engineering.princeton.edu/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://engineering.princeton.edu/wp-json/wp/v2/pages/5190" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://engineering.princeton.edu/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.6.2" /> <link rel='shortlink' href='https://engineering.princeton.edu/?p=5190' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://engineering.princeton.edu/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fengineering.princeton.edu%2Fresources%2Fpolicies-and-procedures%2Flab-coats" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://engineering.princeton.edu/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fengineering.princeton.edu%2Fresources%2Fpolicies-and-procedures%2Flab-coats&format=xml" /> <meta name="generator" content="Site Kit by Google 1.137.0" /> <script type='text/javascript'> document.addEventListener('DOMContentLoaded', function() { var globalStyles = document.getElementById('global-styles-inline-css'); if (globalStyles) { globalStyles.parentNode.removeChild(globalStyles); } }); </script> <!-- 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-MMWLX8H3'); </script> <!-- End Google Tag Manager --> <link rel="icon" href="/wp-content/themes/engineering/assets/images/favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="/wp-content/themes/engineering/assets/images/favicon.ico" type="image/x-icon"><style id='wp-fonts-local'> @font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:fallback;src:url('https://engineering.princeton.edu/wp-content/themes/twentytwentyfour/assets/fonts/inter/Inter-VariableFont_slnt,wght.woff2') format('woff2');font-stretch:normal;} @font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url('https://engineering.princeton.edu/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_400.woff2') format('woff2');} @font-face{font-family:Cardo;font-style:italic;font-weight:400;font-display:fallback;src:url('https://engineering.princeton.edu/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_italic_400.woff2') format('woff2');} @font-face{font-family:Cardo;font-style:normal;font-weight:700;font-display:fallback;src:url('https://engineering.princeton.edu/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_700.woff2') format('woff2');} </style> <link rel="icon" href="https://engineering.princeton.edu/wp-content/uploads/2024/10/cropped-eng-favicon-32x32.png" sizes="32x32" /> <link rel="icon" href="https://engineering.princeton.edu/wp-content/uploads/2024/10/cropped-eng-favicon-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://engineering.princeton.edu/wp-content/uploads/2024/10/cropped-eng-favicon-180x180.png" /> <meta name="msapplication-TileImage" content="https://engineering.princeton.edu/wp-content/uploads/2024/10/cropped-eng-favicon-270x270.png" /> <style type="text/css">/** Mega Menu CSS: fs **/</style> </head> <body class="page-template page-template-page-no-featured-image page page-id-5190 page-child parent-pageid-5172 wp-embed-responsive"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MMWLX8H3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="wp-site-blocks"><header class="wp-block-template-part"> <div class="wp-block-group engineering-site-header is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group engineering-site-header__content"> <div class="engineering-modal" x-data="{ open: false, searchOpen: false }"> <div class="engineering-navbar"> <div class="nav-item menu-item"> <a tabindex="0" role="button" @click="open = !open" @keydown.enter="open = !open" :aria-expanded="open ? 'true' : 'false'" :class="{ 'is-active': open }" > <i class="fa-solid fa-bars"></i> <div class="name-and-description"> <p class="name"><span>Menu</span></p> </div> </a> </div> <h1 class="engineering-logo"> <a href="/">School of Engineering & Applied Science</a> </h1> <div class="engineering-search"> <div class="nav-item search-item"> <a tabindex="0" role="button" @click="searchOpen = !searchOpen" @keydown.enter="searchOpen = !searchOpen" > <div class="name-and-description"> <p class="name"><span>Search</span></p> </div> <i class="fa-solid fa-magnifying-glass"></i> </a> </div> </div> </div> <nav id="engineering_menu" x-data="{ aboutOpen: false, deiOpen: false, undergradOpen: false, gradOpen: false, deptOpen: false, centersOpen: false, moreOpen: false }" x-show="open" @click.outside="open = false" @keydown.enter.outside="open = false" @keydown.esc.window="open = false" x-cloak x-transition > <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="aboutOpen = !aboutOpen" @keydown.enter="aboutOpen = !aboutOpen" :aria-expanded="aboutOpen ? 'true' : 'false'" :class="{ 'is-active': aboutOpen }" > <div class="name-and-description"> <p class="name"><span>About</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="aboutOpen" @click.outside="aboutOpen = false" @keydown.enter.outside="aboutOpen = false" x-transition > <div class="column"> <p class="nav-items-group-title">School Information</p> <div class="nav-item second-tier"> <a href="/about"> <div class="name-and-description"> <p class="name"><span>Overview</span></p> <p class="description"> Your first points of contact with Princeton Engineering </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/leadership-and-staff"> <div class="name-and-description"> <p class="name"><span>Leadership and Staff</span></p> <p class="description">Meet our administrative team</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/leadership-council"> <div class="name-and-description"> <p class="name"><span>Leadership Council</span></p> <p class="description"> Accomplished leaders who serve as advisors to the dean </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/strategic-planning"> <div class="name-and-description"> <p class="name"><span>Strategic Planning</span></p> <p class="description">A bold vision for the next decade</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/princeton-engineers"> <div class="name-and-description"> <p class="name"><span>Princeton Engineers</span></p> <p class="description">Celebrating our community</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/by-the-numbers"> <div class="name-and-description"> <p class="name"><span>By the Numbers</span></p> <p class="description">Brief facts about the school</p> </div> </a> </div> </div> <div class="column"> <p class="nav-items-group-title">Information for</p> <div class="nav-item second-tier"> <a href="/about/prospective-students"> <div class="name-and-description"> <p class="name"><span>Prospective Students</span></p> <p class="description">Why become a Princeton Engineer</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/corporate-partners"> <div class="name-and-description"> <p class="name"><span>Corporate Partners</span></p> <p class="description"> Research partnerships, licensing, and recruiting </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/entrepreneurs"> <div class="name-and-description"> <p class="name"><span>Entrepreneurs</span></p> <p class="description"> Helping students turn inspiration into action </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/alumni"> <div class="name-and-description"> <p class="name"><span>Alumni</span></p> <p class="description"> Stay connected to Princeton Engineering </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/visitors"> <div class="name-and-description"> <p class="name"><span>Visitors</span></p> <p class="description">Directions, and tour information</p> </div> </a> </div> </div> </section> <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="deiOpen = !deiOpen" @keydown.enter="deiOpen = !deiOpen" :aria-expanded="deiOpen ? 'true' : 'false'" :class="{ 'is-active': deiOpen }" > <div class="name-and-description"> <p class="name"><span>Diversity & Inclusion</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="deiOpen" @click.outside="deiOpen = false" @keydown.enter.outside="deiOpen = false" x-transition > <div class="column"> <p class="nav-items-group-title">General Information</p> <div class="nav-item second-tier"> <a href="/diversity-and-inclusion"> <div class="name-and-description"> <p class="name"><span>Diversity and Inclusion</span></p> <p class="description"> Our commitment to diversity and inclusion </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/diversity-and-inclusion/dashboard"> <div class="name-and-description"> <p class="name"><span>Diversity Dashboard</span></p> <p class="description">Demographic information and trends</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/diversity-champions-program"> <div class="name-and-description"> <p class="name"><span>Diversity Champions Program</span></p> <p class="description"> Learn, share, and practice strategies related to diversity, equity, and inclusion </p> </div> </a> </div> </div> <div class="column"> <p class="nav-items-group-title">Resources</p> <div class="nav-item second-tier"> <a href="/diversity-and-inclusion/programs"> <div class="name-and-description"> <p class="name"> <span> Diversity and Inclusion Programs and Resources</span> </p> <p class="description"> Fostering greater diversity in science and engineering </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/diversity-and-inclusion/events"> <div class="name-and-description"> <p class="name"> <span>Diversity and Inclusion Events</span> </p> <p class="description"> Professional, social opportunities for the Princeton community </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/diversity-and-inclusion/newsletter-archive"> <div class="name-and-description"> <p class="name"><span>Newsletter Archive</span></p> <p class="description"> Quarterly publication of the Office of Diversity and Inclusion at Princeton Engineering </p> </div> </a> </div> </div> </section> <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="undergradOpen = !undergradOpen" @keydown.enter="undergradOpen = !undergradOpen" :aria-expanded="undergradOpen ? 'true' : 'false'" :class="{ 'is-active': undergradOpen }" > <div class="name-and-description"> <p class="name"><span>Undergraduate Studies</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="undergradOpen" @click.outside="undergradOpen = false" @keydown.enter.outside="undergradOpen = false" x-transition > <div class="column"> <p class="nav-items-group-title">General information</p> <div class="nav-item second-tier"> <a href="/undergraduate-studies"> <div class="name-and-description"> <p class="name"><span>Overview</span></p> <p class="description"> Rigorous foundation, hands-on experience, liberal arts context </p> </div> </a> </div> <div x-data="{ toursOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="toursOpen = !toursOpen" @keydown.enter="toursOpen = !toursOpen" :aria-expanded="toursOpen ? 'true' : 'false'" :class="{ 'is-active': toursOpen }" > <div class="name-and-description"> <p class="name"><span>Admission and Tours</span></p> <p class="description">Sign up for a tour</p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="toursOpen" @click.outside="toursOpen = false" @keydown.enter.outside="toursOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/undergraduate-studies/admission-and-tours"> <div class="name-and-description"> <p class="name"> <span>Admissions & Tours Overview</span> </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/admission-and-tours/prospective-students-faq" > <div class="name-and-description"> <p class="name"><span>Prospective Students FAQ</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/admission-and-tours/high-school-guidance" > <div class="name-and-description"> <p class="name"> <span>Guidance for high school students</span> </p> </div> </a> </div> </section> </div> <div x-data="{ academicsOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="academicsOpen = !academicsOpen" @keydown.enter="academicsOpen = !academicsOpen" :aria-expanded="academicsOpen ? 'true' : 'false'" :class="{ 'is-active': academicsOpen }" > <div class="name-and-description"> <p class="name"><span>Academics</span></p> <p class="description"> Six departments offer BSE degrees; one also offers A.B </p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="academicsOpen" @click.outside="academicsOpen = false" @keydown.enter.outside="academicsOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/undergraduate-studies/concentrations"> <div class="name-and-description"> <p class="name"><span>Academics Overview</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/abet-accreditation"> <div class="name-and-description"> <p class="name"><span>ABET Accreditation</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/certificate-programs"> <div class="name-and-description"> <p class="name"><span>Certificate programs</span></p> </div> </a> </div> </section> </div> </div> <div class="column"> <p class="nav-items-group-title">For current students</p> <div x-data="{ advisingOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="advisingOpen = !advisingOpen" @keydown.enter="advisingOpen = !advisingOpen" :aria-expanded="advisingOpen ? 'true' : 'false'" :class="{ 'is-active': advisingOpen }" > <div class="name-and-description"> <p class="name"><span>Advising</span></p> <p class="description">We are here to help</p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="advisingOpen" @click.outside="advisingOpen = false" @keydown.enter.outside="advisingOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/undergraduate-studies/undergraduate-affairs-office" ><div class="name-and-description"> <p class="name"><span>Advising Overview</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/first-year-advising" ><div class="name-and-description"> <p class="name"><span>First-Year Advising</span></p> </div> </a> </div> <div class="nav-item fourth-tier"> <a href="/undergraduate-studies/first-year-advising/degree-requirements" ><div class="name-and-description"> <p class="name"><span>Degree Requirements</span></p> </div> </a> </div> <div class="nav-item fourth-tier"> <a href="/undergraduate-studies/first-year-advising/first-year-faq" ><div class="name-and-description"> <p class="name"> <span> Q and A About the First Year in Engineering</span > </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/sophomore-senior-advising" ><div class="name-and-description"> <p class="name"><span>Sophomore-Senior Advising</span></p> </div> </a> </div> <div class="nav-item fourth-tier"> <a href="/undergraduate-studies/sophomore-senior-advising/rising-sophomore-faq" ><div class="name-and-description"> <p class="name"><span>Rising Sophomore FAQ</span></p> </div> </a> </div> <div class="nav-item fourth-tier"> <a href="/undergraduate-studies/sophomore-senior-advising/senior-thesis-independent-work-funding" ><div class="name-and-description"> <p class="name"> <span>Senior Thesis/Independent Work Funding</span> </p> </div> </a> </div> <div class="nav-item fourth-tier"> <a href="/undergraduate-studies/sophomore-senior-advising/summer-course-information" ><div class="name-and-description"> <p class="name"><span>Summer Course Information</span></p> </div> </a> </div> <div class="nav-item fourth-tier"> <a href="/undergraduate-studies/sophomore-senior-advising/study-abroad" ><div class="name-and-description"> <p class="name"><span>Study Abroad</span></p> </div> </a> </div> </section> </div> <div x-data="{ careersOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="careersOpen = !careersOpen" @keydown.enter="careersOpen = !careersOpen" :aria-expanded="careersOpen ? 'true' : 'false'" :class="{ 'is-active': careersOpen }" > <div class="name-and-description"> <p class="name"><span>Careers</span></p> <p class="description"> What do engineering students go on to do? </p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="careersOpen" @click.outside="careersOpen = false" @keydown.enter.outside="careersOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/undergraduate-studies/careers/" ><div class="name-and-description"> <p class="name"><span>Careers Overview</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/undergraduate-studies/careers/science-and-technology-fair" ><div class="name-and-description"> <p class="name"> <span>Science and Technology Job Fair</span> </p> </div> </a> </div> </section> </div> <div class="nav-item second-tier"> <a href="/undergraduate-studies/student-organizations"> <div class="name-and-description"> <p class="name"><span>Student Organizations</span></p> <p class="description"> Sixteen groups create community around special interests </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/undergraduate-studies/social-life"> <div class="name-and-description"> <p class="name"><span>Social Life</span></p> <p class="description"> Life outside the EQuad is key to your growth </p> </div> </a> </div> </div> </section> <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="gradOpen = !gradOpen" @keydown.enter="gradOpen = !gradOpen" :aria-expanded="gradOpen ? 'true' : 'false'" :class="{ 'is-active': gradOpen }" > <div class="name-and-description"> <p class="name"><span>Graduate</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="gradOpen" @click.outside="gradOpen = false" @keydown.enter.outside="gradOpen = false" x-transition > <div class="column"> <p class="nav-items-group-title">General information</p> <div class="nav-item second-tier"> <a href="/graduate-studies/prospective-students"> <div class="name-and-description"> <p class="name"><span>Overview</span></p> <p class="description"> Learn to push the boundaries of your field and lead projects </p> </div> </a> </div> <div x-data="{ pathwaysOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="pathwaysOpen = !pathwaysOpen" @keydown.enter="pathwaysOpen = !pathwaysOpen" :aria-expanded="pathwaysOpen ? 'true' : 'false'" :class="{ 'is-active': pathwaysOpen }" > <div class="name-and-description"> <p class="name"><span>Academic Pathways</span></p> <p class="description"> Meet faculty and grad students, learn about applying </p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="pathwaysOpen" @click.outside="pathwaysOpen = false" @keydown.enter.outside="pathwaysOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/graduate-studies/academic-pathways/prospective-graduate-students" > <div class="name-and-description"> <p class="name"> <span> Pathways to Graduate School for Rising College Seniors</span > </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/graduate-studies/academic-pathways/prospective-faculty" > <div class="name-and-description"> <p class="name"> <span> Princeton Pathway into the Academy Program</span> </p> </div> </a> </div> </section> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/degrees-and-research"> <div class="name-and-description"> <p class="name"><span>Degrees and Research</span></p> <p class="description"> Doctoral programs in six departments cover 40 specialties </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/princeton-engineers"> <div class="name-and-description"> <p class="name"><span>Princeton Engineers</span></p> <p class="description"> Profiles of current graduate students </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/funding"> <div class="name-and-description"> <p class="name"><span>Funding</span></p> <p class="description"> Every Ph.D. student receives full funding </p> </div> </a> </div> </div> <div class="column"> <p class="nav-items-group-title">For prospective students</p> <div class="nav-item second-tier"> <a href="/graduate-studies/student-organizations"> <div class="name-and-description"> <p class="name"><span>Student Organizations</span></p> <p class="description"> Several groups cater specifically to engineering grad students </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/social-life"> <div class="name-and-description"> <p class="name"><span>Social Life</span></p> <p class="description"> An array of opportunities, plus proximity to NYC, Philly </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/careers"> <div class="name-and-description"> <p class="name"><span>Careers</span></p> <p class="description">Many paths beyond grad school</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/faq"> <div class="name-and-description"> <p class="name"><span>FAQ</span></p> <p class="description">Your questions answered</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/graduate-studies/resources-for-current-students"> <div class="name-and-description"> <p class="name"> <span>Resources for Current Students</span> </p> <p class="description"> Programs to support your academic goals </p> </div> </a> </div> </div> </section> <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="deptOpen = !deptOpen" @keydown.enter="deptOpen = !deptOpen" :aria-expanded="deptOpen ? 'true' : 'false'" :class="{ 'is-active': deptOpen }" > <div class="name-and-description"> <p class="name"><span>Departments</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="deptOpen" @click.outside="deptOpen = false" @keydown.enter.outside="deptOpen = false" x-transition > <div class="column"> <div class="nav-item second-tier"> <a href="/departments/chemical-and-biological-engineering"> <div class="name-and-description"> <p class="name"> <span>Chemical and Biological Engineering</span> </p> <p class="description"> Advancing human health, energy, materials science, and industrial processes </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/departments/civil-and-environmental-engineering"> <div class="name-and-description"> <p class="name"> <span>Civil and Environmental Engineering</span> </p> <p class="description"> Fundamental insights into the built and natural environments, and interactions between the two </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/departments/computer-science"> <div class="name-and-description"> <p class="name"><span>Computer Science</span></p> <p class="description"> Leading the field through foundational theory, applications, and societal impact </p> </div> </a> </div> </div> <div class="column"> <div class="nav-item second-tier"> <a href="/departments/electrical-computer-engineering"> <div class="name-and-description"> <p class="name"> <span>Electrical and Computer Engineering</span> </p> <p class="description"> Improving human health, energy systems, computing and communications, and security </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/departments/mechanical-and-aerospace-engineering"> <div class="name-and-description"> <p class="name"> <span>Mechanical and Aerospace Engineering</span> </p> <p class="description"> Solving problems in energy, combustion, fluids, lasers, materials science, robotics and control systems, and nuclear security </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/departments/operations-research-and-financial-engineering" > <div class="name-and-description"> <p class="name"> <span> Operations Research and Financial Engineering</span> </p> <p class="description"> Developing mathematical and computational tools for making decisions under uncertainty </p> </div> </a> </div> </div> </section> <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="centersOpen = !centersOpen" @keydown.enter="centersOpen = !centersOpen" :aria-expanded="centersOpen ? 'true' : 'false'" :class="{ 'is-active': centersOpen }" > <div class="name-and-description"> <p class="name"><span>Centers & Initiatives</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="centersOpen" @click.outside="centersOpen = false" @keydown.enter.outside="centersOpen = false" x-transition > <div class="column"> <div class="nav-item second-tier"> <a href="/centers/aiprinceton"> <div class="name-and-description"> <p class="name"><span>AI at Princeton</span></p> <p class="description"> Nimble, high-intensity research teams across engineering, science, social science, and humanities </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/acee"> <div class="name-and-description"> <p class="name"> <span> Andlinger Center for Energy and the Environment</span > </p> <p class="description"> Decarbonizing the world while increasing energy access worldwide </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/citp"> <div class="name-and-description"> <p class="name"> <span>Center for Information Technology Policy</span> </p> <p class="description"> Promoting informed discussion of digital technologies and their role in society </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/center-decentralization-power-through-blockchain-technology-decenter" > <div class="name-and-description"> <p class="name"><span>DeCenter</span></p> <p class="description"> Exploring a wide range of decentralized technologies and their implications for society </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/keller-center"> <div class="name-and-description"> <p class="name"> <span> Keller Center for Innovation in Engineering Education</span > </p> <p class="description"> Enabling students and faculty across Princeton to realize their aspirations for addressing societal challenges </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/omenn-darling-bioengineering-institute"> <div class="name-and-description"> <p class="name"> <span>Omenn-Darling Bioengineering Institute</span> </p> <p class="description"> Interdisciplinary research on cellular, device and computational bioengineering </p> </div> </a> </div> </div> <div class="column"> <div class="nav-item second-tier"> <a href="/centers/metropolis-initiative"> <div class="name-and-description"> <p class="name"><span>Metropolis Initiative</span></p> <p class="description"> Innovations to make cities more sustainable, resilient, and equitable </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/nextg"> <div class="name-and-description"> <p class="name"><span>NextG</span></p> <p class="description"> Creating the intelligent networks of the future </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/pmi"> <div class="name-and-description"> <p class="name"><span>Princeton Materials Institute</span></p> <p class="description"> Multidisciplinary research driving advances in materials science and photonics </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/princeton-quantum-initiative"> <div class="name-and-description"> <p class="name"><span>Princeton Quantum Initiative</span></p> <p class="description"> Taking a ‘full-stack’ approach to advancing quantum information science </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/centers/robotics-center"> <div class="name-and-description"> <p class="name"><span>Princeton Robotics</span></p> <p class="description"> Advancing innovative, safe, and ethical use of robotic systems </p> </div> </a> </div> </div> </section> <div class="nav-item first-tier"> <a tabindex="0" role="button" @click="moreOpen = !moreOpen" @keydown.enter="moreOpen = !moreOpen" :aria-expanded="moreOpen ? 'true' : 'false'" :class="{ 'is-active': moreOpen }" > <div class="name-and-description"> <p class="name"><span>More</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="moreOpen" @click.outside="moreOpen = false" @keydown.enter.outside="moreOpen = false" x-transition > <div class="column"> <p class="nav-items-group-title">Resources</p> <div class="nav-item second-tier"> <a href="/resources"> <div class="name-and-description"> <p class="name"><span>Resources</span></p> <p class="description"> Tools and policies for faculty and staff </p> </div> </a> </div> <div x-data="{ policyOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="policyOpen = !policyOpen" @keydown.enter="policyOpen = !policyOpen" :aria-expanded="policyOpen ? 'true' : 'false'" :class="{ 'is-active': policyOpen }" > <div class="name-and-description"> <p class="name"><span>Policies and Procedures</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="policyOpen" @click.outside="policyOpen = false" @keydown.enter.outside="policyOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures"> <div class="name-and-description"> <p class="name"><span>Policy Overview</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/poster-policy"> <div class="name-and-description"> <p class="name"><span>Poster Policy</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/resource-recovery" ><div class="name-and-description"> <p class="name"><span>Resource Recovery Program</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/gas-cylinders"> <div class="name-and-description"> <p class="name"><span>Gas Cylinders</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/lab-coats"> <div class="name-and-description"> <p class="name"><span>Lab Coats</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/machine-shop"> <div class="name-and-description"> <p class="name"><span>Machine Shop Request Form</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/mailroom-shipping-receiving" > <div class="name-and-description"> <p class="name"> <span>Mailroom, Shipping and Receiving</span> </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/nitrogen-policy"> <div class="name-and-description"> <p class="name"><span>Nitrogen Policy</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/pet-policy"> <div class="name-and-description"> <p class="name"><span>Pet Policy and Guidelines</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/stockroom"> <div class="name-and-description"> <p class="name"><span>Stockroom</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/policies-and-procedures/seas-vehicles"> <div class="name-and-description"> <p class="name"><span>Vehicle Reservations</span></p> </div> </a> </div> </section> </div> <div x-data="{ safetyOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="safetyOpen = !safetyOpen" @keydown.enter="safetyOpen = !safetyOpen" :aria-expanded="safetyOpen ? 'true' : 'false'" :class="{ 'is-active': safetyOpen }" > <div class="name-and-description"> <p class="name"><span>Safety</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="safetyOpen" @click.outside="safetyOpen = false" @keydown.enter.outside="safetyOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/resources/safety/general-safety"> <div class="name-and-description"> <p class="name"><span>Overview</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/safety/roles-and-responsibilities"> <div class="name-and-description"> <p class="name"> <span>Roles and Responsibilities</span> </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/safety/emergency-response"> <div class="name-and-description"> <p class="name"><span>Emergency Response</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/safety/illness-injury-reporting"> <div class="name-and-description"> <p class="name"> <span>Illness and Injury Reporting</span> </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/safety/general-safety"> <div class="name-and-description"> <p class="name"><span>General Safety</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/safety/dale-grieb-safety-award" ><div class="name-and-description"> <p class="name"><span>Dale Grieb Safety Award</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/safety/safety-handbook"> <div class="name-and-description"> <p class="name"><span>Safety Handbook</span></p> </div> </a> </div> </section> </div> <div x-data="{ fundingOpen: false}" x-cloak> <div class="nav-item second-tier"> <a tabindex="0" role="button" @click="fundingOpen = !fundingOpen" @keydown.enter="fundingOpen = !fundingOpen" :aria-expanded="fundingOpen ? 'true' : 'false'" :class="{ 'is-active': fundingOpen }" > <div class="name-and-description"> <p class="name"><span>Funding</span></p> </div> <i class="fa-solid fa-chevron-right"></i> </a> </div> <section x-show="fundingOpen" @click.outside="fundingOpen = false" @keydown.enter.outside="fundingOpen = false" x-transition > <div class="nav-item third-tier"> <a href="/funding/"> <div class="name-and-description"> <p class="name"><span>Funding Overview</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/funding/funding-guide-engineering-faculty" > <div class="name-and-description"> <p class="name"> <span>Funding Guide for Engineering Faculty</span> </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/funding/innovation-grants"> <div class="name-and-description"> <p class="name"><span>Innovation Grants</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/funding/seed-grants"> <div class="name-and-description"> <p class="name"><span>Seed Grants</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/resources/funding/william-pierson-field-fund-visiting-lecturers" > <div class="name-and-description"> <p class="name"> <span> William Pierson Field Fund for Visiting Lecturers</span > </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/funding/travel-funds"> <div class="name-and-description"> <p class="name"><span>Travel funds</span></p> </div> </a> </div> <div class="nav-item third-tier"> <a href="https://docs.google.com/forms/d/e/1FAIpQLSefr0g-gDTaZMq3yJHEOmCg9WiOKZxioUE9EeYlfSKQhRfnmQ/viewform" > <div class="name-and-description"> <p class="name"> <span>Diversity and Inclusion Initiatives</span> </p> </div> </a> </div> <div class="nav-item third-tier"> <a href="/funding/william-r-kenan-jr-visiting-professorship-for-distinguished-teaching" > <div class="name-and-description"> <p class="name"> <span> William R. Kenan, Jr. Visiting Professorship for Distinguished Teaching</span > </p> </div> </a> </div> </section> </div> <p class="nav-items-group-title">Quick links</p> <div class="nav-item second-tier"> <a href="/resources/faculty-directory"> <div class="name-and-description"> <p class="name"><span>Faculty Directory</span></p> <p class="description">Browse and filter our faculty list</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/jobs"> <div class="name-and-description"> <p class="name"><span>Jobs</span></p> <p class="description"> See open faculty positions across engineering and applied science </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about"> <div class="name-and-description"> <p class="name"><span>Contact</span></p> <p class="description"> A dean’s welcome and key points of contact </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/about/visitors"> <div class="name-and-description"> <p class="name"><span>Visit</span></p> <p class="description">Directions and a map</p> </div> </a> </div> </div> <div class="column"> <p class="nav-items-group-title">News</p> <div class="nav-item second-tier"> <a href="/events"> <div class="name-and-description"> <p class="name"><span>Events</span></p> <p class="description">Upcoming events across the school</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/news"> <div class="name-and-description"> <p class="name"><span>News</span></p> <p class="description"> A filterable listing of news and features </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/podcasts"> <div class="name-and-description"> <p class="name"><span>Podcasts</span></p> <p class="description"> A deeper look at the research from our faculty, students and alumni </p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/news/equad-magazine"> <div class="name-and-description"> <p class="name"><span>EQuad Magazine</span></p> <p class="description">Our semiannual news magazine</p> </div> </a> </div> <div class="nav-item second-tier"> <a href="/news/media-inquiries"> <div class="name-and-description"> <p class="name"><span>Media Inquiries</span></p> <p class="description">Information for journalists</p> </div> </a> </div> </div> </section> <section class="social-media"> <ul> <li> <a href="https://www.linkedin.com/school/princetonengineering" ><i class="fa-brands fa-linkedin"></i ></a> </li> <li> <a href="https://www.instagram.com/eprinceton" ><i class="fa-brands fa-instagram"></i ></a> </li> <li> <a href="https://www.x.com/eprinceton" ><i class="fa-brands fa-x-twitter"></i ></a> </li> <li> <a href="https://www.facebook.com/princetonengineering" ><i class="fa-brands fa-facebook"></i ></a> </li> <li> <a href="https://www.youtube.com/princetonengineering" ><i class="fa-brands fa-youtube"></i ></a> </li> </ul> </section> </nav> <section class="engineering-search-modal is-layout-flow wp-block-group-is-layout-flow" x-show="searchOpen" @click.outside="searchOpen = false" @keydown.enter.outside="searchOpen = false" @keydown.esc.window="searchOpen = false" x-transition x-cloak > <form role="search" method="get" class="search-form" action="https://engineering.princeton.edu/"> <label><br /> <span class="screen-reader-text">Search for:</span><br /> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /><br /> </label><br /> <input type="submit" class="search-submit" value="Search" /><br /> </form> </section> <div class="engineering-modal-bg" x-show="open | searchOpen" x-transition x-cloak ></div> </div> </div> </div> </header> <main class="wp-block-group default-page no-featured-image is-layout-flow wp-block-group-is-layout-flow"> <article class="wp-block-group page is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group page__inner is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group page__header is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group page__header__content is-layout-flow wp-block-group-is-layout-flow"> <svg class="primary-chevron" viewBox="0 0 101 70" fill="none" xmlns="http://www.w3.org/2000/svg" > <g> <path fill-rule="evenodd" clip-rule="evenodd" d="M81.5853 69.6198L100.62 50.5856L50.5511 0.51725L0.482788 50.5856L19.517 69.6198L50.5511 38.5857L81.5853 69.6198Z" fill="#55D6F4" /> </g> </svg> <svg class="secondary-chevron" viewBox="0 0 101 70" fill="none" xmlns="http://www.w3.org/2000/svg" > <g> <path fill-rule="evenodd" clip-rule="evenodd" d="M81.5853 69.6198L100.62 50.5856L50.5511 0.51725L0.482788 50.5856L19.517 69.6198L50.5511 38.5857L81.5853 69.6198Z" fill="#7600D8" /> </g> </svg> </div> </div> <nav class="wp-block-group breadcrumbs is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group breadcrumbs__inner is-layout-flow wp-block-group-is-layout-flow"> <p> <span><span><a href="https://engineering.princeton.edu/">Home</a></span> » <span><a href="https://engineering.princeton.edu/resources">Resources</a></span> » <span><a href="https://engineering.princeton.edu/resources/policies-and-procedures">Policies and Procedures</a></span> » <span class="breadcrumb_last" aria-current="page">Lab Coats</span></span></p> </div> </nav> <div class="wp-block-group page__content is-layout-flow wp-block-group-is-layout-flow"> <h1 class="page__title not-prose wp-block-post-title">Lab Coats</h1> <div class="entry-content wp-block-post-content is-layout-flow wp-block-post-content-is-layout-flow"> <p class="lede"> Lab Coats may be purchased through your Department Purchasing Office. </p> <hr class="wp-block-separator has-alpha-channel-opacity"/> <h2 class="wp-block-heading" id="h-lab-coat-cleaning-service">Lab Coat Cleaning Service</h2> <p>Soiled Coats are brought to the 3rd Floor AD Link for placement in the locker.</p> <div class="block__notes note--yellow" style="background-color: #FEF9C3"> <div class="block__notes__content"> <h4 class="block__notes__title"></h3> <div class="block__notes__description"> <div class="wp-block-engineering-notes"> <p>Coats must be in the locker by end of day Wednesday for the weekly pickup.</p> </div> </div> </div><!-- .block__notes__content --> </div><!-- .block__notes --> <p>Each soiled coat must be labeled with a lab/room number. If no label is present, please add this information on the inside collar using a black permanent marker and also affix a red tag with the same information and attach to the lab coat button.</p> <div class="block__notes note--yellow" style="background-color: #FEF9C3"> <div class="block__notes__content"> <h4 class="block__notes__title"></h3> <div class="block__notes__description"> <div class="wp-block-engineering-notes"> <p>Lab coats without the required information will not be picked up.</p> </div> </div> </div><!-- .block__notes__content --> </div><!-- .block__notes --> <p>Clean lab coats are returned the following Thursday. An email notification will be sent when they are ready for pick up.</p> <hr class="wp-block-separator has-alpha-channel-opacity"/> <h2 class="wp-block-heading" id="h-contact">Contact</h2> <div class="block__contact-person not-prose"> <div class="block__contact-person__content"> <div class="block__contact-person__info"> <p class="block__contact-person__name">Anthony Schulz</p> <p class="block__contact-person__title">Logistics & Services Supervisor</p> <p class="block__contact-person__phone"><i class="fa fa-phone"></i><a href="tel:(609) 258-4739">(609) 258-4739</a></p> <p class="block__contact-person__email"><i class="fa fa-envelope"></i><a href="mailto:aschulz@princeton.edu">aschulz@princeton.edu</a></p> </div><!-- .block__contact-person__info --> </div><!-- .block__contact-person__content --> </div><!-- .block__contact-person --> </div> </div> </div> </article> </main> <footer class="wp-block-template-part"> <div class="wp-block-group engineering-site-footer is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group engineering-site-footer__content is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-group logos-and-address"> <h3 class="engineering-logo is-layout-flow wp-block-group-is-layout-flow"> <a href="/">School of Engineering & Applied Science</a> </h3> <div class="wp-block-group engineering-address is-layout-flow wp-block-group-is-layout-flow"> <address> <p>School of Engineering and Applied Science</p> <p>Princeton, New Jersey 08544</p> </address> </div> <div class="wp-block-group engineering-newsletter is-layout-flow wp-block-group-is-layout-flow"> <div id="mc_embed_shell" style="width: 100%"> <link href="//cdn-images.mailchimp.com/embedcode/classic-061523.css" rel="stylesheet" type="text/css" /> <div id="mc_embed_signup"> <form action="https://princeton.us15.list-manage.com/subscribe/post?u=815013b76bec0c1d6fae893ba&id=329ebd13b8&f_id=00479be0f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" > <div id="mc_embed_signup_scroll"> <h2>Engineering Newsletter Signup</h2> <div class="mc-field-group"> <input type="email" name="EMAIL" placeholder="email address (required)" class="required email" id="mce-EMAIL" required="" value="" /> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display: none" ></div> <div class="response" id="mce-success-response" style="display: none" ></div> </div> <div aria-hidden="true" style="position: absolute; left: -5000px" > <input type="text" name="b_815013b76bec0c1d6fae893ba_329ebd13b8" tabindex="-1" value="" /> </div> <div class="clear"> <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="button" value="Subscribe" /> </div> </div> </form> </div> <script type="text/javascript" src="//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js" ></script> <script type="text/javascript"> (function ($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0] = "EMAIL"; ftypes[0] = "email"; fnames[1] = "FNAME"; ftypes[1] = "text"; fnames[2] = "LNAME"; ftypes[2] = "text"; fnames[3] = "ADDRESS"; ftypes[3] = "address"; fnames[4] = "PHONE"; ftypes[4] = "phone"; fnames[5] = "MMERGE5"; ftypes[5] = "text"; fnames[6] = "MMERGE6"; ftypes[6] = "text"; fnames[7] = "MMERGE7"; ftypes[7] = "text"; })(jQuery); var $mcj = jQuery.noConflict(true); </script> </div> </div> </div> <div class="equal-opportunity is-layout-flow wp-block-group-is-layout-flow"> <p> Equal Opportunity and Nondiscrimination at Princeton University: Princeton University believes that commitment to principles of fairness and respect for all is favorable to the free and open exchange of ideas, and the University seeks to reach out as widely as possible in order to attract the ablest individuals as students, faculty, and staff. In applying this policy, the University is committed to nondiscrimination on the basis of personal beliefs or characteristics such as political views, religion, national origin, ancestry, race, color, sex, sexual orientation, gender identity or expression, pregnancy/childbirth, age, marital or domestic partnership status, veteran status, disability, genetic information and/or other characteristics protected by applicable law in any phase of its education or employment programs or activities. In addition, pursuant to Title IX of the Education Amendments of 1972 and supporting regulations, Princeton does not discriminate on the basis of sex in the education programs or activities that it operates; this extends to admission and employment. Inquiries about the application of Title IX and its supporting regulations may be directed to the Assistant Secretary for Civil Rights, Office for Civil Rights, U.S. Department of Education or to the University’s Sexual Misconduct/Title IX Coordinator. See Princeton’s full Equal Opportunity Policy and Nondiscrimination Statement. </p> </div> <div class="university-info is-layout-flow wp-block-group-is-layout-flow"> <p>© 2024 The Trustees of Princeton University</p> <div class="wp-block-group university-address is-layout-flow wp-block-group-is-layout-flow"> <address> <p>Princeton, New Jersey 08544 United States</p> <p> <strong>Operator:</strong> <a href="tel+6092583000">(609) 258-3000</a> </p> </address> <p> <a href="https://www.princeton.edu/content/copyright-infringement" >Copyright Infringement</a > </p> </div> <div class="wp-block-group university-footer-logo is-layout-flow wp-block-group-is-layout-flow"> <h3 class="university-logo"> <a href="https://www.princeton.edu">Princeton University</a> </h3> <p> <a href="https://www.princeton.edu/privacy-notice">Privacy Notice</a> </p> </div> </div> </div> </div> </footer> </div> <script id="wp-block-template-skip-link-js-after"> ( function() { var skipLinkTarget = document.querySelector( 'main' ), sibling, skipLinkTargetID, skipLink; // Early exit if a skip-link target can't be located. if ( ! skipLinkTarget ) { return; } /* * Get the site wrapper. * The skip-link will be injected in the beginning of it. */ sibling = document.querySelector( '.wp-site-blocks' ); // Early exit if the root element was not found. if ( ! sibling ) { return; } // Get the skip-link target's ID, and generate one if it doesn't exist. skipLinkTargetID = skipLinkTarget.id; if ( ! skipLinkTargetID ) { skipLinkTargetID = 'wp--skip-link--target'; skipLinkTarget.id = skipLinkTargetID; } // Create the skip link. skipLink = document.createElement( 'a' ); skipLink.classList.add( 'skip-link', 'screen-reader-text' ); skipLink.href = '#' + skipLinkTargetID; skipLink.innerHTML = 'Skip to content'; // Inject the skip link. sibling.parentElement.insertBefore( skipLink, sibling ); }() ); </script> <script src="https://engineering.princeton.edu/wp-content/themes/engineering/app/dist/assets/index-vV-Zt8Fy.js?ver=1.0.3" id="vite-script-js"></script> <script src="https://engineering.princeton.edu/wp-content/themes/engineering/assets/js/main.js?ver=1732641275" id="main-js"></script> <script src="https://engineering.princeton.edu/wp-content/themes/engineering/assets/js/main.min.js?ver=1732641275" id="main-min-js"></script> <script src="https://kit.fontawesome.com/8299227453.js" id="fontawesome-js"></script> <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js" id="alpinejs-js"></script> <script src="https://engineering.princeton.edu/wp-content/themes/engineering/assets/js/main.min.js" id="custom-js-js"></script> <script src="https://engineering.princeton.edu/wp-includes/js/hoverIntent.min.js?ver=1.10.2" id="hoverIntent-js"></script> <script id="megamenu-js-extra"> var megamenu = {"timeout":"300","interval":"100"}; </script> <script src="https://engineering.princeton.edu/wp-content/plugins/megamenu/js/maxmegamenu.js?ver=3.3.1.2" id="megamenu-js"></script> <script src="https://engineering.princeton.edu/wp-content/plugins/megamenu-pro/assets/public.js?ver=2.4" id="megamenu-pro-js"></script> <script type="text/javascript"> /* <![CDATA[ */ document.querySelectorAll("ul.nav-menu").forEach( ulist => { if (ulist.querySelectorAll("li").length == 0) { ulist.style.display = "none"; } } ); /* ]]> */ </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-b00d4b4e7850ab82d90","applicationID":"1529948474","transactionName":"NFUAYEdRDBUFW0ReVw0fI1dBWQ0IS0xVWkgPURZRGFMDCBJZQw==","queueTime":0,"applicationTime":428,"atts":"GBIDFg9LHxs=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>