CINXE.COM
Michigan Technology Community News – News for, by, and about the technology community at U-M
<!DOCTYPE html> <!--[if IE 7]> <html class="ie ie7" lang="en-US"> <![endif]--> <!--[if IE 8]> <html class="ie ie8" lang="en-US"> <![endif]--> <!--[if !(IE 7) | !(IE 8) ]><!--> <html lang="en-US"> <!--<![endif]--> <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={xpid:"UgIBUlVVCxABVFRaAQUPVlAF",licenseKey:"NRJS-52cb374c28765929f62",applicationID:"1058648044"};;/*! For license information please see nr-loader-spa-1.283.1.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(3333);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={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},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,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},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,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,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},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,harvester: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.283.1",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),c&&h(c.prototype,f),h(a.gm,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])}},9414:(e,t,r)=>{"use strict";r.d(t,{J:()=>c});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get("logger")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],"wrap-logger-",(()=>s.get(f))),u}},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,{$v:()=>u,TZ:()=>n,Zp:()=>i,kd:()=>c,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,c=["PageAction","UserAction","BrowserPerformance"],u={MARKS:"experimental.marks",MEASURES:"experimental.measures",RESOURCES:"experimental.resources"}},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,{A$:()=>o,ET:()=>a,TZ:()=>s,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log",s=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(8154),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()))}},8154:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(6154),r(9566),r(384);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:()=>c,Qu:()=>u,TZ:()=>s,ih:()=>d,pP:()=>a,tC:()=>i});var n=r(860);const i=["click","keydown","submit","popstate"],o="api",a="initialPageLoad",s=n.K7.softNav,c={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},u={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},d={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:()=>T,uP:()=>s,wW:()=>E,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",E="cb"+R,A="jsTime",T="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")},8969:(e,t,r)=>{"use strict";r.d(t,{j:()=>O});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(8154),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","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(9414);function x(){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 A=r(9417),T=r(5603),N=r(5284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let _=!1;function O(e,t={},g,O){let{init:I,info:P,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();P||(I=L.init,P=L.info,j=L.loader_config),(0,A.xN)(e.agentIdentifier,I||{}),(0,T.a)(e.agentIdentifier,j||{}),P.jsAttributes??={},d.bv&&(P.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,P);const H=(0,A.D0)(e.agentIdentifier),M=[P.beacon,P.errorBeacon];_||(H.proxy.assets&&(S(H.proxy.assets),M.push(H.proxy.assets)),H.proxy.beacon&&M.push(H.proxy.beacon),x(),(0,h.US)("activatedFeatures",N.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?M:[]],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 x=s.ee.get(e),A=x.get("tracer");E[e]=b.g.OFF,x.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var T="api-",N=T+"ixn-";function S(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(T,n,!0,o||null===r?"session":void 0)(t,r)}function _(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,x),(0,w.R)(x,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,x),(0,R.J)(x,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(T,e,!0,"api")})),g.addPageAction=I(T,"addPageAction",!0,n.K7.genericEvents),g.recordCustomEvent=I(T,"recordCustomEvent",!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(T,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return S(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 S("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return S("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,x),x.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,x),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},g.interaction=function(e){return(new _).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,x),h||(0,a.p)(N+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(A.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 A.emit("fn-err",[arguments,this,t],r),t}finally{A.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,x),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){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),x.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{O[e]=I(N,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(N,"routeName",void 0,n.K7.softNav):I(T,"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,x),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,x)},d.RI?(0,u.GG)((()=>P()),!0):P(),g}(e.agentIdentifier,O,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),_=!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:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,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"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.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.283.1.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.1.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-xh2gny9FbPW5pomtWyy7hHdQHGboXB/N4nyn8DfA0WA2vCwX0A4j2oDh5iaHPZ7LExtpCN1wH+cmFhC5+XZpvw==",249:"sha512-QwbAv951CmpiBMYrGDX13s51PFIraP7TGD1mhcZv8jILwi1qPZbPL+c98zB6u5kWpOPcdfGLroZW+38lG3ZVHA==",212:"sha512-hVJwKgbpekN6SB9bmRkjdGJxXRXeHDsrVRlTC1EMUEYSeaO8NWR6CjzsDA2iUrhmD1sv4p1TCx6tYULmyZ2Tbw=="};(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.283.1.PROD"]=self["webpackChunk:NRBA-1.283.1.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(){this.agentIdentifier=(0,r.LA)(16)}#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)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",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(8969);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(!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),t.runtime.harvester.initializedAggregates.push(this.featAggregate),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),E=i(2843),A=i(3878),T=i(782),N=i(1863);class S extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),p.RI&&((0,E.u)((()=>(0,x.p)("docHidden",[(0,N.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,N.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var _=i(8154);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new j(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 j(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 M 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,t)=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,N.t)(),!0,{},this.#r,t],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,N.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,N.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 D=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,D.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,P.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(void 0===p.gm.XMLHttpRequest)return n;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-",J=Y+"body-",X=["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,X.forEach((e=>{r(Q[te],e,J),r(ee[te],e,J)})),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,P.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){E(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,N.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,N.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,N.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,N.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,N.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,N.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,N.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,N.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):E(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function E(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)(_.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:Ee,Lc:Ae,uP:Te,Rz:Ne}=be;class Se extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,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(Te,(function(e,t){this.bstStart=(0,N.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,N.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Ne+Re,(function(e){this.time=(0,N.t)(),this.startPath=location.pathname+location.hash})),r.on(Ne+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 _e=i(2614);class Oe 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(_e.H3,"_").concat(_e.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===_e.g.FULL||e.sessionReplayMode===_e.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,agentRef:this.#o}),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!==_e.g.FULL&&this.featAggregate.initializeRecording(_e.g.FULL,!0):(this.#i=_e.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==_e.g.FULL&&(this.recorder.parent.mode=_e.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class Pe 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,N.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,N.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 je=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 Me(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 De={},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(De[t.debugId]++)return t;De[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:Je,wW:Xe,e5:$e,tH:Qe,uP:et,rw:tt,Lc:rt}=je;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=Me(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,N.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,N.t)();this[$e]=~~this[$e]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,N.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Xe,m),o.on(Xe,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([Qe+Ze,Qe+"-done",Qe+Je+Ze,Qe+Je+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Xe,"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,Qe+Ze),v(d,Qe+"-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,e.init.performance.resources.enabled];if(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=>{const t=(0,v.s)((e=>{(0,x.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled&&p.gm.PerformanceObserver?.supportedEntryTypes.includes("resource"))){new PerformanceObserver((e=>{e.getEntries().forEach((e=>{(0,x.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)}))})).observe({type:"resource",buffered:!0})}r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785),ct=i(9414);class ut extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;(0,ct.J)(r,p.gm.console,"log",{level:"info"}),(0,ct.J)(r,p.gm.console,"error",{level:"error"}),(0,ct.J)(r,p.gm.console,"warn",{level:"warn"}),(0,ct.J)(r,p.gm.console,"info",{level:"info"}),(0,ct.J)(r,p.gm.console,"debug",{level:"debug"}),(0,ct.J)(r,p.gm.console,"trace",{level:"trace"}),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){super(),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,S,Se,Oe,O,M,ot,ut,Pe,nt],loaderType:"spa"})})()})();</script> <meta name="viewport" content="width=device-width" /> <link rel="profile" href="http://gmpg.org/xfn/11" /> <!--[if lt IE 9]> <script src="https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/js/html5.js" type="text/javascript"></script> <![endif]--> <style type="text/css"> @media screen and (max-width: 767px) { .themonic-nav ul.nav-menu, .themonic-nav div.nav-menu > ul, .themonic-nav li { border-bottom: none; } } .site-header .themonic-logo {margin: 0; padding: 0;} .site-header .socialmedia {margin-top: -50px;} @media screen and (max-width: 1100px) and (min-width: 768px) {.site-header .themonic-logo img {width: 100%;}} .themonic-nav ul.nav-menu, .themonic-nav div.nav-menu > ul {border-top: none;} .themonic-nav {margin-top:-2px;} .js .selectnav {border-radius: 0; margin-left:-0.4px; width: 100%;} .top-header { padding: 20px; float: left; } .socialmedia a i { border-radius: 0; } </style> <title>Michigan Technology Community News – News for, by, and about the technology community at U-M</title> <meta name='robots' content='max-image-preview:large' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <link rel='dns-prefetch' href='//michigan.it.umich.edu' /> <link rel='dns-prefetch' href='//ws.sharethis.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel="alternate" type="application/rss+xml" title="Michigan Technology Community News » Feed" href="https://michigan.it.umich.edu/news/feed/" /> <link rel="alternate" type="application/rss+xml" title="Michigan Technology Community News » Comments Feed" href="https://michigan.it.umich.edu/news/comments/feed/" /> <!-- This site uses the Google Analytics by MonsterInsights plugin v9.2.4 - Using Analytics tracking - https://www.monsterinsights.com/ --> <script src="//www.googletagmanager.com/gtag/js?id=G-X6C5NE3YFN" data-cfasync="false" data-wpfc-render="false" type="text/javascript" async></script> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript"> var mi_version = '9.2.4'; var mi_track_user = true; var mi_no_track_reason = ''; var MonsterInsightsDefaultLocations = {"page_location":"https:\/\/michigan.it.umich.edu\/news\/"}; if ( typeof MonsterInsightsPrivacyGuardFilter === 'function' ) { var MonsterInsightsLocations = (typeof MonsterInsightsExcludeQuery === 'object') ? MonsterInsightsPrivacyGuardFilter( MonsterInsightsExcludeQuery ) : MonsterInsightsPrivacyGuardFilter( MonsterInsightsDefaultLocations ); } else { var MonsterInsightsLocations = (typeof MonsterInsightsExcludeQuery === 'object') ? MonsterInsightsExcludeQuery : MonsterInsightsDefaultLocations; } var disableStrs = [ 'ga-disable-G-X6C5NE3YFN', ]; /* Function to detect opted out users */ function __gtagTrackerIsOptedOut() { for (var index = 0; index < disableStrs.length; index++) { if (document.cookie.indexOf(disableStrs[index] + '=true') > -1) { return true; } } return false; } /* Disable tracking if the opt-out cookie exists. */ if (__gtagTrackerIsOptedOut()) { for (var index = 0; index < disableStrs.length; index++) { window[disableStrs[index]] = true; } } /* Opt-out function */ function __gtagTrackerOptout() { for (var index = 0; index < disableStrs.length; index++) { document.cookie = disableStrs[index] + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStrs[index]] = true; } } if ('undefined' === typeof gaOptout) { function gaOptout() { __gtagTrackerOptout(); } } window.dataLayer = window.dataLayer || []; window.MonsterInsightsDualTracker = { helpers: {}, trackers: {}, }; if (mi_track_user) { function __gtagDataLayer() { dataLayer.push(arguments); } function __gtagTracker(type, name, parameters) { if (!parameters) { parameters = {}; } if (parameters.send_to) { __gtagDataLayer.apply(null, arguments); return; } if (type === 'event') { parameters.send_to = monsterinsights_frontend.v4_id; var hookName = name; if (typeof parameters['event_category'] !== 'undefined') { hookName = parameters['event_category'] + ':' + name; } if (typeof MonsterInsightsDualTracker.trackers[hookName] !== 'undefined') { MonsterInsightsDualTracker.trackers[hookName](parameters); } else { __gtagDataLayer('event', name, parameters); } } else { __gtagDataLayer.apply(null, arguments); } } __gtagTracker('js', new Date()); __gtagTracker('set', { 'developer_id.dZGIzZG': true, }); if ( MonsterInsightsLocations.page_location ) { __gtagTracker('set', MonsterInsightsLocations); } __gtagTracker('config', 'G-X6C5NE3YFN', {"forceSSL":"true","link_attribution":"true"} ); window.gtag = __gtagTracker; (function () { /* https://developers.google.com/analytics/devguides/collection/analyticsjs/ */ /* ga and __gaTracker compatibility shim. */ var noopfn = function () { return null; }; var newtracker = function () { return new Tracker(); }; var Tracker = function () { return null; }; var p = Tracker.prototype; p.get = noopfn; p.set = noopfn; p.send = function () { var args = Array.prototype.slice.call(arguments); args.unshift('send'); __gaTracker.apply(null, args); }; var __gaTracker = function () { var len = arguments.length; if (len === 0) { return; } var f = arguments[len - 1]; if (typeof f !== 'object' || f === null || typeof f.hitCallback !== 'function') { if ('send' === arguments[0]) { var hitConverted, hitObject = false, action; if ('event' === arguments[1]) { if ('undefined' !== typeof arguments[3]) { hitObject = { 'eventAction': arguments[3], 'eventCategory': arguments[2], 'eventLabel': arguments[4], 'value': arguments[5] ? arguments[5] : 1, } } } if ('pageview' === arguments[1]) { if ('undefined' !== typeof arguments[2]) { hitObject = { 'eventAction': 'page_view', 'page_path': arguments[2], } } } if (typeof arguments[2] === 'object') { hitObject = arguments[2]; } if (typeof arguments[5] === 'object') { Object.assign(hitObject, arguments[5]); } if ('undefined' !== typeof arguments[1].hitType) { hitObject = arguments[1]; if ('pageview' === hitObject.hitType) { hitObject.eventAction = 'page_view'; } } if (hitObject) { action = 'timing' === arguments[1].hitType ? 'timing_complete' : hitObject.eventAction; hitConverted = mapArgs(hitObject); __gtagTracker('event', action, hitConverted); } } return; } function mapArgs(args) { var arg, hit = {}; var gaMap = { 'eventCategory': 'event_category', 'eventAction': 'event_action', 'eventLabel': 'event_label', 'eventValue': 'event_value', 'nonInteraction': 'non_interaction', 'timingCategory': 'event_category', 'timingVar': 'name', 'timingValue': 'value', 'timingLabel': 'event_label', 'page': 'page_path', 'location': 'page_location', 'title': 'page_title', 'referrer' : 'page_referrer', }; for (arg in args) { if (!(!args.hasOwnProperty(arg) || !gaMap.hasOwnProperty(arg))) { hit[gaMap[arg]] = args[arg]; } else { hit[arg] = args[arg]; } } return hit; } try { f.hitCallback(); } catch (ex) { } }; __gaTracker.create = newtracker; __gaTracker.getByName = newtracker; __gaTracker.getAll = function () { return []; }; __gaTracker.remove = noopfn; __gaTracker.loaded = true; window['__gaTracker'] = __gaTracker; })(); } else { console.log(""); (function () { function __gtagTracker() { return null; } window['__gtagTracker'] = __gtagTracker; window['gtag'] = __gtagTracker; })(); } </script> <!-- / Google Analytics by MonsterInsights --> <script type="text/javascript"> /* <![CDATA[ */ 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:\/\/michigan.it.umich.edu\/news\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.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-emoji-styles-inline-css' type='text/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> <link rel='stylesheet' id='wp-block-library-css' href='https://michigan.it.umich.edu/news/wp-includes/css/dist/block-library/style.min.css?ver=6.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='flex-posts-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/flex-posts/public/css/flex-posts.min.css?ver=1.11.0' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/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--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--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--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);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}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;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.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-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-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-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-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;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='fontawesome-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/olevmedia-shortcodes/assets/css/font-awesome.min.css?ver=6.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='omsc-shortcodes-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/olevmedia-shortcodes/assets/css/shortcodes.css?ver=6.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='omsc-shortcodes-tablet-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/olevmedia-shortcodes/assets/css/shortcodes-tablet.css?ver=6.7.2' type='text/css' media='screen and (min-width: 768px) and (max-width: 959px)' /> <link rel='stylesheet' id='omsc-shortcodes-mobile-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/olevmedia-shortcodes/assets/css/shortcodes-mobile.css?ver=6.7.2' type='text/css' media='screen and (max-width: 767px)' /> <link rel='stylesheet' id='perfect-pullquotes-styles-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/perfect-pullquotes/perfect-pullquotes.css?ver=1.7.5' type='text/css' media='all' /> <link rel='stylesheet' id='ppress-frontend-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/wp-user-avatar/assets/css/frontend.min.css?ver=4.15.20.1' type='text/css' media='all' /> <link rel='stylesheet' id='ppress-flatpickr-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/wp-user-avatar/assets/flatpickr/flatpickr.min.css?ver=4.15.20.1' type='text/css' media='all' /> <link rel='stylesheet' id='ppress-select2-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/wp-user-avatar/assets/select2/select2.min.css?ver=6.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='themonic-style-css' href='https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/style.css?ver=6.7.2' type='text/css' media='all' /> <style id='themonic-style-inline-css' type='text/css'> .themonic-nav .current-menu-item > a, .themonic-nav .current-menu-ancestor > a, .themonic-nav .current_page_item > a, .themonic-nav .current_page_ancestor > a { background: #00274c; color: #FFFFFF; font-weight: bold; } .themonic-nav ul.nav-menu, .themonic-nav div.nav-menu > ul { border-bottom: 5px solid #00274c; } .themonic-nav li a:hover { background: #00274c; } .themonic-nav li:hover { background: #00274c; } .categories a { background: #00274c; } .read-more a { color: #00274c; } .featured-post { color: #00274c; } #emailsubmit { background: #00274c; } #searchsubmit { background: #00274c; } .sub-menu .current-menu-item > a, .sub-menu .current-menu-ancestor > a, .sub-menu .current_page_item > a, .sub-menu .current_page_ancestor > a { background: #00274c; color: #ffffff; font-weight: bold; } .themonic-nav .current-menu-item a, .themonic-nav .current-menu-ancestor a, .themonic-nav .current_page_item a, .themonic-nav .current_page_ancestor a { color: ; font-weight: bold; } .themonic-nav li a:hover { color: ; } .comments-area article { border-color: #E1E1E1 #E1E1E1 #00274c; }.site { font-size:16px;}.site { font-family:'Roboto', arial ;} </style> <link rel='stylesheet' id='custom-style-css' href='https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/custom.css?ver=6.7.2' type='text/css' media='all' /> <!--[if lt IE 9]> <link rel='stylesheet' id='themonic-ie-css' href='https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/css/ie.css?ver=20130305' type='text/css' media='all' /> <![endif]--> <link rel='stylesheet' id='iop_custom_fonts-css' href='//fonts.googleapis.com/css?family=Roboto%3Aregular%2Citalic%2C500%26subset%3Dlatin%2C' type='text/css' media='screen' /> <link rel='stylesheet' id='fontawesome-css-css' href='https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/fonts/font-awesome.min.css?ver=6.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='simcal-qtip-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/google-calendar-events/assets/generated/vendor/jquery.qtip.min.css?ver=3.4.8' type='text/css' media='all' /> <link rel='stylesheet' id='simcal-default-calendar-grid-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/google-calendar-events/assets/generated/default-calendar-grid.min.css?ver=3.4.8' type='text/css' media='all' /> <link rel='stylesheet' id='simcal-default-calendar-list-css' href='https://michigan.it.umich.edu/news/wp-content/plugins/google-calendar-events/assets/generated/default-calendar-list.min.css?ver=3.4.8' type='text/css' media='all' /> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/google-analytics-for-wordpress/assets/js/frontend-gtag.min.js?ver=9.2.4" id="monsterinsights-frontend-script-js" async="async" data-wp-strategy="async"></script> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript" id='monsterinsights-frontend-script-js-extra'>/* <![CDATA[ */ var monsterinsights_frontend = {"js_events_tracking":"true","download_extensions":"doc,pdf,ppt,zip,xls,docx,pptx,xlsx","inbound_paths":"[{\"path\":\"\\\/go\\\/\",\"label\":\"affiliate\"},{\"path\":\"\\\/recommend\\\/\",\"label\":\"affiliate\"}]","home_url":"https:\/\/michigan.it.umich.edu\/news","hash_tracking":"false","v4_id":"G-X6C5NE3YFN"};/* ]]> */ </script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/sticky-menu-or-anything-on-scroll/assets/js/jq-sticky-anything.min.js?ver=2.1.1" id="stickyAnythingLib-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/wp-user-avatar/assets/flatpickr/flatpickr.min.js?ver=4.15.20.1" id="ppress-flatpickr-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/wp-user-avatar/assets/select2/select2.min.js?ver=4.15.20.1" id="ppress-select2-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/js/respond.min.js?ver=6.7.2" id="respond-js"></script> <script id='st_insights_js' type="text/javascript" src="https://ws.sharethis.com/button/st_insights.js?publisher=eba0f3ba-f9ab-408c-bc68-c28af5afe749&product=feather&ver=1740147422" id="feather-sharethis-js"></script> <link rel="https://api.w.org/" href="https://michigan.it.umich.edu/news/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://michigan.it.umich.edu/news/wp-json/wp/v2/pages/20029" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://michigan.it.umich.edu/news/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.2" /> <link rel="canonical" href="https://michigan.it.umich.edu/news/" /> <link rel='shortlink' href='https://michigan.it.umich.edu/news/' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://michigan.it.umich.edu/news/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fmichigan.it.umich.edu%2Fnews%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://michigan.it.umich.edu/news/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fmichigan.it.umich.edu%2Fnews%2F&format=xml" /> <style type="text/css" media="all"> .ticss-945b2a93 {n margin: 30px 0px;n}n.ticss-cc7e116e {n background: #00274c;n color: white;n padding: 15pxn}n.ticss-c1d54c0f {n background: #2E65A7;n color: #fff;n padding: 15pxn}n.ticss-59c12971 {n background: #c1d9db;n padding: 15pxn}n </style> <style type="text/css"></style> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #eff0f1; } </style> <style> .synved-social-resolution-single { display: inline-block; } .synved-social-resolution-normal { display: inline-block; } .synved-social-resolution-hidef { display: none; } @media only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 192dpi) { .synved-social-resolution-normal { display: none; } .synved-social-resolution-hidef { display: inline-block; } } </style><style id="uagb-style-conditional-extension">@media (min-width: 1025px){body .uag-hide-desktop.uagb-google-map__wrap,body .uag-hide-desktop{display:none !important}}@media (min-width: 768px) and (max-width: 1024px){body .uag-hide-tab.uagb-google-map__wrap,body .uag-hide-tab{display:none !important}}@media (max-width: 767px){body .uag-hide-mob.uagb-google-map__wrap,body .uag-hide-mob{display:none !important}}</style><link rel="icon" href="https://michigan.it.umich.edu/news/wp-content/uploads/2021/01/cropped-U-M-logo-512x512-1-32x32.jpg" sizes="32x32" /> <link rel="icon" href="https://michigan.it.umich.edu/news/wp-content/uploads/2021/01/cropped-U-M-logo-512x512-1-192x192.jpg" sizes="192x192" /> <link rel="apple-touch-icon" href="https://michigan.it.umich.edu/news/wp-content/uploads/2021/01/cropped-U-M-logo-512x512-1-180x180.jpg" /> <meta name="msapplication-TileImage" content="https://michigan.it.umich.edu/news/wp-content/uploads/2021/01/cropped-U-M-logo-512x512-1-270x270.jpg" /> <style type="text/css" id="wp-custom-css"> /* You can add your own CSS here. Click the help icon above to learn more. */ /*fix weird line breaks for long URLs */ .site-content article { hyphens: manual; } /*style search box*/ .site-header .socialmedia { margin-top: -20%; } .socialmedia #searchform { width: 70%; } .socialmedia #searchform #s { width: 40px; } #searchsubmit { border: 1px solid #ffffff; box-shadow: none; color: #ffffff; } /*customize header social icons*/ .socialmedia i.fa.fa { background:#00274c; color: #ffffff; border-color: #ffffff; } .socialmedia i.fa.fa:hover { color: #017d91; } /*remove read more links*/ .read-more a { display: none; } .themonic-nav li { margin: -1px -4px 0px 0px; position: relative; } /*change link and hover colors in text*/ a { color: #587abc; } a:hover { color: #017d91; } a:focus { outline-color: #017d91; } /*change title hover color*/ .entry-header .entry-title a:hover { color: #017d91; } /*change post category and tag hover color*/ .categories a:hover{background: #017d91; color:#fff;} .tags a:hover{background: #017d91; color:#fff;} /*Change title size of author archive page and bottom border color*/ .io-archive-page .archive-title { font-size: 16px; margin-top: -10px; margin-bottom: -10px; } .io-archive-page { border-bottom: 2px solid #587abc; } /*Below title meta styling - change "by" and date to grey, make author name blue, hover teal */ .below-title-meta{ background: #eff0f1; color: #666666; line-height: 1.7; margin-left: -3.1%; padding-bottom: 26px; width: 106.2%; } .below-title-meta a{ color:#587abc; text-decoration: none; } .below-title-meta a:hover { color: #017d91; } .link-comments { display: none; } /*style sidebar widgets*/ .widget-area .widget a { font-size: 110% } .widget-area .widget a:hover { color: #017d91; } .widget-area .widget-title { color: #666666; background: #eff0f1; } .widget_rss .widget-title img { display: none; } .widget_rss li a { display: block; color: #666666; } .widget_rss li .rss-date { color: #666666; font-size: 12px; display: inline; margin-right: 0.5rem; margin-left: 0; } widget_rss .rss-date { color: #666666; font-size: 12px; margin-left: 12px; } .widget_rss li .rssSummary { font-size: 12px; display: inline; } /*style sidebar CoP calendar*/ .simcal-default-calendar-list .simcal-event-details { font-size:12px; } .simcal-default-calendar-list ul.simcal-events { margin: 0px; } .simcal-default-calendar-list ul.simcal-events li.simcal-event{ padding: 0; } .simcal-default-calendar-list .simcal-event-details p { padding: 0px; } /*style image captions*/ .wp-block-image figcaption { text-align: left; font-style: italic } /*reduce home page top margin*/ .ticss-993c5d43 .widget-title { margin-top: 0px } /*change flex post hover color*/ .fp-title a:hover{ color: #017d91; } .fp-title a:hover{ color: #017d91; } .fp-meta a:hover{ color: #017d91; } /*increase flex post category & date contrast*/ .fp-categories { opacity: 1; } .fp-post .fp-meta a { opacity: .8; } /*increase archive meta font size*/ .archive-meta { font-size: 14px; } </style> </head> <body class="home page-template page-template-page-templates page-template-no-title-full-width page-template-page-templatesno-title-full-width-php page page-id-20029 custom-background full-width"> <div id="page" class="site"> <header id="masthead" class="site-header" role="banner"> <div class="themonic-logo"> <a href="https://michigan.it.umich.edu/news/" title="Michigan Technology Community News" rel="home"><img src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/12/MichiganTechnology_Newsletter-header.png" alt="Michigan Technology Community News"></a> </div> <div class="socialmedia"> <form role="search" method="get" id="searchform" action="https://michigan.it.umich.edu/news/"> <div><label class="screen-reader-text" for="s">Search for:</label> <input type="text" placeholder="Search" name="s" id="s" /> <input type="submit" id="searchsubmit" value="" /> </div> </form> <a href="https://twitter.com/umichTECH" target="_blank"><i class="fa fa-twitter"></i></a> <a class="rss" href="http://michigan.it.umich.edu/news/feed/" target="_blank"><i class="fa fa-rss"></i></a> </div> <nav id="site-navigation" class="themonic-nav" role="navigation"> <a class="assistive-text" href="#main" title="Skip to content">Skip to content</a> <ul id="menu-top" class="nav-menu"><li id="menu-item-38" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-38"><a href="https://michigan.it.umich.edu/news/category/features/">Top Stories</a></li> <li id="menu-item-41" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-41"><a href="https://michigan.it.umich.edu/news/category/projects-services/">Projects & Services</a></li> <li id="menu-item-28108" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-28108"><a href="https://michigan.it.umich.edu/news/category/events/">Events</a></li> <li id="menu-item-42" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-42"><a href="https://michigan.it.umich.edu/news/category/professional-development/">Professional Development</a></li> <li id="menu-item-127" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-127"><a href="https://michigan.it.umich.edu/news/category/safe-computing/">Safe Computing</a></li> <li id="menu-item-39" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39"><a href="https://michigan.it.umich.edu/news/category/campus-news/">Campus News</a></li> <li id="menu-item-22672" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22672"><a href="https://michigan.it.umich.edu/news/about-2/">About</a></li> </ul> </nav><!-- #site-navigation --> <div class="clear"></div> </header><!-- #masthead --> <div id="main" class="wrapper"> <div id="primary" class="site-content"> <div id="content" role="main"> <article id="post-20029" class="post-20029 page type-page status-publish hentry"> <center></center> <div class="entry-content"> <section class="widget widget_flex-posts-list ticss-993c5d43"><h2 class="widget-title"><a href="https://michigan.it.umich.edu/news/category/features/">Top Stories</a></h2><div class="fp-row fp-list-2 fp-flex"> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/20/inside-the-duderstadt-center-a-hidden-tech-playground-for-creators/"> <img fetchpriority="high" decoding="async" width="333" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/02/E15A421C-DCA1-4883-ABB9-3DA8FCBE6C50.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="" /> </a> </div> <div class="fp-body"> <span class="fp-categories"> <a href="https://michigan.it.umich.edu/news/category/campus-news/" rel="category tag">Campus News</a>, <a href="https://michigan.it.umich.edu/news/category/features/" rel="category tag">Top Stories</a> </span> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/20/inside-the-duderstadt-center-a-hidden-tech-playground-for-creators/">Inside the Duderstadt Center: A Hidden Tech Playground for Creators</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/20/inside-the-duderstadt-center-a-hidden-tech-playground-for-creators/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-20T10:00:00-05:00"> February 20, 2025 </time> </a> </span> </div> <div class="fp-excerpt">The Duderstadt is a hub of creativity and cutting-edge technology, open to faculty, staff, and students alike.</div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/19/profiles-in-it-lovida-roach-mba/"> <img decoding="async" width="375" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/02/lovida-roach-MBA-Stephanie-Dascola-1.jpeg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="Lovida Roach pictured smiling in a blue dress and blazer, wearing a pearl necklace, and donning her Graduation cap for her MBA." /> </a> </div> <div class="fp-body"> <span class="fp-categories"> <a href="https://michigan.it.umich.edu/news/category/features/" rel="category tag">Top Stories</a> </span> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/19/profiles-in-it-lovida-roach-mba/">Profiles in IT: Lovida Roach, MBA</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/19/profiles-in-it-lovida-roach-mba/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-19T11:00:00-05:00"> February 19, 2025 </time> </a> </span> </div> <div class="fp-excerpt">In 2019, Lovida Roach was interviewed about her work with MLearning, her views on customer service, and work/life balance while working full-time and pursuing an MBA. She achieved her MBA in 2024 and works for Michigan Medicine Academic IT.</div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/12/celebrating-data-privacy-day-2025/"> <img decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/01/P@M-Twitter_DrDas2025-400x250.png" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="Privacy at Michigan: Privacy in the Age of Artificial Intelligence. A data privacy day discussion with Dr. Dauvik Das on January 28, at noon." /> </a> </div> <div class="fp-body"> <span class="fp-categories"> <a href="https://michigan.it.umich.edu/news/category/events/" rel="category tag">Events</a>, <a href="https://michigan.it.umich.edu/news/category/features/" rel="category tag">Top Stories</a> </span> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/12/celebrating-data-privacy-day-2025/">Celebrating Data Privacy Day 2025</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/12/celebrating-data-privacy-day-2025/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-12T08:00:00-05:00"> February 12, 2025 </time> </a> </span> </div> <div class="fp-excerpt">This year鈥檚 Data Privacy Day event focused on privacy in the age of AI. A recording is now available on Safe Computing.</div> </div> </div> <div class="fp-col"></div> <div class="fp-col"></div> </div> </section> <div class="wp-block-columns ticss-945b2a93 has-black-color has-text-color is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex"> <div class="wp-block-column ticss-cc7e116e is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%"><section class="widget widget_flex-posts-list ticss-15391dbf"><div class="fp-list-4"> <div class="fp-post fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/12/17/message-from-the-vpit-cio-57/"> <img loading="lazy" decoding="async" width="375" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2020/07/Ravi_StadiumB9226_150-1-e1598826062183.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="Ravi Pendse" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/17/message-from-the-vpit-cio-57/">Message from the VPIT-CIO</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/17/message-from-the-vpit-cio-57/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-17T09:12:04-05:00"> December 17, 2024 </time> </a> </span> </div> <div class="fp-excerpt">I hope you are all having a wonderful December. I am proud of our community’s hard work and achievements over the past year. We evolved “Michigan IT” to the more inclusive “Michigan Technology Community,” the Winter Innovation Expo highlighted our diverse community’s efforts across the university, and relaunched U-M鈥檚 Digital Accessibility website which now offers enhanced support and resources. Have a wonderful holiday season and winter break. See you in 2025.</div> </div> </div> </div> </section></div> <div class="wp-block-column ticss-c1d54c0f is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%"><section class="widget widget_flex-posts-list ticss-fbae7bad"><div class="fp-list-4"> <div class="fp-post fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/01/01/leadership-profile-joe-gregoria/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/12/Joe-Gregoria-BRCF-AGC-Dec2024-e1734721155197-400x250.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="Joe Gregoria grinning at the camera in a Christmas-themed suit." /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/01/01/leadership-profile-joe-gregoria/">Leadership Profile: Joe Gregoria</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/01/01/leadership-profile-joe-gregoria/" rel="bookmark"> <time class="entry-date published" datetime="2025-01-01T11:45:00-05:00"> January 1, 2025 </time> </a> </span> </div> <div class="fp-excerpt">Meet Joe Gregoria, Dry Lab Manager at the Advanced Genomics Core (AGC). He leads the AGC鈥檚 IT team where he tries to remove barriers so his team can do amazing work. In his spare time, he enjoys playing the trumpet and woodworking.</div> </div> </div> </div> </section></div> <div class="wp-block-column ticss-59c12971 is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%"><section class="widget widget_flex-posts-list ticss-fbae7bad"><div class="fp-list-4"> <div class="fp-post fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/01/27/stac-annual-charter-review-officer-election-2/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/01/STAC-Chair-transfer-Curley-to-Blough2-400x250.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="Cathy Curley passes the STAC Chair to Marcus Blough in January 2025." /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/01/27/stac-annual-charter-review-officer-election-2/">STAC Annual Charter Review / Officer Election</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/01/27/stac-annual-charter-review-officer-election-2/" rel="bookmark"> <time class="entry-date published" datetime="2025-01-27T09:00:00-05:00"> January 27, 2025 </time> </a> </span> </div> <div class="fp-excerpt">Leadership changes came a few months early for STAC this year. After serving as chair for five months, Cathy Curley passed the chair leadership position in January 2025 to Vice Chair Marcus Blough.聽</div> </div> </div> </div> </section></div> </div> <section class="widget widget_flex-posts-list ticss-82cc0f40"><h2 class="widget-title"><a href="https://michigan.it.umich.edu/news/category/projects_services/">Projects & Services</a></h2><div class="fp-row fp-list-2 fp-flex"> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/18/update-cookie-consent-integration-by-march-21/"> <img loading="lazy" decoding="async" width="250" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/02/download-Svetla-Sytch.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="A computer screen displaying two chocolate chip cookies stacked on top of each other with a small clear jar of mini chocolate chip cookies on the desk." /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/18/update-cookie-consent-integration-by-march-21/">Update Cookie Consent Integration by March 21</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/18/update-cookie-consent-integration-by-march-21/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-18T08:00:00-05:00"> February 18, 2025 </time> </a> </span> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/14/border-router-replacement-boosts-u-ms-internet-internet2-connection-speeds/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/Screenshot-2024-07-24-at-5.26.19鈥疨M-400x250.png" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="artistic representation of a computer chip with yellow and blue lines connected to nodes" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/14/border-router-replacement-boosts-u-ms-internet-internet2-connection-speeds/">Border router replacement boosts U-M鈥檚 internet, Internet2 connection speeds</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/14/border-router-replacement-boosts-u-ms-internet-internet2-connection-speeds/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-14T14:25:33-05:00"> February 14, 2025 </time> </a> </span> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/01/28/cross-functional-project-team-plans-major-lock-replacement/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/01/65665973_96055501-400x250.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/01/28/cross-functional-project-team-plans-major-lock-replacement/">Cross-functional project team plans major lock replacement</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/01/28/cross-functional-project-team-plans-major-lock-replacement/" rel="bookmark"> <time class="entry-date published" datetime="2025-01-28T11:45:00-05:00"> January 28, 2025 </time> </a> </span> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/12/04/make-a-maizey-workshops-for-instructors-12-11-and-12-18/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/12/Make-a-Maizey-Tout-400x250.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/04/make-a-maizey-workshops-for-instructors-12-11-and-12-18/">Make a Maizey Workshops for Instructors: 12/11 and 12/18</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/04/make-a-maizey-workshops-for-instructors-12-11-and-12-18/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-04T15:47:37-05:00"> December 4, 2024 </time> </a> </span> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/10/31/u-m-cloudflare-celebrates-1000-sites/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/10/download-2024-10-31T104553.083-1-400x250.png" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="an AI generated image of a lock surrounded by a network of bubbles with human icons in them" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/10/31/u-m-cloudflare-celebrates-1000-sites/">U-M Cloudflare Celebrates 1,000 Sites</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/10/31/u-m-cloudflare-celebrates-1000-sites/" rel="bookmark"> <time class="entry-date published" datetime="2024-10-31T10:52:46-04:00"> October 31, 2024 </time> </a> </span> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/10/24/new-enhancements-for-mimaizey-personal-ai-assistant-for-u-m-students/"> <img loading="lazy" decoding="async" width="400" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/10/front-screen-400x250.png" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/10/24/new-enhancements-for-mimaizey-personal-ai-assistant-for-u-m-students/">New Enhancements for MiMaizey, Personal AI Assistant for U-M Students</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/10/24/new-enhancements-for-mimaizey-personal-ai-assistant-for-u-m-students/" rel="bookmark"> <time class="entry-date published" datetime="2024-10-24T14:08:21-04:00"> October 24, 2024 </time> </a> </span> </div> </div> </div> <div class="fp-col"></div> <div class="fp-col"></div> </div> </section> <div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex" style="background-color:#eff0f1"> <div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><section class="widget widget_flex-posts-list"><h2 class="widget-title"><a href="https://michigan.it.umich.edu/news/category/professional-development/">Professional Development</a></h2><div class="fp-row fp-list-3 fp-flex"> <div class="fp-col fp-post fp-main"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/21/tech-tip-raycast/"> <img loading="lazy" decoding="async" width="200" height="140" src="https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark.png" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="Tech Tip" srcset="https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark.png 200w, https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark-60x42.png 60w" sizes="auto, (max-width: 200px) 100vw, 200px" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/21/tech-tip-raycast/">Tech Tip: Raycast</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/21/tech-tip-raycast/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-21T10:08:20-05:00"> February 21, 2025 </time> </a> </span> </div> <div class="fp-excerpt">This month鈥檚 tip is a powerful productivity tool designed to streamline and enhance workflow on macOS: Raycast (a Windows version is coming soon!)</div> </div> </div> <div class="fp-col fp-extra"> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/11/michigan-technology-community-governance-community-of-practice-activities-for-nov-dec-2024-jan-2025/">Michigan Technology Community – Governance, Community of Practice, & Activities for Nov./Dec. 2024 & Jan. 2025</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/11/michigan-technology-community-governance-community-of-practice-activities-for-nov-dec-2024-jan-2025/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-11T08:00:00-05:00"> December 11, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/11/13/michigan-it-governance-community-of-practice-activities-for-october-november-2024/">Michigan IT – Governance & Community of Practice & Activities for October/November 2024</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/11/13/michigan-it-governance-community-of-practice-activities-for-october-november-2024/" rel="bookmark"> <time class="entry-date published" datetime="2024-11-13T11:45:00-05:00"> November 13, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/10/28/michigan-it-governance-community-of-practice-activities-for-september-october-2024/">Michigan IT – Governance & Community of Practice & Activities for September/October 2024</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/10/28/michigan-it-governance-community-of-practice-activities-for-september-october-2024/" rel="bookmark"> <time class="entry-date published" datetime="2024-10-28T08:00:00-04:00"> October 28, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/10/22/tech-tip-omnivore/">Tech Tip: Omnivore</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/10/22/tech-tip-omnivore/" rel="bookmark"> <time class="entry-date published" datetime="2024-10-22T11:45:00-04:00"> October 22, 2024 </time> </a> </span> </div> </div> </div> </div> </div> </div> </section></div> <div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><section class="widget widget_flex-posts-list"><h2 class="widget-title"><a href="https://michigan.it.umich.edu/news/category/safe-computing/">Safe Computing</a></h2><div class="fp-row fp-list-3 fp-flex"> <div class="fp-col fp-post fp-main"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2025/02/18/updated-it-standard-on-network-security/"> <img loading="lazy" decoding="async" width="375" height="250" src="https://michigan.it.umich.edu/news/wp-content/uploads/2025/02/Network-Security-Svetla-Sytch2.jpg" class="attachment-400x250-crop size-400x250-crop wp-post-image" alt="" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/02/18/updated-it-standard-on-network-security/">Updated IT Standard on Network Security</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/02/18/updated-it-standard-on-network-security/" rel="bookmark"> <time class="entry-date published" datetime="2025-02-18T15:00:00-05:00"> February 18, 2025 </time> </a> </span> </div> <div class="fp-excerpt">ITS has published an important revision of the IT Standard on Network Security (DS-14).</div> </div> </div> <div class="fp-col fp-extra"> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2025/01/22/data-privacy-day-event-privacy-in-the-age-of-ai/">Data Privacy Day event: Privacy in the Age of AI</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2025/01/22/data-privacy-day-event-privacy-in-the-age-of-ai/" rel="bookmark"> <time class="entry-date published" datetime="2025-01-22T11:45:00-05:00"> January 22, 2025 </time> </a> </span> </div> </div> </div> </div> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/17/it-standard-on-endpoint-security-administration/">IT Standard on Endpoint Security Administration</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/17/it-standard-on-endpoint-security-administration/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-17T11:04:28-05:00"> December 17, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/12/stay-safe-this-holiday-season/">Stay Safe This Holiday Season</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/12/stay-safe-this-holiday-season/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-12T09:00:00-05:00"> December 12, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-post"> <div class="fp-flex"> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/11/20/secure-shopping-holiday-checklist/">Secure Shopping Holiday Checklist</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/11/20/secure-shopping-holiday-checklist/" rel="bookmark"> <time class="entry-date published" datetime="2024-11-20T08:30:00-05:00"> November 20, 2024 </time> </a> </span> </div> </div> </div> </div> </div> </div> </section></div> </div> <section class="widget widget_flex-posts-list"><h2 class="widget-title"><a href="https://michigan.it.umich.edu/news/category/campus-news/">Campus News</a></h2><div class="fp-row fp-list-1 fp-flex"> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/12/17/tech-tip-bridgy-fed/"> <img loading="lazy" decoding="async" width="200" height="140" src="https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="Tech Tip" srcset="https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark.png 200w, https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark-60x42.png 60w" sizes="auto, (max-width: 200px) 100vw, 200px" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/17/tech-tip-bridgy-fed/">Tech Tip: Bridgy Fed</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/17/tech-tip-bridgy-fed/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-17T08:00:00-05:00"> December 17, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/12/10/michigan-it-transitions-to-michigan-technology-community/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/12/Screenshot-2024-12-09-at-9.18.52-PM-Dana-Fair-400x266.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="U-M Michigan Technology Community" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/12/10/michigan-it-transitions-to-michigan-technology-community/">Michigan IT Transitions to Michigan Technology Community</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/12/10/michigan-it-transitions-to-michigan-technology-community/" rel="bookmark"> <time class="entry-date published" datetime="2024-12-10T09:00:00-05:00"> December 10, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/11/19/tech-tip-toggle-em-all/"> <img loading="lazy" decoding="async" width="200" height="140" src="https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="Tech Tip" srcset="https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark.png 200w, https://michigan.it.umich.edu/news/wp-content/uploads/2018/08/UMIT-Tech-Tip-mark-60x42.png 60w" sizes="auto, (max-width: 200px) 100vw, 200px" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/11/19/tech-tip-toggle-em-all/">Tech Tip: Toggle 鈥檈m all</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/11/19/tech-tip-toggle-em-all/" rel="bookmark"> <time class="entry-date published" datetime="2024-11-19T09:15:00-05:00"> November 19, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/10/25/mpassport-enhancing-the-international-student-experience/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/10/11006-400x266.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" alt="Person getting ID document." /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/10/25/mpassport-enhancing-the-international-student-experience/">MPassport: Enhancing the international student experience</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/10/25/mpassport-enhancing-the-international-student-experience/" rel="bookmark"> <time class="entry-date published" datetime="2024-10-25T11:45:00-04:00"> October 25, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/09/30/fall-2024-enhancements-to-maizey-ai/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971-400x266.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="a cartoon robot sits at a desk with a laptop in front of them" srcset="https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971-400x266.png 400w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971-300x200.png 300w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971-600x400.png 600w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971-768x512.png 768w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971-665x443.png 665w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/09/download-2024-09-23T100625.971.png 1536w" sizes="auto, (max-width: 400px) 100vw, 400px" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/09/30/fall-2024-enhancements-to-maizey-ai/">Fall 2024 Enhancements to Maizey AI</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/09/30/fall-2024-enhancements-to-maizey-ai/" rel="bookmark"> <time class="entry-date published" datetime="2024-09-30T10:32:14-04:00"> September 30, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/08/15/lsa-technology-services-staff-win-major-collegewide-awards/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/08/lsa-staff-awards-400x266.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="Composite image. On the left there's an in-focus dark-skinned female-presenting person, a blurred white male-presenting individual behind her, a female-presenting person of Asian heritage blurred in the foreground, and the rear view of a Black individual. On the right, a blue-tinted image of the UM-Ann Arbor campus." /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/08/15/lsa-technology-services-staff-win-major-collegewide-awards/">LSA Technology Services staff win major collegewide awards</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/08/15/lsa-technology-services-staff-win-major-collegewide-awards/" rel="bookmark"> <time class="entry-date published" datetime="2024-08-15T08:00:00-04:00"> August 15, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/07/17/michigan-time-keeping-the-university-in-sync/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/download-2024-07-17T101435.357-1-400x266.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="a large clock hangs on a wall in a classroom" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/07/17/michigan-time-keeping-the-university-in-sync/">Michigan Time: Keeping the University in Sync</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/07/17/michigan-time-keeping-the-university-in-sync/" rel="bookmark"> <time class="entry-date published" datetime="2024-07-17T11:21:15-04:00"> July 17, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/07/12/upgrades-to-my-um-flint-portal-enhance-user-experience-for-campus-community/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3-400x266.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="My UM-Flint home page has direct links to email and Wolverine Access, frequently accessed service links, a news column, and a preview the academic calendar." srcset="https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3-400x266.png 400w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3-300x200.png 300w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3-600x400.png 600w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3-768x512.png 768w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3-665x443.png 665w, https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/myumflintheader3.png 1200w" sizes="auto, (max-width: 400px) 100vw, 400px" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/07/12/upgrades-to-my-um-flint-portal-enhance-user-experience-for-campus-community/">Upgrades to ‘My UM-Flint’ portal enhance user experience for campus community</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/07/12/upgrades-to-my-um-flint-portal-enhance-user-experience-for-campus-community/" rel="bookmark"> <time class="entry-date published" datetime="2024-07-12T10:02:56-04:00"> July 12, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col fp-post"> <div class="fp-flex"> <div class="fp-media"> <a class="fp-thumbnail" href="https://michigan.it.umich.edu/news/2024/07/02/michigan-housing-gets-an-upgrade/"> <img loading="lazy" decoding="async" width="400" height="266" src="https://michigan.it.umich.edu/news/wp-content/uploads/2024/07/657a2f4dbd09c02e1217ecb0_StarRez-logo-meta-description-400x266.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="blue background with white text "StarRez" next to a yellow star logo" /> </a> </div> <div class="fp-body"> <h4 class="fp-title"> <a href="https://michigan.it.umich.edu/news/2024/07/02/michigan-housing-gets-an-upgrade/">Michigan Housing gets an Upgrade</a> </h4> <div class="fp-meta"> <span class="fp-date"> <a href="https://michigan.it.umich.edu/news/2024/07/02/michigan-housing-gets-an-upgrade/" rel="bookmark"> <time class="entry-date published" datetime="2024-07-02T13:59:37-04:00"> July 2, 2024 </time> </a> </span> </div> </div> </div> </div> <div class="fp-col"></div> <div class="fp-col"></div> </div> </section> </div><!-- .entry-content --> <footer class="entry-meta"> </footer><!-- .entry-meta --> </article><!-- #post --> <div id="comments" class="comments-area"> </div><!-- #comments .comments-area --> </div><!-- #content --> </div><!-- #primary --> </div><!-- #main .wrapper --> <div id="iop-footer" class="widget-area"> <div class="footer-widget"> <div id="nav_menu-3" class=" widget widget_nav_menu"><p class="widget-title">Office of the VPIT-CIO</p><div class="menu-office-of-the-vpit-cio-container"><ul id="menu-office-of-the-vpit-cio" class="menu"><li id="menu-item-22211" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22211"><a href="https://it.umich.edu/vpit-cio">About the VPIT-CIO</a></li> <li id="menu-item-22212" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22212"><a href="https://it.umich.edu/information-technology-policies">Information Technology Policies</a></li> <li id="menu-item-22213" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22213"><a href="https://it.umich.edu/it-strategy">IT Strategy</a></li> <li id="menu-item-22214" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22214"><a href="https://it.umich.edu/governance">IT Governance</a></li> <li id="menu-item-22215" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22215"><a href="https://it.umich.edu/security-privacy">Security & Privacy</a></li> </ul></div></div> </div> <div class="footer-widget"> <div id="nav_menu-4" class=" widget widget_nav_menu"><p class="widget-title">Michigan Technology</p><div class="menu-michigan-it-container"><ul id="menu-michigan-it" class="menu"><li id="menu-item-22216" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22216"><a href="https://it.umich.edu/community/about">About Michigan Technology</a></li> <li id="menu-item-22217" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22217"><a href="https://it.umich.edu/community">Community Resources & Events</a></li> <li id="menu-item-22218" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22218"><a href="http://timeline.it.umich.edu/">History of IT at U-M</a></li> <li id="menu-item-22219" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22219"><a href="https://it.umich.edu/community/professional-development">Professional Development</a></li> <li id="menu-item-22220" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22220"><a href="https://it.umich.edu/community/it-providers">U-M IT Providers</a></li> </ul></div></div> </div> <div class="footer-widget"> <div id="meta-7" class=" widget widget_meta"><p class="widget-title">Meta</p> <ul> <li><a href="https://michigan.it.umich.edu/news/wp-admin/admin-ajax.php?action=openid-connect-authorize&umich-oidc-verifier=abed72c0df&umich-oidc-return=https%3A%2F%2Fmichigan.it.umich.edu%2Fnews%2F">Log in</a></li> <li><a href="https://michigan.it.umich.edu/news/feed/">Entries feed</a></li> <li><a href="https://michigan.it.umich.edu/news/comments/feed/">Comments feed</a></li> <li><a href="https://wordpress.org/">WordPress.org</a></li> </ul> </div> </div> </div> <footer id="colophon" role="contentinfo"> <div class="site-info"> <div class="footercopy"><a href="http://www.regents.umich.edu/">漏 The Regents of the University of Michigan</a></div> <div class="footercredit"><a href="https://signup.e2ma.net/signup/1881897/1892197/"> Subscribe to the Michigan Technology Community News Email Digest</a></div> <div class="clear"></div> </div><!-- .site-info --> </footer><!-- #colophon --> <div class="site-wordpress"> <a href="https://themonic.com/iconic-one-pro/">Iconic One Pro</a> Theme | Powered by <a href="https://wordpress.org">Wordpress</a> </div><!-- .site-info --> <div class="clear"></div> </div><!-- #page --> <script type="text/javascript">jQuery(function(){omShortcodes.init(["buttons","tooltips","toggle","tabs","responsivebox","counter"]);});</script><style id='core-block-supports-inline-css' type='text/css'> .wp-container-core-columns-is-layout-1{flex-wrap:nowrap;}.wp-container-core-columns-is-layout-2{flex-wrap:nowrap;} </style> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/umich-oidc-login//assets/js/settings.js?ver=1020000" id="umich-oidc-settings-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/olevmedia-shortcodes/assets/js/shortcodes.js?ver=1.1.9" id="omsc-shortcodes-js"></script> <script type="text/javascript" id="stickThis-js-extra"> /* <![CDATA[ */ var sticky_anything_engage = {"element":".themonic-nav","topspace":"0","minscreenwidth":"0","maxscreenwidth":"999999","zindex":"1","legacymode":"","dynamicmode":"","debugmode":"","pushup":"","adminbar":"1"}; /* ]]> */ </script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/sticky-menu-or-anything-on-scroll/assets/js/stickThis.js?ver=2.1.1" id="stickThis-js"></script> <script type="text/javascript" id="ppress-frontend-script-js-extra"> /* <![CDATA[ */ var pp_ajax_form = {"ajaxurl":"https:\/\/michigan.it.umich.edu\/news\/wp-admin\/admin-ajax.php","confirm_delete":"Are you sure?","deleting_text":"Deleting...","deleting_error":"An error occurred. Please try again.","nonce":"06cff24608","disable_ajax_form":"false","is_checkout":"0","is_checkout_tax_enabled":"0","is_checkout_autoscroll_enabled":"true"}; /* ]]> */ </script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/wp-user-avatar/assets/js/frontend.min.js?ver=4.15.20.1" id="ppress-frontend-script-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/themes/iconic-one-pro/js/selectnav.js?ver=6.7.2" id="themonic-mobile-navigation-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/google-calendar-events/assets/generated/vendor/jquery.qtip.min.js?ver=3.4.8" id="simcal-qtip-js"></script> <script type="text/javascript" id="simcal-default-calendar-js-extra"> /* <![CDATA[ */ var simcal_default_calendar = {"ajax_url":"\/news\/wp-admin\/admin-ajax.php","nonce":"73393680d6","locale":"en_US","text_dir":"ltr","months":{"full":["January","February","March","April","May","June","July","August","September","October","November","December"],"short":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},"days":{"full":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"meridiem":{"AM":"AM","am":"am","PM":"PM","pm":"pm"}}; /* ]]> */ </script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/google-calendar-events/assets/generated/default-calendar.min.js?ver=3.4.8" id="simcal-default-calendar-js"></script> <script type="text/javascript" src="https://michigan.it.umich.edu/news/wp-content/plugins/google-calendar-events/assets/generated/vendor/imagesloaded.pkgd.min.js?ver=3.4.8" id="simplecalendar-imagesloaded-js"></script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-52cb374c28765929f62","applicationID":"1058648044","transactionName":"bwdbNkJXWBAHVUcPClZNeAFEX1kNSVhcSxFRFlUHHVBDDwobRA8BTAo=","queueTime":0,"applicationTime":472,"atts":"Q0BYQApNSx4=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>