t || !input[0]) return true; const channelData = input[0]; for (let i = 0; i < channelData.length; i++) { this._buffer[this._offset++] = channelData[i]; if (this._offset >= BUFFER_SIZE) { this.port.postMessage(this._buffer.slice()); this._offset = 0; } } return true; } } registerProcessor('meeting-audio-processor', MeetingAudioProcessor); `],{type:"application/javascript"}),u=URL.createObjectURL(d);try{await o.audioWorklet.addModule(u)}finally{URL.revokeObjectURL(u)}if(r)return void o.close();let h=new AudioWorkletNode(o,"meeting-audio-processor");c.connect(h),h.connect(o.destination),h.port.onmessage=e=>{let t=(e=>{let t=new Int16Array(e.length);for(let r=0;r{let t="",r=new Uint8Array(e),a=r.byteLength;for(let e=0;e{h.port.close(),h.disconnect(),c.disconnect(),l?.disconnect(),s?.disconnect(),o.close(),a.current=null}})().catch(e=>{e5.warn("[useGeminiTranscription]","Audio worklet setup failed",e)}),()=>{r=!0,n?.()}},[e,t,w]),{transcript:i,isTranscribing:s,clearTranscript:p}})({microphoneStream:"dictation"===c?A:null,systemAudioStream:"dictation"===c?F:null});(({microphoneStream:e,screenStream:t})=>{let r=(0,X.useRef)(null),a=(0,X.useRef)([]),n=(0,X.useRef)(!1),o=(0,X.useRef)(null),i=(0,X.useRef)(null),l=(0,X.useRef)(!1),s=(0,X.useRef)(null),c=(0,eC.d4)(U.ZT),d=(0,eC.d4)(U.jV),u=(0,X.useMemo)(()=>{let e;if(!c)return null;let t=(0,e2.hf)(c);if(!t)return null;let r=!!(0,m.qN)(Y.J.location.href).local_gemini||(0,e4.A)(),a=r?"localhost:8080":(0,e8.zT)();return e=d&&c&&c!==d?`${d}/${c}`:d||c,`${r?"ws":"wss"}://${a}/cache/${e}/exp/ailive?flannel=true&token=${t}`},[c,d]),h=(0,X.useRef)(()=>{}),p=(0,X.useCallback)(()=>{if(n.current||0===a.current.length)return;n.current=!0;let e=((e,t=e6,r=16,a=1)=>{let n=mergeUint8Arrays(e),o=n.length,i=a*r/8,l=new ArrayBuffer(44),s=new DataView(l),writeString=(e,t)=>{for(let r=0;r{URL.revokeObjectURL(r),n.current=!1,h.current()},t.onerror=()=>{e3.warn("[useGeminiLiveSession]","Audio playback error"),URL.revokeObjectURL(r),n.current=!1,h.current()},t.play().catch(e=>{e3.warn("[useGeminiLiveSession]","Failed to play audio",e),URL.revokeObjectURL(r),n.current=!1,h.current()})},[]);(0,X.useEffect)(()=>{h.current=p},[p]);let f=(0,X.useCallback)(e=>{let t;if(!e||!e.data)return;try{t=JSON.parse(e.data)}catch{return}if(!t?.serverContent)return;let{serverContent:r}=t;if(r.interrupted){a.current=[],o.current&&(o.current.pause(),o.current.currentTime=0),n.current=!1;return}if(r.turnComplete)return;let i=r.modelTurn?.parts?.[0]?.inlineData;if(i?.mimeType?.startsWith("audio/pcm")&&i.data){let e=(e=>{let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e{if(!u)return void e3.warn("[useGeminiLiveSession]","No WebSocket URL available, cannot connect");if(r.current)return void e3.info("[useGeminiLiveSession]","WebSocket already exists, skipping connect");e3.info("[useGeminiLiveSession]","Connecting to",`${u.split("token=")[0]}token=REDACTED`),l.current=!1;try{let e=new WebSocket(u);r.current=e,e.onopen=()=>{e3.info("[useGeminiLiveSession]","WebSocket connected")},e.onmessage=f,e.onerror=e=>{e3.warn("[useGeminiLiveSession]","Connection error",e)},e.onclose=t=>{e3.warn("[useGeminiLiveSession]",`WebSocket closed: code=${t.code} reason="${t.reason}" wasClean=${t.wasClean}`),r.current===e&&(r.current=null,a.current=[],n.current=!1),!l.current&&u&&(e3.info("[useGeminiLiveSession]","Unexpected close, reconnecting in 2s"),s.current=setTimeout(()=>{s.current=null,w()},2e3))}}catch(e){e3.warn("[useGeminiLiveSession]","Failed to connect",e)}},[u,f]),g=(0,X.useCallback)(()=>{l.current=!0,s.current&&(clearTimeout(s.current),s.current=null),r.current&&(e3.info("[useGeminiLiveSession]","Disconnecting WebSocket"),r.current.close(),r.current=null),o.current&&(o.current.pause(),o.current=null),a.current=[],n.current=!1,i.current&&(i.current.close(),i.current=null)},[]),b=(0,X.useCallback)(e=>{let t=r.current;if(t?.readyState===WebSocket.OPEN){if(t.bufferedAmount>2097152)return;let r=(e=>{try{return JSON.stringify({realtimeInput:{mediaChunks:[{data:e,mimeType:"audio/pcm"}]}})}catch(e){return e3.warn("[useGeminiLiveSession]","Could not create audio content",e),""}})(e);if(!r)return;try{let e=JSON.parse(r),t=Object.keys(e),a=e[t[0]]?.mediaChunks?.[0]?.mimeType||"",n=e[t[0]]?.mediaChunks?.[0]?.data?.length||0;if("realtimeInput"===t[0]&&a.startsWith("audio/")){if(0===n)return void e3.warn("[useGeminiLiveSession]","Empty audio chunk, skipping")}else e3.warn("[useGeminiLiveSession]",`Unexpected WS message: keys=${t.join(",")} mimeType=${a}`)}catch{}t.send(r)}},[]),y=(0,X.useCallback)(e=>{let t=r.current;if(t?.readyState===WebSocket.OPEN){if(t.bufferedAmount>2097152)return;t.send((e=>{try{return JSON.stringify({realtimeInput:{mediaChunks:[{data:e,mimeType:"image/jpeg"}]}})}catch(e){return e3.warn("[useGeminiLiveSession]","Could not create image content",e),""}})(e))}},[]);(0,X.useEffect)(()=>{let r=e||t;e3.info("[useGeminiLiveSession]",`Stream state changed: mic=${!!e} screen=${!!t} wsUrl=${!!u}`),r&&u?w():r||g()},[e,t,u,w,g]),(0,X.useEffect)(()=>()=>{g()},[]),(0,X.useEffect)(()=>{if(!e)return;let t=!1,r=null;return(async()=>{let a=new AudioContext({sampleRate:e6});i.current=a;let n=a.createMediaStreamSource(e);if(t)return void a.close();let o=new Blob([` const BUFFER_SIZE = 4096; class LiveAudioProcessor extends AudioWorkletProcessor { constructor() { super(); this._buffer = new Float32Array(BUFFER_SIZE); this._offset = 0; } process(inputs) { const input = inputs[0]; if (!input || !input[0]) return true; const channelData = input[0]; for (let i = 0; i < channelData.length; i++) { this._buffer[this._offset++] = channelData[i]; if (this._offset >= BUFFER_SIZE) { this.port.postMessage(this._buffer.slice()); this._offset = 0; } } return true; } } registerProcessor('live-audio-processor', LiveAudioProcessor); `],{type:"application/javascript"}),l=URL.createObjectURL(o);try{await a.audioWorklet.addModule(l)}finally{URL.revokeObjectURL(l)}if(t)return void a.close();let s=new AudioWorkletNode(a,"live-audio-processor");n.connect(s),s.connect(a.destination),s.port.onmessage=e=>{b((e=>{let t="",r=new Uint8Array(e),a=r.byteLength;for(let e=0;e{let t=new Int16Array(e.length);for(let r=0;r{s.port.close(),s.disconnect(),n.disconnect(),a.close(),i.current=null}})().catch(e=>{e3.warn("[useGeminiLiveSession]","Audio worklet setup failed",e)}),()=>{t=!0,r?.()}},[e,b]),(0,X.useEffect)(()=>{if(!t)return;let e=Y.J.document.createElement("video");e.srcObject=t,e.play();let r=Y.J.document.createElement("canvas"),a=r.getContext("2d"),n=setInterval(()=>{if(!a)return;let n=t.getVideoTracks()[0];n&&"live"===n.readyState&&0!==e.videoWidth&&0!==e.videoHeight&&(r.width=e.videoWidth,r.height=e.videoHeight,a.drawImage(e,0,0,r.width,r.height),y(r.toDataURL("image/jpeg").split(";base64,")[1]))},1e3);return()=>{clearInterval(n),e.srcObject=null}},[t,y])})({microphoneStream:D,screenStream:W}),(0,X.useEffect)(()=>{if(!w.current||!T||"live"===c)return;let e=$.length;if(e>u.current){let t=$.slice(u.current),r=w.current.getText?.()||"";(""===r||r.endsWith(" "))&&(t=t.trimStart()),w.current.setText?.(r+t),u.current=e}},[$,c,T]),(0,X.useEffect)(()=>{T||(u.current=0)},[T]),(0,X.useEffect)(()=>{let e="dictation"===c&&T;e&&!B?N().catch(()=>{}):!e&&B&&P()},[c,T,B,N,P]),(0,X.useEffect)(()=>{V(),u.current=0,"dictation"===c&&!h.current&&w.current&&w.current.setText?.(""),h.current=!1},[c,V]),(0,X.useEffect)(()=>(r((0,em.xM)({channelId:"",threadTs:null})),()=>{r((0,em.xM)({channelId:"",threadTs:null}))}),[r]);let G=(0,X.useCallback)(e=>{if("Escape"===e.key){let e=t?.deref();e&&!e.closed&&e.close()}},[t]);(0,tx.M)("keydown",G,{element:t?.deref()?.document,isEnabled:!f&&!!t}),(0,X.useEffect)(()=>{let e=t?.deref();if(!e)return;let handleBlur=()=>{g&&w.current?.blur?.()};return e.addEventListener("blur",handleBlur),()=>{e.removeEventListener("blur",handleBlur)}},[t,g]);let K=(0,X.useCallback)(()=>{b(!0),e?.(!0)},[e]),q=(0,X.useCallback)(()=>{b(!1),e?.(!1)},[e]),j=(0,X.useCallback)(async e=>{let r=t?.deref();if(!r)return;let a=await captureScreen({win:r,screen:e});a.success?await S(a.blob):s(a.error)},[t,S]),Z=(0,X.useCallback)(()=>{s("permission-denied")},[]),H=(0,X.useCallback)(async(e,t,a)=>{try{let o=await r((0,ep.Z)({memberId:"USLACKBOT",shouldNavigateToChannel:!1,reason:"operator-window-conversation"})),l=o?.id;if(!l)return void i(!1);n(l);let s=await r((0,eh.Ay)({channelId:l,delta:e,draftId:y,fileIds:t,pendingFileIds:a,viewContext:eu.Y.SLACKBOT_AI_CONVERSATION})),c=s?.ts;c&&await r((0,em.xM)({channelId:l,threadTs:c})),i(!1)}catch(e){tE.error("handleSendMessage failed to start Slackbot conversation",e),i(!1)}},[r,y]),J=(0,X.useCallback)(()=>{if(!w.current)return!1;let e=w.current.getContents?.();return!!e&&(i(!0),H(new es.Ru(e.contents),k,_),!1)},[H,k,_]),z=(0,X.useCallback)(()=>s(null),[]);if(f&&a&&p)return X.createElement("div",{className:ti().contentContainer},X.createElement("div",{className:ti().threadContainer},X.createElement(tv.A,{key:`operator-threads-${a}-${p}`,serializationKey:`operator-threads-${a}-${p}`,channelId:a,threadTs:p,viewContext:eu.Y.SLACKBOT_AI_CONVERSATION,gravityLayout:!0,startAtTop:!1,hideHeader:!0,isQuipCommentThread:!0})));let Q=l&&X.createElement(e0.Ay,{level:e0.A_.warning,showCloseButton:!0,onClose:z},l?"permission-denied"===l?(0,tk.xj)():x?tO.t("Failed to capture screenshot. Please try again."):"Failed to capture screenshot. Please try again.":null);return X.createElement("div",{className:ti().contentContainer},Q,X.createElement(ScreenshotCaptureOverlay,{windowRef:t,onDragStart:hideOperator,onCaptureComplete:S,onDismiss:showOperator,isEnabled:!f&&!o}),X.createElement("div",{className:ti().inputWrapper},X.createElement(tC.A,{ref:w,channelId:a,draft:o?void 0:v,viewContext:eu.Y.SLACKBOT_AI_CONVERSATION,placeholder:x?tO.t("Ask or search anything"):"Ask or search anything",sendMessage:J,enableEmojiButton:!1,enableMentionButton:!1,enableComposerButton:!1,enableSlashCommandsButton:!1,enableSendButton:!0,enableFileButton:!1,maxLines:8,useWysiwyg:!1,focusOnMount:!0,autocompleteProps:{onOpen:K,onClose:q}}),o&&X.createElement("div",{className:ti().spinner},X.createElement(e1.A,{size:"medium"})),!o&&X.createElement("div",{className:ti().toolsContainer},X.createElement(ts,{microphoneOn:T,microphoneFailed:R,startMicrophone:M,stopMicrophone:E,microphoneStream:A,mode:c,onModeChange:d}),X.createElement(t_.A,{screenCaptureOn:O,startScreenCapture:I,stopScreenCapture:L,clogButton:eX.A}),X.createElement(tw,{onScreenSelected:j,onPermissionDenied:Z}))))});tW.displayName="OperatorContent";var tI=r(0xa6f3163b),tL=r(0x2501a2cee),tB=r(0x24aac3ef),tF=r.n(tB);let tN=new en.Ay("operator"),tP=X.memo(({onClose:e})=>{let t=(0,eC.d4)(e=>"on"===(0,ex._Z)(e,"desktop_command_center"));return X.createElement("div",{className:tF().headerContainer},X.createElement("div",{className:tF().headerLogo},X.createElement(tL.Ah,{name:"slack-logo",size:"16"})),X.createElement("div",{className:tF().headerActions},X.createElement(tI.A,{htmlType:"button",onClick:e,className:tF().headerActionButton,"aria-label":t?tN.t("Close"):"Close"},X.createElement(tL.Ah,{name:"close"}))))});tP.displayName="OperatorHeader";let tD="operator-window-id";var tU=r(0xd66cda03),t$=r(0xa69165cb),tV=r(0x1f57aea47),tG=r(0x1b712feab),tK=r(0x1ebac3ac1),tq=r(0x19bbcf8d7),tj=r.n(tq);let tZ=X.memo(()=>{let{windowRef:e,windowToken:t,windowId:r}=(0,X.useContext)(er._0),a=(0,ea.wA)(),n="dark"===(0,tU.cw)(eB.to),o=(0,t$.A)(),[i,l]=(0,X.useState)(!1),s=(0,eC.d4)(e=>(0,tV.oY)(e,r)),c=(0,eC.d4)(e=>(0,tK.K)(e,r)),d=s||c||i,u=(0,X.useRef)(null);(0,X.useEffect)(()=>{if(!t)return;let e=Math.round(550*o),r=Math.round(700*o),a=u.current;a&&a.width===e&&a.height===r||(u.current={width:e,height:r},a&&(0,C.qL1)(t,e,r))},[t,o]),(0,X.useEffect)(()=>{let t=e?.deref()?.document?.querySelector("body");t&&(n?t.classList.add(et.RD):t.classList.remove(et.RD))},[e,n]),(0,X.useEffect)(()=>{let n=e?.deref();if(!n)return;let handleBlur=()=>{r&&a((0,tG.E)({windowId:r})),(0,eQ.K7)(),t&&(0,C.nnC)(t,!1)},handleFocus=()=>{(0,_.uF)()&&t&&(0,C.CRO)(t,!0,"floating")};return n.addEventListener("blur",handleBlur),n.addEventListener("focus",handleFocus),()=>{n.removeEventListener("blur",handleBlur),n.removeEventListener("focus",handleFocus)}},[e,r,t,a]);let h=(0,X.useCallback)(r=>{if(!t||!e)return;let a=e.deref();if(!a)return;let n=a.document.querySelector(`.${tj().container}`);if(!n)return;let o=n.contains(r.target),i=r.target,l=i?.closest?.(".c-popover, .c-popover__content")!==null;o||d||l?(0,C.nnC)(t,!1):(0,C.nnC)(t,!0,{forward:!0})},[t,e,d]);(0,tx.M)("mousemove",h,{element:e?.deref()?.document,isEnabled:!!e});let p=(0,X.useCallback)(()=>{let t=e?.deref();t&&!t.closed&&t.close()},[e]);return X.createElement("div",{className:tj().container},X.createElement(tP,{onClose:p}),X.createElement(tW,{setIsPopoverOpen:l}))});tZ.displayName="Operator";var tH=r(0x235124cc7);let tJ=(0,w.getGenericLogger)(),tz=new en.Ay("command-center");async function createOperator(e){try{let t=(0,ec.ZF)(tD);t?.childWindowRef&&!t.childWindowRef.closed&&t.childWindowRef.close(),resetOperatorState();let r=await calcTopRightPosition(),a=(0,C.xhB)(),n=Math.round(550*a),o=Math.round(700*a),l=Math.round(700*a);await (0,i.Qw)(e,(0,tH.A)({element:X.createElement(tZ,null),uniqueWindowId:tD,windowFeatures:{width:n,height:o,maxWidth:l,maxHeight:o,x:r.x,y:r.y,frame:!1,transparent:!0,skipTaskbar:!0,type:"panel",hasShadow:!1,acceptFirstMouse:!1,roundedCorners:!0,resizable:!0,title:tz.t("Slack Operator")},onCleanup:()=>{resetOperatorState(),(0,i.Qw)(e,(0,eq.lM)({windowId:tD}))}}));let s=(0,ec.ZF)(tD);return s?.childWindowTokenRef&&(setOperatorWindowToken(s.childWindowTokenRef),await (0,C.CRO)(s.childWindowTokenRef,!0,"floating")),setOperatorVisible(!0),tD}catch(e){throw tJ.error("createOperatorWindow","Failed to create operator window",e),e}}async function calcTopRightPosition(){let e=Math.round(550*(0,C.xhB)());try{let t=await (0,C.Bs9)(),r=t?await (0,C.hZp)(t):(await (0,C.zxd)())[0];if(r)return{x:Math.round(r.bounds.x+r.bounds.width-e-10),y:Math.round(r.bounds.y+10)};return{x:0,y:0}}catch(e){return tJ.warn("calcTopRightPosition","Failed to calculate position",e),{x:0,y:0}}}createOperator.displayName="createOperator";let tY=(0,w.getGenericLogger)(),tQ=null,tX=!1,t0=null;function resetSlackbotMiniState(){tQ=null,tX=!1,t0=null}function setSlackbotMiniVisible(e){tX=e}function setSlackbotMiniWindowToken(e){t0=e}function hasSlackbotMiniWindow(){return null!==t0}async function hideSlackbotMini(){if(null!==t0){try{let e=await (0,C.oCQ)(t0);e&&(tQ={x:e.x,y:e.y})}catch(e){tY.warn("hideSlackbotMini","Failed to save window position",e)}(0,_.uF)()?(await (0,C.yCy)(t0,0),await (0,C.nnC)(t0,!0)):await (0,C.TR1)(t0),tX=!1}}async function showSlackbotMini(){if(null!==t0){if(tQ)try{await (0,C.Ms_)(t0,{x:tQ.x,y:tQ.y})}catch(e){tY.warn("showSlackbotMini","Failed to restore window position",e)}(0,_.uF)()?(await (0,C.yCy)(t0,1),await (0,C.nnC)(t0,!1),await (0,C.hN0)(t0),await (0,C.CRO)(t0,!0,"floating")):(await (0,C.ukB)(t0),await (0,C.hN0)(t0)),tX=!0}}async function toggleSlackbotMiniVisibility(){null!==t0&&(tX?await hideSlackbotMini():await showSlackbotMini())}var t1=r(0x120c268ad),t2=r.n(t1),t8=r(0xee368d6e),t4=r(0x24a80bf7a),t3=r(0x46fab034),t6=r.n(t3);let t5=new en.Ay("slackbot-mini"),t7=X.memo(()=>{let e=(0,ea.wA)(),t=(0,eC.d4)(U.ZT),r=(0,eC.d4)(e=>(0,eT.x)(e,eA.Jx.OPERATOR)),a=(0,eC.d4)(e=>(0,eT.l)(e,eA.Jx.OPERATOR)),n=(0,X.useCallback)(t=>{e((0,ek.A)(t))},[e]),o=(0,X.useCallback)(async e=>{if((0,i.Qw)(t,(0,t4.L)(e)),(0,C.g9M)()){let e=(0,C.Xgz)();e&&await (0,C.hN0)(e)}await hideSlackbotMini()},[t]);return X.createElement("div",{className:t2()(t6().container,{[t6().dropdownOpen]:r})},X.createElement("div",{className:t6().inputWrapper},X.createElement(t8.A,{inputId:eA.Jx.OPERATOR,isOpen:r,externalDisplayQueryOps:a,omniswitcherMode:eA.cb.SWITCHY,onClose:n,onAccept:o,placeholderText:t5.t("Ask or search anything",{fallbackHash:"320ad267d8d969f285eda5c184f5455bd29c8c95",fallbackHashNs:"emoji_names"}),focusOnMount:!0,hideFooter:!0,searchyMode:eA.R5.DEFAULT,hideAutocompleteWithEmptyQuery:!0})))});t7.displayName="SlackbotMiniOmniswitcher";let t9=Q.oW;var re=r(0x24359dd3d),rt=r.n(re);let rr=X.memo(()=>{let{windowRef:e,windowToken:t}=(0,X.useContext)(er._0),r="dark"===(0,tU.cw)(eB.to),a=(0,t$.A)(),n=(0,X.useRef)(null);(0,X.useEffect)(()=>{if(!t)return;let e=Math.round(550*a),r=Math.round(700*a),o=n.current;o&&o.width===e&&o.height===r||(n.current={width:e,height:r},o&&(0,C.qL1)(t,e,r))},[t,a]),(0,X.useEffect)(()=>{let t=e?.deref()?.document?.querySelector("body");t&&(r?t.classList.add(et.RD):t.classList.remove(et.RD))},[e,r]),(0,X.useEffect)(()=>{let r=e?.deref();if(!r)return;let handleFocus=()=>{(0,_.uF)()&&t&&(0,C.CRO)(t,!0,"floating")};return r.addEventListener("focus",handleFocus),()=>{r.removeEventListener("focus",handleFocus)}},[e,t]);let o=(0,X.useCallback)(r=>{if(!t||!e)return;let a=e.deref();if(!a)return;let n=a.document.querySelector(`.${rt().container}`);n&&(n.contains(r.target)?(0,C.nnC)(t,!1):(0,C.nnC)(t,!0,{forward:!0}))},[t,e]);return(0,tx.M)("mousemove",o,{element:e?.deref()?.document,isEnabled:!!e}),X.createElement(ev.A,{type:ew.mq.Modal,windowId:t9,shouldNavigateInContext:!1},X.createElement("div",{className:rt().container},X.createElement(t7,null)))});rr.displayName="SlackbotMini";let ra=(0,w.getGenericLogger)(),rn=new en.Ay("slackbot-mini");async function createSlackbotMini(e){try{let t=(0,ec.ZF)(t9);t?.childWindowRef&&!t.childWindowRef.closed&&t.childWindowRef.close(),resetSlackbotMiniState();let r=await window_utils_calcTopRightPosition(),a=(0,C.xhB)(),n=Math.round(550*a),o=Math.round(700*a),l=Math.round(700*a);await (0,i.Qw)(e,(0,tH.A)({element:X.createElement(rr,null),uniqueWindowId:t9,windowFeatures:{width:n,height:o,maxWidth:l,maxHeight:o,x:r.x,y:r.y,frame:!1,transparent:!0,skipTaskbar:!0,type:"panel",hasShadow:!1,acceptFirstMouse:!1,roundedCorners:!0,resizable:!0,title:rn.t("Slack Operator",{fallbackHash:"320ad267d8d969f285eda5c184f5455bd29c8c95",fallbackHashNs:"emoji_names"})},onCleanup:()=>{resetSlackbotMiniState(),(0,i.Qw)(e,(0,eq.lM)({windowId:t9}))}}));let s=(0,ec.ZF)(t9);return s?.childWindowTokenRef&&(setSlackbotMiniWindowToken(s.childWindowTokenRef),await (0,C.CRO)(s.childWindowTokenRef,!0,"floating")),setSlackbotMiniVisible(!0),t9}catch(e){throw ra.error("createSlackbotMini","Failed to create slackbot mini window",e),e}}async function window_utils_calcTopRightPosition(){let e=Math.round(550*(0,C.xhB)());try{let t=await (0,C.Bs9)(),r=t?await (0,C.hZp)(t):(await (0,C.zxd)())[0];if(r)return{x:Math.round(r.bounds.x+r.bounds.width-e-10),y:Math.round(r.bounds.y+10)};return{x:0,y:0}}catch(e){return ra.warn("calcTopRightPosition","Failed to calculate position",e),{x:0,y:0}}}createSlackbotMini.displayName="createSlackbotMini";var ro=r(0xb9374f6a),ri=r(0x147d8a1cf);let rl=(0,w.getGenericLogger)(),registerCommandCenterShortcut=async()=>{try{let e=(0,o.en)(),t=e?.getState(),r=(0,n.getFocusedWorkspace)?.(t);if(!r)return;let a=(0,i.oK)(r),l=a?.getState();if(!l||!(0,ri.S)(l))return;let handler=async()=>{let e=(0,o.en)(),t=e?.getState(),r=(0,n.getFocusedWorkspace)?.(t);if(!r)return;let a=(0,i.oK)(r),l=a?.getState();if(!l||!(0,ri.S)(l))return;let s=Y.J?.location?.search??"",c=Object.fromEntries(new URLSearchParams(s)),d=c?.entry||"slackbot-mini";if("omniswitcher"===d){let e=(0,ec.ZF)(Q.oW);e?.childWindowRef?e.childWindowRef.close():await createCommandCenterWindow(Q.g.Floating,Q.Py.Omniswitcher,r)}else"slackbot"===d?hasOperatorWindow()?await toggleOperatorVisibility():await createOperator(r):"slackbot-mini"===d&&(hasSlackbotMiniWindow()?await toggleSlackbotMiniVisibility():await createSlackbotMini(r))};(0,C.zin)(ro.Sr.DESKTOP_COMMAND_CENTER,handler),(0,C.wzE)(ro.Sr.DESKTOP_COMMAND_CENTER,!0)}catch(e){rl.warn("Failed to register command center shortcut",e)}};var rs=r(0x9c472b09),rc=r(0xcc2cce7f),rd=r(0x1750c1ced);function reportLongTailTeamUsage(){if(!(0,rd.VA)())return;let e=(0,K.W6)("recentlyUsedTeamIds")||[];if(e?.length<=10)return;let t=e.slice(10),r=(0,rc.A)();t.forEach(e=>{let t=r[e];if(!t)return;let a=t.mostRecentlyUsedDate;if(!a)return;let n=(0,rs.A)(new Date,new Date(a));(0,I.Cy)({teamOrEnterpriseId:e}).store("least_recently_used_workspaces_last_use",n)})}var ru=r(0xe874a88a),rh=r(0x2047dec93),rp=r(0x4f6e90b4),rm=r(0x45a2e30),rf=r(0x1bd185e94),rw=r(0x1354f2d83);let rg=(0,w.getGenericLogger)();function fetchMemoryStats(e){return fetchMemoryStatsV5(e)}let rb="workingSetSize";function fetchMemoryStatsV5(e){let t=(0,C.vkf)();return t?t.then(t=>{let r={},a=t.processMetrics;if(!a||0===a.length)return rg.warn("STATS",`No memory stats collected getAppMetricsV2:${a}`,{subtype:"stats_no_memory"}),r;if(navigator&&navigator.hardwareConcurrency){let t=(0,rh.A)(a,({cpu:e})=>e.percentCPUUsage*navigator.hardwareConcurrency);r[`cpu_v5_app_${e}_teams`]=(0,rm.GB)(t,2)}return a.forEach(({type:t,memory:a})=>{if(rb in a){let n=`memory_v5_app_mb_${e}_teams_${t.toLowerCase()}_process`;n in r||(r[n]=0),r[n]+=Math.round((0,rf.UK)(a[rb]))}}),r[`memory_v5_app_mb_${e}_teams`]=(0,rw.mw)(a,rb),addJSHeapMetrics(r,5,e),r}).catch(e=>(rg.error("STATS",`getAppMetricsV2 failed: ${e.message}`),{})):(rg.warn("STATS","getAppMetricsV2 not available",{subtype:"stats_no_memory"}),Promise.resolve({}))}function addJSHeapMetrics(e,t,r){Y.J.performance&&Y.J.performance.memory&&(e[`heap_v${t}_used_mb_${r}_teams`]=(0,rf.hZ)(Y.J.performance.memory.usedJSHeapSize),e[`heap_v${t}_total_mb_${r}_teams`]=(0,rf.hZ)(Y.J.performance.memory.totalJSHeapSize))}function storeSSBMemoryStatsOnAnInterval(){if(!(0,_.y3)())return ru.S.resolve();let e=(0,I.rh)(),t=(0,v.F)(),r=t.createMetricsTrace({label:"ssb-memory-stats"});function fetchStatsAndBeacon(){let a=(0,o.Ry)(),i=(0,n.getBootedWorkspaces)(a),l=i?i.length:0;return fetchMemoryStats(l).then(a=>a?(Object.keys(a).forEach(t=>{e.store(t,a[t],{allow_negative:-1!==t.indexOf("delta")}),r.store({name:t.replace(/_\d+?_teams/,""),value:a[t]}).addTags({num_teams:l})}),t.reportTrace(r),a):null)}return setInterval(()=>fetchStatsAndBeacon(),36e5+Math.floor(6e5*Math.random())),setTimeout(()=>fetchStatsAndBeacon(),18e4),ru.S.resolve()}(0,rp.ul)("ssbMetrics",{fetchMemoryStatsV5});var ry=r(0x1c4066c5c),rS=r(0x22562bec6),rv=r(0x19efc8b50),rk=r(0x1914b45dc),r_=r(0x22480f425),rC=r(0x78b6120c),rx=r(0x21d52e266);let rT="service_worker_install";async function maybeFetchNewServiceWorker({shouldFetchNewServiceWorker:e,recommendedBuildVersion:t}){if(!e||!(0,rx.G)())return(0,h.pq)(ry.S8,"No need to install new service worker"),!1;let r=await (0,rC.G9)(),a=(0,v.F)(),n=a.createTrace({traceName:`mvp:${rT}`,tags:{recommended_build_version:t,latest_cached_build_version:r},samplingOptions:{sampleType:k.nl.ALWAYS}});return t===r?(n.startSpan(`mvp:${rT}:prevent`,{tags:{reason:"already_on_recommended_version"}}).close(),a.reportTrace(n),(0,h.pq)(ry.S8,"Preventing service worker fetch because we already have the latest cached build"),!1):(n.startSpan(`mvp:${rT}:allow`,{tags:{reason:"should_reload"}}).close(),a.reportTrace(n),(0,rC.DB)(),!0)}var rA=r(0x209e067d1),rR=r(0x7b0b485),rM=r(0xe822f938);function isClientActive(){let e=(0,o.Ry)();return!!((0,rM.OD)(e)||(0,rA.A)()&&(0,rR.Ak)(e))}var rE=r(0x12c5e193e),rO=r(0x11d0b0bd1),rW=r(0x192f113bc);function waitForHuddleToEnd(){return(0,rW.A)().waitForHuddleToEnd()}var rI=r(0x12c8f2e51);let rL=!1;function isVersionStale(e){let t=(0,rv.P2)();return!!t&&parseInt(t,10)this.checkForMinVersionBumpAndMaybeReload(),e),this.initDebugger()}async checkForMinVersionBumpAndMaybeReload(){let e=this.logger;this.lastPollTs=Date.now(),e.info("Checking to see if we should reload"),this.tracer.createAndReportSpan({name:"mvp_check"});try{let t=await this.checkForMinVersionBump({reason:"polling",shouldCheckForNewServiceWorker:!0});if(!t)return void e.info("Missing client.shouldReload response. No need to reload");let{client_min_version:r,should_reload:a,reason:n,recommended_build_version:o,build_manifest_last_modified:i,should_fetch_new_service_worker:l}=t;if(this.maybeStartTrace(r),this.maybeStartPreventReloadSpan(r),!a){e.info("No need to reload"),this.tracer.createAndReportSpan({name:"mvp_shouldreload_prevent_api",options:{tags:{reason:n}}}),this.maybeIncrementPreventReloadReason(r,n),maybeFetchNewServiceWorker({shouldFetchNewServiceWorker:l,recommendedBuildVersion:o});return}if(!(0,rE.RY)(o)){this.tracer.createAndReportSpan({name:"mvp_shouldreload_prevent_client",options:{tags:{reason:"client"}}}),this.maybeIncrementPreventReloadReason(r,"client");return}this.maybeClosePreventReloadSpan(),e.info("Time to reload! Waiting until the client is online and unfocused."),this.isSafeToReloadRightNow()?this.tracer.createAndReportSpan({name:"mvp_shouldreload_immediate"}):(this.tracer.createAndReportSpan({name:"mvp_shouldreload_will_defer"}),this.isClientOnline()||this.tracer.createAndReportSpan({name:"mvp_shouldreload_will_defer_offline"}),this.maybeStartAwaitSafeTimeToReloadSpan(),await this.awaitSafeTimeForReload(),this.maybeCloseAwaitSafeTimeToReloadSpan());let s="client.shouldReload told us to reload earlier; we are now unfocused and online";e.info(s),this.maybeCloseAndReportTrace();try{this.beforeReloadCallback()}catch(e){this.logger.error("MinVersionPoll: beforeReloadCallback failed with error",e)}(0,rO.As)({reason:s,reasonKey:"client_should_reload:min_version_poll",recommendedBuildVersion:o,buildManifestLastModified:i})}catch(t){e.error("client.shouldReload check failed",t)}}async awaitSafeTimeForReload(e=0){let t=this.logger;return this.maybeIncrementRetryAttempts(e),ru.S.all([this.awaitOnline(),this.awaitBlur()]).tap(()=>{t.info("Online and unfocused, will wait 20000ms to reload")}).delay(2e4).then(()=>this.isSafeToReloadRightNow()?(this.tracer.createAndReportSpan({name:"mvp_shouldreload_did_defer"}),!0):(t.info("Waited 20000 ms but now it is no longer safe to reload. Trying again..."),t.info(`Online: ${this.isClientOnline()}; Inactive: ${!isClientActive()||this.hasWaitedTooLongForBlur}; Retry attempts: ${e}`),this.awaitSafeTimeForReload(e+1)))}isSafeToReloadRightNow(){return this.isClientOnline()&&(!isClientActive()||this.hasWaitedTooLongForBlur)}async awaitBlur(){if(!isClientActive()||this.hasWaitedTooLongForBlur)return;let e=this.logger;this.awaitBlurPromise||(this.awaitBlurPromise=ru.S.delay(108e5).then(()=>{e.info("Waited the max 10800000ms for a blur event"),this.tracer.createAndReportSpan({name:"mvp_shouldreload_waited_too_long_for_blur"}),this.hasWaitedTooLongForBlur=!0})),this.maybeStartAwaitBlurSpan();let t=(0,o.en)(),r=t.getState(),a=[];return(0,rM.OD)(r)&&(e.info("Waiting for blur event to reload"),a.push(t.dispatch((0,rI.H)()))),(0,rA.A)()&&(0,rR.Ak)(r)&&(e.info("Waiting for huddle to end to reload"),a.push(waitForHuddleToEnd())),Promise.race([Promise.all(a),this.awaitBlurPromise]).then(()=>{this.maybeCloseAwaitBlurSpan()})}async awaitOnline(){return!!this.isClientOnline()||(this.logger.info("Waiting to come back online to reload"),this.maybeStartAwaitOnlineSpan(),(0,rS.A)("online").tap(()=>{this.maybeCloseAwaitOnlineSpan()}))}initDebugger(){(0,rp.ul)("minVersionPoll",{checkAndMaybeReloadNow:()=>this.checkForMinVersionBumpAndMaybeReload(),checkNow:()=>this.checkForMinVersionBump({reason:"slackdebug"}),getLastPollTime:()=>this.lastPollTs,timer:this.pollTimer})}maybeStartTrace(e=0){try{if(!isVersionStale(e)||this.trace)return;let t={client_min_version:e,last_poll_ts:this.lastPollTs,method:"client.shouldReload",reason:"polling",metric_version:1},r=1e3*e,a=this.getLastSocketConnection(),n=Math.max(r,a);this.rootSpan=this.tracer.createSpan({name:"mvb:stale",options:{startTime:n,tags:t},samplingOptions:{sampleType:k.nl.SESSION,sampleRate:.1}});let o=this.tracer.createSpan({name:"mvb:prev_poll_interval",options:{startTime:n,tags:t,traceId:this.rootSpan?.getTraceId(),parentSpanId:this.rootSpan?.getId()}});o.close(),this.tracer.reportSpans([o]),this.trace=this.tracer.createTrace({traceName:"mvb:check",traceId:this.rootSpan?.getTraceId(),parentSpanId:this.rootSpan?.getId(),tags:t})}catch{}}maybeStartPreventReloadSpan(e=0){try{if(!this.trace||!isVersionStale(e)||this.preventSpan)return;this.preventSpan=this.trace.startSpan("mvb:prevent")}catch{}}maybeClosePreventReloadSpan(){try{if(!this.trace||!this.preventSpan)return;this.preventSpan.close(),this.preventSpan=null}catch{}}maybeIncrementPreventReloadReason(e=0,t){try{if(!this.trace||!isVersionStale(e)||!this.preventSpan)return;let r=`reason:${t||"unknown"}`,a=this.preventSpan.getTag(r)||0;this.preventSpan.setTag(r,a+1)}catch{}}maybeStartAwaitSafeTimeToReloadSpan(){try{if(!this.trace||this.awaitSafeTimeForReloadSpan)return;this.awaitSafeTimeForReloadSpan=this.trace.startSpan("mvb:defer",{tags:{is_online:this.isClientOnline(),is_blurred:!isClientActive(),has_waited_too_long_for_blur:this.hasWaitedTooLongForBlur}})}catch{}}maybeCloseAwaitSafeTimeToReloadSpan(){try{if(!this.trace||!this.awaitSafeTimeForReloadSpan)return;this.awaitSafeTimeForReloadSpan.close(),this.awaitSafeTimeForReloadSpan=null}catch{}}maybeStartAwaitOnlineSpan(){try{if(!this.trace||this.awaitOnlineSpan)return;this.awaitOnlineSpan=this.trace.startSpan("mvb:defer:await_online",{parentSpanId:this.awaitSafeTimeForReloadSpan?.getId()}),this.maybeIncrementAwaitOnlineAttempts()}catch{}}maybeCloseAwaitOnlineSpan(){try{if(!this.trace||!this.awaitOnlineSpan)return;this.awaitOnlineSpan.close(),this.awaitOnlineSpan=null}catch{}}maybeStartAwaitBlurSpan(){try{if(!this.trace||this.awaitBlurSpan)return;this.awaitBlurSpan=this.trace.startSpan("mvb:defer:await_blur",{parentSpanId:this.awaitSafeTimeForReloadSpan?.getId()}),this.maybeIncrementAwaitBlurAttempts()}catch{}}maybeCloseAwaitBlurSpan(){try{if(!this.trace||!this.awaitBlurSpan)return;this.awaitBlurSpan.addTags({is_blurred:!isClientActive(),has_waited_too_long_for_blur:this.hasWaitedTooLongForBlur}),this.awaitBlurSpan.close(),this.awaitBlurSpan=null}catch{}}maybeIncrementRetryAttempts(e){try{if(!this.trace||!this.awaitSafeTimeForReloadSpan)return;this.awaitSafeTimeForReloadSpan.setTag("total_retry_attempts",e)}catch{}}maybeIncrementAwaitOnlineAttempts(){try{if(!this.trace||!this.awaitSafeTimeForReloadSpan)return;let e="await_online_attempts",t=this.awaitSafeTimeForReloadSpan.getTag(e)||0;this.awaitSafeTimeForReloadSpan.setTag(e,t+1)}catch{}}maybeIncrementAwaitBlurAttempts(){try{if(!this.trace||!this.awaitSafeTimeForReloadSpan)return;let e="await_blur_attempts",t=this.awaitSafeTimeForReloadSpan.getTag(e)||0;this.awaitSafeTimeForReloadSpan.setTag(e,t+1)}catch{}}maybeCloseAndReportTrace(){try{if(!this.trace||!this.trace||!this.rootSpan)return;this.rootSpan?.close(),this.tracer.reportTrace(this.trace),this.tracer.reportSpans([this.rootSpan]),this.trace=null,this.rootSpan=null}catch{}}testOnlyReset(){if(!(0,r_.A)()&&!(0,rk.A)())throw Error("MinVersionPoll.reset should only be called in test files!");clearInterval(this.pollTimer),this.pollTimer=null,this.awaitBlurPromise&&(this.awaitBlurPromise.cancel(),this.awaitBlurPromise=null),this.lastPollTs=null,this.hasWaitedTooLongForBlur=!1}};Object.defineProperty({forceStartMinVersionPollInTests:rL},"forceStartMinVersionPollInTests",{get:()=>rL,set:e=>{rL=e}});var rB=r(0x7adbadbb),rF=r(0x17a41206b);let rN=new en.Ay("min-version-poll"),rP=!1;function registerMinVersionPoll(){if(rP)return void(0,h.pq)("MinVersionPoll can\u2019t be started more than once!");let e=(0,o.en)();new MinVersionPoll({isClientOnline:()=>!!(0,rF.Pb)(e.getState()),checkForMinVersionBump:ry.aT,getLastSocketConnection:()=>(0,rF.cf)(e.getState())??0,beforeReloadCallback:()=>{notifyAboutReloadAccessibly()}}).start(),rP=!0,(0,I.rh)().count("mvp_start_2")}function notifyAboutReloadAccessibly(){if(!(0,rA.A)())return;let e=(0,o.en)(),t=(0,n.getFocusedWorkspace)(e.getState());(0,i.oK)(t).dispatch((0,rB.rl)({message:rN.t("Reloading Slack\u2026"),assertive:!0}))}var rD=r(0xa69aaeeb);function setUpSquirrelMacDirectContentsWrite(){if(!(0,_.y3)()||!(0,_.cX)())return;let e=(0,rD._)("squirrel_mac_direct_contents_write","on");C.Ez7.isAvailable()?((0,h.pq)("BOOT",`Setting Squirrel Mac Direct Contents Write = ${e?"enabled":"disabled"}`),(0,C.Ez7)(e)):(0,h.pq)("BOOT","setSquirrelMacDirectContentsWriteEnabled not available")}var rU=r(0xcc110d9),r$=r(0x8c8bafa3);function setUpSSBInstanceCookie(){(0,C.g9M)()&&(0,rU.n0)("ssb_instance_id",(0,C.sST)(),3650,`.${(0,r$.qF)()}`)}function describeClasses(e){let t="";for(let r=0;r ${t}`;return t}function enrichCoepReports(){if(!("ReportingObserver"in window))return;let e=(0,p.Cu)()?`https://${(0,r$.Sw)()}/events/report`:`https://${(0,r$.c5)()}/events/report`;try{new window.ReportingObserver(t=>{let r=[];for(let e of t)if("coep"===e.type&&e.body){let t=e.body.toJSON(),{blockedURL:a,destination:n}=t;if("image"===n&&a){let n=document.querySelector(`img[src=${CSS.escape(a)}]`);if(n){t.html=n.outerHTML;try{t.domLocation=describeDomLocation(n)}catch(e){t.domLocationError=e.message}r.push({type:"coep-enriched",url:e.url,body:t})}}}r.length&&fetch(e,{method:"POST",body:JSON.stringify(r)})},{buffered:!0}).observe()}catch(e){(0,h.R8)("BOOT","Error creating ReportingObserver",e)}}var rV=r(0x9f4ba4e7),rG=r(0xe180a236),rK=r(0x178533105),rq=r(0x1130a8ca8),rj=r(0xe684f705),rZ=r(0x2365edf4c);function storeReduxStoreStatsOnAnInterval(){let e="store_metrics_v3";function fetchStatsAndBeacon(){let t=(0,o.Ry)(),r=(0,n.getBootedWorkspaces)(t);r&&r.forEach(t=>{let r=(0,i.$D)(t);if(!r)return;let a=(0,c.E)({state:r}),n=a.createMetricsTrace({label:e}),o=n.startSpan(`${e}:size_compute_time`),l=(0,rG.A)(r.files);n.store({name:`${e}:files:count`,value:l});let s=(0,rG.A)((0,rq.xH)((0,rj.Zo)(r)));n.store({name:`${e}:members:count`,value:s});let d=(0,rG.A)((0,rq.xH)(r.channels));n.store({name:`${e}:channels:count`,value:d});let u=(0,rK.A)((0,rq.xH)((0,rZ.e)(r)),(e,t)=>e+(0,rG.A)((0,rq.xH)(t)),0);n.store({name:`${e}:messages:count`,value:u}),n.store({name:`${e}:total:count`,value:l+s+d+u}),o.close(),a.reportTrace(n)})}setInterval(()=>fetchStatsAndBeacon(),36e5+Math.floor(6e5*Math.random()))}function register(e){e.hooks.bootComplete.tap("Begin min version polling",async({contextualInfo:e})=>(registerMinVersionPoll(),{contextualInfo:e})),e.hooks.bootComplete.tap("Prepare to record SSB memory usage stats on an interval",async({contextualInfo:e})=>(storeSSBMemoryStatsOnAnInterval(),{contextualInfo:e})),e.hooks.bootComplete.tap("Prepare to record Redux store size stats on an interval",async({contextualInfo:e})=>(storeReduxStoreStatsOnAnInterval(),{contextualInfo:e})),e.hooks.bootComplete.tap("Update accessibility preferences",async({contextualInfo:e})=>(updateA11yPreferences(),{contextualInfo:e})),e.hooks.bootComplete.tap("Set clogging interval",async({contextualInfo:e})=>(updateCloggingInterval(),{contextualInfo:e})),e.hooks.bootComplete.tap("Clogs if the users client does not have push notifications enabled",async({contextualInfo:e})=>(maybeClogNotificationPermission(),{contextualInfo:e})),e.hooks.bootComplete.tap("Set-up a cookie with the SSB instance ID to send along with API requests",async({contextualInfo:e})=>(setUpSSBInstanceCookie(),{contextualInfo:e})),e.hooks.bootComplete.tap("Register the service worker",async({contextualInfo:e})=>((0,_.pc)()?(0,rC.Lz)():(0,h.pq)("BOOT","Service Worker unavailable; Skipping registration."),{contextualInfo:e})),e.hooks.bootComplete.tap("Clear unwanted params from URL",async({contextualInfo:e})=>(clearReloadURLState(),{contextualInfo:e})),e.hooks.bootComplete.tap("Clean up old persisted data for expired teams",async({contextualInfo:e})=>(await cleanUpOldPersistedData(),{contextualInfo:e})),e.hooks.bootComplete.tap("Persist data for all booted teams",async({contextualInfo:e})=>(persistNewData(),{contextualInfo:e})),e.hooks.bootComplete.tap("Enable the direct-contents-write feature of Squirrel.Mac on Mac SSB",async({contextualInfo:e})=>(setUpSquirrelMacDirectContentsWrite(),{contextualInfo:e})),e.hooks.bootComplete.tap("Collect data on how long it's been since people have used their least active teams",async({contextualInfo:e})=>(reportLongTailTeamUsage(),{contextualInfo:e})),e.hooks.bootComplete.tap("Mark the client boot as complete",async({contextualInfo:e})=>(markBootComplete(),{contextualInfo:e})),e.hooks.bootComplete.tap("(Desktop only) Signal to desktop that all teams have booted",async({contextualInfo:e})=>(maybeSignalBootedToDesktop(),{contextualInfo:e})),e.hooks.bootComplete.tap("(Desktop only) Register command center keyboard shortcut",async({contextualInfo:e})=>(registerCommandCenterShortcut(),{contextualInfo:e})),e.hooks.bootComplete.tap("Preload quip assets",async({contextualInfo:e})=>(initPreloadQuip(),{contextualInfo:e})),e.hooks.bootComplete.tap("Maybe show Day 1 creator welcome modal",async({contextualInfo:e})=>(maybeShowDay1CreatorWelcomeModalAtBoot(),{contextualInfo:e})),e.hooks.bootComplete.tap("Collect client metrics on an interval",async({contextualInfo:e})=>(reportClientMetrics(),{contextualInfo:e})),e.hooks.bootComplete.tap("Record a count of booted teams",async({contextualInfo:e})=>(beaconWorkspacesCount(),{contextualInfo:e})),e.hooks.bootComplete.tap("Install a ReportingObserver to enrich COEP reports",async({contextualInfo:e})=>(enrichCoepReports(),{contextualInfo:e})),e.hooks.bootComplete.tap("Report dogfood metrics",async({contextualInfo:e})=>(setupDesktopDogfoodMetricReporter(),{contextualInfo:e})),e.hooks.bootComplete.tap("Collect PerformanceResourceTiming data",async({contextualInfo:e})=>{let t=await e.isBootingWarm;return(0,rV.U)(e.getTraceMeta().getTracer(),{bootType:t?"warm":"cold"}),{contextualInfo:e}}),e.hooks.bootComplete.tap("Maybe sync workspace switcher icons if out of sync",async({contextualInfo:e})=>(maybeSyncWorkspaceIcons(),{contextualInfo:e}))}}}]); //# sourceMappingURL=https://slack.com/source-maps/bv1-13/gantry-v2-async-client-boot-deferred.ae25da4b10bfee0fd324.min.js.mapØA —Eoúô