@mirai/core 0.4.586 → 0.4.588

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,7 @@ const createMcpState = () => ({
32
32
  });
33
33
  const createResponseState = () => ({
34
34
  activeId: null,
35
- resumeAfterActive: false
35
+ audioResponseIds: new Set()
36
36
  });
37
37
  const createFunctionState = () => ({
38
38
  pendingCalls: new Map(),
@@ -149,8 +149,13 @@ const useOpenAiRealtimeSession = () => {
149
149
  }
150
150
  mcpStateRef.current = createMcpState();
151
151
  }, []);
152
+ const clearPendingFollowup = (0, _react.useCallback)(() => {
153
+ functionStateRef.current.pendingFollowup = false;
154
+ functionStateRef.current.pendingFollowupReason = null;
155
+ functionStateRef.current.pendingFollowupResponse = null;
156
+ }, []);
152
157
  const sendResponseCreate = (0, _react.useCallback)((reason, responseOverrides) => {
153
- if (responseStateRef.current.activeId) {
158
+ if (responseStateRef.current.activeId || responseStateRef.current.audioResponseIds.size > 0) {
154
159
  functionStateRef.current.pendingFollowup = true;
155
160
  functionStateRef.current.pendingFollowupReason = reason || null;
156
161
  functionStateRef.current.pendingFollowupResponse = responseOverrides || null;
@@ -169,23 +174,30 @@ const useOpenAiRealtimeSession = () => {
169
174
  }
170
175
  return false;
171
176
  }, []);
177
+ const sendPendingFollowup = (0, _react.useCallback)(() => {
178
+ if (responseStateRef.current.activeId || responseStateRef.current.audioResponseIds.size > 0 || !functionStateRef.current.pendingFollowup) {
179
+ return false;
180
+ }
181
+ const reason = functionStateRef.current.pendingFollowupReason;
182
+ const responseOverrides = functionStateRef.current.pendingFollowupResponse;
183
+ clearPendingFollowup();
184
+ return sendResponseCreate(reason || 'followup', responseOverrides);
185
+ }, [clearPendingFollowup, sendResponseCreate]);
186
+ const requestFollowupResponse = (0, _react.useCallback)((reason, outputCallId, responseOverrides) => {
187
+ if (outputCallId && mcpStateRef.current.resumeRequestedCallIds.has(outputCallId)) return false;
188
+ if (!outputCallId && mcpStateRef.current.resumeRequestedAny) return false;
189
+ mcpStateRef.current.resumeRequestedAny = true;
190
+ if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);
191
+ return sendResponseCreate(reason || 'followup', responseOverrides);
192
+ }, [sendResponseCreate]);
172
193
  const resumeMcpIfNeeded = (0, _react.useCallback)(outputCallId => {
173
194
  if (outputCallId) {
174
195
  mcpStateRef.current.pendingCallIds.delete(outputCallId);
175
196
  }
176
- if (!mcpStateRef.current.pending || mcpStateRef.current.pendingCount > 0) return;
177
- if (outputCallId && mcpStateRef.current.resumeRequestedCallIds.has(outputCallId)) return;
178
- if (!outputCallId && mcpStateRef.current.resumeRequestedAny) return;
179
- if (!outputCallId && mcpStateRef.current.resumeRequestedCallIds.size > 0) return;
180
- const shouldResume = [...mcpStateRef.current.responseIds].some(responseId => mcpStateRef.current.responsesDone.has(responseId) && !mcpStateRef.current.responsesWithMessage.has(responseId));
181
- if (!shouldResume) return;
182
- if (sendResponseCreate('mcp_completed')) {
183
- if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);
184
- if (!outputCallId) mcpStateRef.current.resumeRequestedAny = true;
185
- } else if (responseStateRef.current.activeId) {
186
- responseStateRef.current.resumeAfterActive = true;
197
+ if (mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0 && !mcpStateRef.current.resumeRequestedAny && !functionStateRef.current.pendingFollowup) {
198
+ clearPendingMcp();
187
199
  }
188
- }, [sendResponseCreate]);
200
+ }, [clearPendingMcp]);
189
201
  const trackMcpStart = (0, _react.useCallback)(callId => {
190
202
  mcpStateRef.current.pending = true;
191
203
  if (callId) {
@@ -221,15 +233,19 @@ const useOpenAiRealtimeSession = () => {
221
233
  args: args !== null && args !== void 0 ? args : existing.args
222
234
  }));
223
235
  }, []);
224
- const handleMcpCompletion = (0, _react.useCallback)(outputCallId => {
236
+ const handleMcpCompletion = (0, _react.useCallback)(function (outputCallId) {
237
+ let requestFollowup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
225
238
  mcpStateRef.current.pending = true;
226
239
  if (outputCallId) {
227
240
  if (mcpStateRef.current.handledCallIds.has(outputCallId)) return;
228
241
  mcpStateRef.current.handledCallIds.add(outputCallId);
229
242
  }
230
243
  if (mcpStateRef.current.pendingCount > 0) mcpStateRef.current.pendingCount -= 1;
244
+ if (requestFollowup && mcpStateRef.current.pendingCount === 0) {
245
+ requestFollowupResponse('mcp_completed', outputCallId);
246
+ }
231
247
  resumeMcpIfNeeded(outputCallId);
232
- }, [resumeMcpIfNeeded]);
248
+ }, [requestFollowupResponse, resumeMcpIfNeeded]);
233
249
  const scheduleResumeRetry = (0, _react.useCallback)(outputCallId => {
234
250
  if (!mcpStateRef.current.pending) return;
235
251
  if (mcpStateRef.current.retry.timeoutId) return;
@@ -244,9 +260,9 @@ const useOpenAiRealtimeSession = () => {
244
260
  mcpStateRef.current.retry.timeoutId = null;
245
261
  if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.delete(outputCallId);
246
262
  mcpStateRef.current.resumeRequestedAny = false;
247
- resumeMcpIfNeeded(outputCallId);
263
+ requestFollowupResponse('mcp_completed', outputCallId);
248
264
  }, delay);
249
- }, [clearPendingMcp, resumeMcpIfNeeded]);
265
+ }, [clearPendingMcp, requestFollowupResponse]);
250
266
  const sendFunctionCallOutput = (0, _react.useCallback)((callId, output) => {
251
267
  const channel = dataChannelRef.current;
252
268
  if (!callId || !channel || channel.readyState !== 'open') return false;
@@ -284,15 +300,6 @@ const useOpenAiRealtimeSession = () => {
284
300
  }));
285
301
  return true;
286
302
  }, []);
287
- const requestFollowupResponse = (0, _react.useCallback)((reason, outputCallId, responseOverrides) => {
288
- functionStateRef.current.pendingFollowup = true;
289
- functionStateRef.current.pendingFollowupReason = reason || null;
290
- functionStateRef.current.pendingFollowupResponse = responseOverrides || null;
291
- if (sendResponseCreate(reason || 'followup', responseOverrides)) {
292
- mcpStateRef.current.resumeRequestedAny = true;
293
- if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);
294
- }
295
- }, [sendResponseCreate]);
296
303
  const buildMcpFailureInstructions = (0, _react.useCallback)(localeHint => {
297
304
  const normalizedLocale = localeHint || 'en-US';
298
305
  return "Respond in the language that matches the locale code \"".concat(normalizedLocale, "\". The requested information could not be retrieved because a data source failed. Apologize briefly and ask if the user wants to try again or ask something else.");
@@ -492,20 +499,28 @@ const useOpenAiRealtimeSession = () => {
492
499
  if (pendingIntroRef.current && !introResponseIdRef.current && payload.response_id) {
493
500
  introResponseIdRef.current = payload.response_id;
494
501
  }
502
+ if (responseId) responseStateRef.current.audioResponseIds.add(responseId);
495
503
  if (responseId) {
496
504
  mcpStateRef.current.responsesWithMessage.add(responseId);
497
505
  mcpStateRef.current.responseIds.delete(responseId);
498
506
  }
499
507
  if (mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0) {
508
+ if (mcpStateRef.current.resumeRequestedAny) clearPendingFollowup();
500
509
  clearPendingMcp();
501
510
  }
502
511
  }
503
- if (payload.type === 'output_audio_buffer.stopped') {
512
+ if (payload.type === 'output_audio_buffer.stopped' || payload.type === 'output_audio_buffer.cleared') {
513
+ if (responseId) {
514
+ responseStateRef.current.audioResponseIds.delete(responseId);
515
+ } else {
516
+ responseStateRef.current.audioResponseIds.clear();
517
+ }
504
518
  if (pendingIntroRef.current && introResponseIdRef.current && payload.response_id === introResponseIdRef.current) {
505
519
  enableMicrophone();
506
520
  pendingIntroRef.current = false;
507
521
  introResponseIdRef.current = null;
508
522
  }
523
+ sendPendingFollowup();
509
524
  }
510
525
  if (payload.type === 'response.output_item.added' && (((_payload$item4 = payload.item) === null || _payload$item4 === void 0 ? void 0 : _payload$item4.type) === 'mcp_call' || ((_payload$item5 = payload.item) === null || _payload$item5 === void 0 ? void 0 : _payload$item5.type) === 'mcp_tool_call')) {
511
526
  if (responseId) mcpStateRef.current.responseIds.add(responseId);
@@ -597,6 +612,9 @@ const useOpenAiRealtimeSession = () => {
597
612
  const hasMessage = outputItems.some(item => (item === null || item === void 0 ? void 0 : item.type) === 'message');
598
613
  const status = response === null || response === void 0 ? void 0 : response.status;
599
614
  const reason = (response === null || response === void 0 ? void 0 : (_response$status_deta = response.status_details) === null || _response$status_deta === void 0 ? void 0 : _response$status_deta.reason) || (response === null || response === void 0 ? void 0 : (_response$status_deta2 = response.status_details) === null || _response$status_deta2 === void 0 ? void 0 : (_response$status_deta3 = _response$status_deta2.error) === null || _response$status_deta3 === void 0 ? void 0 : _response$status_deta3.code) || null;
615
+ if (status !== 'completed' && responseId) {
616
+ responseStateRef.current.audioResponseIds.delete(responseId);
617
+ }
600
618
  if (status === 'completed') {
601
619
  if (hasMessage && mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0 && mcpStateRef.current.responseIds.size === 0) {
602
620
  clearPendingMcp();
@@ -628,19 +646,7 @@ const useOpenAiRealtimeSession = () => {
628
646
  }
629
647
  if (payload.type === 'response.done' && responseId && responseStateRef.current.activeId === responseId) {
630
648
  responseStateRef.current.activeId = null;
631
- if (responseStateRef.current.resumeAfterActive) {
632
- responseStateRef.current.resumeAfterActive = false;
633
- mcpStateRef.current.resumeRequestedAny = false;
634
- resumeMcpIfNeeded();
635
- }
636
- if (functionStateRef.current.pendingFollowup) {
637
- const reason = functionStateRef.current.pendingFollowupReason;
638
- const responseOverrides = functionStateRef.current.pendingFollowupResponse;
639
- functionStateRef.current.pendingFollowup = false;
640
- functionStateRef.current.pendingFollowupReason = null;
641
- functionStateRef.current.pendingFollowupResponse = null;
642
- sendResponseCreate(reason || 'followup', responseOverrides);
643
- }
649
+ sendPendingFollowup();
644
650
  }
645
651
  if (payload.type === 'response.output_audio_transcript.done') {
646
652
  var _payload$transcript2;
@@ -720,7 +726,7 @@ const useOpenAiRealtimeSession = () => {
720
726
  } finally {
721
727
  setIsConnecting(false);
722
728
  }
723
- }, [cleanupRealtimeSession, clearPendingMcp, enableMicrophone, handleMcpCompletion, handleMcpFailure, handleOpenUrlCalls, resumeMcpIfNeeded, scheduleResumeRetry, sendItemRetrieve, sendMcpApproval, sendResponseCreate, trackMcpStart, upsertFunctionCall, getFunctionCallKey]);
729
+ }, [cleanupRealtimeSession, clearPendingFollowup, clearPendingMcp, enableMicrophone, handleMcpCompletion, handleMcpFailure, handleOpenUrlCalls, resumeMcpIfNeeded, scheduleResumeRetry, sendPendingFollowup, sendItemRetrieve, sendMcpApproval, trackMcpStart, upsertFunctionCall, getFunctionCallKey]);
724
730
  const endSession = (0, _react.useCallback)(() => {
725
731
  cleanupRealtimeSession(true);
726
732
  }, [cleanupRealtimeSession]);
@@ -1 +1 @@
1
- {"version":3,"file":"useOpenAiRealtimeSession.js","names":["_dataSources","require","_react","_helpers","_lobby","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","createMcpState","pending","pendingCallIds","Set","pendingCount","handledCallIds","handledApprovalIds","failedCallIds","responseIds","responsesDone","responsesWithMessage","resumeRequestedCallIds","resumeRequestedAny","retry","count","timeoutId","createResponseState","activeId","resumeAfterActive","createFunctionState","pendingCalls","Map","pendingFollowup","pendingFollowupReason","pendingFollowupResponse","handledOpenUrlCalls","useOpenAiRealtimeSession","audioElementRef","useRef","audioContextRef","peerConnectionRef","dataChannelRef","localStreamRef","localAudioTrackRef","microphoneEnabledRef","pendingIntroRef","introResponseIdRef","mcpStateRef","responseStateRef","functionStateRef","pendingUserTranscriptRef","inputSourceRef","outputSourceRef","inputFrequencyDataRef","outputFrequencyDataRef","audioAnalyzersRef","inputAnalyser","outputAnalyser","getInputByteFrequencyData","getOutputByteFrequencyData","cleanupRealtimeSession","useCallback","shouldSignal","undefined","dataChannel","current","readyState","send","JSON","stringify","type","close","peerConnection","getSenders","sender","track","stop","localStream","getTracks","clearTimeout","srcObject","disconnect","audioContext","safeJsonParse","parse","_unused","isAllowedOpenUrl","url","trim","startsWith","enableMicrophone","enabled","clearPendingMcp","sendResponseCreate","reason","responseOverrides","channel","responsePayload","response","resumeMcpIfNeeded","outputCallId","delete","has","size","shouldResume","some","responseId","add","trackMcpStart","callId","getFunctionCallKey","name","concat","upsertFunctionCall","_ref","key","args","existing","get","set","handleMcpCompletion","scheduleResumeRetry","attempt","delay","setTimeout","sendFunctionCallOutput","output","item","call_id","sendItemRetrieve","itemId","item_id","sendMcpApproval","approvalRequestId","approve","previous_item_id","approval_request_id","requestFollowupResponse","buildMcpFailureInstructions","localeHint","normalizedLocale","handleMcpFailure","failureKey","instructions","handleOpenUrlCalls","_ref2","outputItems","responseOpenUrlItems","Array","isArray","id","values","callKey","error","allowed_prefix","window","location","assign","startSession","_ref3","assistant_name","chainId","currency","hotelId","isChain","locale","setIsConnecting","setReady","fingerprint","localStorage","getItem","finalizeSession","errorMessage","message","Event","publish","EVENT","METRICS","METRICS_EVENTS","AURA_ERROR","sessionResponse","request","endpoint","hostname","process","env","SERVICE_SYNAPSE","method","ephemeralKey","RTCPeerConnection","addEventListener","connectionState","document","createElement","autoplay","ontrack","_ref4","streams","remoteStream","createMediaStreamSource","connect","mediaStream","navigator","mediaDevices","getUserMedia","audio","echoCancellation","noiseSuppression","autoGainControl","channelCount","sampleRate","getAudioTracks","AudioContextConstructor","globalThis","AudioContext","webkitAudioContext","Error","state","resume","createAnalyser","fftSize","Uint8Array","frequencyBinCount","getByteFrequencyData","inputSource","applyConstraints","addTrack","createDataChannel","event","AURA_START","introductionMessage","_payload$item","_payload$item2","_payload$item3","_payload$item4","_payload$item5","_payload$item6","_payload$item9","_payload$item0","payload","data","response_id","_payload$item7","_payload$item8","_payload$item1","_payload$item10","status","_payload$item11","_payload$item12","_payload$item13","_payload$item14","approvalId","_payload$item15","_payload$item16","_payload$item19","_payload$item17","_payload$item18","_payload$item20","_response$status_deta","_response$status_deta2","_response$status_deta3","hasMessage","status_details","code","_payload$transcript","transcript","_payload$transcript2","input","activeLocale","chatId","ensureChatId","channelId","session","createChatMessage","author","body","meta","text","agent","offer","createOffer","setLocalDescription","sdpResponse","fetch","sdp","headers","Authorization","ok","answer","setRemoteDescription","endSession","audioAnalyzers","exports"],"sources":["../../../../../../src/components/Chat/components/Aura/hooks/useOpenAiRealtimeSession.js"],"sourcesContent":["import { Event, request } from '@mirai/data-sources';\nimport { useCallback, useRef } from 'react';\n\nimport { EVENT, METRICS_EVENTS } from '../../../../helpers';\nimport { createChatMessage, ensureChatId } from '../../../services/lobby.service';\n\nconst createMcpState = () => ({\n pending: false,\n pendingCallIds: new Set(),\n pendingCount: 0,\n handledCallIds: new Set(),\n handledApprovalIds: new Set(),\n failedCallIds: new Set(),\n responseIds: new Set(),\n responsesDone: new Set(),\n responsesWithMessage: new Set(),\n resumeRequestedCallIds: new Set(),\n resumeRequestedAny: false,\n retry: { count: 0, timeoutId: null },\n});\n\nconst createResponseState = () => ({\n activeId: null,\n resumeAfterActive: false,\n});\n\nconst createFunctionState = () => ({\n pendingCalls: new Map(),\n pendingFollowup: false,\n pendingFollowupReason: null,\n pendingFollowupResponse: null,\n handledOpenUrlCalls: new Set(),\n});\n\nconst useOpenAiRealtimeSession = () => {\n const audioElementRef = useRef(null);\n const audioContextRef = useRef(null);\n const peerConnectionRef = useRef(null);\n const dataChannelRef = useRef(null);\n const localStreamRef = useRef(null);\n const localAudioTrackRef = useRef(null);\n const microphoneEnabledRef = useRef(false);\n const pendingIntroRef = useRef(false);\n const introResponseIdRef = useRef(null);\n const mcpStateRef = useRef(createMcpState());\n const responseStateRef = useRef(createResponseState());\n const functionStateRef = useRef(createFunctionState());\n const pendingUserTranscriptRef = useRef('');\n const inputSourceRef = useRef(null);\n const outputSourceRef = useRef(null);\n const inputFrequencyDataRef = useRef(null);\n const outputFrequencyDataRef = useRef(null);\n const audioAnalyzersRef = useRef({\n inputAnalyser: null,\n outputAnalyser: null,\n getInputByteFrequencyData: () => null,\n getOutputByteFrequencyData: () => null,\n });\n\n const cleanupRealtimeSession = useCallback((shouldSignal = false) => {\n const dataChannel = dataChannelRef.current;\n if (dataChannel) {\n if (shouldSignal && dataChannel.readyState === 'open') {\n dataChannel.send(JSON.stringify({ type: 'session.close' }));\n }\n dataChannel.close();\n dataChannelRef.current = null;\n }\n\n const peerConnection = peerConnectionRef.current;\n if (peerConnection) {\n peerConnection.getSenders().forEach((sender) => {\n if (sender.track) sender.track.stop();\n });\n peerConnection.close();\n peerConnectionRef.current = null;\n }\n\n const localStream = localStreamRef.current;\n if (localStream) {\n localStream.getTracks().forEach((track) => track.stop());\n localStreamRef.current = null;\n }\n\n localAudioTrackRef.current = null;\n microphoneEnabledRef.current = false;\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n responseStateRef.current = createResponseState();\n functionStateRef.current = createFunctionState();\n\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = null;\n audioElementRef.current = null;\n }\n\n if (inputSourceRef.current) {\n inputSourceRef.current.disconnect();\n inputSourceRef.current = null;\n }\n\n if (outputSourceRef.current) {\n outputSourceRef.current.disconnect();\n outputSourceRef.current = null;\n }\n\n audioAnalyzersRef.current.inputAnalyser = null;\n audioAnalyzersRef.current.outputAnalyser = null;\n audioAnalyzersRef.current.getInputByteFrequencyData = () => null;\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => null;\n inputFrequencyDataRef.current = null;\n outputFrequencyDataRef.current = null;\n\n const audioContext = audioContextRef.current;\n if (audioContext) {\n audioContext.close();\n audioContextRef.current = null;\n }\n\n pendingUserTranscriptRef.current = '';\n }, []);\n\n const safeJsonParse = useCallback((value) => {\n if (typeof value !== 'string') return null;\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n }, []);\n\n const isAllowedOpenUrl = useCallback((url) => {\n if (typeof url !== 'string') return false;\n return url.trim().startsWith('https://api.mirai');\n }, []);\n\n const enableMicrophone = useCallback(() => {\n const track = localAudioTrackRef.current;\n if (!track || microphoneEnabledRef.current) return;\n track.enabled = true;\n microphoneEnabledRef.current = true;\n }, []);\n\n const clearPendingMcp = useCallback(() => {\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n }, []);\n\n const sendResponseCreate = useCallback((reason, responseOverrides) => {\n if (responseStateRef.current.activeId) {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n return false;\n }\n const channel = dataChannelRef.current;\n if (channel && channel.readyState === 'open') {\n const responsePayload = responseOverrides\n ? { type: 'response.create', response: responseOverrides }\n : { type: 'response.create' };\n channel.send(JSON.stringify(responsePayload));\n return true;\n }\n return false;\n }, []);\n\n const resumeMcpIfNeeded = useCallback(\n (outputCallId) => {\n if (outputCallId) {\n mcpStateRef.current.pendingCallIds.delete(outputCallId);\n }\n if (!mcpStateRef.current.pending || mcpStateRef.current.pendingCount > 0) return;\n if (outputCallId && mcpStateRef.current.resumeRequestedCallIds.has(outputCallId)) return;\n if (!outputCallId && mcpStateRef.current.resumeRequestedAny) return;\n if (!outputCallId && mcpStateRef.current.resumeRequestedCallIds.size > 0) return;\n const shouldResume = [...mcpStateRef.current.responseIds].some(\n (responseId) =>\n mcpStateRef.current.responsesDone.has(responseId) &&\n !mcpStateRef.current.responsesWithMessage.has(responseId),\n );\n if (!shouldResume) return;\n if (sendResponseCreate('mcp_completed')) {\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n if (!outputCallId) mcpStateRef.current.resumeRequestedAny = true;\n } else if (responseStateRef.current.activeId) {\n responseStateRef.current.resumeAfterActive = true;\n }\n },\n [sendResponseCreate],\n );\n\n const trackMcpStart = useCallback((callId) => {\n mcpStateRef.current.pending = true;\n if (callId) {\n if (mcpStateRef.current.handledCallIds.has(callId)) return;\n if (mcpStateRef.current.pendingCallIds.has(callId)) return;\n mcpStateRef.current.pendingCallIds.add(callId);\n mcpStateRef.current.pendingCount += 1;\n return;\n }\n mcpStateRef.current.pendingCount += 1;\n }, []);\n\n const getFunctionCallKey = useCallback((callId, responseId, name) => {\n if (callId) return callId;\n if (responseId && name) return `${responseId}:${name}`;\n return null;\n }, []);\n\n const upsertFunctionCall = useCallback(({ key, name, responseId, callId, args }) => {\n if (!key) return;\n const existing = functionStateRef.current.pendingCalls.get(key) || { key };\n functionStateRef.current.pendingCalls.set(key, {\n ...existing,\n name: name ?? existing.name,\n responseId: responseId ?? existing.responseId,\n callId: callId ?? existing.callId,\n args: args ?? existing.args,\n });\n }, []);\n\n const handleMcpCompletion = useCallback(\n (outputCallId) => {\n mcpStateRef.current.pending = true;\n if (outputCallId) {\n if (mcpStateRef.current.handledCallIds.has(outputCallId)) return;\n mcpStateRef.current.handledCallIds.add(outputCallId);\n }\n if (mcpStateRef.current.pendingCount > 0) mcpStateRef.current.pendingCount -= 1;\n resumeMcpIfNeeded(outputCallId);\n },\n [resumeMcpIfNeeded],\n );\n\n const scheduleResumeRetry = useCallback(\n (outputCallId) => {\n if (!mcpStateRef.current.pending) return;\n if (mcpStateRef.current.retry.timeoutId) return;\n if (mcpStateRef.current.retry.count >= 2) {\n clearPendingMcp();\n return;\n }\n const attempt = mcpStateRef.current.retry.count + 1;\n const delay = attempt * 600;\n mcpStateRef.current.retry.count = attempt;\n mcpStateRef.current.retry.timeoutId = setTimeout(() => {\n mcpStateRef.current.retry.timeoutId = null;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.delete(outputCallId);\n mcpStateRef.current.resumeRequestedAny = false;\n resumeMcpIfNeeded(outputCallId);\n }, delay);\n },\n [clearPendingMcp, resumeMcpIfNeeded],\n );\n\n const sendFunctionCallOutput = useCallback((callId, output) => {\n const channel = dataChannelRef.current;\n if (!callId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: callId,\n output: JSON.stringify(output || {}),\n },\n }),\n );\n return true;\n }, []);\n\n const sendItemRetrieve = useCallback((itemId) => {\n const channel = dataChannelRef.current;\n if (!itemId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.retrieve',\n item_id: itemId,\n }),\n );\n return true;\n }, []);\n\n const sendMcpApproval = useCallback((approvalRequestId, approve = true) => {\n const channel = dataChannelRef.current;\n if (!approvalRequestId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n previous_item_id: approvalRequestId,\n item: {\n type: 'mcp_approval_response',\n approval_request_id: approvalRequestId,\n approve,\n },\n }),\n );\n return true;\n }, []);\n\n const requestFollowupResponse = useCallback(\n (reason, outputCallId, responseOverrides) => {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n if (sendResponseCreate(reason || 'followup', responseOverrides)) {\n mcpStateRef.current.resumeRequestedAny = true;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n }\n },\n [sendResponseCreate],\n );\n\n const buildMcpFailureInstructions = useCallback((localeHint) => {\n const normalizedLocale = localeHint || 'en-US';\n return `Respond in the language that matches the locale code \"${normalizedLocale}\". The requested information could not be retrieved because a data source failed. Apologize briefly and ask if the user wants to try again or ask something else.`;\n }, []);\n\n const handleMcpFailure = useCallback(\n (callId, localeHint) => {\n const failureKey = callId || 'unknown';\n if (mcpStateRef.current.failedCallIds.has(failureKey)) return;\n mcpStateRef.current.failedCallIds.add(failureKey);\n const instructions = buildMcpFailureInstructions(localeHint);\n requestFollowupResponse('mcp_failed', callId, { instructions });\n },\n [buildMcpFailureInstructions, requestFollowupResponse],\n );\n\n const handleOpenUrlCalls = useCallback(\n ({ responseId, outputItems }) => {\n const responseOpenUrlItems = Array.isArray(outputItems)\n ? outputItems.filter((item) => item?.type === 'function_call' && item?.name === 'open_url')\n : [];\n responseOpenUrlItems.forEach((item) => {\n const key = getFunctionCallKey(item.call_id || item.id || null, responseId, item.name);\n upsertFunctionCall({\n key,\n name: item.name,\n responseId,\n callId: item.call_id || item.id || null,\n args: item.arguments || null,\n });\n });\n\n const pendingCalls = [...functionStateRef.current.pendingCalls.values()].filter((call) => {\n if (!call?.name || call.name !== 'open_url') return false;\n if (!responseId) return true;\n return !call.responseId || call.responseId === responseId;\n });\n\n for (const call of pendingCalls) {\n const callKey = call.key || call.callId || call.args || null;\n if (callKey && functionStateRef.current.handledOpenUrlCalls.has(callKey)) continue;\n const args = safeJsonParse(call.args);\n const url = args?.url;\n if (!isAllowedOpenUrl(url)) {\n if (call.callId) {\n sendFunctionCallOutput(call.callId, {\n error: 'blocked_url',\n allowed_prefix: 'https://api.mirai',\n });\n requestFollowupResponse('open_url_blocked', call.callId);\n }\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n continue;\n }\n if (callKey) functionStateRef.current.handledOpenUrlCalls.add(callKey);\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n cleanupRealtimeSession(true);\n window.location.assign(url.trim());\n return true;\n }\n return false;\n },\n [\n cleanupRealtimeSession,\n getFunctionCallKey,\n isAllowedOpenUrl,\n requestFollowupResponse,\n safeJsonParse,\n sendFunctionCallOutput,\n upsertFunctionCall,\n ],\n );\n\n const startSession = useCallback(\n async ({ assistant_name, chainId, currency, hotelId, isChain, locale, setIsConnecting, setReady }) => {\n cleanupRealtimeSession();\n\n const fingerprint = localStorage.getItem('MIRAI:FINGERPRINT');\n const finalizeSession = (error) => {\n const errorMessage = typeof error === 'string' ? error : error?.message;\n if (errorMessage) {\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_ERROR, error: errorMessage });\n }\n cleanupRealtimeSession(true);\n setReady(false);\n setIsConnecting(false);\n };\n\n try {\n const sessionResponse = await request({\n endpoint: `/voice/session?fingerprint=${fingerprint}&hotelId=${isChain ? '' : hotelId ?? ''}&chainId=${\n isChain ? chainId ?? '' : ''\n }&locale=${locale ?? ''}&currency=${currency ?? ''}`,\n hostname: process.env.SERVICE_SYNAPSE,\n method: 'GET',\n });\n\n const ephemeralKey = sessionResponse.value;\n const peerConnection = new RTCPeerConnection();\n peerConnectionRef.current = peerConnection;\n peerConnection.addEventListener('connectionstatechange', () => {\n const { connectionState } = peerConnection;\n if (connectionState === 'failed' || connectionState === 'disconnected' || connectionState === 'closed') {\n finalizeSession();\n }\n });\n\n audioElementRef.current = document.createElement('audio');\n audioElementRef.current.autoplay = true;\n peerConnection.ontrack = ({ streams }) => {\n const [remoteStream] = streams;\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = remoteStream || null;\n }\n if (!audioContextRef.current || !audioAnalyzersRef.current.outputAnalyser || !remoteStream) return;\n if (outputSourceRef.current) outputSourceRef.current.disconnect();\n outputSourceRef.current = audioContextRef.current.createMediaStreamSource(remoteStream);\n outputSourceRef.current.connect(audioAnalyzersRef.current.outputAnalyser);\n };\n\n const mediaStream = await navigator.mediaDevices.getUserMedia({\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n sampleRate: 48000,\n },\n });\n\n localStreamRef.current = mediaStream;\n const [track] = mediaStream.getAudioTracks();\n\n const AudioContextConstructor = globalThis.AudioContext || globalThis.webkitAudioContext;\n if (!AudioContextConstructor) throw new Error('AudioContext not supported');\n const audioContext = new AudioContextConstructor();\n audioContextRef.current = audioContext;\n if (audioContext.state === 'suspended') await audioContext.resume();\n const inputAnalyser = audioContext.createAnalyser();\n const outputAnalyser = audioContext.createAnalyser();\n inputAnalyser.fftSize = 1024;\n outputAnalyser.fftSize = 1024;\n audioAnalyzersRef.current.inputAnalyser = inputAnalyser;\n audioAnalyzersRef.current.outputAnalyser = outputAnalyser;\n inputFrequencyDataRef.current = new Uint8Array(inputAnalyser.frequencyBinCount);\n outputFrequencyDataRef.current = new Uint8Array(outputAnalyser.frequencyBinCount);\n audioAnalyzersRef.current.getInputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.inputAnalyser || !inputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.inputAnalyser.getByteFrequencyData(inputFrequencyDataRef.current);\n return inputFrequencyDataRef.current;\n };\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.outputAnalyser || !outputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.outputAnalyser.getByteFrequencyData(outputFrequencyDataRef.current);\n return outputFrequencyDataRef.current;\n };\n\n const inputSource = audioContext.createMediaStreamSource(mediaStream);\n inputSourceRef.current = inputSource;\n inputSource.connect(inputAnalyser);\n\n if (track) {\n localAudioTrackRef.current = track;\n track.enabled = false;\n await track.applyConstraints({\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n });\n peerConnection.addTrack(track, mediaStream);\n }\n\n const dataChannel = peerConnection.createDataChannel('oai-events');\n dataChannelRef.current = dataChannel;\n dataChannel.addEventListener('close', () => {\n finalizeSession();\n });\n dataChannel.addEventListener('error', (event) => {\n finalizeSession(event);\n });\n\n dataChannel.addEventListener('open', () => {\n pendingUserTranscriptRef.current = '';\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_START });\n\n const localeHint = locale || 'en-US';\n const introductionMessage = `Respond in the language that matches the locale code \"${localeHint}\". Introduce yourself using the following sentence, translated into that language: \"Hello, I am ${assistant_name}, your virtual assistant. I can help you with information about our services and facilities. What would you like to know today?\"`;\n\n pendingIntroRef.current = true;\n introResponseIdRef.current = null;\n dataChannel.send(\n JSON.stringify({\n type: 'response.create',\n response: {\n instructions: introductionMessage,\n },\n }),\n );\n });\n\n dataChannel.addEventListener('message', async (event) => {\n const payload = JSON.parse(event.data);\n const { response } = payload;\n const itemId = payload.item?.id || payload.item_id || null;\n const callId = payload.item?.call_id || payload.call_id || itemId;\n const responseId = payload.response_id || response?.id || null;\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'message') {\n if (pendingIntroRef.current && !introResponseIdRef.current && payload.response_id) {\n introResponseIdRef.current = payload.response_id;\n }\n if (responseId) {\n mcpStateRef.current.responsesWithMessage.add(responseId);\n mcpStateRef.current.responseIds.delete(responseId);\n }\n if (mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0) {\n clearPendingMcp();\n }\n }\n\n if (payload.type === 'output_audio_buffer.stopped') {\n if (\n pendingIntroRef.current &&\n introResponseIdRef.current &&\n payload.response_id === introResponseIdRef.current\n ) {\n enableMicrophone();\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n }\n }\n\n if (\n payload.type === 'response.output_item.added' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (responseId) mcpStateRef.current.responseIds.add(responseId);\n trackMcpStart(callId);\n }\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'function_call') {\n const name = payload.item?.name || payload.name || null;\n const key = getFunctionCallKey(callId, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId, args: payload.item?.arguments || null });\n }\n\n if (payload.type === 'response.function_call_arguments.done') {\n const name = payload.name || null;\n const key = getFunctionCallKey(payload.call_id || null, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId: payload.call_id || null, args: payload.arguments });\n }\n\n if (payload.type === 'response.mcp_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'response.mcp_tool_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'mcp_list_tools.in_progress' || payload.type === 'response.mcp_list_tools.in_progress') {\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (\n payload.type === 'response.output_item.done' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (payload.item?.error || payload.item?.status === 'failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (\n payload.type === 'response.mcp_call.completed' ||\n payload.type === 'response.mcp_call.failed' ||\n payload.type === 'response.mcp_tool_call.completed' ||\n payload.type === 'response.mcp_tool_call.failed'\n ) {\n if (payload.type === 'response.mcp_call.failed' || payload.type === 'response.mcp_tool_call.failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (payload.type === 'conversation.item.added' || payload.type === 'conversation.item.retrieved') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n trackMcpStart(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'conversation.item.done') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n if (payload.item?.status === 'failed' || payload.item?.error) {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'response.done') {\n if (responseId) mcpStateRef.current.responsesDone.add(responseId);\n const outputItems = Array.isArray(response?.output) ? response.output : [];\n const hasMessage = outputItems.some((item) => item?.type === 'message');\n const status = response?.status;\n const reason = response?.status_details?.reason || response?.status_details?.error?.code || null;\n if (status === 'completed') {\n if (\n hasMessage &&\n mcpStateRef.current.pending &&\n mcpStateRef.current.pendingCount === 0 &&\n mcpStateRef.current.responseIds.size === 0\n ) {\n clearPendingMcp();\n }\n } else if (mcpStateRef.current.pending) {\n if (status === 'failed') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n } else if (status === 'cancelled' && reason !== 'turn_detected') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n }\n }\n resumeMcpIfNeeded(callId);\n handleOpenUrlCalls({ responseId, outputItems });\n }\n\n if (payload.type === 'response.created') {\n if (responseId) responseStateRef.current.activeId = responseId;\n }\n\n if (payload.type === 'conversation.item.input_audio_transcription.completed') {\n const transcript = payload.transcript?.trim();\n if (transcript) pendingUserTranscriptRef.current += transcript;\n }\n\n if (payload.type === 'response.done' && responseId && responseStateRef.current.activeId === responseId) {\n responseStateRef.current.activeId = null;\n if (responseStateRef.current.resumeAfterActive) {\n responseStateRef.current.resumeAfterActive = false;\n mcpStateRef.current.resumeRequestedAny = false;\n resumeMcpIfNeeded();\n }\n if (functionStateRef.current.pendingFollowup) {\n const reason = functionStateRef.current.pendingFollowupReason;\n const responseOverrides = functionStateRef.current.pendingFollowupResponse;\n functionStateRef.current.pendingFollowup = false;\n functionStateRef.current.pendingFollowupReason = null;\n functionStateRef.current.pendingFollowupResponse = null;\n sendResponseCreate(reason || 'followup', responseOverrides);\n }\n }\n\n if (payload.type === 'response.output_audio_transcript.done') {\n const transcript = payload.transcript?.trim();\n if (!transcript || !pendingUserTranscriptRef.current) return;\n\n const input = pendingUserTranscriptRef.current.trim();\n pendingUserTranscriptRef.current = '';\n\n const activeLocale = locale || 'en-US';\n\n if (hotelId) {\n try {\n const chatId = await ensureChatId({\n fingerprint,\n channelId: hotelId,\n session: { locale: activeLocale },\n });\n if (chatId) {\n await createChatMessage({ author: 'user', body: input, chatId, meta: { audio: true } });\n await createChatMessage({ author: 'ai', body: transcript, chatId, meta: { audio: true } });\n }\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_ERROR, error: error?.message });\n }\n }\n\n Event.publish(EVENT.METRICS, {\n id: 'SYNAPSE_RESPONSE',\n fingerprint,\n text: transcript,\n input,\n agent: 'aura',\n locale: activeLocale,\n });\n }\n });\n\n const offer = await peerConnection.createOffer();\n await peerConnection.setLocalDescription(offer);\n\n const sdpResponse = await fetch('https://api.openai.com/v1/realtime/calls', {\n method: 'POST',\n body: offer.sdp,\n headers: {\n Authorization: `Bearer ${ephemeralKey}`,\n 'Content-Type': 'application/sdp',\n },\n });\n\n if (!sdpResponse.ok) throw new Error('Failed to establish OpenAI Realtime session');\n\n const answer = { type: 'answer', sdp: await sdpResponse.text() };\n\n await peerConnection.setRemoteDescription(answer);\n setReady(true);\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_ERROR, error: error?.message });\n setReady(false);\n throw error;\n } finally {\n setIsConnecting(false);\n }\n },\n [\n cleanupRealtimeSession,\n clearPendingMcp,\n enableMicrophone,\n handleMcpCompletion,\n handleMcpFailure,\n handleOpenUrlCalls,\n resumeMcpIfNeeded,\n scheduleResumeRetry,\n sendItemRetrieve,\n sendMcpApproval,\n sendResponseCreate,\n trackMcpStart,\n upsertFunctionCall,\n getFunctionCallKey,\n ],\n );\n\n const endSession = useCallback(() => {\n cleanupRealtimeSession(true);\n }, [cleanupRealtimeSession]);\n\n return { startSession, endSession, audioAnalyzers: audioAnalyzersRef.current };\n};\n\nexport { useOpenAiRealtimeSession };\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAkF,SAAAI,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAD,CAAA,GAAAG,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAAvB,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAoB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAwB,CAAA,GAAAxB,CAAA,CAAA4B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAElF,MAAM8B,cAAc,GAAGA,CAAA,MAAO;EAC5BC,OAAO,EAAE,KAAK;EACdC,cAAc,EAAE,IAAIC,GAAG,CAAC,CAAC;EACzBC,YAAY,EAAE,CAAC;EACfC,cAAc,EAAE,IAAIF,GAAG,CAAC,CAAC;EACzBG,kBAAkB,EAAE,IAAIH,GAAG,CAAC,CAAC;EAC7BI,aAAa,EAAE,IAAIJ,GAAG,CAAC,CAAC;EACxBK,WAAW,EAAE,IAAIL,GAAG,CAAC,CAAC;EACtBM,aAAa,EAAE,IAAIN,GAAG,CAAC,CAAC;EACxBO,oBAAoB,EAAE,IAAIP,GAAG,CAAC,CAAC;EAC/BQ,sBAAsB,EAAE,IAAIR,GAAG,CAAC,CAAC;EACjCS,kBAAkB,EAAE,KAAK;EACzBC,KAAK,EAAE;IAAEC,KAAK,EAAE,CAAC;IAAEC,SAAS,EAAE;EAAK;AACrC,CAAC,CAAC;AAEF,MAAMC,mBAAmB,GAAGA,CAAA,MAAO;EACjCC,QAAQ,EAAE,IAAI;EACdC,iBAAiB,EAAE;AACrB,CAAC,CAAC;AAEF,MAAMC,mBAAmB,GAAGA,CAAA,MAAO;EACjCC,YAAY,EAAE,IAAIC,GAAG,CAAC,CAAC;EACvBC,eAAe,EAAE,KAAK;EACtBC,qBAAqB,EAAE,IAAI;EAC3BC,uBAAuB,EAAE,IAAI;EAC7BC,mBAAmB,EAAE,IAAItB,GAAG,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAMuB,wBAAwB,GAAGA,CAAA,KAAM;EACrC,MAAMC,eAAe,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EACpC,MAAMC,eAAe,GAAG,IAAAD,aAAM,EAAC,IAAI,CAAC;EACpC,MAAME,iBAAiB,GAAG,IAAAF,aAAM,EAAC,IAAI,CAAC;EACtC,MAAMG,cAAc,GAAG,IAAAH,aAAM,EAAC,IAAI,CAAC;EACnC,MAAMI,cAAc,GAAG,IAAAJ,aAAM,EAAC,IAAI,CAAC;EACnC,MAAMK,kBAAkB,GAAG,IAAAL,aAAM,EAAC,IAAI,CAAC;EACvC,MAAMM,oBAAoB,GAAG,IAAAN,aAAM,EAAC,KAAK,CAAC;EAC1C,MAAMO,eAAe,GAAG,IAAAP,aAAM,EAAC,KAAK,CAAC;EACrC,MAAMQ,kBAAkB,GAAG,IAAAR,aAAM,EAAC,IAAI,CAAC;EACvC,MAAMS,WAAW,GAAG,IAAAT,aAAM,EAAC5B,cAAc,CAAC,CAAC,CAAC;EAC5C,MAAMsC,gBAAgB,GAAG,IAAAV,aAAM,EAACZ,mBAAmB,CAAC,CAAC,CAAC;EACtD,MAAMuB,gBAAgB,GAAG,IAAAX,aAAM,EAACT,mBAAmB,CAAC,CAAC,CAAC;EACtD,MAAMqB,wBAAwB,GAAG,IAAAZ,aAAM,EAAC,EAAE,CAAC;EAC3C,MAAMa,cAAc,GAAG,IAAAb,aAAM,EAAC,IAAI,CAAC;EACnC,MAAMc,eAAe,GAAG,IAAAd,aAAM,EAAC,IAAI,CAAC;EACpC,MAAMe,qBAAqB,GAAG,IAAAf,aAAM,EAAC,IAAI,CAAC;EAC1C,MAAMgB,sBAAsB,GAAG,IAAAhB,aAAM,EAAC,IAAI,CAAC;EAC3C,MAAMiB,iBAAiB,GAAG,IAAAjB,aAAM,EAAC;IAC/BkB,aAAa,EAAE,IAAI;IACnBC,cAAc,EAAE,IAAI;IACpBC,yBAAyB,EAAEA,CAAA,KAAM,IAAI;IACrCC,0BAA0B,EAAEA,CAAA,KAAM;EACpC,CAAC,CAAC;EAEF,MAAMC,sBAAsB,GAAG,IAAAC,kBAAW,EAAC,YAA0B;IAAA,IAAzBC,YAAY,GAAAvE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAwE,SAAA,GAAAxE,SAAA,MAAG,KAAK;IAC9D,MAAMyE,WAAW,GAAGvB,cAAc,CAACwB,OAAO;IAC1C,IAAID,WAAW,EAAE;MACf,IAAIF,YAAY,IAAIE,WAAW,CAACE,UAAU,KAAK,MAAM,EAAE;QACrDF,WAAW,CAACG,IAAI,CAACC,IAAI,CAACC,SAAS,CAAC;UAAEC,IAAI,EAAE;QAAgB,CAAC,CAAC,CAAC;MAC7D;MACAN,WAAW,CAACO,KAAK,CAAC,CAAC;MACnB9B,cAAc,CAACwB,OAAO,GAAG,IAAI;IAC/B;IAEA,MAAMO,cAAc,GAAGhC,iBAAiB,CAACyB,OAAO;IAChD,IAAIO,cAAc,EAAE;MAClBA,cAAc,CAACC,UAAU,CAAC,CAAC,CAAChF,OAAO,CAAEiF,MAAM,IAAK;QAC9C,IAAIA,MAAM,CAACC,KAAK,EAAED,MAAM,CAACC,KAAK,CAACC,IAAI,CAAC,CAAC;MACvC,CAAC,CAAC;MACFJ,cAAc,CAACD,KAAK,CAAC,CAAC;MACtB/B,iBAAiB,CAACyB,OAAO,GAAG,IAAI;IAClC;IAEA,MAAMY,WAAW,GAAGnC,cAAc,CAACuB,OAAO;IAC1C,IAAIY,WAAW,EAAE;MACfA,WAAW,CAACC,SAAS,CAAC,CAAC,CAACrF,OAAO,CAAEkF,KAAK,IAAKA,KAAK,CAACC,IAAI,CAAC,CAAC,CAAC;MACxDlC,cAAc,CAACuB,OAAO,GAAG,IAAI;IAC/B;IAEAtB,kBAAkB,CAACsB,OAAO,GAAG,IAAI;IACjCrB,oBAAoB,CAACqB,OAAO,GAAG,KAAK;IACpCpB,eAAe,CAACoB,OAAO,GAAG,KAAK;IAC/BnB,kBAAkB,CAACmB,OAAO,GAAG,IAAI;IACjC,IAAIlB,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,EAAE;MACvCsD,YAAY,CAAChC,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,CAAC;IACnD;IACAsB,WAAW,CAACkB,OAAO,GAAGvD,cAAc,CAAC,CAAC;IACtCsC,gBAAgB,CAACiB,OAAO,GAAGvC,mBAAmB,CAAC,CAAC;IAChDuB,gBAAgB,CAACgB,OAAO,GAAGpC,mBAAmB,CAAC,CAAC;IAEhD,IAAIQ,eAAe,CAAC4B,OAAO,EAAE;MAC3B5B,eAAe,CAAC4B,OAAO,CAACe,SAAS,GAAG,IAAI;MACxC3C,eAAe,CAAC4B,OAAO,GAAG,IAAI;IAChC;IAEA,IAAId,cAAc,CAACc,OAAO,EAAE;MAC1Bd,cAAc,CAACc,OAAO,CAACgB,UAAU,CAAC,CAAC;MACnC9B,cAAc,CAACc,OAAO,GAAG,IAAI;IAC/B;IAEA,IAAIb,eAAe,CAACa,OAAO,EAAE;MAC3Bb,eAAe,CAACa,OAAO,CAACgB,UAAU,CAAC,CAAC;MACpC7B,eAAe,CAACa,OAAO,GAAG,IAAI;IAChC;IAEAV,iBAAiB,CAACU,OAAO,CAACT,aAAa,GAAG,IAAI;IAC9CD,iBAAiB,CAACU,OAAO,CAACR,cAAc,GAAG,IAAI;IAC/CF,iBAAiB,CAACU,OAAO,CAACP,yBAAyB,GAAG,MAAM,IAAI;IAChEH,iBAAiB,CAACU,OAAO,CAACN,0BAA0B,GAAG,MAAM,IAAI;IACjEN,qBAAqB,CAACY,OAAO,GAAG,IAAI;IACpCX,sBAAsB,CAACW,OAAO,GAAG,IAAI;IAErC,MAAMiB,YAAY,GAAG3C,eAAe,CAAC0B,OAAO;IAC5C,IAAIiB,YAAY,EAAE;MAChBA,YAAY,CAACX,KAAK,CAAC,CAAC;MACpBhC,eAAe,CAAC0B,OAAO,GAAG,IAAI;IAChC;IAEAf,wBAAwB,CAACe,OAAO,GAAG,EAAE;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMkB,aAAa,GAAG,IAAAtB,kBAAW,EAAE9D,KAAK,IAAK;IAC3C,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;IAC1C,IAAI;MACF,OAAOqE,IAAI,CAACgB,KAAK,CAACrF,KAAK,CAAC;IAC1B,CAAC,CAAC,OAAAsF,OAAA,EAAM;MACN,OAAO,IAAI;IACb;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG,IAAAzB,kBAAW,EAAE0B,GAAG,IAAK;IAC5C,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,KAAK;IACzC,OAAOA,GAAG,CAACC,IAAI,CAAC,CAAC,CAACC,UAAU,CAAC,mBAAmB,CAAC;EACnD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG,IAAA7B,kBAAW,EAAC,MAAM;IACzC,MAAMc,KAAK,GAAGhC,kBAAkB,CAACsB,OAAO;IACxC,IAAI,CAACU,KAAK,IAAI/B,oBAAoB,CAACqB,OAAO,EAAE;IAC5CU,KAAK,CAACgB,OAAO,GAAG,IAAI;IACpB/C,oBAAoB,CAACqB,OAAO,GAAG,IAAI;EACrC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM2B,eAAe,GAAG,IAAA/B,kBAAW,EAAC,MAAM;IACxC,IAAId,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,EAAE;MACvCsD,YAAY,CAAChC,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,CAAC;IACnD;IACAsB,WAAW,CAACkB,OAAO,GAAGvD,cAAc,CAAC,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmF,kBAAkB,GAAG,IAAAhC,kBAAW,EAAC,CAACiC,MAAM,EAAEC,iBAAiB,KAAK;IACpE,IAAI/C,gBAAgB,CAACiB,OAAO,CAACtC,QAAQ,EAAE;MACrCsB,gBAAgB,CAACgB,OAAO,CAACjC,eAAe,GAAG,IAAI;MAC/CiB,gBAAgB,CAACgB,OAAO,CAAChC,qBAAqB,GAAG6D,MAAM,IAAI,IAAI;MAC/D7C,gBAAgB,CAACgB,OAAO,CAAC/B,uBAAuB,GAAG6D,iBAAiB,IAAI,IAAI;MAC5E,OAAO,KAAK;IACd;IACA,MAAMC,OAAO,GAAGvD,cAAc,CAACwB,OAAO;IACtC,IAAI+B,OAAO,IAAIA,OAAO,CAAC9B,UAAU,KAAK,MAAM,EAAE;MAC5C,MAAM+B,eAAe,GAAGF,iBAAiB,GACrC;QAAEzB,IAAI,EAAE,iBAAiB;QAAE4B,QAAQ,EAAEH;MAAkB,CAAC,GACxD;QAAEzB,IAAI,EAAE;MAAkB,CAAC;MAC/B0B,OAAO,CAAC7B,IAAI,CAACC,IAAI,CAACC,SAAS,CAAC4B,eAAe,CAAC,CAAC;MAC7C,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,iBAAiB,GAAG,IAAAtC,kBAAW,EAClCuC,YAAY,IAAK;IAChB,IAAIA,YAAY,EAAE;MAChBrD,WAAW,CAACkB,OAAO,CAACrD,cAAc,CAACyF,MAAM,CAACD,YAAY,CAAC;IACzD;IACA,IAAI,CAACrD,WAAW,CAACkB,OAAO,CAACtD,OAAO,IAAIoC,WAAW,CAACkB,OAAO,CAACnD,YAAY,GAAG,CAAC,EAAE;IAC1E,IAAIsF,YAAY,IAAIrD,WAAW,CAACkB,OAAO,CAAC5C,sBAAsB,CAACiF,GAAG,CAACF,YAAY,CAAC,EAAE;IAClF,IAAI,CAACA,YAAY,IAAIrD,WAAW,CAACkB,OAAO,CAAC3C,kBAAkB,EAAE;IAC7D,IAAI,CAAC8E,YAAY,IAAIrD,WAAW,CAACkB,OAAO,CAAC5C,sBAAsB,CAACkF,IAAI,GAAG,CAAC,EAAE;IAC1E,MAAMC,YAAY,GAAG,CAAC,GAAGzD,WAAW,CAACkB,OAAO,CAAC/C,WAAW,CAAC,CAACuF,IAAI,CAC3DC,UAAU,IACT3D,WAAW,CAACkB,OAAO,CAAC9C,aAAa,CAACmF,GAAG,CAACI,UAAU,CAAC,IACjD,CAAC3D,WAAW,CAACkB,OAAO,CAAC7C,oBAAoB,CAACkF,GAAG,CAACI,UAAU,CAC5D,CAAC;IACD,IAAI,CAACF,YAAY,EAAE;IACnB,IAAIX,kBAAkB,CAAC,eAAe,CAAC,EAAE;MACvC,IAAIO,YAAY,EAAErD,WAAW,CAACkB,OAAO,CAAC5C,sBAAsB,CAACsF,GAAG,CAACP,YAAY,CAAC;MAC9E,IAAI,CAACA,YAAY,EAAErD,WAAW,CAACkB,OAAO,CAAC3C,kBAAkB,GAAG,IAAI;IAClE,CAAC,MAAM,IAAI0B,gBAAgB,CAACiB,OAAO,CAACtC,QAAQ,EAAE;MAC5CqB,gBAAgB,CAACiB,OAAO,CAACrC,iBAAiB,GAAG,IAAI;IACnD;EACF,CAAC,EACD,CAACiE,kBAAkB,CACrB,CAAC;EAED,MAAMe,aAAa,GAAG,IAAA/C,kBAAW,EAAEgD,MAAM,IAAK;IAC5C9D,WAAW,CAACkB,OAAO,CAACtD,OAAO,GAAG,IAAI;IAClC,IAAIkG,MAAM,EAAE;MACV,IAAI9D,WAAW,CAACkB,OAAO,CAAClD,cAAc,CAACuF,GAAG,CAACO,MAAM,CAAC,EAAE;MACpD,IAAI9D,WAAW,CAACkB,OAAO,CAACrD,cAAc,CAAC0F,GAAG,CAACO,MAAM,CAAC,EAAE;MACpD9D,WAAW,CAACkB,OAAO,CAACrD,cAAc,CAAC+F,GAAG,CAACE,MAAM,CAAC;MAC9C9D,WAAW,CAACkB,OAAO,CAACnD,YAAY,IAAI,CAAC;MACrC;IACF;IACAiC,WAAW,CAACkB,OAAO,CAACnD,YAAY,IAAI,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMgG,kBAAkB,GAAG,IAAAjD,kBAAW,EAAC,CAACgD,MAAM,EAAEH,UAAU,EAAEK,IAAI,KAAK;IACnE,IAAIF,MAAM,EAAE,OAAOA,MAAM;IACzB,IAAIH,UAAU,IAAIK,IAAI,EAAE,UAAAC,MAAA,CAAUN,UAAU,OAAAM,MAAA,CAAID,IAAI;IACpD,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,kBAAkB,GAAG,IAAApD,kBAAW,EAACqD,IAAA,IAA6C;IAAA,IAA5C;MAAEC,GAAG;MAAEJ,IAAI;MAAEL,UAAU;MAAEG,MAAM;MAAEO;IAAK,CAAC,GAAAF,IAAA;IAC7E,IAAI,CAACC,GAAG,EAAE;IACV,MAAME,QAAQ,GAAGpE,gBAAgB,CAACgB,OAAO,CAACnC,YAAY,CAACwF,GAAG,CAACH,GAAG,CAAC,IAAI;MAAEA;IAAI,CAAC;IAC1ElE,gBAAgB,CAACgB,OAAO,CAACnC,YAAY,CAACyF,GAAG,CAACJ,GAAG,EAAA7H,aAAA,CAAAA,aAAA,KACxC+H,QAAQ;MACXN,IAAI,EAAEA,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAIM,QAAQ,CAACN,IAAI;MAC3BL,UAAU,EAAEA,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAIW,QAAQ,CAACX,UAAU;MAC7CG,MAAM,EAAEA,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIQ,QAAQ,CAACR,MAAM;MACjCO,IAAI,EAAEA,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAIC,QAAQ,CAACD;IAAI,EAC5B,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,mBAAmB,GAAG,IAAA3D,kBAAW,EACpCuC,YAAY,IAAK;IAChBrD,WAAW,CAACkB,OAAO,CAACtD,OAAO,GAAG,IAAI;IAClC,IAAIyF,YAAY,EAAE;MAChB,IAAIrD,WAAW,CAACkB,OAAO,CAAClD,cAAc,CAACuF,GAAG,CAACF,YAAY,CAAC,EAAE;MAC1DrD,WAAW,CAACkB,OAAO,CAAClD,cAAc,CAAC4F,GAAG,CAACP,YAAY,CAAC;IACtD;IACA,IAAIrD,WAAW,CAACkB,OAAO,CAACnD,YAAY,GAAG,CAAC,EAAEiC,WAAW,CAACkB,OAAO,CAACnD,YAAY,IAAI,CAAC;IAC/EqF,iBAAiB,CAACC,YAAY,CAAC;EACjC,CAAC,EACD,CAACD,iBAAiB,CACpB,CAAC;EAED,MAAMsB,mBAAmB,GAAG,IAAA5D,kBAAW,EACpCuC,YAAY,IAAK;IAChB,IAAI,CAACrD,WAAW,CAACkB,OAAO,CAACtD,OAAO,EAAE;IAClC,IAAIoC,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,EAAE;IACzC,IAAIsB,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACC,KAAK,IAAI,CAAC,EAAE;MACxCoE,eAAe,CAAC,CAAC;MACjB;IACF;IACA,MAAM8B,OAAO,GAAG3E,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACC,KAAK,GAAG,CAAC;IACnD,MAAMmG,KAAK,GAAGD,OAAO,GAAG,GAAG;IAC3B3E,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACC,KAAK,GAAGkG,OAAO;IACzC3E,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,GAAGmG,UAAU,CAAC,MAAM;MACrD7E,WAAW,CAACkB,OAAO,CAAC1C,KAAK,CAACE,SAAS,GAAG,IAAI;MAC1C,IAAI2E,YAAY,EAAErD,WAAW,CAACkB,OAAO,CAAC5C,sBAAsB,CAACgF,MAAM,CAACD,YAAY,CAAC;MACjFrD,WAAW,CAACkB,OAAO,CAAC3C,kBAAkB,GAAG,KAAK;MAC9C6E,iBAAiB,CAACC,YAAY,CAAC;IACjC,CAAC,EAAEuB,KAAK,CAAC;EACX,CAAC,EACD,CAAC/B,eAAe,EAAEO,iBAAiB,CACrC,CAAC;EAED,MAAM0B,sBAAsB,GAAG,IAAAhE,kBAAW,EAAC,CAACgD,MAAM,EAAEiB,MAAM,KAAK;IAC7D,MAAM9B,OAAO,GAAGvD,cAAc,CAACwB,OAAO;IACtC,IAAI,CAAC4C,MAAM,IAAI,CAACb,OAAO,IAAIA,OAAO,CAAC9B,UAAU,KAAK,MAAM,EAAE,OAAO,KAAK;IACtE8B,OAAO,CAAC7B,IAAI,CACVC,IAAI,CAACC,SAAS,CAAC;MACbC,IAAI,EAAE,0BAA0B;MAChCyD,IAAI,EAAE;QACJzD,IAAI,EAAE,sBAAsB;QAC5B0D,OAAO,EAAEnB,MAAM;QACfiB,MAAM,EAAE1D,IAAI,CAACC,SAAS,CAACyD,MAAM,IAAI,CAAC,CAAC;MACrC;IACF,CAAC,CACH,CAAC;IACD,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,gBAAgB,GAAG,IAAApE,kBAAW,EAAEqE,MAAM,IAAK;IAC/C,MAAMlC,OAAO,GAAGvD,cAAc,CAACwB,OAAO;IACtC,IAAI,CAACiE,MAAM,IAAI,CAAClC,OAAO,IAAIA,OAAO,CAAC9B,UAAU,KAAK,MAAM,EAAE,OAAO,KAAK;IACtE8B,OAAO,CAAC7B,IAAI,CACVC,IAAI,CAACC,SAAS,CAAC;MACbC,IAAI,EAAE,4BAA4B;MAClC6D,OAAO,EAAED;IACX,CAAC,CACH,CAAC;IACD,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,eAAe,GAAG,IAAAvE,kBAAW,EAAC,UAACwE,iBAAiB,EAAqB;IAAA,IAAnBC,OAAO,GAAA/I,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAwE,SAAA,GAAAxE,SAAA,MAAG,IAAI;IACpE,MAAMyG,OAAO,GAAGvD,cAAc,CAACwB,OAAO;IACtC,IAAI,CAACoE,iBAAiB,IAAI,CAACrC,OAAO,IAAIA,OAAO,CAAC9B,UAAU,KAAK,MAAM,EAAE,OAAO,KAAK;IACjF8B,OAAO,CAAC7B,IAAI,CACVC,IAAI,CAACC,SAAS,CAAC;MACbC,IAAI,EAAE,0BAA0B;MAChCiE,gBAAgB,EAAEF,iBAAiB;MACnCN,IAAI,EAAE;QACJzD,IAAI,EAAE,uBAAuB;QAC7BkE,mBAAmB,EAAEH,iBAAiB;QACtCC;MACF;IACF,CAAC,CACH,CAAC;IACD,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,uBAAuB,GAAG,IAAA5E,kBAAW,EACzC,CAACiC,MAAM,EAAEM,YAAY,EAAEL,iBAAiB,KAAK;IAC3C9C,gBAAgB,CAACgB,OAAO,CAACjC,eAAe,GAAG,IAAI;IAC/CiB,gBAAgB,CAACgB,OAAO,CAAChC,qBAAqB,GAAG6D,MAAM,IAAI,IAAI;IAC/D7C,gBAAgB,CAACgB,OAAO,CAAC/B,uBAAuB,GAAG6D,iBAAiB,IAAI,IAAI;IAC5E,IAAIF,kBAAkB,CAACC,MAAM,IAAI,UAAU,EAAEC,iBAAiB,CAAC,EAAE;MAC/DhD,WAAW,CAACkB,OAAO,CAAC3C,kBAAkB,GAAG,IAAI;MAC7C,IAAI8E,YAAY,EAAErD,WAAW,CAACkB,OAAO,CAAC5C,sBAAsB,CAACsF,GAAG,CAACP,YAAY,CAAC;IAChF;EACF,CAAC,EACD,CAACP,kBAAkB,CACrB,CAAC;EAED,MAAM6C,2BAA2B,GAAG,IAAA7E,kBAAW,EAAE8E,UAAU,IAAK;IAC9D,MAAMC,gBAAgB,GAAGD,UAAU,IAAI,OAAO;IAC9C,iEAAA3B,MAAA,CAAgE4B,gBAAgB;EAClF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG,IAAAhF,kBAAW,EAClC,CAACgD,MAAM,EAAE8B,UAAU,KAAK;IACtB,MAAMG,UAAU,GAAGjC,MAAM,IAAI,SAAS;IACtC,IAAI9D,WAAW,CAACkB,OAAO,CAAChD,aAAa,CAACqF,GAAG,CAACwC,UAAU,CAAC,EAAE;IACvD/F,WAAW,CAACkB,OAAO,CAAChD,aAAa,CAAC0F,GAAG,CAACmC,UAAU,CAAC;IACjD,MAAMC,YAAY,GAAGL,2BAA2B,CAACC,UAAU,CAAC;IAC5DF,uBAAuB,CAAC,YAAY,EAAE5B,MAAM,EAAE;MAAEkC;IAAa,CAAC,CAAC;EACjE,CAAC,EACD,CAACL,2BAA2B,EAAED,uBAAuB,CACvD,CAAC;EAED,MAAMO,kBAAkB,GAAG,IAAAnF,kBAAW,EACpCoF,KAAA,IAAiC;IAAA,IAAhC;MAAEvC,UAAU;MAAEwC;IAAY,CAAC,GAAAD,KAAA;IAC1B,MAAME,oBAAoB,GAAGC,KAAK,CAACC,OAAO,CAACH,WAAW,CAAC,GACnDA,WAAW,CAACjK,MAAM,CAAE8I,IAAI,IAAK,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEzD,IAAI,MAAK,eAAe,IAAI,CAAAyD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEhB,IAAI,MAAK,UAAU,CAAC,GACzF,EAAE;IACNoC,oBAAoB,CAAC1J,OAAO,CAAEsI,IAAI,IAAK;MACrC,MAAMZ,GAAG,GAAGL,kBAAkB,CAACiB,IAAI,CAACC,OAAO,IAAID,IAAI,CAACuB,EAAE,IAAI,IAAI,EAAE5C,UAAU,EAAEqB,IAAI,CAAChB,IAAI,CAAC;MACtFE,kBAAkB,CAAC;QACjBE,GAAG;QACHJ,IAAI,EAAEgB,IAAI,CAAChB,IAAI;QACfL,UAAU;QACVG,MAAM,EAAEkB,IAAI,CAACC,OAAO,IAAID,IAAI,CAACuB,EAAE,IAAI,IAAI;QACvClC,IAAI,EAAEW,IAAI,CAACxI,SAAS,IAAI;MAC1B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMuC,YAAY,GAAG,CAAC,GAAGmB,gBAAgB,CAACgB,OAAO,CAACnC,YAAY,CAACyH,MAAM,CAAC,CAAC,CAAC,CAACtK,MAAM,CAAEqB,IAAI,IAAK;MACxF,IAAI,EAACA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEyG,IAAI,KAAIzG,IAAI,CAACyG,IAAI,KAAK,UAAU,EAAE,OAAO,KAAK;MACzD,IAAI,CAACL,UAAU,EAAE,OAAO,IAAI;MAC5B,OAAO,CAACpG,IAAI,CAACoG,UAAU,IAAIpG,IAAI,CAACoG,UAAU,KAAKA,UAAU;IAC3D,CAAC,CAAC;IAEF,KAAK,MAAMpG,IAAI,IAAIwB,YAAY,EAAE;MAC/B,MAAM0H,OAAO,GAAGlJ,IAAI,CAAC6G,GAAG,IAAI7G,IAAI,CAACuG,MAAM,IAAIvG,IAAI,CAAC8G,IAAI,IAAI,IAAI;MAC5D,IAAIoC,OAAO,IAAIvG,gBAAgB,CAACgB,OAAO,CAAC9B,mBAAmB,CAACmE,GAAG,CAACkD,OAAO,CAAC,EAAE;MAC1E,MAAMpC,IAAI,GAAGjC,aAAa,CAAC7E,IAAI,CAAC8G,IAAI,CAAC;MACrC,MAAM7B,GAAG,GAAG6B,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7B,GAAG;MACrB,IAAI,CAACD,gBAAgB,CAACC,GAAG,CAAC,EAAE;QAC1B,IAAIjF,IAAI,CAACuG,MAAM,EAAE;UACfgB,sBAAsB,CAACvH,IAAI,CAACuG,MAAM,EAAE;YAClC4C,KAAK,EAAE,aAAa;YACpBC,cAAc,EAAE;UAClB,CAAC,CAAC;UACFjB,uBAAuB,CAAC,kBAAkB,EAAEnI,IAAI,CAACuG,MAAM,CAAC;QAC1D;QACA,IAAIvG,IAAI,CAAC6G,GAAG,EAAElE,gBAAgB,CAACgB,OAAO,CAACnC,YAAY,CAACuE,MAAM,CAAC/F,IAAI,CAAC6G,GAAG,CAAC;QACpE;MACF;MACA,IAAIqC,OAAO,EAAEvG,gBAAgB,CAACgB,OAAO,CAAC9B,mBAAmB,CAACwE,GAAG,CAAC6C,OAAO,CAAC;MACtE,IAAIlJ,IAAI,CAAC6G,GAAG,EAAElE,gBAAgB,CAACgB,OAAO,CAACnC,YAAY,CAACuE,MAAM,CAAC/F,IAAI,CAAC6G,GAAG,CAAC;MACpEvD,sBAAsB,CAAC,IAAI,CAAC;MAC5B+F,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACtE,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC;MAClC,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC,EACD,CACE5B,sBAAsB,EACtBkD,kBAAkB,EAClBxB,gBAAgB,EAChBmD,uBAAuB,EACvBtD,aAAa,EACb0C,sBAAsB,EACtBZ,kBAAkB,CAEtB,CAAC;EAED,MAAM6C,YAAY,GAAG,IAAAjG,kBAAW,EAC9B,MAAAkG,KAAA,IAAsG;IAAA,IAA/F;MAAEC,cAAc;MAAEC,OAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,OAAO;MAAEC,MAAM;MAAEC,eAAe;MAAEC;IAAS,CAAC,GAAAR,KAAA;IAC/FnG,sBAAsB,CAAC,CAAC;IAExB,MAAM4G,WAAW,GAAGC,YAAY,CAACC,OAAO,CAAC,mBAAmB,CAAC;IAC7D,MAAMC,eAAe,GAAIlB,KAAK,IAAK;MACjC,MAAMmB,YAAY,GAAG,OAAOnB,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEoB,OAAO;MACvE,IAAID,YAAY,EAAE;QAChBE,kBAAK,CAACC,OAAO,CAACC,cAAK,CAACC,OAAO,EAAE;UAAE3B,EAAE,EAAE4B,uBAAc,CAACC,UAAU;UAAE1B,KAAK,EAAEmB;QAAa,CAAC,CAAC;MACtF;MACAhH,sBAAsB,CAAC,IAAI,CAAC;MAC5B2G,QAAQ,CAAC,KAAK,CAAC;MACfD,eAAe,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,IAAI;MACF,MAAMc,eAAe,GAAG,MAAM,IAAAC,oBAAO,EAAC;QACpCC,QAAQ,gCAAAtE,MAAA,CAAgCwD,WAAW,eAAAxD,MAAA,CAAYoD,OAAO,GAAG,EAAE,GAAGD,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE,eAAAnD,MAAA,CACzFoD,OAAO,GAAGH,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE,GAAG,EAAE,cAAAjD,MAAA,CACnBqD,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,gBAAArD,MAAA,CAAakD,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,EAAE,CAAE;QACpDqB,QAAQ,EAAEC,OAAO,CAACC,GAAG,CAACC,eAAe;QACrCC,MAAM,EAAE;MACV,CAAC,CAAC;MAEF,MAAMC,YAAY,GAAGR,eAAe,CAACrL,KAAK;MAC1C,MAAMyE,cAAc,GAAG,IAAIqH,iBAAiB,CAAC,CAAC;MAC9CrJ,iBAAiB,CAACyB,OAAO,GAAGO,cAAc;MAC1CA,cAAc,CAACsH,gBAAgB,CAAC,uBAAuB,EAAE,MAAM;QAC7D,MAAM;UAAEC;QAAgB,CAAC,GAAGvH,cAAc;QAC1C,IAAIuH,eAAe,KAAK,QAAQ,IAAIA,eAAe,KAAK,cAAc,IAAIA,eAAe,KAAK,QAAQ,EAAE;UACtGpB,eAAe,CAAC,CAAC;QACnB;MACF,CAAC,CAAC;MAEFtI,eAAe,CAAC4B,OAAO,GAAG+H,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;MACzD5J,eAAe,CAAC4B,OAAO,CAACiI,QAAQ,GAAG,IAAI;MACvC1H,cAAc,CAAC2H,OAAO,GAAGC,KAAA,IAAiB;QAAA,IAAhB;UAAEC;QAAQ,CAAC,GAAAD,KAAA;QACnC,MAAM,CAACE,YAAY,CAAC,GAAGD,OAAO;QAC9B,IAAIhK,eAAe,CAAC4B,OAAO,EAAE;UAC3B5B,eAAe,CAAC4B,OAAO,CAACe,SAAS,GAAGsH,YAAY,IAAI,IAAI;QAC1D;QACA,IAAI,CAAC/J,eAAe,CAAC0B,OAAO,IAAI,CAACV,iBAAiB,CAACU,OAAO,CAACR,cAAc,IAAI,CAAC6I,YAAY,EAAE;QAC5F,IAAIlJ,eAAe,CAACa,OAAO,EAAEb,eAAe,CAACa,OAAO,CAACgB,UAAU,CAAC,CAAC;QACjE7B,eAAe,CAACa,OAAO,GAAG1B,eAAe,CAAC0B,OAAO,CAACsI,uBAAuB,CAACD,YAAY,CAAC;QACvFlJ,eAAe,CAACa,OAAO,CAACuI,OAAO,CAACjJ,iBAAiB,CAACU,OAAO,CAACR,cAAc,CAAC;MAC3E,CAAC;MAED,MAAMgJ,WAAW,GAAG,MAAMC,SAAS,CAACC,YAAY,CAACC,YAAY,CAAC;QAC5DC,KAAK,EAAE;UACLC,gBAAgB,EAAE,IAAI;UACtBC,gBAAgB,EAAE,IAAI;UACtBC,eAAe,EAAE,IAAI;UACrBC,YAAY,EAAE,CAAC;UACfC,UAAU,EAAE;QACd;MACF,CAAC,CAAC;MAEFxK,cAAc,CAACuB,OAAO,GAAGwI,WAAW;MACpC,MAAM,CAAC9H,KAAK,CAAC,GAAG8H,WAAW,CAACU,cAAc,CAAC,CAAC;MAE5C,MAAMC,uBAAuB,GAAGC,UAAU,CAACC,YAAY,IAAID,UAAU,CAACE,kBAAkB;MACxF,IAAI,CAACH,uBAAuB,EAAE,MAAM,IAAII,KAAK,CAAC,4BAA4B,CAAC;MAC3E,MAAMtI,YAAY,GAAG,IAAIkI,uBAAuB,CAAC,CAAC;MAClD7K,eAAe,CAAC0B,OAAO,GAAGiB,YAAY;MACtC,IAAIA,YAAY,CAACuI,KAAK,KAAK,WAAW,EAAE,MAAMvI,YAAY,CAACwI,MAAM,CAAC,CAAC;MACnE,MAAMlK,aAAa,GAAG0B,YAAY,CAACyI,cAAc,CAAC,CAAC;MACnD,MAAMlK,cAAc,GAAGyB,YAAY,CAACyI,cAAc,CAAC,CAAC;MACpDnK,aAAa,CAACoK,OAAO,GAAG,IAAI;MAC5BnK,cAAc,CAACmK,OAAO,GAAG,IAAI;MAC7BrK,iBAAiB,CAACU,OAAO,CAACT,aAAa,GAAGA,aAAa;MACvDD,iBAAiB,CAACU,OAAO,CAACR,cAAc,GAAGA,cAAc;MACzDJ,qBAAqB,CAACY,OAAO,GAAG,IAAI4J,UAAU,CAACrK,aAAa,CAACsK,iBAAiB,CAAC;MAC/ExK,sBAAsB,CAACW,OAAO,GAAG,IAAI4J,UAAU,CAACpK,cAAc,CAACqK,iBAAiB,CAAC;MACjFvK,iBAAiB,CAACU,OAAO,CAACP,yBAAyB,GAAG,MAAM;QAC1D,IAAI,CAACH,iBAAiB,CAACU,OAAO,CAACT,aAAa,IAAI,CAACH,qBAAqB,CAACY,OAAO,EAAE,OAAO,IAAI;QAC3FV,iBAAiB,CAACU,OAAO,CAACT,aAAa,CAACuK,oBAAoB,CAAC1K,qBAAqB,CAACY,OAAO,CAAC;QAC3F,OAAOZ,qBAAqB,CAACY,OAAO;MACtC,CAAC;MACDV,iBAAiB,CAACU,OAAO,CAACN,0BAA0B,GAAG,MAAM;QAC3D,IAAI,CAACJ,iBAAiB,CAACU,OAAO,CAACR,cAAc,IAAI,CAACH,sBAAsB,CAACW,OAAO,EAAE,OAAO,IAAI;QAC7FV,iBAAiB,CAACU,OAAO,CAACR,cAAc,CAACsK,oBAAoB,CAACzK,sBAAsB,CAACW,OAAO,CAAC;QAC7F,OAAOX,sBAAsB,CAACW,OAAO;MACvC,CAAC;MAED,MAAM+J,WAAW,GAAG9I,YAAY,CAACqH,uBAAuB,CAACE,WAAW,CAAC;MACrEtJ,cAAc,CAACc,OAAO,GAAG+J,WAAW;MACpCA,WAAW,CAACxB,OAAO,CAAChJ,aAAa,CAAC;MAElC,IAAImB,KAAK,EAAE;QACThC,kBAAkB,CAACsB,OAAO,GAAGU,KAAK;QAClCA,KAAK,CAACgB,OAAO,GAAG,KAAK;QACrB,MAAMhB,KAAK,CAACsJ,gBAAgB,CAAC;UAC3BnB,gBAAgB,EAAE,IAAI;UACtBC,gBAAgB,EAAE,IAAI;UACtBC,eAAe,EAAE;QACnB,CAAC,CAAC;QACFxI,cAAc,CAAC0J,QAAQ,CAACvJ,KAAK,EAAE8H,WAAW,CAAC;MAC7C;MAEA,MAAMzI,WAAW,GAAGQ,cAAc,CAAC2J,iBAAiB,CAAC,YAAY,CAAC;MAClE1L,cAAc,CAACwB,OAAO,GAAGD,WAAW;MACpCA,WAAW,CAAC8H,gBAAgB,CAAC,OAAO,EAAE,MAAM;QAC1CnB,eAAe,CAAC,CAAC;MACnB,CAAC,CAAC;MACF3G,WAAW,CAAC8H,gBAAgB,CAAC,OAAO,EAAGsC,KAAK,IAAK;QAC/CzD,eAAe,CAACyD,KAAK,CAAC;MACxB,CAAC,CAAC;MAEFpK,WAAW,CAAC8H,gBAAgB,CAAC,MAAM,EAAE,MAAM;QACzC5I,wBAAwB,CAACe,OAAO,GAAG,EAAE;QACrC6G,kBAAK,CAACC,OAAO,CAACC,cAAK,CAACC,OAAO,EAAE;UAAE3B,EAAE,EAAE4B,uBAAc,CAACmD;QAAW,CAAC,CAAC;QAE/D,MAAM1F,UAAU,GAAG0B,MAAM,IAAI,OAAO;QACpC,MAAMiE,mBAAmB,6DAAAtH,MAAA,CAA4D2B,UAAU,wGAAA3B,MAAA,CAAmGgD,cAAc,sIAAkI;QAElVnH,eAAe,CAACoB,OAAO,GAAG,IAAI;QAC9BnB,kBAAkB,CAACmB,OAAO,GAAG,IAAI;QACjCD,WAAW,CAACG,IAAI,CACdC,IAAI,CAACC,SAAS,CAAC;UACbC,IAAI,EAAE,iBAAiB;UACvB4B,QAAQ,EAAE;YACR6C,YAAY,EAAEuF;UAChB;QACF,CAAC,CACH,CAAC;MACH,CAAC,CAAC;MAEFtK,WAAW,CAAC8H,gBAAgB,CAAC,SAAS,EAAE,MAAOsC,KAAK,IAAK;QAAA,IAAAG,aAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,cAAA;QACvD,MAAMC,OAAO,GAAG3K,IAAI,CAACgB,KAAK,CAACgJ,KAAK,CAACY,IAAI,CAAC;QACtC,MAAM;UAAE9I;QAAS,CAAC,GAAG6I,OAAO;QAC5B,MAAM7G,MAAM,GAAG,EAAAqG,aAAA,GAAAQ,OAAO,CAAChH,IAAI,cAAAwG,aAAA,uBAAZA,aAAA,CAAcjF,EAAE,KAAIyF,OAAO,CAAC5G,OAAO,IAAI,IAAI;QAC1D,MAAMtB,MAAM,GAAG,EAAA2H,cAAA,GAAAO,OAAO,CAAChH,IAAI,cAAAyG,cAAA,uBAAZA,cAAA,CAAcxG,OAAO,KAAI+G,OAAO,CAAC/G,OAAO,IAAIE,MAAM;QACjE,MAAMxB,UAAU,GAAGqI,OAAO,CAACE,WAAW,KAAI/I,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEoD,EAAE,KAAI,IAAI;QAE9D,IAAIyF,OAAO,CAACzK,IAAI,KAAK,4BAA4B,IAAI,EAAAmK,cAAA,GAAAM,OAAO,CAAChH,IAAI,cAAA0G,cAAA,uBAAZA,cAAA,CAAcnK,IAAI,MAAK,SAAS,EAAE;UACrF,IAAIzB,eAAe,CAACoB,OAAO,IAAI,CAACnB,kBAAkB,CAACmB,OAAO,IAAI8K,OAAO,CAACE,WAAW,EAAE;YACjFnM,kBAAkB,CAACmB,OAAO,GAAG8K,OAAO,CAACE,WAAW;UAClD;UACA,IAAIvI,UAAU,EAAE;YACd3D,WAAW,CAACkB,OAAO,CAAC7C,oBAAoB,CAACuF,GAAG,CAACD,UAAU,CAAC;YACxD3D,WAAW,CAACkB,OAAO,CAAC/C,WAAW,CAACmF,MAAM,CAACK,UAAU,CAAC;UACpD;UACA,IAAI3D,WAAW,CAACkB,OAAO,CAACtD,OAAO,IAAIoC,WAAW,CAACkB,OAAO,CAACnD,YAAY,KAAK,CAAC,EAAE;YACzE8E,eAAe,CAAC,CAAC;UACnB;QACF;QAEA,IAAImJ,OAAO,CAACzK,IAAI,KAAK,6BAA6B,EAAE;UAClD,IACEzB,eAAe,CAACoB,OAAO,IACvBnB,kBAAkB,CAACmB,OAAO,IAC1B8K,OAAO,CAACE,WAAW,KAAKnM,kBAAkB,CAACmB,OAAO,EAClD;YACAyB,gBAAgB,CAAC,CAAC;YAClB7C,eAAe,CAACoB,OAAO,GAAG,KAAK;YAC/BnB,kBAAkB,CAACmB,OAAO,GAAG,IAAI;UACnC;QACF;QAEA,IACE8K,OAAO,CAACzK,IAAI,KAAK,4BAA4B,KAC5C,EAAAoK,cAAA,GAAAK,OAAO,CAAChH,IAAI,cAAA2G,cAAA,uBAAZA,cAAA,CAAcpK,IAAI,MAAK,UAAU,IAAI,EAAAqK,cAAA,GAAAI,OAAO,CAAChH,IAAI,cAAA4G,cAAA,uBAAZA,cAAA,CAAcrK,IAAI,MAAK,eAAe,CAAC,EAC7E;UACA,IAAIoC,UAAU,EAAE3D,WAAW,CAACkB,OAAO,CAAC/C,WAAW,CAACyF,GAAG,CAACD,UAAU,CAAC;UAC/DE,aAAa,CAACC,MAAM,CAAC;QACvB;QAEA,IAAIkI,OAAO,CAACzK,IAAI,KAAK,4BAA4B,IAAI,EAAAsK,cAAA,GAAAG,OAAO,CAAChH,IAAI,cAAA6G,cAAA,uBAAZA,cAAA,CAActK,IAAI,MAAK,eAAe,EAAE;UAAA,IAAA4K,cAAA,EAAAC,cAAA;UAC3F,MAAMpI,IAAI,GAAG,EAAAmI,cAAA,GAAAH,OAAO,CAAChH,IAAI,cAAAmH,cAAA,uBAAZA,cAAA,CAAcnI,IAAI,KAAIgI,OAAO,CAAChI,IAAI,IAAI,IAAI;UACvD,MAAMI,GAAG,GAAGL,kBAAkB,CAACD,MAAM,EAAEH,UAAU,EAAEK,IAAI,CAAC;UACxDE,kBAAkB,CAAC;YAAEE,GAAG;YAAEJ,IAAI;YAAEL,UAAU;YAAEG,MAAM;YAAEO,IAAI,EAAE,EAAA+H,cAAA,GAAAJ,OAAO,CAAChH,IAAI,cAAAoH,cAAA,uBAAZA,cAAA,CAAc5P,SAAS,KAAI;UAAK,CAAC,CAAC;QAC9F;QAEA,IAAIwP,OAAO,CAACzK,IAAI,KAAK,uCAAuC,EAAE;UAC5D,MAAMyC,IAAI,GAAGgI,OAAO,CAAChI,IAAI,IAAI,IAAI;UACjC,MAAMI,GAAG,GAAGL,kBAAkB,CAACiI,OAAO,CAAC/G,OAAO,IAAI,IAAI,EAAEtB,UAAU,EAAEK,IAAI,CAAC;UACzEE,kBAAkB,CAAC;YAAEE,GAAG;YAAEJ,IAAI;YAAEL,UAAU;YAAEG,MAAM,EAAEkI,OAAO,CAAC/G,OAAO,IAAI,IAAI;YAAEZ,IAAI,EAAE2H,OAAO,CAACxP;UAAU,CAAC,CAAC;QACzG;QAEA,IAAIwP,OAAO,CAACzK,IAAI,KAAK,+BAA+B,EAAE;UACpDsC,aAAa,CAACC,MAAM,CAAC;UACrB,IAAIkI,OAAO,CAAC5G,OAAO,EAAEF,gBAAgB,CAAC8G,OAAO,CAAC5G,OAAO,CAAC;QACxD;QAEA,IAAI4G,OAAO,CAACzK,IAAI,KAAK,oCAAoC,EAAE;UACzDsC,aAAa,CAACC,MAAM,CAAC;UACrB,IAAIkI,OAAO,CAAC5G,OAAO,EAAEF,gBAAgB,CAAC8G,OAAO,CAAC5G,OAAO,CAAC;QACxD;QAEA,IAAI4G,OAAO,CAACzK,IAAI,KAAK,4BAA4B,IAAIyK,OAAO,CAACzK,IAAI,KAAK,qCAAqC,EAAE;UAC3G,IAAIyK,OAAO,CAAC5G,OAAO,EAAEF,gBAAgB,CAAC8G,OAAO,CAAC5G,OAAO,CAAC;QACxD;QAEA,IACE4G,OAAO,CAACzK,IAAI,KAAK,2BAA2B,KAC3C,EAAAuK,cAAA,GAAAE,OAAO,CAAChH,IAAI,cAAA8G,cAAA,uBAAZA,cAAA,CAAcvK,IAAI,MAAK,UAAU,IAAI,EAAAwK,cAAA,GAAAC,OAAO,CAAChH,IAAI,cAAA+G,cAAA,uBAAZA,cAAA,CAAcxK,IAAI,MAAK,eAAe,CAAC,EAC7E;UAAA,IAAA8K,cAAA,EAAAC,eAAA;UACA,IAAI,CAAAD,cAAA,GAAAL,OAAO,CAAChH,IAAI,cAAAqH,cAAA,eAAZA,cAAA,CAAc3F,KAAK,IAAI,EAAA4F,eAAA,GAAAN,OAAO,CAAChH,IAAI,cAAAsH,eAAA,uBAAZA,eAAA,CAAcC,MAAM,MAAK,QAAQ,EAAE;YAC5DzG,gBAAgB,CAAChC,MAAM,EAAEwD,MAAM,CAAC;UAClC;UACA7C,mBAAmB,CAACX,MAAM,CAAC;QAC7B;QAEA,IACEkI,OAAO,CAACzK,IAAI,KAAK,6BAA6B,IAC9CyK,OAAO,CAACzK,IAAI,KAAK,0BAA0B,IAC3CyK,OAAO,CAACzK,IAAI,KAAK,kCAAkC,IACnDyK,OAAO,CAACzK,IAAI,KAAK,+BAA+B,EAChD;UACA,IAAIyK,OAAO,CAACzK,IAAI,KAAK,0BAA0B,IAAIyK,OAAO,CAACzK,IAAI,KAAK,+BAA+B,EAAE;YACnGuE,gBAAgB,CAAChC,MAAM,EAAEwD,MAAM,CAAC;UAClC;UACA7C,mBAAmB,CAACX,MAAM,CAAC;QAC7B;QAEA,IAAIkI,OAAO,CAACzK,IAAI,KAAK,yBAAyB,IAAIyK,OAAO,CAACzK,IAAI,KAAK,6BAA6B,EAAE;UAAA,IAAAiL,eAAA,EAAAC,eAAA,EAAAC,eAAA;UAChG,IAAI,EAAAF,eAAA,GAAAR,OAAO,CAAChH,IAAI,cAAAwH,eAAA,uBAAZA,eAAA,CAAcjL,IAAI,MAAK,UAAU,IAAI,EAAAkL,eAAA,GAAAT,OAAO,CAAChH,IAAI,cAAAyH,eAAA,uBAAZA,eAAA,CAAclL,IAAI,MAAK,eAAe,EAAE;YAC/EsC,aAAa,CAACC,MAAM,CAAC;UACvB;UACA,IAAI,EAAA4I,eAAA,GAAAV,OAAO,CAAChH,IAAI,cAAA0H,eAAA,uBAAZA,eAAA,CAAcnL,IAAI,MAAK,sBAAsB,EAAE;YAAA,IAAAoL,eAAA;YACjD,MAAMC,UAAU,GAAG,EAAAD,eAAA,GAAAX,OAAO,CAAChH,IAAI,cAAA2H,eAAA,uBAAZA,eAAA,CAAcpG,EAAE,KAAIyF,OAAO,CAAC5G,OAAO,IAAI,IAAI;YAC9D,IAAIwH,UAAU,IAAI,CAAC5M,WAAW,CAACkB,OAAO,CAACjD,kBAAkB,CAACsF,GAAG,CAACqJ,UAAU,CAAC,EAAE;cACzE5M,WAAW,CAACkB,OAAO,CAACjD,kBAAkB,CAAC2F,GAAG,CAACgJ,UAAU,CAAC;cACtDvH,eAAe,CAACuH,UAAU,EAAE,IAAI,CAAC;YACnC;UACF;QACF;QAEA,IAAIZ,OAAO,CAACzK,IAAI,KAAK,wBAAwB,EAAE;UAAA,IAAAsL,eAAA,EAAAC,eAAA,EAAAC,eAAA;UAC7C,IAAI,EAAAF,eAAA,GAAAb,OAAO,CAAChH,IAAI,cAAA6H,eAAA,uBAAZA,eAAA,CAActL,IAAI,MAAK,UAAU,IAAI,EAAAuL,eAAA,GAAAd,OAAO,CAAChH,IAAI,cAAA8H,eAAA,uBAAZA,eAAA,CAAcvL,IAAI,MAAK,eAAe,EAAE;YAAA,IAAAyL,eAAA,EAAAC,eAAA;YAC/E,IAAI,EAAAD,eAAA,GAAAhB,OAAO,CAAChH,IAAI,cAAAgI,eAAA,uBAAZA,eAAA,CAAcT,MAAM,MAAK,QAAQ,KAAAU,eAAA,GAAIjB,OAAO,CAAChH,IAAI,cAAAiI,eAAA,eAAZA,eAAA,CAAcvG,KAAK,EAAE;cAC5DZ,gBAAgB,CAAChC,MAAM,EAAEwD,MAAM,CAAC;YAClC;YACA7C,mBAAmB,CAACX,MAAM,CAAC;UAC7B;UACA,IAAI,EAAAiJ,eAAA,GAAAf,OAAO,CAAChH,IAAI,cAAA+H,eAAA,uBAAZA,eAAA,CAAcxL,IAAI,MAAK,sBAAsB,EAAE;YAAA,IAAA2L,eAAA;YACjD,MAAMN,UAAU,GAAG,EAAAM,eAAA,GAAAlB,OAAO,CAAChH,IAAI,cAAAkI,eAAA,uBAAZA,eAAA,CAAc3G,EAAE,KAAIyF,OAAO,CAAC5G,OAAO,IAAI,IAAI;YAC9D,IAAIwH,UAAU,IAAI,CAAC5M,WAAW,CAACkB,OAAO,CAACjD,kBAAkB,CAACsF,GAAG,CAACqJ,UAAU,CAAC,EAAE;cACzE5M,WAAW,CAACkB,OAAO,CAACjD,kBAAkB,CAAC2F,GAAG,CAACgJ,UAAU,CAAC;cACtDvH,eAAe,CAACuH,UAAU,EAAE,IAAI,CAAC;YACnC;UACF;QACF;QAEA,IAAIZ,OAAO,CAACzK,IAAI,KAAK,eAAe,EAAE;UAAA,IAAA4L,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;UACpC,IAAI1J,UAAU,EAAE3D,WAAW,CAACkB,OAAO,CAAC9C,aAAa,CAACwF,GAAG,CAACD,UAAU,CAAC;UACjE,MAAMwC,WAAW,GAAGE,KAAK,CAACC,OAAO,CAACnD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE4B,MAAM,CAAC,GAAG5B,QAAQ,CAAC4B,MAAM,GAAG,EAAE;UAC1E,MAAMuI,UAAU,GAAGnH,WAAW,CAACzC,IAAI,CAAEsB,IAAI,IAAK,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEzD,IAAI,MAAK,SAAS,CAAC;UACvE,MAAMgL,MAAM,GAAGpJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEoJ,MAAM;UAC/B,MAAMxJ,MAAM,GAAG,CAAAI,QAAQ,aAARA,QAAQ,wBAAAgK,qBAAA,GAARhK,QAAQ,CAAEoK,cAAc,cAAAJ,qBAAA,uBAAxBA,qBAAA,CAA0BpK,MAAM,MAAII,QAAQ,aAARA,QAAQ,wBAAAiK,sBAAA,GAARjK,QAAQ,CAAEoK,cAAc,cAAAH,sBAAA,wBAAAC,sBAAA,GAAxBD,sBAAA,CAA0B1G,KAAK,cAAA2G,sBAAA,uBAA/BA,sBAAA,CAAiCG,IAAI,KAAI,IAAI;UAChG,IAAIjB,MAAM,KAAK,WAAW,EAAE;YAC1B,IACEe,UAAU,IACVtN,WAAW,CAACkB,OAAO,CAACtD,OAAO,IAC3BoC,WAAW,CAACkB,OAAO,CAACnD,YAAY,KAAK,CAAC,IACtCiC,WAAW,CAACkB,OAAO,CAAC/C,WAAW,CAACqF,IAAI,KAAK,CAAC,EAC1C;cACAX,eAAe,CAAC,CAAC;YACnB;UACF,CAAC,MAAM,IAAI7C,WAAW,CAACkB,OAAO,CAACtD,OAAO,EAAE;YACtC,IAAI2O,MAAM,KAAK,QAAQ,EAAE;cACvB,IAAIvM,WAAW,CAACkB,OAAO,CAAChD,aAAa,CAACsF,IAAI,KAAK,CAAC,EAAE;gBAChDkB,mBAAmB,CAACZ,MAAM,CAAC;cAC7B;YACF,CAAC,MAAM,IAAIyI,MAAM,KAAK,WAAW,IAAIxJ,MAAM,KAAK,eAAe,EAAE;cAC/D,IAAI/C,WAAW,CAACkB,OAAO,CAAChD,aAAa,CAACsF,IAAI,KAAK,CAAC,EAAE;gBAChDkB,mBAAmB,CAACZ,MAAM,CAAC;cAC7B;YACF;UACF;UACAV,iBAAiB,CAACU,MAAM,CAAC;UACzBmC,kBAAkB,CAAC;YAAEtC,UAAU;YAAEwC;UAAY,CAAC,CAAC;QACjD;QAEA,IAAI6F,OAAO,CAACzK,IAAI,KAAK,kBAAkB,EAAE;UACvC,IAAIoC,UAAU,EAAE1D,gBAAgB,CAACiB,OAAO,CAACtC,QAAQ,GAAG+E,UAAU;QAChE;QAEA,IAAIqI,OAAO,CAACzK,IAAI,KAAK,uDAAuD,EAAE;UAAA,IAAAkM,mBAAA;UAC5E,MAAMC,UAAU,IAAAD,mBAAA,GAAGzB,OAAO,CAAC0B,UAAU,cAAAD,mBAAA,uBAAlBA,mBAAA,CAAoBhL,IAAI,CAAC,CAAC;UAC7C,IAAIiL,UAAU,EAAEvN,wBAAwB,CAACe,OAAO,IAAIwM,UAAU;QAChE;QAEA,IAAI1B,OAAO,CAACzK,IAAI,KAAK,eAAe,IAAIoC,UAAU,IAAI1D,gBAAgB,CAACiB,OAAO,CAACtC,QAAQ,KAAK+E,UAAU,EAAE;UACtG1D,gBAAgB,CAACiB,OAAO,CAACtC,QAAQ,GAAG,IAAI;UACxC,IAAIqB,gBAAgB,CAACiB,OAAO,CAACrC,iBAAiB,EAAE;YAC9CoB,gBAAgB,CAACiB,OAAO,CAACrC,iBAAiB,GAAG,KAAK;YAClDmB,WAAW,CAACkB,OAAO,CAAC3C,kBAAkB,GAAG,KAAK;YAC9C6E,iBAAiB,CAAC,CAAC;UACrB;UACA,IAAIlD,gBAAgB,CAACgB,OAAO,CAACjC,eAAe,EAAE;YAC5C,MAAM8D,MAAM,GAAG7C,gBAAgB,CAACgB,OAAO,CAAChC,qBAAqB;YAC7D,MAAM8D,iBAAiB,GAAG9C,gBAAgB,CAACgB,OAAO,CAAC/B,uBAAuB;YAC1Ee,gBAAgB,CAACgB,OAAO,CAACjC,eAAe,GAAG,KAAK;YAChDiB,gBAAgB,CAACgB,OAAO,CAAChC,qBAAqB,GAAG,IAAI;YACrDgB,gBAAgB,CAACgB,OAAO,CAAC/B,uBAAuB,GAAG,IAAI;YACvD2D,kBAAkB,CAACC,MAAM,IAAI,UAAU,EAAEC,iBAAiB,CAAC;UAC7D;QACF;QAEA,IAAIgJ,OAAO,CAACzK,IAAI,KAAK,uCAAuC,EAAE;UAAA,IAAAoM,oBAAA;UAC5D,MAAMD,UAAU,IAAAC,oBAAA,GAAG3B,OAAO,CAAC0B,UAAU,cAAAC,oBAAA,uBAAlBA,oBAAA,CAAoBlL,IAAI,CAAC,CAAC;UAC7C,IAAI,CAACiL,UAAU,IAAI,CAACvN,wBAAwB,CAACe,OAAO,EAAE;UAEtD,MAAM0M,KAAK,GAAGzN,wBAAwB,CAACe,OAAO,CAACuB,IAAI,CAAC,CAAC;UACrDtC,wBAAwB,CAACe,OAAO,GAAG,EAAE;UAErC,MAAM2M,YAAY,GAAGvG,MAAM,IAAI,OAAO;UAEtC,IAAIF,OAAO,EAAE;YACX,IAAI;cACF,MAAM0G,MAAM,GAAG,MAAM,IAAAC,mBAAY,EAAC;gBAChCtG,WAAW;gBACXuG,SAAS,EAAE5G,OAAO;gBAClB6G,OAAO,EAAE;kBAAE3G,MAAM,EAAEuG;gBAAa;cAClC,CAAC,CAAC;cACF,IAAIC,MAAM,EAAE;gBACV,MAAM,IAAAI,wBAAiB,EAAC;kBAAEC,MAAM,EAAE,MAAM;kBAAEC,IAAI,EAAER,KAAK;kBAAEE,MAAM;kBAAEO,IAAI,EAAE;oBAAEvE,KAAK,EAAE;kBAAK;gBAAE,CAAC,CAAC;gBACvF,MAAM,IAAAoE,wBAAiB,EAAC;kBAAEC,MAAM,EAAE,IAAI;kBAAEC,IAAI,EAAEV,UAAU;kBAAEI,MAAM;kBAAEO,IAAI,EAAE;oBAAEvE,KAAK,EAAE;kBAAK;gBAAE,CAAC,CAAC;cAC5F;YACF,CAAC,CAAC,OAAOpD,KAAK,EAAE;cACdqB,kBAAK,CAACC,OAAO,CAACC,cAAK,CAACC,OAAO,EAAE;gBAAE3B,EAAE,EAAE4B,uBAAc,CAACC,UAAU;gBAAE1B,KAAK,EAAEA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEoB;cAAQ,CAAC,CAAC;YACxF;UACF;UAEAC,kBAAK,CAACC,OAAO,CAACC,cAAK,CAACC,OAAO,EAAE;YAC3B3B,EAAE,EAAE,kBAAkB;YACtBkB,WAAW;YACX6G,IAAI,EAAEZ,UAAU;YAChBE,KAAK;YACLW,KAAK,EAAE,MAAM;YACbjH,MAAM,EAAEuG;UACV,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;MAEF,MAAMW,KAAK,GAAG,MAAM/M,cAAc,CAACgN,WAAW,CAAC,CAAC;MAChD,MAAMhN,cAAc,CAACiN,mBAAmB,CAACF,KAAK,CAAC;MAE/C,MAAMG,WAAW,GAAG,MAAMC,KAAK,CAAC,0CAA0C,EAAE;QAC1EhG,MAAM,EAAE,MAAM;QACdwF,IAAI,EAAEI,KAAK,CAACK,GAAG;QACfC,OAAO,EAAE;UACPC,aAAa,YAAA9K,MAAA,CAAY4E,YAAY,CAAE;UACvC,cAAc,EAAE;QAClB;MACF,CAAC,CAAC;MAEF,IAAI,CAAC8F,WAAW,CAACK,EAAE,EAAE,MAAM,IAAIvE,KAAK,CAAC,6CAA6C,CAAC;MAEnF,MAAMwE,MAAM,GAAG;QAAE1N,IAAI,EAAE,QAAQ;QAAEsN,GAAG,EAAE,MAAMF,WAAW,CAACL,IAAI,CAAC;MAAE,CAAC;MAEhE,MAAM7M,cAAc,CAACyN,oBAAoB,CAACD,MAAM,CAAC;MACjDzH,QAAQ,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC,OAAOd,KAAK,EAAE;MACdqB,kBAAK,CAACC,OAAO,CAACC,cAAK,CAACC,OAAO,EAAE;QAAE3B,EAAE,EAAE4B,uBAAc,CAACC,UAAU;QAAE1B,KAAK,EAAEA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEoB;MAAQ,CAAC,CAAC;MACtFN,QAAQ,CAAC,KAAK,CAAC;MACf,MAAMd,KAAK;IACb,CAAC,SAAS;MACRa,eAAe,CAAC,KAAK,CAAC;IACxB;EACF,CAAC,EACD,CACE1G,sBAAsB,EACtBgC,eAAe,EACfF,gBAAgB,EAChB8B,mBAAmB,EACnBqB,gBAAgB,EAChBG,kBAAkB,EAClB7C,iBAAiB,EACjBsB,mBAAmB,EACnBQ,gBAAgB,EAChBG,eAAe,EACfvC,kBAAkB,EAClBe,aAAa,EACbK,kBAAkB,EAClBH,kBAAkB,CAEtB,CAAC;EAED,MAAMoL,UAAU,GAAG,IAAArO,kBAAW,EAAC,MAAM;IACnCD,sBAAsB,CAAC,IAAI,CAAC;EAC9B,CAAC,EAAE,CAACA,sBAAsB,CAAC,CAAC;EAE5B,OAAO;IAAEkG,YAAY;IAAEoI,UAAU;IAAEC,cAAc,EAAE5O,iBAAiB,CAACU;EAAQ,CAAC;AAChF,CAAC;AAACmO,OAAA,CAAAhQ,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"file":"useOpenAiRealtimeSession.js","names":["_dataSources","require","_react","_helpers","_lobby","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","createMcpState","pending","pendingCallIds","Set","pendingCount","handledCallIds","handledApprovalIds","failedCallIds","responseIds","responsesDone","responsesWithMessage","resumeRequestedCallIds","resumeRequestedAny","retry","count","timeoutId","createResponseState","activeId","audioResponseIds","createFunctionState","pendingCalls","Map","pendingFollowup","pendingFollowupReason","pendingFollowupResponse","handledOpenUrlCalls","useOpenAiRealtimeSession","audioElementRef","useRef","audioContextRef","peerConnectionRef","dataChannelRef","localStreamRef","localAudioTrackRef","microphoneEnabledRef","pendingIntroRef","introResponseIdRef","mcpStateRef","responseStateRef","functionStateRef","pendingUserTranscriptRef","inputSourceRef","outputSourceRef","inputFrequencyDataRef","outputFrequencyDataRef","audioAnalyzersRef","inputAnalyser","outputAnalyser","getInputByteFrequencyData","getOutputByteFrequencyData","cleanupRealtimeSession","useCallback","shouldSignal","undefined","dataChannel","current","readyState","send","JSON","stringify","type","close","peerConnection","getSenders","sender","track","stop","localStream","getTracks","clearTimeout","srcObject","disconnect","audioContext","safeJsonParse","parse","_unused","isAllowedOpenUrl","url","trim","startsWith","enableMicrophone","enabled","clearPendingMcp","clearPendingFollowup","sendResponseCreate","reason","responseOverrides","size","channel","responsePayload","response","sendPendingFollowup","requestFollowupResponse","outputCallId","has","add","resumeMcpIfNeeded","delete","trackMcpStart","callId","getFunctionCallKey","responseId","name","concat","upsertFunctionCall","_ref","key","args","existing","get","set","handleMcpCompletion","requestFollowup","scheduleResumeRetry","attempt","delay","setTimeout","sendFunctionCallOutput","output","item","call_id","sendItemRetrieve","itemId","item_id","sendMcpApproval","approvalRequestId","approve","previous_item_id","approval_request_id","buildMcpFailureInstructions","localeHint","normalizedLocale","handleMcpFailure","failureKey","instructions","handleOpenUrlCalls","_ref2","outputItems","responseOpenUrlItems","Array","isArray","id","values","callKey","error","allowed_prefix","window","location","assign","startSession","_ref3","assistant_name","chainId","currency","hotelId","isChain","locale","setIsConnecting","setReady","fingerprint","localStorage","getItem","finalizeSession","errorMessage","message","Event","publish","EVENT","METRICS","METRICS_EVENTS","AURA_ERROR","sessionResponse","request","endpoint","hostname","process","env","SERVICE_SYNAPSE","method","ephemeralKey","RTCPeerConnection","addEventListener","connectionState","document","createElement","autoplay","ontrack","_ref4","streams","remoteStream","createMediaStreamSource","connect","mediaStream","navigator","mediaDevices","getUserMedia","audio","echoCancellation","noiseSuppression","autoGainControl","channelCount","sampleRate","getAudioTracks","AudioContextConstructor","globalThis","AudioContext","webkitAudioContext","Error","state","resume","createAnalyser","fftSize","Uint8Array","frequencyBinCount","getByteFrequencyData","inputSource","applyConstraints","addTrack","createDataChannel","event","AURA_START","introductionMessage","_payload$item","_payload$item2","_payload$item3","_payload$item4","_payload$item5","_payload$item6","_payload$item9","_payload$item0","payload","data","response_id","clear","_payload$item7","_payload$item8","_payload$item1","_payload$item10","status","_payload$item11","_payload$item12","_payload$item13","_payload$item14","approvalId","_payload$item15","_payload$item16","_payload$item19","_payload$item17","_payload$item18","_payload$item20","_response$status_deta","_response$status_deta2","_response$status_deta3","hasMessage","some","status_details","code","_payload$transcript","transcript","_payload$transcript2","input","activeLocale","chatId","ensureChatId","channelId","session","createChatMessage","author","body","meta","text","agent","offer","createOffer","setLocalDescription","sdpResponse","fetch","sdp","headers","Authorization","ok","answer","setRemoteDescription","endSession","audioAnalyzers","exports"],"sources":["../../../../../../src/components/Chat/components/Aura/hooks/useOpenAiRealtimeSession.js"],"sourcesContent":["import { Event, request } from '@mirai/data-sources';\nimport { useCallback, useRef } from 'react';\n\nimport { EVENT, METRICS_EVENTS } from '../../../../helpers';\nimport { createChatMessage, ensureChatId } from '../../../services/lobby.service';\n\nconst createMcpState = () => ({\n pending: false,\n pendingCallIds: new Set(),\n pendingCount: 0,\n handledCallIds: new Set(),\n handledApprovalIds: new Set(),\n failedCallIds: new Set(),\n responseIds: new Set(),\n responsesDone: new Set(),\n responsesWithMessage: new Set(),\n resumeRequestedCallIds: new Set(),\n resumeRequestedAny: false,\n retry: { count: 0, timeoutId: null },\n});\n\nconst createResponseState = () => ({\n activeId: null,\n audioResponseIds: new Set(),\n});\n\nconst createFunctionState = () => ({\n pendingCalls: new Map(),\n pendingFollowup: false,\n pendingFollowupReason: null,\n pendingFollowupResponse: null,\n handledOpenUrlCalls: new Set(),\n});\n\nconst useOpenAiRealtimeSession = () => {\n const audioElementRef = useRef(null);\n const audioContextRef = useRef(null);\n const peerConnectionRef = useRef(null);\n const dataChannelRef = useRef(null);\n const localStreamRef = useRef(null);\n const localAudioTrackRef = useRef(null);\n const microphoneEnabledRef = useRef(false);\n const pendingIntroRef = useRef(false);\n const introResponseIdRef = useRef(null);\n const mcpStateRef = useRef(createMcpState());\n const responseStateRef = useRef(createResponseState());\n const functionStateRef = useRef(createFunctionState());\n const pendingUserTranscriptRef = useRef('');\n const inputSourceRef = useRef(null);\n const outputSourceRef = useRef(null);\n const inputFrequencyDataRef = useRef(null);\n const outputFrequencyDataRef = useRef(null);\n const audioAnalyzersRef = useRef({\n inputAnalyser: null,\n outputAnalyser: null,\n getInputByteFrequencyData: () => null,\n getOutputByteFrequencyData: () => null,\n });\n\n const cleanupRealtimeSession = useCallback((shouldSignal = false) => {\n const dataChannel = dataChannelRef.current;\n if (dataChannel) {\n if (shouldSignal && dataChannel.readyState === 'open') {\n dataChannel.send(JSON.stringify({ type: 'session.close' }));\n }\n dataChannel.close();\n dataChannelRef.current = null;\n }\n\n const peerConnection = peerConnectionRef.current;\n if (peerConnection) {\n peerConnection.getSenders().forEach((sender) => {\n if (sender.track) sender.track.stop();\n });\n peerConnection.close();\n peerConnectionRef.current = null;\n }\n\n const localStream = localStreamRef.current;\n if (localStream) {\n localStream.getTracks().forEach((track) => track.stop());\n localStreamRef.current = null;\n }\n\n localAudioTrackRef.current = null;\n microphoneEnabledRef.current = false;\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n responseStateRef.current = createResponseState();\n functionStateRef.current = createFunctionState();\n\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = null;\n audioElementRef.current = null;\n }\n\n if (inputSourceRef.current) {\n inputSourceRef.current.disconnect();\n inputSourceRef.current = null;\n }\n\n if (outputSourceRef.current) {\n outputSourceRef.current.disconnect();\n outputSourceRef.current = null;\n }\n\n audioAnalyzersRef.current.inputAnalyser = null;\n audioAnalyzersRef.current.outputAnalyser = null;\n audioAnalyzersRef.current.getInputByteFrequencyData = () => null;\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => null;\n inputFrequencyDataRef.current = null;\n outputFrequencyDataRef.current = null;\n\n const audioContext = audioContextRef.current;\n if (audioContext) {\n audioContext.close();\n audioContextRef.current = null;\n }\n\n pendingUserTranscriptRef.current = '';\n }, []);\n\n const safeJsonParse = useCallback((value) => {\n if (typeof value !== 'string') return null;\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n }, []);\n\n const isAllowedOpenUrl = useCallback((url) => {\n if (typeof url !== 'string') return false;\n return url.trim().startsWith('https://api.mirai');\n }, []);\n\n const enableMicrophone = useCallback(() => {\n const track = localAudioTrackRef.current;\n if (!track || microphoneEnabledRef.current) return;\n track.enabled = true;\n microphoneEnabledRef.current = true;\n }, []);\n\n const clearPendingMcp = useCallback(() => {\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n }, []);\n\n const clearPendingFollowup = useCallback(() => {\n functionStateRef.current.pendingFollowup = false;\n functionStateRef.current.pendingFollowupReason = null;\n functionStateRef.current.pendingFollowupResponse = null;\n }, []);\n\n const sendResponseCreate = useCallback((reason, responseOverrides) => {\n if (responseStateRef.current.activeId || responseStateRef.current.audioResponseIds.size > 0) {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n return false;\n }\n const channel = dataChannelRef.current;\n if (channel && channel.readyState === 'open') {\n const responsePayload = responseOverrides\n ? { type: 'response.create', response: responseOverrides }\n : { type: 'response.create' };\n channel.send(JSON.stringify(responsePayload));\n return true;\n }\n return false;\n }, []);\n\n const sendPendingFollowup = useCallback(() => {\n if (\n responseStateRef.current.activeId ||\n responseStateRef.current.audioResponseIds.size > 0 ||\n !functionStateRef.current.pendingFollowup\n ) {\n return false;\n }\n\n const reason = functionStateRef.current.pendingFollowupReason;\n const responseOverrides = functionStateRef.current.pendingFollowupResponse;\n clearPendingFollowup();\n return sendResponseCreate(reason || 'followup', responseOverrides);\n }, [clearPendingFollowup, sendResponseCreate]);\n\n const requestFollowupResponse = useCallback(\n (reason, outputCallId, responseOverrides) => {\n if (outputCallId && mcpStateRef.current.resumeRequestedCallIds.has(outputCallId)) return false;\n if (!outputCallId && mcpStateRef.current.resumeRequestedAny) return false;\n mcpStateRef.current.resumeRequestedAny = true;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n return sendResponseCreate(reason || 'followup', responseOverrides);\n },\n [sendResponseCreate],\n );\n\n const resumeMcpIfNeeded = useCallback(\n (outputCallId) => {\n if (outputCallId) {\n mcpStateRef.current.pendingCallIds.delete(outputCallId);\n }\n if (\n mcpStateRef.current.pending &&\n mcpStateRef.current.pendingCount === 0 &&\n !mcpStateRef.current.resumeRequestedAny &&\n !functionStateRef.current.pendingFollowup\n ) {\n clearPendingMcp();\n }\n },\n [clearPendingMcp],\n );\n\n const trackMcpStart = useCallback((callId) => {\n mcpStateRef.current.pending = true;\n if (callId) {\n if (mcpStateRef.current.handledCallIds.has(callId)) return;\n if (mcpStateRef.current.pendingCallIds.has(callId)) return;\n mcpStateRef.current.pendingCallIds.add(callId);\n mcpStateRef.current.pendingCount += 1;\n return;\n }\n mcpStateRef.current.pendingCount += 1;\n }, []);\n\n const getFunctionCallKey = useCallback((callId, responseId, name) => {\n if (callId) return callId;\n if (responseId && name) return `${responseId}:${name}`;\n return null;\n }, []);\n\n const upsertFunctionCall = useCallback(({ key, name, responseId, callId, args }) => {\n if (!key) return;\n const existing = functionStateRef.current.pendingCalls.get(key) || { key };\n functionStateRef.current.pendingCalls.set(key, {\n ...existing,\n name: name ?? existing.name,\n responseId: responseId ?? existing.responseId,\n callId: callId ?? existing.callId,\n args: args ?? existing.args,\n });\n }, []);\n\n const handleMcpCompletion = useCallback(\n (outputCallId, requestFollowup = true) => {\n mcpStateRef.current.pending = true;\n if (outputCallId) {\n if (mcpStateRef.current.handledCallIds.has(outputCallId)) return;\n mcpStateRef.current.handledCallIds.add(outputCallId);\n }\n if (mcpStateRef.current.pendingCount > 0) mcpStateRef.current.pendingCount -= 1;\n if (requestFollowup && mcpStateRef.current.pendingCount === 0) {\n requestFollowupResponse('mcp_completed', outputCallId);\n }\n resumeMcpIfNeeded(outputCallId);\n },\n [requestFollowupResponse, resumeMcpIfNeeded],\n );\n\n const scheduleResumeRetry = useCallback(\n (outputCallId) => {\n if (!mcpStateRef.current.pending) return;\n if (mcpStateRef.current.retry.timeoutId) return;\n if (mcpStateRef.current.retry.count >= 2) {\n clearPendingMcp();\n return;\n }\n const attempt = mcpStateRef.current.retry.count + 1;\n const delay = attempt * 600;\n mcpStateRef.current.retry.count = attempt;\n mcpStateRef.current.retry.timeoutId = setTimeout(() => {\n mcpStateRef.current.retry.timeoutId = null;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.delete(outputCallId);\n mcpStateRef.current.resumeRequestedAny = false;\n requestFollowupResponse('mcp_completed', outputCallId);\n }, delay);\n },\n [clearPendingMcp, requestFollowupResponse],\n );\n\n const sendFunctionCallOutput = useCallback((callId, output) => {\n const channel = dataChannelRef.current;\n if (!callId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: callId,\n output: JSON.stringify(output || {}),\n },\n }),\n );\n return true;\n }, []);\n\n const sendItemRetrieve = useCallback((itemId) => {\n const channel = dataChannelRef.current;\n if (!itemId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.retrieve',\n item_id: itemId,\n }),\n );\n return true;\n }, []);\n\n const sendMcpApproval = useCallback((approvalRequestId, approve = true) => {\n const channel = dataChannelRef.current;\n if (!approvalRequestId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n previous_item_id: approvalRequestId,\n item: {\n type: 'mcp_approval_response',\n approval_request_id: approvalRequestId,\n approve,\n },\n }),\n );\n return true;\n }, []);\n\n const buildMcpFailureInstructions = useCallback((localeHint) => {\n const normalizedLocale = localeHint || 'en-US';\n return `Respond in the language that matches the locale code \"${normalizedLocale}\". The requested information could not be retrieved because a data source failed. Apologize briefly and ask if the user wants to try again or ask something else.`;\n }, []);\n\n const handleMcpFailure = useCallback(\n (callId, localeHint) => {\n const failureKey = callId || 'unknown';\n if (mcpStateRef.current.failedCallIds.has(failureKey)) return;\n mcpStateRef.current.failedCallIds.add(failureKey);\n const instructions = buildMcpFailureInstructions(localeHint);\n requestFollowupResponse('mcp_failed', callId, { instructions });\n },\n [buildMcpFailureInstructions, requestFollowupResponse],\n );\n\n const handleOpenUrlCalls = useCallback(\n ({ responseId, outputItems }) => {\n const responseOpenUrlItems = Array.isArray(outputItems)\n ? outputItems.filter((item) => item?.type === 'function_call' && item?.name === 'open_url')\n : [];\n responseOpenUrlItems.forEach((item) => {\n const key = getFunctionCallKey(item.call_id || item.id || null, responseId, item.name);\n upsertFunctionCall({\n key,\n name: item.name,\n responseId,\n callId: item.call_id || item.id || null,\n args: item.arguments || null,\n });\n });\n\n const pendingCalls = [...functionStateRef.current.pendingCalls.values()].filter((call) => {\n if (!call?.name || call.name !== 'open_url') return false;\n if (!responseId) return true;\n return !call.responseId || call.responseId === responseId;\n });\n\n for (const call of pendingCalls) {\n const callKey = call.key || call.callId || call.args || null;\n if (callKey && functionStateRef.current.handledOpenUrlCalls.has(callKey)) continue;\n const args = safeJsonParse(call.args);\n const url = args?.url;\n if (!isAllowedOpenUrl(url)) {\n if (call.callId) {\n sendFunctionCallOutput(call.callId, {\n error: 'blocked_url',\n allowed_prefix: 'https://api.mirai',\n });\n requestFollowupResponse('open_url_blocked', call.callId);\n }\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n continue;\n }\n if (callKey) functionStateRef.current.handledOpenUrlCalls.add(callKey);\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n cleanupRealtimeSession(true);\n window.location.assign(url.trim());\n return true;\n }\n return false;\n },\n [\n cleanupRealtimeSession,\n getFunctionCallKey,\n isAllowedOpenUrl,\n requestFollowupResponse,\n safeJsonParse,\n sendFunctionCallOutput,\n upsertFunctionCall,\n ],\n );\n\n const startSession = useCallback(\n async ({ assistant_name, chainId, currency, hotelId, isChain, locale, setIsConnecting, setReady }) => {\n cleanupRealtimeSession();\n\n const fingerprint = localStorage.getItem('MIRAI:FINGERPRINT');\n const finalizeSession = (error) => {\n const errorMessage = typeof error === 'string' ? error : error?.message;\n if (errorMessage) {\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_ERROR, error: errorMessage });\n }\n cleanupRealtimeSession(true);\n setReady(false);\n setIsConnecting(false);\n };\n\n try {\n const sessionResponse = await request({\n endpoint: `/voice/session?fingerprint=${fingerprint}&hotelId=${isChain ? '' : hotelId ?? ''}&chainId=${\n isChain ? chainId ?? '' : ''\n }&locale=${locale ?? ''}&currency=${currency ?? ''}`,\n hostname: process.env.SERVICE_SYNAPSE,\n method: 'GET',\n });\n\n const ephemeralKey = sessionResponse.value;\n const peerConnection = new RTCPeerConnection();\n peerConnectionRef.current = peerConnection;\n peerConnection.addEventListener('connectionstatechange', () => {\n const { connectionState } = peerConnection;\n if (connectionState === 'failed' || connectionState === 'disconnected' || connectionState === 'closed') {\n finalizeSession();\n }\n });\n\n audioElementRef.current = document.createElement('audio');\n audioElementRef.current.autoplay = true;\n peerConnection.ontrack = ({ streams }) => {\n const [remoteStream] = streams;\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = remoteStream || null;\n }\n if (!audioContextRef.current || !audioAnalyzersRef.current.outputAnalyser || !remoteStream) return;\n if (outputSourceRef.current) outputSourceRef.current.disconnect();\n outputSourceRef.current = audioContextRef.current.createMediaStreamSource(remoteStream);\n outputSourceRef.current.connect(audioAnalyzersRef.current.outputAnalyser);\n };\n\n const mediaStream = await navigator.mediaDevices.getUserMedia({\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n sampleRate: 48000,\n },\n });\n\n localStreamRef.current = mediaStream;\n const [track] = mediaStream.getAudioTracks();\n\n const AudioContextConstructor = globalThis.AudioContext || globalThis.webkitAudioContext;\n if (!AudioContextConstructor) throw new Error('AudioContext not supported');\n const audioContext = new AudioContextConstructor();\n audioContextRef.current = audioContext;\n if (audioContext.state === 'suspended') await audioContext.resume();\n const inputAnalyser = audioContext.createAnalyser();\n const outputAnalyser = audioContext.createAnalyser();\n inputAnalyser.fftSize = 1024;\n outputAnalyser.fftSize = 1024;\n audioAnalyzersRef.current.inputAnalyser = inputAnalyser;\n audioAnalyzersRef.current.outputAnalyser = outputAnalyser;\n inputFrequencyDataRef.current = new Uint8Array(inputAnalyser.frequencyBinCount);\n outputFrequencyDataRef.current = new Uint8Array(outputAnalyser.frequencyBinCount);\n audioAnalyzersRef.current.getInputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.inputAnalyser || !inputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.inputAnalyser.getByteFrequencyData(inputFrequencyDataRef.current);\n return inputFrequencyDataRef.current;\n };\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.outputAnalyser || !outputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.outputAnalyser.getByteFrequencyData(outputFrequencyDataRef.current);\n return outputFrequencyDataRef.current;\n };\n\n const inputSource = audioContext.createMediaStreamSource(mediaStream);\n inputSourceRef.current = inputSource;\n inputSource.connect(inputAnalyser);\n\n if (track) {\n localAudioTrackRef.current = track;\n track.enabled = false;\n await track.applyConstraints({\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n });\n peerConnection.addTrack(track, mediaStream);\n }\n\n const dataChannel = peerConnection.createDataChannel('oai-events');\n dataChannelRef.current = dataChannel;\n dataChannel.addEventListener('close', () => {\n finalizeSession();\n });\n dataChannel.addEventListener('error', (event) => {\n finalizeSession(event);\n });\n\n dataChannel.addEventListener('open', () => {\n pendingUserTranscriptRef.current = '';\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_START });\n\n const localeHint = locale || 'en-US';\n const introductionMessage = `Respond in the language that matches the locale code \"${localeHint}\". Introduce yourself using the following sentence, translated into that language: \"Hello, I am ${assistant_name}, your virtual assistant. I can help you with information about our services and facilities. What would you like to know today?\"`;\n\n pendingIntroRef.current = true;\n introResponseIdRef.current = null;\n dataChannel.send(\n JSON.stringify({\n type: 'response.create',\n response: {\n instructions: introductionMessage,\n },\n }),\n );\n });\n\n dataChannel.addEventListener('message', async (event) => {\n const payload = JSON.parse(event.data);\n const { response } = payload;\n const itemId = payload.item?.id || payload.item_id || null;\n const callId = payload.item?.call_id || payload.call_id || itemId;\n const responseId = payload.response_id || response?.id || null;\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'message') {\n if (pendingIntroRef.current && !introResponseIdRef.current && payload.response_id) {\n introResponseIdRef.current = payload.response_id;\n }\n if (responseId) responseStateRef.current.audioResponseIds.add(responseId);\n if (responseId) {\n mcpStateRef.current.responsesWithMessage.add(responseId);\n mcpStateRef.current.responseIds.delete(responseId);\n }\n if (mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0) {\n if (mcpStateRef.current.resumeRequestedAny) clearPendingFollowup();\n clearPendingMcp();\n }\n }\n\n if (payload.type === 'output_audio_buffer.stopped' || payload.type === 'output_audio_buffer.cleared') {\n if (responseId) {\n responseStateRef.current.audioResponseIds.delete(responseId);\n } else {\n responseStateRef.current.audioResponseIds.clear();\n }\n if (\n pendingIntroRef.current &&\n introResponseIdRef.current &&\n payload.response_id === introResponseIdRef.current\n ) {\n enableMicrophone();\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n }\n sendPendingFollowup();\n }\n\n if (\n payload.type === 'response.output_item.added' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (responseId) mcpStateRef.current.responseIds.add(responseId);\n trackMcpStart(callId);\n }\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'function_call') {\n const name = payload.item?.name || payload.name || null;\n const key = getFunctionCallKey(callId, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId, args: payload.item?.arguments || null });\n }\n\n if (payload.type === 'response.function_call_arguments.done') {\n const name = payload.name || null;\n const key = getFunctionCallKey(payload.call_id || null, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId: payload.call_id || null, args: payload.arguments });\n }\n\n if (payload.type === 'response.mcp_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'response.mcp_tool_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'mcp_list_tools.in_progress' || payload.type === 'response.mcp_list_tools.in_progress') {\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (\n payload.type === 'response.output_item.done' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (payload.item?.error || payload.item?.status === 'failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (\n payload.type === 'response.mcp_call.completed' ||\n payload.type === 'response.mcp_call.failed' ||\n payload.type === 'response.mcp_tool_call.completed' ||\n payload.type === 'response.mcp_tool_call.failed'\n ) {\n if (payload.type === 'response.mcp_call.failed' || payload.type === 'response.mcp_tool_call.failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (payload.type === 'conversation.item.added' || payload.type === 'conversation.item.retrieved') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n trackMcpStart(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'conversation.item.done') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n if (payload.item?.status === 'failed' || payload.item?.error) {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'response.done') {\n if (responseId) mcpStateRef.current.responsesDone.add(responseId);\n const outputItems = Array.isArray(response?.output) ? response.output : [];\n const hasMessage = outputItems.some((item) => item?.type === 'message');\n const status = response?.status;\n const reason = response?.status_details?.reason || response?.status_details?.error?.code || null;\n if (status !== 'completed' && responseId) {\n responseStateRef.current.audioResponseIds.delete(responseId);\n }\n if (status === 'completed') {\n if (\n hasMessage &&\n mcpStateRef.current.pending &&\n mcpStateRef.current.pendingCount === 0 &&\n mcpStateRef.current.responseIds.size === 0\n ) {\n clearPendingMcp();\n }\n } else if (mcpStateRef.current.pending) {\n if (status === 'failed') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n } else if (status === 'cancelled' && reason !== 'turn_detected') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n }\n }\n resumeMcpIfNeeded(callId);\n handleOpenUrlCalls({ responseId, outputItems });\n }\n\n if (payload.type === 'response.created') {\n if (responseId) responseStateRef.current.activeId = responseId;\n }\n\n if (payload.type === 'conversation.item.input_audio_transcription.completed') {\n const transcript = payload.transcript?.trim();\n if (transcript) pendingUserTranscriptRef.current += transcript;\n }\n\n if (payload.type === 'response.done' && responseId && responseStateRef.current.activeId === responseId) {\n responseStateRef.current.activeId = null;\n sendPendingFollowup();\n }\n\n if (payload.type === 'response.output_audio_transcript.done') {\n const transcript = payload.transcript?.trim();\n if (!transcript || !pendingUserTranscriptRef.current) return;\n\n const input = pendingUserTranscriptRef.current.trim();\n pendingUserTranscriptRef.current = '';\n\n const activeLocale = locale || 'en-US';\n\n if (hotelId) {\n try {\n const chatId = await ensureChatId({\n fingerprint,\n channelId: hotelId,\n session: { locale: activeLocale },\n });\n if (chatId) {\n await createChatMessage({ author: 'user', body: input, chatId, meta: { audio: true } });\n await createChatMessage({ author: 'ai', body: transcript, chatId, meta: { audio: true } });\n }\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_ERROR, error: error?.message });\n }\n }\n\n Event.publish(EVENT.METRICS, {\n id: 'SYNAPSE_RESPONSE',\n fingerprint,\n text: transcript,\n input,\n agent: 'aura',\n locale: activeLocale,\n });\n }\n });\n\n const offer = await peerConnection.createOffer();\n await peerConnection.setLocalDescription(offer);\n\n const sdpResponse = await fetch('https://api.openai.com/v1/realtime/calls', {\n method: 'POST',\n body: offer.sdp,\n headers: {\n Authorization: `Bearer ${ephemeralKey}`,\n 'Content-Type': 'application/sdp',\n },\n });\n\n if (!sdpResponse.ok) throw new Error('Failed to establish OpenAI Realtime session');\n\n const answer = { type: 'answer', sdp: await sdpResponse.text() };\n\n await peerConnection.setRemoteDescription(answer);\n setReady(true);\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: METRICS_EVENTS.AURA_ERROR, error: error?.message });\n setReady(false);\n throw error;\n } finally {\n setIsConnecting(false);\n }\n },\n [\n cleanupRealtimeSession,\n clearPendingFollowup,\n clearPendingMcp,\n enableMicrophone,\n handleMcpCompletion,\n handleMcpFailure,\n handleOpenUrlCalls,\n resumeMcpIfNeeded,\n scheduleResumeRetry,\n sendPendingFollowup,\n sendItemRetrieve,\n sendMcpApproval,\n trackMcpStart,\n upsertFunctionCall,\n getFunctionCallKey,\n ],\n );\n\n const endSession = useCallback(() => {\n cleanupRealtimeSession(true);\n }, [cleanupRealtimeSession]);\n\n return { startSession, endSession, audioAnalyzers: audioAnalyzersRef.current };\n};\n\nexport { useOpenAiRealtimeSession };\n"],"mappings":"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","ignoreList":[]}
@@ -249,6 +249,7 @@ const PerformanceManager = () => {
249
249
  id: index + 1
250
250
  }, init(_objectSpread(_objectSpread({}, config), {}, {
251
251
  hotel,
252
+ index,
252
253
  instanceId,
253
254
  loadedComponents,
254
255
  place
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceManager.js","names":["_dataSources","require","_services","_ui","_react","_helpers","_PerformanceManager","_PerformanceManager2","_PerformanceManager3","_package","_helpers2","_Core","_helpers3","_getSuperProps","_excluded","_excluded2","_excluded3","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","n","indexOf","propertyIsEnumerable","hasOwnProperty","MAX_COUNTER","COMPARE","GTM","PERFORMANCE","counter","memoizedPendingEvents","PerformanceManager","device","useDevice","track","useMetrics","_useStore","useStore","performance","storePerformance","store","consentMode","setConsentMode","useState","getConsentMode","setPerformance","components","finder","place","hotel","id","instanceId","locale","session","type","useEffect","metrics","ServiceFeatures","get","handleMetrics","_ref","errorMessage","props","window","IS_PLAYWRIGHT","location","host","ServiceAnna","eventName","chain","undefined","event","toUpperCase","trim","getSuperProps","engineVersion","version","mobile","Event","subscribe","COMPONENTS_EVENT","METRICS","unsubscribe","interval","setInterval","nextConsentMode","isGtm","provider","includes","nextMemoizedPendingEvents","execute","CONSENT_MODE_ANSWERED","requeue","executeEvent","clearInterval","config","hotelId","isHotel","getPerformance","handleEvent","_ref2","currentConsentMode","availableProviders","map","CONSENT_MODE_REQUIRED","entries","EVENTS","_ref3","propProvider","callback","parseInt","some","item","loadScripts","then","find","_ref4","response","label","concat","getPerformanceLabel","console","log","Mirai","urlParameters","fetchUrlParams","search","propConsentMode","loadedComponents","scripts","instances","propInstances","init","once","SCRIPTS","index","domain","loadScript","catch","exports"],"sources":["../../../src/contexts/PerformanceManager/PerformanceManager.jsx"],"sourcesContent":["import { Event, useMetrics, useStore } from '@mirai/data-sources';\nimport { ServiceAnna, ServiceFeatures } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport { useEffect, useState } from 'react';\n\nimport { getConsentMode, getPerformanceLabel } from './helpers';\nimport { CONSENT_MODE_ANSWERED, CONSENT_MODE_REQUIRED } from './PerformanceManager.constants';\nimport { EVENTS } from './PerformanceManager.events';\nimport { SCRIPTS } from './PerformanceManager.scripts';\nimport { version } from '../../../package.json';\nimport { EVENT as COMPONENTS_EVENT } from '../../components/helpers';\nimport { PERFORMANCE } from '../../Core.constants';\nimport { fetchUrlParams, getPerformance, loadScript } from '../../helpers';\nimport { getSuperProps } from '../../helpers/getSuperProps';\n\nconst MAX_COUNTER = 5;\nconst { COMPARE, GTM } = PERFORMANCE || {};\n\nlet counter = 0;\nlet memoizedPendingEvents = [];\n\nconst PerformanceManager = () => {\n const device = useDevice();\n const { track } = useMetrics();\n const {\n value: { performance: storePerformance = [], ...store },\n } = useStore();\n\n const [consentMode, setConsentMode] = useState(getConsentMode());\n const [performance, setPerformance] = useState(storePerformance);\n\n const { components, finder: { place } = {}, hotel = {}, id: instanceId, locale, session, type } = store;\n\n useEffect(() => {\n const metrics = ServiceFeatures.get('metrics', instanceId);\n\n const handleMetrics = ({ errorMessage, id, ...props }) => {\n if (!id || window.IS_PLAYWRIGHT || window.location.host === 'monalisa.mirai.com') return;\n\n if (errorMessage) {\n ServiceAnna.track({\n ...props,\n errorMessage,\n eventName: id,\n hotel: hotel.id,\n chain: type === 'chain' ? instanceId : undefined,\n session,\n });\n } else if (metrics) {\n const event = id.toUpperCase().trim();\n track(event, {\n ...props,\n ...getSuperProps({ store, engineVersion: version }),\n locale,\n mobile: device.mobile,\n session,\n type,\n });\n }\n };\n\n Event.subscribe(COMPONENTS_EVENT.METRICS, handleMetrics);\n\n return () => Event.unsubscribe(COMPONENTS_EVENT.METRICS, handleMetrics);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [store]);\n\n useEffect(() => {\n if (consentMode) return;\n\n const interval = setInterval(async () => {\n counter !== undefined && counter++;\n const nextConsentMode = getConsentMode(counter >= MAX_COUNTER);\n const isGtm = (provider) => [COMPARE, GTM].includes(provider);\n\n if (\n (nextConsentMode === undefined &&\n memoizedPendingEvents.filter(({ provider } = {}) => isGtm(provider)).length === 0) ||\n (!nextConsentMode && counter < MAX_COUNTER)\n )\n return;\n\n const nextMemoizedPendingEvents = [];\n memoizedPendingEvents.forEach((event = {}) => {\n const { provider } = event;\n const execute =\n nextConsentMode ||\n (counter >= MAX_COUNTER &&\n CONSENT_MODE_ANSWERED.includes(provider) &&\n (nextConsentMode === false || isGtm(provider)));\n const requeue = nextConsentMode === undefined && !isGtm(provider);\n\n if (execute) {\n executeEvent(event, nextConsentMode);\n\n if (!nextConsentMode && !isGtm(provider)) nextMemoizedPendingEvents.push(event);\n } else if (!execute || requeue) {\n nextMemoizedPendingEvents.push(event);\n }\n });\n memoizedPendingEvents = nextMemoizedPendingEvents;\n if (nextConsentMode !== undefined) {\n counter = undefined;\n setConsentMode(nextConsentMode);\n }\n }, 1000);\n\n return () => clearInterval(interval);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [consentMode]);\n\n useEffect(() => {\n const { config, finder: { place: { id: [hotelId] = [], isHotel } = {} } = {} } = store;\n\n if (place) {\n setPerformance(getPerformance(config, isHotel ? hotelId : undefined));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [place]);\n\n useEffect(() => {\n const handleEvent = ({ event, ...value }) => {\n if (performance.length === 0) return;\n\n const currentConsentMode = getConsentMode(true);\n\n const availableProviders = performance\n .map(({ type } = {}) => type)\n .filter((type) => !(!currentConsentMode && CONSENT_MODE_ANSWERED.includes(type)))\n .filter((type) => currentConsentMode || !CONSENT_MODE_REQUIRED.includes(type));\n\n Object.entries(EVENTS[event]).forEach(([propProvider, callback = () => {}]) => {\n const provider = parseInt(propProvider);\n const props = { callback, event, provider, value };\n\n if (!currentConsentMode && !availableProviders.includes(provider)) {\n if (counter === undefined && CONSENT_MODE_ANSWERED.includes(provider)) {\n executeEvent(props);\n } else if (!memoizedPendingEvents.some((item) => item.event === event && item.provider === provider)) {\n memoizedPendingEvents.push(props);\n }\n } else executeEvent(props, currentConsentMode);\n });\n };\n\n Object.keys(EVENTS).forEach((event) => Event.subscribe(event, handleEvent));\n\n return () => Object.keys(EVENTS).forEach((event) => Event.unsubscribe(event, handleEvent));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [device, performance, store]);\n\n const executeEvent = ({ provider, callback, value, event } = {}, nextConsentMode = consentMode) => {\n loadScripts(\n performance.filter(({ type } = {}) => type === provider && type !== COMPARE),\n nextConsentMode,\n ).then(() => {\n const config = performance.find(({ type }) => type === provider);\n const response = callback({ ...value, ...config, device, store });\n if (!response) return;\n\n const label = `⚡️ ${getPerformanceLabel(provider)} ${event}`;\n // eslint-disable-next-line no-console\n response.then ? response.then((value) => console.log(label, value)) : console.log(label, response);\n\n if (provider === GTM) {\n window.Mirai.urlParameters = fetchUrlParams(location.search);\n loadScripts(\n performance.filter(({ type } = {}) => type === COMPARE),\n nextConsentMode,\n );\n }\n });\n };\n\n const loadScripts = async (performance = [], propConsentMode = consentMode) => {\n const loadedComponents = Object.keys(components);\n\n const scripts = [];\n performance\n .filter(({ type } = {}) => propConsentMode === true || !CONSENT_MODE_REQUIRED.includes(type))\n .forEach(({ type, instances: propInstances = [] } = {}) => {\n const { components = [], init = () => {}, once = false } = SCRIPTS[type] || {};\n\n if (components.length === 0 || components.some((item) => loadedComponents.includes(item))) {\n const instances = once ? [propInstances[0]] : propInstances;\n scripts.push(\n ...instances.map((config = {}, index) => ({\n domain: `performance-${getPerformanceLabel(type)}`,\n id: index + 1,\n ...init({ ...config, hotel, instanceId, loadedComponents, place }),\n type,\n })),\n );\n }\n });\n\n for (let index = 0; index < scripts.length; index++) {\n await loadScript(scripts[index]).catch(() => {});\n }\n };\n\n return null;\n};\n\nexport { PerformanceManager };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PerformanceManager.js","names":["_dataSources","require","_services","_ui","_react","_helpers","_PerformanceManager","_PerformanceManager2","_PerformanceManager3","_package","_helpers2","_Core","_helpers3","_getSuperProps","_excluded","_excluded2","_excluded3","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","n","indexOf","propertyIsEnumerable","hasOwnProperty","MAX_COUNTER","COMPARE","GTM","PERFORMANCE","counter","memoizedPendingEvents","PerformanceManager","device","useDevice","track","useMetrics","_useStore","useStore","performance","storePerformance","store","consentMode","setConsentMode","useState","getConsentMode","setPerformance","components","finder","place","hotel","id","instanceId","locale","session","type","useEffect","metrics","ServiceFeatures","get","handleMetrics","_ref","errorMessage","props","window","IS_PLAYWRIGHT","location","host","ServiceAnna","eventName","chain","undefined","event","toUpperCase","trim","getSuperProps","engineVersion","version","mobile","Event","subscribe","COMPONENTS_EVENT","METRICS","unsubscribe","interval","setInterval","nextConsentMode","isGtm","provider","includes","nextMemoizedPendingEvents","execute","CONSENT_MODE_ANSWERED","requeue","executeEvent","clearInterval","config","hotelId","isHotel","getPerformance","handleEvent","_ref2","currentConsentMode","availableProviders","map","CONSENT_MODE_REQUIRED","entries","EVENTS","_ref3","propProvider","callback","parseInt","some","item","loadScripts","then","find","_ref4","response","label","concat","getPerformanceLabel","console","log","Mirai","urlParameters","fetchUrlParams","search","propConsentMode","loadedComponents","scripts","instances","propInstances","init","once","SCRIPTS","index","domain","loadScript","catch","exports"],"sources":["../../../src/contexts/PerformanceManager/PerformanceManager.jsx"],"sourcesContent":["import { Event, useMetrics, useStore } from '@mirai/data-sources';\nimport { ServiceAnna, ServiceFeatures } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport { useEffect, useState } from 'react';\n\nimport { getConsentMode, getPerformanceLabel } from './helpers';\nimport { CONSENT_MODE_ANSWERED, CONSENT_MODE_REQUIRED } from './PerformanceManager.constants';\nimport { EVENTS } from './PerformanceManager.events';\nimport { SCRIPTS } from './PerformanceManager.scripts';\nimport { version } from '../../../package.json';\nimport { EVENT as COMPONENTS_EVENT } from '../../components/helpers';\nimport { PERFORMANCE } from '../../Core.constants';\nimport { fetchUrlParams, getPerformance, loadScript } from '../../helpers';\nimport { getSuperProps } from '../../helpers/getSuperProps';\n\nconst MAX_COUNTER = 5;\nconst { COMPARE, GTM } = PERFORMANCE || {};\n\nlet counter = 0;\nlet memoizedPendingEvents = [];\n\nconst PerformanceManager = () => {\n const device = useDevice();\n const { track } = useMetrics();\n const {\n value: { performance: storePerformance = [], ...store },\n } = useStore();\n\n const [consentMode, setConsentMode] = useState(getConsentMode());\n const [performance, setPerformance] = useState(storePerformance);\n\n const { components, finder: { place } = {}, hotel = {}, id: instanceId, locale, session, type } = store;\n\n useEffect(() => {\n const metrics = ServiceFeatures.get('metrics', instanceId);\n\n const handleMetrics = ({ errorMessage, id, ...props }) => {\n if (!id || window.IS_PLAYWRIGHT || window.location.host === 'monalisa.mirai.com') return;\n\n if (errorMessage) {\n ServiceAnna.track({\n ...props,\n errorMessage,\n eventName: id,\n hotel: hotel.id,\n chain: type === 'chain' ? instanceId : undefined,\n session,\n });\n } else if (metrics) {\n const event = id.toUpperCase().trim();\n track(event, {\n ...props,\n ...getSuperProps({ store, engineVersion: version }),\n locale,\n mobile: device.mobile,\n session,\n type,\n });\n }\n };\n\n Event.subscribe(COMPONENTS_EVENT.METRICS, handleMetrics);\n\n return () => Event.unsubscribe(COMPONENTS_EVENT.METRICS, handleMetrics);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [store]);\n\n useEffect(() => {\n if (consentMode) return;\n\n const interval = setInterval(async () => {\n counter !== undefined && counter++;\n const nextConsentMode = getConsentMode(counter >= MAX_COUNTER);\n const isGtm = (provider) => [COMPARE, GTM].includes(provider);\n\n if (\n (nextConsentMode === undefined &&\n memoizedPendingEvents.filter(({ provider } = {}) => isGtm(provider)).length === 0) ||\n (!nextConsentMode && counter < MAX_COUNTER)\n )\n return;\n\n const nextMemoizedPendingEvents = [];\n memoizedPendingEvents.forEach((event = {}) => {\n const { provider } = event;\n const execute =\n nextConsentMode ||\n (counter >= MAX_COUNTER &&\n CONSENT_MODE_ANSWERED.includes(provider) &&\n (nextConsentMode === false || isGtm(provider)));\n const requeue = nextConsentMode === undefined && !isGtm(provider);\n\n if (execute) {\n executeEvent(event, nextConsentMode);\n\n if (!nextConsentMode && !isGtm(provider)) nextMemoizedPendingEvents.push(event);\n } else if (!execute || requeue) {\n nextMemoizedPendingEvents.push(event);\n }\n });\n memoizedPendingEvents = nextMemoizedPendingEvents;\n if (nextConsentMode !== undefined) {\n counter = undefined;\n setConsentMode(nextConsentMode);\n }\n }, 1000);\n\n return () => clearInterval(interval);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [consentMode]);\n\n useEffect(() => {\n const { config, finder: { place: { id: [hotelId] = [], isHotel } = {} } = {} } = store;\n\n if (place) {\n setPerformance(getPerformance(config, isHotel ? hotelId : undefined));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [place]);\n\n useEffect(() => {\n const handleEvent = ({ event, ...value }) => {\n if (performance.length === 0) return;\n\n const currentConsentMode = getConsentMode(true);\n\n const availableProviders = performance\n .map(({ type } = {}) => type)\n .filter((type) => !(!currentConsentMode && CONSENT_MODE_ANSWERED.includes(type)))\n .filter((type) => currentConsentMode || !CONSENT_MODE_REQUIRED.includes(type));\n\n Object.entries(EVENTS[event]).forEach(([propProvider, callback = () => {}]) => {\n const provider = parseInt(propProvider);\n const props = { callback, event, provider, value };\n\n if (!currentConsentMode && !availableProviders.includes(provider)) {\n if (counter === undefined && CONSENT_MODE_ANSWERED.includes(provider)) {\n executeEvent(props);\n } else if (!memoizedPendingEvents.some((item) => item.event === event && item.provider === provider)) {\n memoizedPendingEvents.push(props);\n }\n } else executeEvent(props, currentConsentMode);\n });\n };\n\n Object.keys(EVENTS).forEach((event) => Event.subscribe(event, handleEvent));\n\n return () => Object.keys(EVENTS).forEach((event) => Event.unsubscribe(event, handleEvent));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [device, performance, store]);\n\n const executeEvent = ({ provider, callback, value, event } = {}, nextConsentMode = consentMode) => {\n loadScripts(\n performance.filter(({ type } = {}) => type === provider && type !== COMPARE),\n nextConsentMode,\n ).then(() => {\n const config = performance.find(({ type }) => type === provider);\n const response = callback({ ...value, ...config, device, store });\n if (!response) return;\n\n const label = `⚡️ ${getPerformanceLabel(provider)} ${event}`;\n // eslint-disable-next-line no-console\n response.then ? response.then((value) => console.log(label, value)) : console.log(label, response);\n\n if (provider === GTM) {\n window.Mirai.urlParameters = fetchUrlParams(location.search);\n loadScripts(\n performance.filter(({ type } = {}) => type === COMPARE),\n nextConsentMode,\n );\n }\n });\n };\n\n const loadScripts = async (performance = [], propConsentMode = consentMode) => {\n const loadedComponents = Object.keys(components);\n\n const scripts = [];\n performance\n .filter(({ type } = {}) => propConsentMode === true || !CONSENT_MODE_REQUIRED.includes(type))\n .forEach(({ type, instances: propInstances = [] } = {}) => {\n const { components = [], init = () => {}, once = false } = SCRIPTS[type] || {};\n\n if (components.length === 0 || components.some((item) => loadedComponents.includes(item))) {\n const instances = once ? [propInstances[0]] : propInstances;\n scripts.push(\n ...instances.map((config = {}, index) => ({\n domain: `performance-${getPerformanceLabel(type)}`,\n id: index + 1,\n ...init({ ...config, hotel, index, instanceId, loadedComponents, place }),\n type,\n })),\n );\n }\n });\n\n for (let index = 0; index < scripts.length; index++) {\n await loadScript(scripts[index]).catch(() => {});\n }\n };\n\n return null;\n};\n\nexport { PerformanceManager };\n"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SCRIPTS = void 0;
7
7
  var _helpers = require("./helpers");
8
8
  var _Core = require("../../Core.constants");
9
+ const MAC_HOTELS_IDS = ['66392129', '100122077', '100131206', '500163', '501196'];
9
10
  const SCRIPTS = exports.SCRIPTS = {
10
11
  [_Core.PERFORMANCE.AFFILIRED]: {
11
12
  components: ['booking'],
@@ -17,10 +18,12 @@ const SCRIPTS = exports.SCRIPTS = {
17
18
  [_Core.PERFORMANCE.ANALYTICS]: {
18
19
  init: function () {
19
20
  let {
20
- idAnalytics
21
+ idAnalytics,
22
+ index,
23
+ instanceId
21
24
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
25
  return {
23
- src: "https://www.googletagmanager.com/gtag/js?id=".concat(idAnalytics),
26
+ src: MAC_HOTELS_IDS.includes(instanceId) ? "/metricsga4".concat(index > 0 ? index + 1 : '', "/") : "https://www.googletagmanager.com/gtag/js?id=".concat(idAnalytics),
24
27
  onLoad: () => {
25
28
  window.dataLayer = window.dataLayer || [];
26
29
  window.gtag = function () {
@@ -74,11 +77,12 @@ const SCRIPTS = exports.SCRIPTS = {
74
77
  conversionLabel,
75
78
  cookiePrefix,
76
79
  idAdwords,
80
+ index,
77
81
  instanceId,
78
82
  loadedComponents = []
79
83
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
80
84
  return {
81
- src: instanceId === '10030559' && conversionLabel === 's54-COOp2_sbEOqysPkD' || ['500255', '100376306', '100376307'].includes(instanceId) && conversionLabel === 'rIhpCMvVzo8DEKDAwr8C' && idAdwords === '670081056' || ['66392129', '100122077', '100131206', '500163', '501196'].includes(instanceId) && conversionLabel === 'i7ipCNLioOMDEJ6o59gD' && idAdwords === '991548446' ? '/metrics/' : "https://www.googletagmanager.com/gtag/js?id=AW-".concat(idAdwords),
85
+ src: instanceId === '10030559' && conversionLabel === 's54-COOp2_sbEOqysPkD' || ['500255', '100376306', '100376307'].includes(instanceId) && conversionLabel === 'rIhpCMvVzo8DEKDAwr8C' && idAdwords === '670081056' || MAC_HOTELS_IDS.includes(instanceId) ? "/metrics".concat(index > 0 ? index + 1 : '', "/") : "https://www.googletagmanager.com/gtag/js?id=AW-".concat(idAdwords),
82
86
  onLoad: () => {
83
87
  window.dataLayer = window.dataLayer || [];
84
88
  window.gtag = function () {
@@ -95,10 +99,12 @@ const SCRIPTS = exports.SCRIPTS = {
95
99
  [_Core.PERFORMANCE.GTM]: {
96
100
  init: function () {
97
101
  let {
98
- idGTM: id
102
+ idGTM: id,
103
+ index,
104
+ instanceId
99
105
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
106
  return {
101
- src: "https://www.googletagmanager.com/gtm.js?id=".concat(id),
107
+ src: MAC_HOTELS_IDS.includes(instanceId) ? "/metricsgtm".concat(index > 0 ? index + 1 : '', "/") : "https://www.googletagmanager.com/gtm.js?id=".concat(id),
102
108
  onLoad: () => {
103
109
  window.dataLayer = window.dataLayer || [];
104
110
  (0, _helpers.dataLayerPush)({
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceManager.scripts.js","names":["_helpers","require","_Core","SCRIPTS","exports","PERFORMANCE","AFFILIRED","components","init","src","once","ANALYTICS","idAnalytics","arguments","length","undefined","concat","onLoad","window","dataLayer","gtag","push","Date","linker","accept_incoming","BING","_ref","idBing","uetq","UET","ti","q","ad_storage","COMPARE","document","addEventListener","CmprmInit","InitMirai","GOOGLE_ADS","conversionLabel","cookiePrefix","idAdwords","instanceId","loadedComponents","includes","conversion_cookie_prefix","allow_enhanced_conversions","GTM","idGTM","id","dataLayerPush","event","getTime","FACEBOOK","MIRAI","hotel","place","hotelId","isHotel","THE_HOTEL_NETWORK","_ref2"],"sources":["../../../src/contexts/PerformanceManager/PerformanceManager.scripts.js"],"sourcesContent":["import { dataLayerPush } from './helpers';\nimport { PERFORMANCE } from '../../Core.constants';\n\nconst SCRIPTS = {\n [PERFORMANCE.AFFILIRED]: {\n components: ['booking'],\n init: () => ({\n src: 'https://scripts.affilired.com/v2/tracking.php',\n }),\n once: true,\n },\n\n [PERFORMANCE.ANALYTICS]: {\n init: ({ idAnalytics } = {}) => ({\n src: `https://www.googletagmanager.com/gtag/js?id=${idAnalytics}`,\n onLoad: () => {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function () {\n window.dataLayer.push(arguments);\n };\n window.gtag('js', new Date());\n window.gtag('config', idAnalytics, { linker: { accept_incoming: true } });\n },\n }),\n },\n\n [PERFORMANCE.BING]: {\n init: ({ idBing }) => ({\n src: '//bat.bing.com/bat.js',\n onLoad: () => {\n const uetq = `uetq_${idBing}`;\n // eslint-disable-next-line no-undef\n window[uetq] = new UET({ ti: idBing, q: window[uetq] || [] });\n window[uetq].push('consent', 'update', { ad_storage: 'granted' });\n window[uetq].push('pageLoad');\n },\n }),\n },\n\n [PERFORMANCE.COMPARE]: {\n components: ['rates', 'checkout', 'booking'],\n init: () => ({\n src: 'https://static.hotelmonitor.info/CmprmInit-min.js',\n onLoad: () => {\n document.addEventListener('CmprmInitLoaded', window.CmprmInit.InitMirai, false);\n },\n }),\n once: true,\n },\n\n [PERFORMANCE.GOOGLE_ADS]: {\n init: ({ conversionLabel, cookiePrefix, idAdwords, instanceId, loadedComponents = [] } = {}) => ({\n src:\n (instanceId === '10030559' && conversionLabel === 's54-COOp2_sbEOqysPkD') ||\n (['500255', '100376306', '100376307'].includes(instanceId) &&\n conversionLabel === 'rIhpCMvVzo8DEKDAwr8C' &&\n idAdwords === '670081056') ||\n (['66392129', '100122077', '100131206', '500163', '501196'].includes(instanceId) &&\n conversionLabel === 'i7ipCNLioOMDEJ6o59gD' &&\n idAdwords === '991548446')\n ? '/metrics/'\n : `https://www.googletagmanager.com/gtag/js?id=AW-${idAdwords}`,\n onLoad: () => {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function () {\n window.dataLayer.push(arguments);\n };\n window.gtag('config', `AW-${idAdwords}`, {\n conversion_cookie_prefix: cookiePrefix,\n allow_enhanced_conversions: loadedComponents.includes('booking'),\n });\n },\n }),\n },\n\n [PERFORMANCE.GTM]: {\n init: ({ idGTM: id } = {}) => ({\n src: `https://www.googletagmanager.com/gtm.js?id=${id}`,\n onLoad: () => {\n window.dataLayer = window.dataLayer || [];\n dataLayerPush({ event: 'gtm.js', 'gtm.start': new Date().getTime() });\n },\n }),\n },\n\n [PERFORMANCE.FACEBOOK]: {\n components: ['rates', 'checkout', 'booking'],\n },\n\n [PERFORMANCE.MIRAI]: {\n init: ({ hotel: { id } = {}, instanceId, loadedComponents, place: { id: [hotelId] = [], isHotel } = {} } = {}) => ({\n src: `https://metas.mirai.com/connectivity/gtag/b2c?hotelId=${\n isHotel && hotelId && !loadedComponents.includes('finder') ? hotelId : id || instanceId\n }`,\n }),\n once: true,\n },\n\n [PERFORMANCE.THE_HOTEL_NETWORK]: {\n init: ({ id = '7' }) => ({\n src: `https://www.thehotelsnetwork.com/js/hotel_price_widget.js?partnership_id=${id}`,\n }),\n },\n};\n\nexport { SCRIPTS };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PerformanceManager.scripts.js","names":["_helpers","require","_Core","MAC_HOTELS_IDS","SCRIPTS","exports","PERFORMANCE","AFFILIRED","components","init","src","once","ANALYTICS","idAnalytics","index","instanceId","arguments","length","undefined","includes","concat","onLoad","window","dataLayer","gtag","push","Date","linker","accept_incoming","BING","_ref","idBing","uetq","UET","ti","q","ad_storage","COMPARE","document","addEventListener","CmprmInit","InitMirai","GOOGLE_ADS","conversionLabel","cookiePrefix","idAdwords","loadedComponents","conversion_cookie_prefix","allow_enhanced_conversions","GTM","idGTM","id","dataLayerPush","event","getTime","FACEBOOK","MIRAI","hotel","place","hotelId","isHotel","THE_HOTEL_NETWORK","_ref2"],"sources":["../../../src/contexts/PerformanceManager/PerformanceManager.scripts.js"],"sourcesContent":["import { dataLayerPush } from './helpers';\nimport { PERFORMANCE } from '../../Core.constants';\n\nconst MAC_HOTELS_IDS = ['66392129', '100122077', '100131206', '500163', '501196'];\n\nconst SCRIPTS = {\n [PERFORMANCE.AFFILIRED]: {\n components: ['booking'],\n init: () => ({\n src: 'https://scripts.affilired.com/v2/tracking.php',\n }),\n once: true,\n },\n\n [PERFORMANCE.ANALYTICS]: {\n init: ({ idAnalytics, index, instanceId } = {}) => ({\n src: MAC_HOTELS_IDS.includes(instanceId)\n ? `/metricsga4${index > 0 ? index + 1 : ''}/`\n : `https://www.googletagmanager.com/gtag/js?id=${idAnalytics}`,\n onLoad: () => {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function () {\n window.dataLayer.push(arguments);\n };\n window.gtag('js', new Date());\n window.gtag('config', idAnalytics, { linker: { accept_incoming: true } });\n },\n }),\n },\n\n [PERFORMANCE.BING]: {\n init: ({ idBing }) => ({\n src: '//bat.bing.com/bat.js',\n onLoad: () => {\n const uetq = `uetq_${idBing}`;\n // eslint-disable-next-line no-undef\n window[uetq] = new UET({ ti: idBing, q: window[uetq] || [] });\n window[uetq].push('consent', 'update', { ad_storage: 'granted' });\n window[uetq].push('pageLoad');\n },\n }),\n },\n\n [PERFORMANCE.COMPARE]: {\n components: ['rates', 'checkout', 'booking'],\n init: () => ({\n src: 'https://static.hotelmonitor.info/CmprmInit-min.js',\n onLoad: () => {\n document.addEventListener('CmprmInitLoaded', window.CmprmInit.InitMirai, false);\n },\n }),\n once: true,\n },\n\n [PERFORMANCE.GOOGLE_ADS]: {\n init: ({ conversionLabel, cookiePrefix, idAdwords, index, instanceId, loadedComponents = [] } = {}) => ({\n src:\n (instanceId === '10030559' && conversionLabel === 's54-COOp2_sbEOqysPkD') ||\n (['500255', '100376306', '100376307'].includes(instanceId) &&\n conversionLabel === 'rIhpCMvVzo8DEKDAwr8C' &&\n idAdwords === '670081056') ||\n MAC_HOTELS_IDS.includes(instanceId)\n ? `/metrics${index > 0 ? index + 1 : ''}/`\n : `https://www.googletagmanager.com/gtag/js?id=AW-${idAdwords}`,\n onLoad: () => {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function () {\n window.dataLayer.push(arguments);\n };\n window.gtag('config', `AW-${idAdwords}`, {\n conversion_cookie_prefix: cookiePrefix,\n allow_enhanced_conversions: loadedComponents.includes('booking'),\n });\n },\n }),\n },\n\n [PERFORMANCE.GTM]: {\n init: ({ idGTM: id, index, instanceId } = {}) => ({\n src: MAC_HOTELS_IDS.includes(instanceId)\n ? `/metricsgtm${index > 0 ? index + 1 : ''}/`\n : `https://www.googletagmanager.com/gtm.js?id=${id}`,\n onLoad: () => {\n window.dataLayer = window.dataLayer || [];\n dataLayerPush({ event: 'gtm.js', 'gtm.start': new Date().getTime() });\n },\n }),\n },\n\n [PERFORMANCE.FACEBOOK]: {\n components: ['rates', 'checkout', 'booking'],\n },\n\n [PERFORMANCE.MIRAI]: {\n init: ({ hotel: { id } = {}, instanceId, loadedComponents, place: { id: [hotelId] = [], isHotel } = {} } = {}) => ({\n src: `https://metas.mirai.com/connectivity/gtag/b2c?hotelId=${\n isHotel && hotelId && !loadedComponents.includes('finder') ? hotelId : id || instanceId\n }`,\n }),\n once: true,\n },\n\n [PERFORMANCE.THE_HOTEL_NETWORK]: {\n init: ({ id = '7' }) => ({\n src: `https://www.thehotelsnetwork.com/js/hotel_price_widget.js?partnership_id=${id}`,\n }),\n },\n};\n\nexport { SCRIPTS };\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirai/core",
3
- "version": "0.4.586",
3
+ "version": "0.4.588",
4
4
  "source": "src/index.js",
5
5
  "repository": "https://gitlab.com/miraicorp/dev/frontend/core",
6
6
  "author": "JΛVI <hello@soyjavi.com>",