@webex/calling 3.10.0-next.14 → 3.10.0-next.16
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.
- package/dist/CallSettings/UcmBackendConnector.js +67 -19
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +104 -15
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallingClient/constants.js +3 -2
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/registration/register.js +434 -337
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +245 -181
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/constants.js +3 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/module/CallSettings/UcmBackendConnector.js +20 -6
- package/dist/module/CallingClient/constants.js +1 -0
- package/dist/module/CallingClient/registration/register.js +65 -1
- package/dist/module/common/constants.js +2 -0
- package/dist/types/CallSettings/UcmBackendConnector.d.ts +1 -0
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +4 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +6 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +6 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +2 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","fn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","mockResponse","getMockRequestTemplate","uri","concat","primary","body","userId","internal","device","clientDeviceUri","url","serviceData","ccMockResponse","failurePayload","statusCode","mockPostResponse","headers","trackingid","failurePayload429One","failurePayload429Two","failurePayload429Three","failurePayload429Four","successPayload","reg","restartSpy","restoreSpy","postRegistrationSpy","deregisterSpy","failoverSpy","retry429Spy","metricSpy","setupRegistration","mockServiceData","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","metricManager","beforeEach","afterEach","request","clearAllTimers","useRealTimers","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","deviceId","objectContaining","file","REGISTRATION_FILE","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_context5","isCCFlow","_callee6","_context6","_callee7","_context7","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_callee8","_context8","_callee9","_context9","_callee0","failurePayload429Small","_context0","setActiveMobiusUrl","RECONNECT_ON_FAILURE_UTIL","reconnectOnFailure","toHaveBeenCalledTimes","toHaveBeenCalledWith","_callee1","attemptRegistrationWithServersSpy","_context1","_callee10","_context10","_callee11","_context11","handleConnectionRestoration","METHODS","HANDLE_CONNECTION_RESTORATION","_callee12","_context12","_callee13","_context13","getActiveMobiusUrl","_callee14","_context14","CONTACT_CENTER","_callee15","_context15","isPrimaryActiveSpy","_callee16","_context16","mockReturnValue","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee17","_context17","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","toBe","REG_429_RETRY_UTIL","failbackTimer","_callee18","_context18","FAILBACK_UTIL","_callee19","finalErrorPayload","_context19","_callee20","_context20","_callee21","_context21","_callee22","_context22","callManager","createCall","_keys","getActiveCalls","_callee23","_context23","beforeEachSetupForKeepalive","_ref24","_callee24","_context24","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","calls","_values","end","_callee25","postMessageSpy","_context25","Worker","prototype","type","accessToken","any","String","deviceUrl","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee26","worker","_context26","err","keepAliveRetryCount","_callee27","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_context27","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","_callee28","_context28","toBeUndefined","KEEPALIVE_SUCCESS","_callee29","_context29","_callee30","clearKeepaliveSpy","_context30","toHaveBeenCalled","_callee31","clearTimerSpy","threshold","_context31","lastCalledWith","keepaliveTimer","callCollection","CALLS_CLEARED_HANDLER_UTIL","_callee32","handle404CbSpy","registerSpy","_context32","KEEPALIVE_UTIL","_callee33","_reg$deviceInfo$devic","keepaliveSpy","_context33","deviceInfo","_callee34","_context34","setStatus","startFailoverTimer","_callee35","_context35","_callee36","pingSuccessPayload","status","_context36","isPrimaryActive","sent","_callee37","pingFailurePayload","_context37"],"sources":["register.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\nimport {Mutex} from 'async-mutex';\nimport {createRegistration} from './register';\nimport {\n getMobiusDiscoveryResponse,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport * as utils from '../../common/Utils';\nimport log from '../../Logger';\nimport {LOGGER} from '../../Logger/types';\nimport {URL, mockDeleteResponse, mockPostResponse} from './registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {ERROR_TYPE} from '../../Errors/types';\nimport {\n CALLS_CLEARED_HANDLER_UTIL,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_REHOMING_INTERVAL_MIN,\n FAILBACK_UTIL,\n FAILOVER_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REGISTRATION_UTIL,\n REG_429_RETRY_UTIL,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n SEC_TO_MSEC_MFACTOR,\n RECONNECT_ON_FAILURE_UTIL,\n METHODS,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS} from '../line/types';\nimport {createLineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE} from '../../Metrics/types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'log');\nconst infoSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\njest.spyOn(utils, 'uploadLogs').mockResolvedValue();\ndescribe('Registration Tests', () => {\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n const lineEmitter = jest.fn();\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n\n const mockResponse = {\n ...getMockRequestTemplate(),\n uri: `${mobiusUris.primary[0]}device`,\n body: {\n userId: webex.internal.device.userId,\n clientDeviceUri: webex.internal.device.url,\n serviceData: {\n domain: '',\n indicator: 'calling',\n },\n },\n };\n\n const ccMockResponse = {\n ...mockResponse,\n body: {\n ...mockResponse.body,\n serviceData: {\n domain: '',\n indicator: 'contactcenter',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n const failurePayload429One = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 42,\n },\n });\n\n const failurePayload429Two = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 33,\n },\n });\n\n const failurePayload429Three = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 136,\n },\n });\n\n const failurePayload429Four = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 81,\n },\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n let reg: IRegistration;\n let restartSpy;\n let restoreSpy;\n let postRegistrationSpy;\n let deregisterSpy;\n let failoverSpy;\n let retry429Spy;\n let metricSpy;\n\n const setupRegistration = (mockServiceData) => {\n const mutex = new Mutex();\n reg = createRegistration(webex, mockServiceData, mutex, lineEmitter, LOGGER.INFO);\n reg.setMobiusServers(mobiusUris.primary, mobiusUris.backup);\n jest.clearAllMocks();\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n deregisterSpy = jest.spyOn(reg, 'deregister');\n failoverSpy = jest.spyOn(reg, 'startFailoverTimer');\n retry429Spy = jest.spyOn(reg, 'handle429Retry');\n metricSpy = jest.spyOn(reg.metricManager, 'submitRegistrationMetric');\n };\n\n beforeEach(() => {\n setupRegistration(MockServiceData);\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('verify successful registration', async () => {\n webex.request.mockReturnValueOnce({\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.CONNECTING);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.REGISTERED, mockPostResponse);\n\n // Check that log.log was called for successful registration\n expect(logSpy).toBeCalledWith(\n `Registration successful for deviceId: ${mockPostResponse.device.deviceId} userId: ${mockPostResponse.userId} responseTrackingId: webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'register',\n })\n );\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n headers: {},\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n const error = createLineError(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n {},\n ERROR_TYPE.TOKEN_ERROR,\n RegistrationStatus.INACTIVE\n );\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.ERROR, undefined, error);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n '',\n undefined,\n error\n );\n });\n\n it('verify failure registration 403-101', async () => {\n webex.request\n .mockRejectedValueOnce({\n body: {\n userId: mockPostResponse.userId,\n errorCode: 101,\n devices: [mockPostResponse.device],\n },\n statusCode: 403,\n })\n .mockResolvedValueOnce({\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(global.fetch).toBeCalledOnceWith(mockPostResponse.device.uri, {\n method: 'DELETE',\n headers: expect.anything(),\n });\n\n expect(warnSpy).toBeCalledWith('User device limit exceeded', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restored successfully.', expect.anything());\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(4);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(3, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.REGISTERED, mockPostResponse);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'UNKNOWN',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n describe('429 handling tests', () => {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n const logSpy = jest.spyOn(log, 'log');\n\n beforeEach(() => {\n mobiusUris.backup.pop();\n });\n\n afterEach(() => {\n mobiusUris.backup.push(URL);\n jest.clearAllMocks();\n });\n\n it('handle 429 received during initial registration failure and first attempt with primary', async () => {\n jest.useFakeTimers();\n logSpy.mockClear();\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration failed with 429 with higher retyrAfter, interval should be updtaed with retryAfter.\n * The first attempt to register with primary should be made after retryAfter seconds.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'triggerRegistration'\n );\n expect(reg.retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n /* The first attempt to register with primary failed with 429 with lower retryAfter, interval should remain the same.\n * The second attempt to register with primary will be scheduled as per the interval calculated.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429Two.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(reg.retryAfter).toEqual(failurePayload429Two.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(43 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* The second attempt to register with primary failed with 500, the retryAfter should be undefined.\n * The third attempt to register with primary will be scheduled as per the interval calculated.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined);\n expect(failoverSpy).toBeCalledOnceWith(3, 85);\n });\n\n it('handle 429 received with higher retryAfter than the interval when interval with elapsedTime is already reaching threshold timer so we failover immediately', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 3`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while the last attempt for primary', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration and first 2 attempts with primary failed with non-final 5xx error responses.\n * Last attempt with primary failed with 429, the retryAfter should be used to schedule the next attempt but\n * the failover is triggered before the scheduling logic kicks in.\n */\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 41 seconds, number of attempts : 3`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(41 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(4, 114);\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(5, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while failing over to backup server for CC flow', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n /* Failover to backup server failed with 429, the retryAfter is used to schedule the next attempt with backup server.\n * Interval will be updated with retryAfter as interval calculated is less than the retryAfter.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with backup servers in ${failurePayload429One.headers['retry-after']} seconds.`,\n loggerContext\n );\n\n webex.request.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('checking the retryAfter exceeding the threshold timers in first attempt itself', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(40);\n webex.request.mockRejectedValueOnce(failurePayload429Three);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Three.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n });\n\n it('checking the retryAfter exceeding the threshold timers in later attempts', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(39)\n .mockReturnValueOnce(43);\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Four)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 43 seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Four.headers['retry-after']} seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n });\n\n describe('restorePreviousRegistration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during reconnect', async () => {\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to set the retry-after value\n // Verify restore is invoked first and retry-after captured before scheduling\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during reconnect', async () => {\n // Setup: Register successfully with primary first\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore gets invoked, 429 with retry-after is observed and captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n it('should restart registration with primary if we get 429 while on backup', async () => {\n // Setup: Register successfully with primary first\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.backup[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore path taken first and 429 handling captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n // No failover scheduling expected in this path\n expect(failoverSpy).not.toBeCalled();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.backup[0]]\n );\n // Immediately try primary servers when retry-after >= 60 seconds on backup\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n });\n });\n\n describe('handleConnectionRestoration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during handleConnectionRestoration', async () => {\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during handleConnectionRestoration', async () => {\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(retry429Spy).toBeCalledOnceWith(100, METHODS.HANDLE_CONNECTION_RESTORATION);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n });\n\n describe('Registration failover tests', () => {\n it('verify unreachable primary with reachable backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(metricSpy).toHaveBeenNthCalledWith(\n 3,\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n FAILOVER_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('cc: verify unreachable primary with reachable backup server', async () => {\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n });\n\n it('verify unreachable primary and backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /*\n * 2 calls for primary -> initial and after timer expiry.\n * 2 calls for each backup entry -> 2 * 2 = 4.\n * So a total of 6 calls to webex.request and handleErrors\n */\n expect(webex.request).toBeCalledTimes(6);\n expect(handleErrorSpy).toBeCalledTimes(6);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[1]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n });\n\n describe('Registration failback tests', () => {\n let isPrimaryActiveSpy;\n beforeEach(async () => {\n isPrimaryActiveSpy = jest.spyOn(reg, 'isPrimaryActive');\n isPrimaryActiveSpy.mockReturnValue(true);\n /* keep keepalive as active so that it wont interfere with the failback tests */\n jest.useFakeTimers();\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n reg.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n reg.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n\n /* These 2 calls to handleErrorSpy are for primary after which it fails over to backup */\n expect(handleErrorSpy).toBeCalledTimes(2);\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n });\n\n it('verify 429 error with failback to primary after initial registration with backup: Restore failure', async () => {\n // delete should be successful\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n // Mock to fail twice with 429 (once for executeFailback, once for restorePreviousRegistration)\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload429Two);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n jest.advanceTimersByTime(10000);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429Two.headers['retry-after'],\n 'executeFailback'\n );\n // After handling 429 during failback, the counter is incremented to 1\n expect(reg.failback429RetryAttempts).toBe(1);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n // restartRegistration is not called immediately because 429 with retry-after < 60\n // schedules a delayed retry instead\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).not.toBe(undefined); // Timer is set in handle429Retry\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure', async () => {\n postRegistrationSpy.mockRejectedValue(failurePayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure with final error', async () => {\n const finalErrorPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n body: mockPostResponse,\n });\n postRegistrationSpy.mockClear();\n postRegistrationSpy\n .mockRejectedValue(finalErrorPayload)\n .mockRejectedValueOnce(failurePayload);\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore success', async () => {\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify successful failback to primary after initial registration with backup', async () => {\n postRegistrationSpy.mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url must now match with the primary url */\n expect(deregisterSpy).toBeCalledOnceWith();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.primary[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.failbackTimer).toBe(undefined);\n expect(restoreSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(mockPostResponse.rehomingIntervalMin);\n expect(reg.rehomingIntervalMax).toBe(mockPostResponse.rehomingIntervalMax);\n });\n\n it('verify unsuccessful failback attempt due to active call', async () => {\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(deregisterSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(infoSpy).toBeCalledWith(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback attempt due to primary server being down', async () => {\n isPrimaryActiveSpy.mockReturnValue(false);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(deregisterSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const beforeEachSetupForKeepalive = async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n };\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n reg.clearKeepaliveTimer();\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n\n await beforeEachSetupForKeepalive();\n\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n\n reg.webWorker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\n\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_FAILURE', err: {statusCode: 503}, keepAliveRetryCount: 1},\n } as MessageEvent);\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n // Run any necessary setup for keepalive\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Clear previous event emissions\n lineEmitter.mockClear();\n\n // Assume registration is active\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n // Use fake timers to trigger keepalive initialization\n jest.useFakeTimers();\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n\n // Simulate the worker sending a KEEPALIVE_FAILURE message with retry count at threshold.\n const RETRY_COUNT_THRESHOLD = reg.isCCFlow ? 4 : 5;\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: RETRY_COUNT_THRESHOLD,\n },\n };\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n\n jest.useRealTimers();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 5 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.webWorker).toBeDefined();\n\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const url = 'https://mobius-dfw.webex.com/api/v1/calling/web/';\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 5,\n },\n } as MessageEvent);\n\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(reconnectSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n\n // Advance timers and flush any remaining promises.\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n // reconnectSpy should have been called only once.\n expect(reconnectSpy).toBeCalledTimes(1);\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n // Active Mobius URL should remain unchanged.\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(handleErrorSpy).toBeCalledTimes(3);\n\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n // In a complete failure‐then-recovery scenario, we expect another failure event to have been handled.\n // For that, simulate a second failure event on the new worker.\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledTimes(4);\n\n // And then re-register successfully:\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n });\n\n it('cc: verify failover to backup server after 4 keep alive failure with primary server', async () => {\n // Register with contact center service\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n await beforeEachSetupForKeepalive();\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n // Spy on clearKeepaliveTimer and simulate reconnectOnFailure behavior\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n // Simulate a KEEPALIVE_FAILURE message from the worker with a retry count equal to threshold (4 for CC)\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 4,\n },\n } as MessageEvent);\n\n // Wait for any asynchronous actions to complete\n await flushPromises();\n\n // Verify that the keepalive timer was cleared and reconnectOnFailure was triggered\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(reconnectSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n\n // Verify that the active Mobius URL has been updated to the backup server and registration is active\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Simulate an active call.\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const threshold = reg.isCCFlow ? 4 : 5;\n\n // Simulate a KEEPALIVE_FAILURE event with a 503 error at threshold.\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent;\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n // At this point, clearKeepaliveTimer was called so the worker is terminated.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n expect(reconnectSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(true);\n expect(infoSpy).toBeCalledWith(\n 'Active call(s) present, deferred reconnect till call cleanup.',\n {file: REGISTRATION_FILE, method: expect.any(String)}\n );\n\n reconnectSpy.mockClear();\n\n // Now simulate call cleanup.\n reg.callManager.callCollection = {};\n webex.request.mockResolvedValueOnce(successPayload);\n\n // Call reconnectOnFailure manually. With no active calls, this should trigger re-registration.\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n await flushPromises();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n // After re-registration, registration status becomes ACTIVE and a new worker is created.\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n expect(reconnectSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n });\n\n it('checks for keep-alive failure with final error: 404', async () => {\n await beforeEachSetupForKeepalive();\n webex.request.mockResolvedValueOnce(successPayload);\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const handle404CbSpy = jest.spyOn(reg, 'handle404KeepaliveFailure');\n const registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 404 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith(\n {statusCode: 404},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.ERROR, undefined, expect.anything());\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(2);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n\n expect(handle404CbSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(registerSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n });\n\n it('checks for keep-alive failure with 429', async () => {\n await beforeEachSetupForKeepalive();\n const keepaliveSpy = jest.spyOn(reg, 'startKeepaliveTimer');\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 429, headers: {'retry-after': 20}},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 429 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith(\n {statusCode: 429, headers: {'retry-after': 20}},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n expect(retry429Spy).toBeCalledOnceWith(20, 'startKeepaliveTimer');\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n\n jest.advanceTimersByTime(20 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(keepaliveSpy).toBeCalledOnceWith(\n reg.deviceInfo.device?.uri as string,\n reg.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n expect(logSpy).toBeCalledWith('Resuming keepalive after 20 seconds', {\n file: REGISTRATION_FILE,\n method: 'handle429Retry',\n });\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n });\n\n it('ensure retryAfter is set when 429 occurs during failover retry', async () => {\n await beforeEachSetupForKeepalive();\n // Simulate loss of registration so failover path attempts a new registration\n reg.clearKeepaliveTimer();\n reg.setStatus(RegistrationStatus.INACTIVE);\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // Make the failover interval deterministic and simulate 429 on the failover attempt\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(33);\n webex.request.mockRejectedValueOnce(failurePayload429One);\n\n // Directly schedule the failover attempt\n await (reg as any).startFailoverTimer();\n\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect((reg as any).retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n\n jest.useRealTimers();\n });\n\n it('sets retryAfter when reconnectOnFailure caller receives 429 after keepalive threshold miss', async () => {\n await beforeEachSetupForKeepalive();\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // On reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL) first restore attempt, make registration respond with 429 (retry-after: 20)\n webex.request.mockRejectedValueOnce({\n statusCode: 429,\n body: mockPostResponse,\n headers: {'retry-after': 20},\n });\n\n // Trigger the keepalive failure at threshold to route to reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL)\n const threshold = reg.isCCFlow ? 4 : 5;\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n // handle429Retry is called with caller 'reconnectOnFailure' → else branch executes and sets retryAfter\n expect(retry429Spy).toBeCalledOnceWith(20, RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n });\n\n describe('Primary server status checks', () => {\n it('success: primary server status to be up', async () => {\n const pingSuccessPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n });\n webex.request.mockResolvedValue(pingSuccessPayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(true);\n });\n\n it('failed: primary server status to be down', async () => {\n const pingFailurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n });\n webex.request.mockResolvedValue(pingFailurePayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(false);\n });\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAKA,IAAAG,MAAA,GAAAH,OAAA;AAMA,IAAAI,KAAA,GAAAC,uBAAA,CAAAL,OAAA;AACA,IAAAM,OAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,iBAAA,GAAAT,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAX,OAAA;AACA,IAAAY,UAAA,GAAAZ,OAAA;AAiBA,IAAAa,OAAA,GAAAb,OAAA;AACA,IAAAc,UAAA,GAAAd,OAAA;AAEA,IAAAe,OAAA,GAAAf,OAAA;AAA0E,SAAAK,wBAAAW,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAb,uBAAA,YAAAA,wBAAAW,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,EAAA,IAAAf,CAAA,gBAAAe,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,EAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,EAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,EAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,EAAA,IAAAf,CAAA,CAAAe,EAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAoB,aAAA,CAAArB,CAAA,OAAAsB,6BAAA,QAAAhB,CAAA,GAAAgB,6BAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAgB,gCAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAU,MAAA,CAAA7B,CAAA,OAAA8B,OAAA,WAAA5B,CAAA,QAAA6B,gBAAA,CAAAtB,OAAA,EAAAV,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAA8B,iCAAA,GAAAC,wBAAA,CAAAlC,CAAA,EAAAiC,iCAAA,CAAAhC,CAAA,KAAAmB,OAAA,CAAAU,MAAA,CAAA7B,CAAA,GAAA8B,OAAA,WAAA5B,CAAA,IAAAe,sBAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAgB,gCAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA,IAxC1E;AA0CA,IAAMmC,KAAK,GAAG,IAAAC,2BAAiB,EAAC,CAAC;AACjC,IAAMC,eAAe,GAAG;EACtBC,SAAS,EAAEC,uBAAgB,CAACC,OAAO;EACnCC,MAAM,EAAE;AACV,CAAC;AACD,IAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACC,eAAG,EAAE,KAAK,CAAC;AACrC,IAAMC,OAAO,GAAGH,IAAI,CAACC,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;AACvC,IAAME,OAAO,GAAGJ,IAAI,CAACC,KAAK,CAACC,eAAG,EAAE,MAAM,CAAC;AACvC,IAAMG,cAAc,GAAGL,IAAI,CAACC,KAAK,CAACxD,KAAK,EAAE,0BAA0B,CAAC;AACpEuD,IAAI,CAACC,KAAK,CAACxD,KAAK,EAAE,YAAY,CAAC,CAAC6D,iBAAiB,CAAC,CAAC;AACnDC,QAAQ,CAAC,oBAAoB,EAAE,YAAM;EACnC,IAAMC,uBAAuB,GAAGC,OAAO,CAACC,QAAQ;EAChD,SAASC,aAAaA,CAAA,EAAG;IACvB,OAAO,IAAAC,QAAA,CAAA7C,OAAA,CAAY,UAAC8C,OAAO,EAAK;MAC9BL,uBAAuB,CAACK,OAAO,CAAC;IAClC,CAAC,CAAC;EACJ;EAEA,IAAMC,WAAW,GAAGd,IAAI,CAACe,EAAE,CAAC,CAAC;EAE7B,IAAMC,UAAU,GAAG,IAAAC,wBAAgB,EAAC,IAAAC,oCAA0B,EAAC,CAAC,EAAEC,qBAAG,CAAC;EAEtE,IAAMC,YAAY,GAAApC,aAAA,CAAAA,aAAA,KACb,IAAAqC,gCAAsB,EAAC,CAAC;IAC3BC,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,WAAQ;IACrCC,IAAI,EAAE;MACJC,MAAM,EAAElC,KAAK,CAACmC,QAAQ,CAACC,MAAM,CAACF,MAAM;MACpCG,eAAe,EAAErC,KAAK,CAACmC,QAAQ,CAACC,MAAM,CAACE,GAAG;MAC1CC,WAAW,EAAE;QACXjC,MAAM,EAAE,EAAE;QACVH,SAAS,EAAE;MACb;IACF;EAAC,EACF;EAED,IAAMqC,cAAc,GAAAhD,aAAA,CAAAA,aAAA,KACfoC,YAAY;IACfK,IAAI,EAAAzC,aAAA,CAAAA,aAAA,KACCoC,YAAY,CAACK,IAAI;MACpBM,WAAW,EAAE;QACXjC,MAAM,EAAE,EAAE;QACVH,SAAS,EAAE;MACb;IAAC;EACF,EACF;EAED,IAAMsC,cAAc,GAAkC;IACpDC,UAAU,EAAE,GAAG;IACfT,IAAI,EAAEU,kCAAgB;IACtBC,OAAO,EAAE;MACPC,UAAU,EAAE;IACd;EACF,CAAE;EAEF,IAAMC,oBAAoB,GAAkC;IAC1DJ,UAAU,EAAE,GAAG;IACfT,IAAI,EAAEU,kCAAgB;IACtBC,OAAO,EAAE;MACP,aAAa,EAAE;IACjB;EACF,CAAE;EAEF,IAAMG,oBAAoB,GAAkC;IAC1DL,UAAU,EAAE,GAAG;IACfT,IAAI,EAAEU,kCAAgB;IACtBC,OAAO,EAAE;MACP,aAAa,EAAE;IACjB;EACF,CAAE;EAEF,IAAMI,sBAAsB,GAAkC;IAC5DN,UAAU,EAAE,GAAG;IACfT,IAAI,EAAEU,kCAAgB;IACtBC,OAAO,EAAE;MACP,aAAa,EAAE;IACjB;EACF,CAAE;EAEF,IAAMK,qBAAqB,GAAkC;IAC3DP,UAAU,EAAE,GAAG;IACfT,IAAI,EAAEU,kCAAgB;IACtBC,OAAO,EAAE;MACP,aAAa,EAAE;IACjB;EACF,CAAE;EAEF,IAAMM,cAAc,GAAkC;IACpDR,UAAU,EAAE,GAAG;IACfT,IAAI,EAAEU,kCAAgB;IACtBC,OAAO,EAAE;MACPC,UAAU,EAAE;IACd;EACF,CAAE;EAEF,IAAIM,GAAkB;EACtB,IAAIC,UAAU;EACd,IAAIC,UAAU;EACd,IAAIC,mBAAmB;EACvB,IAAIC,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIC,WAAW;EACf,IAAIC,SAAS;EAEb,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,eAAe,EAAK;IAC7C,IAAMC,KAAK,GAAG,IAAIC,iBAAK,CAAC,CAAC;IACzBX,GAAG,GAAG,IAAAY,4BAAkB,EAAC/D,KAAK,EAAE4D,eAAe,EAAEC,KAAK,EAAEvC,WAAW,EAAE0C,cAAM,CAACC,IAAI,CAAC;IACjFd,GAAG,CAACe,gBAAgB,CAAC1C,UAAU,CAACQ,OAAO,EAAER,UAAU,CAAC2C,MAAM,CAAC;IAC3D3D,IAAI,CAAC4D,aAAa,CAAC,CAAC;IACpBhB,UAAU,GAAG5C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;IACnDE,UAAU,GAAG7C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,6BAA6B,CAAC;IAC3DG,mBAAmB,GAAG9C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,kBAAkB,CAAC;IACzDI,aAAa,GAAG/C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,YAAY,CAAC;IAC7CK,WAAW,GAAGhD,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,oBAAoB,CAAC;IACnDM,WAAW,GAAGjD,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gBAAgB,CAAC;IAC/CO,SAAS,GAAGlD,IAAI,CAACC,KAAK,CAAC0C,GAAG,CAACkB,aAAa,EAAE,0BAA0B,CAAC;EACvE,CAAC;EAEDC,UAAU,CAAC,YAAM;IACfX,iBAAiB,CAACzD,eAAe,CAAC;EACpC,CAAC,CAAC;EAEFqE,SAAS,CAAC,YAAM;IACdvE,KAAK,CAACwE,OAAO,GAAGhE,IAAI,CAACe,EAAE,CAAC,CAAC;IACzBf,IAAI,CAACiE,cAAc,CAAC,CAAC;IACrBjE,IAAI,CAAC4D,aAAa,CAAC,CAAC;IACpB5D,IAAI,CAACkE,aAAa,CAAC,CAAC;EACtB,CAAC,CAAC;EAEFC,EAAE,CAAC,gCAAgC,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAC,QAAA;IAAA,OAAAF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACnCnF,KAAK,CAACwE,OAAO,CAACY,mBAAmB,CAAC;YAChCnD,IAAI,EAAEU,kCAAgB;YACtBC,OAAO,EAAE;cACPC,UAAU,EAAE;YACd;UACF,CAAC,CAAC;UAACoC,QAAA,CAAAE,IAAA;UAAA,OAEGhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;QAAA;UAE/BC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACe,kBAAkB,CAAA/F,aAAA,CAAAA,aAAA,KACnCoC,YAAY;YACf4D,MAAM,EAAE;UAAM,EACf,CAAC;UAEFF,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAC1DN,MAAM,CAAChE,WAAW,CAAC,CAACuE,eAAe,CAAC,CAAC,CAAC;UACtCP,MAAM,CAAChE,WAAW,CAAC,CAACwE,cAAc,CAACC,mBAAW,CAACC,UAAU,CAAC;UAC1DV,MAAM,CAAChE,WAAW,CAAC,CAACwE,cAAc,CAACC,mBAAW,CAACE,UAAU,EAAEtD,kCAAgB,CAAC;;UAE5E;UACA2C,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,0CAAA/D,MAAA,CACcY,kCAAgB,CAACP,MAAM,CAAC8D,QAAQ,eAAAnE,MAAA,CAAYY,kCAAgB,CAACT,MAAM,gFAC5GoD,MAAM,CAACa,gBAAgB,CAAC;YACtBC,IAAI,EAAEC,4BAAiB;YACvBb,MAAM,EAAE;UACV,CAAC,CACH,CAAC;UACDF,MAAM,CAAC5B,SAAS,CAAC,CAACoC,cAAc,CAC9BQ,oBAAY,CAACC,YAAY,EACzBC,kBAAU,CAACC,QAAQ,EACnBC,mBAAW,CAACC,UAAU,EACtBC,4BAAiB,EACjB,SAAS,EACT,sDAAsD,EACtDC,SAAS,EACTA,SACF,CAAC;QAAC;QAAA;UAAA,OAAA5B,QAAA,CAAA6B,IAAA;MAAA;IAAA,GAAA/B,OAAA;EAAA,CACH,GAAC;EAEFJ,EAAE,CAAC,6BAA6B,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAiC,SAAA;IAAA,IAAAC,KAAA;IAAA,OAAAnC,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAiC,SAAA;MAAA,kBAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;QAAA;UAChCnF,KAAK,CAACwE,OAAO,CAAC0C,iBAAiB,CAAC;YAC9BjF,IAAI,EAAEU,kCAAgB;YACtBD,UAAU,EAAE,GAAG;YACfE,OAAO,EAAE,CAAC;UACZ,CAAC,CAAC;UAACqE,SAAA,CAAA9B,IAAA;UAAA,OAEGhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;QAAA;UAE/BC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACe,kBAAkB,CAAA/F,aAAA,CAAAA,aAAA,KACnCoC,YAAY;YACf4D,MAAM,EAAE;UAAM,EACf,CAAC;UAEIwB,KAAK,GAAG,IAAAG,0BAAe,EAC3B,4EAA4E,EAC5E,CAAC,CAAC,EACFC,kBAAU,CAACC,WAAW,EACtB1B,yBAAkB,CAAC2B,QACrB,CAAC;UAEDhC,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;UAC5DhC,MAAM,CAAChE,WAAW,CAAC,CAACuE,eAAe,CAAC,CAAC,CAAC;UACtCP,MAAM,CAAChE,WAAW,CAAC,CAACiG,aAAa,CAAC,CAAC,EAAExB,mBAAW,CAACC,UAAU,CAAC;UAC5DV,MAAM,CAAChE,WAAW,CAAC,CAACiG,aAAa,CAAC,CAAC,EAAExB,mBAAW,CAACyB,KAAK,EAAEX,SAAS,EAAEG,KAAK,CAAC;UACzE1B,MAAM,CAAC5B,SAAS,CAAC,CAACoC,cAAc,CAC9BQ,oBAAY,CAACmB,kBAAkB,EAC/BjB,kBAAU,CAACC,QAAQ,EACnBC,mBAAW,CAACC,UAAU,EACtBC,4BAAiB,EACjB,SAAS,EACT,EAAE,EACFC,SAAS,EACTG,KACF,CAAC;QAAC;QAAA;UAAA,OAAAC,SAAA,CAAAH,IAAA;MAAA;IAAA,GAAAC,QAAA;EAAA,CACH,GAAC;EAEFpC,EAAE,CAAC,qCAAqC,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA4C,SAAA;IAAA,OAAA7C,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA2C,SAAA;MAAA,kBAAAA,SAAA,CAAAzC,IAAA,GAAAyC,SAAA,CAAAxC,IAAA;QAAA;UACxCnF,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAAC;YACrB3F,IAAI,EAAE;cACJC,MAAM,EAAES,kCAAgB,CAACT,MAAM;cAC/B2F,SAAS,EAAE,GAAG;cACdC,OAAO,EAAE,CAACnF,kCAAgB,CAACP,MAAM;YACnC,CAAC;YACDM,UAAU,EAAE;UACd,CAAC,CAAC,CACDqF,qBAAqB,CAAC;YACrBrF,UAAU,EAAE,GAAG;YACfT,IAAI,EAAEU,kCAAgB;YACtBC,OAAO,EAAE;cACPC,UAAU,EAAE;YACd;UACF,CAAC,CAAC;UAEJmF,MAAM,CAACC,KAAK,GAAGzH,IAAI,CAACe,EAAE,CAAC;YAAA,OAAMH,QAAA,CAAA7C,OAAA,CAAQ8C,OAAO,CAAC;cAAC6G,IAAI,EAAE,SAANA,IAAIA,CAAA;gBAAA,OAAQC,oCAAkB;cAAA;YAAA,CAAC,CAAC;UAAA,EAAc;UAE5F7C,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACyC,IAAI,CAAC;UAACT,SAAA,CAAAxC,IAAA;UAAA,OACnDhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;QAAA;UAC/BC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACqB,eAAe,CAAC,CAAC,CAAC;UACxCP,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BoC,YAAY;YACf4D,MAAM,EAAE;UAAM,EACf,CAAC;UACFF,MAAM,CAAC0C,MAAM,CAACC,KAAK,CAAC,CAAC1C,kBAAkB,CAAC5C,kCAAgB,CAACP,MAAM,CAACN,GAAG,EAAE;YACnE0D,MAAM,EAAE,QAAQ;YAChB5C,OAAO,EAAE0C,MAAM,CAAC+C,QAAQ,CAAC;UAC3B,CAAC,CAAC;UAEF/C,MAAM,CAAC1E,OAAO,CAAC,CAACkF,cAAc,CAAC,4BAA4B,EAAER,MAAM,CAAC+C,QAAQ,CAAC,CAAC,CAAC;UAC/E/C,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,CAAC,uCAAuC,EAAER,MAAM,CAAC+C,QAAQ,CAAC,CAAC,CAAC;UAC1F/C,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,CAAC,qCAAqC,EAAER,MAAM,CAAC+C,QAAQ,CAAC,CAAC,CAAC;UAExF/C,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAC1DN,MAAM,CAAChE,WAAW,CAAC,CAACuE,eAAe,CAAC,CAAC,CAAC;UACtCP,MAAM,CAAChE,WAAW,CAAC,CAACiG,aAAa,CAAC,CAAC,EAAExB,mBAAW,CAACC,UAAU,CAAC;UAC5DV,MAAM,CAAChE,WAAW,CAAC,CAACiG,aAAa,CAAC,CAAC,EAAExB,mBAAW,CAACuC,YAAY,CAAC;UAC9DhD,MAAM,CAAChE,WAAW,CAAC,CAACiG,aAAa,CAAC,CAAC,EAAExB,mBAAW,CAACC,UAAU,CAAC;UAC5DV,MAAM,CAAChE,WAAW,CAAC,CAACiG,aAAa,CAAC,CAAC,EAAExB,mBAAW,CAACE,UAAU,EAAEtD,kCAAgB,CAAC;UAC9E2C,MAAM,CAAC5B,SAAS,CAAC,CAACoC,cAAc,CAC9BQ,oBAAY,CAACC,YAAY,EACzBC,kBAAU,CAACC,QAAQ,EACnBC,mBAAW,CAACC,UAAU,EACtBC,4BAAiB,EACjB,SAAS,EACT,sDAAsD,EACtDC,SAAS,EACTA,SACF,CAAC;QAAC;QAAA;UAAA,OAAAc,SAAA,CAAAb,IAAA;MAAA;IAAA,GAAAY,QAAA;EAAA,CACH,GAAC;EAEF3G,QAAQ,CAAC,oBAAoB,EAAE,YAAM;IACnC,IAAMwH,aAAa,GAAG;MACpBnC,IAAI,EAAEC,4BAAiB;MACvBb,MAAM,EAAEgD;IACV,CAAC;IACD,IAAMjI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACC,eAAG,EAAE,KAAK,CAAC;IAErC4D,UAAU,CAAC,YAAM;MACf9C,UAAU,CAAC2C,MAAM,CAACsE,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFlE,SAAS,CAAC,YAAM;MACd/C,UAAU,CAAC2C,MAAM,CAAC7E,IAAI,CAACqC,qBAAG,CAAC;MAC3BnB,IAAI,CAAC4D,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFO,EAAE,CAAC,wFAAwF,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA4D,SAAA;MAAA,OAAA7D,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA2D,SAAA;QAAA,kBAAAA,SAAA,CAAAzD,IAAA,GAAAyD,SAAA,CAAAxD,IAAA;UAAA;YAC3F3E,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpBrI,MAAM,CAACsI,SAAS,CAAC,CAAC;YAClB7I,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAAC9E,oBAAoB,CAAC,CAC3C8E,qBAAqB,CAAC7E,oBAAoB,CAAC,CAC3C6E,qBAAqB,CAACnF,cAAc,CAAC;YAACkG,SAAA,CAAAxD,IAAA;YAAA,OAEnChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAE/B;AACN;AACA;;YAEMC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CACpCzC,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,EAC3C,qBACF,CAAC;YACD0C,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAAC5C,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3E0C,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC;YAExCD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,oCAAA/D,MAAA,CACQe,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,uCAC9E2F,aACF,CAAC;YAED9E,WAAW,CAACoF,SAAS,CAAC,CAAC;YACvBrF,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CACtBC,MAAM,CAACnG,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC,GAAGsG,8BACxD,CAAC;YAACP,SAAA,CAAAxD,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErB;AACN;AACA;;YAEMmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CACpCxC,oBAAoB,CAACH,OAAO,CAAC,aAAa,CAAC,EAC3C,oBACF,CAAC;YACD0C,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAAC3C,oBAAoB,CAACH,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3E0C,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAEzC,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC;YAEtFa,WAAW,CAACoF,SAAS,CAAC,CAAC;YACvBrF,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACP,SAAA,CAAAxD,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErB;AACN;AACA;YACMmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC0F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC9D,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAACmB,SAAS,CAAC;YACzCvB,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC;UAAC;UAAA;YAAA,OAAAoD,SAAA,CAAA7B,IAAA;QAAA;MAAA,GAAA4B,QAAA;IAAA,CAC/C,GAAC;IAEF/D,EAAE,CAAC,4JAA4J,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAuE,SAAA;MAAA,OAAAxE,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAsE,SAAA;QAAA,kBAAAA,SAAA,CAAApE,IAAA,GAAAoE,SAAA,CAAAnE,IAAA;UAAA;YAC/JhC,GAAG,CAACoG,QAAQ,GAAG,IAAI;YACnB/I,IAAI,CACDC,KAAK,CAAC0C,GAAG,EAAS,qBAAqB,CAAC,CACxCiC,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC;YAC1B5E,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpB5I,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAAC9E,oBAAoB,CAAC,CAC3CiF,qBAAqB,CAAC7E,cAAc,CAAC;YAACoG,SAAA,CAAAnE,IAAA;YAAA,OAEnChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAE/BC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAC7B,WAAW,CAAC,CAAC0F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC9D,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC;YAExCD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,uEAE3ByC,aACF,CAAC;YAED/E,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACI,SAAA,CAAAnE,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC0F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC9D,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC;YAE7CD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,uEAE3ByC,aACF,CAAC;YAEDhI,MAAM,CAACsI,SAAS,CAAC,CAAC;YAClBrF,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACI,SAAA,CAAAnE,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CACpCzC,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,EAC3C,oBACF,CAAC;YACD0C,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC;YAE7CD,MAAM,CAAC/E,MAAM,CAAC,CAAC4I,GAAG,CAACrD,cAAc,oCAAA/D,MAAA,CACIe,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,uCAC9E2F,aACF,CAAC;YAEDjD,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoCyC,aAAa,CAAC;YAEhFjD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAA0D,SAAA,CAAAxC,IAAA;QAAA;MAAA,GAAAuC,QAAA;IAAA,CAC5D,GAAC;IAEF1E,EAAE,CAAC,wDAAwD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA0E,SAAA;MAAA,OAAA3E,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAyE,SAAA;QAAA,kBAAAA,SAAA,CAAAvE,IAAA,GAAAuE,SAAA,CAAAtE,IAAA;UAAA;YAC3DhC,GAAG,CAACoG,QAAQ,GAAG,IAAI;YACnB/I,IAAI,CACDC,KAAK,CAAC0C,GAAG,EAAS,qBAAqB,CAAC,CACxCiC,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC;YAC1B5E,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpB5I,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAAC9E,oBAAoB,CAAC,CAC3CiF,qBAAqB,CAAC7E,cAAc,CAAC;YAACuG,SAAA,CAAAtE,IAAA;YAAA,OAEnChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAE/B;AACN;AACA;AACA;YACMC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAC7B,WAAW,CAAC,CAAC0F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC9D,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC;YAExCD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,uEAE3ByC,aACF,CAAC;YAED/E,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACO,SAAA,CAAAtE,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC0F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC9D,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC;YAE7CD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,uEAE3ByC,aACF,CAAC;YAEDhI,MAAM,CAACsI,SAAS,CAAC,CAAC;YAClBrF,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACO,SAAA,CAAAtE,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC0F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC9D,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC;YAE7CD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,uEAE3ByC,aACF,CAAC;YAED/E,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACO,SAAA,CAAAtE,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CACpCzC,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,EAC3C,oBACF,CAAC;YACD0C,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC;YAE9CD,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoCyC,aAAa,CAAC;YAEhFjD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAA6D,SAAA,CAAA3C,IAAA;QAAA;MAAA,GAAA0C,QAAA;IAAA,CAC5D,GAAC;IAEF7E,EAAE,CAAC,qEAAqE,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA4E,SAAA;MAAA,OAAA7E,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA2E,SAAA;QAAA,kBAAAA,SAAA,CAAAzE,IAAA,GAAAyE,SAAA,CAAAxE,IAAA;UAAA;YACxEhC,GAAG,CAACoG,QAAQ,GAAG,IAAI;YACnB/I,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpB5I,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAAC9E,oBAAoB,CAAC,CAC3CiF,qBAAqB,CAAC7E,cAAc,CAAC;YAACyG,SAAA,CAAAxE,IAAA;YAAA,OAEnChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAE/B7E,IAAI,CAACwI,mBAAmB,CAACY,0CAA+B,GAAGV,8BAAmB,CAAC;YAACS,SAAA,CAAAxE,IAAA;YAAA,OAC1EhE,aAAa,CAAC,CAAC;UAAA;YACrBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACqB,eAAe,CAAC,CAAC,CAAC;YACxCP,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;;YAEF;AACN;AACA;YACMsD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YAEFmB,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CACpCzC,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,EAC3C,oBACF,CAAC;YACD0C,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,2CAAA/D,MAAA,CACee,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,gBACrF2F,aACF,CAAC;YAEDvI,KAAK,CAACwE,OAAO,CAACqE,SAAS,CAAC,CAAC;YACzBrI,IAAI,CAACwI,mBAAmB,CACtBC,MAAM,CAACnG,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC,GAAGsG,8BACxD,CAAC;YAACS,SAAA,CAAAxE,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACe,kBAAkB,CAAA/F,aAAA,CAAAA,aAAA,KACnCoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YAEFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAA+D,SAAA,CAAA7C,IAAA;QAAA;MAAA,GAAA4C,QAAA;IAAA,CAC5D,GAAC;IAEF/E,EAAE,CAAC,gFAAgF,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA+E,SAAA;MAAA,OAAAhF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA8E,SAAA;QAAA,kBAAAA,SAAA,CAAA5E,IAAA,GAAA4E,SAAA,CAAA3E,IAAA;UAAA;YACnFhC,GAAG,CAACoG,QAAQ,GAAG,IAAI;YACnB/I,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpBpI,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAS,qBAAqB,CAAC,CAACiC,mBAAmB,CAAC,EAAE,CAAC;YACrEpF,KAAK,CAACwE,OAAO,CAACoD,qBAAqB,CAAC5E,sBAAsB,CAAC;YAAC8G,SAAA,CAAA3E,IAAA;YAAA,OAEtDhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAC/BC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC;YACxCD,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoCyC,aAAa,CAAC;YAEhFjD,MAAM,CAAC/E,MAAM,CAAC,CAAC4I,GAAG,CAACrD,cAAc,uEAE/ByC,aACF,CAAC;YAEDjD,MAAM,CAAC/E,MAAM,CAAC,CAAC4I,GAAG,CAACrD,cAAc,oCAAA/D,MAAA,CACIiB,sBAAsB,CAACJ,OAAO,CAAC,aAAa,CAAC,uCAChF2F,aACF,CAAC;YAEDjD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;UAAC;UAAA;YAAA,OAAA2F,SAAA,CAAAhD,IAAA;QAAA;MAAA,GAAA+C,QAAA;IAAA,CACJ,GAAC;IAEFlF,EAAE,CAAC,0EAA0E,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAiF,SAAA;MAAA,OAAAlF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAgF,SAAA;QAAA,kBAAAA,SAAA,CAAA9E,IAAA,GAAA8E,SAAA,CAAA7E,IAAA;UAAA;YAC7EhC,GAAG,CAACoG,QAAQ,GAAG,IAAI;YACnB/I,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpBpI,IAAI,CACDC,KAAK,CAAC0C,GAAG,EAAS,qBAAqB,CAAC,CACxCiC,mBAAmB,CAAC,EAAE,CAAC,CACvBA,mBAAmB,CAAC,EAAE,CAAC;YAC1BpF,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAAC9E,oBAAoB,CAAC,CAC3C8E,qBAAqB,CAAC3E,qBAAqB,CAAC,CAC5C8E,qBAAqB,CAAC7E,cAAc,CAAC;YAAC8G,SAAA,CAAA7E,IAAA;YAAA,OAEnChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAC/BC,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YAEFsD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC;YAExCD,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,oCAAA/D,MAAA,CACQe,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,uCAC9E2F,aACF,CAAC;YAED/E,WAAW,CAACqF,SAAS,CAAC,CAAC;YACvBrI,IAAI,CAACwI,mBAAmB,CACtBC,MAAM,CAACnG,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC,GAAGsG,8BACxD,CAAC;YAACc,SAAA,CAAA7E,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YACFsD,MAAM,CAAC9B,WAAW,CAAC,CAAC+B,kBAAkB,CAAC,CAAC,EAAEzC,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC;YAEtF0C,MAAM,CAAC/E,MAAM,CAAC,CAAC4I,GAAG,CAACrD,cAAc,uEAE/ByC,aACF,CAAC;YAEDjD,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoCyC,aAAa,CAAC;YAEhFjD,MAAM,CAAC/E,MAAM,CAAC,CAAC4I,GAAG,CAACrD,cAAc,oCAAA/D,MAAA,CACIkB,qBAAqB,CAACL,OAAO,CAAC,aAAa,CAAC,uCAC/E2F,aACF,CAAC;YAEDjD,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoCyC,aAAa,CAAC;YAEhFjD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsE,uBAAuB,CAAC,CAAC,EAAAtJ,aAAA,CAAAA,aAAA,KAC1CoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAAoE,SAAA,CAAAlD,IAAA;QAAA;MAAA,GAAAiD,QAAA;IAAA,CAC5D,GAAC;EACJ,CAAC,CAAC;EAEFhJ,QAAQ,CAAC,gDAAgD,EAAE,YAAM;IAC/DuD,UAAU,CAAC,YAAM;MACf9D,IAAI,CAACoI,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFrE,SAAS,CAAC,YAAM;MACd/D,IAAI,CAACiE,cAAc,CAAC,CAAC;MACrBjE,IAAI,CAAC4D,aAAa,CAAC,CAAC;MACpB5D,IAAI,CAACkE,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFC,EAAE,CAAC,+EAA+E,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAmF,SAAA;MAAA,IAAAC,sBAAA;MAAA,OAAArF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAmF,SAAA;QAAA,kBAAAA,SAAA,CAAAjF,IAAA,GAAAiF,SAAA,CAAAhF,IAAA;UAAA;YAClF/B,UAAU,GAAG5C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YACnDA,GAAG,CAACiH,kBAAkB,CAAC5I,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CAAC;YACvCkI,sBAAsB,GAAkC;cAC5DxH,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEoI,oCAAyB;cAC/BzH,OAAO,EAAE;gBACP,aAAa,EAAE;cACjB;YACF,CAAC;YACD5C,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC;YAACiH,SAAA,CAAAhF,IAAA;YAAA,OAEnChC,GAAG,CAACmH,kBAAkB,CAACD,oCAAyB,CAAC;UAAA;YAAE;YACzD;YACA/E,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC8E,oCAAyB,CAAC;YAChE/E,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAACmB,SAAS,CAAC,CAAC,CAAC;;YAE3CrG,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACiB,SAAA,CAAAhF,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAClC,UAAU,CAAC,CAACmH,qBAAqB,CAAC,CAAC,CAAC;YAC3CjF,MAAM,CAAClC,UAAU,CAAC,CAACoH,oBAAoB,CAACH,oCAAyB,CAAC;UAAC;UAAA;YAAA,OAAAF,SAAA,CAAArD,IAAA;QAAA;MAAA,GAAAmD,QAAA;IAAA,CACpE,GAAC;IAEFtF,EAAE,CAAC,+FAA+F,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA2F,SAAA;MAAA,IAAAC,iCAAA,EAAAR,sBAAA;MAAA,OAAArF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA2F,SAAA;QAAA,kBAAAA,SAAA,CAAAzF,IAAA,GAAAyF,SAAA,CAAAxF,IAAA;UAAA;YAClG;YACMuF,iCAAiC,GAAGlK,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gCAAgC,CAAC;YAC3FA,GAAG,CAACiH,kBAAkB,CAAC5I,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CAAC;YACvCkI,sBAAsB,GAAkC;cAC5DxH,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEoI,oCAAyB;cAC/BzH,OAAO,EAAE;gBACP,aAAa,EAAE;cACjB;YACF,CAAC;YACD5C,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC;YAACyH,SAAA,CAAAxF,IAAA;YAAA,OAEnChC,GAAG,CAACmH,kBAAkB,CAACD,oCAAyB,CAAC;UAAA;YAAE;YACzD;YACA/E,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC8E,oCAAyB,CAAC;YAChE/E,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CAAC,GAAG,EAAE8E,oCAAyB,CAAC;YACtE7J,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACyB,SAAA,CAAAxF,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACoF,iCAAiC,CAAC,CAACH,qBAAqB,CAAC,CAAC,CAAC;YAClEjF,MAAM,CAACoF,iCAAiC,CAAC,CAAC5B,uBAAuB,CAC/D,CAAC,EACDuB,oCAAyB,EACzB,CAAC7I,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CACxB,CAAC;YACD;YACAsD,MAAM,CAACoF,iCAAiC,CAAC,CAAC5B,uBAAuB,CAC/D,CAAC,EACDuB,oCAAyB,EACzB7I,UAAU,CAAC2C,MACb,CAAC;YACDmB,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACoB,qBAAqB,CAAC,CAAC,CAAC;YAC/CjF,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACqB,oBAAoB,CAACH,oCAAyB,CAAC;YACtE/E,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAACmB,SAAS,CAAC,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA8D,SAAA,CAAA7D,IAAA;QAAA;MAAA,GAAA2D,QAAA;IAAA,CAC5C,GAAC;IACF9F,EAAE,CAAC,wEAAwE,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA8F,UAAA;MAAA,IAAAF,iCAAA,EAAAR,sBAAA;MAAA,OAAArF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA6F,UAAA;QAAA,kBAAAA,UAAA,CAAA3F,IAAA,GAAA2F,UAAA,CAAA1F,IAAA;UAAA;YAC3E;YACA/B,UAAU,GAAG5C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YAC7CuH,iCAAiC,GAAGlK,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gCAAgC,CAAC;YAC3FA,GAAG,CAACiH,kBAAkB,CAAC5I,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC+F,sBAAsB,GAAkC;cAC5DxH,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEoI,oCAAyB;cAC/BzH,OAAO,EAAE;gBACP,aAAa,EAAE;cACjB;YACF,CAAC;YACD5C,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC,CACrC0E,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC;YAAC2H,UAAA,CAAA1F,IAAA;YAAA,OAEnChC,GAAG,CAACmH,kBAAkB,CAACD,oCAAyB,CAAC;UAAA;YAAE;YACzD;YACA/E,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC8E,oCAAyB,CAAC;YAChE/E,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CAAC,GAAG,EAAE8E,oCAAyB,CAAC;YACtE;YACA/E,MAAM,CAAC9B,WAAW,CAAC,CAAC2F,GAAG,CAACC,UAAU,CAAC,CAAC;YACpC5I,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAAC2B,UAAA,CAAA1F,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACoF,iCAAiC,CAAC,CAACH,qBAAqB,CAAC,CAAC,CAAC;YAClEjF,MAAM,CAACoF,iCAAiC,CAAC,CAAC5B,uBAAuB,CAC/D,CAAC,EACDuB,oCAAyB,EACzB,CAAC7I,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CACvB,CAAC;YACD;YACAmB,MAAM,CAAClC,UAAU,CAAC,CAACmH,qBAAqB,CAAC,CAAC,CAAC;YAC3CjF,MAAM,CAAClC,UAAU,CAAC,CAACoH,oBAAoB,CAACH,oCAAyB,CAAC;YAClE/E,MAAM,CAACoF,iCAAiC,CAAC,CAAC5B,uBAAuB,CAC/D,CAAC,EACDuB,oCAAyB,EACzB,CAAC7I,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CACxB,CAAC;UAAC;UAAA;YAAA,OAAA6I,UAAA,CAAA/D,IAAA;QAAA;MAAA,GAAA8D,SAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;EAEF7J,QAAQ,CAAC,gDAAgD,EAAE,YAAM;IAC/DuD,UAAU,CAAC,YAAM;MACf9D,IAAI,CAACoI,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFrE,SAAS,CAAC,YAAM;MACd/D,IAAI,CAACiE,cAAc,CAAC,CAAC;MACrBjE,IAAI,CAAC4D,aAAa,CAAC,CAAC;MACpB5D,IAAI,CAACkE,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFC,EAAE,CAAC,iGAAiG,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAgG,UAAA;MAAA,IAAAZ,sBAAA;MAAA,OAAArF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA+F,UAAA;QAAA,kBAAAA,UAAA,CAAA7F,IAAA,GAAA6F,UAAA,CAAA5F,IAAA;UAAA;YACpGhC,GAAG,CAACiH,kBAAkB,CAAC5I,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CAAC;YACvCkI,sBAAsB,GAAkC;cAC5DxH,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEoI,oCAAyB;cAC/BzH,OAAO,EAAE;gBACP,aAAa,EAAE;cACjB;YACF,CAAC;YACD5C,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC,CACrC0E,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC;YAAC6H,UAAA,CAAA5F,IAAA;YAAA,OAEnChC,GAAG,CAAC6H,2BAA2B,CAAC,IAAI,CAAC;UAAA;YAC3C1F,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC0F,kBAAO,CAACC,6BAA6B,CAAC;YAC5E5F,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAACmB,SAAS,CAAC,CAAC,CAAC;;YAE3CrG,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAAC6B,UAAA,CAAA5F,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAClC,UAAU,CAAC,CAACmH,qBAAqB,CAAC,CAAC,CAAC;YAC3CjF,MAAM,CAAClC,UAAU,CAAC,CAACoH,oBAAoB,CAACS,kBAAO,CAACC,6BAA6B,CAAC;UAAC;UAAA;YAAA,OAAAH,UAAA,CAAAjE,IAAA;QAAA;MAAA,GAAAgE,SAAA;IAAA,CAChF,GAAC;IAEFnG,EAAE,CAAC,iHAAiH,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAqG,UAAA;MAAA,IAAAT,iCAAA,EAAAR,sBAAA;MAAA,OAAArF,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAoG,UAAA;QAAA,kBAAAA,UAAA,CAAAlG,IAAA,GAAAkG,UAAA,CAAAjG,IAAA;UAAA;YAC9GuF,iCAAiC,GAAGlK,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gCAAgC,CAAC;YAC3FA,GAAG,CAACiH,kBAAkB,CAAC5I,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CAAC;YACvCkI,sBAAsB,GAAkC;cAC5DxH,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEoI,oCAAyB;cAC/BzH,OAAO,EAAE;gBACP,aAAa,EAAE;cACjB;YACF,CAAC;YACD5C,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC,CACrC0E,qBAAqB,CAACsC,sBAAsB,CAAC,CAC7CnC,qBAAqB,CAAC7E,cAAc,CAAC;YAACkI,UAAA,CAAAjG,IAAA;YAAA,OAEnChC,GAAG,CAAC6H,2BAA2B,CAAC,IAAI,CAAC;UAAA;YAC3C1F,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC0F,kBAAO,CAACC,6BAA6B,CAAC;YAC5E5F,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CAAC,GAAG,EAAE0F,kBAAO,CAACC,6BAA6B,CAAC;YAClF1K,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACkC,UAAA,CAAAjG,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACoF,iCAAiC,CAAC,CAACH,qBAAqB,CAAC,CAAC,CAAC;YAClEjF,MAAM,CAACoF,iCAAiC,CAAC,CAAC5B,uBAAuB,CAC/D,CAAC,EACDmC,kBAAO,CAACC,6BAA6B,EACrC,CAAC1J,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CACxB,CAAC;YACD;YACAsD,MAAM,CAACoF,iCAAiC,CAAC,CAAC5B,uBAAuB,CAC/D,CAAC,EACDmC,kBAAO,CAACC,6BAA6B,EACrC1J,UAAU,CAAC2C,MACb,CAAC;YACDmB,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACoB,qBAAqB,CAAC,CAAC,CAAC;YAC/CjF,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACqB,oBAAoB,CAACS,kBAAO,CAACC,6BAA6B,CAAC;UAAC;UAAA;YAAA,OAAAE,UAAA,CAAAtE,IAAA;QAAA;MAAA,GAAAqE,SAAA;IAAA,CACpF,GAAC;EACJ,CAAC,CAAC;EAEFpK,QAAQ,CAAC,6BAA6B,EAAE,YAAM;IAC5C4D,EAAE,CAAC,0DAA0D,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAuG,UAAA;MAAA,OAAAxG,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAsG,UAAA;QAAA,kBAAAA,UAAA,CAAApG,IAAA,GAAAoG,UAAA,CAAAnG,IAAA;UAAA;YAC7D3E,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpB;YACA5I,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCsF,qBAAqB,CAAC7E,cAAc,CAAC;YAExCoC,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACyC,IAAI,CAAC;YAACkD,UAAA,CAAAnG,IAAA;YAAA,OACnDhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAC/B7E,IAAI,CAACwI,mBAAmB,CAACY,0CAA+B,GAAGV,8BAAmB,CAAC;YAACoC,UAAA,CAAAnG,IAAA;YAAA,OAC1EhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACqB,eAAe,CAAC,CAAC,CAAC;YACxCP,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YACFsD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;YAC1D;YACAN,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAAClE,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9DmB,MAAM,CAAC5B,SAAS,CAAC,CAACoF,uBAAuB,CACvC,CAAC,EACDxC,oBAAY,CAACC,YAAY,EACzBC,kBAAU,CAACC,QAAQ,EACnBC,mBAAW,CAACC,UAAU,EACtB6B,wBAAa,EACb,QAAQ,EACR,sDAAsD,EACtD3B,SAAS,EACTA,SACF,CAAC;UAAC;UAAA;YAAA,OAAAyE,UAAA,CAAAxE,IAAA;QAAA;MAAA,GAAAuE,SAAA;IAAA,CACH,GAAC;IAEF1G,EAAE,CAAC,6DAA6D,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA0G,UAAA;MAAA,OAAA3G,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAyG,UAAA;QAAA,kBAAAA,UAAA,CAAAvG,IAAA,GAAAuG,UAAA,CAAAtG,IAAA;UAAA;YAChExB,iBAAiB,CAAAnE,aAAA,CAAAA,aAAA,KAAKU,eAAe;cAAEC,SAAS,EAAEC,uBAAgB,CAACsL;YAAc,EAAC,CAAC;YAEnFlL,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpB5I,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCsF,qBAAqB,CAAC7E,cAAc,CAAC;YAExCoC,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACyC,IAAI,CAAC;YAACqD,UAAA,CAAAtG,IAAA;YAAA,OACnDhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAC/B7E,IAAI,CAACwI,mBAAmB,CAACY,0CAA+B,GAAGV,8BAAmB,CAAC;YAACuC,UAAA,CAAAtG,IAAA;YAAA,OAC1EhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACqB,eAAe,CAAC,CAAC,CAAC;YACxCP,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BgD,cAAc;cACjBgD,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YACFsD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BgD,cAAc;cACjBgD,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;YAC1D;YACAN,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAAClE,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAsH,UAAA,CAAA3E,IAAA;QAAA;MAAA,GAAA0E,SAAA;IAAA,CAChE,GAAC;IAEF7G,EAAE,CAAC,+CAA+C,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA6G,UAAA;MAAA,OAAA9G,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA4G,UAAA;QAAA,kBAAAA,UAAA,CAAA1G,IAAA,GAAA0G,UAAA,CAAAzG,IAAA;UAAA;YAClD3E,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpB;YACA5I,KAAK,CAACwE,OAAO,CAAC0C,iBAAiB,CAACzE,cAAc,CAAC;YAE/C6C,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACyC,IAAI,CAAC;YAACwD,UAAA,CAAAzG,IAAA;YAAA,OACnDhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAC/B7E,IAAI,CAACwI,mBAAmB,CAACY,0CAA+B,GAAGV,8BAAmB,CAAC;YAAC0C,UAAA,CAAAzG,IAAA;YAAA,OAC1EhE,aAAa,CAAC,CAAC;UAAA;YACrBX,IAAI,CAACwI,mBAAmB,CAACY,0CAA+B,GAAGV,8BAAmB,CAAC;YAAC0C,UAAA,CAAAzG,IAAA;YAAA,OAC1EhE,aAAa,CAAC,CAAC;UAAA;YAErB;AACN;AACA;AACA;AACA;YACMmE,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACqB,eAAe,CAAC,CAAC,CAAC;YACxCP,MAAM,CAACzE,cAAc,CAAC,CAACgF,eAAe,CAAC,CAAC,CAAC;YACzCP,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC;YAAQ,EACtC,CAAC;YACFsD,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA,CAAAA,aAAA,KAC/BoC,YAAY;cACf4D,MAAM,EAAE,MAAM;cACd1D,GAAG,KAAAC,MAAA,CAAKP,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC;YAAQ,EACrC,CAAC;YACFmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;UAAC;UAAA;YAAA,OAAAsE,UAAA,CAAA9E,IAAA;QAAA;MAAA,GAAA6E,SAAA;IAAA,CAC9D,GAAC;EACJ,CAAC,CAAC;EAEF5K,QAAQ,CAAC,6BAA6B,EAAE,YAAM;IAC5C,IAAI8K,kBAAkB;IACtBvH,UAAU,kBAAAM,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAC,SAAAgH,UAAA;MAAA,OAAAjH,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA+G,UAAA;QAAA,kBAAAA,UAAA,CAAA7G,IAAA,GAAA6G,UAAA,CAAA5G,IAAA;UAAA;YACT0G,kBAAkB,GAAGrL,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,iBAAiB,CAAC;YACvD0I,kBAAkB,CAACG,eAAe,CAAC,IAAI,CAAC;YACxC;YACAxL,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpBtF,mBAAmB,CAChBsE,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrCsF,qBAAqB,CAAC7E,cAAc,CAAC;YAAC6I,UAAA,CAAA5G,IAAA;YAAA,OAEnChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAE/B7E,IAAI,CAACwI,mBAAmB,CAACY,0CAA+B,GAAGV,8BAAmB,CAAC;YAAC6C,UAAA,CAAA5G,IAAA;YAAA,OAC1EhE,aAAa,CAAC,CAAC;UAAA;YACrBgC,GAAG,CAAC8I,mBAAmB,GAAGC,wCAA6B;YACvD/I,GAAG,CAACgJ,mBAAmB,GAAGC,wCAA6B;;YAEvD;YACA9G,MAAM,CAACzE,cAAc,CAAC,CAACgF,eAAe,CAAC,CAAC,CAAC;;YAEzC;YACAP,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAACc,aAAa,CAAC7K,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YACpEmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAAmG,UAAA,CAAAjF,IAAA;QAAA;MAAA,GAAAgF,SAAA;IAAA,CAC5D,GAAC;IAEFvH,SAAS,CAAC,YAAM;MACd/D,IAAI,CAACiE,cAAc,CAAC,CAAC;MACrBjE,IAAI,CAAC4D,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFO,EAAE,CAAC,mGAAmG,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAwH,UAAA;MAAA,OAAAzH,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAuH,UAAA;QAAA,kBAAAA,UAAA,CAAArH,IAAA,GAAAqH,UAAA,CAAApH,IAAA;UAAA;YACtG;YACA6C,MAAM,CAACC,KAAK,GAAGzH,IAAI,CAACe,EAAE,CAAC;cAAA,OAAMH,QAAA,CAAA7C,OAAA,CAAQ8C,OAAO,CAAC;gBAAC6G,IAAI,EAAE,SAANA,IAAIA,CAAA;kBAAA,OAAQC,oCAAkB;gBAAA;cAAA,CAAC,CAAC;YAAA,EAAc;;YAE5F;YACA7E,mBAAmB,CAChBsE,qBAAqB,CAAC7E,oBAAoB,CAAC,CAC3C6E,qBAAqB,CAAC7E,oBAAoB,CAAC;;YAE9C;YACAvC,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAACqD,UAAA,CAAApH,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoC;cAChEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CAAC,CAAC;YAEF7F,IAAI,CAACwI,mBAAmB,CAAC,KAAK,CAAC;YAACuD,UAAA,CAAApH,IAAA;YAAA,OAC1BhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC7B,WAAW,CAAC,CAACqC,cAAc,CAChC/C,oBAAoB,CAACH,OAAO,CAAC,aAAa,CAAC,EAC3C,iBACF,CAAC;YACD;YACA0C,MAAM,CAACnC,GAAG,CAACsJ,wBAAwB,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;YAC5CpH,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAAC2B,QAAQ,CAAC;YACzDhC,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAACoH,6BAAkB,CAAC;YACzD;YACA;YACArH,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAACnC,GAAG,CAACyJ,aAAa,CAAC,CAACzD,GAAG,CAACuD,IAAI,CAAC7F,SAAS,CAAC,CAAC,CAAC;YAC/CvB,MAAM,CAACnC,GAAG,CAAC8I,mBAAmB,CAAC,CAACS,IAAI,CAACR,wCAA6B,CAAC;YACnE5G,MAAM,CAACnC,GAAG,CAACgJ,mBAAmB,CAAC,CAACO,IAAI,CAACN,wCAA6B,CAAC;UAAC;UAAA;YAAA,OAAAG,UAAA,CAAAzF,IAAA;QAAA;MAAA,GAAAwF,SAAA;IAAA,CACrE,GAAC;IAEF3H,EAAE,CAAC,iGAAiG,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA+H,UAAA;MAAA,OAAAhI,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA8H,UAAA;QAAA,kBAAAA,UAAA,CAAA5H,IAAA,GAAA4H,UAAA,CAAA3H,IAAA;UAAA;YACpG7B,mBAAmB,CAAC4D,iBAAiB,CAACzE,cAAc,CAAC;;YAErD;YACAjC,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAAC4D,UAAA,CAAA3H,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoC;cAChEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CAAC,CAAC;YACFf,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAAC2B,QAAQ,CAAC;YACzDhC,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAACwH,wBAAa,CAAC;YACpDzH,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAAC2B,QAAQ,CAAC;YACzDhC,MAAM,CAAClC,UAAU,CAAC,CAACmC,kBAAkB,CAACwH,wBAAa,CAAC;YACpDzH,MAAM,CAACnC,GAAG,CAAC8I,mBAAmB,CAAC,CAACS,IAAI,CAACR,wCAA6B,CAAC;YACnE5G,MAAM,CAACnC,GAAG,CAACgJ,mBAAmB,CAAC,CAACO,IAAI,CAACN,wCAA6B,CAAC;UAAC;UAAA;YAAA,OAAAU,UAAA,CAAAhG,IAAA;QAAA;MAAA,GAAA+F,SAAA;IAAA,CACrE,GAAC;IAEFlI,EAAE,CAAC,kHAAkH,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAkI,UAAA;MAAA,IAAAC,iBAAA;MAAA,OAAApI,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAkI,UAAA;QAAA,kBAAAA,UAAA,CAAAhI,IAAA,GAAAgI,UAAA,CAAA/H,IAAA;UAAA;YAC/G8H,iBAAiB,GAAkC;cACvDvK,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEU;YACR,CAAC;YACDW,mBAAmB,CAACuF,SAAS,CAAC,CAAC;YAC/BvF,mBAAmB,CAChB4D,iBAAiB,CAAC+F,iBAAiB,CAAC,CACpCrF,qBAAqB,CAACnF,cAAc,CAAC;YACxC;YACAjC,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAACgE,UAAA,CAAA/H,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoC;cAChEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CAAC,CAAC;YACFf,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAAC2B,QAAQ,CAAC;YACzDhC,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAACwH,wBAAa,CAAC;YACpDzH,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAACnC,GAAG,CAACyJ,aAAa,CAAC,CAACF,IAAI,CAAC7F,SAAS,CAAC;YACzCvB,MAAM,CAACnC,GAAG,CAAC8I,mBAAmB,CAAC,CAACS,IAAI,CAACR,wCAA6B,CAAC;YACnE5G,MAAM,CAACnC,GAAG,CAACgJ,mBAAmB,CAAC,CAACO,IAAI,CAACN,wCAA6B,CAAC;UAAC;UAAA;YAAA,OAAAc,UAAA,CAAApG,IAAA;QAAA;MAAA,GAAAkG,SAAA;IAAA,CACrE,GAAC;IAEFrI,EAAE,CAAC,iGAAiG,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAqI,UAAA;MAAA,OAAAtI,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAoI,UAAA;QAAA,kBAAAA,UAAA,CAAAlI,IAAA,GAAAkI,UAAA,CAAAjI,IAAA;UAAA;YACpG7B,mBAAmB,CAACsE,qBAAqB,CAACnF,cAAc,CAAC,CAAC3B,iBAAiB,CAACoC,cAAc,CAAC;;YAE3F;YACA1C,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAACkE,UAAA,CAAAjI,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoC;cAChEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CAAC,CAAC;YACF;YACAf,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAACc,aAAa,CAAC7K,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YACpEmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAACC,MAAM,CAAC;YACvDN,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAACwH,wBAAa,CAAC;YACpDzH,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAACnC,GAAG,CAAC8I,mBAAmB,CAAC,CAACS,IAAI,CAACR,wCAA6B,CAAC;YACnE5G,MAAM,CAACnC,GAAG,CAACgJ,mBAAmB,CAAC,CAACO,IAAI,CAACN,wCAA6B,CAAC;UAAC;UAAA;YAAA,OAAAgB,UAAA,CAAAtG,IAAA;QAAA;MAAA,GAAAqG,SAAA;IAAA,CACrE,GAAC;IAEFxI,EAAE,CAAC,8EAA8E,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAuI,UAAA;MAAA,OAAAxI,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAsI,UAAA;QAAA,kBAAAA,UAAA,CAAApI,IAAA,GAAAoI,UAAA,CAAAnI,IAAA;UAAA;YACjF7B,mBAAmB,CAACxC,iBAAiB,CAACoC,cAAc,CAAC;;YAErD;YACA1C,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAACoE,UAAA,CAAAnI,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,oCAAoC;cAChEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CAAC,CAAC;;YAEF;YACAf,MAAM,CAAC/B,aAAa,CAAC,CAACgC,kBAAkB,CAAC,CAAC;YAC1CD,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAACc,aAAa,CAAC7K,UAAU,CAACQ,OAAO,CAAC,CAAC,CAAC,CAAC;YACrEsD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAACC,MAAM,CAAC;YACvDN,MAAM,CAACnC,GAAG,CAACyJ,aAAa,CAAC,CAACF,IAAI,CAAC7F,SAAS,CAAC;YACzCvB,MAAM,CAACjC,UAAU,CAAC,CAAC8F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAACnC,GAAG,CAAC8I,mBAAmB,CAAC,CAACS,IAAI,CAAC/J,kCAAgB,CAACsJ,mBAAmB,CAAC;YAC1E3G,MAAM,CAACnC,GAAG,CAACgJ,mBAAmB,CAAC,CAACO,IAAI,CAAC/J,kCAAgB,CAACwJ,mBAAmB,CAAC;UAAC;UAAA;YAAA,OAAAmB,UAAA,CAAAxG,IAAA;QAAA;MAAA,GAAAuG,SAAA;IAAA,CAC5E,GAAC;IAEF1I,EAAE,CAAC,yDAAyD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAyI,UAAA;MAAA,OAAA1I,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAwI,UAAA;QAAA,kBAAAA,UAAA,CAAAtI,IAAA,GAAAsI,UAAA,CAAArI,IAAA;UAAA;YAC5D;YACAhC,GAAG,CAACsK,WAAW,CAACC,UAAU,CAAC,CAAC;YAC5BpI,MAAM,CAAC,IAAAqI,KAAA,CAAApP,OAAA,EAAY4E,GAAG,CAACsK,WAAW,CAACG,cAAc,CAAC,CAAC,CAAC,CAAClO,MAAM,CAAC,CAACgN,IAAI,CAAC,CAAC,CAAC;YAEpEpJ,mBAAmB,CAACsE,qBAAqB,CAACnF,cAAc,CAAC,CAAC3B,iBAAiB,CAACoC,cAAc,CAAC;;YAE3F;YACA1C,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAACsE,UAAA,CAAArI,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,sFAE5B;cACEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CACF,CAAC;;YAED;YACAf,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAACc,aAAa,CAAC7K,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YACpEmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAACC,MAAM,CAAC;YACvDN,MAAM,CAAC/B,aAAa,CAAC,CAAC4F,GAAG,CAACC,UAAU,CAAC,CAAC;YACtC9D,MAAM,CAACjC,UAAU,CAAC,CAAC8F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAAClC,UAAU,CAAC,CAAC+F,GAAG,CAACC,UAAU,CAAC,CAAC;YAEnC9D,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,CAC5B,mFAAmF,EACnF;cACEM,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAEuH;YACV,CACF,CAAC;YACDzH,MAAM,CAACnC,GAAG,CAAC8I,mBAAmB,CAAC,CAACS,IAAI,CAACR,wCAA6B,CAAC;YACnE5G,MAAM,CAACnC,GAAG,CAACgJ,mBAAmB,CAAC,CAACO,IAAI,CAACN,wCAA6B,CAAC;UAAC;UAAA;YAAA,OAAAoB,UAAA,CAAA1G,IAAA;QAAA;MAAA,GAAAyG,SAAA;IAAA,CACrE,GAAC;IAEF5I,EAAE,CAAC,uEAAuE,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA+I,UAAA;MAAA,OAAAhJ,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA8I,UAAA;QAAA,kBAAAA,UAAA,CAAA5I,IAAA,GAAA4I,UAAA,CAAA3I,IAAA;UAAA;YAC1E0G,kBAAkB,CAACG,eAAe,CAAC,KAAK,CAAC;;YAEzC;YACAxL,IAAI,CAACwI,mBAAmB,CACtB7F,GAAG,CAACgJ,mBAAmB,GAAGK,iCAAsB,GAAGtD,8BACrD,CAAC;YAAC4E,UAAA,CAAA3I,IAAA;YAAA,OACIhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,sFAE5B;cACEN,MAAM,EAAE,iBAAiB;cACzBY,IAAI,EAAEC;YACR,CACF,CAAC;;YAED;YACAf,MAAM,CAAC/B,aAAa,CAAC,CAAC4F,GAAG,CAACC,UAAU,CAAC,CAAC;YACtC9D,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAACc,aAAa,CAAC7K,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YACpEmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAAkI,UAAA,CAAAhH,IAAA;QAAA;MAAA,GAAA+G,SAAA;IAAA,CACzD,GAAC;EACJ,CAAC,CAAC;;EAEF;EACA9M,QAAQ,CAAC,kBAAkB,EAAE,YAAM;IACjC,IAAMgN,2BAA2B;MAAA,IAAAC,MAAA,OAAApJ,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAG,SAAAmJ,UAAA;QAAA,OAAApJ,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAkJ,UAAA;UAAA,kBAAAA,UAAA,CAAAhJ,IAAA,GAAAgJ,UAAA,CAAA/I,IAAA;YAAA;cAClC7B,mBAAmB,CAACyE,qBAAqB,CAAC7E,cAAc,CAAC;cACzD1C,IAAI,CAACoI,aAAa,CAAC,CAAC;cAACsF,UAAA,CAAA/I,IAAA;cAAA,OACfhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;YAAA;cAC/BC,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAACC,MAAM,CAAC;cACvDN,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAF,UAAA,CAAApH,IAAA;UAAA;QAAA,GAAAmH,SAAA;MAAA,CACrC;MAAA,gBANKF,2BAA2BA,CAAA;QAAA,OAAAC,MAAA,CAAAzO,KAAA,OAAAE,SAAA;MAAA;IAAA,GAMhC;IAED8E,SAAS,CAAC,YAAM;MACd/D,IAAI,CAACiE,cAAc,CAAC,CAAC;MACrBjE,IAAI,CAAC4D,aAAa,CAAC,CAAC;MAEpBjB,GAAG,CAACkL,mBAAmB,CAAC,CAAC;MACzBlL,GAAG,CAACmL,gBAAgB,GAAG,KAAK;MAC5B,IAAMC,KAAK,GAAG,IAAAC,OAAA,CAAAjQ,OAAA,EAAc4E,GAAG,CAACsK,WAAW,CAACG,cAAc,CAAC,CAAC,CAAY;MAExEW,KAAK,CAAC3O,OAAO,CAAC,UAACd,IAAI,EAAK;QACtBA,IAAI,CAAC2P,GAAG,CAAC,CAAC;MACZ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF9J,EAAE,CAAC,oCAAoC,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA4J,UAAA;MAAA,IAAAC,cAAA;MAAA,OAAA9J,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA4J,UAAA;QAAA,kBAAAA,UAAA,CAAA1J,IAAA,GAAA0J,UAAA,CAAAzJ,IAAA;UAAA;YACjCwJ,cAAc,GAAGnO,IAAI,CAACC,KAAK,CAACoO,MAAM,CAACC,SAAS,EAAE,aAAa,CAAC;YAAAF,UAAA,CAAAzJ,IAAA;YAAA,OAE5D4I,2BAA2B,CAAC,CAAC;UAAA;YAEnCzI,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YACnC9I,MAAM,CAACqJ,cAAc,CAAC,CAACnE,oBAAoB,CACzClF,MAAM,CAACa,gBAAgB,CAAC;cACtB4I,IAAI,EAAE,iBAAiB;cACvBC,WAAW,EAAE1J,MAAM,CAAC2J,GAAG,CAACC,MAAM,CAAC;cAC/BC,SAAS,EAAE7J,MAAM,CAAC2J,GAAG,CAACC,MAAM,CAAC;cAC7BE,QAAQ,EAAE9J,MAAM,CAAC2J,GAAG,CAAChG,MAAM,CAAC;cAC5BoG,mBAAmB,EAAE/J,MAAM,CAAC2J,GAAG,CAAChG,MAAM,CAAC;cACvC3G,GAAG,EAAEgD,MAAM,CAAC2J,GAAG,CAACC,MAAM;YACxB,CAAC,CACH,CAAC;YAED/L,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBAACR,IAAI,EAAE,mBAAmB;gBAAErM,UAAU,EAAE;cAAG;YACnD,CAAiB,CAAC;YAElB4C,MAAM,CAAChE,WAAW,CAAC,CAACwE,cAAc,CAACC,mBAAW,CAACyJ,WAAW,CAAC;UAAC;UAAA;YAAA,OAAAZ,UAAA,CAAA9H,IAAA;QAAA;MAAA,GAAA4H,SAAA;IAAA,CAC7D,GAAC;IAEF/J,EAAE,CAAC,gDAAgD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA2K,UAAA;MAAA,IAAAC,MAAA;MAAA,OAAA7K,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA2K,UAAA;QAAA,kBAAAA,UAAA,CAAAzK,IAAA,GAAAyK,UAAA,CAAAxK,IAAA;UAAA;YAAAwK,UAAA,CAAAxK,IAAA;YAAA,OAC7C4I,2BAA2B,CAAC,CAAC;UAAA;YAE7B2B,MAAM,GAAGvM,GAAG,CAACgL,SAAS;YAC5B7M,WAAW,CAACuH,SAAS,CAAC,CAAC;YAEvB6G,MAAM,CAACJ,SAAS,CAAC;cACfC,IAAI,EAAE;gBAACR,IAAI,EAAE,mBAAmB;gBAAEa,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBAAEmN,mBAAmB,EAAE;cAAC;YAClF,CAAiB,CAAC;YAElBH,MAAM,CAACJ,SAAS,CAAC;cACfC,IAAI,EAAE;gBAACR,IAAI,EAAE,mBAAmB;gBAAErM,UAAU,EAAE;cAAG;YACnD,CAAiB,CAAC;YAElB4C,MAAM,CAAChE,WAAW,CAAC,CAACkJ,oBAAoB,CAACzE,mBAAW,CAACyJ,WAAW,CAAC;UAAC;UAAA;YAAA,OAAAG,UAAA,CAAA7I,IAAA;QAAA;MAAA,GAAA2I,SAAA;IAAA,CACnE,GAAC;IAEF9K,EAAE,CAAC,kDAAkD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAgL,UAAA;MAAA,IAAAC,YAAA,EAAA1M,UAAA,EAAA2M,aAAA,EAAAC,qBAAA,EAAAC,YAAA;MAAA,OAAArL,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAmL,UAAA;QAAA,kBAAAA,UAAA,CAAAjL,IAAA,GAAAiL,UAAA,CAAAhL,IAAA;UAAA;YAAAgL,UAAA,CAAAhL,IAAA;YAAA,OAE/C4I,2BAA2B,CAAC,CAAC;UAAA;YAC7BgC,YAAY,GAAGvP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,oBAAoB,CAAC;YACpDE,UAAU,GAAG7C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,6BAA6B,CAAC;YAC3D6M,aAAa,GAAGxP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC,EAE5D;YACA7B,WAAW,CAACuH,SAAS,CAAC,CAAC;;YAEvB;YACAvD,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;;YAE1D;YACApF,IAAI,CAACoI,aAAa,CAAC,CAAC;YACpBpI,IAAI,CAACwI,mBAAmB,CAACrG,kCAAgB,CAACyN,iBAAiB,GAAGlH,8BAAmB,CAAC;;YAElF;YACM+G,qBAAqB,GAAG9M,GAAG,CAACoG,QAAQ,GAAG,CAAC,GAAG,CAAC;YAC5C2G,YAAY,GAAG;cACnBX,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBACtBmN,mBAAmB,EAAEI;cACvB;YACF,CAAC;YAED9M,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAACY,YAAY,CAAC;YAACC,UAAA,CAAAhL,IAAA;YAAA,OAChChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAChE,WAAW,CAAC,CAACkJ,oBAAoB,CAACzE,mBAAW,CAACuC,YAAY,CAAC;YAClEhD,MAAM,CAACyK,YAAY,CAAC,CAACxK,kBAAkB,CAAC8E,oCAAyB,CAAC;YAClE/E,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC8E,oCAAyB,CAAC;YAChE/E,MAAM,CAAC0K,aAAa,CAAC,CAACzK,kBAAkB,CAAC8E,oCAAyB,CAAC;YAEnE7J,IAAI,CAACkE,aAAa,CAAC,CAAC;YAEpBY,MAAM,CAAC1E,OAAO,CAAC,CAAC4J,oBAAoB,CAClC,2CAA2C,EAC3ClF,MAAM,CAACa,gBAAgB,CAAC;cACtBC,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAE;YACV,CAAC,CACH,CAAC;UAAC;UAAA;YAAA,OAAA2K,UAAA,CAAArJ,IAAA;QAAA;MAAA,GAAAgJ,SAAA;IAAA,CACH,GAAC;IAEFnL,EAAE,CAAC,kDAAkD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAyL,UAAA;MAAA,IAAAR,YAAA,EAAAzN,GAAA;MAAA,OAAAuC,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAwL,UAAA;QAAA,kBAAAA,UAAA,CAAAtL,IAAA,GAAAsL,UAAA,CAAArL,IAAA;UAAA;YAAAqL,UAAA,CAAArL,IAAA;YAAA,OAC/C4I,2BAA2B,CAAC,CAAC;UAAA;YACnCzI,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YAE7B2B,YAAY,GAAGvP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,oBAAoB,CAAC;YACpDb,GAAG,GAAG,kDAAkD;YAE9Da,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBACtBmN,mBAAmB,EAAE;cACvB;YACF,CAAiB,CAAC;YAElBrP,IAAI,CAACwI,mBAAmB,CAAC,IAAI,CAAC;YAACwH,UAAA,CAAArL,IAAA;YAAA,OACzBhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACsC,aAAa,CAAC,CAAC;YACrCnL,MAAM,CAACyK,YAAY,CAAC,CAACxK,kBAAkB,CAAC8E,oCAAyB,CAAC;YAElErK,KAAK,CAACwE,OAAO,CAACuD,qBAAqB,CAAC7E,cAAc,CAAC;YAACsN,UAAA,CAAArL,IAAA;YAAA,OAC9ChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAAAmL,UAAA,CAAArL,IAAA;YAAA,OACzBhE,aAAa,CAAC,CAAC;UAAA;YACrBmE,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YAEnCjL,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBAACR,IAAI,EAAEsB,wBAAiB,CAACK,iBAAiB;gBAAEhO,UAAU,EAAE;cAAG;YACnE,CAAiB,CAAC;;YAElB;YACAlC,IAAI,CAACwI,mBAAmB,CAAC,IAAI,CAAC;YAACwH,UAAA,CAAArL,IAAA;YAAA,OACzBhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;YAC1D;YACAN,MAAM,CAACyK,YAAY,CAAC,CAAClK,eAAe,CAAC,CAAC,CAAC;YACvCP,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAAC8E,oCAAyB,CAAC;YAChE/E,MAAM,CAAClC,UAAU,CAAC,CAACmC,kBAAkB,CAAC8E,oCAAyB,CAAC;YAChE;YACA/E,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAACc,aAAa,CAAC/J,GAAG,CAAC;UAAC;UAAA;YAAA,OAAAkO,UAAA,CAAA1J,IAAA;QAAA;MAAA,GAAAyJ,SAAA;IAAA,CACrD,GAAC;IAEF5L,EAAE,CAAC,kDAAkD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA6L,UAAA;MAAA,OAAA9L,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA4L,UAAA;QAAA,kBAAAA,UAAA,CAAA1L,IAAA,GAAA0L,UAAA,CAAAzL,IAAA;UAAA;YAAAyL,UAAA,CAAAzL,IAAA;YAAA,OAC/C4I,2BAA2B,CAAC,CAAC;UAAA;YACnCzI,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACiH,IAAI,CAAC/G,yBAAkB,CAACC,MAAM,CAAC;YACvDN,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YAEnCpO,KAAK,CAACwE,OAAO,CACVoD,qBAAqB,CAACnF,cAAc,CAAC,CACrCmF,qBAAqB,CAACnF,cAAc,CAAC,CACrC3B,iBAAiB,CAACoC,cAAc,CAAC;YAEpCC,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAEnN,cAAc;gBACnBoN,mBAAmB,EAAE1M,GAAG,CAACoG,QAAQ,GAAG,CAAC,GAAG;cAC1C;YACF,CAAiB,CAAC;YAACqH,UAAA,CAAAzL,IAAA;YAAA,OACbhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACsC,aAAa,CAAC,CAAC;YACrCnL,MAAM,CAACzE,cAAc,CAAC,CAACgF,eAAe,CAAC,CAAC,CAAC;YAAC+K,UAAA,CAAAzL,IAAA;YAAA,OAEpChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAAAuL,UAAA,CAAAzL,IAAA;YAAA,OACzBhE,aAAa,CAAC,CAAC;UAAA;YACrBmE,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YAEnCjL,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBAACR,IAAI,EAAEsB,wBAAiB,CAACK,iBAAiB;gBAAEhO,UAAU,EAAE;cAAG;YACnE,CAAiB,CAAC;YAACkO,UAAA,CAAAzL,IAAA;YAAA,OACbhE,aAAa,CAAC,CAAC;UAAA;YAErB;YACA;YACAgC,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAEnN,cAAc;gBACnBoN,mBAAmB,EAAE1M,GAAG,CAACoG,QAAQ,GAAG,CAAC,GAAG;cAC1C;YACF,CAAiB,CAAC;YAACqH,UAAA,CAAAzL,IAAA;YAAA,OACbhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACzE,cAAc,CAAC,CAACgF,eAAe,CAAC,CAAC,CAAC;;YAEzC;YAAA+K,UAAA,CAAAzL,IAAA;YAAA,OACMhC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAAAuL,UAAA,CAAAzL,IAAA;YAAA,OACzBhE,aAAa,CAAC,CAAC;UAAA;YACrBmE,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YAEnCjL,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBAACR,IAAI,EAAEsB,wBAAiB,CAACK,iBAAiB;gBAAEhO,UAAU,EAAE;cAAG;YACnE,CAAiB,CAAC;YAACkO,UAAA,CAAAzL,IAAA;YAAA,OACbhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;YAC1DN,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAwC,UAAA,CAAA9J,IAAA;QAAA;MAAA,GAAA6J,SAAA;IAAA,CACrC,GAAC;IAEFhM,EAAE,CAAC,qFAAqF,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA+L,UAAA;MAAA,IAAAC,iBAAA,EAAAf,YAAA;MAAA,OAAAlL,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA+L,UAAA;QAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAA5L,IAAA;UAAA;YACxF;YACAxB,iBAAiB,CAAAnE,aAAA,CAAAA,aAAA,KAAKU,eAAe;cAAEC,SAAS,EAAEC,uBAAgB,CAACsL;YAAc,EAAC,CAAC;YAACqF,UAAA,CAAA5L,IAAA;YAAA,OAC9E4I,2BAA2B,CAAC,CAAC;UAAA;YAEnC/N,KAAK,CAACwE,OAAO,CAACuD,qBAAqB,CAAC7E,cAAc,CAAC;YAAC6N,UAAA,CAAA5L,IAAA;YAAA,OAC9ChC,GAAG,CAACkC,mBAAmB,CAAC,CAAC;UAAA;YAE/BC,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;YAC1DN,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;;YAEnC;YACM0C,iBAAiB,GAAGtQ,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YAC1D4M,YAAY,GAAGvP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,oBAAoB,CAAC,EAE1D;YACAA,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBACtBmN,mBAAmB,EAAE;cACvB;YACF,CAAiB,CAAC;;YAElB;YAAAkB,UAAA,CAAA5L,IAAA;YAAA,OACMhE,aAAa,CAAC,CAAC;UAAA;YAErB;YACAmE,MAAM,CAACwL,iBAAiB,CAAC,CAACE,gBAAgB,CAAC,CAAC;YAC5C1L,MAAM,CAACyK,YAAY,CAAC,CAACvF,oBAAoB,CAACH,oCAAyB,CAAC;;YAEpE;YACA/E,MAAM,CAACnC,GAAG,CAACoI,kBAAkB,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAAClE,UAAU,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9DmB,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;UAAC;UAAA;YAAA,OAAAmL,UAAA,CAAAjK,IAAA;QAAA;MAAA,GAAA+J,SAAA;IAAA,CAC5D,GAAC;IAEFlM,EAAE,CAAC,0FAA0F,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAmM,UAAA;MAAA,IAAAlB,YAAA,EAAA1M,UAAA,EAAA2M,aAAA,EAAAkB,aAAA,EAAAC,SAAA,EAAAjB,YAAA;MAAA,OAAArL,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAoM,UAAA;QAAA,kBAAAA,UAAA,CAAAlM,IAAA,GAAAkM,UAAA,CAAAjM,IAAA;UAAA;YAAAiM,UAAA,CAAAjM,IAAA;YAAA,OACvF4I,2BAA2B,CAAC,CAAC;UAAA;YAC7BgC,YAAY,GAAGvP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,oBAAoB,CAAC;YACpDE,UAAU,GAAG7C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,6BAA6B,CAAC;YAC3D6M,aAAa,GAAGxP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC,EAE5D;YACAA,GAAG,CAACsK,WAAW,CAACC,UAAU,CAAC,CAAC;YAC5BpI,MAAM,CAAC,IAAAqI,KAAA,CAAApP,OAAA,EAAY4E,GAAG,CAACsK,WAAW,CAACG,cAAc,CAAC,CAAC,CAAC,CAAClO,MAAM,CAAC,CAACgN,IAAI,CAAC,CAAC,CAAC;YAE9DwE,aAAa,GAAG1Q,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YAEtDgO,SAAS,GAAGhO,GAAG,CAACoG,QAAQ,GAAG,CAAC,GAAG,CAAC,EAEtC;YACM2G,YAAY,GAAG;cACnBX,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBACtBmN,mBAAmB,EAAEsB;cACvB;YACF,CAAC;YAEDhO,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAACY,YAAY,CAAC;YAACkB,UAAA,CAAAjM,IAAA;YAAA,OAChChE,aAAa,CAAC,CAAC;UAAA;YAErB;YACAmE,MAAM,CAAC4L,aAAa,CAAC,CAACF,gBAAgB,CAAC,CAAC;YACxC1L,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACsC,aAAa,CAAC,CAAC;YACrCnL,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAAC2B,QAAQ,CAAC;YAC5DhC,MAAM,CAAChE,WAAW,CAAC,CAAC+P,cAAc,CAACtL,mBAAW,CAACuC,YAAY,CAAC;YAC5DhD,MAAM,CAACnC,GAAG,CAACmO,cAAc,CAAC,CAACjF,aAAa,CAACxF,SAAS,CAAC;YACnDvB,MAAM,CAACnC,GAAG,CAACyJ,aAAa,CAAC,CAACP,aAAa,CAACxF,SAAS,CAAC;YAClDvB,MAAM,CAACyK,YAAY,CAAC,CAACxK,kBAAkB,CAAC8E,oCAAyB,CAAC;YAClE/E,MAAM,CAACjC,UAAU,CAAC,CAAC8F,GAAG,CAACC,UAAU,CAAC,CAAC;YACnC9D,MAAM,CAAC0K,aAAa,CAAC,CAAC7G,GAAG,CAACC,UAAU,CAAC,CAAC;YACtC9D,MAAM,CAACnC,GAAG,CAACmL,gBAAgB,CAAC,CAACjC,aAAa,CAAC,IAAI,CAAC;YAChD/G,MAAM,CAAC3E,OAAO,CAAC,CAACmF,cAAc,CAC5B,+DAA+D,EAC/D;cAACM,IAAI,EAAEC,4BAAiB;cAAEb,MAAM,EAAEF,MAAM,CAAC2J,GAAG,CAACC,MAAM;YAAC,CACtD,CAAC;YAEDa,YAAY,CAAClH,SAAS,CAAC,CAAC;;YAExB;YACA1F,GAAG,CAACsK,WAAW,CAAC8D,cAAc,GAAG,CAAC,CAAC;YACnCvR,KAAK,CAACwE,OAAO,CAACuD,qBAAqB,CAAC7E,cAAc,CAAC;;YAEnD;YAAAkO,UAAA,CAAAjM,IAAA;YAAA,OACMhC,GAAG,CAACmH,kBAAkB,CAACkH,qCAA0B,CAAC;UAAA;YAAAJ,UAAA,CAAAjM,IAAA;YAAA,OAClDhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC,IAAAqI,KAAA,CAAApP,OAAA,EAAY4E,GAAG,CAACsK,WAAW,CAACG,cAAc,CAAC,CAAC,CAAC,CAAClO,MAAM,CAAC,CAACgN,IAAI,CAAC,CAAC,CAAC;YACpE;YACApH,MAAM,CAACnC,GAAG,CAACsC,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,yBAAkB,CAACC,MAAM,CAAC;YAC1DN,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YACnC9I,MAAM,CAACyK,YAAY,CAAC,CAACxK,kBAAkB,CAACiM,qCAA0B,CAAC;YACnElM,MAAM,CAACjC,UAAU,CAAC,CAACkC,kBAAkB,CAACiM,qCAA0B,CAAC;YACjElM,MAAM,CAAC0K,aAAa,CAAC,CAAC7G,GAAG,CAACC,UAAU,CAAC,CAAC;YACtC9D,MAAM,CAACnC,GAAG,CAACmL,gBAAgB,CAAC,CAACjC,aAAa,CAAC,KAAK,CAAC;UAAC;UAAA;YAAA,OAAA+E,UAAA,CAAAtK,IAAA;QAAA;MAAA,GAAAmK,SAAA;IAAA,CACnD,GAAC;IAEFtM,EAAE,CAAC,qDAAqD,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA2M,UAAA;MAAA,IAAA1B,YAAA,EAAA1M,UAAA,EAAA2M,aAAA,EAAAkB,aAAA,EAAAQ,cAAA,EAAAC,WAAA;MAAA,OAAA9M,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA4M,UAAA;QAAA,kBAAAA,UAAA,CAAA1M,IAAA,GAAA0M,UAAA,CAAAzM,IAAA;UAAA;YAAAyM,UAAA,CAAAzM,IAAA;YAAA,OAClD4I,2BAA2B,CAAC,CAAC;UAAA;YACnC/N,KAAK,CAACwE,OAAO,CAACuD,qBAAqB,CAAC7E,cAAc,CAAC;YAC7C6M,YAAY,GAAGvP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,oBAAoB,CAAC;YACpDE,UAAU,GAAG7C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,6BAA6B,CAAC;YAC3D6M,aAAa,GAAGxP,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YACtD+N,aAAa,GAAG1Q,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YACtDuO,cAAc,GAAGlR,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,2BAA2B,CAAC;YAC7DwO,WAAW,GAAGnR,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gCAAgC,CAAC;YAErEA,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBACtBmN,mBAAmB,EAAE;cACvB;YACF,CAAiB,CAAC;YAAC+B,UAAA,CAAAzM,IAAA;YAAA,OAEbhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC1E,OAAO,CAAC,CAACkF,cAAc,CAC5B,2CAA2C,EAC3CR,MAAM,CAACa,gBAAgB,CAAC;cACtBC,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAE;YACV,CAAC,CACH,CAAC;YACDF,MAAM,CAACzE,cAAc,CAAC,CAAC0E,kBAAkB,CACvC;cAAC7C,UAAU,EAAE;YAAG,CAAC,EACjB4C,MAAM,CAAC+C,QAAQ,CAAC,CAAC,EACjB;cACEjC,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAEqM;YACV,CAAC,EACDvM,MAAM,CAAC+C,QAAQ,CAAC,CAClB,CAAC;YAED/C,MAAM,CAAChE,WAAW,CAAC,CAACkJ,oBAAoB,CAACzE,mBAAW,CAACyB,KAAK,EAAEX,SAAS,EAAEvB,MAAM,CAAC+C,QAAQ,CAAC,CAAC,CAAC;YACzF/C,MAAM,CAAChE,WAAW,CAAC,CAACkJ,oBAAoB,CAACzE,mBAAW,CAACuC,YAAY,CAAC;YAClEhD,MAAM,CAAC4L,aAAa,CAAC,CAACrL,eAAe,CAAC,CAAC,CAAC;YACxCP,MAAM,CAACyK,YAAY,CAAC,CAAC5G,GAAG,CAAC6H,gBAAgB,CAAC,CAAC;YAC3C1L,MAAM,CAACjC,UAAU,CAAC,CAAC8F,GAAG,CAAC6H,gBAAgB,CAAC,CAAC;YACzC1L,MAAM,CAAC0K,aAAa,CAAC,CAAC7G,GAAG,CAAC6H,gBAAgB,CAAC,CAAC;YAC5C1L,MAAM,CAACnC,GAAG,CAACmL,gBAAgB,CAAC,CAACjC,aAAa,CAAC,KAAK,CAAC;YAEjD/G,MAAM,CAACoM,cAAc,CAAC,CAACnM,kBAAkB,CAACsM,yBAAc,CAAC;YACzDvM,MAAM,CAACqM,WAAW,CAAC,CAACpM,kBAAkB,CAACsM,yBAAc,CAAC;UAAC;UAAA;YAAA,OAAAD,UAAA,CAAA9K,IAAA;QAAA;MAAA,GAAA2K,SAAA;IAAA,CACxD,GAAC;IAEF9M,EAAE,CAAC,wCAAwC,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAgN,UAAA;MAAA,IAAAC,qBAAA;MAAA,IAAAC,YAAA,EAAArD,cAAA,EAAAuC,aAAA,EAAAzN,WAAA;MAAA,OAAAoB,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAiN,UAAA;QAAA,kBAAAA,UAAA,CAAA/M,IAAA,GAAA+M,UAAA,CAAA9M,IAAA;UAAA;YAAA8M,UAAA,CAAA9M,IAAA;YAAA,OACrC4I,2BAA2B,CAAC,CAAC;UAAA;YAC7BiE,YAAY,GAAGxR,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YACrDwL,cAAc,GAAGnO,IAAI,CAACC,KAAK,CAACoO,MAAM,CAACC,SAAS,EAAE,aAAa,CAAC;YAC5DoC,aAAa,GAAG1Q,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,qBAAqB,CAAC;YACtDM,WAAW,GAAGjD,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gBAAgB,CAAC;YAErDA,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE,GAAG;kBAAEE,OAAO,EAAE;oBAAC,aAAa,EAAE;kBAAE;gBAAC,CAAC;gBACpDiN,mBAAmB,EAAE;cACvB;YACF,CAAiB,CAAC;YAACoC,UAAA,CAAA9M,IAAA;YAAA,OACbhE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC1E,OAAO,CAAC,CAACkF,cAAc,CAC5B,2CAA2C,EAC3CR,MAAM,CAACa,gBAAgB,CAAC;cACtBC,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAE;YACV,CAAC,CACH,CAAC;YACDF,MAAM,CAACzE,cAAc,CAAC,CAAC0E,kBAAkB,CACvC;cAAC7C,UAAU,EAAE,GAAG;cAAEE,OAAO,EAAE;gBAAC,aAAa,EAAE;cAAE;YAAC,CAAC,EAC/C0C,MAAM,CAAC+C,QAAQ,CAAC,CAAC,EACjB;cACEjC,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAEqM;YACV,CAAC,EACDvM,MAAM,CAAC+C,QAAQ,CAAC,CAClB,CAAC;YACD/C,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CAAC,EAAE,EAAE,qBAAqB,CAAC;YACjED,MAAM,CAAC4L,aAAa,CAAC,CAACrL,eAAe,CAAC,CAAC,CAAC;YACxCP,MAAM,CAACnC,GAAG,CAACmL,gBAAgB,CAAC,CAACjC,aAAa,CAAC,KAAK,CAAC;YACjD/G,MAAM,CAACnC,GAAG,CAACmO,cAAc,CAAC,CAAC5E,IAAI,CAAC7F,SAAS,CAAC;YAC1CvB,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACsC,aAAa,CAAC,CAAC;YAErCjQ,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAAC+I,UAAA,CAAA9M,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC0M,YAAY,CAAC,CAACzM,kBAAkB,EAAAwM,qBAAA,GACrC5O,GAAG,CAAC+O,UAAU,CAAC9P,MAAM,cAAA2P,qBAAA,uBAArBA,qBAAA,CAAuBjQ,GAAG,EAC1BqB,GAAG,CAAC+O,UAAU,CAAC9B,iBAAiB,EAChC,SACF,CAAC;YACD9K,MAAM,CAAC/E,MAAM,CAAC,CAACuF,cAAc,CAAC,qCAAqC,EAAE;cACnEM,IAAI,EAAEC,4BAAiB;cACvBb,MAAM,EAAE;YACV,CAAC,CAAC;YACFF,MAAM,CAACnC,GAAG,CAACgL,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;YACnC9I,MAAM,CAACqJ,cAAc,CAAC,CAACnE,oBAAoB,CACzClF,MAAM,CAACa,gBAAgB,CAAC;cACtB4I,IAAI,EAAE,iBAAiB;cACvBC,WAAW,EAAE1J,MAAM,CAAC2J,GAAG,CAACC,MAAM,CAAC;cAC/BC,SAAS,EAAE7J,MAAM,CAAC2J,GAAG,CAACC,MAAM,CAAC;cAC7BE,QAAQ,EAAE9J,MAAM,CAAC2J,GAAG,CAAChG,MAAM,CAAC;cAC5BoG,mBAAmB,EAAE/J,MAAM,CAAC2J,GAAG,CAAChG,MAAM,CAAC;cACvC3G,GAAG,EAAEgD,MAAM,CAAC2J,GAAG,CAACC,MAAM;YACxB,CAAC,CACH,CAAC;UAAC;UAAA;YAAA,OAAA+C,UAAA,CAAAnL,IAAA;QAAA;MAAA,GAAAgL,SAAA;IAAA,CACH,GAAC;IAEFnN,EAAE,CAAC,gEAAgE,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAqN,UAAA;MAAA,IAAA1O,WAAA;MAAA,OAAAoB,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAoN,UAAA;QAAA,kBAAAA,UAAA,CAAAlN,IAAA,GAAAkN,UAAA,CAAAjN,IAAA;UAAA;YAAAiN,UAAA,CAAAjN,IAAA;YAAA,OAC7D4I,2BAA2B,CAAC,CAAC;UAAA;YACnC;YACA5K,GAAG,CAACkL,mBAAmB,CAAC,CAAC;YACzBlL,GAAG,CAACkP,SAAS,CAAC1M,yBAAkB,CAAC2B,QAAQ,CAAC;YACpC7D,WAAW,GAAGjD,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gBAAgB,CAAC,EACrD;YACA3C,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAS,qBAAqB,CAAC,CAACiC,mBAAmB,CAAC,EAAE,CAAC;YACrEpF,KAAK,CAACwE,OAAO,CAACoD,qBAAqB,CAAC9E,oBAAoB,CAAC;;YAEzD;YAAAsP,UAAA,CAAAjN,IAAA;YAAA,OACOhC,GAAG,CAASmP,kBAAkB,CAAC,CAAC;UAAA;YAEvC9R,IAAI,CAACwI,mBAAmB,CAAC,EAAE,GAAGE,8BAAmB,CAAC;YAACkJ,UAAA,CAAAjN,IAAA;YAAA,OAC7ChE,aAAa,CAAC,CAAC;UAAA;YAErBmE,MAAM,CAAC7B,WAAW,CAAC,CAACqC,cAAc,CAChChD,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,EAC3C,oBACF,CAAC;YACD0C,MAAM,CAAEnC,GAAG,CAAS4F,UAAU,CAAC,CAACrD,OAAO,CAAC5C,oBAAoB,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC;YAEpFpC,IAAI,CAACkE,aAAa,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA0N,UAAA,CAAAtL,IAAA;QAAA;MAAA,GAAAqL,SAAA;IAAA,CACtB,GAAC;IAEFxN,EAAE,CAAC,4FAA4F,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAyN,UAAA;MAAA,IAAA9O,WAAA,EAAA0N,SAAA;MAAA,OAAAtM,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAwN,UAAA;QAAA,kBAAAA,UAAA,CAAAtN,IAAA,GAAAsN,UAAA,CAAArN,IAAA;UAAA;YAAAqN,UAAA,CAAArN,IAAA;YAAA,OACzF4I,2BAA2B,CAAC,CAAC;UAAA;YAC7BtK,WAAW,GAAGjD,IAAI,CAACC,KAAK,CAAC0C,GAAG,EAAE,gBAAgB,CAAC,EACrD;YACAnD,KAAK,CAACwE,OAAO,CAACoD,qBAAqB,CAAC;cAClClF,UAAU,EAAE,GAAG;cACfT,IAAI,EAAEU,kCAAgB;cACtBC,OAAO,EAAE;gBAAC,aAAa,EAAE;cAAE;YAC7B,CAAC,CAAC;;YAEF;YACMuO,SAAS,GAAGhO,GAAG,CAACoG,QAAQ,GAAG,CAAC,GAAG,CAAC;YACtCpG,GAAG,CAACgL,SAAS,CAACmB,SAAS,CAAC;cACtBC,IAAI,EAAE;gBACJR,IAAI,EAAEsB,wBAAiB,CAACC,iBAAiB;gBACzCV,GAAG,EAAE;kBAAClN,UAAU,EAAE;gBAAG,CAAC;gBACtBmN,mBAAmB,EAAEsB;cACvB;YACF,CAAiB,CAAC;YAACqB,UAAA,CAAArN,IAAA;YAAA,OAEbhE,aAAa,CAAC,CAAC;UAAA;YAErB;YACAmE,MAAM,CAAC7B,WAAW,CAAC,CAAC8B,kBAAkB,CAAC,EAAE,EAAE8E,oCAAyB,CAAC;YACrE/E,MAAM,CAACnC,GAAG,CAAC4F,UAAU,CAAC,CAACrD,OAAO,CAACmB,SAAS,CAAC,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA2L,UAAA,CAAA1L,IAAA;QAAA;MAAA,GAAAyL,SAAA;IAAA,CAC5C,GAAC;EACJ,CAAC,CAAC;EAEFxR,QAAQ,CAAC,8BAA8B,EAAE,YAAM;IAC7C4D,EAAE,CAAC,yCAAyC,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAA2N,UAAA;MAAA,IAAAC,kBAAA,EAAAC,MAAA;MAAA,OAAA9N,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAA4N,UAAA;QAAA,kBAAAA,UAAA,CAAA1N,IAAA,GAAA0N,UAAA,CAAAzN,IAAA;UAAA;YACtCuN,kBAAkB,GAAkC;cACxDhQ,UAAU,EAAE;YACd,CAAC;YACD1C,KAAK,CAACwE,OAAO,CAAC1D,iBAAiB,CAAC4R,kBAAkB,CAAC;YAACE,UAAA,CAAAzN,IAAA;YAAA,OAC/BhC,GAAG,CAAC0P,eAAe,CAAC,CAAC;UAAA;YAApCF,MAAM,GAAAC,UAAA,CAAAE,IAAA;YAEZxN,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA;cAClCgG,MAAM,EAAE,KAAK;cACb1D,GAAG;YAA4C,GAC5C,IAAAD,gCAAsB,EAAC,CAAC,CAC5B,CAAC;YACFyD,MAAM,CAACqN,MAAM,CAAC,CAACjN,OAAO,CAAC,IAAI,CAAC;UAAC;UAAA;YAAA,OAAAkN,UAAA,CAAA9L,IAAA;QAAA;MAAA,GAAA2L,SAAA;IAAA,CAC9B,GAAC;IAEF9N,EAAE,CAAC,0CAA0C,mBAAAC,kBAAA,CAAArG,OAAA,eAAAsG,YAAA,CAAAtG,OAAA,CAAAuG,IAAA,CAAE,SAAAiO,UAAA;MAAA,IAAAC,kBAAA,EAAAL,MAAA;MAAA,OAAA9N,YAAA,CAAAtG,OAAA,CAAAyG,IAAA,WAAAiO,UAAA;QAAA,kBAAAA,UAAA,CAAA/N,IAAA,GAAA+N,UAAA,CAAA9N,IAAA;UAAA;YACvC6N,kBAAkB,GAAkC;cACxDtQ,UAAU,EAAE;YACd,CAAC;YACD1C,KAAK,CAACwE,OAAO,CAAC1D,iBAAiB,CAACkS,kBAAkB,CAAC;YAACC,UAAA,CAAA9N,IAAA;YAAA,OAC/BhC,GAAG,CAAC0P,eAAe,CAAC,CAAC;UAAA;YAApCF,MAAM,GAAAM,UAAA,CAAAH,IAAA;YAEZxN,MAAM,CAACtF,KAAK,CAACwE,OAAO,CAAC,CAACsB,cAAc,CAAAtG,aAAA;cAClCgG,MAAM,EAAE,KAAK;cACb1D,GAAG;YAA4C,GAC5C,IAAAD,gCAAsB,EAAC,CAAC,CAC5B,CAAC;YACFyD,MAAM,CAACqN,MAAM,CAAC,CAACjN,OAAO,CAAC,KAAK,CAAC;UAAC;UAAA;YAAA,OAAAuN,UAAA,CAAAnM,IAAA;QAAA;MAAA,GAAAiM,SAAA;IAAA,CAC/B,GAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","fn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","mockResponse","getMockRequestTemplate","uri","concat","primary","body","userId","internal","device","clientDeviceUri","url","serviceData","ccMockResponse","failurePayload","statusCode","mockPostResponse","headers","trackingid","failurePayload429One","failurePayload429Two","failurePayload429Three","failurePayload429Four","successPayload","reg","restartSpy","restoreSpy","postRegistrationSpy","deregisterSpy","failoverSpy","retry429Spy","metricSpy","setupRegistration","mockServiceData","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","metricManager","beforeEach","afterEach","request","clearAllTimers","useRealTimers","localStorage","clear","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","deviceId","objectContaining","file","REGISTRATION_FILE","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_context5","isCCFlow","_callee6","_context6","_callee7","_context7","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_callee8","_context8","_callee9","_context9","_callee0","failurePayload429Small","_context0","setActiveMobiusUrl","RECONNECT_ON_FAILURE_UTIL","reconnectOnFailure","toHaveBeenCalledTimes","toHaveBeenCalledWith","_callee1","attemptRegistrationWithServersSpy","_context1","_callee10","_context10","_callee11","_context11","handleConnectionRestoration","METHODS","HANDLE_CONNECTION_RESTORATION","_callee12","_context12","_callee13","key","raw","state","_context13","getItem","toBeTruthy","JSON","parse","attempt","timeElapsed","retryScheduledTime","any","serverType","_callee14","now","_failoverSpy$mock$cal","attemptArg","timeElapsedArg","_context14","Math","floor","_now","setItem","_stringify","_slicedToArray2","mock","calls","toBe","toBeGreaterThanOrEqual","_callee15","_context15","getActiveMobiusUrl","_callee16","_context16","CONTACT_CENTER","_callee17","_context17","isPrimaryActiveSpy","_callee18","_context18","mockReturnValue","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee19","_context19","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","REG_429_RETRY_UTIL","failbackTimer","_callee20","_context20","FAILBACK_UTIL","_callee21","finalErrorPayload","_context21","_callee22","_context22","_callee23","_context23","_callee24","_context24","callManager","createCall","_keys","getActiveCalls","_callee25","_context25","beforeEachSetupForKeepalive","_ref26","_callee26","_context26","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","_values","end","_callee27","postMessageSpy","_context27","Worker","prototype","type","accessToken","String","deviceUrl","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee28","worker","_context28","err","keepAliveRetryCount","_callee29","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_context29","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","_callee30","_context30","toBeUndefined","KEEPALIVE_SUCCESS","_callee31","_context31","_callee32","clearKeepaliveSpy","_context32","toHaveBeenCalled","_callee33","clearTimerSpy","threshold","_context33","lastCalledWith","keepaliveTimer","callCollection","CALLS_CLEARED_HANDLER_UTIL","_callee34","handle404CbSpy","registerSpy","_context34","KEEPALIVE_UTIL","_callee35","_reg$deviceInfo$devic","keepaliveSpy","_context35","deviceInfo","_callee36","_context36","setStatus","startFailoverTimer","_callee37","_context37","_callee38","pingSuccessPayload","status","_context38","isPrimaryActive","sent","_callee39","pingFailurePayload","_context39"],"sources":["register.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\nimport {Mutex} from 'async-mutex';\nimport {createRegistration} from './register';\nimport {\n getMobiusDiscoveryResponse,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport * as utils from '../../common/Utils';\nimport log from '../../Logger';\nimport {LOGGER} from '../../Logger/types';\nimport {URL, mockDeleteResponse, mockPostResponse} from './registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {ERROR_TYPE} from '../../Errors/types';\nimport {\n CALLS_CLEARED_HANDLER_UTIL,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_REHOMING_INTERVAL_MIN,\n FAILBACK_UTIL,\n FAILOVER_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REGISTRATION_UTIL,\n REG_429_RETRY_UTIL,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n SEC_TO_MSEC_MFACTOR,\n RECONNECT_ON_FAILURE_UTIL,\n METHODS,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS} from '../line/types';\nimport {createLineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE} from '../../Metrics/types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'log');\nconst infoSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\njest.spyOn(utils, 'uploadLogs').mockResolvedValue();\ndescribe('Registration Tests', () => {\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n const lineEmitter = jest.fn();\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n\n const mockResponse = {\n ...getMockRequestTemplate(),\n uri: `${mobiusUris.primary[0]}device`,\n body: {\n userId: webex.internal.device.userId,\n clientDeviceUri: webex.internal.device.url,\n serviceData: {\n domain: '',\n indicator: 'calling',\n },\n },\n };\n\n const ccMockResponse = {\n ...mockResponse,\n body: {\n ...mockResponse.body,\n serviceData: {\n domain: '',\n indicator: 'contactcenter',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n const failurePayload429One = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 42,\n },\n });\n\n const failurePayload429Two = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 33,\n },\n });\n\n const failurePayload429Three = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 136,\n },\n });\n\n const failurePayload429Four = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 81,\n },\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n let reg: IRegistration;\n let restartSpy;\n let restoreSpy;\n let postRegistrationSpy;\n let deregisterSpy;\n let failoverSpy;\n let retry429Spy;\n let metricSpy;\n\n const setupRegistration = (mockServiceData) => {\n const mutex = new Mutex();\n reg = createRegistration(webex, mockServiceData, mutex, lineEmitter, LOGGER.INFO);\n reg.setMobiusServers(mobiusUris.primary, mobiusUris.backup);\n jest.clearAllMocks();\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n deregisterSpy = jest.spyOn(reg, 'deregister');\n failoverSpy = jest.spyOn(reg, 'startFailoverTimer');\n retry429Spy = jest.spyOn(reg, 'handle429Retry');\n metricSpy = jest.spyOn(reg.metricManager, 'submitRegistrationMetric');\n };\n\n beforeEach(() => {\n setupRegistration(MockServiceData);\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n localStorage.clear();\n });\n\n it('verify successful registration', async () => {\n webex.request.mockReturnValueOnce({\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.CONNECTING);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.REGISTERED, mockPostResponse);\n\n // Check that log.log was called for successful registration\n expect(logSpy).toBeCalledWith(\n `Registration successful for deviceId: ${mockPostResponse.device.deviceId} userId: ${mockPostResponse.userId} responseTrackingId: webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'register',\n })\n );\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n headers: {},\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n const error = createLineError(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n {},\n ERROR_TYPE.TOKEN_ERROR,\n RegistrationStatus.INACTIVE\n );\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.ERROR, undefined, error);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n '',\n undefined,\n error\n );\n });\n\n it('verify failure registration 403-101', async () => {\n webex.request\n .mockRejectedValueOnce({\n body: {\n userId: mockPostResponse.userId,\n errorCode: 101,\n devices: [mockPostResponse.device],\n },\n statusCode: 403,\n })\n .mockResolvedValueOnce({\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(global.fetch).toBeCalledOnceWith(mockPostResponse.device.uri, {\n method: 'DELETE',\n headers: expect.anything(),\n });\n\n expect(warnSpy).toBeCalledWith('User device limit exceeded', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restored successfully.', expect.anything());\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(4);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(3, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.REGISTERED, mockPostResponse);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'UNKNOWN',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n describe('429 handling tests', () => {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n const logSpy = jest.spyOn(log, 'log');\n\n beforeEach(() => {\n mobiusUris.backup.pop();\n });\n\n afterEach(() => {\n mobiusUris.backup.push(URL);\n jest.clearAllMocks();\n });\n\n it('handle 429 received during initial registration failure and first attempt with primary', async () => {\n jest.useFakeTimers();\n logSpy.mockClear();\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration failed with 429 with higher retyrAfter, interval should be updtaed with retryAfter.\n * The first attempt to register with primary should be made after retryAfter seconds.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'triggerRegistration'\n );\n expect(reg.retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n /* The first attempt to register with primary failed with 429 with lower retryAfter, interval should remain the same.\n * The second attempt to register with primary will be scheduled as per the interval calculated.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429Two.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(reg.retryAfter).toEqual(failurePayload429Two.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(43 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* The second attempt to register with primary failed with 500, the retryAfter should be undefined.\n * The third attempt to register with primary will be scheduled as per the interval calculated.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined);\n expect(failoverSpy).toBeCalledOnceWith(3, 85);\n });\n\n it('handle 429 received with higher retryAfter than the interval when interval with elapsedTime is already reaching threshold timer so we failover immediately', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 3`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while the last attempt for primary', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration and first 2 attempts with primary failed with non-final 5xx error responses.\n * Last attempt with primary failed with 429, the retryAfter should be used to schedule the next attempt but\n * the failover is triggered before the scheduling logic kicks in.\n */\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 41 seconds, number of attempts : 3`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(41 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(4, 114);\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(5, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while failing over to backup server for CC flow', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n /* Failover to backup server failed with 429, the retryAfter is used to schedule the next attempt with backup server.\n * Interval will be updated with retryAfter as interval calculated is less than the retryAfter.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with backup servers in ${failurePayload429One.headers['retry-after']} seconds.`,\n loggerContext\n );\n\n webex.request.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('checking the retryAfter exceeding the threshold timers in first attempt itself', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(40);\n webex.request.mockRejectedValueOnce(failurePayload429Three);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Three.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n });\n\n it('checking the retryAfter exceeding the threshold timers in later attempts', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(39)\n .mockReturnValueOnce(43);\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Four)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 43 seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Four.headers['retry-after']} seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n });\n\n describe('restorePreviousRegistration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during reconnect', async () => {\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to set the retry-after value\n // Verify restore is invoked first and retry-after captured before scheduling\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during reconnect', async () => {\n // Setup: Register successfully with primary first\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore gets invoked, 429 with retry-after is observed and captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n it('should restart registration with primary if we get 429 while on backup', async () => {\n // Setup: Register successfully with primary first\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.backup[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore path taken first and 429 handling captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n // No failover scheduling expected in this path\n expect(failoverSpy).not.toBeCalled();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.backup[0]]\n );\n // Immediately try primary servers when retry-after >= 60 seconds on backup\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n });\n });\n\n describe('handleConnectionRestoration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during handleConnectionRestoration', async () => {\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during handleConnectionRestoration', async () => {\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(retry429Spy).toBeCalledOnceWith(100, METHODS.HANDLE_CONNECTION_RESTORATION);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n });\n\n describe('Registration failover tests', () => {\n it('persists failover state in localStorage when primary retry is scheduled', async () => {\n jest.useFakeTimers();\n // Force initial registration to fail to schedule failover\n webex.request.mockRejectedValueOnce(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n\n // A failover timer should be scheduled; verify localStorage contains state\n const key = `wxc-failover-state.${webex.internal.device.userId}`;\n const raw = localStorage.getItem(key);\n expect(raw).toBeTruthy();\n const state = JSON.parse(raw as string);\n expect(state).toEqual(\n expect.objectContaining({\n attempt: 1,\n timeElapsed: 0,\n retryScheduledTime: expect.any(Number),\n serverType: 'primary',\n })\n );\n });\n\n it('resumes failover from localStorage on triggerRegistration', async () => {\n jest.useFakeTimers();\n const key = `wxc-failover-state.${webex.internal.device.userId}`;\n const now = Math.floor(Date.now() / 1000);\n // Seed a cached state indicating a retry should have already occurred 5s ago\n localStorage.setItem(\n key,\n JSON.stringify({\n attempt: 3,\n timeElapsed: 12,\n retryScheduledTime: now - 5,\n serverType: 'primary',\n })\n );\n\n const failoverSpy = jest.spyOn(reg as any, 'startFailoverTimer');\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(failoverSpy).toHaveBeenCalledTimes(1);\n const [attemptArg, timeElapsedArg] = failoverSpy.mock.calls[0];\n expect(attemptArg).toBe(3);\n expect(timeElapsedArg).toBeGreaterThanOrEqual(12);\n });\n\n it('verify unreachable primary with reachable backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(metricSpy).toHaveBeenNthCalledWith(\n 3,\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n FAILOVER_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('cc: verify unreachable primary with reachable backup server', async () => {\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n });\n\n it('verify unreachable primary and backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /*\n * 2 calls for primary -> initial and after timer expiry.\n * 2 calls for each backup entry -> 2 * 2 = 4.\n * So a total of 6 calls to webex.request and handleErrors\n */\n expect(webex.request).toBeCalledTimes(6);\n expect(handleErrorSpy).toBeCalledTimes(6);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[1]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n });\n\n describe('Registration failback tests', () => {\n let isPrimaryActiveSpy;\n beforeEach(async () => {\n isPrimaryActiveSpy = jest.spyOn(reg, 'isPrimaryActive');\n isPrimaryActiveSpy.mockReturnValue(true);\n /* keep keepalive as active so that it wont interfere with the failback tests */\n jest.useFakeTimers();\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n reg.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n reg.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n\n /* These 2 calls to handleErrorSpy are for primary after which it fails over to backup */\n expect(handleErrorSpy).toBeCalledTimes(2);\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n });\n\n it('verify 429 error with failback to primary after initial registration with backup: Restore failure', async () => {\n // delete should be successful\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n // Mock to fail twice with 429 (once for executeFailback, once for restorePreviousRegistration)\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload429Two);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n jest.advanceTimersByTime(10000);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429Two.headers['retry-after'],\n 'executeFailback'\n );\n // After handling 429 during failback, the counter is incremented to 1\n expect(reg.failback429RetryAttempts).toBe(1);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n // restartRegistration is not called immediately because 429 with retry-after < 60\n // schedules a delayed retry instead\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).not.toBe(undefined); // Timer is set in handle429Retry\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure', async () => {\n postRegistrationSpy.mockRejectedValue(failurePayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure with final error', async () => {\n const finalErrorPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n body: mockPostResponse,\n });\n postRegistrationSpy.mockClear();\n postRegistrationSpy\n .mockRejectedValue(finalErrorPayload)\n .mockRejectedValueOnce(failurePayload);\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore success', async () => {\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify successful failback to primary after initial registration with backup', async () => {\n postRegistrationSpy.mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url must now match with the primary url */\n expect(deregisterSpy).toBeCalledOnceWith();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.primary[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.failbackTimer).toBe(undefined);\n expect(restoreSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(mockPostResponse.rehomingIntervalMin);\n expect(reg.rehomingIntervalMax).toBe(mockPostResponse.rehomingIntervalMax);\n });\n\n it('verify unsuccessful failback attempt due to active call', async () => {\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(deregisterSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(infoSpy).toBeCalledWith(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback attempt due to primary server being down', async () => {\n isPrimaryActiveSpy.mockReturnValue(false);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(deregisterSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const beforeEachSetupForKeepalive = async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n };\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n reg.clearKeepaliveTimer();\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n\n await beforeEachSetupForKeepalive();\n\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n\n reg.webWorker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\n\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_FAILURE', err: {statusCode: 503}, keepAliveRetryCount: 1},\n } as MessageEvent);\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n // Run any necessary setup for keepalive\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Clear previous event emissions\n lineEmitter.mockClear();\n\n // Assume registration is active\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n // Use fake timers to trigger keepalive initialization\n jest.useFakeTimers();\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n\n // Simulate the worker sending a KEEPALIVE_FAILURE message with retry count at threshold.\n const RETRY_COUNT_THRESHOLD = reg.isCCFlow ? 4 : 5;\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: RETRY_COUNT_THRESHOLD,\n },\n };\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n\n jest.useRealTimers();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 5 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.webWorker).toBeDefined();\n\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const url = 'https://mobius-dfw.webex.com/api/v1/calling/web/';\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 5,\n },\n } as MessageEvent);\n\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(reconnectSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n\n localStorage.clear();\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n\n // Advance timers and flush any remaining promises.\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n // reconnectSpy should have been called only once.\n expect(reconnectSpy).toBeCalledTimes(1);\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n // Active Mobius URL should remain unchanged.\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(handleErrorSpy).toBeCalledTimes(3);\n\n localStorage.clear();\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n // In a complete failure‐then-recovery scenario, we expect another failure event to have been handled.\n // For that, simulate a second failure event on the new worker.\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledTimes(4);\n\n // And then re-register successfully:\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n });\n\n it('cc: verify failover to backup server after 4 keep alive failure with primary server', async () => {\n // Register with contact center service\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n await beforeEachSetupForKeepalive();\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n // Spy on clearKeepaliveTimer and simulate reconnectOnFailure behavior\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n // Simulate a KEEPALIVE_FAILURE message from the worker with a retry count equal to threshold (4 for CC)\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 4,\n },\n } as MessageEvent);\n\n // Wait for any asynchronous actions to complete\n await flushPromises();\n\n // Verify that the keepalive timer was cleared and reconnectOnFailure was triggered\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(reconnectSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n\n // Verify that the active Mobius URL has been updated to the backup server and registration is active\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Simulate an active call.\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const threshold = reg.isCCFlow ? 4 : 5;\n\n // Simulate a KEEPALIVE_FAILURE event with a 503 error at threshold.\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent;\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n // At this point, clearKeepaliveTimer was called so the worker is terminated.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n expect(reconnectSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(true);\n expect(infoSpy).toBeCalledWith(\n 'Active call(s) present, deferred reconnect till call cleanup.',\n {file: REGISTRATION_FILE, method: expect.any(String)}\n );\n\n reconnectSpy.mockClear();\n\n // Now simulate call cleanup.\n reg.callManager.callCollection = {};\n webex.request.mockResolvedValueOnce(successPayload);\n\n // Call reconnectOnFailure manually. With no active calls, this should trigger re-registration.\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n await flushPromises();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n // After re-registration, registration status becomes ACTIVE and a new worker is created.\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n expect(reconnectSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n });\n\n it('checks for keep-alive failure with final error: 404', async () => {\n await beforeEachSetupForKeepalive();\n webex.request.mockResolvedValueOnce(successPayload);\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const handle404CbSpy = jest.spyOn(reg, 'handle404KeepaliveFailure');\n const registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 404 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith(\n {statusCode: 404},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.ERROR, undefined, expect.anything());\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(2);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n\n expect(handle404CbSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(registerSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n });\n\n it('checks for keep-alive failure with 429', async () => {\n await beforeEachSetupForKeepalive();\n const keepaliveSpy = jest.spyOn(reg, 'startKeepaliveTimer');\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 429, headers: {'retry-after': 20}},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 429 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith(\n {statusCode: 429, headers: {'retry-after': 20}},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n expect(retry429Spy).toBeCalledOnceWith(20, 'startKeepaliveTimer');\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n\n jest.advanceTimersByTime(20 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(keepaliveSpy).toBeCalledOnceWith(\n reg.deviceInfo.device?.uri as string,\n reg.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n expect(logSpy).toBeCalledWith('Resuming keepalive after 20 seconds', {\n file: REGISTRATION_FILE,\n method: 'handle429Retry',\n });\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n });\n\n it('ensure retryAfter is set when 429 occurs during failover retry', async () => {\n await beforeEachSetupForKeepalive();\n // Simulate loss of registration so failover path attempts a new registration\n reg.clearKeepaliveTimer();\n reg.setStatus(RegistrationStatus.INACTIVE);\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // Make the failover interval deterministic and simulate 429 on the failover attempt\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(33);\n webex.request.mockRejectedValueOnce(failurePayload429One);\n\n // Directly schedule the failover attempt\n await (reg as any).startFailoverTimer();\n\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect((reg as any).retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n\n jest.useRealTimers();\n });\n\n it('sets retryAfter when reconnectOnFailure caller receives 429 after keepalive threshold miss', async () => {\n await beforeEachSetupForKeepalive();\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // On reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL) first restore attempt, make registration respond with 429 (retry-after: 20)\n webex.request.mockRejectedValueOnce({\n statusCode: 429,\n body: mockPostResponse,\n headers: {'retry-after': 20},\n });\n\n // Trigger the keepalive failure at threshold to route to reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL)\n const threshold = reg.isCCFlow ? 4 : 5;\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n // handle429Retry is called with caller 'reconnectOnFailure' → else branch executes and sets retryAfter\n expect(retry429Spy).toBeCalledOnceWith(20, RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n });\n\n describe('Primary server status checks', () => {\n it('success: primary server status to be up', async () => {\n const pingSuccessPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n });\n webex.request.mockResolvedValue(pingSuccessPayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(true);\n });\n\n it('failed: primary server status to be down', async () => {\n const pingFailurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n });\n webex.request.mockResolvedValue(pingFailurePayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(false);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|