@moveo-ai/web-client 0.88.4-true.2 → 0.88.5-true.1

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.
Files changed (74) hide show
  1. package/dist/147.min.js +3 -0
  2. package/dist/147.min.js.LICENSE.txt +6 -0
  3. package/dist/147.min.js.map +1 -0
  4. package/dist/329.min.js +3 -0
  5. package/dist/329.min.js.LICENSE.txt +6 -0
  6. package/dist/329.min.js.map +1 -0
  7. package/dist/audio-client.min.js +3 -0
  8. package/dist/audio-client.min.js.LICENSE.txt +46 -0
  9. package/dist/audio-client.min.js.map +1 -0
  10. package/dist/iframe.min.js +1 -1
  11. package/dist/iframe.min.js.LICENSE.txt +1 -1
  12. package/dist/iframe.min.js.map +1 -1
  13. package/dist/iframe.v2.min.js +1 -1
  14. package/dist/iframe.v2.min.js.LICENSE.txt +2 -2
  15. package/dist/iframe.v2.min.js.map +1 -1
  16. package/dist/index.html +1 -1
  17. package/dist/preview/index.html +91 -0
  18. package/dist/preview-audio/index.html +68 -0
  19. package/dist/preview.css.min.js.LICENSE.txt +1 -1
  20. package/dist/public/background.svg +79 -0
  21. package/dist/public/espa.png +0 -0
  22. package/dist/public/fonts/alpha/AlphaText-Bold.woff +0 -0
  23. package/dist/public/fonts/alpha/AlphaText-BoldItalic.woff +0 -0
  24. package/dist/public/fonts/alpha/AlphaText-Italic.woff +0 -0
  25. package/dist/public/fonts/alpha/AlphaText-Light.woff +0 -0
  26. package/dist/public/fonts/alpha/AlphaText-LightItalic.woff +0 -0
  27. package/dist/public/fonts/alpha/AlphaText-Medium.woff +0 -0
  28. package/dist/public/fonts/alpha/AlphaText-MediumItalic.woff +0 -0
  29. package/dist/public/fonts/alpha/AlphaText-Regular.woff +0 -0
  30. package/dist/public/fonts/alpha/AlphaText-SemiBold.woff +0 -0
  31. package/dist/public/fonts/alpha/AlphaText-SemiBoldItalic.woff +0 -0
  32. package/dist/public/fonts/aptos/Aptos-Bold-Italic.ttf +0 -0
  33. package/dist/public/fonts/aptos/Aptos-Bold.ttf +0 -0
  34. package/dist/public/fonts/aptos/Aptos-ExtraBold-Italic.ttf +0 -0
  35. package/dist/public/fonts/aptos/Aptos-ExtraBold.ttf +0 -0
  36. package/dist/public/fonts/aptos/Aptos-Italic.ttf +0 -0
  37. package/dist/public/fonts/aptos/Aptos-Light-Italic.ttf +0 -0
  38. package/dist/public/fonts/aptos/Aptos-Light.ttf +0 -0
  39. package/dist/public/fonts/aptos/Aptos-SemiBold-Italic.ttf +0 -0
  40. package/dist/public/fonts/aptos/Aptos-SemiBold.ttf +0 -0
  41. package/dist/public/fonts/aptos/Aptos.ttf +0 -0
  42. package/dist/public/locales/ar.json +183 -0
  43. package/dist/public/locales/bg.json +183 -0
  44. package/dist/public/locales/cs.json +183 -0
  45. package/dist/public/locales/da.json +183 -0
  46. package/dist/public/locales/de.json +183 -0
  47. package/dist/public/locales/el.json +183 -0
  48. package/dist/public/locales/en.json +183 -0
  49. package/dist/public/locales/es.json +183 -0
  50. package/dist/public/locales/fr.json +183 -0
  51. package/dist/public/locales/id.json +183 -0
  52. package/dist/public/locales/it.json +183 -0
  53. package/dist/public/locales/ja.json +183 -0
  54. package/dist/public/locales/me.json +183 -0
  55. package/dist/public/locales/nl-be.json +183 -0
  56. package/dist/public/locales/nl.json +183 -0
  57. package/dist/public/locales/pl.json +183 -0
  58. package/dist/public/locales/pt-br.json +183 -0
  59. package/dist/public/locales/pt.json +183 -0
  60. package/dist/public/locales/ro.json +183 -0
  61. package/dist/public/locales/ru.json +183 -0
  62. package/dist/public/locales/sq.json +183 -0
  63. package/dist/public/locales/sr.json +183 -0
  64. package/dist/public/locales/sv.json +183 -0
  65. package/dist/public/locales/tl.json +183 -0
  66. package/dist/public/locales/tr.json +183 -0
  67. package/dist/public/locales/zh.json +183 -0
  68. package/dist/public/nbg.svg +3 -0
  69. package/dist/public/og-image.jpg +0 -0
  70. package/dist/public/webview-image.png +0 -0
  71. package/dist/web-client.min.js +1 -1
  72. package/dist/web-client.min.js.LICENSE.txt +1 -1
  73. package/dist/web-client.min.js.map +1 -1
  74. package/package.json +38 -66
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-client.min.js","mappings":"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","sources":["webpack://MoveoAI/webpack/universalModuleDefinition","webpack://MoveoAI/webpack/runtime/create fake namespace object","webpack://MoveoAI/webpack/runtime/load script","webpack://MoveoAI/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://MoveoAI/./node_modules/debug/src/browser.js","webpack://MoveoAI/./node_modules/scheduler/index.js","webpack://MoveoAI/./node_modules/react-dom/index.js","webpack://MoveoAI/./node_modules/void-elements/index.js","webpack://MoveoAI/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://MoveoAI/./node_modules/loglevel/lib/loglevel.js","webpack://MoveoAI/./node_modules/react-dom/client.js","webpack://MoveoAI/./node_modules/debug/src/common.js","webpack://MoveoAI/./node_modules/events/events.js","webpack://MoveoAI/./node_modules/react/jsx-runtime.js","webpack://MoveoAI/./node_modules/react/cjs/react.production.min.js","webpack://MoveoAI/./node_modules/ms/index.js","webpack://MoveoAI/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://MoveoAI/./node_modules/react/index.js","webpack://MoveoAI/webpack/bootstrap","webpack://MoveoAI/webpack/runtime/compat get default export","webpack://MoveoAI/webpack/runtime/define property getters","webpack://MoveoAI/webpack/runtime/ensure chunk","webpack://MoveoAI/webpack/runtime/get javascript chunk filename","webpack://MoveoAI/webpack/runtime/global","webpack://MoveoAI/webpack/runtime/hasOwnProperty shorthand","webpack://MoveoAI/webpack/runtime/make namespace object","webpack://MoveoAI/webpack/runtime/publicPath","webpack://MoveoAI/webpack/runtime/jsonp chunk loading","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/backoff.ts","webpack://MoveoAI/./node_modules/tslib/tslib.es6.mjs","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/errors/generated.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/errors/twilioError.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/errors/index.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/constants.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/log.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/outputdevicecollection.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/shims/mediadeviceinfo.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/util.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/audiohelper.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/audioprocessoreventobserver.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/dialtonePlayer.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/request.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/eventpublisher.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/mockrtcstatsreport.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/stats.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/preflight/preflight.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/wstransport.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/regions.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/pstream.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/sdp.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/rtcpc.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/peerconnection.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/getusermedia.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/sid.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/deferred.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/asyncQueue.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/audioplayer/deferred.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/audioplayer/eventtarget.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/audioplayer/audioplayer.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/sound.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/device.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/index.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/icecandidate.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/rtc/mos.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/statsMonitor.ts","webpack://MoveoAI/./node_modules/@twilio/voice-sdk/lib/twilio/call.ts","webpack://MoveoAI/./node_modules/@heroicons/react/24/solid/esm/MicrophoneIcon.js","webpack://MoveoAI/./node_modules/@heroicons/react/24/solid/esm/PhoneXMarkIcon.js","webpack://MoveoAI/./node_modules/html-parse-stringify/src/parse.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/utils.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/unescape.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/defaults.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/context.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://MoveoAI/./src/util/utils.ts","webpack://MoveoAI/./src/newComponents/AudioWidget.tsx","webpack://MoveoAI/./src/controller/audio-controller.ts","webpack://MoveoAI/./node_modules/i18next/dist/esm/i18next.js","webpack://MoveoAI/./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","webpack://MoveoAI/./node_modules/i18next-http-backend/esm/utils.js","webpack://MoveoAI/./node_modules/i18next-http-backend/esm/request.js","webpack://MoveoAI/./node_modules/i18next-http-backend/esm/index.js","webpack://MoveoAI/./src/i18n/index.ts","webpack://MoveoAI/./src/config/constants.ts","webpack://MoveoAI/./src/audio-preview.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"MoveoAudio\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MoveoAudio\"] = factory();\n\telse\n\t\troot[\"MoveoAudio\"] = factory();\n})(this, function() {\nreturn ","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"MoveoAI:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n var _loggersByName = {};\n var defaultLogger = null;\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods() {\n /*jshint validthis:true */\n var level = this.getLevel();\n\n // Replace the actual methods.\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, this.name);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n\n // Return any important warnings.\n if (typeof console === undefinedType && level < this.levels.SILENT) {\n return \"No console available for logging\";\n }\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, _level, _loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, factory) {\n // Private instance variables.\n var self = this;\n /**\n * The level inherited from a parent logger (or a global default). We\n * cache this here rather than delegating to the parent so that it stays\n * in sync with the actual logging methods that we have installed (the\n * parent could change levels but we might not have rebuilt the loggers\n * in this child yet).\n * @type {number}\n */\n var inheritedLevel;\n /**\n * The default level for this logger, if any. If set, this overrides\n * `inheritedLevel`.\n * @type {number|null}\n */\n var defaultLevel;\n /**\n * A user-specific level for this logger. If set, this overrides\n * `defaultLevel`.\n * @type {number|null}\n */\n var userLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var cookieName = encodeURIComponent(storageKey);\n var location = cookie.indexOf(cookieName + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(\n cookie.slice(location + cookieName.length + 1)\n )[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n function normalizeLevel(input) {\n var level = input;\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n return level;\n } else {\n throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n }\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n if (userLevel != null) {\n return userLevel;\n } else if (defaultLevel != null) {\n return defaultLevel;\n } else {\n return inheritedLevel;\n }\n };\n\n self.setLevel = function (level, persist) {\n userLevel = normalizeLevel(level);\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(userLevel);\n }\n\n // NOTE: in v2, this should call rebuild(), which updates children.\n return replaceLoggingMethods.call(self);\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = normalizeLevel(level);\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n userLevel = null;\n clearPersistedLevel();\n replaceLoggingMethods.call(self);\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n self.rebuild = function () {\n if (defaultLogger !== self) {\n inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n }\n replaceLoggingMethods.call(self);\n\n if (defaultLogger === self) {\n for (var childName in _loggersByName) {\n _loggersByName[childName].rebuild();\n }\n }\n };\n\n // Initialize all the internal levels.\n inheritedLevel = normalizeLevel(\n defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n );\n var initialLevel = getPersistedLevel();\n if (initialLevel != null) {\n userLevel = normalizeLevel(initialLevel);\n }\n replaceLoggingMethods.call(self);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n defaultLogger = new Logger();\n\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name,\n defaultLogger.methodFactory\n );\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t233: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = this[\"webpackChunkMoveoAI\"] = this[\"webpackChunkMoveoAI\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// @ts-nocheck\n// NOTE (csantos): This file was taken directly from twilio-video and has been renamed from JS to TS only.\n// It needs to be re-written as part of the overall updating of the files to TS.\nimport { EventEmitter } from 'events';\n\nclass Backoff extends EventEmitter {\n /**\n * Construct a {@link Backoff}.\n * @param {object} options\n * @property {number} min - Initial timeout in milliseconds [100]\n * @property {number} max - Max timeout [10000]\n * @property {boolean} jitter - Apply jitter [0]\n * @property {number} factor - Multiplication factor for Backoff operation [2]\n */\n constructor(options) {\n super();\n Object.defineProperties(this, {\n _attempts: {\n value: 0,\n writable: true,\n },\n _duration: {\n enumerable: false,\n get() {\n let ms = this._min * Math.pow(this._factor, this._attempts);\n if (this._jitter) {\n const rand = Math.random();\n const deviation = Math.floor(rand * this._jitter * ms);\n // tslint:disable-next-line\n ms = (Math.floor(rand * 10) & 1) === 0 ? ms - deviation : ms + deviation;\n }\n // tslint:disable-next-line\n return Math.min(ms, this._max) | 0;\n },\n },\n _factor: { value: options.factor || 2 },\n _jitter: { value: options.jitter > 0 && options.jitter <= 1 ? options.jitter : 0 },\n _max: { value: options.max || 10000 },\n _min: { value: options.min || 100 },\n _timeoutID: {\n value: null,\n writable: true,\n },\n });\n }\n\n backoff() {\n const duration = this._duration;\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n\n this.emit('backoff', this._attempts, duration);\n this._timeoutID = setTimeout(() => {\n this.emit('ready', this._attempts, duration);\n this._attempts++;\n }, duration);\n }\n\n reset() {\n this._attempts = 0;\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n}\n\nexport default Backoff;\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/* tslint:disable max-classes-per-file max-line-length */\n/**\n * This is a generated file. Any modifications here will be overwritten. See scripts/errors.js.\n */\nimport TwilioError from './twilioError';\nexport { TwilioError };\n\nexport namespace AuthorizationErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class AccessTokenInvalid extends TwilioError {\n causes: string[] = [];\n code: number = 20101;\n description: string = 'Invalid access token';\n explanation: string = 'Twilio was unable to validate your Access Token';\n name: string = 'AccessTokenInvalid';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.AccessTokenInvalid.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class AccessTokenExpired extends TwilioError {\n causes: string[] = [];\n code: number = 20104;\n description: string = 'Access token expired or expiration date invalid';\n explanation: string = 'The Access Token provided to the Twilio API has expired, the expiration time specified in the token was invalid, or the expiration time specified was too far in the future';\n name: string = 'AccessTokenExpired';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.AccessTokenExpired.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class AuthenticationFailed extends TwilioError {\n causes: string[] = [];\n code: number = 20151;\n description: string = 'Authentication Failed';\n explanation: string = 'The Authentication with the provided JWT failed';\n name: string = 'AuthenticationFailed';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.AuthenticationFailed.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace SignatureValidationErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class AccessTokenSignatureValidationFailed extends TwilioError {\n causes: string[] = [\n 'The access token has an invalid Account SID, API Key, or API Key Secret.',\n ];\n code: number = 31202;\n description: string = 'Signature validation failed.';\n explanation: string = 'The provided access token failed signature validation.';\n name: string = 'AccessTokenSignatureValidationFailed';\n solutions: string[] = [\n 'Ensure the Account SID, API Key, and API Key Secret are valid when generating your access token.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, SignatureValidationErrors.AccessTokenSignatureValidationFailed.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace ClientErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class BadRequest extends TwilioError {\n causes: string[] = [];\n code: number = 31400;\n description: string = 'Bad Request (HTTP/SIP)';\n explanation: string = 'The request could not be understood due to malformed syntax.';\n name: string = 'BadRequest';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, ClientErrors.BadRequest.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class NotFound extends TwilioError {\n causes: string[] = [\n 'The outbound call was made to an invalid phone number.',\n 'The TwiML application sid is missing a Voice URL.',\n ];\n code: number = 31404;\n description: string = 'Not Found (HTTP/SIP)';\n explanation: string = 'The server has not found anything matching the request.';\n name: string = 'NotFound';\n solutions: string[] = [\n 'Ensure the phone number dialed is valid.',\n 'Ensure the TwiML application is configured correctly with a Voice URL link.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, ClientErrors.NotFound.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class TemporarilyUnavailable extends TwilioError {\n causes: string[] = [];\n code: number = 31480;\n description: string = 'Temporarily Unavailable (SIP)';\n explanation: string = 'The callee is currently unavailable.';\n name: string = 'TemporarilyUnavailable';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, ClientErrors.TemporarilyUnavailable.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class BusyHere extends TwilioError {\n causes: string[] = [];\n code: number = 31486;\n description: string = 'Busy Here (SIP)';\n explanation: string = 'The callee is busy.';\n name: string = 'BusyHere';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, ClientErrors.BusyHere.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace SIPServerErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class Decline extends TwilioError {\n causes: string[] = [];\n code: number = 31603;\n description: string = 'Decline (SIP)';\n explanation: string = 'The callee does not wish to participate in the call.';\n name: string = 'Decline';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, SIPServerErrors.Decline.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace GeneralErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class UnknownError extends TwilioError {\n causes: string[] = [];\n code: number = 31000;\n description: string = 'Unknown Error';\n explanation: string = 'An unknown error has occurred. See error details for more information.';\n name: string = 'UnknownError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.UnknownError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ApplicationNotFoundError extends TwilioError {\n causes: string[] = [];\n code: number = 31001;\n description: string = 'Application Not Found';\n explanation: string = '';\n name: string = 'ApplicationNotFoundError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.ApplicationNotFoundError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ConnectionDeclinedError extends TwilioError {\n causes: string[] = [];\n code: number = 31002;\n description: string = 'Connection Declined';\n explanation: string = '';\n name: string = 'ConnectionDeclinedError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.ConnectionDeclinedError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ConnectionTimeoutError extends TwilioError {\n causes: string[] = [];\n code: number = 31003;\n description: string = 'Connection Timeout';\n explanation: string = 'The server could not produce a response within a suitable amount of time.';\n name: string = 'ConnectionTimeoutError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.ConnectionTimeoutError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ConnectionError extends TwilioError {\n causes: string[] = [];\n code: number = 31005;\n description: string = 'Connection error';\n explanation: string = 'A connection error occurred during the call';\n name: string = 'ConnectionError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.ConnectionError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class CallCancelledError extends TwilioError {\n causes: string[] = [\n 'The incoming call was cancelled because it was not answered in time or it was accepted/rejected by another application instance registered with the same identity.',\n ];\n code: number = 31008;\n description: string = 'Call cancelled';\n explanation: string = 'Unable to answer because the call has ended';\n name: string = 'CallCancelledError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.CallCancelledError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class TransportError extends TwilioError {\n causes: string[] = [];\n code: number = 31009;\n description: string = 'Transport error';\n explanation: string = 'No transport available to send or receive messages';\n name: string = 'TransportError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, GeneralErrors.TransportError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace MalformedRequestErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class MalformedRequestError extends TwilioError {\n causes: string[] = [\n 'Invalid content or MessageType passed to sendMessage method.',\n ];\n code: number = 31100;\n description: string = 'The request had malformed syntax.';\n explanation: string = 'The request could not be understood due to malformed syntax.';\n name: string = 'MalformedRequestError';\n solutions: string[] = [\n 'Ensure content and MessageType passed to sendMessage method are valid.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.MalformedRequestError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class MissingParameterArrayError extends TwilioError {\n causes: string[] = [];\n code: number = 31101;\n description: string = 'Missing parameter array in request';\n explanation: string = '';\n name: string = 'MissingParameterArrayError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.MissingParameterArrayError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class AuthorizationTokenMissingError extends TwilioError {\n causes: string[] = [];\n code: number = 31102;\n description: string = 'Authorization token missing in request.';\n explanation: string = '';\n name: string = 'AuthorizationTokenMissingError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.AuthorizationTokenMissingError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class MaxParameterLengthExceededError extends TwilioError {\n causes: string[] = [];\n code: number = 31103;\n description: string = 'Maximum parameter length has been exceeded.';\n explanation: string = 'Length of parameters cannot exceed MAX_PARAM_LENGTH.';\n name: string = 'MaxParameterLengthExceededError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.MaxParameterLengthExceededError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class InvalidBridgeTokenError extends TwilioError {\n causes: string[] = [];\n code: number = 31104;\n description: string = 'Invalid bridge token';\n explanation: string = '';\n name: string = 'InvalidBridgeTokenError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.InvalidBridgeTokenError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class InvalidClientNameError extends TwilioError {\n causes: string[] = [\n 'Client name contains invalid characters.',\n ];\n code: number = 31105;\n description: string = 'Invalid client name';\n explanation: string = 'Client name should not contain control, space, delims, or unwise characters.';\n name: string = 'InvalidClientNameError';\n solutions: string[] = [\n 'Make sure that client name does not contain any of the invalid characters.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.InvalidClientNameError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ReconnectParameterInvalidError extends TwilioError {\n causes: string[] = [];\n code: number = 31107;\n description: string = 'The reconnect parameter is invalid';\n explanation: string = '';\n name: string = 'ReconnectParameterInvalidError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MalformedRequestErrors.ReconnectParameterInvalidError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace AuthorizationErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class AuthorizationError extends TwilioError {\n causes: string[] = [];\n code: number = 31201;\n description: string = 'Authorization error';\n explanation: string = 'The request requires user authentication. The server understood the request, but is refusing to fulfill it.';\n name: string = 'AuthorizationError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.AuthorizationError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class NoValidAccountError extends TwilioError {\n causes: string[] = [];\n code: number = 31203;\n description: string = 'No valid account';\n explanation: string = '';\n name: string = 'NoValidAccountError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.NoValidAccountError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class InvalidJWTTokenError extends TwilioError {\n causes: string[] = [];\n code: number = 31204;\n description: string = 'Invalid JWT token';\n explanation: string = '';\n name: string = 'InvalidJWTTokenError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.InvalidJWTTokenError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class JWTTokenExpiredError extends TwilioError {\n causes: string[] = [];\n code: number = 31205;\n description: string = 'JWT token expired';\n explanation: string = '';\n name: string = 'JWTTokenExpiredError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.JWTTokenExpiredError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class RateExceededError extends TwilioError {\n causes: string[] = [\n 'Rate limit exceeded.',\n ];\n code: number = 31206;\n description: string = 'Rate exceeded authorized limit.';\n explanation: string = 'The request performed exceeds the authorized limit.';\n name: string = 'RateExceededError';\n solutions: string[] = [\n 'Ensure message send rate does not exceed authorized limits.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.RateExceededError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class JWTTokenExpirationTooLongError extends TwilioError {\n causes: string[] = [];\n code: number = 31207;\n description: string = 'JWT token expiration too long';\n explanation: string = '';\n name: string = 'JWTTokenExpirationTooLongError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.JWTTokenExpirationTooLongError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ReconnectAttemptError extends TwilioError {\n causes: string[] = [];\n code: number = 31209;\n description: string = 'Reconnect attempt is not authorized.';\n explanation: string = '';\n name: string = 'ReconnectAttemptError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.ReconnectAttemptError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class CallMessageEventTypeInvalidError extends TwilioError {\n causes: string[] = [\n 'The Call Message Event Type is invalid and is not understood by Twilio Voice.',\n ];\n code: number = 31210;\n description: string = 'Call Message Event Type is invalid.';\n explanation: string = 'The Call Message Event Type is invalid and is not understood by Twilio Voice.';\n name: string = 'CallMessageEventTypeInvalidError';\n solutions: string[] = [\n 'Ensure the Call Message Event Type is Valid and understood by Twilio Voice and try again.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.CallMessageEventTypeInvalidError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class PayloadSizeExceededError extends TwilioError {\n causes: string[] = [\n 'The payload size of Call Message Event exceeds the authorized limit.',\n ];\n code: number = 31212;\n description: string = 'Call Message Event Payload size exceeded authorized limit.';\n explanation: string = 'The request performed to send a Call Message Event exceeds the payload size authorized limit';\n name: string = 'PayloadSizeExceededError';\n solutions: string[] = [\n 'Reduce payload size of Call Message Event to be within the authorized limit and try again.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, AuthorizationErrors.PayloadSizeExceededError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace UserMediaErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class PermissionDeniedError extends TwilioError {\n causes: string[] = [\n 'The user denied the getUserMedia request.',\n 'The browser denied the getUserMedia request.',\n ];\n code: number = 31401;\n description: string = 'UserMedia Permission Denied Error';\n explanation: string = 'The browser or end-user denied permissions to user media. Therefore we were unable to acquire input audio.';\n name: string = 'PermissionDeniedError';\n solutions: string[] = [\n 'The user should accept the request next time prompted. If the browser saved the deny, the user should change that permission in their browser.',\n 'The user should to verify that the browser has permission to access the microphone at this address.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, UserMediaErrors.PermissionDeniedError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class AcquisitionFailedError extends TwilioError {\n causes: string[] = [\n 'NotFoundError - The deviceID specified was not found.',\n 'The getUserMedia constraints were overconstrained and no devices matched.',\n ];\n code: number = 31402;\n description: string = 'UserMedia Acquisition Failed Error';\n explanation: string = 'The browser and end-user allowed permissions, however getting the media failed. Usually this is due to bad constraints, but can sometimes fail due to browser, OS or hardware issues.';\n name: string = 'AcquisitionFailedError';\n solutions: string[] = [\n 'Ensure the deviceID being specified exists.',\n 'Try acquiring media with fewer constraints.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, UserMediaErrors.AcquisitionFailedError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace SignalingErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class ConnectionError extends TwilioError {\n causes: string[] = [];\n code: number = 53000;\n description: string = 'Signaling connection error';\n explanation: string = 'Raised whenever a signaling connection error occurs that is not covered by a more specific error code.';\n name: string = 'ConnectionError';\n solutions: string[] = [];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, SignalingErrors.ConnectionError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ConnectionDisconnected extends TwilioError {\n causes: string[] = [\n 'The device running your application lost its Internet connection.',\n ];\n code: number = 53001;\n description: string = 'Signaling connection disconnected';\n explanation: string = 'Raised whenever the signaling connection is unexpectedly disconnected.';\n name: string = 'ConnectionDisconnected';\n solutions: string[] = [\n 'Ensure the device running your application has access to a stable Internet connection.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, SignalingErrors.ConnectionDisconnected.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\nexport namespace MediaErrors {\n /**\n * Error received from the Twilio backend.\n */\n export class ClientLocalDescFailed extends TwilioError {\n causes: string[] = [\n 'The Client may not be using a supported WebRTC implementation.',\n 'The Client may not have the necessary resources to create or apply a new media description.',\n ];\n code: number = 53400;\n description: string = 'Client is unable to create or apply a local media description';\n explanation: string = 'Raised whenever a Client is unable to create or apply a local media description.';\n name: string = 'ClientLocalDescFailed';\n solutions: string[] = [\n 'If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MediaErrors.ClientLocalDescFailed.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ClientRemoteDescFailed extends TwilioError {\n causes: string[] = [\n 'The Client may not be using a supported WebRTC implementation.',\n 'The Client may be connecting peer-to-peer with another Participant that is not using a supported WebRTC implementation.',\n 'The Client may not have the necessary resources to apply a new media description.',\n ];\n code: number = 53402;\n description: string = 'Client is unable to apply a remote media description';\n explanation: string = 'Raised whenever the Client receives a remote media description but is unable to apply it.';\n name: string = 'ClientRemoteDescFailed';\n solutions: string[] = [\n 'If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MediaErrors.ClientRemoteDescFailed.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n\n /**\n * Error received from the Twilio backend.\n */\n export class ConnectionError extends TwilioError {\n causes: string[] = [\n 'The Client was unable to establish a media connection.',\n 'A media connection which was active failed liveliness checks.',\n ];\n code: number = 53405;\n description: string = 'Media connection failed';\n explanation: string = 'Raised by the Client or Server whenever a media connection fails.';\n name: string = 'ConnectionError';\n solutions: string[] = [\n 'If the problem persists, try connecting to another region.',\n 'Check your Client\\'s network connectivity.',\n 'If you\\'ve provided custom ICE Servers then ensure that the URLs and credentials are valid.',\n ];\n\n /**\n * @internal\n */\n constructor();\n /**\n * @internal\n */\n constructor(message: string);\n /**\n * @internal\n */\n constructor(error: Error | object);\n /**\n * @internal\n */\n constructor(message: string, error: Error | object);\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super(messageOrError, error);\n Object.setPrototypeOf(this, MediaErrors.ConnectionError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n }\n}\n\n/**\n * @private\n */\nexport const errorsByCode: ReadonlyMap<number, any> = new Map([\n [ 20101, AuthorizationErrors.AccessTokenInvalid ],\n [ 20104, AuthorizationErrors.AccessTokenExpired ],\n [ 20151, AuthorizationErrors.AuthenticationFailed ],\n [ 31202, SignatureValidationErrors.AccessTokenSignatureValidationFailed ],\n [ 31400, ClientErrors.BadRequest ],\n [ 31404, ClientErrors.NotFound ],\n [ 31480, ClientErrors.TemporarilyUnavailable ],\n [ 31486, ClientErrors.BusyHere ],\n [ 31603, SIPServerErrors.Decline ],\n [ 31000, GeneralErrors.UnknownError ],\n [ 31001, GeneralErrors.ApplicationNotFoundError ],\n [ 31002, GeneralErrors.ConnectionDeclinedError ],\n [ 31003, GeneralErrors.ConnectionTimeoutError ],\n [ 31005, GeneralErrors.ConnectionError ],\n [ 31008, GeneralErrors.CallCancelledError ],\n [ 31009, GeneralErrors.TransportError ],\n [ 31100, MalformedRequestErrors.MalformedRequestError ],\n [ 31101, MalformedRequestErrors.MissingParameterArrayError ],\n [ 31102, MalformedRequestErrors.AuthorizationTokenMissingError ],\n [ 31103, MalformedRequestErrors.MaxParameterLengthExceededError ],\n [ 31104, MalformedRequestErrors.InvalidBridgeTokenError ],\n [ 31105, MalformedRequestErrors.InvalidClientNameError ],\n [ 31107, MalformedRequestErrors.ReconnectParameterInvalidError ],\n [ 31201, AuthorizationErrors.AuthorizationError ],\n [ 31203, AuthorizationErrors.NoValidAccountError ],\n [ 31204, AuthorizationErrors.InvalidJWTTokenError ],\n [ 31205, AuthorizationErrors.JWTTokenExpiredError ],\n [ 31206, AuthorizationErrors.RateExceededError ],\n [ 31207, AuthorizationErrors.JWTTokenExpirationTooLongError ],\n [ 31209, AuthorizationErrors.ReconnectAttemptError ],\n [ 31210, AuthorizationErrors.CallMessageEventTypeInvalidError ],\n [ 31212, AuthorizationErrors.PayloadSizeExceededError ],\n [ 31401, UserMediaErrors.PermissionDeniedError ],\n [ 31402, UserMediaErrors.AcquisitionFailedError ],\n [ 53000, SignalingErrors.ConnectionError ],\n [ 53001, SignalingErrors.ConnectionDisconnected ],\n [ 53400, MediaErrors.ClientLocalDescFailed ],\n [ 53402, MediaErrors.ClientRemoteDescFailed ],\n [ 53405, MediaErrors.ConnectionError ],\n]);\n\nObject.freeze(errorsByCode);\n","/**\n * Base class for all possible errors that the library can receive from the\n * Twilio backend.\n */\nexport default class TwilioError extends Error {\n /**\n * A list of possible causes for the Error.\n */\n causes: string[];\n\n /**\n * The numerical code associated with this Error.\n */\n code: number;\n\n /**\n * A description of what the Error means.\n */\n description: string;\n\n /**\n * An explanation of when the Error may be observed.\n */\n explanation: string;\n\n /**\n * Any further information discovered and passed along at run-time.\n */\n message: string;\n\n /**\n * The name of this Error.\n */\n name: string;\n\n /**\n * The original error object received from the external system, if any.\n */\n originalError?: object;\n\n /**\n * A list of potential solutions for the Error.\n */\n solutions: string[];\n\n /**\n * @internal\n */\n constructor(messageOrError?: string | Error | object, error?: Error | object) {\n super();\n Object.setPrototypeOf(this, TwilioError.prototype);\n\n const message: string = typeof messageOrError === 'string'\n ? messageOrError\n : this.explanation;\n\n const originalError: Error | object | undefined = typeof messageOrError === 'object'\n ? messageOrError\n : error;\n\n this.message = `${this.name} (${this.code}): ${message}`;\n this.originalError = originalError;\n }\n}\n","/* tslint:disable max-classes-per-file */\n\n// TODO: Consider refactoring this export (VBLOCKS-4589)\n\nimport {\n AuthorizationErrors,\n ClientErrors,\n errorsByCode,\n GeneralErrors,\n MalformedRequestErrors,\n MediaErrors,\n SignalingErrors,\n SignatureValidationErrors,\n SIPServerErrors,\n TwilioError,\n UserMediaErrors,\n} from './generated';\n\n/**\n * NOTE(mhuynh): Replacing generic error codes with new (more specific) codes,\n * is a breaking change. If an error code is found in this set, we only perform\n * the transformation if the feature flag is enabled.\n *\n * With every major version bump, such that we are allowed to introduce breaking\n * changes as per semver specification, this array should be cleared.\n *\n * TODO: [VBLOCKS-2295] Remove this in 3.x\n */\nconst PRECISE_SIGNALING_ERROR_CODES: Set<number> = new Set([\n /**\n * 310XX Errors\n */\n 31001,\n 31002,\n 31003,\n /**\n * 311XX Errors\n */\n 31101,\n 31102,\n 31103,\n 31104,\n 31105,\n 31107,\n /**\n * 312XX Errors\n */\n 31201,\n 31202,\n 31203,\n 31204,\n 31205,\n 31207,\n /**\n * 314XX Errors\n */\n 31404,\n 31480,\n 31486,\n /**\n * 316XX Errors\n */\n 31603,\n]);\n\n/**\n * Get an error constructor using the [[PRECISE_SIGNALING_ERROR_CODES]] set.\n * @internal\n * @param enableImprovedSignalingErrorPrecision - A boolean representing the\n * optional flag whether or not to use more precise error codes.\n * @param errorCode - The error code.\n * @returns This function returns `undefined` if the passed error code does not\n * correlate to an error or should not be constructed with a more precise error\n * constructor. A sub-class of {@link TwilioError} if the code does correlate to\n * an error.\n */\nexport function getPreciseSignalingErrorByCode(\n enableImprovedSignalingErrorPrecision: boolean,\n errorCode: number,\n): typeof TwilioError | undefined {\n if (typeof errorCode !== 'number') {\n return;\n }\n\n if (!hasErrorByCode(errorCode)) {\n return;\n }\n\n const shouldTransform = enableImprovedSignalingErrorPrecision\n ? true\n : !PRECISE_SIGNALING_ERROR_CODES.has(errorCode);\n if (!shouldTransform) {\n return;\n }\n\n return getErrorByCode(errorCode);\n}\n\n/**\n * The error that is thrown when an invalid argument is passed to a library API.\n */\nexport class InvalidArgumentError extends Error {\n /**\n * @internal\n */\n constructor(message?: string) {\n super(message);\n this.name = 'InvalidArgumentError';\n }\n}\n\n/**\n * The error that is thrown when the library has entered an invalid state.\n */\nexport class InvalidStateError extends Error {\n /**\n * @internal\n */\n constructor(message?: string) {\n super(message);\n this.name = 'InvalidStateError';\n }\n}\n\n/**\n * The error that is thrown when an attempt is made to use an API that is not\n * supported on the current platform.\n */\nexport class NotSupportedError extends Error {\n /**\n * @internal\n */\n constructor(message?: string) {\n super(message);\n this.name = 'NotSupportedError';\n }\n}\n\n/**\n * This should only be used to look up error codes returned by a server\n * using the same repo of error codes.\n * @internal\n */\nexport function getErrorByCode(code: number): (typeof TwilioError) {\n const error: (typeof TwilioError) | undefined = errorsByCode.get(code);\n if (!error) {\n throw new InvalidArgumentError(`Error code ${code} not found`);\n }\n return error;\n}\n\n/**\n * This should only be used to look up error codes returned by a server\n * using the same repo of error codes.\n * @internal\n */\nexport function hasErrorByCode(code: number): boolean {\n return errorsByCode.has(code);\n}\n\n/**\n * @privateRemarks\n *\n * All errors we want to throw or emit locally in the SDK need to be passed\n * through here.\n *\n * They need to first be defined in the `USED_ERRORS` list. See:\n * ```\n * scripts/errors.js\n * ```\n */\nexport {\n AuthorizationErrors,\n ClientErrors,\n GeneralErrors,\n MalformedRequestErrors,\n MediaErrors,\n SignalingErrors,\n SignatureValidationErrors,\n SIPServerErrors,\n TwilioError,\n UserMediaErrors,\n};\n","/**\n * This file is generated on build. To make changes, see /templates/constants.ts\n */\nconst PACKAGE_NAME = '@twilio/voice-sdk';\nconst RELEASE_VERSION = '2.17.0';\nconst SOUNDS_BASE_URL = 'https://sdk.twilio.com/js/client/sounds/releases/1.0.0';\nconst COWBELL_AUDIO_URL = `${SOUNDS_BASE_URL}/cowbell.mp3?cache=${RELEASE_VERSION}`;\nconst ECHO_TEST_DURATION = 20000;\n\nexport {\n COWBELL_AUDIO_URL,\n ECHO_TEST_DURATION,\n PACKAGE_NAME,\n RELEASE_VERSION,\n SOUNDS_BASE_URL,\n};\n","import * as loglevel from 'loglevel';\nimport { PACKAGE_NAME } from './constants';\n\n/**\n * Options that may be passed to the {@link Log} constructor for internal testing.\n * @private\n */\nexport interface LogOptions {\n /**\n * Custom loglevel module\n */\n LogLevelModule: any;\n}\n\n/**\n * {@link Log} provides logging features throughout the sdk using loglevel module\n * See https://github.com/pimterry/loglevel for documentation\n * @private\n */\nclass Log {\n /**\n * Log levels\n */\n static levels: loglevel.LogLevel = loglevel.levels;\n\n /**\n * Return the `loglevel` instance maintained internally.\n * @param [options] - Optional settings\n * @returns The `loglevel` instance.\n */\n static getLogLevelInstance(options?: LogOptions): loglevel.Logger {\n if (!Log.loglevelInstance) {\n try {\n Log.loglevelInstance = (options && options.LogLevelModule ? options.LogLevelModule : loglevel).getLogger(PACKAGE_NAME);\n } catch {\n // tslint:disable-next-line\n console.warn('Cannot create custom logger');\n Log.loglevelInstance = console as any;\n }\n }\n return Log.loglevelInstance;\n }\n\n /**\n * The loglevel singleton instance\n */\n private static loglevelInstance: loglevel.Logger;\n\n /**\n * The loglevel logger instance that will be used in this {@link Log}\n */\n private _log: loglevel.Logger;\n\n /**\n * Prefix to use for this log instance\n */\n private _prefix: string;\n\n /**\n * @constructor\n * @param [tag] - tag name for the logs\n * @param [options] - Optional settings\n */\n constructor(tag: string, options?: LogOptions) {\n this._log = Log.getLogLevelInstance(options);\n this._prefix = `[TwilioVoice][${tag}]`;\n }\n\n /**\n * Log a debug message\n * @param args - Any number of arguments to be passed to loglevel.debug\n */\n debug(...args: any[]): void {\n this._log.debug(this._prefix, ...args);\n }\n\n /**\n * Log an error message\n * @param args - Any number of arguments to be passed to loglevel.error\n */\n error(...args: any[]): void {\n this._log.error(this._prefix, ...args);\n }\n\n /**\n * Log an info message\n * @param args - Any number of arguments to be passed to loglevel.info\n */\n info(...args: any[]): void {\n this._log.info(this._prefix, ...args);\n }\n\n /**\n * Set a default log level to disable all logging below the given level\n */\n setDefaultLevel(level: loglevel.LogLevelDesc): void {\n if (this._log.setDefaultLevel) {\n this._log.setDefaultLevel(level);\n } else {\n // tslint:disable-next-line\n console.warn('Logger cannot setDefaultLevel');\n }\n }\n\n /**\n * Log a warning message\n * @param args - Any number of arguments to be passed to loglevel.warn\n */\n warn(...args: any[]): void {\n this._log.warn(this._prefix, ...args);\n }\n}\n\nexport const Logger = Log.getLogLevelInstance();\n\nexport default Log;\n","import { SOUNDS_BASE_URL } from './constants';\nimport { InvalidArgumentError, InvalidStateError, NotSupportedError } from './errors';\nimport Log from './log';\nconst DEFAULT_TEST_SOUND_URL = `${SOUNDS_BASE_URL}/outgoing.mp3`;\n\n/**\n * A smart collection containing a Set of active output devices.\n */\nexport default class OutputDeviceCollection {\n /**\n * The currently active output devices.\n */\n private _activeDevices: Set<MediaDeviceInfo> = new Set();\n\n /**\n * An instance of Logger to use.\n */\n private _log: Log = new Log('OutputDeviceCollection');\n\n /**\n * @internal\n */\n constructor(private _name: string,\n private _availableDevices: Map<string, MediaDeviceInfo>,\n private _beforeChange: (name: string, devices: string[]) => Promise<void>,\n private _isSupported: boolean) { }\n\n /**\n * Delete a device from the collection. If no devices remain, the 'default'\n * device will be added as the sole device. If no `default` device exists,\n * the first available device will be used.\n * @param device - The device to delete from the collection\n * @returns whether the device was present before it was deleted\n */\n delete(device: MediaDeviceInfo): boolean {\n this._log.debug('.delete', device);\n const wasDeleted: boolean = !!(this._activeDevices.delete(device));\n\n const defaultDevice: MediaDeviceInfo = this._availableDevices.get('default')\n || Array.from(this._availableDevices.values())[0];\n\n if (!this._activeDevices.size && defaultDevice) {\n this._activeDevices.add(defaultDevice);\n }\n\n // Call _beforeChange so that the implementation can react when a device is\n // removed or lost.\n const deviceIds = Array.from(this._activeDevices.values()).map(deviceInfo => deviceInfo.deviceId);\n\n this._beforeChange(this._name, deviceIds);\n return !!wasDeleted;\n }\n\n /**\n * Get the current set of devices.\n */\n get(): Set<MediaDeviceInfo> {\n return this._activeDevices;\n }\n\n /**\n * Replace the current set of devices with a new set of devices.\n * @param deviceIdOrIds - An ID or array of IDs of devices to replace the existing devices with.\n * @returns Rejects if this feature is not supported, any of the supplied IDs are not found,\n * or no IDs are passed.\n */\n set(deviceIdOrIds: string | string[]): Promise<void> {\n this._log.debug('.set', deviceIdOrIds);\n if (!this._isSupported) {\n return Promise.reject(new NotSupportedError('This browser does not support audio output selection'));\n }\n\n const deviceIds: string[] = Array.isArray(deviceIdOrIds) ? deviceIdOrIds : [deviceIdOrIds];\n\n if (!deviceIds.length) {\n return Promise.reject(new InvalidArgumentError('Must specify at least one device to set'));\n }\n\n const missingIds: string[] = [];\n const devices: Array<MediaDeviceInfo | undefined> = deviceIds.map((id: string) => {\n const device: MediaDeviceInfo | undefined = this._availableDevices.get(id);\n if (!device) { missingIds.push(id); }\n return device;\n });\n\n if (missingIds.length) {\n return Promise.reject(new InvalidArgumentError(`Devices not found: ${missingIds.join(', ')}`));\n }\n\n return new Promise(resolve => {\n resolve(this._beforeChange(this._name, deviceIds));\n }).then(() => {\n this._activeDevices.clear();\n devices.forEach(this._activeDevices.add, this._activeDevices);\n });\n }\n\n /**\n * Test the devices by playing audio through them.\n * @param [soundUrl] - An optional URL. If none is specified, we will\n * play a default test tone.\n * @returns Resolves with the result of the underlying HTMLAudioElements' play() calls.\n */\n test(soundUrl: string = DEFAULT_TEST_SOUND_URL): Promise<any> {\n if (!this._isSupported) {\n return Promise.reject(new NotSupportedError('This browser does not support audio output selection'));\n }\n\n if (!this._activeDevices.size) {\n return Promise.reject(new InvalidStateError('No active output devices to test'));\n }\n\n return Promise.all(Array.from(this._activeDevices).map((device: MediaDeviceInfo) => {\n let el: HTMLAudioElement;\n\n // (rrowland) We need to wait for the oncanplay event because of a regression introduced\n // in Chrome M72: https://bugs.chromium.org/p/chromium/issues/detail?id=930876\n return new Promise((resolve: Function) => {\n el = new Audio(soundUrl);\n (el as any).oncanplay = resolve;\n }).then(() => (el as any).setSinkId(device.deviceId).then(() => el.play()));\n }));\n }\n}\n","// @ts-nocheck\nclass MediaDeviceInfoShim {\n constructor(options) {\n Object.defineProperties(this, {\n deviceId: { get() { return options.deviceId; } },\n groupId: { get() { return options.groupId; } },\n kind: { get() { return options.kind; } },\n label: { get() { return options.label; } },\n });\n }\n}\n\nexport default MediaDeviceInfoShim;\n","// @ts-nocheck\n\n/**\n * Exception class.\n * @class\n * @name Exception\n * @exports Exception as Twilio.Exception\n * @memberOf Twilio\n * @param {string} message The exception message\n */\nfunction TwilioException(message) {\n if (!(this instanceof TwilioException)) {\n return new TwilioException(message);\n }\n this.message = message;\n}\n\n/**\n * Returns the exception message.\n *\n * @return {string} The exception message.\n */\nTwilioException.prototype.toString = function() {\n return `Twilio.Exception: ${this.message}`;\n};\n\nfunction average(values) {\n return values && values.length ? values.reduce((t, v) => t + v) / values.length : 0;\n}\n\nfunction difference(lefts, rights, getKey?) {\n getKey = getKey || (a => a);\n const rightKeys = new Set(rights.map(getKey));\n return lefts.filter(left => !rightKeys.has(getKey(left)));\n}\n\nfunction isElectron(navigator) {\n return !!navigator.userAgent.match('Electron');\n}\n\nfunction isChrome(window, navigator) {\n const isCriOS = !!navigator.userAgent.match('CriOS');\n const isHeadlessChrome = !!navigator.userAgent.match('HeadlessChrome');\n const isGoogle = typeof window.chrome !== 'undefined'\n && navigator.vendor === 'Google Inc.'\n && navigator.userAgent.indexOf('OPR') === -1\n && navigator.userAgent.indexOf('Edge') === -1;\n\n return isCriOS || isElectron(navigator) || isGoogle || isHeadlessChrome;\n}\n\nfunction isFirefox(navigator?) {\n navigator = navigator || (typeof window === 'undefined'\n ? global.navigator : window.navigator);\n\n return !!(navigator) && typeof navigator.userAgent === 'string'\n && /firefox|fxios/i.test(navigator.userAgent);\n}\n\n/**\n * Chromium-based Edge has a user-agent of \"Edg/\" where legacy Edge has a\n * user-agent of \"Edge/\".\n */\nfunction isLegacyEdge(navigator?) {\n navigator = navigator || (typeof window === 'undefined'\n ? global.navigator : window.navigator);\n\n return !!(navigator) && typeof navigator.userAgent === 'string'\n && /edge\\/\\d+/i.test(navigator.userAgent);\n}\n\nfunction isSafari(navigator) {\n return !!(navigator.vendor) && navigator.vendor.indexOf('Apple') !== -1\n && navigator.userAgent\n && navigator.userAgent.indexOf('CriOS') === -1\n && navigator.userAgent.indexOf('FxiOS') === -1;\n}\n\nfunction queryToJson(params) {\n if (!params) {\n return '';\n }\n\n return params.split('&').reduce((output, pair) => {\n const parts = pair.split('=');\n const key = parts[0];\n const value = decodeURIComponent((parts[1] || '').replace(/\\+/g, '%20'));\n\n if (key) { output[key] = value; }\n return output;\n }, { });\n}\n\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} [mapFn]\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n const listArray = list instanceof Map || list instanceof Set\n ? Array.from(list.values())\n : list;\n\n mapFn = mapFn || (item => item);\n\n return listArray.reduce((flattened, item) => {\n const mapped = mapFn(item);\n return flattened.concat(mapped);\n }, []);\n}\n\n/**\n * Converts an EventEmitter's events into a promise and automatically\n * cleans up handlers once the promise is resolved or rejected.\n */\nfunction promisifyEvents(emitter, resolveEventName, rejectEventName) {\n return new Promise((resolve, reject) => {\n function resolveHandler() {\n emitter.removeListener(rejectEventName, rejectHandler);\n resolve();\n }\n function rejectHandler() {\n emitter.removeListener(resolveEventName, resolveHandler);\n reject();\n }\n emitter.once(resolveEventName, resolveHandler);\n emitter.once(rejectEventName, rejectHandler);\n });\n}\n\nfunction sortByMimeTypes(codecs, preferredOrder) {\n const preferredCodecs = preferredOrder.map(codec => 'audio/' + codec.toLowerCase());\n return codecs.sort((a, b) => {\n const indexA = preferredCodecs.indexOf(a.mimeType.toLowerCase());\n const indexB = preferredCodecs.indexOf(b.mimeType.toLowerCase());\n const orderA = indexA >= 0 ? indexA : Number.MAX_VALUE;\n const orderB = indexB >= 0 ? indexB : Number.MAX_VALUE;\n return orderA - orderB;\n });\n}\n\nconst Exception = TwilioException;\n\nexport {\n Exception,\n average,\n difference,\n isElectron,\n isChrome,\n isFirefox,\n isLegacyEdge,\n isSafari,\n queryToJson,\n flatMap,\n promisifyEvents,\n sortByMimeTypes,\n};\n","import { EventEmitter } from 'events';\nimport AudioProcessor from './audioprocessor';\nimport { AudioProcessorEventObserver } from './audioprocessoreventobserver';\nimport Device from './device';\nimport { InvalidArgumentError, NotSupportedError } from './errors';\nimport Log from './log';\nimport OutputDeviceCollection from './outputdevicecollection';\nimport MediaDeviceInfoShim from './shims/mediadeviceinfo';\nimport { average, difference, isFirefox } from './util';\n\n/**\n * Aliases for audio kinds, used for labelling.\n */\nconst kindAliases: Record<string, string> = {\n audioinput: 'Audio Input',\n audiooutput: 'Audio Output',\n};\n\n/**\n * Provides input and output audio-based functionality in one convenient class.\n */\nclass AudioHelper extends EventEmitter {\n /**\n * The currently set audio constraints set by setAudioConstraints(). Starts as null.\n */\n get audioConstraints(): MediaTrackConstraints | null { return this._audioConstraints; }\n\n /**\n * A Map of all audio input devices currently available to the browser by their device ID.\n */\n availableInputDevices: Map<string, MediaDeviceInfo> = new Map();\n\n /**\n * A Map of all audio output devices currently available to the browser by their device ID.\n */\n availableOutputDevices: Map<string, MediaDeviceInfo> = new Map();\n\n /**\n * The active input device. Having no inputDevice specified by `setInputDevice()`\n * will disable input selection related functionality.\n */\n get inputDevice(): MediaDeviceInfo | null { return this._inputDevice; }\n\n /**\n * The current input stream coming from the microphone device or\n * the processed audio stream if there is an {@link AudioProcessor}.\n */\n get inputStream(): MediaStream | null { return this._localProcessedStream || this._selectedInputDeviceStream; }\n\n /**\n * False if the browser does not support `HTMLAudioElement.setSinkId()` or\n * `MediaDevices.enumerateDevices()` and Twilio cannot facilitate output selection functionality.\n */\n isOutputSelectionSupported: boolean;\n\n /**\n * False if the browser does not support AudioContext and Twilio can not analyse the volume\n * in real-time.\n */\n isVolumeSupported: boolean;\n\n /**\n * The processed stream if a local {@link AudioProcessor} was previously added.\n * @deprecated Use {@link AudioHelper#localProcessedStream} instead.\n */\n get processedStream(): MediaStream | null {\n this._log.warn('AudioHelper#processedStream is deprecated. Please use AudioHelper#localProcessedStream instead.');\n return this._localProcessedStream;\n }\n\n /**\n * The processed stream if a local {@link AudioProcessor} was previously added.\n */\n get localProcessedStream(): MediaStream | null { return this._localProcessedStream; }\n\n /**\n * The processed stream if a remote {@link AudioProcessor} was previously added.\n */\n get remoteProcessedStream(): MediaStream | null { return this._remoteProcessedStream; }\n\n /**\n * The current set of output devices that incoming ringtone audio is routed through.\n * These are the sounds that may play while the user is away from the machine or not wearing\n * their headset. It is important that this audio is heard. If all specified\n * devices lost, this Set will revert to contain only the \"default\" device.\n */\n ringtoneDevices: OutputDeviceCollection;\n\n /**\n * The current set of output devices that call audio (`[voice, outgoing, disconnect, dtmf]`)\n * is routed through. These are the sounds that are initiated by the user, or played while\n * the user is otherwise present at the endpoint. If all specified devices are lost,\n * this Set will revert to contain only the \"default\" device.\n */\n speakerDevices: OutputDeviceCollection;\n\n /**\n * The currently set audio constraints set by setAudioConstraints().\n */\n private _audioConstraints: MediaTrackConstraints | null = null;\n\n /**\n * An AudioContext to use.\n */\n private _audioContext?: AudioContext;\n\n /**\n * The AudioProcessorEventObserver instance to use.\n */\n private _audioProcessorEventObserver: AudioProcessorEventObserver;\n\n /**\n * Promise to wait for before setting the input device.\n */\n private _beforeSetInputDevice: () => Promise<any>;\n\n /**\n * The audio stream of the default device.\n * This is populated when _openDefaultDeviceWithConstraints is called,\n * See _selectedInputDeviceStream for differences.\n * TODO: Combine these two workflows (3.x?)\n */\n private _defaultInputDeviceStream: MediaStream | null = null;\n\n /**\n * Whether each sound is enabled.\n */\n private _enabledSounds: Record<Device.ToggleableSound, boolean> = {\n [Device.SoundName.Disconnect]: true,\n [Device.SoundName.Incoming]: true,\n [Device.SoundName.Outgoing]: true,\n };\n\n /**\n * The enumerateDevices method to use\n */\n private _enumerateDevices: any;\n\n /**\n * The `getUserMedia()` function to use.\n */\n private _getUserMedia: (constraints: MediaStreamConstraints) => Promise<MediaStream>;\n\n /**\n * The current input device.\n */\n private _inputDevice: MediaDeviceInfo | null = null;\n\n /**\n * The internal promise created when calling setInputDevice\n */\n private _inputDevicePromise: Promise<void> | null = null;\n\n /**\n * An AnalyserNode to use for input volume.\n */\n private _inputVolumeAnalyser?: AnalyserNode;\n\n /**\n * An MediaStreamSource to use for input volume.\n */\n private _inputVolumeSource?: MediaStreamAudioSourceNode;\n\n /**\n * Whether the {@link AudioHelper} is currently polling the input stream's volume.\n */\n private _isPollingInputVolume: boolean = false;\n\n /**\n * An instance of Logger to use.\n */\n private _log: Log = new Log('AudioHelper');\n\n /**\n * The MediaDevices instance to use.\n */\n private _mediaDevices: AudioHelper.MediaDevicesLike | null;\n\n /**\n * The microphone permission status\n */\n private _microphonePermissionStatus: PermissionStatus | null;\n\n /**\n * Called with the new input stream when the active input is changed.\n */\n private _onActiveInputChanged: (stream: MediaStream | null) => Promise<void>;\n\n /**\n * Handler for microphone permission status change\n */\n private _onMicrophonePermissionStatusChanged: () => void;\n\n /**\n * Internal reference to the local processed stream.\n */\n private _localProcessedStream: MediaStream | null = null;\n\n /**\n * Internal reference to the added local AudioProcessor.\n */\n private _localProcessor: AudioProcessor | null;\n\n /**\n * Internal reference to the remote processed stream.\n */\n private _remoteProcessedStream: MediaStream | null = null;\n\n /**\n * Internal reference to the added remote AudioProcessor.\n */\n private _remoteProcessor: AudioProcessor | null;\n\n /**\n * The selected input stream coming from the microphone device.\n * This is populated when the setInputDevice is called, meaning,\n * the end user manually selected it, which is different than\n * the defaultInputDeviceStream.\n * TODO: Combine these two workflows (3.x?)\n */\n private _selectedInputDeviceStream: MediaStream | null = null;\n\n /**\n * A record of unknown devices (Devices without labels)\n */\n private _unknownDeviceIndexes: Record<string, Record<string, number>> = {\n audioinput: { },\n audiooutput: { },\n };\n\n /**\n * @internal\n * @param onActiveOutputsChanged - A callback to be called when the user changes the active output devices.\n * @param onActiveInputChanged - A callback to be called when the user changes the active input device.\n * @param [options]\n */\n constructor(onActiveOutputsChanged: (type: 'ringtone' | 'speaker', outputIds: string[]) => Promise<void>,\n onActiveInputChanged: (stream: MediaStream | null) => Promise<void>,\n options?: AudioHelper.Options) {\n super();\n\n options = Object.assign({\n AudioContext: typeof AudioContext !== 'undefined' && AudioContext,\n setSinkId: typeof HTMLAudioElement !== 'undefined' && (HTMLAudioElement.prototype as any).setSinkId,\n }, options);\n\n this._beforeSetInputDevice = options.beforeSetInputDevice || (() => Promise.resolve());\n\n this._updateUserOptions(options);\n\n this._audioProcessorEventObserver = options.audioProcessorEventObserver;\n this._mediaDevices = options.mediaDevices || navigator.mediaDevices;\n this._onActiveInputChanged = onActiveInputChanged;\n this._enumerateDevices = typeof options.enumerateDevices === 'function'\n ? options.enumerateDevices\n : this._mediaDevices && this._mediaDevices.enumerateDevices.bind(this._mediaDevices);\n\n const isAudioContextSupported: boolean = !!(options.AudioContext || options.audioContext);\n const isEnumerationSupported: boolean = !!this._enumerateDevices;\n\n if (options.enabledSounds) {\n this._enabledSounds = options.enabledSounds;\n }\n\n const isSetSinkSupported: boolean = typeof options.setSinkId === 'function';\n this.isOutputSelectionSupported = isEnumerationSupported && isSetSinkSupported;\n this.isVolumeSupported = isAudioContextSupported;\n\n if (this.isVolumeSupported) {\n this._audioContext = options.audioContext || options.AudioContext && new options.AudioContext();\n if (this._audioContext) {\n this._inputVolumeAnalyser = this._audioContext.createAnalyser();\n this._inputVolumeAnalyser.fftSize = 32;\n this._inputVolumeAnalyser.smoothingTimeConstant = 0.3;\n }\n }\n\n this.ringtoneDevices = new OutputDeviceCollection('ringtone',\n this.availableOutputDevices, onActiveOutputsChanged, this.isOutputSelectionSupported);\n this.speakerDevices = new OutputDeviceCollection('speaker',\n this.availableOutputDevices, onActiveOutputsChanged, this.isOutputSelectionSupported);\n\n this.addListener('newListener', (eventName: string) => {\n if (eventName === 'inputVolume') {\n this._maybeStartPollingVolume();\n }\n });\n\n this.addListener('removeListener', (eventName: string) => {\n if (eventName === 'inputVolume') {\n this._maybeStopPollingVolume();\n }\n });\n\n this.once('newListener', () => {\n // NOTE (rrowland): Ideally we would only check isEnumerationSupported here, but\n // in at least one browser version (Tested in FF48) enumerateDevices actually\n // returns bad data for the listed devices. Instead, we check for\n // isOutputSelectionSupported to avoid these quirks that may negatively affect customers.\n if (!this.isOutputSelectionSupported) {\n this._log.warn('Warning: This browser does not support audio output selection.');\n }\n\n if (!this.isVolumeSupported) {\n this._log.warn(`Warning: This browser does not support Twilio's volume indicator feature.`);\n }\n });\n\n if (isEnumerationSupported) {\n this._initializeEnumeration();\n }\n\n // NOTE (kchoy): Currently microphone permissions are not supported in firefox, and Safari V15 and older.\n // https://github.com/mozilla/standards-positions/issues/19#issuecomment-370158947\n // https://caniuse.com/permissions-api\n if (navigator && navigator.permissions && typeof navigator.permissions.query === 'function') {\n navigator.permissions.query({ name: 'microphone' }).then((microphonePermissionStatus) => {\n if (microphonePermissionStatus.state !== 'granted') {\n const handleStateChange = () => {\n this._updateAvailableDevices();\n this._stopMicrophonePermissionListener();\n };\n microphonePermissionStatus.addEventListener('change', handleStateChange);\n this._microphonePermissionStatus = microphonePermissionStatus;\n this._onMicrophonePermissionStatusChanged = handleStateChange;\n }\n }).catch((reason) => this._log.warn(`Warning: unable to listen for microphone permission changes. ${reason}`));\n } else {\n this._log.warn('Warning: current browser does not support permissions API.');\n }\n }\n\n /**\n * Destroy this AudioHelper instance\n * @internal\n */\n _destroy(): void {\n this._stopDefaultInputDeviceStream();\n this._stopSelectedInputDeviceStream();\n this._destroyLocalProcessedStream();\n this._destroyRemoteProcessedStream();\n this._maybeStopPollingVolume();\n this.removeAllListeners();\n this._stopMicrophonePermissionListener();\n this._unbind();\n }\n\n /**\n * Destroys the remote processed stream and updates references.\n * @internal\n */\n _destroyRemoteProcessedStream(): void {\n if (this._remoteProcessor && this._remoteProcessedStream) {\n this._log.info('destroying remote processed stream');\n const remoteProcessedStream = this._remoteProcessedStream;\n this._remoteProcessedStream.getTracks().forEach(track => track.stop());\n this._remoteProcessedStream = null;\n this._remoteProcessor.destroyProcessedStream(remoteProcessedStream);\n this._audioProcessorEventObserver.emit('destroy', true);\n }\n }\n\n /**\n * Promise to wait for the input device, if setInputDevice is called outside of the SDK.\n * @internal\n */\n _getInputDevicePromise(): Promise<void> | null {\n return this._inputDevicePromise;\n }\n\n /**\n * The current AudioProcessorEventObserver instance.\n * @internal\n */\n _getAudioProcessorEventObserver(): AudioProcessorEventObserver {\n return this._audioProcessorEventObserver;\n }\n\n /**\n * Route remote stream to the processor if it exists.\n * @internal\n */\n _maybeCreateRemoteProcessedStream(stream: MediaStream): Promise<MediaStream> {\n if (this._remoteProcessor) {\n this._log.info('Creating remote processed stream');\n return this._remoteProcessor.createProcessedStream(stream).then((processedStream: MediaStream) => {\n this._remoteProcessedStream = processedStream;\n this._audioProcessorEventObserver.emit('create', true);\n return this._remoteProcessedStream;\n });\n }\n return Promise.resolve(stream);\n }\n\n /**\n * Start polling volume if it's supported and there's an input stream to poll.\n * @internal\n */\n _maybeStartPollingVolume(): void {\n if (!this.isVolumeSupported || !this.inputStream) { return; }\n\n this._updateVolumeSource();\n\n if (this._isPollingInputVolume || !this._inputVolumeAnalyser) { return; }\n\n const bufferLength: number = this._inputVolumeAnalyser.frequencyBinCount;\n const buffer: Uint8Array = new Uint8Array(bufferLength);\n\n this._isPollingInputVolume = true;\n\n const emitVolume = (): void => {\n if (!this._isPollingInputVolume) { return; }\n\n if (this._inputVolumeAnalyser) {\n this._inputVolumeAnalyser.getByteFrequencyData(buffer);\n const inputVolume: number = average(buffer);\n\n this.emit('inputVolume', inputVolume / 255);\n }\n\n requestAnimationFrame(emitVolume);\n };\n\n requestAnimationFrame(emitVolume);\n }\n\n /**\n * Stop polling volume if it's currently polling and there are no listeners.\n * @internal\n */\n _maybeStopPollingVolume(): void {\n if (!this.isVolumeSupported) { return; }\n\n if (!this._isPollingInputVolume || (this.inputStream && this.listenerCount('inputVolume'))) {\n return;\n }\n\n if (this._inputVolumeSource) {\n this._inputVolumeSource.disconnect();\n delete this._inputVolumeSource;\n }\n\n this._isPollingInputVolume = false;\n }\n\n /**\n * Call getUserMedia with specified constraints\n * @internal\n */\n _openDefaultDeviceWithConstraints(constraints: MediaStreamConstraints): Promise<MediaStream> {\n this._log.info('Opening default device with constraints', constraints);\n return this._getUserMedia(constraints).then((stream: MediaStream) => {\n\n this._log.info('Opened default device. Updating available devices.');\n // Ensures deviceId's and labels are populated after the gUM call\n // by calling enumerateDevices\n this._updateAvailableDevices().catch(error => {\n // Ignore error, we don't want to break the call flow\n this._log.warn('Unable to updateAvailableDevices after gUM call', error);\n });\n this._defaultInputDeviceStream = stream;\n return this._maybeCreateLocalProcessedStream(stream);\n });\n }\n\n /**\n * Stop the default audio stream\n * @internal\n */\n _stopDefaultInputDeviceStream(): void {\n if (this._defaultInputDeviceStream) {\n this._log.info('stopping default device stream');\n this._defaultInputDeviceStream.getTracks().forEach(track => track.stop());\n this._defaultInputDeviceStream = null;\n this._destroyLocalProcessedStream();\n }\n }\n\n /**\n * Unbind the listeners from mediaDevices.\n * @internal\n */\n _unbind(): void {\n if (this._mediaDevices?.removeEventListener) {\n this._mediaDevices.removeEventListener('devicechange', this._updateAvailableDevices);\n }\n }\n\n /**\n * Update the available input and output devices\n * @internal\n */\n _updateAvailableDevices = (): Promise<void> => {\n if (!this._mediaDevices || !this._enumerateDevices) {\n return Promise.reject('Enumeration not supported');\n }\n\n return this._enumerateDevices().then((devices: MediaDeviceInfo[]) => {\n this._updateDevices(devices.filter((d: MediaDeviceInfo) => d.kind === 'audiooutput'),\n this.availableOutputDevices,\n this._removeLostOutput);\n\n this._updateDevices(devices.filter((d: MediaDeviceInfo) => d.kind === 'audioinput'),\n this.availableInputDevices,\n this._removeLostInput);\n\n const defaultDevice = this.availableOutputDevices.get('default')\n || Array.from(this.availableOutputDevices.values())[0];\n\n [this.speakerDevices, this.ringtoneDevices].forEach(outputDevices => {\n if (!outputDevices.get().size && this.availableOutputDevices.size && this.isOutputSelectionSupported) {\n outputDevices.set(defaultDevice.deviceId)\n .catch((reason) => {\n this._log.warn(`Unable to set audio output devices. ${reason}`);\n });\n }\n });\n });\n }\n\n /**\n * Update AudioHelper options that can be changed by the user\n * @internal\n */\n _updateUserOptions(options: AudioHelper.Options): void {\n if (typeof options.enumerateDevices === 'function') {\n this._enumerateDevices = options.enumerateDevices;\n }\n if (typeof options.getUserMedia === 'function') {\n this._getUserMedia = options.getUserMedia;\n }\n }\n\n /**\n * Adds an {@link AudioProcessor} object. Once added, the AudioHelper will route\n * the input audio stream through the processor before sending the audio\n * stream to Twilio. Only one AudioProcessor can be added at this time.\n *\n * See the {@link AudioProcessor} interface for an example.\n *\n * @param processor The AudioProcessor to add.\n * @param isRemote If set to true, the processor will be applied to the remote\n * audio track. Default value is false.\n * @returns\n */\n addProcessor(processor: AudioProcessor, isRemote: boolean = false): Promise<void> {\n this._log.debug('.addProcessor');\n\n if (this._localProcessor && !isRemote) {\n throw new NotSupportedError('Can only have one Local AudioProcessor at a time.');\n }\n\n if (this._remoteProcessor && isRemote) {\n throw new NotSupportedError('Can only have one Remote AudioProcessor at a time.');\n }\n\n if (typeof processor !== 'object' || processor === null) {\n throw new InvalidArgumentError('Missing AudioProcessor argument.');\n }\n\n if (typeof processor.createProcessedStream !== 'function') {\n throw new InvalidArgumentError('Missing createProcessedStream() method.');\n }\n\n if (typeof processor.destroyProcessedStream !== 'function') {\n throw new InvalidArgumentError('Missing destroyProcessedStream() method.');\n }\n\n if (isRemote) {\n this._remoteProcessor = processor;\n this._audioProcessorEventObserver.emit('add', true);\n return Promise.resolve();\n } else {\n this._localProcessor = processor;\n this._audioProcessorEventObserver.emit('add', false);\n return this._restartInputStreams();\n }\n }\n\n /**\n * Enable or disable the disconnect sound.\n * @param doEnable Passing `true` will enable the sound and `false` will disable the sound.\n * Not passing this parameter will not alter the enable-status of the sound.\n * @returns The enable-status of the sound.\n */\n disconnect(doEnable?: boolean): boolean {\n this._log.debug('.disconnect', doEnable);\n return this._maybeEnableSound(Device.SoundName.Disconnect, doEnable);\n }\n\n /**\n * Enable or disable the incoming sound.\n * @param doEnable Passing `true` will enable the sound and `false` will disable the sound.\n * Not passing this parameter will not alter the enable-status of the sound.\n * @returns The enable-status of the sound.\n */\n incoming(doEnable?: boolean): boolean {\n this._log.debug('.incoming', doEnable);\n return this._maybeEnableSound(Device.SoundName.Incoming, doEnable);\n }\n\n /**\n * Enable or disable the outgoing sound.\n * @param doEnable Passing `true` will enable the sound and `false` will disable the sound.\n * Not passing this parameter will not alter the enable-status of the sound.\n * @returns The enable-status of the sound.\n */\n outgoing(doEnable?: boolean): boolean {\n this._log.debug('.outgoing', doEnable);\n return this._maybeEnableSound(Device.SoundName.Outgoing, doEnable);\n }\n\n /**\n * Removes an {@link AudioProcessor}. Once removed, the AudioHelper will start using\n * the audio stream from the selected input device for existing or future calls.\n *\n * @param processor The AudioProcessor to remove.\n * @param isRemote If set to true, the processor will be removed from the remote\n * audio track. Default value is false.\n * @returns\n */\n removeProcessor(processor: AudioProcessor, isRemote: boolean = false): Promise<void> {\n this._log.debug('.removeProcessor');\n\n if (typeof processor !== 'object' || processor === null) {\n throw new InvalidArgumentError('Missing AudioProcessor argument.');\n }\n\n if (this._localProcessor !== processor && !isRemote) {\n throw new InvalidArgumentError('Cannot remove a Local AudioProcessor that has not been previously added.');\n }\n if (this._remoteProcessor !== processor && isRemote) {\n throw new InvalidArgumentError('Cannot remove a Remote AudioProcessor that has not been previously added.');\n }\n\n if (isRemote) {\n this._destroyRemoteProcessedStream();\n this._remoteProcessor = null;\n this._audioProcessorEventObserver.emit('remove', true);\n return Promise.resolve();\n } else {\n this._destroyLocalProcessedStream();\n this._localProcessor = null;\n this._audioProcessorEventObserver.emit('remove', false);\n return this._restartInputStreams();\n }\n }\n\n /**\n * Set the MediaTrackConstraints to be applied on every getUserMedia call for new input\n * device audio. Any deviceId specified here will be ignored. Instead, device IDs should\n * be specified using {@link AudioHelper#setInputDevice}. The returned Promise resolves\n * when the media is successfully reacquired, or immediately if no input device is set.\n * @param audioConstraints - The MediaTrackConstraints to apply.\n */\n setAudioConstraints(audioConstraints: MediaTrackConstraints): Promise<void> {\n this._log.debug('.setAudioConstraints', audioConstraints);\n this._audioConstraints = Object.assign({ }, audioConstraints);\n delete this._audioConstraints.deviceId;\n\n return this.inputDevice\n ? this._setInputDevice(this.inputDevice.deviceId, true)\n : Promise.resolve();\n }\n\n /**\n * Replace the current input device with a new device by ID.\n *\n * Calling `setInputDevice` sets the stream for current and future calls and\n * will not release it automatically.\n *\n * While this behavior is not an issue, it will result in the application\n * holding onto the input device, and the application may show a red\n * \"recording\" symbol in the browser tab.\n *\n * To remove the red \"recording\" symbol, the device must be released. To\n * release it, call `unsetInputDevice` after the call disconnects. Note that\n * after calling `unsetInputDevice` future calls will then use the default\n * input device.\n *\n * Consider application logic that keeps track of the user-selected device\n * and call `setInputDevice` before calling `device.connect()` for outgoing\n * calls and `call.accept()` for incoming calls. Furthermore, consider\n * calling `unsetInputDevice` once a call is disconnected. Below is an\n * example:\n *\n * ```ts\n * import { Device } from '@twilio/voice-sdk';\n * let inputDeviceId = ...;\n * const device = new Device(...);\n *\n * async function makeOutgoingCall() {\n * await device.audio.setInputDevice(inputDeviceId);\n * const call = await device.connect(...);\n *\n * call.on('disconnect', async () => {\n * inputDeviceId = ... // save the current input device id\n * await device.audio.unsetInputDevice();\n * });\n * }\n *\n * async function acceptIncomingCall(incomingCall) {\n * await device.audio.setInputDevice(inputDeviceId);\n * await incomingCall.accept();\n *\n * incomingCall.on('disconnect', async () => {\n * inputDeviceId = ... // save the current input device id\n * await device.audio.unsetInputDevice();\n * });\n * }\n * ```\n *\n * @param deviceId - An ID of a device to replace the existing\n * input device with.\n */\n setInputDevice(deviceId: string): Promise<void> {\n this._log.debug('.setInputDevice', deviceId);\n return this._setInputDevice(deviceId, false);\n }\n\n /**\n * Unset the MediaTrackConstraints to be applied on every getUserMedia call for new input\n * device audio. The returned Promise resolves when the media is successfully reacquired,\n * or immediately if no input device is set.\n */\n unsetAudioConstraints(): Promise<void> {\n this._log.debug('.unsetAudioConstraints');\n this._audioConstraints = null;\n return this.inputDevice\n ? this._setInputDevice(this.inputDevice.deviceId, true)\n : Promise.resolve();\n }\n\n /**\n * Unset the input device, stopping the tracks. This should only be called when not in a connection, and\n * will not allow removal of the input device during a live call.\n */\n unsetInputDevice(): Promise<void> {\n this._log.debug('.unsetInputDevice', this.inputDevice);\n if (!this.inputDevice) { return Promise.resolve(); }\n\n this._destroyLocalProcessedStream();\n\n return this._onActiveInputChanged(null).then(() => {\n this._replaceStream(null);\n this._inputDevice = null;\n this._maybeStopPollingVolume();\n });\n }\n\n /**\n * Destroys the local processed stream and updates references.\n */\n private _destroyLocalProcessedStream() {\n if (this._localProcessor && this._localProcessedStream) {\n this._log.info('destroying local processed stream');\n const localProcessedStream = this._localProcessedStream;\n this._localProcessedStream.getTracks().forEach(track => track.stop());\n this._localProcessedStream = null;\n this._localProcessor.destroyProcessedStream(localProcessedStream);\n this._audioProcessorEventObserver.emit('destroy', false);\n }\n }\n\n /**\n * Get the index of an un-labeled Device.\n * @param mediaDeviceInfo\n * @returns The index of the passed MediaDeviceInfo\n */\n private _getUnknownDeviceIndex(mediaDeviceInfo: MediaDeviceInfo): number {\n const id: string = mediaDeviceInfo.deviceId;\n const kind: string = mediaDeviceInfo.kind;\n\n let index: number = this._unknownDeviceIndexes[kind][id];\n if (!index) {\n index = Object.keys(this._unknownDeviceIndexes[kind]).length + 1;\n this._unknownDeviceIndexes[kind][id] = index;\n }\n\n return index;\n }\n\n /**\n * Initialize output device enumeration.\n */\n private _initializeEnumeration(): void {\n if (!this._mediaDevices || !this._enumerateDevices) {\n throw new NotSupportedError('Enumeration is not supported');\n }\n\n if (this._mediaDevices.addEventListener) {\n this._mediaDevices.addEventListener('devicechange', this._updateAvailableDevices);\n }\n\n this._updateAvailableDevices().then(() => {\n if (!this.isOutputSelectionSupported) { return; }\n\n Promise.all([\n this.speakerDevices.set('default'),\n this.ringtoneDevices.set('default'),\n ]).catch(reason => {\n this._log.warn(`Warning: Unable to set audio output devices. ${reason}`);\n });\n });\n }\n\n /**\n * Route local stream to the processor if it exists.\n */\n private _maybeCreateLocalProcessedStream(stream: MediaStream): Promise<MediaStream> {\n if (this._localProcessor) {\n this._log.info('Creating local processed stream');\n return this._localProcessor.createProcessedStream(stream).then((processedStream: MediaStream) => {\n this._localProcessedStream = processedStream;\n this._audioProcessorEventObserver.emit('create', false);\n return this._localProcessedStream;\n });\n }\n return Promise.resolve(stream);\n }\n\n /**\n * Set whether the sound is enabled or not\n * @param soundName\n * @param doEnable\n * @returns Whether the sound is enabled or not\n */\n private _maybeEnableSound(soundName: Device.ToggleableSound, doEnable?: boolean): boolean {\n if (typeof doEnable !== 'undefined') {\n this._enabledSounds[soundName] = doEnable;\n }\n return this._enabledSounds[soundName];\n }\n\n /**\n * Remove an input device from inputs\n * @param lostDevice\n * @returns Whether the device was active\n */\n private _removeLostInput = (lostDevice: MediaDeviceInfo): boolean => {\n if (!this.inputDevice || this.inputDevice.deviceId !== lostDevice.deviceId) {\n return false;\n }\n\n this._destroyLocalProcessedStream();\n this._replaceStream(null);\n this._inputDevice = null;\n this._maybeStopPollingVolume();\n\n const defaultDevice: MediaDeviceInfo = this.availableInputDevices.get('default')\n || Array.from(this.availableInputDevices.values())[0];\n\n if (defaultDevice) {\n this.setInputDevice(defaultDevice.deviceId);\n }\n\n return true;\n }\n\n /**\n * Remove an input device from outputs\n * @param lostDevice\n * @returns Whether the device was active\n */\n private _removeLostOutput = (lostDevice: MediaDeviceInfo): boolean => {\n const wasSpeakerLost: boolean = this.speakerDevices.delete(lostDevice);\n const wasRingtoneLost: boolean = this.ringtoneDevices.delete(lostDevice);\n return wasSpeakerLost || wasRingtoneLost;\n }\n\n /**\n * Stop the tracks on the current input stream before replacing it with the passed stream.\n * @param stream - The new stream\n */\n private _replaceStream(stream: MediaStream | null): void {\n this._log.info('Replacing with new stream.');\n if (this._selectedInputDeviceStream) {\n this._log.info('Old stream detected. Stopping tracks.');\n this._stopSelectedInputDeviceStream();\n }\n\n this._selectedInputDeviceStream = stream;\n }\n\n /**\n * Restart the active input streams\n */\n private _restartInputStreams(): Promise<void> {\n if (this.inputDevice && this._selectedInputDeviceStream) {\n this._log.info('Restarting selected input device');\n return this._setInputDevice(this.inputDevice.deviceId, true);\n }\n\n if (this._defaultInputDeviceStream) {\n const defaultDevice = this.availableInputDevices.get('default')\n || Array.from(this.availableInputDevices.values())[0];\n\n this._log.info('Restarting default input device, now becoming selected.');\n return this._setInputDevice(defaultDevice.deviceId, true);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Replace the current input device with a new device by ID.\n * @param deviceId - An ID of a device to replace the existing\n * input device with.\n * @param forceGetUserMedia - If true, getUserMedia will be called even if\n * the specified device is already active.\n */\n private async _setInputDevice(deviceId: string, forceGetUserMedia: boolean): Promise<void> {\n const setInputDevice = async () => {\n await this._beforeSetInputDevice();\n\n if (typeof deviceId !== 'string') {\n return Promise.reject(new InvalidArgumentError('Must specify the device to set'));\n }\n\n const device: MediaDeviceInfo | undefined = this.availableInputDevices.get(deviceId);\n if (!device) {\n return Promise.reject(new InvalidArgumentError(`Device not found: ${deviceId}`));\n }\n\n this._log.info('Setting input device. ID: ' + deviceId);\n\n if (this._inputDevice && this._inputDevice.deviceId === deviceId && this._selectedInputDeviceStream) {\n if (!forceGetUserMedia) {\n return Promise.resolve();\n }\n\n // If the currently active track is still in readyState `live`, gUM may return the same track\n // rather than returning a fresh track.\n this._log.info('Same track detected on setInputDevice, stopping old tracks.');\n this._stopSelectedInputDeviceStream();\n }\n\n // Release the default device in case it was created previously\n this._stopDefaultInputDeviceStream();\n\n const constraints = { audio: Object.assign({ deviceId: { exact: deviceId } }, this.audioConstraints) };\n this._log.info('setInputDevice: getting new tracks.');\n return this._getUserMedia(constraints).then((originalStream: MediaStream) => {\n\n this._destroyLocalProcessedStream();\n\n return this._maybeCreateLocalProcessedStream(originalStream).then((newStream) => {\n this._log.info('setInputDevice: invoking _onActiveInputChanged.');\n return this._onActiveInputChanged(newStream).then(() => {\n this._replaceStream(originalStream);\n this._inputDevice = device;\n this._maybeStartPollingVolume();\n });\n });\n });\n };\n\n return this._inputDevicePromise = setInputDevice().finally(() => {\n this._inputDevicePromise = null;\n });\n }\n\n /**\n * Remove event listener for microphone permissions\n */\n private _stopMicrophonePermissionListener(): void {\n if (this._microphonePermissionStatus?.removeEventListener) {\n this._microphonePermissionStatus.removeEventListener('change', this._onMicrophonePermissionStatusChanged);\n }\n }\n\n /**\n * Stop the selected audio stream\n */\n private _stopSelectedInputDeviceStream(): void {\n if (this._selectedInputDeviceStream) {\n this._log.info('Stopping selected device stream');\n this._selectedInputDeviceStream.getTracks().forEach(track => track.stop());\n }\n }\n\n /**\n * Update a set of devices.\n * @param updatedDevices - An updated list of available Devices\n * @param availableDevices - The previous list of available Devices\n * @param removeLostDevice - The method to call if a previously available Device is\n * no longer available.\n */\n private _updateDevices(updatedDevices: MediaDeviceInfo[],\n availableDevices: Map<string, MediaDeviceInfo>,\n removeLostDevice: (lostDevice: MediaDeviceInfo) => boolean): void {\n const updatedDeviceIds: string[] = updatedDevices.map(d => d.deviceId);\n const knownDeviceIds: string[] = Array.from(availableDevices.values()).map(d => d.deviceId);\n const lostActiveDevices: MediaDeviceInfo[] = [];\n\n // Remove lost devices\n const lostDeviceIds: string[] = difference(knownDeviceIds, updatedDeviceIds);\n lostDeviceIds.forEach((lostDeviceId: string) => {\n const lostDevice: MediaDeviceInfo | undefined = availableDevices.get(lostDeviceId);\n if (lostDevice) {\n availableDevices.delete(lostDeviceId);\n if (removeLostDevice(lostDevice)) { lostActiveDevices.push(lostDevice); }\n }\n });\n\n // Add any new devices, or devices with updated labels\n let deviceChanged: boolean = false;\n updatedDevices.forEach(newDevice => {\n const existingDevice: MediaDeviceInfo | undefined = availableDevices.get(newDevice.deviceId);\n const newMediaDeviceInfo: MediaDeviceInfo = this._wrapMediaDeviceInfo(newDevice);\n\n if (!existingDevice || existingDevice.label !== newMediaDeviceInfo.label) {\n availableDevices.set(newDevice.deviceId, newMediaDeviceInfo);\n deviceChanged = true;\n }\n });\n\n if (deviceChanged || lostDeviceIds.length) {\n // Force a new gUM in case the underlying tracks of the active stream have changed. One\n // reason this might happen is when `default` is selected and set to a USB device,\n // then that device is unplugged or plugged back in. We can't check for the 'ended'\n // event or readyState because it is asynchronous and may take upwards of 5 seconds,\n // in my testing. (rrowland)\n const defaultId = 'default';\n // this.inputDevice is not null if audio.setInputDevice() was explicitly called\n const isInputDeviceSet = this.inputDevice && this.inputDevice.deviceId === defaultId;\n // If this.inputDevice is null, and default stream is not null, it means\n // the user is using the default stream and did not explicitly call audio.setInputDevice()\n const isDefaultDeviceSet = this._defaultInputDeviceStream && this.availableInputDevices.get(defaultId);\n\n if (isInputDeviceSet || isDefaultDeviceSet) {\n this._log.warn(`Calling getUserMedia after device change to ensure that the \\\n tracks of the active device (default) have not gone stale.`);\n\n // NOTE(csantos): Updating the stream in the same execution context as the devicechange event\n // causes the new gUM call to fail silently. Meaning, the gUM call may succeed,\n // but it won't actually update the stream. We need to update the stream in a different\n // execution context (setTimeout) to properly update the stream.\n setTimeout(() => {\n this._setInputDevice(defaultId, true);\n }, 0);\n }\n this._log.debug('#deviceChange', lostActiveDevices);\n this.emit('deviceChange', lostActiveDevices);\n }\n }\n\n /**\n * Disconnect the old input volume source, and create and connect a new one with the current\n * input stream.\n */\n private _updateVolumeSource(): void {\n if (!this.inputStream || !this._audioContext || !this._inputVolumeAnalyser) {\n return;\n }\n\n if (this._inputVolumeSource) {\n this._inputVolumeSource.disconnect();\n }\n\n try {\n this._inputVolumeSource = this._audioContext.createMediaStreamSource(this.inputStream);\n this._inputVolumeSource.connect(this._inputVolumeAnalyser);\n } catch (ex) {\n this._log.warn('Unable to update volume source', ex);\n delete this._inputVolumeSource;\n }\n }\n\n /**\n * Convert a MediaDeviceInfo to a IMediaDeviceInfoShim.\n * @param mediaDeviceInfo - The info to convert\n * @returns The converted shim\n */\n private _wrapMediaDeviceInfo(mediaDeviceInfo: MediaDeviceInfo): MediaDeviceInfo {\n const options: Record<string, string> = {\n deviceId: mediaDeviceInfo.deviceId,\n groupId: mediaDeviceInfo.groupId,\n kind: mediaDeviceInfo.kind,\n label: mediaDeviceInfo.label,\n };\n\n if (!options.label) {\n if (options.deviceId === 'default') {\n options.label = 'Default';\n } else {\n const index: number = this._getUnknownDeviceIndex(mediaDeviceInfo);\n options.label = `Unknown ${kindAliases[options.kind]} Device ${index}`;\n }\n }\n\n return new MediaDeviceInfoShim(options) as MediaDeviceInfo;\n }\n}\n\n/**\n * @mergeModuleWith AudioHelper\n */\nnamespace AudioHelper {\n /**\n * Emitted when the available set of Devices changes.\n * @event\n * @param lostActiveDevices - An array containing any Devices that were previously active\n * that were lost as a result of this deviceChange event.\n * @example\n * ```ts\n * device.audio.on('deviceChange', lostActiveDevices => { });\n * ```\n */\n export declare function deviceChangeEvent(lostActiveDevices: MediaDeviceInfo[]): void;\n\n /**\n * Emitted on `requestAnimationFrame` (up to 60fps, depending on browser) with\n * the current input and output volumes, as a percentage of maximum\n * volume, between -100dB and -30dB. Represented by a floating point\n * number.\n * @event\n * @param inputVolume - A floating point number between 0.0 and 1.0 inclusive.\n * @example\n * ```ts\n * device.audio.on('inputVolume', volume => { });\n * ```\n */\n export declare function inputVolumeEvent(inputVolume: number): void;\n\n /**\n * An object like MediaDevices.\n * @internal\n */\n export interface MediaDevicesLike {\n addEventListener?: (eventName: string, handler: (...args: any[]) => void) => void;\n enumerateDevices: (...args: any[]) => any;\n getUserMedia: (...args: any[]) => any;\n removeEventListener?: (eventName: string, handler: (...args: any[]) => void) => void;\n }\n\n /**\n * Options that can be passed to the AudioHelper constructor\n * @internal\n */\n export interface Options {\n /**\n * A custom replacement for the AudioContext constructor.\n */\n AudioContext?: typeof AudioContext;\n\n /**\n * An existing AudioContext instance to use.\n */\n audioContext?: AudioContext;\n\n /**\n * AudioProcessorEventObserver to use\n */\n audioProcessorEventObserver: AudioProcessorEventObserver;\n\n /**\n * Promise to wait for before setting the input device.\n */\n beforeSetInputDevice?: () => Promise<any>;\n\n /**\n * Whether each sound is enabled.\n */\n enabledSounds?: Record<Device.ToggleableSound, boolean>;\n\n /**\n * Overrides the native MediaDevices.enumerateDevices API.\n */\n enumerateDevices?: any;\n\n /**\n * The getUserMedia method to use\n */\n getUserMedia: (constraints: MediaStreamConstraints) => Promise<MediaStream>;\n\n /**\n * A custom MediaDevices instance to use.\n */\n mediaDevices?: AudioHelper.MediaDevicesLike;\n\n /**\n * A custom setSinkId function to use.\n */\n setSinkId?: (sinkId: string) => Promise<void>;\n }\n}\n\nexport default AudioHelper;\n","import { EventEmitter } from 'events';\nimport Log from './log';\n\n/**\n * AudioProcessorEventObserver observes {@link AudioProcessor}\n * related operations and re-emits them as generic events.\n * @internal\n */\nexport class AudioProcessorEventObserver extends EventEmitter {\n\n private _log: Log = new Log('AudioProcessorEventObserver');\n\n constructor() {\n super();\n this._log.info('Creating AudioProcessorEventObserver instance');\n\n this.on('enabled', (isRemote) => this._reEmitEvent('enabled', isRemote));\n this.on('add', (isRemote) => this._reEmitEvent('add', isRemote));\n this.on('remove', (isRemote) => this._reEmitEvent('remove', isRemote));\n this.on('create', (isRemote) => this._reEmitEvent('create-processed-stream', isRemote));\n this.on('destroy', (isRemote) => this._reEmitEvent('destroy-processed-stream', isRemote));\n }\n\n destroy(): void {\n this.removeAllListeners();\n }\n\n private _reEmitEvent(name: string, isRemote: boolean): void {\n this._log.info(`${isRemote ? 'Remote' : 'Local'} AudioProcessor:${name}`);\n this.emit('event', { name, group: 'audio-processor', isRemote });\n }\n}\n","import { InvalidArgumentError } from './errors';\n\n/**\n * A Map of DTMF Sound Names to their mock frequency pairs.\n */\nconst bandFrequencies: Partial<Record<string, number[]>> = {\n dtmf0: [1360, 960],\n dtmf1: [1230, 720],\n dtmf2: [1360, 720],\n dtmf3: [1480, 720],\n dtmf4: [1230, 790],\n dtmf5: [1360, 790],\n dtmf6: [1480, 790],\n dtmf7: [1230, 870],\n dtmf8: [1360, 870],\n dtmf9: [1480, 870],\n dtmfh: [1480, 960],\n dtmfs: [1230, 960],\n};\n\nexport default class DialtonePlayer {\n /**\n * Gain nodes, reducing the frequency.\n */\n _gainNodes: GainNode[] = [];\n\n constructor(private _context: AudioContext) {\n this._gainNodes = [\n this._context.createGain(),\n this._context.createGain(),\n ];\n\n this._gainNodes.forEach((gainNode: GainNode) => {\n gainNode.connect(this._context.destination);\n gainNode.gain.value = 0.1;\n this._gainNodes.push(gainNode);\n });\n }\n\n cleanup(): void {\n this._gainNodes.forEach((gainNode: GainNode) => {\n gainNode.disconnect();\n });\n }\n\n /**\n * Play the dual frequency tone for the passed DTMF name.\n * @param sound\n */\n play(sound: string): void {\n const frequencies = bandFrequencies[sound];\n\n if (!frequencies) {\n throw new InvalidArgumentError('Invalid DTMF sound name');\n }\n\n const oscillators: OscillatorNode[] = [\n this._context.createOscillator(),\n this._context.createOscillator(),\n ];\n\n oscillators.forEach((oscillator: OscillatorNode, i: number) => {\n oscillator.type = 'sine' as OscillatorType;\n oscillator.frequency.value = frequencies[i];\n oscillator.connect(this._gainNodes[i]);\n oscillator.start();\n oscillator.stop(this._context.currentTime + 0.1);\n oscillator.addEventListener('ended', () => oscillator.disconnect());\n });\n }\n}\n","// @ts-nocheck\n\nfunction request(method, params, callback) {\n const body = JSON.stringify(params.body || {});\n const headers = new Headers();\n\n params.headers = params.headers || [];\n Object.entries(params.headers).forEach(([headerName, headerBody]) =>\n headers.append(headerName, headerBody));\n\n fetch(params.url, { body, headers, method })\n .then(response => response.text(), callback)\n .then(responseText => callback(null, responseText), callback);\n}\n/**\n * Use XMLHttpRequest to get a network resource.\n * @param {String} method - HTTP Method\n * @param {Object} params - Request parameters\n * @param {String} params.url - URL of the resource\n * @param {Array} params.headers - An array of headers to pass [{ headerName : headerBody }]\n * @param {Object} params.body - A JSON body to send to the resource\n * @returns {response}\n */\nconst Request = request;\n\n/**\n * Sugar function for request('GET', params, callback);\n * @param {Object} params - Request parameters\n * @param {Request~get} callback - The callback that handles the response.\n */\nRequest.get = function get(params, callback) {\n return new this('GET', params, callback);\n};\n\n/**\n * Sugar function for request('POST', params, callback);\n * @param {Object} params - Request parameters\n * @param {Request~post} callback - The callback that handles the response.\n */\nRequest.post = function post(params, callback) {\n return new this('POST', params, callback);\n};\n\nexport default Request;\n","// @ts-nocheck\nimport { EventEmitter } from 'events';\nimport Log from './log';\nimport request from './request';\n\n/**\n * Builds Endpoint Analytics (EA) event payloads and sends them to\n * the EA server.\n * @constructor\n * @param {String} productName - Name of the product publishing events.\n * @param {String} token - The JWT token to use to authenticate with\n * the EA server.\n * @param {EventPublisher.Options} options\n * @property {Boolean} isEnabled - Whether or not this publisher is publishing\n * to the server. Currently ignores the request altogether, in the future this\n * may store them in case publishing is re-enabled later. Defaults to true.\n */\n/**\n * @typedef {Object} EventPublisher.Options\n * @property {Object} [metadata=undefined] - A publisher_metadata object to send\n * with each payload.\n * @property {String} [host='eventgw.twilio.com'] - The host address of the EA\n * server to publish to.\n * @property {Object|Function} [defaultPayload] - A default payload to extend\n * when creating and sending event payloads. Also takes a function that\n * should return an object representing the default payload. This is\n * useful for fields that should always be present when they are\n * available, but are not always available.\n */\nclass EventPublisher extends EventEmitter {\n constructor(productName, token, options) {\n super();\n\n if (!(this instanceof EventPublisher)) {\n return new EventPublisher(productName, token, options);\n }\n\n // Apply default options\n options = Object.assign({ defaultPayload() { return { }; } }, options);\n\n let defaultPayload = options.defaultPayload;\n\n if (typeof defaultPayload !== 'function') {\n defaultPayload = () => Object.assign({ }, options.defaultPayload);\n }\n\n let isEnabled = true;\n const metadata = Object.assign({ app_name: undefined, app_version: undefined }, options.metadata);\n\n Object.defineProperties(this, {\n _defaultPayload: { value: defaultPayload },\n _host: { value: options.host, writable: true },\n _isEnabled: {\n get() { return isEnabled; },\n set(_isEnabled) { isEnabled = _isEnabled; },\n },\n _log: { value: new Log('EventPublisher') },\n _request: { value: options.request || request, writable: true },\n _token: { value: token, writable: true },\n isEnabled: {\n enumerable: true,\n get() { return isEnabled; },\n },\n metadata: {\n enumerable: true,\n get() { return metadata; },\n },\n productName: { enumerable: true, value: productName },\n token: {\n enumerable: true,\n get() { return this._token; },\n },\n });\n }\n}\n\n/**\n * Post to an EA server.\n * @private\n * @param {String} endpointName - Endpoint to post the event to\n * @param {String} level - ['debug', 'info', 'warning', 'error']\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n * onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @param {?Boolean} [force=false] - Whether or not to send this even if\n * publishing is disabled.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype._post = function _post(endpointName, level, group, name, payload, connection, force) {\n if ((!this.isEnabled && !force) || !this._host) {\n this._log.debug('Publishing cancelled', JSON.stringify({ isEnabled: this.isEnabled, force, host: this._host }));\n return Promise.resolve();\n }\n\n if (!connection || ((!connection.parameters || !connection.parameters.CallSid) && !connection.outboundConnectionId)) {\n if (!connection) {\n this._log.debug('Publishing cancelled. Missing connection object');\n } else {\n this._log.debug('Publishing cancelled. Missing connection info', JSON.stringify({\n outboundConnectionId: connection.outboundConnectionId, parameters: connection.parameters,\n }));\n }\n return Promise.resolve();\n }\n\n const event = {\n group,\n level: level.toUpperCase(),\n name,\n payload: (payload && payload.forEach) ?\n payload.slice(0) : Object.assign(this._defaultPayload(connection), payload),\n payload_type: 'application/json',\n private: false,\n publisher: this.productName,\n timestamp: (new Date()).toISOString(),\n };\n\n if (this.metadata) {\n event.publisher_metadata = this.metadata;\n }\n\n if (endpointName === 'EndpointEvents') {\n this._log.debug(\n 'Publishing insights',\n JSON.stringify({ endpointName, event, force, host: this._host }),\n );\n }\n\n const requestParams = {\n body: event,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Twilio-Token': this.token,\n },\n url: `https://${this._host}/v4/${endpointName}`,\n };\n\n return new Promise((resolve, reject) => {\n this._request.post(requestParams, err => {\n if (err) {\n this.emit('error', err);\n reject(err);\n } else {\n resolve();\n }\n });\n }).catch(e => {\n this._log.error(`Unable to post ${group} ${name} event to Insights. Received error: ${e}`);\n });\n};\n\n/**\n * Post an event to the EA server. Use this method when the level\n * is dynamic. Otherwise, it's better practice to use the sugar\n * methods named for the specific level.\n * @param {String} level - ['debug', 'info', 'warning', 'error']\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n * onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.post = function post(level, group, name, payload, connection, force) {\n return this._post('EndpointEvents', level, group, name, payload, connection, force);\n};\n\n/**\n * Post a debug-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n * onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.debug = function debug(group, name, payload, connection) {\n return this.post('debug', group, name, payload, connection);\n};\n\n/**\n * Post an info-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n * onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.info = function info(group, name, payload, connection) {\n return this.post('info', group, name, payload, connection);\n};\n\n/**\n * Post a warning-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n * onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.warn = function warn(group, name, payload, connection) {\n return this.post('warning', group, name, payload, connection);\n};\n\n/**\n * Post an error-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n * onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.error = function error(group, name, payload, connection) {\n return this.post('error', group, name, payload, connection);\n};\n\n/**\n * Post a metrics event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {Array<Object>} metrics - The metrics to post.\n * @param {?Object} [customFields] - Custom fields to append to each payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.postMetrics = function postMetrics(group, name, metrics, customFields, connection) {\n return new Promise(resolve => {\n const samples = metrics\n .map(formatMetric)\n .map(sample => Object.assign(sample, customFields));\n\n resolve(this._post('EndpointMetrics', 'info', group, name, samples, connection));\n });\n};\n\n/**\n * Update the host address of the insights server to publish to.\n * @param {String} host - The new host address of the insights server.\n */\nEventPublisher.prototype.setHost = function setHost(host) {\n this._host = host;\n};\n\n/**\n * Update the token to use to authenticate requests.\n * @param {string} token\n * @returns {void}\n */\nEventPublisher.prototype.setToken = function setToken(token) {\n this._token = token;\n};\n\n/**\n * Enable the publishing of events.\n */\nEventPublisher.prototype.enable = function enable() {\n this._isEnabled = true;\n};\n\n/**\n * Disable the publishing of events.\n */\nEventPublisher.prototype.disable = function disable() {\n this._isEnabled = false;\n};\n\nfunction formatMetric(sample) {\n return {\n audio_codec: sample.codecName,\n audio_level_in: sample.audioInputLevel,\n audio_level_out: sample.audioOutputLevel,\n bytes_received: sample.bytesReceived,\n bytes_sent: sample.bytesSent,\n call_volume_input: sample.inputVolume,\n call_volume_output: sample.outputVolume,\n jitter: sample.jitter,\n mos: sample.mos && (Math.round(sample.mos * 100) / 100),\n packets_lost: sample.packetsLost,\n packets_lost_fraction: sample.packetsLostFraction &&\n (Math.round(sample.packetsLostFraction * 100) / 100),\n packets_received: sample.packetsReceived,\n rtt: sample.rtt,\n timestamp: (new Date(sample.timestamp)).toISOString(),\n total_bytes_received: sample.totals.bytesReceived,\n total_bytes_sent: sample.totals.bytesSent,\n total_packets_lost: sample.totals.packetsLost,\n total_packets_received: sample.totals.packetsReceived,\n total_packets_sent: sample.totals.packetsSent,\n };\n}\n\nexport default EventPublisher;\n","// @ts-nocheck\n\n/**\n * This file was imported from another project. If making changes to this file, please don't\n * make them here. Make them on the linked repo below, then copy back:\n * https://code.hq.twilio.com/client/MockRTCStatsReport\n */\n\n// The legacy max volume, which is the positive half of a signed short integer.\nconst OLD_MAX_VOLUME = 32767;\n\nconst NativeRTCStatsReport = typeof window !== 'undefined'\n ? window.RTCStatsReport : undefined;\n\n/**\n * Create a MockRTCStatsReport wrapper around a Map of RTCStats objects. If RTCStatsReport is available\n * natively, it will be inherited so that instanceof checks pass.\n * @constructor\n * @extends RTCStatsReport\n * @param {Map<string, RTCStats>} statsMap - A Map of RTCStats objects to wrap\n * with a MockRTCStatsReport object.\n */\nfunction MockRTCStatsReport(statsMap) {\n if (!(this instanceof MockRTCStatsReport)) {\n return new MockRTCStatsReport(statsMap);\n }\n\n const self = this;\n Object.defineProperties(this, {\n _map: { value: statsMap },\n size: {\n enumerable: true,\n get() {\n return self._map.size;\n },\n },\n });\n\n this[Symbol.iterator] = statsMap[Symbol.iterator];\n}\n\n// If RTCStatsReport is available natively, inherit it. Keep our constructor.\nif (NativeRTCStatsReport) {\n MockRTCStatsReport.prototype = Object.create(NativeRTCStatsReport.prototype);\n MockRTCStatsReport.prototype.constructor = MockRTCStatsReport;\n}\n\n// Map the Map-like read methods to the underlying Map\n['entries', 'forEach', 'get', 'has', 'keys', 'values'].forEach(key => {\n MockRTCStatsReport.prototype[key] = function(...args) {\n return this._map[key](...args);\n };\n});\n\n/**\n * Convert an array of RTCStats objects into a mock RTCStatsReport object.\n * @param {Array<RTCStats>}\n * @return {MockRTCStatsReport}\n */\nMockRTCStatsReport.fromArray = function fromArray(array) {\n return new MockRTCStatsReport(array.reduce((map, rtcStats) => {\n map.set(rtcStats.id, rtcStats);\n return map;\n }, new Map()));\n};\n\n/**\n * Convert a legacy RTCStatsResponse object into a mock RTCStatsReport object.\n * @param {RTCStatsResponse} statsResponse - An RTCStatsResponse object returned by the\n * legacy getStats(callback) method in Chrome.\n * @return {MockRTCStatsReport} A mock RTCStatsReport object.\n */\nMockRTCStatsReport.fromRTCStatsResponse = function fromRTCStatsResponse(statsResponse) {\n let activeCandidatePairId;\n const transportIds = new Map();\n\n const statsMap = statsResponse.result().reduce((map, report) => {\n const id = report.id;\n switch (report.type) {\n case 'googCertificate':\n map.set(id, createRTCCertificateStats(report));\n break;\n case 'datachannel':\n map.set(id, createRTCDataChannelStats(report));\n break;\n case 'googCandidatePair':\n if (getBoolean(report, 'googActiveConnection')) {\n activeCandidatePairId = id;\n }\n\n map.set(id, createRTCIceCandidatePairStats(report));\n break;\n case 'localcandidate':\n map.set(id, createRTCIceCandidateStats(report, false));\n break;\n case 'remotecandidate':\n map.set(id, createRTCIceCandidateStats(report, true));\n break;\n case 'ssrc':\n if (isPresent(report, 'packetsReceived')) {\n map.set(`rtp-${id}`, createRTCInboundRTPStreamStats(report));\n } else {\n map.set(`rtp-${id}`, createRTCOutboundRTPStreamStats(report));\n }\n\n map.set(`track-${id}`, createRTCMediaStreamTrackStats(report));\n map.set(`codec-${id}`, createRTCCodecStats(report));\n break;\n case 'googComponent':\n const transportReport = createRTCTransportStats(report);\n transportIds.set(transportReport.selectedCandidatePairId, id);\n map.set(id, createRTCTransportStats(report));\n break;\n }\n\n return map;\n }, new Map());\n\n if (activeCandidatePairId) {\n const activeTransportId = transportIds.get(activeCandidatePairId);\n if (activeTransportId) {\n statsMap.get(activeTransportId).dtlsState = 'connected';\n }\n }\n\n return new MockRTCStatsReport(statsMap);\n};\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCTransportStats}\n */\nfunction createRTCTransportStats(report) {\n return {\n bytesReceived: undefined,\n bytesSent: undefined,\n dtlsState: undefined,\n id: report.id,\n localCertificateId: report.stat('localCertificateId'),\n remoteCertificateId: report.stat('remoteCertificateId'),\n rtcpTransportStatsId: undefined,\n selectedCandidatePairId: report.stat('selectedCandidatePairId'),\n timestamp: Date.parse(report.timestamp),\n type: 'transport',\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCCodecStats}\n */\nfunction createRTCCodecStats(report) {\n return {\n channels: undefined,\n clockRate: undefined,\n id: report.id,\n implementation: undefined,\n mimeType: `${report.stat('mediaType')}/${report.stat('googCodecName')}`,\n payloadType: undefined,\n sdpFmtpLine: undefined,\n timestamp: Date.parse(report.timestamp),\n type: 'codec',\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCMediaStreamTrackStats}\n */\nfunction createRTCMediaStreamTrackStats(report) {\n return {\n audioLevel: isPresent(report, 'audioOutputLevel')\n ? getInt(report, 'audioOutputLevel') / OLD_MAX_VOLUME\n : (getInt(report, 'audioInputLevel') || 0) / OLD_MAX_VOLUME,\n detached: undefined,\n echoReturnLoss: getFloat(report, 'googEchoCancellationReturnLoss'),\n echoReturnLossEnhancement: getFloat(report, 'googEchoCancellationReturnLossEnhancement'),\n ended: undefined,\n frameHeight: isPresent(report, 'googFrameHeightReceived')\n ? getInt(report, 'googFrameHeightReceived')\n : getInt(report, 'googFrameHeightSent'),\n frameWidth: isPresent(report, 'googFrameWidthReceived')\n ? getInt(report, 'googFrameWidthReceived')\n : getInt(report, 'googFrameWidthSent'),\n framesCorrupted: undefined,\n framesDecoded: getInt(report, 'framesDecoded'),\n framesDropped: undefined,\n framesPerSecond: undefined,\n framesReceived: undefined,\n framesSent: getInt(report, 'framesEncoded'),\n fullFramesLost: undefined,\n id: report.id,\n kind: report.stat('mediaType'),\n partialFramesLost: undefined,\n remoteSource: undefined,\n ssrcIds: undefined,\n timestamp: Date.parse(report.timestamp),\n trackIdentifier: report.stat('googTrackId'),\n type: 'track',\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @param {boolean} isInbound - Whether to create an inbound stats object, or outbound.\n * @returns {RTCRTPStreamStats}\n */\nfunction createRTCRTPStreamStats(report, isInbound) {\n return {\n associateStatsId: undefined,\n codecId: `codec-${report.id}`,\n firCount: isInbound\n ? getInt(report, 'googFirsSent')\n : undefined,\n id: report.id,\n isRemote: undefined,\n mediaType: report.stat('mediaType'),\n nackCount: isInbound\n ? getInt(report, 'googNacksSent')\n : getInt(report, 'googNacksReceived'),\n pliCount: isInbound\n ? getInt(report, 'googPlisSent')\n : getInt(report, 'googPlisReceived'),\n qpSum: getInt(report, 'qpSum'),\n sliCount: undefined,\n ssrc: report.stat('ssrc'),\n timestamp: Date.parse(report.timestamp),\n trackId: `track-${report.id}`,\n transportId: report.stat('transportId'),\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCInboundRTPStreamStats}\n */\nfunction createRTCInboundRTPStreamStats(report) {\n const rtp = createRTCRTPStreamStats(report, true);\n\n Object.assign(rtp, {\n burstDiscardCount: undefined,\n burstDiscardRate: undefined,\n burstLossCount: undefined,\n burstLossRate: undefined,\n burstPacketsDiscarded: undefined,\n burstPacketsLost: undefined,\n bytesReceived: getInt(report, 'bytesReceived'),\n fractionLost: undefined,\n framesDecoded: getInt(report, 'framesDecoded'),\n gapDiscardRate: undefined,\n gapLossRate: undefined,\n jitter: convertMsToSeconds(report.stat('googJitterReceived')),\n packetsDiscarded: undefined,\n packetsLost: getInt(report, 'packetsLost'),\n packetsReceived: getInt(report, 'packetsReceived'),\n packetsRepaired: undefined,\n roundTripTime: convertMsToSeconds(report.stat('googRtt')),\n type: 'inbound-rtp',\n });\n\n return rtp;\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCOutboundRTPStreamStats}\n */\nfunction createRTCOutboundRTPStreamStats(report) {\n const rtp = createRTCRTPStreamStats(report, false);\n\n Object.assign(rtp, {\n bytesSent: getInt(report, 'bytesSent'),\n framesEncoded: getInt(report, 'framesEncoded'),\n packetsSent: getInt(report, 'packetsSent'),\n remoteTimestamp: undefined,\n targetBitrate: undefined,\n type: 'outbound-rtp',\n });\n\n return rtp;\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @param {boolean} isRemote - Whether to create for a remote candidate, or local candidate.\n * @returns {RTCIceCandidateStats}\n */\nfunction createRTCIceCandidateStats(report, isRemote) {\n return {\n candidateType: translateCandidateType(report.stat('candidateType')),\n deleted: undefined,\n id: report.id,\n ip: report.stat('ipAddress'),\n isRemote,\n port: getInt(report, 'portNumber'),\n priority: getFloat(report, 'priority'),\n protocol: report.stat('transport'),\n relayProtocol: undefined,\n timestamp: Date.parse(report.timestamp),\n transportId: undefined,\n type: isRemote\n ? 'remote-candidate'\n : 'local-candidate',\n url: undefined,\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCIceCandidatePairStats}\n */\nfunction createRTCIceCandidatePairStats(report) {\n return {\n availableIncomingBitrate: undefined,\n availableOutgoingBitrate: undefined,\n bytesReceived: getInt(report, 'bytesReceived'),\n bytesSent: getInt(report, 'bytesSent'),\n consentRequestsSent: getInt(report, 'consentRequestsSent'),\n currentRoundTripTime: convertMsToSeconds(report.stat('googRtt')),\n id: report.id,\n lastPacketReceivedTimestamp: undefined,\n lastPacketSentTimestamp: undefined,\n localCandidateId: report.stat('localCandidateId'),\n nominated: undefined,\n priority: undefined,\n readable: undefined,\n remoteCandidateId: report.stat('remoteCandidateId'),\n requestsReceived: getInt(report, 'requestsReceived'),\n requestsSent: getInt(report, 'requestsSent'),\n responsesReceived: getInt(report, 'responsesReceived'),\n responsesSent: getInt(report, 'responsesSent'),\n retransmissionsReceived: undefined,\n retransmissionsSent: undefined,\n state: undefined,\n timestamp: Date.parse(report.timestamp),\n totalRoundTripTime: undefined,\n transportId: report.stat('googChannelId'),\n type: 'candidate-pair',\n writable: getBoolean(report, 'googWritable'),\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCIceCertificateStats}\n */\nfunction createRTCCertificateStats(report) {\n return {\n base64Certificate: report.stat('googDerBase64'),\n fingerprint: report.stat('googFingerprint'),\n fingerprintAlgorithm: report.stat('googFingerprintAlgorithm'),\n id: report.id,\n issuerCertificateId: report.stat('googIssuerId'),\n timestamp: Date.parse(report.timestamp),\n type: 'certificate',\n };\n}\n\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCDataChannelStats}\n */\nfunction createRTCDataChannelStats(report) {\n return {\n bytesReceived: undefined,\n bytesSent: undefined,\n datachannelid: report.stat('datachannelid'),\n id: report.id,\n label: report.stat('label'),\n messagesReceived: undefined,\n messagesSent: undefined,\n protocol: report.stat('protocol'),\n state: report.stat('state'),\n timestamp: Date.parse(report.timestamp),\n transportId: report.stat('transportId'),\n type: 'data-channel',\n };\n}\n\n/**\n * @param {number} inMs - A time in milliseconds\n * @returns {number} The time in seconds\n */\nfunction convertMsToSeconds(inMs) {\n return isNaN(inMs) || inMs === ''\n ? undefined\n : parseInt(inMs, 10) / 1000;\n}\n\n/**\n * @param {string} type - A type in the legacy format\n * @returns {string} The type adjusted to new standards for known naming changes\n */\nfunction translateCandidateType(type) {\n switch (type) {\n case 'peerreflexive':\n return 'prflx';\n case 'serverreflexive':\n return 'srflx';\n case 'host':\n case 'relay':\n default:\n return type;\n }\n}\n\nfunction getInt(report, statName) {\n const stat = report.stat(statName);\n return isPresent(report, statName)\n ? parseInt(stat, 10)\n : undefined;\n}\n\nfunction getFloat(report, statName) {\n const stat = report.stat(statName);\n return isPresent(report, statName)\n ? parseFloat(stat)\n : undefined;\n}\n\nfunction getBoolean(report, statName) {\n const stat = report.stat(statName);\n return isPresent(report, statName)\n ? (stat === 'true' || stat === true)\n : undefined;\n}\n\nfunction isPresent(report, statName) {\n const stat = report.stat(statName);\n return typeof stat !== 'undefined' && stat !== '';\n}\n\nexport default MockRTCStatsReport;\n","// @ts-nocheck\n// tslint:disable no-empty\nimport { InvalidArgumentError, NotSupportedError } from '../errors';\nimport MockRTCStatsReport from './mockrtcstatsreport';\n\nconst ERROR_PEER_CONNECTION_NULL = 'PeerConnection is null';\nconst ERROR_WEB_RTC_UNSUPPORTED = 'WebRTC statistics are unsupported';\n\n/**\n * Helper function to find a specific stat from a report.\n * Some environment provide the stats report as a map (regular browsers)\n * but some provide stats report as an array (citrix vdi)\n * @private\n */\nfunction findStatById(report, id) {\n if (typeof report.get === 'function') {\n return report.get(id);\n }\n return report.find(s => s.id === id);\n}\n\n/**\n * Generate WebRTC statistics report for the given {@link PeerConnection}\n * @param {PeerConnection} peerConnection - Target connection.\n * @return {Promise<RTCStatsReport>} WebRTC RTCStatsReport object\n */\nfunction getRTCStatsReport(peerConnection) {\n if (!peerConnection) {\n return Promise.reject(new InvalidArgumentError(ERROR_PEER_CONNECTION_NULL));\n }\n\n if (typeof peerConnection.getStats !== 'function') {\n return Promise.reject(new NotSupportedError(ERROR_WEB_RTC_UNSUPPORTED));\n }\n\n let promise;\n try {\n promise = peerConnection.getStats();\n } catch (e) {\n promise = new Promise(resolve => peerConnection.getStats(resolve)).then(MockRTCStatsReport.fromRTCStatsResponse);\n }\n\n return promise;\n}\n\n/**\n * @typedef {Object} StatsOptions\n * Used for testing to inject and extract methods.\n * @property {function} [createRTCSample] - Method for parsing an RTCStatsReport\n */\n/**\n * Collects any WebRTC statistics for the given {@link PeerConnection}\n * @param {PeerConnection} peerConnection - Target connection.\n * @param {StatsOptions} options - List of custom options.\n * @return {Promise<RTCSample>} Universally-formatted version of RTC stats.\n */\nfunction getRTCStats(peerConnection, options) {\n options = Object.assign({ createRTCSample }, options);\n\n return getRTCStatsReport(peerConnection).then(options.createRTCSample);\n}\n\n/**\n * Generate WebRTC stats report containing relevant information about ICE candidates for the given {@link PeerConnection}\n * @param {PeerConnection} peerConnection - Target connection.\n * @return {Promise<RTCIceCandidateStatsReport>} RTCIceCandidateStatsReport object\n */\nfunction getRTCIceCandidateStatsReport(peerConnection) {\n return getRTCStatsReport(peerConnection).then((report) => {\n // Find the relevant information needed to determine selected candidates later\n const {\n candidatePairs, localCandidates, remoteCandidates, transport,\n } = Array.from(report.values()).reduce((rval, stat) => {\n ['candidatePairs', 'localCandidates', 'remoteCandidates'].forEach((prop) => {\n if (!rval[prop]) {\n rval[prop] = [];\n }\n });\n\n switch (stat.type) {\n case 'candidate-pair':\n rval.candidatePairs.push(stat);\n break;\n case 'local-candidate':\n rval.localCandidates.push(stat);\n break;\n case 'remote-candidate':\n rval.remoteCandidates.push(stat);\n break;\n case 'transport':\n // This transport is the one being used if selectedCandidatePairId is populated\n if (stat.selectedCandidatePairId) {\n rval.transport = stat;\n }\n break;\n }\n\n return rval;\n }, {});\n\n // This is a report containing information about the selected candidates, such as IDs\n // This is coming from WebRTC stats directly and doesn't contain the actual ICE Candidates info\n const selectedCandidatePairReport = candidatePairs.find(pair =>\n // Firefox\n pair.selected ||\n // Spec-compliant way\n (transport && pair.id === transport.selectedCandidatePairId));\n\n let selectedIceCandidatePairStats;\n if (selectedCandidatePairReport) {\n selectedIceCandidatePairStats = {\n localCandidate: localCandidates.find(candidate => candidate.id === selectedCandidatePairReport.localCandidateId),\n remoteCandidate: remoteCandidates.find(candidate => candidate.id === selectedCandidatePairReport.remoteCandidateId),\n };\n }\n\n // Build the return object\n return {\n iceCandidateStats: [...localCandidates, ...remoteCandidates],\n selectedIceCandidatePairStats,\n };\n });\n}\n\n/**\n * @typedef {Object} RTCSample - A sample containing relevant WebRTC stats information.\n * @property {Number} [timestamp]\n * @property {String} [codecName] - MimeType name of the codec being used by the outbound audio stream\n * @property {Number} [rtt] - Round trip time\n * @property {Number} [jitter]\n * @property {Number} [packetsSent]\n * @property {Number} [packetsLost]\n * @property {Number} [packetsReceived]\n * @property {Number} [bytesReceived]\n * @property {Number} [bytesSent]\n * @property {Number} [localAddress]\n * @property {Number} [remoteAddress]\n */\nfunction RTCSample() { }\n\n/**\n * Create an RTCSample object from an RTCStatsReport\n * @private\n * @param {RTCStatsReport} statsReport\n * @returns {RTCSample}\n */\nfunction createRTCSample(statsReport) {\n let activeTransportId = null;\n const sample = new RTCSample();\n let fallbackTimestamp;\n\n Array.from(statsReport.values()).forEach(stats => {\n // Skip isRemote tracks which will be phased out completely and break in FF66.\n if (stats.isRemote) { return; }\n\n // Firefox hack -- Older firefox doesn't have dashes in type names\n const type = stats.type.replace('-', '');\n\n fallbackTimestamp = fallbackTimestamp || stats.timestamp;\n\n // (rrowland) As I understand it, this is supposed to come in on remote-inbound-rtp but it's\n // currently coming in on remote-outbound-rtp, so I'm leaving this outside the switch until\n // the appropriate place to look is cleared up.\n if (stats.remoteId) {\n const remote = findStatById(statsReport, stats.remoteId);\n if (remote && remote.roundTripTime) {\n sample.rtt = remote.roundTripTime * 1000;\n }\n }\n\n switch (type) {\n case 'inboundrtp':\n sample.timestamp = sample.timestamp || stats.timestamp;\n sample.jitter = stats.jitter * 1000;\n sample.packetsLost = stats.packetsLost;\n sample.packetsReceived = stats.packetsReceived;\n sample.bytesReceived = stats.bytesReceived;\n\n break;\n case 'outboundrtp':\n sample.timestamp = stats.timestamp;\n sample.packetsSent = stats.packetsSent;\n sample.bytesSent = stats.bytesSent;\n\n if (stats.codecId) {\n const codec = findStatById(statsReport, stats.codecId);\n sample.codecName = codec\n ? codec.mimeType && codec.mimeType.match(/(.*\\/)?(.*)/)[2]\n : stats.codecId;\n }\n\n break;\n case 'transport':\n activeTransportId = stats.id;\n break;\n }\n });\n\n if (!sample.timestamp) {\n sample.timestamp = fallbackTimestamp;\n }\n\n const activeTransport = findStatById(statsReport, activeTransportId);\n if (!activeTransport) { return sample; }\n\n const selectedCandidatePair = findStatById(statsReport, activeTransport.selectedCandidatePairId);\n if (!selectedCandidatePair) { return sample; }\n\n const localCandidate = findStatById(statsReport, selectedCandidatePair.localCandidateId);\n const remoteCandidate = findStatById(statsReport, selectedCandidatePair.remoteCandidateId);\n\n if (!sample.rtt) {\n sample.rtt = selectedCandidatePair &&\n (selectedCandidatePair.currentRoundTripTime * 1000);\n }\n\n Object.assign(sample, {\n // ip is deprecated. use address first then ip if on older versions of browser\n localAddress: localCandidate && (localCandidate.address || localCandidate.ip),\n remoteAddress: remoteCandidate && (remoteCandidate.address || remoteCandidate.ip),\n });\n\n return sample;\n}\n\nexport {\n getRTCStats,\n getRTCIceCandidateStatsReport,\n};\n","import { EventEmitter } from 'events';\nimport Call from '../call';\nimport Device, { IExtendedDeviceOptions } from '../device';\nimport {\n GeneralErrors,\n NotSupportedError,\n SignalingErrors,\n TwilioError,\n} from '../errors';\nimport Log from '../log';\nimport { RTCSampleTotals } from '../rtc/sample';\nimport RTCSample from '../rtc/sample';\nimport { getRTCIceCandidateStatsReport } from '../rtc/stats';\nimport RTCWarning from '../rtc/warning';\nimport StatsMonitor from '../statsMonitor';\nimport { NetworkTiming, TimeMeasurement } from './timing';\n\nimport { COWBELL_AUDIO_URL, ECHO_TEST_DURATION } from '../constants';\n\n/**\n * Placeholder until we convert peerconnection.js to TypeScript.\n * Represents the audio output object coming from Client SDK's PeerConnection object.\n */\nexport interface AudioOutput {\n /**\n * The audio element used to play out the sound.\n */\n audio: HTMLAudioElement;\n}\n\n/**\n * @mergeModuleWith PreflightTest\n */\nexport declare interface PreflightTest {\n /**\n * Raised when [[PreflightTest.status]] has transitioned to [[PreflightTest.Status.Completed]].\n * During this time, [[PreflightTest.report]] is available and ready to be inspected.\n * In some cases, this will not trigger if the test encounters a fatal error prior connecting to Twilio.\n * See [[PreflightTest.failedEvent]].\n * @param report\n * @example `preflight.on('completed', report => console.log(report))`\n * @event\n */\n completedEvent(report: PreflightTest.Report): void;\n\n /**\n * Raised when [[PreflightTest.status]] has transitioned to [[PreflightTest.Status.Connected]].\n * @example `preflight.on('connected', () => console.log('Test connected'))`\n * @event\n */\n connectedEvent(): void;\n\n /**\n * Raised when [[PreflightTest.status]] has transitioned to [[PreflightTest.Status.Failed]].\n * This happens when establishing a connection to Twilio has failed or when a test call has encountered a fatal error.\n * This is also raised if [[PreflightTest.stop]] is called while the test is in progress.\n * @param error\n * @example `preflight.on('failed', error => console.log(error))`\n * @event\n */\n failedEvent(error: TwilioError | DOMException): void;\n\n /**\n * Raised when the [[Call]] gets a webrtc sample object. This event is published every second.\n * @param sample\n * @example `preflight.on('sample', sample => console.log(sample))`\n * @event\n */\n sampleEvent(sample: RTCSample): void;\n\n /**\n * Raised whenever the [[Call]] encounters a warning.\n * @param name - The name of the warning.\n * @example `preflight.on('warning', (name, data) => console.log({ name, data }))`\n * @event\n */\n warningEvent(name: string, data: PreflightTest.Warning): void;\n}\n\n/**\n * Runs some tests to identify issues, if any, prohibiting successful calling.\n */\nexport class PreflightTest extends EventEmitter {\n /**\n * The {@link Call} for this test call\n */\n private _call: Call;\n\n /**\n * Callsid generated for this test call\n */\n private _callSid: string | undefined;\n\n /**\n * The {@link Device} for this test call\n */\n private _device: Device;\n\n /**\n * The timer when doing an echo test\n * The echo test is used when fakeMicInput is set to true\n */\n private _echoTimer: NodeJS.Timeout;\n\n /**\n * The edge that the `Twilio.Device` connected to.\n */\n private _edge: string | undefined;\n\n /**\n * End of test timestamp\n */\n private _endTime: number | undefined;\n\n /**\n * Whether this test has already logged an insights-connection-warning.\n */\n private _hasInsightsErrored: boolean = false;\n\n /**\n * Latest WebRTC sample collected for this test\n */\n private _latestSample: RTCSample | undefined;\n\n /**\n * An instance of Logger to use.\n */\n private _log: Log = new Log('PreflightTest');\n\n /**\n * Network related timing measurements for this test\n */\n private _networkTiming: NetworkTiming = {};\n\n /**\n * The options passed to {@link PreflightTest} constructor\n */\n private _options: PreflightTest.ExtendedOptions = {\n codecPreferences: [Call.Codec.PCMU, Call.Codec.Opus],\n edge: 'roaming',\n fakeMicInput: false,\n logLevel: 'error',\n signalingTimeoutMs: 10000,\n };\n\n /**\n * The report for this test.\n */\n private _report: PreflightTest.Report | undefined;\n\n /**\n * The WebRTC ICE candidates stats information collected during the test\n */\n private _rtcIceCandidateStatsReport: PreflightTest.RTCIceCandidateStatsReport;\n\n /**\n * WebRTC samples collected during this test\n */\n private _samples: RTCSample[];\n\n /**\n * Timer for setting up signaling connection\n */\n private _signalingTimeoutTimer: NodeJS.Timeout;\n\n /**\n * Start of test timestamp\n */\n private _startTime: number;\n\n /**\n * Current status of this test\n */\n private _status: PreflightTest.Status = PreflightTest.Status.Connecting;\n\n /**\n * List of warning names and warning data detected during this test\n */\n private _warnings: PreflightTest.Warning[];\n\n /**\n * Construct a {@link PreflightTest} instance.\n * @param token - A Twilio JWT token string.\n * @param options\n */\n constructor(token: string, options: PreflightTest.ExtendedOptions) {\n super();\n\n Object.assign(this._options, options);\n\n this._samples = [];\n this._warnings = [];\n this._startTime = Date.now();\n\n this._initDevice(token, {\n ...this._options,\n fileInputStream: this._options.fakeMicInput ?\n this._getStreamFromFile() : undefined,\n });\n\n // Device sets the loglevel so start logging after initializing the device.\n // Then selectively log options that users can modify.\n const userOptions = [\n 'codecPreferences',\n 'edge',\n 'fakeMicInput',\n 'logLevel',\n 'signalingTimeoutMs',\n ];\n const userOptionOverrides = [\n 'audioContext',\n 'deviceFactory',\n 'fileInputStream',\n 'getRTCIceCandidateStatsReport',\n 'iceServers',\n 'rtcConfiguration',\n ];\n if (typeof options === 'object') {\n const toLog: any = { ...options };\n Object.keys(toLog).forEach((key: string) => {\n if (!userOptions.includes(key) && !userOptionOverrides.includes(key)) {\n delete toLog[key];\n }\n if (userOptionOverrides.includes(key)) {\n toLog[key] = true;\n }\n });\n this._log.debug('.constructor', JSON.stringify(toLog));\n }\n }\n\n /**\n * Stops the current test and raises a failed event.\n */\n stop(): void {\n this._log.debug('.stop');\n const error = new GeneralErrors.CallCancelledError();\n if (this._device) {\n this._device.once(Device.EventName.Unregistered, () => this._onFailed(error));\n this._device.destroy();\n } else {\n this._onFailed(error);\n }\n }\n\n /**\n * Emit a {PreflightTest.Warning}\n */\n private _emitWarning(name: string, description: string, rtcWarning?: RTCWarning): void {\n const warning: PreflightTest.Warning = { name, description };\n if (rtcWarning) {\n warning.rtcWarning = rtcWarning;\n }\n this._warnings.push(warning);\n this._log.debug(`#${PreflightTest.Events.Warning}`, JSON.stringify(warning));\n this.emit(PreflightTest.Events.Warning, warning);\n }\n\n /**\n * Returns call quality base on the RTC Stats\n */\n private _getCallQuality(mos: number): PreflightTest.CallQuality {\n if (mos > 4.2) {\n return PreflightTest.CallQuality.Excellent;\n } else if (mos >= 4.1 && mos <= 4.2) {\n return PreflightTest.CallQuality.Great;\n } else if (mos >= 3.7 && mos <= 4) {\n return PreflightTest.CallQuality.Good;\n } else if (mos >= 3.1 && mos <= 3.6) {\n return PreflightTest.CallQuality.Fair;\n } else {\n return PreflightTest.CallQuality.Degraded;\n }\n }\n\n /**\n * Returns the report for this test.\n */\n private _getReport(): PreflightTest.Report {\n const stats = this._getRTCStats();\n const testTiming: TimeMeasurement = { start: this._startTime };\n if (this._endTime) {\n testTiming.end = this._endTime;\n testTiming.duration = this._endTime - this._startTime;\n }\n\n const report: PreflightTest.Report = {\n callSid: this._callSid,\n edge: this._edge,\n iceCandidateStats: this._rtcIceCandidateStatsReport?.iceCandidateStats ?? [],\n networkTiming: this._networkTiming,\n samples: this._samples,\n selectedEdge: this._options.edge,\n stats,\n testTiming,\n totals: this._getRTCSampleTotals(),\n warnings: this._warnings,\n };\n\n const selectedIceCandidatePairStats = this._rtcIceCandidateStatsReport?.selectedIceCandidatePairStats;\n\n if (selectedIceCandidatePairStats) {\n report.selectedIceCandidatePairStats = selectedIceCandidatePairStats;\n report.isTurnRequired = selectedIceCandidatePairStats.localCandidate.candidateType === 'relay'\n || selectedIceCandidatePairStats.remoteCandidate.candidateType === 'relay';\n }\n\n if (stats) {\n report.callQuality = this._getCallQuality(stats.mos.average);\n }\n\n return report;\n }\n\n /**\n * Returns RTC stats totals for this test\n */\n private _getRTCSampleTotals(): RTCSampleTotals | undefined {\n if (!this._latestSample) {\n return;\n }\n\n return { ...this._latestSample.totals };\n }\n\n /**\n * Returns RTC related stats captured during the test call\n */\n private _getRTCStats(): PreflightTest.RTCStats | undefined {\n const firstMosSampleIdx = this._samples.findIndex(\n sample => typeof sample.mos === 'number' && sample.mos > 0,\n );\n\n const samples = firstMosSampleIdx >= 0\n ? this._samples.slice(firstMosSampleIdx)\n : [];\n\n if (!samples || !samples.length) {\n return;\n }\n\n return ['jitter', 'mos', 'rtt'].reduce((statObj, stat) => {\n const values = samples.map(s => s[stat]);\n return {\n ...statObj,\n [stat]: {\n average: Number((values.reduce((total, value) => total + value) / values.length).toPrecision(5)),\n max: Math.max(...values),\n min: Math.min(...values),\n },\n };\n }, {} as any);\n }\n\n /**\n * Returns a MediaStream from a media file\n */\n private _getStreamFromFile(): MediaStream {\n const audioContext = this._options.audioContext;\n if (!audioContext) {\n throw new NotSupportedError('Cannot fake input audio stream: AudioContext is not supported by this browser.');\n }\n\n const audioEl: any = new Audio(COWBELL_AUDIO_URL);\n\n audioEl.addEventListener('canplaythrough', () => audioEl.play());\n if (typeof audioEl.setAttribute === 'function') {\n audioEl.setAttribute('crossorigin', 'anonymous');\n }\n\n const src = audioContext.createMediaElementSource(audioEl);\n const dest = audioContext.createMediaStreamDestination();\n src.connect(dest);\n\n return dest.stream;\n }\n\n /**\n * Initialize the device\n */\n private _initDevice(token: string, options: PreflightTest.ExtendedOptions): void {\n try {\n this._device = new (options.deviceFactory || Device)(token, {\n chunderw: options.chunderw,\n codecPreferences: options.codecPreferences,\n edge: options.edge,\n eventgw: options.eventgw,\n fileInputStream: options.fileInputStream,\n logLevel: options.logLevel,\n preflight: true,\n } as IExtendedDeviceOptions);\n\n this._device.once(Device.EventName.Registered, () => {\n this._onDeviceRegistered();\n });\n\n this._device.once(Device.EventName.Error, (error: TwilioError) => {\n this._onDeviceError(error);\n });\n\n this._device.register();\n } catch (error) {\n // We want to return before failing so the consumer can capture the event\n setTimeout(() => {\n this._onFailed(error);\n });\n return;\n }\n\n this._signalingTimeoutTimer = setTimeout(() => {\n this._onDeviceError(new SignalingErrors.ConnectionError('WebSocket Connection Timeout'));\n }, options.signalingTimeoutMs);\n }\n\n /**\n * Called on {@link Device} error event\n * @param error\n */\n private _onDeviceError(error: TwilioError): void {\n this._device.destroy();\n this._onFailed(error);\n }\n\n /**\n * Called on {@link Device} ready event\n */\n private async _onDeviceRegistered(): Promise<void> {\n clearTimeout(this._echoTimer);\n clearTimeout(this._signalingTimeoutTimer);\n\n this._call = await this._device.connect({\n rtcConfiguration: this._options.rtcConfiguration,\n });\n this._networkTiming.signaling = { start: Date.now() };\n this._setupCallHandlers(this._call);\n\n this._edge = this._device.edge || undefined;\n if (this._options.fakeMicInput) {\n this._echoTimer = setTimeout(() => this._device.disconnectAll(), ECHO_TEST_DURATION);\n\n const audio = this._device.audio as any;\n if (audio) {\n audio.disconnect(false);\n audio.outgoing(false);\n }\n }\n\n this._call.once('disconnect', () => {\n this._device.once(Device.EventName.Unregistered, () => this._onUnregistered());\n this._device.destroy();\n });\n\n const publisher = this._call['_publisher'] as any;\n publisher.on('error', () => {\n if (!this._hasInsightsErrored) {\n this._emitWarning('insights-connection-error',\n 'Received an error when attempting to connect to Insights gateway');\n }\n this._hasInsightsErrored = true;\n });\n }\n\n /**\n * Called when there is a fatal error\n * @param error\n */\n private _onFailed(error: TwilioError | DOMException): void {\n clearTimeout(this._echoTimer);\n clearTimeout(this._signalingTimeoutTimer);\n this._releaseHandlers();\n this._endTime = Date.now();\n this._status = PreflightTest.Status.Failed;\n this._log.debug(`#${PreflightTest.Events.Failed}`, error);\n this.emit(PreflightTest.Events.Failed, error);\n }\n\n /**\n * Called when the device goes offline.\n * This indicates that the test has been completed, but we won't know if it failed or not.\n * The onError event will be the indicator whether the test failed.\n */\n private _onUnregistered(): void {\n // We need to make sure we always execute preflight.on('completed') last\n // as client SDK sometimes emits 'offline' event before emitting fatal errors.\n setTimeout(() => {\n if (this._status === PreflightTest.Status.Failed) {\n return;\n }\n\n clearTimeout(this._echoTimer);\n clearTimeout(this._signalingTimeoutTimer);\n\n this._releaseHandlers();\n this._endTime = Date.now();\n this._status = PreflightTest.Status.Completed;\n this._report = this._getReport();\n this._log.debug(`#${PreflightTest.Events.Completed}`, JSON.stringify(this._report));\n this.emit(PreflightTest.Events.Completed, this._report);\n }, 10);\n }\n\n /**\n * Clean up all handlers for device and call\n */\n private _releaseHandlers(): void {\n [this._device, this._call].forEach((emitter: EventEmitter) => {\n if (emitter) {\n emitter.eventNames().forEach((name: string) => emitter.removeAllListeners(name));\n }\n });\n }\n\n /**\n * Setup the event handlers for the {@link Call} of the test call\n * @param call\n */\n private _setupCallHandlers(call: Call): void {\n if (this._options.fakeMicInput) {\n // When volume events start emitting, it means all audio outputs have been created.\n // Let's mute them if we're using fake mic input.\n call.once('volume', () => {\n call['_mediaHandler'].outputs\n .forEach((output: AudioOutput) => output.audio.muted = true);\n });\n }\n\n call.on('warning', (name: string, data: RTCWarning) => {\n this._emitWarning(name, 'Received an RTCWarning. See .rtcWarning for the RTCWarning', data);\n });\n\n call.once('accept', () => {\n this._callSid = call['_mediaHandler'].callSid;\n this._status = PreflightTest.Status.Connected;\n this._log.debug(`#${PreflightTest.Events.Connected}`);\n this.emit(PreflightTest.Events.Connected);\n });\n\n call.on('sample', async (sample) => {\n // RTC Stats are ready. We only need to get ICE candidate stats report once.\n if (!this._latestSample) {\n this._rtcIceCandidateStatsReport = await (\n this._options.getRTCIceCandidateStatsReport || getRTCIceCandidateStatsReport\n )(call['_mediaHandler'].version.pc);\n }\n\n this._latestSample = sample;\n this._samples.push(sample);\n this._log.debug(`#${PreflightTest.Events.Sample}`, JSON.stringify(sample));\n this.emit(PreflightTest.Events.Sample, sample);\n });\n\n // TODO: Update the following once the SDK supports emitting these events\n // Let's shim for now\n [{\n reportLabel: 'peerConnection',\n type: 'pcconnection',\n }, {\n reportLabel: 'ice',\n type: 'iceconnection',\n }, {\n reportLabel: 'dtls',\n type: 'dtlstransport',\n }, {\n reportLabel: 'signaling',\n type: 'signaling',\n }].forEach(({type, reportLabel}) => {\n\n const handlerName = `on${type}statechange`;\n const originalHandler = call['_mediaHandler'][handlerName];\n\n call['_mediaHandler'][handlerName] = (state: string) => {\n const timing = (this._networkTiming as any)[reportLabel]\n = (this._networkTiming as any)[reportLabel] || { start: 0 };\n\n if (state === 'connecting' || state === 'checking') {\n timing.start = Date.now();\n } else if ((state === 'connected' || state === 'stable') && !timing.duration) {\n timing.end = Date.now();\n timing.duration = timing.end - timing.start;\n }\n\n originalHandler(state);\n };\n });\n }\n\n /**\n * The callsid generated for the test call.\n */\n get callSid(): string | undefined {\n return this._callSid;\n }\n\n /**\n * A timestamp in milliseconds of when the test ended.\n */\n get endTime(): number | undefined {\n return this._endTime;\n }\n\n /**\n * The latest WebRTC sample collected.\n */\n get latestSample(): RTCSample | undefined {\n return this._latestSample;\n }\n\n /**\n * The report for this test.\n */\n get report(): PreflightTest.Report | undefined {\n return this._report;\n }\n\n /**\n * A timestamp in milliseconds of when the test started.\n */\n get startTime(): number {\n return this._startTime;\n }\n\n /**\n * The status of the test.\n */\n get status(): PreflightTest.Status {\n return this._status;\n }\n}\n\n/**\n * @mergeModuleWith PreflightTest\n */\nexport namespace PreflightTest {\n /**\n * The quality of the call determined by different mos ranges.\n * Mos is calculated base on the WebRTC stats - rtt, jitter, and packet lost.\n */\n export enum CallQuality {\n /**\n * If the average mos is over 4.2.\n */\n Excellent = 'excellent',\n\n /**\n * If the average mos is between 4.1 and 4.2 both inclusive.\n */\n Great = 'great',\n\n /**\n * If the average mos is between 3.7 and 4.0 both inclusive.\n */\n Good = 'good',\n\n /**\n * If the average mos is between 3.1 and 3.6 both inclusive.\n */\n Fair = 'fair',\n\n /**\n * If the average mos is 3.0 or below.\n */\n Degraded = 'degraded',\n }\n\n /**\n * Possible events that a [[PreflightTest]] might emit.\n */\n export enum Events {\n /**\n * See [[PreflightTest.completedEvent]]\n */\n Completed = 'completed',\n\n /**\n * See [[PreflightTest.connectedEvent]]\n */\n Connected = 'connected',\n\n /**\n * See [[PreflightTest.failedEvent]]\n */\n Failed = 'failed',\n\n /**\n * See [[PreflightTest.sampleEvent]]\n */\n Sample = 'sample',\n\n /**\n * See [[PreflightTest.warningEvent]]\n */\n Warning = 'warning',\n }\n\n /**\n * Possible status of the test.\n */\n export enum Status {\n /**\n * Call to Twilio has initiated.\n */\n Connecting = 'connecting',\n\n /**\n * Call to Twilio has been established.\n */\n Connected = 'connected',\n\n /**\n * The connection to Twilio has been disconnected and the test call has completed.\n */\n Completed = 'completed',\n\n /**\n * The test has stopped and failed.\n */\n Failed = 'failed',\n }\n\n /**\n * The WebRTC API's [RTCIceCandidateStats](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateStats)\n * dictionary which provides information related to an ICE candidate.\n */\n export type RTCIceCandidateStats = any;\n\n /**\n * Options that may be passed to {@link PreflightTest} constructor for internal testing.\n * @internal\n */\n export interface ExtendedOptions extends Options {\n /**\n * The AudioContext instance to use\n */\n audioContext?: AudioContext;\n\n /**\n * A string or array of strings representing the URI of the signaling\n * gateway to connect to.\n */\n chunderw?: string | string[];\n\n /**\n * Device class to use.\n */\n deviceFactory?: typeof Device;\n\n /**\n * A string representing the URI of the insights gateway to connect to.\n */\n eventgw?: string;\n\n /**\n * File input stream to use instead of reading from mic\n */\n fileInputStream?: MediaStream;\n\n /**\n * The getRTCIceCandidateStatsReport to use for testing.\n */\n getRTCIceCandidateStatsReport?: Function;\n\n /**\n * An RTCConfiguration to pass to the RTCPeerConnection constructor.\n */\n rtcConfiguration?: RTCConfiguration;\n }\n\n /**\n * A WebRTC stats report containing relevant information about selected and gathered ICE candidates\n */\n export interface RTCIceCandidateStatsReport {\n /**\n * An array of WebRTC stats for the ICE candidates gathered when connecting to media.\n */\n iceCandidateStats: RTCIceCandidateStats[];\n\n /**\n * A WebRTC stats for the ICE candidate pair used to connect to media, if candidates were selected.\n */\n selectedIceCandidatePairStats?: RTCSelectedIceCandidatePairStats;\n }\n\n /**\n * Options passed to {@link PreflightTest} constructor.\n */\n export interface Options {\n /**\n * An ordered array of codec names that will be used during the test call,\n * from most to least preferred.\n * @default ['pcmu','opus']\n */\n codecPreferences?: Call.Codec[];\n\n /**\n * Specifies which Twilio Data Center to use when initiating the test call.\n * Please see this\n * [page](https://www.twilio.com/docs/voice/client/edges)\n * for the list of available edges.\n * @default roaming\n */\n edge?: string;\n\n /**\n * If set to `true`, the test call will ignore microphone input and will use a default audio file.\n * If set to `false`, the test call will capture the audio from the microphone.\n * Setting this to `true` is only supported on Chrome and will throw a fatal error on other browsers\n * @default false\n */\n fakeMicInput?: boolean;\n\n /**\n * An array of custom ICE servers to use to connect media. If you provide both STUN and TURN server configurations,\n * the test will detect whether a TURN server is required to establish a connection.\n *\n * The following example demonstrates how to use [Twilio's Network Traversal Service](https://www.twilio.com/stun-turn)\n * to generate STUN/TURN credentials and how to specify a specific [edge location](https://www.twilio.com/docs/global-infrastructure/edge-locations).\n *\n * ```ts\n * import Client from 'twilio';\n * import { Device } from '@twilio/voice-sdk';\n *\n * // Generate the STUN and TURN server credentials with a ttl of 120 seconds\n * const client = Client(twilioAccountSid, authToken);\n * const token = await client.tokens.create({ ttl: 120 });\n *\n * let iceServers = token.iceServers;\n *\n * // By default, global will be used as the default edge location.\n * // You can replace global with a specific edge name for each of the iceServer configuration.\n * iceServers = iceServers.map(config => {\n * let { url, urls, ...rest } = config;\n * url = url.replace('global', 'ashburn');\n * urls = urls.replace('global', 'ashburn');\n *\n * return { url, urls, ...rest };\n * });\n *\n * // Use the TURN credentials using the iceServers parameter\n * const preflightTest = Device.runPreflight(token, { iceServers });\n *\n * // Read from the report object to determine whether TURN is required to connect to media\n * preflightTest.on('completed', (report) => {\n * console.log(report.isTurnRequired);\n * });\n * ```\n *\n * @default null\n */\n iceServers?: RTCIceServer[];\n\n /**\n * Log level to use in the Device.\n * @default 'error'\n */\n logLevel?: string;\n\n /**\n * Amount of time to wait for setting up signaling connection.\n * @default 10000\n */\n signalingTimeoutMs?: number;\n }\n\n /**\n * Represents the WebRTC stats for the ICE candidate pair used to connect to media, if candidates were selected.\n */\n export interface RTCSelectedIceCandidatePairStats {\n /**\n * An [RTCIceCandidateStats](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateStats)\n * object which provides information related to the selected local ICE candidate.\n */\n localCandidate: RTCIceCandidateStats;\n\n /**\n * An [RTCIceCandidateStats](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateStats)\n * object which provides information related to the selected remote ICE candidate.\n */\n remoteCandidate: RTCIceCandidateStats;\n }\n\n /**\n * Represents RTC related stats that are extracted from RTC samples.\n */\n export interface RTCStats {\n /**\n * Packets delay variation.\n */\n jitter: Stats;\n\n /**\n * Mean opinion score, 1.0 through roughly 4.5.\n */\n mos: Stats;\n\n /**\n * Round trip time, to the server back to the client.\n */\n rtt: Stats;\n }\n\n /**\n * Represents general stats for a specific metric.\n */\n export interface Stats {\n /**\n * The average value for this metric.\n */\n average: number;\n\n /**\n * The maximum value for this metric.\n */\n max: number;\n\n /**\n * The minimum value for this metric.\n */\n min: number;\n }\n\n /**\n * Represents the report generated from a {@link PreflightTest}.\n */\n export interface Report {\n /**\n * The quality of the call determined by different mos ranges.\n */\n callQuality?: CallQuality;\n\n /**\n * CallSid generated during the test.\n */\n callSid: string | undefined;\n\n /**\n * The edge that the test call was connected to.\n */\n edge?: string;\n\n /**\n * An array of WebRTC stats for the ICE candidates gathered when connecting to media.\n */\n iceCandidateStats: RTCIceCandidateStats[];\n\n /**\n * Whether a TURN server is required to connect to media.\n * This is dependent on the selected ICE candidates, and will be true if either is of type \"relay\",\n * false if both are of another type, or undefined if there are no selected ICE candidates.\n * See `PreflightTest.Options.iceServers` for more details.\n */\n isTurnRequired?: boolean;\n\n /**\n * Network related time measurements.\n */\n networkTiming: NetworkTiming;\n\n /**\n * WebRTC samples collected during the test.\n */\n samples: RTCSample[];\n\n /**\n * The edge passed to `Device.runPreflight`.\n */\n selectedEdge?: string;\n\n /**\n * A WebRTC stats for the ICE candidate pair used to connect to media, if candidates were selected.\n */\n selectedIceCandidatePairStats?: RTCSelectedIceCandidatePairStats;\n\n /**\n * RTC related stats captured during the test.\n */\n stats?: RTCStats;\n\n /**\n * Time measurements of test run time.\n */\n testTiming: TimeMeasurement;\n\n /**\n * Calculated totals in RTC statistics samples.\n */\n totals?: RTCSampleTotals;\n\n /**\n * List of warning names and warning data detected during this test.\n */\n warnings: PreflightTest.Warning[];\n }\n\n /**\n * A warning that can be raised by Preflight, and returned in the Report.warnings field.\n */\n export interface Warning {\n /**\n * Description of the Warning\n */\n description: string;\n /**\n * Name of the Warning\n */\n name: string;\n /**\n * If applicable, the RTCWarning that triggered this warning.\n */\n rtcWarning?: RTCWarning;\n }\n }\n","import { EventEmitter } from 'events';\nimport Backoff from './backoff';\nimport { SignalingErrors } from './errors';\nimport Log from './log';\n\nconst WebSocket = globalThis.WebSocket;\n\nconst CONNECT_SUCCESS_TIMEOUT = 10000;\nconst CONNECT_TIMEOUT = 5000;\nconst HEARTBEAT_TIMEOUT = 15000;\nconst MAX_PREFERRED_DURATION = 15000;\nconst MAX_PRIMARY_DURATION = Infinity;\nconst MAX_PREFERRED_DELAY = 1000;\nconst MAX_PRIMARY_DELAY = 20000;\n\nexport interface IMessageEvent {\n data: string;\n target: WebSocket;\n type: string;\n}\n\n/**\n * All possible states of WSTransport.\n */\nexport enum WSTransportState {\n /**\n * The WebSocket is not open but is trying to connect.\n */\n Connecting = 'connecting',\n\n /**\n * The WebSocket is not open and is not trying to connect.\n */\n Closed = 'closed',\n\n /**\n * The underlying WebSocket is open and active.\n */\n Open = 'open',\n}\n\n/**\n * Options to be passed to the WSTransport constructor.\n */\nexport interface IWSTransportConstructorOptions {\n /**\n * Time in milliseconds before websocket times out when attempting to connect\n */\n connectTimeoutMs?: number;\n\n /**\n * The maximum delay for the preferred backoff to make a connection attempt.\n */\n maxPreferredDelayMs?: number;\n\n /**\n * Max duration to attempt connecting to a preferred URI.\n */\n maxPreferredDurationMs?: number;\n\n /**\n * The maximum delay for the rimary backoff to make a connection attempt.\n */\n maxPrimaryDelayMs?: number;\n\n /**\n * Max duration to attempt connecting to a preferred URI.\n */\n maxPrimaryDurationMs?: number;\n\n /**\n * A WebSocket factory to use instead of WebSocket.\n */\n WebSocket?: typeof WebSocket;\n}\n\n/**\n * Type of the stored options property internally used by the WSTransport class.\n */\ntype IInternalWSTransportConstructorOptions = Required<IWSTransportConstructorOptions>;\n\n/**\n * WebSocket Transport\n */\nexport default class WSTransport extends EventEmitter {\n private static defaultConstructorOptions: IInternalWSTransportConstructorOptions = {\n WebSocket,\n connectTimeoutMs: CONNECT_TIMEOUT,\n maxPreferredDelayMs: MAX_PREFERRED_DELAY,\n maxPreferredDurationMs: MAX_PREFERRED_DURATION,\n maxPrimaryDelayMs: MAX_PRIMARY_DELAY,\n maxPrimaryDurationMs: MAX_PRIMARY_DURATION,\n };\n\n /**\n * The current state of the WSTransport.\n */\n state: WSTransportState = WSTransportState.Closed;\n\n /**\n * The backoff instance used to schedule reconnection attempts.\n */\n private readonly _backoff: {\n preferred: any;\n primary: any;\n };\n\n /**\n * Start timestamp values for backoffs.\n */\n private _backoffStartTime: {\n preferred: number | null;\n primary: number | null;\n } = {\n preferred: null,\n primary: null,\n };\n\n /**\n * The URI that the transport is connecting or connected to. The value of this\n * property is `null` if a connection attempt has not been made yet.\n */\n private _connectedUri: string | null = null;\n\n /**\n * The current connection timeout. If it times out, we've failed to connect\n * and should try again.\n *\n * We use any here because NodeJS returns a Timer and browser returns a number\n * and one can't be cast to the other, despite their working interoperably.\n */\n private _connectTimeout?: any;\n\n /**\n * The current connection timeout. If it times out, we've failed to connect\n * and should try again.\n *\n * We use any here because NodeJS returns a Timer and browser returns a number\n * and one can't be cast to the other, despite their working interoperably.\n */\n private _heartbeatTimeout?: any;\n\n /**\n * An instance of Logger to use.\n */\n private _log: Log = new Log('WSTransport');\n\n /**\n * Options after missing values are defaulted.\n */\n private _options: IInternalWSTransportConstructorOptions;\n\n /**\n * Preferred URI endpoint to connect to.\n */\n private _preferredUri: string | null;\n\n /**\n * Previous state of the connection\n */\n private _previousState: WSTransportState;\n\n /**\n * Whether we should attempt to fallback if we receive an applicable error\n * when trying to connect to a signaling endpoint.\n */\n private _shouldFallback: boolean = false;\n\n /**\n * The currently connecting or open WebSocket.\n */\n private _socket?: WebSocket;\n\n /**\n * The time the active connection was opened.\n */\n private _timeOpened?: number;\n\n /**\n * The current uri index that the transport is connected to.\n */\n private _uriIndex: number = 0;\n\n /**\n * List of URI of the endpoints to connect to.\n */\n private _uris: string[];\n\n /**\n * @constructor\n * @param uris - List of URI of the endpoints to connect to.\n * @param [options] - Constructor options.\n */\n constructor(uris: string[], options: IWSTransportConstructorOptions = { }) {\n super();\n\n this._options = { ...WSTransport.defaultConstructorOptions, ...options };\n\n this._uris = uris;\n\n this._backoff = this._setupBackoffs();\n }\n\n /**\n * Close the WebSocket, and don't try to reconnect.\n */\n close(): void {\n this._log.info('WSTransport.close() called...');\n this._close();\n }\n\n /**\n * Attempt to open a WebSocket connection.\n */\n open(): void {\n this._log.info('WSTransport.open() called...');\n\n if (this._socket &&\n (this._socket.readyState === WebSocket.CONNECTING ||\n this._socket.readyState === WebSocket.OPEN)) {\n this._log.info('WebSocket already open.');\n return;\n }\n\n if (this._preferredUri) {\n this._connect(this._preferredUri);\n } else {\n this._connect(this._uris[this._uriIndex]);\n }\n }\n\n /**\n * Send a message through the WebSocket connection.\n * @param message - A message to send to the endpoint.\n * @returns Whether the message was sent.\n */\n send(message: string): boolean {\n this._log.debug(`Sending: ${message}`);\n // We can't send the message if the WebSocket isn't open\n if (!this._socket || this._socket.readyState !== WebSocket.OPEN) {\n this._log.debug('Cannot send message. WebSocket is not open.');\n return false;\n }\n\n try {\n this._socket.send(message);\n } catch (e) {\n // Some unknown error occurred. Reset the socket to get a fresh session.\n this._log.error('Error while sending message:', e.message);\n this._closeSocket();\n return false;\n }\n\n return true;\n }\n\n /**\n * Update the preferred URI to connect to. Useful for Call signaling\n * reconnection, which requires connecting on the same edge. If `null` is\n * passed, the preferred URI is unset and the original `uris` array and\n * `uriIndex` is used to determine the signaling URI to connect to.\n * @param uri\n */\n updatePreferredURI(uri: string | null) {\n this._preferredUri = uri;\n }\n\n /**\n * Update acceptable URIs to reconnect to. Resets the URI index to 0.\n */\n updateURIs(uris: string[] | string) {\n if (typeof uris === 'string') {\n uris = [uris];\n }\n\n this._uris = uris;\n this._uriIndex = 0;\n }\n\n /**\n * Close the WebSocket, and don't try to reconnect.\n */\n private _close(): void {\n this._setState(WSTransportState.Closed);\n this._closeSocket();\n }\n\n /**\n * Close the WebSocket and remove all event listeners.\n */\n private _closeSocket(): void {\n clearTimeout(this._connectTimeout);\n clearTimeout(this._heartbeatTimeout);\n\n this._log.info('Closing and cleaning up WebSocket...');\n\n if (!this._socket) {\n this._log.info('No WebSocket to clean up.');\n return;\n }\n\n this._socket.removeEventListener('close', this._onSocketClose as any);\n this._socket.removeEventListener('error', this._onSocketError as any);\n this._socket.removeEventListener('message', this._onSocketMessage as any);\n this._socket.removeEventListener('open', this._onSocketOpen as any);\n\n if (this._socket.readyState === WebSocket.CONNECTING ||\n this._socket.readyState === WebSocket.OPEN) {\n this._socket.close();\n }\n\n // Reset backoff counter if connection was open for long enough to be considered successful\n if (this._timeOpened && Date.now() - this._timeOpened > CONNECT_SUCCESS_TIMEOUT) {\n this._resetBackoffs();\n }\n\n if (this.state !== WSTransportState.Closed) {\n this._performBackoff();\n }\n delete this._socket;\n\n this.emit('close');\n }\n\n /**\n * Attempt to connect to the endpoint via WebSocket.\n * @param [uri] - URI string to connect to.\n * @param [retryCount] - Retry number, if this is a retry. Undefined if\n * first attempt, 1+ if a retry.\n */\n private _connect(uri: string, retryCount?: number): void {\n this._log.info(\n typeof retryCount === 'number'\n ? `Attempting to reconnect (retry #${retryCount})...`\n : 'Attempting to connect...',\n );\n\n this._closeSocket();\n\n this._setState(WSTransportState.Connecting);\n this._connectedUri = uri;\n\n try {\n this._socket = new this._options.WebSocket(this._connectedUri);\n } catch (e) {\n this._log.error('Could not connect to endpoint:', e.message);\n this._close();\n this.emit('error', {\n code: 31000,\n message: e.message || `Could not connect to ${this._connectedUri}`,\n twilioError: new SignalingErrors.ConnectionDisconnected(),\n });\n return;\n }\n\n this._socket.addEventListener('close', this._onSocketClose as any);\n this._socket.addEventListener('error', this._onSocketError as any);\n this._socket.addEventListener('message', this._onSocketMessage as any);\n this._socket.addEventListener('open', this._onSocketOpen as any);\n\n delete this._timeOpened;\n\n this._connectTimeout = setTimeout(() => {\n this._log.info('WebSocket connection attempt timed out.');\n this._moveUriIndex();\n this._closeSocket();\n }, this._options.connectTimeoutMs);\n }\n\n /**\n * Move the uri index to the next index\n * If the index is at the end, the index goes back to the first one.\n */\n private _moveUriIndex = (): void => {\n this._uriIndex++;\n if (this._uriIndex >= this._uris.length) {\n this._uriIndex = 0;\n }\n }\n\n /**\n * Called in response to WebSocket#close event.\n */\n private _onSocketClose = (event: CloseEvent): void => {\n this._log.error(`Received websocket close event code: ${event.code}. Reason: ${event.reason}`);\n // 1006: Abnormal close. When the server is unreacheable\n // 1015: TLS Handshake error\n if (event.code === 1006 || event.code === 1015) {\n this.emit('error', {\n code: 31005,\n message: event.reason ||\n 'Websocket connection to Twilio\\'s signaling servers were ' +\n 'unexpectedly ended. If this is happening consistently, there may ' +\n 'be an issue resolving the hostname provided. If a region or an ' +\n 'edge is being specified in Device setup, ensure it is valid.',\n twilioError: new SignalingErrors.ConnectionError(),\n });\n\n const wasConnected = (\n // Only in Safari and certain Firefox versions, on network interruption, websocket drops right away with 1006\n // Let's check current state if it's open, meaning we should not fallback\n // because we're coming from a previously connected session\n this.state === WSTransportState.Open ||\n\n // But on other browsers, websocket doesn't drop\n // but our heartbeat catches it, setting the internal state to \"Connecting\".\n // With this, we should check the previous state instead.\n this._previousState === WSTransportState.Open\n );\n\n // Only fallback if this is not the first error\n // and if we were not connected previously\n if (this._shouldFallback || !wasConnected) {\n this._moveUriIndex();\n }\n\n this._shouldFallback = true;\n }\n this._closeSocket();\n }\n\n /**\n * Called in response to WebSocket#error event.\n */\n private _onSocketError = (err: Error): void => {\n this._log.error(`WebSocket received error: ${err.message}`);\n this.emit('error', {\n code: 31000,\n message: err.message || 'WSTransport socket error',\n twilioError: new SignalingErrors.ConnectionDisconnected(),\n });\n }\n\n /**\n * Called in response to WebSocket#message event.\n */\n private _onSocketMessage = (message: IMessageEvent): void => {\n // Clear heartbeat timeout on any incoming message, as they\n // all indicate an active connection.\n this._setHeartbeatTimeout();\n\n // Filter and respond to heartbeats\n if (this._socket && message.data === '\\n') {\n this._socket.send('\\n');\n this._log.debug('heartbeat');\n return;\n }\n\n if (message && typeof message.data === 'string') {\n this._log.debug(`Received: ${message.data}`);\n }\n\n this.emit('message', message);\n }\n\n /**\n * Called in response to WebSocket#open event.\n */\n private _onSocketOpen = (): void => {\n this._log.info('WebSocket opened successfully.');\n this._timeOpened = Date.now();\n this._shouldFallback = false;\n this._setState(WSTransportState.Open);\n clearTimeout(this._connectTimeout);\n\n this._resetBackoffs();\n\n this._setHeartbeatTimeout();\n this.emit('open');\n }\n\n /**\n * Perform a backoff. If a preferred URI is set (not null), then backoff\n * using the preferred mechanism. Otherwise, use the primary mechanism.\n */\n private _performBackoff(): void {\n if (this._preferredUri) {\n this._log.info('Preferred URI set; backing off.');\n this._backoff.preferred.backoff();\n } else {\n this._log.info('Preferred URI not set; backing off.');\n this._backoff.primary.backoff();\n }\n }\n\n /**\n * Reset both primary and preferred backoff mechanisms.\n */\n private _resetBackoffs() {\n this._backoff.preferred.reset();\n this._backoff.primary.reset();\n\n this._backoffStartTime.preferred = null;\n this._backoffStartTime.primary = null;\n }\n\n /**\n * Set a timeout to reconnect after HEARTBEAT_TIMEOUT milliseconds\n * have passed without receiving a message over the WebSocket.\n */\n private _setHeartbeatTimeout(): void {\n clearTimeout(this._heartbeatTimeout);\n this._heartbeatTimeout = setTimeout(() => {\n this._log.info(`No messages received in ${HEARTBEAT_TIMEOUT / 1000} seconds. Reconnecting...`);\n this._shouldFallback = true;\n this._closeSocket();\n }, HEARTBEAT_TIMEOUT);\n }\n\n /**\n * Set the current and previous state\n */\n private _setState(state: WSTransportState): void {\n this._previousState = this.state;\n this.state = state;\n }\n\n /**\n * Set up the primary and preferred backoff mechanisms.\n */\n private _setupBackoffs(): typeof WSTransport.prototype._backoff {\n const preferredBackoffConfig = {\n factor: 2.0,\n jitter: 0.40,\n max: this._options.maxPreferredDelayMs,\n min: 100,\n };\n this._log.info('Initializing preferred transport backoff using config: ', preferredBackoffConfig);\n const preferredBackoff = new Backoff(preferredBackoffConfig);\n\n preferredBackoff.on('backoff', (attempt: number, delay: number) => {\n if (this.state === WSTransportState.Closed) {\n this._log.info('Preferred backoff initiated but transport state is closed; not attempting a connection.');\n return;\n }\n this._log.info(`Will attempt to reconnect Websocket to preferred URI in ${delay}ms`);\n if (attempt === 0) {\n this._backoffStartTime.preferred = Date.now();\n this._log.info(`Preferred backoff start; ${this._backoffStartTime.preferred}`);\n }\n });\n\n preferredBackoff.on('ready', (attempt: number, _delay: number) => {\n if (this.state === WSTransportState.Closed) {\n this._log.info('Preferred backoff ready but transport state is closed; not attempting a connection.');\n return;\n }\n if (this._backoffStartTime.preferred === null) {\n this._log.info('Preferred backoff start time invalid; not attempting a connection.');\n return;\n }\n if (Date.now() - this._backoffStartTime.preferred > this._options.maxPreferredDurationMs) {\n this._log.info('Max preferred backoff attempt time exceeded; falling back to primary backoff.');\n this._preferredUri = null;\n this._backoff.primary.backoff();\n return;\n }\n if (typeof this._preferredUri !== 'string') {\n this._log.info('Preferred URI cleared; falling back to primary backoff.');\n this._preferredUri = null;\n this._backoff.primary.backoff();\n return;\n }\n this._connect(this._preferredUri, attempt + 1);\n });\n\n const primaryBackoffConfig = {\n factor: 2.0,\n jitter: 0.40,\n max: this._options.maxPrimaryDelayMs,\n // We only want a random initial delay if there are any fallback edges\n // Initial delay between 1s and 5s both inclusive\n min: this._uris && this._uris.length > 1\n ? Math.floor(Math.random() * (5000 - 1000 + 1)) + 1000\n : 100,\n };\n this._log.info('Initializing primary transport backoff using config: ', primaryBackoffConfig);\n const primaryBackoff = new Backoff(primaryBackoffConfig);\n\n primaryBackoff.on('backoff', (attempt: number, delay: number) => {\n if (this.state === WSTransportState.Closed) {\n this._log.info('Primary backoff initiated but transport state is closed; not attempting a connection.');\n return;\n }\n this._log.info(`Will attempt to reconnect WebSocket in ${delay}ms`);\n if (attempt === 0) {\n this._backoffStartTime.primary = Date.now();\n this._log.info(`Primary backoff start; ${this._backoffStartTime.primary}`);\n }\n });\n\n primaryBackoff.on('ready', (attempt: number, _delay: number) => {\n if (this.state === WSTransportState.Closed) {\n this._log.info('Primary backoff ready but transport state is closed; not attempting a connection.');\n return;\n }\n if (this._backoffStartTime.primary === null) {\n this._log.info('Primary backoff start time invalid; not attempting a connection.');\n return;\n }\n if (Date.now() - this._backoffStartTime.primary > this._options.maxPrimaryDurationMs) {\n this._log.info('Max primary backoff attempt time exceeded; not attempting a connection.');\n return;\n }\n this._connect(this._uris[this._uriIndex], attempt + 1);\n });\n\n return {\n preferred: preferredBackoff,\n primary: primaryBackoff,\n };\n }\n\n /**\n * The uri the transport is currently connected to\n */\n get uri(): string | null {\n return this._connectedUri;\n }\n}\n","import { InvalidArgumentError } from './errors';\n\n/**\n * Valid edges.\n */\nexport enum Edge {\n /**\n * Public edges\n */\n Sydney = 'sydney',\n SaoPaulo = 'sao-paulo',\n Dublin = 'dublin',\n Frankfurt = 'frankfurt',\n Tokyo = 'tokyo',\n Singapore = 'singapore',\n Ashburn = 'ashburn',\n Umatilla = 'umatilla',\n Roaming = 'roaming',\n /**\n * Interconnect edges\n */\n AshburnIx = 'ashburn-ix',\n SanJoseIx = 'san-jose-ix',\n LondonIx = 'london-ix',\n FrankfurtIx = 'frankfurt-ix',\n SingaporeIx = 'singapore-ix',\n SydneyIx = 'sydney-ix',\n TokyoIx = 'tokyo-ix',\n}\n\n/**\n * Valid current regions.\n *\n * @deprecated\n *\n * CLIENT-6831\n * This is no longer used or updated for checking validity of regions in the\n * SDK. We now allow any string to be passed for region. Invalid regions won't\n * be able to connect, and won't throw an exception.\n *\n * CLIENT-7519\n * This is used again to temporarily convert edge values to regions as part of\n * Phase 1 Regional. This is still considered deprecated.\n *\n * @private\n */\nexport enum Region {\n Au1 = 'au1',\n Au1Ix = 'au1-ix',\n Br1 = 'br1',\n De1 = 'de1',\n De1Ix = 'de1-ix',\n Gll = 'gll',\n Ie1 = 'ie1',\n Ie1Ix = 'ie1-ix',\n Ie1Tnx = 'ie1-tnx',\n Jp1 = 'jp1',\n Jp1Ix = 'jp1-ix',\n Sg1 = 'sg1',\n Sg1Ix = 'sg1-ix',\n Sg1Tnx = 'sg1-tnx',\n Us1 = 'us1',\n Us1Ix = 'us1-ix',\n Us1Tnx = 'us1-tnx',\n Us2 = 'us2',\n Us2Ix = 'us2-ix',\n Us2Tnx = 'us2-tnx',\n}\n\n/**\n * Region shortcodes. Maps the full region name from AWS to the Twilio shortcode.\n * @private\n */\nexport const regionShortcodes: { [index: string]: Region } = {\n ASIAPAC_SINGAPORE: Region.Sg1,\n ASIAPAC_SYDNEY: Region.Au1,\n ASIAPAC_TOKYO: Region.Jp1,\n EU_FRANKFURT: Region.De1,\n EU_IRELAND: Region.Ie1,\n SOUTH_AMERICA_SAO_PAULO: Region.Br1,\n US_EAST_VIRGINIA: Region.Us1,\n US_WEST_OREGON: Region.Us2,\n};\n\n/**\n * Region to edge mapping, as part of Phase 1 Regional (CLIENT-7519).\n * Temporary.\n * @private\n */\nexport const regionToEdge: Record<Region, Edge> = {\n [Region.Au1]: Edge.Sydney,\n [Region.Br1]: Edge.SaoPaulo,\n [Region.Ie1]: Edge.Dublin,\n [Region.De1]: Edge.Frankfurt,\n [Region.Jp1]: Edge.Tokyo,\n [Region.Sg1]: Edge.Singapore,\n [Region.Us1]: Edge.Ashburn,\n [Region.Us2]: Edge.Umatilla,\n [Region.Gll]: Edge.Roaming,\n /**\n * Interconnect edges\n */\n [Region.Us1Ix]: Edge.AshburnIx,\n [Region.Us2Ix]: Edge.SanJoseIx,\n [Region.Ie1Ix]: Edge.LondonIx,\n [Region.De1Ix]: Edge.FrankfurtIx,\n [Region.Sg1Ix]: Edge.SingaporeIx,\n [Region.Au1Ix]: Edge.SydneyIx,\n [Region.Jp1Ix]: Edge.TokyoIx,\n /**\n * Tnx regions\n */\n [Region.Us1Tnx]: Edge.AshburnIx,\n [Region.Us2Tnx]: Edge.AshburnIx,\n [Region.Ie1Tnx]: Edge.LondonIx,\n [Region.Sg1Tnx]: Edge.SingaporeIx,\n};\n\n/**\n * The default edge to connect to and create a chunder uri from, if the edge\n * parameter is not specified during setup in `Device`.\n * @constant\n */\nexport const defaultEdge: Edge = Edge.Roaming;\n\n/**\n * The default event gateway URI to publish to.\n * @constant\n * @private\n */\nconst defaultEventGatewayURI: string = 'eventgw.twilio.com';\n\n/**\n * String template for an edge chunder URI\n * @param edge - The edge.\n */\nfunction createChunderEdgeURI(edge: string): string {\n return `voice-js.${edge}.twilio.com`;\n}\n\n/**\n * String template for a region insights URI\n * @param region - The region.\n */\nexport function createEventGatewayURI(region: string): string {\n return region\n ? `eventgw.${region}.twilio.com`\n : defaultEventGatewayURI;\n}\n\n/**\n * Create a signaling endpoint URL to connect a websocket to from a chunder URI.\n * @param uri the chunder URI to create a signaling endpoint URL for\n */\nexport function createSignalingEndpointURL(uri: string): string {\n return `wss://${uri}/signal`;\n}\n\n/**\n * Get the URI associated with the passed edge.\n * @private\n * @param edge - A string or an array of edge values\n * @returns An array of chunder URIs\n */\nexport function getChunderURIs(edge?: string[] | string): string[] {\n if (!!edge && typeof edge !== 'string' && !Array.isArray(edge)) {\n throw new InvalidArgumentError(\n 'If `edge` is provided, it must be of type `string` or an array of strings.',\n );\n }\n\n let uris: string[];\n\n if (edge) {\n const edgeParams = Array.isArray(edge) ? edge : [edge];\n uris = edgeParams.map((param: Edge) => createChunderEdgeURI(param));\n } else {\n uris = [createChunderEdgeURI(defaultEdge)];\n }\n\n return uris;\n}\n\n/**\n * Get the region shortcode by its full AWS region string.\n *\n * @private\n * @param region - The region's full AWS string.\n */\nexport function getRegionShortcode(region: string): Region | null {\n return regionShortcodes[region] || null;\n}\n","// @ts-nocheck\nimport { EventEmitter } from 'events';\nimport * as C from './constants';\nimport { GeneralErrors, SignalingErrors } from './errors';\nimport Log from './log';\nimport WSTransport from './wstransport';\n\nconst PSTREAM_VERSION = '1.6';\n\n// In seconds\nconst MAX_RECONNECT_TIMEOUT_ALLOWED = 30;\n\n/**\n * Constructor for PStream objects.\n *\n * @exports PStream as Twilio.PStream\n * @memberOf Twilio\n * @borrows EventEmitter#addListener as #addListener\n * @borrows EventEmitter#removeListener as #removeListener\n * @borrows EventEmitter#emit as #emit\n * @borrows EventEmitter#hasListener as #hasListener\n * @constructor\n * @param {string} token The Twilio capabilities JWT\n * @param {string[]} uris An array of PStream endpoint URIs\n * @param {object} [options]\n * @config {boolean} [options.backoffMaxMs=20000] Enable debugging\n */\nclass PStream extends EventEmitter {\n constructor(token, uris, options) {\n super();\n\n if (!(this instanceof PStream)) {\n return new PStream(token, uris, options);\n }\n const defaults = {\n TransportFactory: WSTransport,\n };\n options = options || {};\n for (const prop in defaults) {\n if (prop in options) {\n continue;\n }\n options[prop] = defaults[prop];\n }\n this.options = options;\n this.token = token || '';\n this.status = 'disconnected';\n this.gateway = null;\n this.region = null;\n this._messageQueue = [];\n this._preferredUri = null;\n this._uris = uris;\n\n this._handleTransportClose = this._handleTransportClose.bind(this);\n this._handleTransportError = this._handleTransportError.bind(this);\n this._handleTransportMessage = this._handleTransportMessage.bind(this);\n this._handleTransportOpen = this._handleTransportOpen.bind(this);\n\n this._log = new Log('PStream');\n\n // NOTE(mroberts): EventEmitter requires that we catch all errors.\n this.on('error', () => {\n this._log.warn('Unexpected error handled in pstream');\n });\n\n /*\n *events used by device\n *'invite',\n *'ready',\n *'error',\n *'offline',\n *\n *'cancel',\n *'presence',\n *'roster',\n *'answer',\n *'candidate',\n *'hangup'\n */\n\n const self = this;\n\n this.addListener('ready', () => {\n self.status = 'ready';\n });\n\n this.addListener('offline', () => {\n self.status = 'offline';\n });\n\n this.addListener('close', () => {\n self._log.info('Received \"close\" from server. Destroying PStream...');\n self._destroy();\n });\n\n this.transport = new this.options.TransportFactory(this._uris, {\n backoffMaxMs: this.options.backoffMaxMs,\n maxPreferredDurationMs: this.options.maxPreferredDurationMs,\n });\n\n Object.defineProperties(this, {\n uri: {\n enumerable: true,\n get() {\n return this.transport.uri;\n },\n },\n });\n\n this.transport.on('close', this._handleTransportClose);\n this.transport.on('error', this._handleTransportError);\n this.transport.on('message', this._handleTransportMessage);\n this.transport.on('open', this._handleTransportOpen);\n this.transport.open();\n\n return this;\n }\n}\n\nPStream.prototype._handleTransportClose = function() {\n this.emit('transportClose');\n\n if (this.status !== 'disconnected') {\n if (this.status !== 'offline') {\n this.emit('offline', this);\n }\n this.status = 'disconnected';\n }\n};\n\nPStream.prototype._handleTransportError = function(error) {\n if (!error) {\n this.emit('error', { error: {\n code: 31000,\n message: 'Websocket closed without a provided reason',\n twilioError: new SignalingErrors.ConnectionDisconnected(),\n } });\n return;\n }\n // We receive some errors without call metadata (just the error). We need to convert these\n // to be contained within the 'error' field so that these errors match the expected format.\n this.emit('error', typeof error.code !== 'undefined' ? { error } : error);\n};\n\nPStream.prototype._handleTransportMessage = function(msg) {\n if (!msg || !msg.data || typeof msg.data !== 'string') {\n return;\n }\n\n const { type, payload = {} } = JSON.parse(msg.data);\n this.gateway = payload.gateway || this.gateway;\n this.region = payload.region || this.region;\n\n if (type === 'error' && payload.error) {\n payload.error.twilioError = new SignalingErrors.ConnectionError();\n }\n\n this.emit(type, payload);\n};\n\nPStream.prototype._handleTransportOpen = function() {\n this.status = 'connected';\n this.setToken(this.token);\n\n this.emit('transportOpen');\n\n const messages = this._messageQueue.splice(0, this._messageQueue.length);\n messages.forEach(message => this._publish(...message));\n};\n\n/**\n * @return {string}\n */\nPStream.toString = () => '[Twilio.PStream class]';\nPStream.prototype.toString = () => '[Twilio.PStream instance]';\n\nPStream.prototype.setToken = function(token) {\n this._log.info('Setting token and publishing listen');\n this.token = token;\n\n let reconnectTimeout = 0;\n const t = this.options.maxPreferredDurationMs;\n this._log.info(`maxPreferredDurationMs:${t}`);\n if (typeof t === 'number' && t >= 0) {\n reconnectTimeout = Math.min(Math.ceil(t / 1000), MAX_RECONNECT_TIMEOUT_ALLOWED);\n }\n\n this._log.info(`reconnectTimeout:${reconnectTimeout}`);\n const payload = {\n browserinfo: getBrowserInfo(),\n reconnectTimeout,\n token,\n };\n\n this._publish('listen', payload);\n};\n\nPStream.prototype.sendMessage = function(\n callsid,\n content,\n contenttype = 'application/json',\n messagetype,\n voiceeventsid,\n) {\n const payload = {\n callsid,\n content,\n contenttype,\n messagetype,\n voiceeventsid,\n };\n this._publish('message', payload, true);\n};\n\nPStream.prototype.register = function(mediaCapabilities) {\n const regPayload = { media: mediaCapabilities };\n this._publish('register', regPayload, true);\n};\n\nPStream.prototype.invite = function(sdp, callsid, params) {\n const payload = {\n callsid,\n sdp,\n twilio: params ? { params } : {},\n };\n this._publish('invite', payload, true);\n};\n\nPStream.prototype.reconnect = function(sdp, callsid, reconnect) {\n const payload = {\n callsid,\n reconnect,\n sdp,\n twilio: {},\n };\n this._publish('invite', payload, true);\n};\n\nPStream.prototype.answer = function(sdp, callsid) {\n this._publish('answer', { sdp, callsid }, true);\n};\n\nPStream.prototype.dtmf = function(callsid, digits) {\n this._publish('dtmf', { callsid, dtmf: digits }, true);\n};\n\nPStream.prototype.hangup = function(callsid, message) {\n const payload = message ? { callsid, message } : { callsid };\n this._publish('hangup', payload, true);\n};\n\nPStream.prototype.reject = function(callsid) {\n this._publish('reject', { callsid }, true);\n};\n\nPStream.prototype.reinvite = function(sdp, callsid) {\n this._publish('reinvite', { sdp, callsid }, false);\n};\n\nPStream.prototype._destroy = function() {\n this.transport.removeListener('close', this._handleTransportClose);\n this.transport.removeListener('error', this._handleTransportError);\n this.transport.removeListener('message', this._handleTransportMessage);\n this.transport.removeListener('open', this._handleTransportOpen);\n this.transport.close();\n\n this.emit('offline', this);\n};\n\nPStream.prototype.destroy = function() {\n this._log.info('PStream.destroy() called...');\n this._destroy();\n return this;\n};\n\nPStream.prototype.updatePreferredURI = function(uri) {\n this._preferredUri = uri;\n this.transport.updatePreferredURI(uri);\n};\n\nPStream.prototype.updateURIs = function(uris) {\n this._uris = uris;\n this.transport.updateURIs(this._uris);\n};\n\nPStream.prototype.publish = function(type, payload) {\n return this._publish(type, payload, true);\n};\n\nPStream.prototype._publish = function(type, payload, shouldRetry) {\n const msg = JSON.stringify({\n payload,\n type,\n version: PSTREAM_VERSION,\n });\n const isSent = !!this.transport.send(msg);\n\n if (!isSent) {\n this.emit('error', { error: {\n code: 31009,\n message: 'No transport available to send or receive messages',\n twilioError: new GeneralErrors.TransportError(),\n } });\n\n if (shouldRetry) {\n this._messageQueue.push([type, payload, true]);\n }\n }\n};\n\nfunction getBrowserInfo() {\n const nav = typeof navigator !== 'undefined' ? navigator : {};\n\n const info = {\n browser: {\n platform: nav.platform || 'unknown',\n userAgent: nav.userAgent || 'unknown',\n },\n p: 'browser',\n plugin: 'rtc',\n v: C.RELEASE_VERSION,\n };\n\n return info;\n}\n\nexport default PStream;\n","// @ts-nocheck\nimport * as util from '../util';\n\nconst ptToFixedBitrateAudioCodecName = {\n 0: 'PCMU',\n 8: 'PCMA',\n};\n\nconst defaultOpusId = 111;\nconst BITRATE_MAX = 510000;\nconst BITRATE_MIN = 6000;\n\nfunction getPreferredCodecInfo(sdp) {\n const [, codecId, codecName] = /a=rtpmap:(\\d+) (\\S+)/m.exec(sdp) || [null, '', ''];\n const regex = new RegExp(`a=fmtp:${codecId} (\\\\S+)`, 'm');\n const [, codecParams] = regex.exec(sdp) || [null, ''];\n return { codecName, codecParams };\n}\n\nfunction setIceAggressiveNomination(sdp) {\n // This only works on Chrome. We don't want any side effects on other browsers\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1024096\n // https://issues.corp.twilio.com/browse/CLIENT-6911\n if (!util.isChrome(window, window.navigator)) {\n return sdp;\n }\n\n return sdp.split('\\n')\n .filter(line => line.indexOf('a=ice-lite') === -1)\n .join('\\n');\n}\n\nfunction setMaxAverageBitrate(sdp, maxAverageBitrate) {\n if (typeof maxAverageBitrate !== 'number'\n || maxAverageBitrate < BITRATE_MIN\n || maxAverageBitrate > BITRATE_MAX) {\n return sdp;\n }\n\n const matches = /a=rtpmap:(\\d+) opus/m.exec(sdp);\n const opusId = matches && matches.length ? matches[1] : defaultOpusId;\n const regex = new RegExp(`a=fmtp:${opusId}`);\n const lines = sdp.split('\\n').map(line => regex.test(line)\n ? line + `;maxaveragebitrate=${maxAverageBitrate}`\n : line);\n\n return lines.join('\\n');\n}\n\n/**\n * Return a new SDP string with the re-ordered codec preferences.\n * @param {string} sdp\n * @param {Array<AudioCodec>} preferredCodecs - If empty, the existing order\n * of audio codecs is preserved\n * @returns {string} Updated SDP string\n */\nfunction setCodecPreferences(sdp, preferredCodecs) {\n const mediaSections = getMediaSections(sdp);\n const session = sdp.split('\\r\\nm=')[0];\n return [session].concat(mediaSections.map(section => {\n // Codec preferences should not be applied to m=application sections.\n if (!/^m=(audio|video)/.test(section)) {\n return section;\n }\n const kind = section.match(/^m=(audio|video)/)[1];\n const codecMap = createCodecMapForMediaSection(section);\n const payloadTypes = getReorderedPayloadTypes(codecMap, preferredCodecs);\n const newSection = setPayloadTypesInMediaSection(payloadTypes, section);\n\n const pcmaPayloadTypes = codecMap.get('pcma') || [];\n const pcmuPayloadTypes = codecMap.get('pcmu') || [];\n const fixedBitratePayloadTypes = kind === 'audio'\n ? new Set(pcmaPayloadTypes.concat(pcmuPayloadTypes))\n : new Set();\n\n return fixedBitratePayloadTypes.has(payloadTypes[0])\n ? newSection.replace(/\\r\\nb=(AS|TIAS):([0-9]+)/g, '')\n : newSection;\n })).join('\\r\\n');\n}\n\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - SDP string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array<string>} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n return sdp.replace(/\\r\\n\\r\\n$/, '\\r\\n').split('\\r\\nm=').slice(1).map(mediaSection => `m=${mediaSection}`).filter(mediaSection => {\n const kindPattern = new RegExp(`m=${kind || '.*'}`, 'gm');\n const directionPattern = new RegExp(`a=${direction || '.*'}`, 'gm');\n return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n });\n}\n\n/**\n * Create a Codec Map for the given m= section.\n * @param {string} section - The given m= section\n * @returns {Map<Codec, Array<PT>>}\n */\nfunction createCodecMapForMediaSection(section) {\n return Array.from(createPtToCodecName(section)).reduce((codecMap, pair) => {\n const pt = pair[0];\n const codecName = pair[1];\n const pts = codecMap.get(codecName) || [];\n return codecMap.set(codecName, pts.concat(pt));\n }, new Map());\n}\n\n/**\n * Create the reordered Codec Payload Types based on the preferred Codec Names.\n * @param {Map<Codec, Array<PT>>} codecMap - Codec Map\n * @param {Array<Codec>} preferredCodecs - Preferred Codec Names\n * @returns {Array<PT>} Reordered Payload Types\n */\nfunction getReorderedPayloadTypes(codecMap, preferredCodecs) {\n preferredCodecs = preferredCodecs.map(codecName => codecName.toLowerCase());\n\n const preferredPayloadTypes = util.flatMap(preferredCodecs, codecName => codecMap.get(codecName) || []);\n\n const remainingCodecs = util.difference(Array.from(codecMap.keys()), preferredCodecs);\n const remainingPayloadTypes = util.flatMap(remainingCodecs, codecName => codecMap.get(codecName));\n\n return preferredPayloadTypes.concat(remainingPayloadTypes);\n}\n\n/**\n * Set the given Codec Payload Types in the first line of the given m= section.\n * @param {Array<PT>} payloadTypes - Payload Types\n * @param {string} section - Given m= section\n * @returns {string} - Updated m= section\n */\nfunction setPayloadTypesInMediaSection(payloadTypes, section) {\n const lines = section.split('\\r\\n');\n let mLine = lines[0];\n const otherLines = lines.slice(1);\n mLine = mLine.replace(/([0-9]+\\s?)+$/, payloadTypes.join(' '));\n return [mLine].concat(otherLines).join('\\r\\n');\n}\n\n/**\n * Create a Map from PTs to codec names for the given m= section.\n * @param {string} mediaSection - The given m= section.\n * @returns {Map<PT, Codec>} ptToCodecName\n */\nfunction createPtToCodecName(mediaSection) {\n return getPayloadTypesInMediaSection(mediaSection).reduce((ptToCodecName, pt) => {\n const rtpmapPattern = new RegExp(`a=rtpmap:${pt} ([^/]+)`);\n const matches = mediaSection.match(rtpmapPattern);\n const codecName = matches\n ? matches[1].toLowerCase()\n : ptToFixedBitrateAudioCodecName[pt]\n ? ptToFixedBitrateAudioCodecName[pt].toLowerCase()\n : '';\n return ptToCodecName.set(pt, codecName);\n }, new Map());\n}\n\n/**\n * Get the Codec Payload Types present in the first line of the given m= section\n * @param {string} section - The m= section\n * @returns {Array<PT>} Payload Types\n */\nfunction getPayloadTypesInMediaSection(section) {\n const mLine = section.split('\\r\\n')[0];\n\n // In \"m=<kind> <port> <proto> <payload_type_1> <payload_type_2> ... <payload_type_n>\",\n // the regex matches <port> and the PayloadTypes.\n const matches = mLine.match(/([0-9]+)/g);\n\n // This should not happen, but in case there are no PayloadTypes in\n // the m= line, return an empty array.\n if (!matches) {\n return [];\n }\n\n // Since only the PayloadTypes are needed, we discard the <port>.\n return matches.slice(1).map(match => parseInt(match, 10));\n}\n\nexport {\n getPreferredCodecInfo,\n setCodecPreferences,\n setIceAggressiveNomination,\n setMaxAverageBitrate,\n};\n","// @ts-nocheck\n// tslint:disable only-arrow-functions\n/* global webkitRTCPeerConnection, mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate */\n\nimport Log from '../log';\nimport * as util from '../util';\nimport { setCodecPreferences, setMaxAverageBitrate } from './sdp';\n\nfunction RTCPC(options: { RTCPeerConnection?: any }) {\n this.log = new Log('RTCPC');\n\n if (typeof window === 'undefined') {\n this.log.info('No RTCPeerConnection implementation available. The window object was not found.');\n return;\n }\n\n if (options && options.RTCPeerConnection) {\n this.RTCPeerConnection = options.RTCPeerConnection;\n } else if (typeof window.RTCPeerConnection === 'function') {\n this.RTCPeerConnection = window.RTCPeerConnection;\n } else if (typeof window.webkitRTCPeerConnection === 'function') {\n this.RTCPeerConnection = webkitRTCPeerConnection;\n } else if (typeof window.mozRTCPeerConnection === 'function') {\n this.RTCPeerConnection = mozRTCPeerConnection;\n window.RTCSessionDescription = mozRTCSessionDescription;\n window.RTCIceCandidate = mozRTCIceCandidate;\n } else {\n this.log.info('No RTCPeerConnection implementation available');\n }\n}\n\nRTCPC.prototype.create = function(rtcConfiguration) {\n this.pc = new this.RTCPeerConnection(rtcConfiguration);\n};\nRTCPC.prototype.createModernConstraints = c => {\n // createOffer differs between Chrome 23 and Chrome 24+.\n // See https://groups.google.com/forum/?fromgroups=#!topic/discuss-webrtc/JBDZtrMumyU\n // Unfortunately I haven't figured out a way to detect which format\n // is required ahead of time, so we'll first try the old way, and\n // if we get an exception, then we'll try the new way.\n if (typeof c === 'undefined') {\n return null;\n }\n // NOTE(mroberts): As of Chrome 38, Chrome still appears to expect\n // constraints under the 'mandatory' key, and with the first letter of each\n // constraint capitalized. Firefox, on the other hand, has deprecated the\n // 'mandatory' key and does not expect the first letter of each constraint\n // capitalized.\n const nc = Object.assign({}, c);\n if (typeof webkitRTCPeerConnection !== 'undefined' && !util.isLegacyEdge()) {\n nc.mandatory = {};\n if (typeof c.audio !== 'undefined') {\n nc.mandatory.OfferToReceiveAudio = c.audio;\n }\n if (typeof c.video !== 'undefined') {\n nc.mandatory.OfferToReceiveVideo = c.video;\n }\n } else {\n if (typeof c.audio !== 'undefined') {\n nc.offerToReceiveAudio = c.audio;\n }\n if (typeof c.video !== 'undefined') {\n nc.offerToReceiveVideo = c.video;\n }\n }\n\n delete nc.audio;\n delete nc.video;\n\n return nc;\n};\nRTCPC.prototype.createOffer = function(maxAverageBitrate, constraints, onSuccess, onError) {\n constraints = this.createModernConstraints(constraints);\n return promisifyCreate(this.pc.createOffer, this.pc)(constraints).then(offer => {\n if (!this.pc) { return Promise.resolve(); }\n\n const sdp = setMaxAverageBitrate(offer.sdp, maxAverageBitrate);\n\n return promisifySet(this.pc.setLocalDescription, this.pc)(new RTCSessionDescription({\n sdp,\n type: 'offer',\n }));\n }).then(onSuccess, onError);\n};\nRTCPC.prototype.createAnswer = function(maxAverageBitrate, constraints, onSuccess, onError) {\n constraints = this.createModernConstraints(constraints);\n return promisifyCreate(this.pc.createAnswer, this.pc)(constraints).then(answer => {\n if (!this.pc) { return Promise.resolve(); }\n const sdp = setMaxAverageBitrate(answer.sdp, maxAverageBitrate);\n\n return promisifySet(this.pc.setLocalDescription, this.pc)(new RTCSessionDescription({\n sdp,\n type: 'answer',\n }));\n }).then(onSuccess, onError);\n};\nRTCPC.prototype.processSDP = function(maxAverageBitrate, codecPreferences, sdp, constraints, onSuccess, onError) {\n sdp = setCodecPreferences(sdp, codecPreferences);\n const desc = new RTCSessionDescription({ sdp, type: 'offer' });\n return promisifySet(this.pc.setRemoteDescription, this.pc)(desc).then(() => {\n this.createAnswer(maxAverageBitrate, constraints, onSuccess, onError);\n });\n};\nRTCPC.prototype.getSDP = function() {\n return this.pc.localDescription.sdp;\n};\nRTCPC.prototype.processAnswer = function(codecPreferences, sdp, onSuccess, onError) {\n if (!this.pc) { return Promise.resolve(); }\n sdp = setCodecPreferences(sdp, codecPreferences);\n\n return promisifySet(this.pc.setRemoteDescription, this.pc)(\n new RTCSessionDescription({ sdp, type: 'answer' }),\n ).then(onSuccess, onError);\n};\n/* NOTE(mroberts): Firefox 18 through 21 include a `mozRTCPeerConnection`\n object, but attempting to instantiate it will throw the error\n\n Error: PeerConnection not enabled (did you set the pref?)\n\n unless the `media.peerconnection.enabled` pref is enabled. So we need to test\n if we can actually instantiate `mozRTCPeerConnection`; however, if the user\n *has* enabled `media.peerconnection.enabled`, we need to perform the same\n test that we use to detect Firefox 24 and above, namely:\n\n typeof (new mozRTCPeerConnection()).getLocalStreams === 'function'\n\n NOTE(rrowland): We no longer support Legacy Edge as of Sep 1, 2020.\n*/\nRTCPC.test = () => {\n if (typeof navigator === 'object') {\n const getUserMedia = (navigator.mediaDevices && navigator.mediaDevices.getUserMedia)\n || navigator.webkitGetUserMedia\n || navigator.mozGetUserMedia\n || navigator.getUserMedia;\n\n if (util.isLegacyEdge(navigator)) {\n return false;\n }\n\n if (getUserMedia && typeof window.RTCPeerConnection === 'function') {\n return true;\n } else if (getUserMedia && typeof window.webkitRTCPeerConnection === 'function') {\n return true;\n } else if (getUserMedia && typeof window.mozRTCPeerConnection === 'function') {\n try {\n const test = new window.mozRTCPeerConnection();\n if (typeof test.getLocalStreams !== 'function') {\n return false;\n }\n } catch (e) {\n return false;\n }\n return true;\n } else if (typeof RTCIceGatherer !== 'undefined') {\n return true;\n }\n }\n\n return false;\n};\n\nfunction promisify(fn, ctx, areCallbacksFirst, checkRval) {\n return function() {\n const args = Array.prototype.slice.call(arguments);\n\n return new Promise(resolve => {\n const returnValue = fn.apply(ctx, args);\n if (!checkRval) {\n resolve(returnValue);\n return;\n }\n if (typeof returnValue === 'object' && typeof returnValue.then === 'function') {\n resolve(returnValue);\n } else {\n throw new Error();\n }\n }).catch(() => new Promise((resolve, reject) => {\n fn.apply(ctx, areCallbacksFirst\n ? [resolve, reject].concat(args)\n : args.concat([resolve, reject]));\n }));\n };\n}\n\nfunction promisifyCreate(fn, ctx) {\n return promisify(fn, ctx, true, true);\n}\n\nfunction promisifySet(fn, ctx) {\n return promisify(fn, ctx, false, false);\n}\n\nexport default RTCPC;\n","// @ts-nocheck\nimport {\n InvalidArgumentError,\n MediaErrors,\n NotSupportedError,\n SignalingErrors,\n} from '../errors';\nimport Log from '../log';\nimport * as util from '../util';\nimport RTCPC from './rtcpc';\nimport { setIceAggressiveNomination } from './sdp';\n\nconst ICE_GATHERING_TIMEOUT = 15000;\nconst ICE_GATHERING_FAIL_NONE = 'none';\nconst ICE_GATHERING_FAIL_TIMEOUT = 'timeout';\nconst INITIAL_ICE_CONNECTION_STATE = 'new';\nconst VOLUME_INTERVAL_MS = 50;\n\n/**\n * @typedef {Object} PeerConnection\n * @param audioHelper\n * @param pstream\n * @param options\n * @return {PeerConnection}\n * @constructor\n */\nfunction PeerConnection(audioHelper, pstream, options) {\n if (!audioHelper || !pstream) {\n throw new InvalidArgumentError('Audiohelper, and pstream are required arguments');\n }\n\n if (!(this instanceof PeerConnection)) {\n return new PeerConnection(audioHelper, pstream, options);\n }\n\n this._log = new Log('PeerConnection');\n\n function noop() {\n this._log.warn('Unexpected noop call in peerconnection');\n }\n this.onaudio = noop;\n this.onopen = noop;\n this.onerror = noop;\n this.onclose = noop;\n this.ondisconnected = noop;\n this.onfailed = noop;\n this.onconnected = noop;\n this.onreconnected = noop;\n this.onsignalingstatechange = noop;\n this.ondtlstransportstatechange = noop;\n this.onicegatheringfailure = noop;\n this.onicegatheringstatechange = noop;\n this.oniceconnectionstatechange = noop;\n this.onpcconnectionstatechange = noop;\n this.onicecandidate = noop;\n this.onselectedcandidatepairchange = noop;\n this.onvolume = noop;\n this.version = null;\n this.pstream = pstream;\n this.stream = null;\n this.sinkIds = new Set(['default']);\n this.outputs = new Map();\n this.status = 'connecting';\n this.callSid = null;\n this.isMuted = false;\n\n const AudioContext = typeof window !== 'undefined'\n && (window.AudioContext || window.webkitAudioContext);\n this._isSinkSupported = !!AudioContext &&\n typeof HTMLAudioElement !== 'undefined' && HTMLAudioElement.prototype.setSinkId;\n // NOTE(mmalavalli): Since each Connection creates its own AudioContext,\n // after 6 instances an exception is thrown. Refer https://www.w3.org/2011/audio/track/issues/3.\n // In order to get around it, we are re-using the Device's AudioContext.\n this._audioContext = AudioContext && audioHelper._audioContext;\n this._audioHelper = audioHelper;\n this._audioProcessorEventObserver = audioHelper._getAudioProcessorEventObserver();\n this._hasIceCandidates = false;\n this._hasIceGatheringFailures = false;\n this._iceGatheringTimeoutId = null;\n this._masterAudio = null;\n this._masterAudioDeviceId = null;\n this._mediaStreamSource = null;\n this._dtmfSender = null;\n this._dtmfSenderUnsupported = false;\n this._callEvents = [];\n this._nextTimeToPublish = Date.now();\n this._onAnswerOrRinging = noop;\n this._onHangup = noop;\n this._remoteStream = null;\n this._shouldManageStream = true;\n this._iceState = INITIAL_ICE_CONNECTION_STATE;\n\n this.options = options = options || {};\n this.navigator = options.navigator\n || (typeof navigator !== 'undefined' ? navigator : null);\n this.util = options.util || util;\n this.codecPreferences = options.codecPreferences;\n\n this._onAudioProcessorAdded = (isRemote) => {\n this._handleAudioProcessorEvent(isRemote, true);\n };\n this._onAudioProcessorRemoved = (isRemote) => {\n this._handleAudioProcessorEvent(isRemote, false);\n };\n this._audioProcessorEventObserver.on('add', this._onAudioProcessorAdded);\n this._audioProcessorEventObserver.on('remove', this._onAudioProcessorRemoved);\n\n return this;\n}\n\nPeerConnection.prototype.uri = function() {\n return this._uri;\n};\n\n/**\n * Open the underlying RTCPeerConnection with a MediaStream obtained by\n * passed constraints. The resulting MediaStream is created internally\n * and will therefore be managed and destroyed internally.\n * @param {MediaStreamConstraints} constraints\n */\nPeerConnection.prototype.openDefaultDeviceWithConstraints = function(constraints) {\n return this._audioHelper._openDefaultDeviceWithConstraints(constraints)\n .then(this._setInputTracksFromStream.bind(this, false));\n};\n\n/**\n * Replace the existing input audio tracks with the audio tracks from the\n * passed input audio stream. We re-use the existing stream because\n * the AnalyzerNode is bound to the stream.\n * @param {MediaStream} stream\n */\nPeerConnection.prototype.setInputTracksFromStream = function(stream) {\n const self = this;\n return this._setInputTracksFromStream(true, stream).then(() => {\n self._shouldManageStream = false;\n });\n};\n\nPeerConnection.prototype._createAnalyser = (audioContext, options) => {\n options = Object.assign({\n fftSize: 32,\n smoothingTimeConstant: 0.3,\n }, options);\n\n const analyser = audioContext.createAnalyser();\n // tslint:disable-next-line\n for (const field in options) {\n analyser[field] = options[field];\n }\n\n return analyser;\n};\n\nPeerConnection.prototype._setVolumeHandler = function(handler) {\n this.onvolume = handler;\n};\nPeerConnection.prototype._startPollingVolume = function() {\n if (!this._audioContext || !this.stream || !this._remoteStream) {\n return;\n }\n\n const audioContext = this._audioContext;\n\n const inputAnalyser = this._inputAnalyser = this._createAnalyser(audioContext);\n const inputBufferLength = inputAnalyser.frequencyBinCount;\n const inputDataArray = new Uint8Array(inputBufferLength);\n this._inputAnalyser2 = this._createAnalyser(audioContext, {\n maxDecibels: 0,\n minDecibels: -127,\n smoothingTimeConstant: 0,\n });\n\n const outputAnalyser = this._outputAnalyser = this._createAnalyser(audioContext);\n const outputBufferLength = outputAnalyser.frequencyBinCount;\n const outputDataArray = new Uint8Array(outputBufferLength);\n this._outputAnalyser2 = this._createAnalyser(audioContext, {\n maxDecibels: 0,\n minDecibels: -127,\n smoothingTimeConstant: 0,\n });\n\n this._updateInputStreamSource(this.stream);\n this._updateOutputStreamSource(this._remoteStream);\n\n const self = this;\n setTimeout(function emitVolume() {\n if (!self._audioContext) {\n return;\n } else if (self.status === 'closed') {\n self._inputAnalyser.disconnect();\n self._outputAnalyser.disconnect();\n self._inputAnalyser2.disconnect();\n self._outputAnalyser2.disconnect();\n return;\n }\n\n self._inputAnalyser.getByteFrequencyData(inputDataArray);\n const inputVolume = self.util.average(inputDataArray);\n\n self._inputAnalyser2.getByteFrequencyData(inputDataArray);\n const inputVolume2 = self.util.average(inputDataArray);\n\n self._outputAnalyser.getByteFrequencyData(outputDataArray);\n const outputVolume = self.util.average(outputDataArray);\n\n self._outputAnalyser2.getByteFrequencyData(outputDataArray);\n const outputVolume2 = self.util.average(outputDataArray);\n self.onvolume(inputVolume / 255, outputVolume / 255, inputVolume2, outputVolume2);\n\n setTimeout(emitVolume, VOLUME_INTERVAL_MS);\n }, VOLUME_INTERVAL_MS);\n};\n\nPeerConnection.prototype._stopStream = function _stopStream() {\n // We shouldn't stop the tracks if they were not created inside\n // this PeerConnection.\n if (!this._shouldManageStream) {\n return;\n }\n\n this._audioHelper._stopDefaultInputDeviceStream();\n};\n\n/**\n * Update the stream source with the new input audio stream.\n * @param {MediaStream} stream\n * @private\n */\nPeerConnection.prototype._updateInputStreamSource = function(stream) {\n if (this._inputStreamSource) {\n this._inputStreamSource.disconnect();\n }\n\n try {\n this._inputStreamSource = this._audioContext.createMediaStreamSource(stream);\n this._inputStreamSource.connect(this._inputAnalyser);\n this._inputStreamSource.connect(this._inputAnalyser2);\n } catch (ex) {\n this._log.warn('Unable to update input MediaStreamSource', ex);\n this._inputStreamSource = null;\n }\n};\n\n/**\n * Update the stream source with the new ouput audio stream.\n * @param {MediaStream} stream\n * @private\n */\nPeerConnection.prototype._updateOutputStreamSource = function(stream) {\n if (this._outputStreamSource) {\n this._outputStreamSource.disconnect();\n }\n\n try {\n this._outputStreamSource = this._audioContext.createMediaStreamSource(stream);\n this._outputStreamSource.connect(this._outputAnalyser);\n this._outputStreamSource.connect(this._outputAnalyser2);\n } catch (ex) {\n this._log.warn('Unable to update output MediaStreamSource', ex);\n this._outputStreamSource = null;\n }\n};\n\n/**\n * Replace the tracks of the current stream with new tracks. We do this rather than replacing the\n * whole stream because AnalyzerNodes are bound to a stream.\n * @param {Boolean} shouldClone - Whether the stream should be cloned if it is the first\n * stream, or set directly. As a rule of thumb, streams that are passed in externally may have\n * their lifecycle managed externally, and should be cloned so that we do not tear it or its tracks\n * down when the call ends. Streams that we create internally (inside PeerConnection) should be set\n * directly so that when the call ends it is disposed of.\n * @param {MediaStream} newStream - The new stream to copy the tracks over from.\n * @private\n */\nPeerConnection.prototype._setInputTracksFromStream = function(shouldClone, newStream) {\n if (!newStream) {\n return Promise.reject(new InvalidArgumentError('Can not set input stream to null while in a call'));\n }\n\n if (!newStream.getAudioTracks().length) {\n return Promise.reject(new InvalidArgumentError('Supplied input stream has no audio tracks'));\n }\n\n const localStream = this.stream;\n const getStreamPromise = () => {\n // Apply mute settings to new input track\n this.mute(this.isMuted);\n return Promise.resolve(this.stream);\n };\n\n if (!localStream) {\n // We can't use MediaStream.clone() here because it stopped copying over tracks\n // as of Chrome 61. https://bugs.chromium.org/p/chromium/issues/detail?id=770908\n this.stream = shouldClone ? cloneStream(newStream, this.options.MediaStream) : newStream;\n } else {\n // If the call was started with gUM, and we are now replacing that track with an\n // external stream's tracks, we should stop the old managed track.\n if (this._shouldManageStream) {\n this._stopStream();\n }\n\n if (!this._sender) {\n this._sender = this.version.pc.getSenders()[0];\n }\n\n return this._sender.replaceTrack(newStream.getAudioTracks()[0]).then(() => {\n this._updateInputStreamSource(newStream);\n this.stream = shouldClone ? cloneStream(newStream, this.options.MediaStream) : newStream;\n return getStreamPromise();\n });\n }\n\n return getStreamPromise();\n};\n\nPeerConnection.prototype._onInputDevicesChanged = function() {\n if (!this.stream) { return; }\n\n // If all of our active tracks are ended, then our active input was lost\n const activeInputWasLost = this.stream.getAudioTracks().every(track => track.readyState === 'ended');\n\n // We only want to act if we manage the stream in PeerConnection (It was created\n // here, rather than passed in.)\n if (activeInputWasLost && this._shouldManageStream) {\n this.openDefaultDeviceWithConstraints({ audio: true });\n }\n};\n\nPeerConnection.prototype._onIceGatheringFailure = function(type) {\n this._hasIceGatheringFailures = true;\n this.onicegatheringfailure(type);\n};\n\nPeerConnection.prototype._onMediaConnectionStateChange = function(newState) {\n const previousState = this._iceState;\n\n if (previousState === newState\n || (newState !== 'connected'\n && newState !== 'disconnected'\n && newState !== 'failed')) {\n return;\n }\n this._iceState = newState;\n\n let message;\n switch (newState) {\n case 'connected':\n if (previousState === 'disconnected' || previousState === 'failed') {\n message = 'ICE liveliness check succeeded. Connection with Twilio restored';\n this._log.info(message);\n this.onreconnected(message);\n } else {\n message = 'Media connection established.';\n this._log.info(message);\n this.onconnected(message);\n }\n this._stopIceGatheringTimeout();\n this._hasIceGatheringFailures = false;\n break;\n case 'disconnected':\n message = 'ICE liveliness check failed. May be having trouble connecting to Twilio';\n this._log.warn(message);\n this.ondisconnected(message);\n break;\n case 'failed':\n message = 'Connection with Twilio was interrupted.';\n this._log.warn(message);\n this.onfailed(message);\n break;\n }\n};\n\nPeerConnection.prototype._setSinkIds = function(sinkIds) {\n if (!this._isSinkSupported) {\n return Promise.reject(new NotSupportedError('Audio output selection is not supported by this browser'));\n }\n\n this.sinkIds = new Set(sinkIds.forEach ? sinkIds : [sinkIds]);\n return this.version\n ? this._updateAudioOutputs()\n : Promise.resolve();\n};\n\n/**\n * Start timeout for ICE Gathering\n */\nPeerConnection.prototype._startIceGatheringTimeout = function startIceGatheringTimeout() {\n this._stopIceGatheringTimeout();\n this._iceGatheringTimeoutId = setTimeout(() => {\n this._onIceGatheringFailure(ICE_GATHERING_FAIL_TIMEOUT);\n }, ICE_GATHERING_TIMEOUT);\n};\n\n/**\n * Stop timeout for ICE Gathering\n */\nPeerConnection.prototype._stopIceGatheringTimeout = function stopIceGatheringTimeout() {\n clearInterval(this._iceGatheringTimeoutId);\n};\n\nPeerConnection.prototype._updateAudioOutputs = function updateAudioOutputs() {\n const addedOutputIds = Array.from(this.sinkIds).filter(function(id) {\n return !this.outputs.has(id);\n }, this);\n\n const removedOutputIds = Array.from(this.outputs.keys()).filter(function(id) {\n return !this.sinkIds.has(id);\n }, this);\n\n const self = this;\n const createOutputPromises = addedOutputIds.map(this._createAudioOutput, this);\n return Promise.all(createOutputPromises).then(() => Promise.all(removedOutputIds.map(self._removeAudioOutput, self)));\n};\n\nPeerConnection.prototype._createAudio = function createAudio(arr) {\n const audio = new Audio(arr);\n this.onaudio(audio);\n return audio;\n};\n\nPeerConnection.prototype._createAudioOutput = function createAudioOutput(id) {\n let dest = null;\n if (this._mediaStreamSource) {\n dest = this._audioContext.createMediaStreamDestination();\n this._mediaStreamSource.connect(dest);\n }\n\n const audio = this._createAudio();\n setAudioSource(audio, dest && dest.stream ? dest.stream : this.pcStream, this._audioHelper)\n .catch(() => this._log.error('Error attaching stream to element (_createAudioOutput).'));\n\n const self = this;\n return audio.setSinkId(id).then(() => audio.play()).then(() => {\n self.outputs.set(id, {\n audio,\n dest,\n });\n });\n};\n\nPeerConnection.prototype._removeAudioOutputs = function removeAudioOutputs() {\n if (this._masterAudio && typeof this._masterAudioDeviceId !== 'undefined') {\n this._disableOutput(this, this._masterAudioDeviceId);\n this.outputs.delete(this._masterAudioDeviceId);\n this._masterAudioDeviceId = null;\n\n // Release the audio resources before deleting the audio\n if (!this._masterAudio.paused) {\n this._masterAudio.pause();\n }\n if (typeof this._masterAudio.srcObject !== 'undefined') {\n this._masterAudio.srcObject = null;\n } else {\n this._masterAudio.src = '';\n }\n this._masterAudio = null;\n }\n\n return Array.from(this.outputs.keys()).map(this._removeAudioOutput, this);\n};\n\nPeerConnection.prototype._disableOutput = function disableOutput(pc, id) {\n const output = pc.outputs.get(id);\n if (!output) { return; }\n\n if (output.audio) {\n output.audio.pause();\n output.audio.src = '';\n }\n\n if (output.dest) {\n output.dest.disconnect();\n }\n};\n\n/**\n * Disable a non-master output, and update the master output to assume its state. This\n * is called when the device ID assigned to the master output has been removed from\n * active devices. We can not simply remove the master audio output, so we must\n * instead reassign it.\n * @private\n * @param {PeerConnection} pc\n * @param {string} masterId - The current device ID assigned to the master audio element.\n */\nPeerConnection.prototype._reassignMasterOutput = function reassignMasterOutput(pc, masterId) {\n const masterOutput = pc.outputs.get(masterId);\n pc.outputs.delete(masterId);\n\n const self = this;\n const activeDeviceId = Array.from(pc.outputs.keys())[0];\n // The audio device key could also be '' on Chrome if no media device permissions are allowed\n const idToReplace = typeof activeDeviceId === 'string' ? activeDeviceId : 'default';\n\n return masterOutput.audio.setSinkId(idToReplace).then(() => {\n self._disableOutput(pc, idToReplace);\n\n pc.outputs.set(idToReplace, masterOutput);\n pc._masterAudioDeviceId = idToReplace;\n }).catch(function rollback() {\n pc.outputs.set(masterId, masterOutput);\n self._log.info('Could not reassign master output. Attempted to roll back.');\n });\n};\n\nPeerConnection.prototype._removeAudioOutput = function removeAudioOutput(id) {\n if (this._masterAudioDeviceId === id) {\n return this._reassignMasterOutput(this, id);\n }\n\n this._disableOutput(this, id);\n this.outputs.delete(id);\n\n return Promise.resolve();\n};\n\n/**\n * Use an AudioContext to potentially split our audio output stream to multiple\n * audio devices. This is only available to browsers with AudioContext and\n * HTMLAudioElement.setSinkId() available. We save the source stream in\n * _masterAudio, and use it for one of the active audio devices. We keep\n * track of its ID because we must replace it if we lose its initial device.\n */\nPeerConnection.prototype._onAddTrack = function onAddTrack(pc, stream) {\n const audio = pc._masterAudio = this._createAudio();\n setAudioSource(audio, stream, this._audioHelper)\n .then(() => audio.play())\n .catch(() => pc._log.error('Error attaching stream to element (_onAddTrack).'));\n\n // Assign the initial master audio element to a random active output device\n const activeDeviceId = Array.from(pc.outputs.keys())[0];\n // The audio device key could also be '' on Chrome if no media device permissions are allowed\n const deviceId = typeof activeDeviceId === 'string' ? activeDeviceId : 'default';\n pc._masterAudioDeviceId = deviceId;\n pc.outputs.set(deviceId, { audio });\n\n try {\n pc._mediaStreamSource = pc._audioContext.createMediaStreamSource(stream);\n } catch (ex) {\n this._log.warn('Unable to create a MediaStreamSource from onAddTrack', ex);\n this._mediaStreamSource = null;\n }\n\n pc.pcStream = stream;\n pc._updateAudioOutputs();\n};\n\n/**\n * Use a single audio element to play the audio output stream. This does not\n * support multiple output devices, and is a fallback for when AudioContext\n * and/or HTMLAudioElement.setSinkId() is not available to the client.\n */\nPeerConnection.prototype._fallbackOnAddTrack = function fallbackOnAddTrack(pc, stream) {\n const audio = document && document.createElement('audio');\n setAudioSource(audio, stream, this._audioHelper)\n .then(() => audio.play())\n .catch(() => pc._log.error('Error attaching stream to element (_fallbackOnAddTrack).'));\n\n pc.outputs.set('default', { audio });\n};\n\nPeerConnection.prototype._setEncodingParameters = function(enableDscp) {\n if (!enableDscp\n || !this._sender\n || typeof this._sender.getParameters !== 'function'\n || typeof this._sender.setParameters !== 'function') {\n return;\n }\n\n const params = this._sender.getParameters();\n if (!params.priority && !(params.encodings && params.encodings.length)) {\n return;\n }\n\n // This is how MDN's RTPSenderParameters defines priority\n params.priority = 'high';\n\n // And this is how it's currently implemented in Chrome M72+\n if (params.encodings && params.encodings.length) {\n params.encodings.forEach(encoding => {\n encoding.priority = 'high';\n encoding.networkPriority = 'high';\n });\n }\n\n this._sender.setParameters(params);\n};\n\nPeerConnection.prototype._setupPeerConnection = function(rtcConfiguration) {\n const self = this;\n const version = new (this.options.rtcpcFactory || RTCPC)({ RTCPeerConnection: this.options.RTCPeerConnection });\n version.create(rtcConfiguration);\n addStream(version.pc, this.stream);\n\n const supportedCodecs = RTCRtpReceiver.getCapabilities('audio').codecs;\n this._log.debug('sorting codecs', supportedCodecs, this.codecPreferences);\n const sortedCodecs = util.sortByMimeTypes(supportedCodecs, this.codecPreferences);\n const [transceiver] = version.pc.getTransceivers();\n this._log.debug('setting sorted codecs', sortedCodecs);\n transceiver.setCodecPreferences(sortedCodecs);\n\n const eventName = 'ontrack' in version.pc\n ? 'ontrack' : 'onaddstream';\n\n version.pc[eventName] = event => {\n const stream = self._remoteStream = event.stream || event.streams[0];\n\n if (typeof version.pc.getSenders === 'function') {\n this._sender = version.pc.getSenders()[0];\n }\n\n if (self._isSinkSupported) {\n self._onAddTrack(self, stream);\n } else {\n self._fallbackOnAddTrack(self, stream);\n }\n\n self._startPollingVolume();\n };\n return version;\n};\n\nPeerConnection.prototype._maybeSetIceAggressiveNomination = function(sdp) {\n return this.options.forceAggressiveIceNomination ? setIceAggressiveNomination(sdp) : sdp;\n};\n\nPeerConnection.prototype._setupChannel = function() {\n const pc = this.version.pc;\n\n // Chrome 25 supports onopen\n this.version.pc.onopen = () => {\n this.status = 'open';\n this.onopen();\n };\n\n // Chrome 26 doesn't support onopen so must detect state change\n this.version.pc.onstatechange = () => {\n if (this.version.pc && this.version.pc.readyState === 'stable') {\n this.status = 'open';\n this.onopen();\n }\n };\n\n // Chrome 27 changed onstatechange to onsignalingstatechange\n this.version.pc.onsignalingstatechange = () => {\n const state = pc.signalingState;\n this._log.info(`signalingState is \"${state}\"`);\n\n if (this.version.pc && this.version.pc.signalingState === 'stable') {\n this.status = 'open';\n this.onopen();\n }\n\n this.onsignalingstatechange(pc.signalingState);\n };\n\n // Chrome 72+\n pc.onconnectionstatechange = event => {\n let state = pc.connectionState;\n if (!state && event && event.target) {\n // VDI environment\n const targetPc = event.target;\n state = targetPc.connectionState || targetPc.connectionState_;\n this._log.info(`pc.connectionState not detected. Using target PC. State=${state}`);\n }\n if (!state) {\n this._log.warn(`onconnectionstatechange detected but state is \"${state}\"`);\n } else {\n this._log.info(`pc.connectionState is \"${state}\"`);\n }\n this.onpcconnectionstatechange(state);\n this._onMediaConnectionStateChange(state);\n };\n\n pc.onicecandidate = event => {\n const { candidate } = event;\n if (candidate) {\n this._hasIceCandidates = true;\n this.onicecandidate(candidate);\n this._setupRTCIceTransportListener();\n }\n\n this._log.info(`ICE Candidate: ${JSON.stringify(candidate)}`);\n };\n\n pc.onicegatheringstatechange = () => {\n const state = pc.iceGatheringState;\n if (state === 'gathering') {\n this._startIceGatheringTimeout();\n\n } else if (state === 'complete') {\n this._stopIceGatheringTimeout();\n\n // Fail if no candidates found\n if (!this._hasIceCandidates) {\n this._onIceGatheringFailure(ICE_GATHERING_FAIL_NONE);\n }\n\n // There was a failure mid-gathering phase. We want to start our timer and issue\n // an ice restart if we don't get connected after our timeout\n if (this._hasIceCandidates && this._hasIceGatheringFailures) {\n this._startIceGatheringTimeout();\n }\n }\n\n this._log.info(`pc.iceGatheringState is \"${pc.iceGatheringState}\"`);\n this.onicegatheringstatechange(state);\n };\n\n pc.oniceconnectionstatechange = () => {\n this._log.info(`pc.iceConnectionState is \"${pc.iceConnectionState}\"`);\n this.oniceconnectionstatechange(pc.iceConnectionState);\n this._onMediaConnectionStateChange(pc.iceConnectionState);\n };\n};\nPeerConnection.prototype._initializeMediaStream = function(rtcConfiguration) {\n // if mediastream already open then do nothing\n if (this.status === 'open') {\n return false;\n }\n if (this.pstream.status === 'disconnected') {\n this.onerror({ info: {\n code: 31000,\n message: 'Cannot establish connection. Client is disconnected',\n twilioError: new SignalingErrors.ConnectionDisconnected(),\n } });\n this.close();\n return false;\n }\n this.version = this._setupPeerConnection(rtcConfiguration);\n this._setupChannel();\n return true;\n};\n\n/**\n * Remove reconnection-related listeners\n * @private\n */\nPeerConnection.prototype._removeReconnectionListeners = function() {\n if (this.pstream) {\n this.pstream.removeListener('answer', this._onAnswerOrRinging);\n this.pstream.removeListener('hangup', this._onHangup);\n }\n};\n\n/**\n * Setup a listener for RTCDtlsTransport to capture state changes events\n * @private\n */\nPeerConnection.prototype._setupRTCDtlsTransportListener = function() {\n const dtlsTransport = this.getRTCDtlsTransport();\n\n if (!dtlsTransport || dtlsTransport.onstatechange) {\n return;\n }\n\n const handler = () => {\n this._log.info(`dtlsTransportState is \"${dtlsTransport.state}\"`);\n this.ondtlstransportstatechange(dtlsTransport.state);\n };\n\n // Publish initial state\n handler();\n dtlsTransport.onstatechange = handler;\n};\n\n/**\n * Setup a listener for RTCIceTransport to capture selected candidate pair changes\n * @private\n */\nPeerConnection.prototype._setupRTCIceTransportListener = function() {\n const iceTransport = this._getRTCIceTransport();\n\n if (!iceTransport || iceTransport.onselectedcandidatepairchange) {\n return;\n }\n\n iceTransport.onselectedcandidatepairchange = () =>\n this.onselectedcandidatepairchange(iceTransport.getSelectedCandidatePair());\n};\n\n/**\n * Restarts ICE for the current connection\n * ICE Restart failures are ignored. Retries are managed in Connection\n * @private\n */\nPeerConnection.prototype.iceRestart = function() {\n this._log.info('Attempting to restart ICE...');\n this._hasIceCandidates = false;\n this.version.createOffer(this.options.maxAverageBitrate, { iceRestart: true }).then(() => {\n this._removeReconnectionListeners();\n\n this._onAnswerOrRinging = payload => {\n this._removeReconnectionListeners();\n\n if (!payload.sdp || this.version.pc.signalingState !== 'have-local-offer') {\n const message = 'Invalid state or param during ICE Restart:'\n + `hasSdp:${!!payload.sdp}, signalingState:${this.version.pc.signalingState}`;\n this._log.warn(message);\n return;\n }\n\n const sdp = this._maybeSetIceAggressiveNomination(payload.sdp);\n this._answerSdp = sdp;\n if (this.status !== 'closed') {\n this.version.processAnswer(this.codecPreferences, sdp, null, err => {\n const message = err && err.message ? err.message : err;\n this._log.error(`Failed to process answer during ICE Restart. Error: ${message}`);\n });\n }\n };\n\n this._onHangup = () => {\n this._log.info('Received hangup during ICE Restart');\n this._removeReconnectionListeners();\n };\n\n this.pstream.on('answer', this._onAnswerOrRinging);\n this.pstream.on('hangup', this._onHangup);\n this.pstream.reinvite(this.version.getSDP(), this.callSid);\n\n }).catch((err) => {\n const message = err && err.message ? err.message : err;\n this._log.error(`Failed to createOffer during ICE Restart. Error: ${message}`);\n // CreateOffer failures doesn't transition ice state to failed\n // We need trigger it so it can be picked up by retries\n this.onfailed(message);\n });\n};\n\nPeerConnection.prototype.makeOutgoingCall = function(params, signalingReconnectToken, callsid, rtcConfiguration, onMediaStarted) {\n if (!this._initializeMediaStream(rtcConfiguration)) {\n return;\n }\n\n const self = this;\n this.callSid = callsid;\n function onAnswerSuccess() {\n if (self.options) {\n self._setEncodingParameters(self.options.dscp);\n }\n onMediaStarted(self.version.pc);\n }\n function onAnswerError(err) {\n const errMsg = err.message || err;\n self.onerror({ info: {\n code: 31000,\n message: `Error processing answer: ${errMsg}`,\n twilioError: new MediaErrors.ClientRemoteDescFailed(),\n } });\n }\n this._onAnswerOrRinging = payload => {\n if (!payload.sdp) { return; }\n\n const sdp = this._maybeSetIceAggressiveNomination(payload.sdp);\n self._answerSdp = sdp;\n if (self.status !== 'closed') {\n self.version.processAnswer(this.codecPreferences, sdp, onAnswerSuccess, onAnswerError);\n }\n self.pstream.removeListener('answer', self._onAnswerOrRinging);\n self.pstream.removeListener('ringing', self._onAnswerOrRinging);\n };\n this.pstream.on('answer', this._onAnswerOrRinging);\n this.pstream.on('ringing', this._onAnswerOrRinging);\n\n function onOfferSuccess() {\n if (self.status !== 'closed') {\n if (signalingReconnectToken) {\n self.pstream.reconnect(self.version.getSDP(), self.callSid, signalingReconnectToken);\n } else {\n self.pstream.invite(self.version.getSDP(), self.callSid, params);\n }\n self._setupRTCDtlsTransportListener();\n }\n }\n\n function onOfferError(err) {\n const errMsg = err.message || err;\n self.onerror({ info: {\n code: 31000,\n message: `Error creating the offer: ${errMsg}`,\n twilioError: new MediaErrors.ClientLocalDescFailed(),\n } });\n }\n\n this.version.createOffer(this.options.maxAverageBitrate, { audio: true }, onOfferSuccess, onOfferError);\n};\nPeerConnection.prototype.answerIncomingCall = function(callSid, sdp, rtcConfiguration, onMediaStarted) {\n if (!this._initializeMediaStream(rtcConfiguration)) {\n return;\n }\n sdp = this._maybeSetIceAggressiveNomination(sdp);\n this._answerSdp = sdp.replace(/^a=setup:actpass$/gm, 'a=setup:passive');\n this.callSid = callSid;\n const self = this;\n function onAnswerSuccess() {\n if (self.status !== 'closed') {\n self.pstream.answer(self.version.getSDP(), callSid);\n if (self.options) {\n self._setEncodingParameters(self.options.dscp);\n }\n onMediaStarted(self.version.pc);\n self._setupRTCDtlsTransportListener();\n }\n }\n function onAnswerError(err) {\n const errMsg = err.message || err;\n self.onerror({ info: {\n code: 31000,\n message: `Error creating the answer: ${errMsg}`,\n twilioError: new MediaErrors.ClientRemoteDescFailed(),\n } });\n }\n this.version.processSDP(this.options.maxAverageBitrate, this.codecPreferences, sdp, { audio: true }, onAnswerSuccess, onAnswerError);\n};\nPeerConnection.prototype.close = function() {\n if (this.version && this.version.pc) {\n if (this.version.pc.signalingState !== 'closed') {\n this.version.pc.close();\n }\n\n this.version.pc = null;\n }\n if (this.stream) {\n this.mute(false);\n this._stopStream();\n }\n this.stream = null;\n this._removeReconnectionListeners();\n this._stopIceGatheringTimeout();\n this._audioHelper._destroyRemoteProcessedStream();\n this._audioProcessorEventObserver.removeListener('add', this._onAudioProcessorAdded);\n this._audioProcessorEventObserver.removeListener('remove', this._onAudioProcessorRemoved);\n\n Promise.all(this._removeAudioOutputs()).catch(() => {\n // We don't need to alert about failures here.\n });\n if (this._mediaStreamSource) {\n this._mediaStreamSource.disconnect();\n }\n if (this._inputAnalyser) {\n this._inputAnalyser.disconnect();\n }\n if (this._outputAnalyser) {\n this._outputAnalyser.disconnect();\n }\n if (this._inputAnalyser2) {\n this._inputAnalyser2.disconnect();\n }\n if (this._outputAnalyser2) {\n this._outputAnalyser2.disconnect();\n }\n this.status = 'closed';\n this.onclose();\n};\nPeerConnection.prototype.reject = function(callSid) {\n this.callSid = callSid;\n};\nPeerConnection.prototype.ignore = function(callSid) {\n this.callSid = callSid;\n};\n/**\n * Mute or unmute input audio. If the stream is not yet present, the setting\n * is saved and applied to future streams/tracks.\n * @params {boolean} shouldMute - Whether the input audio should\n * be muted or unmuted.\n */\nPeerConnection.prototype.mute = function(shouldMute) {\n this.isMuted = shouldMute;\n if (!this.stream) { return; }\n\n if (this._sender && this._sender.track) {\n this._sender.track.enabled = !shouldMute;\n } else {\n const audioTracks = typeof this.stream.getAudioTracks === 'function'\n ? this.stream.getAudioTracks()\n : this.stream.audioTracks;\n\n audioTracks.forEach(track => {\n track.enabled = !shouldMute;\n });\n }\n};\n/**\n * Get or create an RTCDTMFSender for the first local audio MediaStreamTrack\n * we can get from the RTCPeerConnection. Return null if unsupported.\n * @instance\n * @returns ?RTCDTMFSender\n */\nPeerConnection.prototype.getOrCreateDTMFSender = function getOrCreateDTMFSender() {\n if (this._dtmfSender || this._dtmfSenderUnsupported) {\n return this._dtmfSender || null;\n }\n\n const self = this;\n const pc = this.version.pc;\n if (!pc) {\n this._log.warn('No RTCPeerConnection available to call createDTMFSender on');\n return null;\n }\n\n if (typeof pc.getSenders === 'function' && (typeof RTCDTMFSender === 'function' || typeof RTCDtmfSender === 'function')) {\n const chosenSender = pc.getSenders().find(sender => sender.dtmf);\n if (chosenSender) {\n this._log.info('Using RTCRtpSender#dtmf');\n this._dtmfSender = chosenSender.dtmf;\n return this._dtmfSender;\n }\n }\n\n if (typeof pc.createDTMFSender === 'function' && typeof pc.getLocalStreams === 'function') {\n const track = pc.getLocalStreams().map(stream => {\n const tracks = self._getAudioTracks(stream);\n return tracks && tracks[0];\n })[0];\n\n if (!track) {\n this._log.warn('No local audio MediaStreamTrack available on the RTCPeerConnection to pass to createDTMFSender');\n return null;\n }\n\n this._log.info('Creating RTCDTMFSender');\n this._dtmfSender = pc.createDTMFSender(track);\n return this._dtmfSender;\n }\n\n this._log.info('RTCPeerConnection does not support RTCDTMFSender');\n this._dtmfSenderUnsupported = true;\n return null;\n};\n\n/**\n * Get the RTCDtlTransport object from the PeerConnection\n * @returns RTCDtlTransport\n */\nPeerConnection.prototype.getRTCDtlsTransport = function getRTCDtlsTransport() {\n const sender = this.version && this.version.pc\n && typeof this.version.pc.getSenders === 'function'\n && this.version.pc.getSenders()[0];\n return sender && sender.transport || null;\n};\n\nPeerConnection.prototype._canStopMediaStreamTrack = () => typeof MediaStreamTrack.prototype.stop === 'function';\n\nPeerConnection.prototype._getAudioTracks = stream => typeof stream.getAudioTracks === 'function' ?\n stream.getAudioTracks() : stream.audioTracks;\n\n/**\n * Get the RTCIceTransport object from the PeerConnection\n * @returns RTCIceTransport\n */\nPeerConnection.prototype._getRTCIceTransport = function _getRTCIceTransport() {\n const dtlsTransport = this.getRTCDtlsTransport();\n return dtlsTransport && dtlsTransport.iceTransport || null;\n};\n\n// Is PeerConnection.protocol used outside of our SDK? We should remove this if not.\nPeerConnection.protocol = ((() => RTCPC.test() ? new RTCPC() : null))();\n\nPeerConnection.prototype._handleAudioProcessorEvent = function(isRemote, isAddProcessor) {\n if (!isRemote || !this._remoteStream) {\n return;\n }\n\n let audio = null;\n if (this._masterAudio) {\n this._log.info('Setting audio source for master audio.')\n audio = this._masterAudio;\n } else {\n this._log.info('No master audio. Setting audio source for default audio output.')\n audio = this.outputs.get('default').audio;\n }\n\n setAudioSource(audio, this._remoteStream, this._audioHelper)\n .then(() => {\n const successLog = isAddProcessor\n ? 'Successfully updated audio source with processed stream'\n : 'Successfully reverted audio source to original stream';\n this._log.info(successLog);\n // If the audio was paused, resume playback\n if (audio.paused) {\n this._log.info('Resuming audio playback');\n audio.play();\n }\n })\n .catch(() => {\n const errorLog = isAddProcessor\n ? 'Failed to update audio source'\n : 'Failed to revert audio source';\n this._log.error(errorLog);\n });\n};\n\nfunction addStream(pc, stream) {\n if (typeof pc.addTrack === 'function') {\n stream.getAudioTracks().forEach(track => {\n // The second parameters, stream, should not be necessary per the latest editor's\n // draft, but FF requires it. https://bugzilla.mozilla.org/show_bug.cgi?id=1231414\n pc.addTrack(track, stream);\n });\n } else {\n pc.addStream(stream);\n }\n}\n\nfunction cloneStream(oldStream, _MediaStream) {\n let newStream;\n if (_MediaStream) {\n newStream = new _MediaStream();\n } else if (typeof MediaStream !== 'undefined') {\n newStream = new MediaStream();\n } else {\n newStream = new webkitMediaStream();\n }\n\n oldStream.getAudioTracks().forEach(newStream.addTrack, newStream);\n return newStream;\n}\n\nfunction removeStream(pc, stream) {\n if (typeof pc.removeTrack === 'function') {\n pc.getSenders().forEach(sender => { pc.removeTrack(sender); });\n } else {\n pc.removeStream(stream);\n }\n}\n\n/**\n * Sets the source of an HTMLAudioElement to the specified MediaStream and\n * applies a remote audio processor if available\n * @param {HTMLAudioElement} audio\n * @param {MediaStream} stream\n * @returns {Promise} Fulfilled if the audio source was set successfully\n */\nfunction setAudioSource(audio, stream, audioHelper) {\n return audioHelper._maybeCreateRemoteProcessedStream(stream).then(maybeProcessedStream => {\n if (typeof audio.srcObject !== 'undefined') {\n audio.srcObject = maybeProcessedStream;\n } else if (typeof audio.mozSrcObject !== 'undefined') {\n audio.mozSrcObject = maybeProcessedStream;\n } else if (typeof audio.src !== 'undefined') {\n const _window = audio.options.window || window;\n audio.src = (_window.URL || _window.webkitURL).createObjectURL(maybeProcessedStream);\n } else {\n return Promise.reject();\n }\n\n return Promise.resolve();\n });\n}\n\nPeerConnection.enabled = RTCPC.test();\n\nexport default PeerConnection;\n","// @ts-nocheck\nimport { NotSupportedError } from '../errors';\nimport * as util from '../util';\n\nfunction getUserMedia(constraints, options) {\n options = options || {};\n options.util = options.util || util;\n options.navigator = options.navigator\n || (typeof navigator !== 'undefined' ? navigator : null);\n\n return new Promise((resolve, reject) => {\n if (!options.navigator) {\n throw new NotSupportedError('getUserMedia is not supported');\n }\n\n switch ('function') {\n case typeof (options.navigator.mediaDevices && options.navigator.mediaDevices.getUserMedia):\n return resolve(options.navigator.mediaDevices.getUserMedia(constraints));\n case typeof options.navigator.webkitGetUserMedia:\n return options.navigator.webkitGetUserMedia(constraints, resolve, reject);\n case typeof options.navigator.mozGetUserMedia:\n return options.navigator.mozGetUserMedia(constraints, resolve, reject);\n case typeof options.navigator.getUserMedia:\n return options.navigator.getUserMedia(constraints, resolve, reject);\n default:\n throw new NotSupportedError('getUserMedia is not supported');\n }\n }).catch(e => {\n throw (options.util.isFirefox() && e.name === 'NotReadableError')\n ? new NotSupportedError('Firefox does not currently support opening multiple audio input tracks' +\n 'simultaneously, even across different tabs.\\n' +\n 'Related Bugzilla thread: https://bugzilla.mozilla.org/show_bug.cgi?id=1299324')\n : e;\n });\n}\n\nexport default getUserMedia;\n","import { NotSupportedError } from './errors';\n\n/**\n * Generates a 128-bit long random string that is formatted as a 32 long string\n * of characters where each character is from the set:\n * [0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f].\n */\nfunction generateRandomizedString(): string {\n if (typeof window !== 'object') {\n throw new NotSupportedError('This platform is not supported.');\n }\n\n const { crypto } = window;\n if (typeof crypto !== 'object') {\n throw new NotSupportedError(\n 'The `crypto` module is not available on this platform.',\n );\n }\n\n if (typeof crypto.getRandomValues !== 'function') {\n throw new NotSupportedError(\n 'The function `crypto.getRandomValues` is not available on this ' +\n 'platform.',\n );\n }\n\n if (typeof window.Uint8Array !== 'function') {\n throw new NotSupportedError(\n 'The `Uint8Array` module is not available on this platform.',\n );\n }\n\n return crypto\n .getRandomValues(new window.Uint8Array(16))\n .reduce((r, n) => `${r}${n.toString(16).padStart(2, '0')}`, '');\n}\n\nexport function generateVoiceEventSid() {\n return `KX${generateRandomizedString()}`;\n}\n","/**\n * Deferred Promise\n */\nexport default class Deferred {\n /**\n * This {@link Deferred} Promise\n */\n private readonly _promise: Promise<any>;\n\n /**\n * The Promise's reject method.\n */\n private _reject: (reason?: any) => void;\n\n /**\n * The Promise's resolve method.\n */\n private _resolve: (value?: any) => void;\n\n /**\n * @constructor\n */\n constructor() {\n this._promise = new Promise<any>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n /**\n * @returns The {@link Deferred} Promise\n */\n get promise(): Promise<any> {\n return this._promise;\n }\n\n /**\n * Rejects this promise\n */\n reject(reason?: any): void {\n this._reject(reason);\n }\n\n /**\n * Resolves this promise\n */\n resolve(value?: any): void {\n this._resolve(value);\n }\n}\n","import Deferred from './deferred';\n\n/**\n * Queue async operations and executes them synchronously.\n */\nexport class AsyncQueue {\n /**\n * The list of async operations in this queue\n */\n private _operations: AsyncQueue.Operation[] = [];\n\n /**\n * Adds the async operation to the queue\n * @param callback An async callback that returns a promise\n * @returns A promise that will get resolved or rejected after executing the callback\n */\n enqueue(callback: () => Promise<any>): Promise<any> {\n const hasPending = !!this._operations.length;\n const deferred = new Deferred();\n\n this._operations.push({ deferred, callback });\n\n if (!hasPending) {\n this._processQueue();\n }\n\n return deferred.promise;\n }\n\n /**\n * Start processing the queue. This executes the first item and removes it after.\n * Then do the same for next items until the queue is emptied.\n */\n private async _processQueue() {\n while (this._operations.length) {\n // Grab first item, don't remove from array yet until it's resolved/rejected\n const { deferred, callback } = this._operations[0];\n\n // We want to capture the result/error first so we can remove the item from the queue later\n let result;\n let error;\n // Sometimes result and error are empty. So let's use a separate flag to determine if the promise has resolved\n let hasResolved;\n try {\n result = await callback();\n hasResolved = true;\n } catch (e) {\n error = e;\n }\n\n // Remove the item\n this._operations.shift();\n\n if (hasResolved) {\n deferred.resolve(result);\n } else {\n deferred.reject(error);\n }\n }\n }\n}\n\nexport namespace AsyncQueue {\n /**\n * Represent an [[AsyncQueue]] operation\n */\n export interface Operation {\n /**\n * An async callback that returns a promise. This will get called once it reaches the queue.\n */\n callback: () => Promise<any>;\n\n /**\n * A deferred promise that gets resolved or rejected after executing the async callback\n */\n deferred: Deferred;\n }\n}\n","// @ts-nocheck\nexport default class Deferred<T> {\n readonly promise: Promise<T>;\n\n private _reject: (e?: any) => void;\n get reject() { return this._reject; }\n\n private _resolve: (t?: T) => void;\n get resolve() { return this._resolve; }\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n}\n","// @ts-nocheck\nimport { EventEmitter } from 'events';\n\nexport default class EventTarget {\n private _eventEmitter: EventEmitter = new EventEmitter();\n\n addEventListener(name: string, handler: Function): EventEmitter {\n return this._eventEmitter.addListener(name, handler);\n }\n\n dispatchEvent(name: string, ...args: any[]): boolean {\n return this._eventEmitter.emit(name, ...args);\n }\n\n removeEventListener(name: string, handler: Function): EventEmitter {\n return this._eventEmitter.removeListener(name, handler);\n }\n}\n","// @ts-nocheck\nimport Deferred from './deferred';\nimport EventTarget from './eventtarget';\n\nimport ChromeAudioContext, { ChromeHTMLAudioElement, MediaStreamAudioDestinationNode } from './chromeaudiocontext';\n\n/**\n * Options that may be passed to AudioPlayer for dependency injection.\n */\ninterface IAudioPlayerOptions {\n /**\n * The factory for Audio.\n */\n AudioFactory: any;\n\n /**\n * The factory for XMLHttpRequest.\n */\n XMLHttpRequestFactory: any;\n}\n\n/**\n * An {@link AudioPlayer} is an HTMLAudioElement-like object that uses AudioContext\n * to circumvent browser limitations.\n * @private\n */\nclass AudioPlayer extends EventTarget {\n /**\n * The AudioContext. This is passed in at construction and used to create\n * MediaStreamBuffers and AudioNodes for playing sound through.\n */\n private _audioContext: ChromeAudioContext;\n\n /**\n * The Audio element that is used to play sound through when a non-default\n * sinkId is set.\n */\n private _audioElement: ChromeHTMLAudioElement;\n\n /**\n * The AudioBufferSourceNode of the actively loaded sound. Null if a sound\n * has not been loaded yet. This is re-used for each time the sound is\n * played.\n */\n private _audioNode: AudioBufferSourceNode|null = null;\n\n /**\n * A Promise for the AudioBuffer. Listening for the resolution of this Promise\n * delays an operation until after the sound is loaded and ready to be\n * played.\n */\n private _bufferPromise: Promise<AudioBuffer>;\n\n /**\n * The current destination for audio playback. This is set to context.destination\n * when default, or a specific MediaStreamAudioDestinationNode when setSinkId\n * is set.\n */\n private _destination: MediaStreamAudioDestinationNode;\n\n /**\n * The GainNode used to control whether the sound is muted.\n */\n private _gainNode: GainNode;\n\n /**\n * Whether or not the audio element should loop. If disabled during playback,\n * playing continues until the sound ends and then stops looping.\n */\n private _loop: boolean = false;\n\n /**\n * An Array of deferred-like objects for each pending `play` Promise. When\n * .pause() is called or .src is set, all pending play Promises are\n * immediately rejected.\n */\n private _pendingPlayDeferreds: Array<Deferred<AudioBuffer>> = [];\n\n /**\n * The current sinkId of the device audio is being played through.\n */\n private _sinkId: string = 'default';\n\n /**\n * The source URL of the sound to play. When set, the currently playing sound will stop.\n */\n private _src: string = '';\n\n /**\n * The Factory to use to construct an XMLHttpRequest.\n */\n private _XMLHttpRequest: any;\n\n get destination(): MediaStreamAudioDestinationNode { return this._destination; }\n get loop(): boolean { return this._loop; }\n set loop(shouldLoop: boolean) {\n const self = this;\n function pauseAfterPlaythrough() {\n self._audioNode.removeEventListener('ended', pauseAfterPlaythrough);\n self.pause();\n }\n // If a sound is already looping, it should continue playing\n // the current playthrough and then stop.\n if (!shouldLoop && this.loop && !this.paused) {\n this._audioNode.addEventListener('ended', pauseAfterPlaythrough);\n }\n\n this._loop = shouldLoop;\n }\n\n /**\n * Whether the audio element is muted.\n */\n get muted(): boolean { return this._gainNode.gain.value === 0; }\n set muted(shouldBeMuted: boolean) {\n this._gainNode.gain.value = shouldBeMuted ? 0 : 1;\n }\n\n /**\n * Whether the sound is paused. this._audioNode only exists when sound is playing;\n * otherwise AudioPlayer is considered paused.\n */\n get paused(): boolean { return this._audioNode === null; }\n get src(): string { return this._src; }\n set src(src: string) {\n this._load(src);\n }\n\n /**\n * The srcObject of the HTMLMediaElement\n */\n get srcObject(): MediaStream | MediaSource | Blob | undefined {\n return this._audioElement.srcObject;\n }\n set srcObject(srcObject: MediaStream | MediaSource | Blob | undefined) {\n this._audioElement.srcObject = srcObject;\n }\n get sinkId(): string { return this._sinkId; }\n\n /**\n * @param audioContext - The AudioContext to use for controlling sound the through.\n * @param options\n */\n constructor(audioContext: any,\n options?: IAudioPlayerOptions);\n\n /**\n * @param audioContext - The AudioContext to use for controlling sound the through.\n * @param src - The URL of the sound to load.\n * @param options\n */\n constructor(audioContext: any,\n src: string,\n options?: IAudioPlayerOptions);\n\n /**\n * @private\n */\n constructor(audioContext: any,\n srcOrOptions: string|IAudioPlayerOptions = { } as IAudioPlayerOptions,\n options: IAudioPlayerOptions = { } as IAudioPlayerOptions) {\n super();\n\n if (typeof srcOrOptions !== 'string') {\n options = srcOrOptions;\n }\n\n this._audioContext = audioContext as ChromeAudioContext;\n this._audioElement = new (options.AudioFactory || Audio)();\n this._bufferPromise = this._createPlayDeferred().promise;\n this._destination = this._audioContext.destination;\n this._gainNode = this._audioContext.createGain();\n this._gainNode.connect(this._destination);\n this._XMLHttpRequest = options.XMLHttpRequestFactory || XMLHttpRequest;\n\n this.addEventListener('canplaythrough', () => {\n this._resolvePlayDeferreds();\n });\n\n if (typeof srcOrOptions === 'string') {\n this.src = srcOrOptions;\n }\n }\n\n /**\n * Stop any ongoing playback and reload the source file.\n */\n load(): void {\n this._load(this._src);\n }\n\n /**\n * Pause the audio coming from this AudioPlayer. This will reject any pending\n * play Promises.\n */\n pause(): void {\n if (this.paused) { return; }\n\n this._audioElement.pause();\n\n this._audioNode.stop();\n this._audioNode.disconnect(this._gainNode);\n this._audioNode = null;\n\n this._rejectPlayDeferreds(new Error('The play() request was interrupted by a call to pause().'));\n }\n\n /**\n * Play the sound. If the buffer hasn't loaded yet, wait for the buffer to load. If\n * the source URL is not set yet, this Promise will remain pending until a source\n * URL is set.\n */\n async play(): Promise<void> {\n if (!this.paused) {\n await this._bufferPromise;\n if (!this.paused) { return; }\n throw new Error('The play() request was interrupted by a call to pause().');\n }\n\n this._audioNode = this._audioContext.createBufferSource();\n this._audioNode.loop = this.loop;\n\n this._audioNode.addEventListener('ended', () => {\n if (this._audioNode && this._audioNode.loop) { return; }\n this.dispatchEvent('ended');\n });\n\n const buffer: AudioBuffer = await this._bufferPromise;\n\n if (this.paused) {\n throw new Error('The play() request was interrupted by a call to pause().');\n }\n\n this._audioNode.buffer = buffer;\n this._audioNode.connect(this._gainNode);\n this._audioNode.start();\n\n if (this._audioElement.srcObject) {\n return this._audioElement.play();\n }\n }\n\n /**\n * Change which device the sound should play through.\n * @param sinkId - The sink of the device to play sound through.\n */\n async setSinkId(sinkId: string): Promise<void> {\n if (typeof this._audioElement.setSinkId !== 'function') {\n throw new Error('This browser does not support setSinkId.');\n }\n\n if (sinkId === this.sinkId) {\n return;\n }\n\n if (sinkId === 'default') {\n if (!this.paused) {\n this._gainNode.disconnect(this._destination);\n }\n\n this._audioElement.srcObject = null;\n this._destination = this._audioContext.destination;\n this._gainNode.connect(this._destination);\n this._sinkId = sinkId;\n return;\n }\n\n await this._audioElement.setSinkId(sinkId);\n if (this._audioElement.srcObject) { return; }\n\n this._gainNode.disconnect(this._audioContext.destination);\n this._destination = this._audioContext.createMediaStreamDestination();\n this._audioElement.srcObject = this._destination.stream;\n this._sinkId = sinkId;\n\n this._gainNode.connect(this._destination);\n }\n\n /**\n * Create a Deferred for a Promise that will be resolved when .src is set or rejected\n * when .pause is called.\n */\n private _createPlayDeferred(): Deferred<AudioBuffer> {\n const deferred = new Deferred();\n this._pendingPlayDeferreds.push(deferred as Deferred<AudioBuffer>);\n return deferred as Deferred<AudioBuffer>;\n }\n\n /**\n * Stop current playback and load a sound file.\n * @param src - The source URL of the file to load\n */\n private _load(src: string): void {\n if (this._src && this._src !== src) {\n this.pause();\n }\n\n this._src = src;\n this._bufferPromise = new Promise(async (resolve, reject) => {\n if (!src) {\n return this._createPlayDeferred().promise;\n }\n\n const buffer = await bufferSound(this._audioContext, this._XMLHttpRequest, src);\n this.dispatchEvent('canplaythrough');\n resolve(buffer);\n });\n }\n\n /**\n * Reject all deferreds for the Play promise.\n * @param reason\n */\n private _rejectPlayDeferreds(reason?: any): void {\n const deferreds = this._pendingPlayDeferreds;\n deferreds.splice(0, deferreds.length).forEach(({ reject }) => reject(reason));\n }\n\n /**\n * Resolve all deferreds for the Play promise.\n * @param result\n */\n private _resolvePlayDeferreds(result?: any): void {\n const deferreds = this._pendingPlayDeferreds;\n deferreds.splice(0, deferreds.length).forEach(({ resolve }) => resolve(result));\n }\n}\n\n/**\n * Use XMLHttpRequest to load the AudioBuffer of a remote audio asset.\n * @private\n * @param context - The AudioContext to use to decode the audio data\n * @param RequestFactory - The XMLHttpRequest factory to build\n * @param src - The URL of the audio asset to load.\n * @returns A Promise containing the decoded AudioBuffer.\n */\n// tslint:disable-next-line:variable-name\nasync function bufferSound(context: any, RequestFactory: any, src: string): Promise<AudioBuffer> {\n const request: XMLHttpRequest = new RequestFactory();\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n\n const event: any = await new Promise(resolve => {\n request.addEventListener('load', resolve);\n request.send();\n });\n\n // Safari uses a callback here instead of a Promise.\n try {\n return context.decodeAudioData(event.target.response);\n } catch (e) {\n return new Promise(resolve => {\n context.decodeAudioData(event.target.response, resolve);\n }) as Promise<AudioBuffer>;\n }\n}\n\nexport default AudioPlayer;\n","// @ts-nocheck\nimport { AsyncQueue } from './asyncQueue';\nimport AudioPlayer from './audioplayer/audioplayer';\nimport { InvalidArgumentError } from './errors';\n\n/**\n * @class\n * @param {string} name - Name of the sound\n * @param {string} url - URL of the sound\n * @param {Sound#ConstructorOptions} options\n * @property {boolean} isPlaying - Whether the Sound is currently playing audio.\n * @property {string} name - Name of the sound\n * @property {string} url - URL of the sound\n * @property {AudioContext} audioContext - The AudioContext to use if available for AudioPlayer.\n */\n/**\n * @typedef {Object} Sound#ConstructorOptions\n * @property {number} [maxDuration=0] - The maximum length of time to play the sound\n * before stopping it.\n * @property {Boolean} [shouldLoop=false] - Whether the sound should be looped.\n */\nfunction Sound(name, url, options) {\n if (!(this instanceof Sound)) {\n return new Sound(name, url, options);\n }\n\n if (!name || !url) {\n throw new InvalidArgumentError('name and url are required arguments');\n }\n\n options = Object.assign({\n AudioFactory: typeof Audio !== 'undefined' ? Audio : null,\n maxDuration: 0,\n shouldLoop: false,\n }, options);\n\n options.AudioPlayer = options.audioContext\n ? AudioPlayer.bind(AudioPlayer, options.audioContext)\n : options.AudioFactory;\n\n Object.defineProperties(this, {\n _Audio: { value: options.AudioPlayer },\n _activeEls: { value: new Map() },\n _isSinkSupported: {\n value: options.AudioFactory !== null\n && typeof options.AudioFactory.prototype.setSinkId === 'function',\n },\n _maxDuration: { value: options.maxDuration },\n _maxDurationTimeout: {\n value: null,\n writable: true,\n },\n _operations: { value: new AsyncQueue() },\n _playPromise: {\n value: null,\n writable: true,\n },\n _shouldLoop: { value: options.shouldLoop },\n _sinkIds: { value: ['default'] },\n isPlaying: {\n enumerable: true,\n get() {\n return !!this._playPromise;\n },\n },\n name: {\n enumerable: true,\n value: name,\n },\n url: {\n enumerable: true,\n value: url,\n },\n });\n\n if (this._Audio) {\n // Play it (muted and should not loop) as soon as possible so that it does not get incorrectly caught by Chrome's\n // \"gesture requirement for media playback\" feature.\n // https://plus.google.com/+FrancoisBeaufort/posts/6PiJQqJzGqX\n this._play(true, false);\n }\n}\n\nfunction destroyAudioElement(audioElement) {\n if (audioElement) {\n audioElement.pause();\n audioElement.src = '';\n audioElement.srcObject = null;\n audioElement.load();\n }\n}\n\n/**\n * Plays the audio element that was initialized using the speficied sinkId\n */\nSound.prototype._playAudioElement = function _playAudioElement(sinkId, isMuted, shouldLoop) {\n const audioElement = this._activeEls.get(sinkId);\n\n if (!audioElement) {\n throw new InvalidArgumentError(`sinkId: \"${sinkId}\" doesn't have an audio element`);\n }\n\n audioElement.muted = !!isMuted;\n audioElement.loop = !!shouldLoop;\n\n return audioElement.play()\n .then(() => audioElement)\n .catch((reason) => {\n destroyAudioElement(audioElement);\n this._activeEls.delete(sinkId);\n throw reason;\n });\n};\n\n/**\n * Start playing the sound. Will stop the currently playing sound first.\n * If it exists, the audio element that was initialized for the sinkId will be used\n */\nSound.prototype._play = function _play(forceIsMuted, forceShouldLoop) {\n if (this.isPlaying) {\n this._stop();\n }\n\n if (this._maxDuration > 0) {\n this._maxDurationTimeout = setTimeout(this._stop.bind(this), this._maxDuration);\n }\n\n forceShouldLoop = typeof forceShouldLoop === 'boolean' ? forceShouldLoop : this._shouldLoop;\n const self = this;\n const playPromise = this._playPromise = Promise.all(this._sinkIds.map(function createAudioElement(sinkId) {\n if (!self._Audio) {\n return Promise.resolve();\n }\n\n let audioElement = self._activeEls.get(sinkId);\n if (audioElement) {\n return self._playAudioElement(sinkId, forceIsMuted, forceShouldLoop);\n }\n\n audioElement = new self._Audio(self.url);\n\n // Make sure the browser always retrieves the resource using CORS.\n // By default when using media tags, origin header is not sent to server\n // which causes the server to not return CORS headers. When this caches\n // on the CDN or browser, it causes issues to future requests that needs CORS,\n // which is true when using AudioContext. Please note that we won't have to do this\n // once we migrate to CloudFront.\n if (typeof audioElement.setAttribute === 'function') {\n audioElement.setAttribute('crossorigin', 'anonymous');\n }\n\n /**\n * (rrowland) Bug in Chrome 53 & 54 prevents us from calling Audio.setSinkId without\n * crashing the tab. https://bugs.chromium.org/p/chromium/issues/detail?id=655342\n */\n return new Promise(resolve => {\n audioElement.addEventListener('canplaythrough', resolve);\n }).then(() => {\n return (self._isSinkSupported\n ? audioElement.setSinkId(sinkId)\n : Promise.resolve()).then(function setSinkIdSuccess() {\n self._activeEls.set(sinkId, audioElement);\n\n // Stop has been called, bail out\n if (!self._playPromise) {\n return Promise.resolve();\n }\n return self._playAudioElement(sinkId, forceIsMuted, forceShouldLoop);\n });\n });\n }));\n\n return playPromise;\n};\n\n/**\n * Stop playing the sound.\n */\nSound.prototype._stop = function _stop() {\n this._activeEls.forEach((audioEl, sinkId) => {\n if (this._sinkIds.includes(sinkId)) {\n audioEl.pause();\n audioEl.currentTime = 0;\n } else {\n // Destroy the ones that are not used anymore\n destroyAudioElement(audioEl);\n this._activeEls.delete(sinkId);\n }\n });\n\n clearTimeout(this._maxDurationTimeout);\n\n this._playPromise = null;\n this._maxDurationTimeout = null;\n};\n\n/**\n * Update the sinkIds of the audio output devices this sound should play through.\n */\nSound.prototype.setSinkIds = function setSinkIds(ids) {\n if (!this._isSinkSupported) { return; }\n\n ids = ids.forEach ? ids : [ids];\n [].splice.apply(this._sinkIds, [0, this._sinkIds.length].concat(ids));\n};\n\n/**\n * Add a stop operation to the queue\n */\nSound.prototype.stop = function stop() {\n this._operations.enqueue(() => {\n this._stop();\n return Promise.resolve();\n });\n};\n\n/**\n * Add a play operation to the queue\n */\nSound.prototype.play = function play() {\n return this._operations.enqueue(() => this._play());\n};\n\nexport default Sound;\n","import { EventEmitter } from 'events';\nimport * as loglevel from 'loglevel';\nimport AudioHelper from './audiohelper';\nimport { AudioProcessorEventObserver } from './audioprocessoreventobserver';\nimport Call from './call';\nimport * as C from './constants';\nimport DialtonePlayer from './dialtonePlayer';\nimport {\n AuthorizationErrors,\n ClientErrors,\n GeneralErrors,\n getPreciseSignalingErrorByCode,\n InvalidArgumentError,\n InvalidStateError,\n NotSupportedError,\n TwilioError,\n} from './errors';\nimport Publisher from './eventpublisher';\nimport Log from './log';\nimport { PreflightTest } from './preflight/preflight';\nimport PStream from './pstream';\nimport {\n createEventGatewayURI,\n createSignalingEndpointURL,\n Edge,\n getChunderURIs,\n getRegionShortcode,\n Region,\n regionToEdge,\n} from './regions';\nimport * as rtc from './rtc';\nimport getUserMedia from './rtc/getusermedia';\nimport { generateVoiceEventSid } from './sid';\nimport Sound from './sound';\nimport {\n isLegacyEdge,\n promisifyEvents,\n queryToJson,\n} from './util';\n\n// Placeholders until we convert the respective files to TypeScript.\n/**\n * @private\n */\nexport type IPStream = any;\n/**\n * @private\n */\nexport type IPublisher = any;\n/**\n * @private\n */\nexport type ISound = any;\n\nconst REGISTRATION_INTERVAL = 30000;\nconst RINGTONE_PLAY_TIMEOUT = 2000;\nconst PUBLISHER_PRODUCT_NAME = 'twilio-js-sdk';\nconst INVALID_TOKEN_MESSAGE = 'Parameter \"token\" must be of type \"string\".';\n\ndeclare const RTCRtpTransceiver: any;\ndeclare const webkitAudioContext: typeof AudioContext;\n\n/**\n * Options that may be passed to the {@link Device} constructor for internal testing.\n * @private\n */\nexport interface IExtendedDeviceOptions extends Device.Options {\n /**\n * Custom {@link AudioHelper} constructor\n */\n AudioHelper?: typeof AudioHelper;\n\n /**\n * The max amount of time in milliseconds to allow stream (re)-connect\n * backoffs.\n */\n backoffMaxMs?: number;\n\n /**\n * Custom {@link Call} constructor\n */\n Call?: typeof Call;\n\n /**\n * Hostname of the signaling gateway to connect to.\n */\n chunderw?: string | string[];\n\n /**\n * Hostname of the event gateway to connect to.\n */\n eventgw?: string;\n\n /**\n * File input stream to use instead of reading from mic\n */\n fileInputStream?: MediaStream;\n\n /**\n * Ignore browser support, disabling the exception that is thrown when neither WebRTC nor\n * ORTC are supported.\n */\n ignoreBrowserSupport?: boolean;\n\n /**\n * Whether this is a preflight call or not\n */\n preflight?: boolean;\n\n /**\n * Custom PStream constructor\n */\n PStream?: IPStream;\n\n /**\n * Custom Publisher constructor\n */\n Publisher?: IPublisher;\n\n /**\n * Whether or not to publish events to insights using {@link Device._publisher}.\n */\n publishEvents?: boolean;\n\n /**\n * MediaStreamConstraints to pass to getUserMedia when making or accepting a Call.\n */\n rtcConstraints?: Call.AcceptOptions['rtcConstraints'];\n\n /**\n * Custom Sound constructor\n */\n Sound?: ISound;\n\n /**\n * Voice event SID generator.\n */\n voiceEventSidGenerator?: () => string;\n}\n\n/**\n * A sound definition used to initialize a Sound file.\n * @private\n */\nexport interface ISoundDefinition {\n /**\n * Name of the sound file.\n */\n filename: string;\n\n /**\n * The amount of time this sound file should play before being stopped automatically.\n */\n maxDuration?: number;\n\n /**\n * Whether or not this sound should loop after playthrough finishes.\n */\n shouldLoop?: boolean;\n}\n\n/**\n * Twilio Device. Allows registration for incoming calls, and placing outgoing calls.\n */\nclass Device extends EventEmitter {\n /**\n * The AudioContext to be used by {@link Device} instances.\n * @private\n */\n static get audioContext(): AudioContext | undefined {\n return Device._audioContext;\n }\n\n /**\n * Which sound file extension is supported.\n * @private\n */\n static get extension(): 'mp3' | 'ogg' {\n // NOTE(mroberts): Node workaround.\n const a: any = typeof document !== 'undefined'\n ? document.createElement('audio') : { canPlayType: false };\n\n let canPlayMp3;\n try {\n canPlayMp3 = a.canPlayType && !!a.canPlayType('audio/mpeg').replace(/no/, '');\n } catch (e) {\n canPlayMp3 = false;\n }\n\n let canPlayVorbis;\n try {\n canPlayVorbis = a.canPlayType && !!a.canPlayType('audio/ogg;codecs=\\'vorbis\\'').replace(/no/, '');\n } catch (e) {\n canPlayVorbis = false;\n }\n\n return (canPlayVorbis && !canPlayMp3) ? 'ogg' : 'mp3';\n }\n\n /**\n * Whether or not this SDK is supported by the current browser.\n */\n static get isSupported(): boolean { return rtc.enabled(); }\n\n /**\n * Package name of the SDK.\n */\n static get packageName(): string { return C.PACKAGE_NAME; }\n\n /**\n * Run some tests to identify issues, if any, prohibiting successful calling.\n * @param token - A Twilio JWT token string\n * @param options\n */\n static runPreflight(token: string, options?: PreflightTest.Options): PreflightTest {\n return new PreflightTest(token, { audioContext: Device._getOrCreateAudioContext(), ...options });\n }\n\n /**\n * String representation of {@link Device} class.\n * @private\n */\n static toString(): string {\n return '[Twilio.Device class]';\n }\n\n /**\n * Current SDK version.\n */\n static get version(): string { return C.RELEASE_VERSION; }\n\n /**\n * An AudioContext to share between {@link Device}s.\n */\n private static _audioContext?: AudioContext;\n\n private static _defaultSounds: Record<string, ISoundDefinition> = {\n disconnect: { filename: 'disconnect', maxDuration: 3000 },\n dtmf0: { filename: 'dtmf-0', maxDuration: 1000 },\n dtmf1: { filename: 'dtmf-1', maxDuration: 1000 },\n dtmf2: { filename: 'dtmf-2', maxDuration: 1000 },\n dtmf3: { filename: 'dtmf-3', maxDuration: 1000 },\n dtmf4: { filename: 'dtmf-4', maxDuration: 1000 },\n dtmf5: { filename: 'dtmf-5', maxDuration: 1000 },\n dtmf6: { filename: 'dtmf-6', maxDuration: 1000 },\n dtmf7: { filename: 'dtmf-7', maxDuration: 1000 },\n dtmf8: { filename: 'dtmf-8', maxDuration: 1000 },\n dtmf9: { filename: 'dtmf-9', maxDuration: 1000 },\n dtmfh: { filename: 'dtmf-hash', maxDuration: 1000 },\n dtmfs: { filename: 'dtmf-star', maxDuration: 1000 },\n incoming: { filename: 'incoming', shouldLoop: true },\n outgoing: { filename: 'outgoing', maxDuration: 3000 },\n };\n\n /**\n * A DialtonePlayer to play mock DTMF sounds through.\n */\n private static _dialtonePlayer?: DialtonePlayer;\n\n /**\n * Initializes the AudioContext instance shared across the Voice SDK,\n * or returns the existing instance if one has already been initialized.\n */\n private static _getOrCreateAudioContext(): AudioContext | undefined {\n if (!Device._audioContext) {\n if (typeof AudioContext !== 'undefined') {\n Device._audioContext = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Device._audioContext = new webkitAudioContext();\n }\n }\n return Device._audioContext;\n }\n\n /**\n * The currently active {@link Call}, if there is one.\n */\n private _activeCall: Call | null = null;\n\n /**\n * The AudioHelper instance associated with this {@link Device}.\n */\n private _audio: AudioHelper | null = null;\n\n /**\n * The AudioProcessorEventObserver instance to use\n */\n private _audioProcessorEventObserver: AudioProcessorEventObserver | null = null;\n\n /**\n * {@link Device._confirmClose} bound to the specific {@link Device} instance.\n */\n private _boundConfirmClose: typeof Device.prototype._confirmClose;\n\n /**\n * {@link Device.destroy} bound to the specific {@link Device} instance.\n */\n private _boundDestroy: typeof Device.prototype.destroy;\n\n /**\n * An audio input MediaStream to pass to new {@link Call} instances.\n */\n private _callInputStream: MediaStream | null = null;\n\n /**\n * An array of {@link Call}s. Though only one can be active, multiple may exist when there\n * are multiple incoming, unanswered {@link Call}s.\n */\n private _calls: Call[] = [];\n\n /**\n * An array of {@link Device} IDs to be used to play sounds through, to be passed to\n * new {@link Call} instances.\n */\n private _callSinkIds: string[] = ['default'];\n\n /**\n * The list of chunder URIs that will be passed to PStream\n */\n private _chunderURIs: string[] = [];\n\n /**\n * Default options used by {@link Device}.\n */\n private readonly _defaultOptions: IExtendedDeviceOptions = {\n allowIncomingWhileBusy: false,\n closeProtection: false,\n codecPreferences: [Call.Codec.PCMU, Call.Codec.Opus],\n dscp: true,\n enableImprovedSignalingErrorPrecision: false,\n forceAggressiveIceNomination: false,\n logLevel: loglevel.levels.ERROR,\n maxCallSignalingTimeoutMs: 0,\n preflight: false,\n sounds: { },\n tokenRefreshMs: 10000,\n voiceEventSidGenerator: generateVoiceEventSid,\n };\n\n /**\n * The name of the edge the {@link Device} is connected to.\n */\n private _edge: string | null = null;\n\n /**\n * The name of the home region the {@link Device} is connected to.\n */\n private _home: string | null = null;\n\n /**\n * The identity associated with this Device.\n */\n private _identity: string | null = null;\n\n /**\n * Whether SDK is run as a browser extension\n */\n private _isBrowserExtension: boolean;\n\n /**\n * An instance of Logger to use.\n */\n private _log: Log = new Log('Device');\n\n /**\n * The internal promise created when calling {@link Device.makeCall}.\n */\n private _makeCallPromise: Promise<any> | null = null;\n\n /**\n * Network related information\n * See https://developer.mozilla.org/en-US/docs/Web/API/Network_Information_API\n */\n private _networkInformation: any;\n\n /**\n * The options passed to {@link Device} constructor or {@link Device.updateOptions}.\n */\n private _options: IExtendedDeviceOptions = { };\n\n /**\n * The preferred URI to (re)-connect signaling to.\n */\n private _preferredURI: string | null = null;\n\n /**\n * An Insights Event Publisher.\n */\n private _publisher: IPublisher | null = null;\n\n /**\n * The region the {@link Device} is connected to.\n */\n private _region: string | null = null;\n\n /**\n * A timeout ID for a setTimeout schedule to re-register the {@link Device}.\n */\n private _regTimer: NodeJS.Timeout | null = null;\n\n /**\n * Boolean representing whether or not the {@link Device} was registered when\n * receiving a signaling `offline`. Determines if the {@link Device} attempts\n * a `re-register` once signaling is re-established when receiving a\n * `connected` event from the stream.\n */\n private _shouldReRegister: boolean = false;\n\n /**\n * A Map of Sounds to play.\n */\n private _soundcache: Map<Device.SoundName, ISound> = new Map();\n\n /**\n * The current status of the {@link Device}.\n */\n private _state: Device.State = Device.State.Unregistered;\n\n /**\n * A map from {@link Device.State} to {@link Device.EventName}.\n */\n private readonly _stateEventMapping: Record<Device.State, Device.EventName> = {\n [Device.State.Destroyed]: Device.EventName.Destroyed,\n [Device.State.Unregistered]: Device.EventName.Unregistered,\n [Device.State.Registering]: Device.EventName.Registering,\n [Device.State.Registered]: Device.EventName.Registered,\n };\n\n /**\n * The Signaling stream.\n */\n private _stream: IPStream | null = null;\n\n /**\n * A promise that will resolve when the Signaling stream is ready.\n */\n private _streamConnectedPromise: Promise<IPStream> | null = null;\n\n /**\n * The JWT string currently being used to authenticate this {@link Device}.\n */\n private _token: string;\n\n /**\n * A timeout to track when the current AccessToken will expire.\n */\n private _tokenWillExpireTimeout: NodeJS.Timeout | null = null;\n\n /**\n * Construct a {@link Device} instance. The {@link Device} can be registered\n * to make and listen for calls using {@link Device.register}.\n * @param options\n */\n constructor(token: string, options: Device.Options = { }) {\n super();\n\n // Setup loglevel asap to avoid missed logs\n this._setupLoglevel(options.logLevel);\n this._logOptions('constructor', options);\n\n this.updateToken(token);\n\n if (isLegacyEdge()) {\n throw new NotSupportedError(\n 'Microsoft Edge Legacy (https://support.microsoft.com/en-us/help/4533505/what-is-microsoft-edge-legacy) ' +\n 'is deprecated and will not be able to connect to Twilio to make or receive calls after September 1st, 2020. ' +\n 'Please see this documentation for a list of supported browsers ' +\n 'https://www.twilio.com/docs/voice/client/javascript#supported-browsers',\n );\n }\n\n if (!Device.isSupported && (options as IExtendedDeviceOptions).ignoreBrowserSupport) {\n if (window && window.location && window.location.protocol === 'http:') {\n throw new NotSupportedError(`twilio.js wasn't able to find WebRTC browser support. \\\n This is most likely because this page is served over http rather than https, \\\n which does not support WebRTC in many browsers. Please load this page over https and \\\n try again.`);\n }\n\n throw new NotSupportedError(`twilio.js 1.3+ SDKs require WebRTC browser support. \\\n For more information, see <https://www.twilio.com/docs/api/client/twilio-js>. \\\n If you have any questions about this announcement, please contact \\\n Twilio Support at <help@twilio.com>.`);\n }\n\n const root: any = globalThis as any;\n const browser: any = root.msBrowser || root.browser || root.chrome;\n\n this._isBrowserExtension = (!!browser && !!browser.runtime && !!browser.runtime.id)\n || (!!root.safari && !!root.safari.extension);\n\n if (this._isBrowserExtension) {\n this._log.info('Running as browser extension.');\n }\n\n if (navigator) {\n const n = navigator as any;\n this._networkInformation = n.connection\n || n.mozConnection\n || n.webkitConnection;\n }\n\n if (this._networkInformation && typeof this._networkInformation.addEventListener === 'function') {\n this._networkInformation.addEventListener('change', this._publishNetworkChange);\n }\n\n Device._getOrCreateAudioContext();\n\n if (Device._audioContext) {\n if (!Device._dialtonePlayer) {\n Device._dialtonePlayer = new DialtonePlayer(Device._audioContext);\n }\n }\n\n this._boundDestroy = this.destroy.bind(this);\n this._boundConfirmClose = this._confirmClose.bind(this);\n\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('unload', this._boundDestroy);\n window.addEventListener('pagehide', this._boundDestroy);\n }\n\n this.updateOptions(options);\n }\n\n /**\n * Return the {@link AudioHelper} used by this {@link Device}.\n */\n get audio(): AudioHelper | null {\n return this._audio;\n }\n\n /**\n * Make an outgoing Call.\n * @param options\n */\n async connect(options: Device.ConnectOptions = { }): Promise<Call> {\n this._log.debug('.connect', JSON.stringify(options));\n this._throwIfDestroyed();\n if (this._activeCall) {\n throw new InvalidStateError('A Call is already active');\n }\n\n let customParameters;\n let parameters;\n let signalingReconnectToken;\n\n if (options.connectToken) {\n try {\n const connectTokenParts = JSON.parse(decodeURIComponent(atob(options.connectToken)));\n customParameters = connectTokenParts.customParameters;\n parameters = connectTokenParts.parameters;\n signalingReconnectToken = connectTokenParts.signalingReconnectToken;\n } catch {\n throw new InvalidArgumentError('Cannot parse connectToken');\n }\n\n if (!parameters || !parameters.CallSid || !signalingReconnectToken) {\n throw new InvalidArgumentError('Invalid connectToken');\n }\n }\n\n let isReconnect = false;\n let twimlParams: Record<string, string> = {};\n const callOptions: Call.Options = {\n enableImprovedSignalingErrorPrecision:\n !!this._options.enableImprovedSignalingErrorPrecision,\n rtcConfiguration: options.rtcConfiguration,\n voiceEventSidGenerator: this._options.voiceEventSidGenerator,\n };\n\n if (signalingReconnectToken && parameters) {\n isReconnect = true;\n callOptions.callParameters = parameters;\n callOptions.reconnectCallSid = parameters.CallSid;\n callOptions.reconnectToken = signalingReconnectToken;\n twimlParams = customParameters || twimlParams;\n } else {\n twimlParams = options.params || twimlParams;\n }\n\n let activeCall;\n this._makeCallPromise = this._makeCall(twimlParams, callOptions, isReconnect);\n try {\n activeCall = this._activeCall = await this._makeCallPromise;\n } finally {\n this._makeCallPromise = null;\n }\n\n // Make sure any incoming calls are ignored\n this._calls.splice(0).forEach(call => call.ignore());\n\n // Stop the incoming sound if it's playing\n this._soundcache.get(Device.SoundName.Incoming).stop();\n\n activeCall.accept({ rtcConstraints: options.rtcConstraints });\n this._publishNetworkChange();\n return activeCall;\n }\n\n /**\n * Return the calls that this {@link Device} is maintaining.\n */\n get calls(): Call[] {\n return this._calls;\n }\n\n /**\n * Destroy the {@link Device}, freeing references to be garbage collected.\n */\n destroy(): void {\n this._log.debug('.destroy');\n\n this._log.debug('Rejecting any incoming calls');\n const calls = this._calls.slice(0);\n calls.forEach((call: Call) => call.reject());\n\n this.disconnectAll();\n this._stopRegistrationTimer();\n\n this._destroyStream();\n this._destroyAudioHelper();\n this._audioProcessorEventObserver?.destroy();\n this._destroyPublisher();\n\n if (this._networkInformation && typeof this._networkInformation.removeEventListener === 'function') {\n this._networkInformation.removeEventListener('change', this._publishNetworkChange);\n }\n\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('beforeunload', this._boundConfirmClose);\n window.removeEventListener('unload', this._boundDestroy);\n window.removeEventListener('pagehide', this._boundDestroy);\n }\n\n this._setState(Device.State.Destroyed);\n EventEmitter.prototype.removeAllListeners.call(this);\n }\n\n /**\n * Disconnect all {@link Call}s.\n */\n disconnectAll(): void {\n this._log.debug('.disconnectAll');\n const calls = this._calls.splice(0);\n calls.forEach((call: Call) => call.disconnect());\n\n if (this._activeCall) {\n this._activeCall.disconnect();\n }\n }\n\n /**\n * Returns the {@link Edge} value the {@link Device} is currently connected\n * to. The value will be `null` when the {@link Device} is offline.\n */\n get edge(): string | null {\n return this._edge;\n }\n\n /**\n * Returns the home value the {@link Device} is currently connected\n * to. The value will be `null` when the {@link Device} is offline.\n */\n get home(): string | null {\n return this._home;\n }\n\n /**\n * Returns the identity associated with the {@link Device} for incoming calls. Only\n * populated when registered.\n */\n get identity(): string | null {\n return this._identity;\n }\n\n /**\n * Whether the Device is currently on an active Call.\n */\n get isBusy(): boolean {\n return !!this._activeCall;\n }\n\n /**\n * Register the `Device` to the Twilio backend, allowing it to receive calls.\n */\n async register(): Promise<void> {\n this._log.debug('.register');\n if (this.state !== Device.State.Unregistered) {\n throw new InvalidStateError(\n `Attempt to register when device is in state \"${this.state}\". ` +\n `Must be \"${Device.State.Unregistered}\".`,\n );\n }\n\n this._shouldReRegister = false;\n this._setState(Device.State.Registering);\n\n await (this._streamConnectedPromise || this._setupStream());\n await this._sendPresence(true);\n await promisifyEvents(this, Device.State.Registered, Device.State.Unregistered);\n }\n\n /**\n * Get the state of this {@link Device} instance\n */\n get state(): Device.State {\n return this._state;\n }\n\n /**\n * Get the token used by this {@link Device}.\n */\n get token(): string | null {\n return this._token;\n }\n\n /**\n * String representation of {@link Device} instance.\n * @private\n */\n toString() {\n return '[Twilio.Device instance]';\n }\n\n /**\n * Unregister the `Device` to the Twilio backend, disallowing it to receive\n * calls.\n */\n async unregister(): Promise<void> {\n this._log.debug('.unregister');\n if (this.state !== Device.State.Registered) {\n throw new InvalidStateError(\n `Attempt to unregister when device is in state \"${this.state}\". ` +\n `Must be \"${Device.State.Registered}\".`,\n );\n }\n\n this._shouldReRegister = false;\n\n const stream = await this._streamConnectedPromise;\n const streamOfflinePromise = new Promise(resolve => {\n stream.on('offline', resolve);\n });\n await this._sendPresence(false);\n await streamOfflinePromise;\n }\n\n /**\n * Set the options used within the {@link Device}.\n * @param options\n */\n updateOptions(options: Device.Options = { }): void {\n this._logOptions('updateOptions', options);\n if (this.state === Device.State.Destroyed) {\n throw new InvalidStateError(\n `Attempt to \"updateOptions\" when device is in state \"${this.state}\".`,\n );\n }\n\n this._options = { ...this._defaultOptions, ...this._options, ...options };\n\n const originalChunderURIs: Set<string> = new Set(this._chunderURIs);\n\n const newChunderURIs = this._chunderURIs = (\n this._getChunderws() || getChunderURIs(this._options.edge)\n ).map(createSignalingEndpointURL);\n\n let hasChunderURIsChanged = originalChunderURIs.size !== newChunderURIs.length;\n\n if (!hasChunderURIsChanged) {\n for (const uri of newChunderURIs) {\n if (!originalChunderURIs.has(uri)) {\n hasChunderURIsChanged = true;\n break;\n }\n }\n }\n\n if (this.isBusy && hasChunderURIsChanged) {\n throw new InvalidStateError('Cannot change Edge while on an active Call');\n }\n\n this._setupLoglevel(this._options.logLevel);\n\n for (const name of Object.keys(Device._defaultSounds)) {\n const soundDef: ISoundDefinition = Device._defaultSounds[name];\n\n const defaultUrl: string = `${C.SOUNDS_BASE_URL}/${soundDef.filename}.${Device.extension}`\n + `?cache=${C.RELEASE_VERSION}`;\n\n const soundUrl: string = this._options.sounds && this._options.sounds[name as Device.SoundName] || defaultUrl;\n const sound: any = new (this._options.Sound || Sound)(name, soundUrl, {\n audioContext: this._options.disableAudioContextSounds ? null : Device.audioContext,\n maxDuration: soundDef.maxDuration,\n shouldLoop: soundDef.shouldLoop,\n });\n\n this._soundcache.set(name as Device.SoundName, sound);\n }\n\n this._setupAudioHelper();\n this._setupPublisher();\n\n if (hasChunderURIsChanged && this._streamConnectedPromise) {\n this._setupStream();\n }\n\n // Setup close protection and make sure we clean up ongoing calls on unload.\n if (\n typeof window !== 'undefined' &&\n typeof window.addEventListener === 'function' &&\n this._options.closeProtection\n ) {\n window.removeEventListener('beforeunload', this._boundConfirmClose);\n window.addEventListener('beforeunload', this._boundConfirmClose);\n }\n }\n\n /**\n * Update the token used by this {@link Device} to connect to Twilio.\n * It is recommended to call this API after [[Device.tokenWillExpireEvent]] is emitted,\n * and before or after a call to prevent a potential ~1s audio loss during the update process.\n * @param token\n */\n updateToken(token: string) {\n this._log.debug('.updateToken');\n if (this.state === Device.State.Destroyed) {\n throw new InvalidStateError(\n `Attempt to \"updateToken\" when device is in state \"${this.state}\".`,\n );\n }\n\n if (typeof token !== 'string') {\n throw new InvalidArgumentError(INVALID_TOKEN_MESSAGE);\n }\n\n this._token = token;\n\n if (this._stream) {\n this._stream.setToken(this._token);\n }\n\n if (this._publisher) {\n this._publisher.setToken(this._token);\n }\n }\n\n /**\n * Called on window's beforeunload event if closeProtection is enabled,\n * preventing users from accidentally navigating away from an active call.\n * @param event\n */\n private _confirmClose(event: any): string {\n if (!this._activeCall) { return ''; }\n\n const closeProtection: boolean | string = this._options.closeProtection || false;\n const confirmationMsg: string = typeof closeProtection !== 'string'\n ? 'A call is currently in-progress. Leaving or reloading this page will end the call.'\n : closeProtection;\n\n (event || window.event).returnValue = confirmationMsg;\n return confirmationMsg;\n }\n\n /**\n * Create the default Insights payload\n * @param call\n */\n private _createDefaultPayload = (call?: Call): Record<string, any> => {\n const payload: Record<string, any> = {\n aggressive_nomination: this._options.forceAggressiveIceNomination,\n browser_extension: this._isBrowserExtension,\n dscp: !!this._options.dscp,\n ice_restart_enabled: true,\n platform: rtc.getMediaEngine(),\n sdk_version: C.RELEASE_VERSION,\n };\n\n function setIfDefined(propertyName: string, value: string | undefined | null) {\n if (value) { payload[propertyName] = value; }\n }\n\n if (call) {\n const callSid = call.parameters.CallSid;\n setIfDefined('call_sid', /^TJ/.test(callSid) ? undefined : callSid);\n setIfDefined('temp_call_sid', call.outboundConnectionId);\n setIfDefined('audio_codec', call.codec);\n payload.direction = call.direction;\n }\n\n setIfDefined('gateway', this._stream && this._stream.gateway);\n setIfDefined('region', this._stream && this._stream.region);\n\n return payload;\n }\n\n /**\n * Destroy the AudioHelper.\n */\n private _destroyAudioHelper() {\n if (!this._audio) { return; }\n this._audio._destroy();\n this._audio = null;\n }\n\n /**\n * Destroy the publisher.\n */\n private _destroyPublisher() {\n // Attempt to destroy non-existent publisher.\n if (!this._publisher) { return; }\n\n this._publisher = null;\n }\n\n /**\n * Destroy the connection to the signaling server.\n */\n private _destroyStream() {\n if (this._stream) {\n this._stream.removeListener('close', this._onSignalingClose);\n this._stream.removeListener('connected', this._onSignalingConnected);\n this._stream.removeListener('error', this._onSignalingError);\n this._stream.removeListener('invite', this._onSignalingInvite);\n this._stream.removeListener('offline', this._onSignalingOffline);\n this._stream.removeListener('ready', this._onSignalingReady);\n\n this._stream.destroy();\n this._stream = null;\n }\n\n this._onSignalingOffline();\n\n this._streamConnectedPromise = null;\n }\n\n /**\n * Find a {@link Call} by its CallSid.\n * @param callSid\n */\n private _findCall(callSid: string): Call | null {\n return this._calls.find(call => call.parameters.CallSid === callSid\n || call.outboundConnectionId === callSid) || null;\n }\n\n /**\n * Get chunderws array from the chunderw param\n */\n private _getChunderws(): string[] | null {\n return typeof this._options.chunderw === 'string' ? [this._options.chunderw]\n : Array.isArray(this._options.chunderw) ? this._options.chunderw : null;\n }\n\n /**\n * Utility function to log device options\n */\n private _logOptions(caller: string, options: Device.Options = { }): void {\n // Selectively log options that users can modify.\n // Also, convert user overrides.\n // This prevents potential app crash when calling JSON.stringify\n // and when sending log strings remotely\n const userOptions = [\n 'allowIncomingWhileBusy',\n 'appName',\n 'appVersion',\n 'closeProtection',\n 'codecPreferences',\n 'disableAudioContextSounds',\n 'dscp',\n 'edge',\n 'enableImprovedSignalingErrorPrecision',\n 'forceAggressiveIceNomination',\n 'logLevel',\n 'maxAverageBitrate',\n 'maxCallSignalingTimeoutMs',\n 'sounds',\n 'tokenRefreshMs',\n ];\n const userOptionOverrides = [\n 'RTCPeerConnection',\n 'enumerateDevices',\n 'getUserMedia',\n 'MediaStream',\n ];\n if (typeof options === 'object') {\n const toLog: any = { ...options };\n Object.keys(toLog).forEach((key: string) => {\n if (!userOptions.includes(key) && !userOptionOverrides.includes(key)) {\n delete toLog[key];\n }\n if (userOptionOverrides.includes(key)) {\n toLog[key] = true;\n }\n });\n this._log.debug(`.${caller}`, JSON.stringify(toLog));\n }\n }\n\n /**\n * Create a new {@link Call}.\n * @param twimlParams - A flat object containing key:value pairs to be sent to the TwiML app.\n * @param options - Options to be used to instantiate the {@link Call}.\n */\n private async _makeCall(twimlParams: Record<string, string>, options?: Call.Options, isReconnect: boolean = false): Promise<Call> {\n // Wait for the input device if it's set by the user\n const inputDevicePromise = this._audio?._getInputDevicePromise();\n if (inputDevicePromise) {\n this._log.debug('inputDevicePromise detected, waiting...');\n await inputDevicePromise;\n this._log.debug('inputDevicePromise resolved');\n }\n\n const config: Call.Config = {\n audioHelper: this._audio,\n onIgnore: (): void => {\n this._soundcache.get(Device.SoundName.Incoming).stop();\n },\n pstream: await (this._streamConnectedPromise || this._setupStream()),\n publisher: this._publisher,\n soundcache: this._soundcache,\n };\n\n options = Object.assign({\n MediaStream: this._options.MediaStream,\n RTCPeerConnection: this._options.RTCPeerConnection,\n beforeAccept: (currentCall: Call) => {\n if (!this._activeCall || this._activeCall === currentCall) {\n return;\n }\n\n this._activeCall.disconnect();\n this._removeCall(this._activeCall);\n },\n codecPreferences: this._options.codecPreferences,\n customSounds: this._options.sounds,\n dialtonePlayer: Device._dialtonePlayer,\n dscp: this._options.dscp,\n // TODO(csantos): Remove forceAggressiveIceNomination option in 3.x\n forceAggressiveIceNomination: this._options.forceAggressiveIceNomination,\n getInputStream: (): MediaStream | null => this._options.fileInputStream || this._callInputStream,\n getSinkIds: (): string[] => this._callSinkIds,\n maxAverageBitrate: this._options.maxAverageBitrate,\n preflight: this._options.preflight,\n rtcConstraints: this._options.rtcConstraints,\n shouldPlayDisconnect: () => this._audio?.disconnect(),\n twimlParams,\n voiceEventSidGenerator: this._options.voiceEventSidGenerator,\n }, options);\n\n const maybeUnsetPreferredUri = () => {\n if (!this._stream) {\n this._log.warn('UnsetPreferredUri called without a stream');\n return;\n }\n if (this._activeCall === null && this._calls.length === 0) {\n this._stream.updatePreferredURI(null);\n }\n };\n\n const call = new (this._options.Call || Call)(config, options);\n\n this._publisher.info('settings', 'init', {\n MediaStream: !!this._options.MediaStream,\n RTCPeerConnection: !!this._options.RTCPeerConnection,\n enumerateDevices: !!this._options.enumerateDevices,\n getUserMedia: !!this._options.getUserMedia,\n }, call);\n\n call.once('accept', () => {\n this._stream.updatePreferredURI(this._preferredURI);\n this._removeCall(call);\n this._activeCall = call;\n if (this._audio) {\n this._audio._maybeStartPollingVolume();\n }\n\n if (call.direction === Call.CallDirection.Outgoing && this._audio?.outgoing() && !isReconnect) {\n this._soundcache.get(Device.SoundName.Outgoing).play();\n }\n\n const data: any = { edge: this._edge || this._region };\n if (this._options.edge) {\n data['selected_edge'] = Array.isArray(this._options.edge)\n ? this._options.edge\n : [this._options.edge];\n }\n\n this._publisher.info('settings', 'edge', data, call);\n\n if (this._audio?.localProcessedStream) {\n this._audioProcessorEventObserver?.emit('enabled', false);\n }\n if (this._audio?.remoteProcessedStream) {\n this._audioProcessorEventObserver?.emit('enabled', true);\n }\n });\n\n call.addListener('error', (error: TwilioError) => {\n if (call.status() === 'closed') {\n this._removeCall(call);\n maybeUnsetPreferredUri();\n }\n if (this._audio) {\n this._audio._maybeStopPollingVolume();\n }\n this._maybeStopIncomingSound();\n });\n\n call.once('cancel', () => {\n this._log.info(`Canceled: ${call.parameters.CallSid}`);\n this._removeCall(call);\n maybeUnsetPreferredUri();\n if (this._audio) {\n this._audio._maybeStopPollingVolume();\n }\n this._maybeStopIncomingSound();\n });\n\n call.once('disconnect', () => {\n if (this._audio) {\n this._audio._maybeStopPollingVolume();\n }\n this._removeCall(call);\n maybeUnsetPreferredUri();\n /**\n * NOTE(kamalbennani): We need to stop the incoming sound when the call is\n * disconnected right after the user has accepted the call (activeCall.accept()), and before\n * the call has been fully connected (i.e. before the `pstream.answer` event)\n */\n this._maybeStopIncomingSound();\n });\n\n call.once('reject', () => {\n this._log.info(`Rejected: ${call.parameters.CallSid}`);\n if (this._audio) {\n this._audio._maybeStopPollingVolume();\n }\n this._removeCall(call);\n maybeUnsetPreferredUri();\n this._maybeStopIncomingSound();\n });\n\n call.on('transportClose', () => {\n if (call.status() !== Call.State.Pending) {\n return;\n }\n if (this._audio) {\n this._audio._maybeStopPollingVolume();\n }\n this._removeCall(call);\n /**\n * NOTE(mhuynh): We don't want to call `maybeUnsetPreferredUri` because\n * a `transportClose` will happen during signaling reconnection.\n */\n this._maybeStopIncomingSound();\n });\n\n return call;\n }\n\n /**\n * Stop the incoming sound if no {@link Call}s remain.\n */\n private _maybeStopIncomingSound(): void {\n if (!this._calls.length) {\n this._soundcache.get(Device.SoundName.Incoming).stop();\n }\n }\n\n /**\n * Called when a 'close' event is received from the signaling stream.\n */\n private _onSignalingClose = () => {\n this._stream = null;\n this._streamConnectedPromise = null;\n }\n\n /**\n * Called when a 'connected' event is received from the signaling stream.\n */\n private _onSignalingConnected = (payload: Record<string, any>) => {\n const region = getRegionShortcode(payload.region);\n this._edge = payload.edge || regionToEdge[region as Region] || payload.region;\n this._region = region || payload.region;\n this._home = payload.home;\n this._publisher?.setHost(createEventGatewayURI(payload.home));\n\n if (payload.token) {\n this._identity = payload.token.identity;\n if (\n typeof payload.token.ttl === 'number' &&\n typeof this._options.tokenRefreshMs === 'number'\n ) {\n const ttlMs: number = payload.token.ttl * 1000;\n const timeoutMs: number = Math.max(0, ttlMs - this._options.tokenRefreshMs);\n this._tokenWillExpireTimeout = setTimeout(() => {\n this._log.debug('#tokenWillExpire');\n this.emit('tokenWillExpire', this);\n if (this._tokenWillExpireTimeout) {\n clearTimeout(this._tokenWillExpireTimeout);\n this._tokenWillExpireTimeout = null;\n }\n }, timeoutMs);\n }\n }\n\n const preferredURIs = this._getChunderws() || getChunderURIs(this._edge as Edge);\n if (preferredURIs.length > 0) {\n const [preferredURI] = preferredURIs;\n this._preferredURI = createSignalingEndpointURL(preferredURI);\n } else {\n this._log.warn('Could not parse a preferred URI from the stream#connected event.');\n }\n\n // The signaling stream emits a `connected` event after reconnection, if the\n // device was registered before this, then register again.\n if (this._shouldReRegister) {\n this.register();\n }\n }\n\n /**\n * Called when an 'error' event is received from the signaling stream.\n */\n private _onSignalingError = (payload: Record<string, any>) => {\n if (typeof payload !== 'object') {\n this._log.warn('Invalid signaling error payload', payload);\n return;\n }\n\n const { error: originalError, callsid, voiceeventsid } = payload;\n\n // voiceeventsid is for call message events which are handled in the call object\n // missing originalError shouldn't be possible but check here to fail properly\n if (typeof originalError !== 'object' || !!voiceeventsid) {\n this._log.warn('Ignoring signaling error payload', { originalError, voiceeventsid });\n return;\n }\n\n const call: Call | undefined =\n (typeof callsid === 'string' && this._findCall(callsid)) || undefined;\n\n const { code, message: customMessage } = originalError;\n let { twilioError } = originalError;\n\n if (typeof code === 'number') {\n if (code === 31201) {\n twilioError = new AuthorizationErrors.AuthenticationFailed(originalError);\n } else if (code === 31204) {\n twilioError = new AuthorizationErrors.AccessTokenInvalid(originalError);\n } else if (code === 31205) {\n // Stop trying to register presence after token expires\n this._stopRegistrationTimer();\n twilioError = new AuthorizationErrors.AccessTokenExpired(originalError);\n } else {\n const errorConstructor = getPreciseSignalingErrorByCode(\n !!this._options.enableImprovedSignalingErrorPrecision,\n code,\n );\n if (typeof errorConstructor !== 'undefined') {\n twilioError = new errorConstructor(originalError);\n }\n }\n }\n\n if (!twilioError) {\n this._log.error('Unknown signaling error: ', originalError);\n twilioError = new GeneralErrors.UnknownError(customMessage, originalError);\n }\n\n this._log.error('Received error: ', twilioError);\n this._log.debug('#error', originalError);\n this.emit(Device.EventName.Error, twilioError, call);\n }\n\n /**\n * Called when an 'invite' event is received from the signaling stream.\n */\n private _onSignalingInvite = async (payload: Record<string, any>) => {\n const wasBusy = !!this._activeCall;\n if (wasBusy && !this._options.allowIncomingWhileBusy) {\n this._log.info('Device busy; ignoring incoming invite');\n return;\n }\n\n if (!payload.callsid || !payload.sdp) {\n this._log.debug('#error', payload);\n this.emit(Device.EventName.Error, new ClientErrors.BadRequest('Malformed invite from gateway'));\n return;\n }\n\n const callParameters = payload.parameters || { };\n callParameters.CallSid = callParameters.CallSid || payload.callsid;\n\n const customParameters = Object.assign({ }, queryToJson(callParameters.Params));\n\n this._makeCallPromise = this._makeCall(\n customParameters,\n {\n callParameters,\n enableImprovedSignalingErrorPrecision:\n !!this._options.enableImprovedSignalingErrorPrecision,\n offerSdp: payload.sdp,\n reconnectToken: payload.reconnect,\n voiceEventSidGenerator: this._options.voiceEventSidGenerator,\n },\n );\n\n let call;\n try {\n call = await this._makeCallPromise;\n } finally {\n this._makeCallPromise = null;\n }\n\n this._calls.push(call);\n\n call.once('accept', () => {\n this._soundcache.get(Device.SoundName.Incoming).stop();\n this._publishNetworkChange();\n });\n\n const play = (this._audio?.incoming() && !wasBusy)\n ? () => this._soundcache.get(Device.SoundName.Incoming).play()\n : () => Promise.resolve();\n\n this._showIncomingCall(call, play);\n }\n\n /**\n * Called when an 'offline' event is received from the signaling stream.\n */\n private _onSignalingOffline = () => {\n this._log.info('Stream is offline');\n\n this._edge = null;\n this._region = null;\n\n this._shouldReRegister = this.state !== Device.State.Unregistered;\n\n this._setState(Device.State.Unregistered);\n }\n\n /**\n * Called when a 'ready' event is received from the signaling stream.\n */\n private _onSignalingReady = () => {\n this._log.info('Stream is ready');\n\n this._setState(Device.State.Registered);\n }\n\n /**\n * Publish a NetworkInformation#change event to Insights if there's an active {@link Call}.\n */\n private _publishNetworkChange = () => {\n if (!this._activeCall) {\n return;\n }\n\n if (this._networkInformation) {\n this._publisher.info('network-information', 'network-change', {\n connection_type: this._networkInformation.type,\n downlink: this._networkInformation.downlink,\n downlinkMax: this._networkInformation.downlinkMax,\n effective_type: this._networkInformation.effectiveType,\n rtt: this._networkInformation.rtt,\n }, this._activeCall);\n }\n }\n\n /**\n * Remove a {@link Call} from device.calls by reference\n * @param call\n */\n private _removeCall(call: Call): void {\n if (this._activeCall === call) {\n this._activeCall = null;\n this._makeCallPromise = null;\n }\n\n for (let i = this._calls.length - 1; i >= 0; i--) {\n if (call === this._calls[i]) {\n this._calls.splice(i, 1);\n }\n }\n }\n\n /**\n * Register with the signaling server.\n */\n private async _sendPresence(presence: boolean): Promise<void> {\n const stream = await this._streamConnectedPromise;\n\n if (!stream) { return; }\n\n stream.register({ audio: presence });\n if (presence) {\n this._startRegistrationTimer();\n } else {\n this._stopRegistrationTimer();\n }\n }\n\n /**\n * Helper function that sets and emits the state of the device.\n * @param state The new state of the device.\n */\n private _setState(state: Device.State): void {\n if (state === this.state) {\n return;\n }\n\n this._state = state;\n const name = this._stateEventMapping[state];\n this._log.debug(`#${name}`);\n this.emit(name);\n }\n\n /**\n * Set up an audio helper for usage by this {@link Device}.\n */\n private _setupAudioHelper(): void {\n if (!this._audioProcessorEventObserver) {\n this._audioProcessorEventObserver = new AudioProcessorEventObserver();\n this._audioProcessorEventObserver.on('event', ({ name, group, isRemote }) => {\n this._publisher.info(group, name, { is_remote: isRemote }, this._activeCall);\n });\n }\n\n const audioOptions: AudioHelper.Options = {\n audioContext: Device.audioContext,\n audioProcessorEventObserver: this._audioProcessorEventObserver,\n beforeSetInputDevice: () => {\n if (this._makeCallPromise) {\n this._log.debug('beforeSetInputDevice pause detected');\n return this._makeCallPromise;\n } else {\n this._log.debug('beforeSetInputDevice pause not detected, setting default');\n return Promise.resolve();\n }\n },\n enumerateDevices: this._options.enumerateDevices,\n getUserMedia: this._options.getUserMedia || getUserMedia,\n };\n\n if (this._audio) {\n this._log.info('Found existing audio helper; updating options...');\n this._audio._updateUserOptions(audioOptions);\n return;\n }\n\n this._audio = new (this._options.AudioHelper || AudioHelper)(\n this._updateSinkIds,\n this._updateInputStream,\n audioOptions,\n );\n\n this._audio.on('deviceChange', (lostActiveDevices: MediaDeviceInfo[]) => {\n const activeCall: Call | null = this._activeCall;\n const deviceIds: string[] = lostActiveDevices.map((device: MediaDeviceInfo) => device.deviceId);\n\n this._publisher.info('audio', 'device-change', {\n lost_active_device_ids: deviceIds,\n }, activeCall);\n\n if (activeCall) {\n activeCall['_mediaHandler']._onInputDevicesChanged();\n }\n });\n }\n\n /**\n * Setup logger's loglevel\n */\n private _setupLoglevel(logLevel?: loglevel.LogLevelDesc): void {\n const level = typeof logLevel === 'number' ||\n typeof logLevel === 'string' ?\n logLevel : loglevel.levels.ERROR;\n\n this._log.setDefaultLevel(level);\n this._log.info('Set logger default level to', level);\n }\n\n /**\n * Create and set a publisher for the {@link Device} to use.\n */\n private _setupPublisher(): IPublisher {\n if (this._publisher) {\n this._log.info('Found existing publisher; destroying...');\n this._destroyPublisher();\n }\n\n const publisherOptions = {\n defaultPayload: this._createDefaultPayload,\n metadata: {\n app_name: this._options.appName,\n app_version: this._options.appVersion,\n },\n } as any;\n\n if (this._options.eventgw) {\n publisherOptions.host = this._options.eventgw;\n }\n\n if (this._home) {\n publisherOptions.host = createEventGatewayURI(this._home);\n }\n\n this._publisher = new (this._options.Publisher || Publisher)(PUBLISHER_PRODUCT_NAME, this.token, publisherOptions);\n\n if (this._options.publishEvents === false) {\n this._publisher.disable();\n } else {\n this._publisher.on('error', (error: Error) => {\n this._log.warn('Cannot connect to insights.', error);\n });\n }\n\n return this._publisher;\n }\n\n /**\n * Set up the connection to the signaling server. Tears down an existing\n * stream if called while a stream exists.\n */\n private _setupStream(): Promise<IPStream> {\n if (this._stream) {\n this._log.info('Found existing stream; destroying...');\n this._destroyStream();\n }\n\n this._log.info('Setting up VSP');\n this._stream = new (this._options.PStream || PStream)(\n this.token,\n this._chunderURIs,\n {\n backoffMaxMs: this._options.backoffMaxMs,\n maxPreferredDurationMs: this._options.maxCallSignalingTimeoutMs,\n },\n );\n\n this._stream.addListener('close', this._onSignalingClose);\n this._stream.addListener('connected', this._onSignalingConnected);\n this._stream.addListener('error', this._onSignalingError);\n this._stream.addListener('invite', this._onSignalingInvite);\n this._stream.addListener('offline', this._onSignalingOffline);\n this._stream.addListener('ready', this._onSignalingReady);\n\n return this._streamConnectedPromise =\n promisifyEvents(this._stream, 'connected', 'close').then(() => this._stream);\n }\n\n /**\n * Start playing the incoming ringtone, and subsequently emit the incoming event.\n * @param call\n * @param play - The function to be used to play the sound. Must return a Promise.\n */\n private _showIncomingCall(call: Call, play: Function): Promise<void> {\n let timeout: NodeJS.Timeout;\n return Promise.race([\n play(),\n new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n const msg = 'Playing incoming ringtone took too long; it might not play. Continuing execution...';\n reject(new Error(msg));\n }, RINGTONE_PLAY_TIMEOUT);\n }),\n ]).catch(reason => {\n this._log.warn(reason.message);\n }).then(() => {\n clearTimeout(timeout);\n this._log.debug('#incoming', JSON.stringify({\n customParameters: call.customParameters,\n parameters: call.parameters,\n }));\n this.emit(Device.EventName.Incoming, call);\n });\n }\n\n /**\n * Set a timeout to send another register message to the signaling server.\n */\n private _startRegistrationTimer(): void {\n this._stopRegistrationTimer();\n this._regTimer = setTimeout(() => {\n this._sendPresence(true);\n }, REGISTRATION_INTERVAL);\n }\n\n /**\n * Stop sending registration messages to the signaling server.\n */\n private _stopRegistrationTimer(): void {\n if (this._regTimer) {\n clearTimeout(this._regTimer);\n }\n }\n\n /**\n * Throw an error if the {@link Device} is destroyed.\n */\n private _throwIfDestroyed(): void {\n if (this.state === Device.State.Destroyed) {\n throw new InvalidStateError('Device has been destroyed.');\n }\n }\n\n /**\n * Update the input stream being used for calls so that any current call and all future calls\n * will use the new input stream.\n * @param inputStream\n */\n private _updateInputStream = (inputStream: MediaStream | null): Promise<void> => {\n const call: Call | null = this._activeCall;\n\n if (call && !inputStream) {\n return Promise.reject(new InvalidStateError('Cannot unset input device while a call is in progress.'));\n }\n\n this._callInputStream = inputStream;\n return call\n ? call._setInputTracksFromStream(inputStream)\n : Promise.resolve();\n }\n\n /**\n * Update the device IDs of output devices being used to play the incoming ringtone through.\n * @param sinkIds - An array of device IDs\n */\n private _updateRingtoneSinkIds(sinkIds: string[]): Promise<void> {\n return Promise.resolve(this._soundcache.get(Device.SoundName.Incoming).setSinkIds(sinkIds));\n }\n\n /**\n * Update the device IDs of output devices being used to play sounds through.\n * @param type - Whether to update ringtone or speaker sounds\n * @param sinkIds - An array of device IDs\n */\n private _updateSinkIds = (type: 'ringtone' | 'speaker', sinkIds: string[]): Promise<void> => {\n const promise: Promise<void> = type === 'ringtone'\n ? this._updateRingtoneSinkIds(sinkIds)\n : this._updateSpeakerSinkIds(sinkIds);\n\n return promise.then(() => {\n this._publisher.info('audio', `${type}-devices-set`, {\n audio_device_ids: sinkIds,\n }, this._activeCall);\n }, error => {\n this._publisher.error('audio', `${type}-devices-set-failed`, {\n audio_device_ids: sinkIds,\n message: error.message,\n }, this._activeCall);\n\n throw error;\n });\n }\n\n /**\n * Update the device IDs of output devices being used to play the non-ringtone sounds\n * and Call audio through.\n * @param sinkIds - An array of device IDs\n */\n private _updateSpeakerSinkIds(sinkIds: string[]): Promise<void> {\n Array.from(this._soundcache.entries())\n .filter(entry => entry[0] !== Device.SoundName.Incoming)\n .forEach(entry => entry[1].setSinkIds(sinkIds));\n\n this._callSinkIds = sinkIds;\n const call = this._activeCall;\n return call\n ? call._setSinkIds(sinkIds)\n : Promise.resolve();\n }\n}\n\n/**\n * @mergeModuleWith Device\n */\nnamespace Device {\n /**\n * Emitted when the {@link Device} has been destroyed.\n * @event\n * @example\n * ```ts\n * device.on('destroyed', () => { });\n * ```\n */\n export declare function destroyedEvent(): void;\n\n /**\n * Emitted when the {@link Device} receives an error.\n * @event\n * @param error\n * @example\n * ```ts\n * device.on('error', call => { });\n * ```\n */\n export declare function errorEvent(error: TwilioError, call?: Call): void;\n\n /**\n * Emitted when an incoming {@link Call} is received. You can interact with the call object\n * using its public APIs, or you can forward it to a different {@link Device} using\n * {@link Device.connect} and {@link Call.connectToken}, enabling your application to\n * receive multiple incoming calls for the same identity.\n *\n * **Important:** When forwarding a call, the token for target device instance needs to have\n * the same identity as the token used in the device that originally received the call.\n * The target device instance must also have the same edge as the device that\n * originally received the call.\n *\n * @event\n * @param call - The incoming {@link Call}.\n * @example\n * ```js\n * const receiverDevice = new Device(token, options);\n * await receiverDevice.register();\n *\n * receiverDevice.on('incoming', (call) => {\n * // Forward this call to a new Device instance using the call.connectToken string.\n * forwardCall(call.connectToken, receiverDevice.edge);\n * });\n *\n * // The forwardCall function may look something like the following.\n * async function forwardCall(connectToken, edge) {\n * // For every incoming call, we create a new Device instance which we can\n * // interact with, without affecting other calls.\n * // IMPORTANT: The token for this new device needs to have the same identity\n * // as the token used in the receiverDevice.\n * // The device must also be connected to the same edge as the receiverDevice.\n * const options = { ..., edge };\n * const device = new Device(token, options);\n * const call = await device.connect({ connectToken });\n *\n * // Destroy the device after the call is completed\n * call.on('disconnect', () => device.destroy());\n * }\n * ```\n */\n export declare function incomingEvent(call: Call): void;\n\n /**\n * Emitted when the {@link Device} is unregistered.\n * @event\n * @example\n * ```ts\n * device.on('unregistered', () => { });\n * ```\n */\n export declare function unregisteredEvent(): void;\n\n /**\n * Emitted when the {@link Device} is registering.\n * @event\n * @example\n * ```ts\n * device.on('registering', () => { });\n * ```\n */\n export declare function registeringEvent(): void;\n\n /**\n * Emitted when the {@link Device} is registered.\n * @event\n * @example\n * ```ts\n * device.on('registered', () => { });\n * ```\n */\n export declare function registeredEvent(): void;\n\n /**\n * Emitted when the {@link Device}'s token is about to expire. Use DeviceOptions.refreshTokenMs\n * to set a custom warning time. Default is 10000 (10 seconds) prior to the token expiring.\n * @event\n * @param device\n * @example\n * ```ts\n * device.on('tokenWillExpire', device => {\n * const token = getNewTokenViaAjax();\n * device.updateToken(token);\n * });\n * ```\n */\n export declare function tokenWillExpireEvent(device: Device): void;\n\n /**\n * All valid {@link Device} event names.\n */\n export enum EventName {\n Error = 'error',\n Incoming = 'incoming',\n Destroyed = 'destroyed',\n Unregistered = 'unregistered',\n Registering = 'registering',\n Registered = 'registered',\n TokenWillExpire = 'tokenWillExpire',\n }\n\n /**\n * All possible {@link Device} states.\n */\n export enum State {\n Destroyed = 'destroyed',\n Unregistered = 'unregistered',\n Registering = 'registering',\n Registered = 'registered',\n }\n\n /**\n * Names of all sounds handled by the {@link Device}.\n */\n export enum SoundName {\n Incoming = 'incoming',\n Outgoing = 'outgoing',\n Disconnect = 'disconnect',\n Dtmf0 = 'dtmf0',\n Dtmf1 = 'dtmf1',\n Dtmf2 = 'dtmf2',\n Dtmf3 = 'dtmf3',\n Dtmf4 = 'dtmf4',\n Dtmf5 = 'dtmf5',\n Dtmf6 = 'dtmf6',\n Dtmf7 = 'dtmf7',\n Dtmf8 = 'dtmf8',\n Dtmf9 = 'dtmf9',\n DtmfS = 'dtmfs',\n DtmfH = 'dtmfh',\n }\n\n /**\n * Names of all togglable sounds.\n */\n export type ToggleableSound = Device.SoundName.Incoming | Device.SoundName.Outgoing | Device.SoundName.Disconnect;\n\n /**\n * Options to be passed to {@link Device.connect}.\n */\n export interface ConnectOptions extends Call.AcceptOptions {\n /**\n * The {@link Call.connectToken} to use to manually reconnect to an existing call.\n * A call can be manually reconnected if it was previously received (incoming)\n * or created (outgoing) from a {@link Device} instance.\n * A call is considered manually reconnected if it was created using the {@link Call.connectToken}.\n * It will always have a {@link Call.direction} property set to {@link Call.CallDirection.Outgoing}.\n *\n * **Warning: Only unanswered incoming calls can be manually reconnected at this time.**\n * **Invoking this method to an already answered call may introduce unexpected behavior.**\n *\n * See {@link Device.incomingEvent} for an example.\n */\n connectToken?: string;\n\n /**\n * A flat object containing key:value pairs to be sent to the TwiML app.\n */\n params?: Record<string, string>;\n }\n\n /**\n * Options that may be passed to the {@link Device} constructor, or Device.setup via public API\n */\n export interface Options {\n /**\n * Whether the Device should raise the {@link incomingEvent} event when a new call invite is\n * received while already on an active call. Default behavior is false.\n */\n allowIncomingWhileBusy?: boolean;\n\n /**\n * A name for the application that is instantiating the {@link Device}. This is used to improve logging\n * in Insights by associating Insights data with a specific application, particularly in the case where\n * one account may be connected to by multiple applications.\n */\n appName?: string;\n\n /**\n * A version for the application that is instantiating the {@link Device}. This is used to improve logging\n * in Insights by associating Insights data with a specific version of the given application. This can help\n * track down when application-level bugs were introduced.\n */\n appVersion?: string;\n\n /**\n * Whether to enable close protection, to prevent users from accidentally\n * navigating away from the page during a call. If string, the value will\n * be used as a custom message.\n */\n closeProtection?: boolean | string;\n\n /**\n * An ordered array of codec names, from most to least preferred.\n */\n codecPreferences?: Call.Codec[];\n\n /**\n * Whether AudioContext sounds should be disabled. Useful for trouble shooting sound issues\n * that may be caused by AudioContext-specific sounds. If set to true, will fall back to\n * HTMLAudioElement sounds.\n */\n disableAudioContextSounds?: boolean;\n\n /**\n * Whether to use googDscp in RTC constraints.\n */\n dscp?: boolean;\n\n /**\n * The edge value corresponds to the geographic location that the client\n * will use to connect to Twilio infrastructure. The default value is\n * \"roaming\" which automatically selects an edge based on the latency of the\n * client relative to available edges.\n */\n edge?: string[] | string;\n\n /**\n * Enhance the precision of errors emitted by `Device` and `Call` objects.\n *\n * The default value of this option is `false`.\n *\n * When this flag is enabled, some errors that would have been described\n * with a generic error code, namely `53000` and `31005`, are now described\n * with a more precise error code. With this feature, the following errors\n * now have their own error codes. Please see this\n * [page](https://www.twilio.com/docs/api/errors) for more details about\n * each error.\n *\n * - Device Error Changes\n *\n * @example\n * ```ts\n * const device = new Device(token, {\n * enableImprovedSignalingErrorPrecision: true,\n * });\n * device.on('error', (deviceError) => {\n * // the following table describes how deviceError will change with this feature flag\n * });\n * ```\n *\n * | Device Error Name | Device Error Code with Feature Flag Enabled | Device Error Code with Feature Flag Disabled |\n * | --- | --- | --- |\n * | `GeneralErrors.ApplicationNotFoundError` | `31001` | `53000` |\n * | `GeneralErrors.ConnectionDeclinedError` | `31002` | `53000` |\n * | `GeneralErrors.ConnectionTimeoutError` | `31003` | `53000` |\n * | `MalformedRequestErrors.MissingParameterArrayError` | `31101` | `53000` |\n * | `MalformedRequestErrors.AuthorizationTokenMissingError` | `31102` | `53000` |\n * | `MalformedRequestErrors.MaxParameterLengthExceededError` | `31103` | `53000` |\n * | `MalformedRequestErrors.InvalidBridgeTokenError` | `31104` | `53000` |\n * | `MalformedRequestErrors.InvalidClientNameError` | `31105` | `53000` |\n * | `MalformedRequestErrors.ReconnectParameterInvalidError` | `31107` | `53000` |\n * | `SignatureValidationErrors.AccessTokenSignatureValidationFailed` | `31202` | `53000` |\n * | `AuthorizationErrors.NoValidAccountError` | `31203` | `53000` |\n * | `AuthorizationErrors.JWTTokenExpirationTooLongError` | `31207` | `53000` |\n * | `ClientErrors.NotFound` | `31404` | `53000` |\n * | `ClientErrors.TemporarilyUnavilable` | `31480` | `53000` |\n * | `ClientErrors.BusyHere` | `31486` | `53000` |\n * | `SIPServerErrors.Decline` | `31603` | `53000` |\n *\n * - Call Error Changes\n *\n * @example\n * ```ts\n * const device = new Device(token, {\n * enableImprovedSignalingErrorPrecision: true,\n * });\n * const call = device.connect(...);\n * call.on('error', (callError) => {\n * // the following table describes how callError will change with this feature flag\n * });\n * ```\n *\n * | Call Error Name | Call Error Code with Feature Flag Enabled | Call Error Code with Feature Flag Disabled |\n * | --- | --- | --- |\n * | `GeneralErrors.ConnectionDeclinedError` | `31002` | `31005` |\n * | `AuthorizationErrors.InvalidJWTTokenError` | `31204` | `31005` |\n * | `AuthorizationErrors.JWTTokenExpiredError` | `31205` | `31005` |\n *\n */\n enableImprovedSignalingErrorPrecision?: boolean;\n\n /**\n * Overrides the native MediaDevices.enumerateDevices API.\n */\n enumerateDevices?: any;\n\n /**\n * Experimental feature.\n * Whether to use ICE Aggressive nomination.\n */\n forceAggressiveIceNomination?: boolean;\n\n /**\n * Overrides the native MediaDevices.getUserMedia API.\n */\n getUserMedia?: any;\n\n /**\n * Sets the log level.\n *\n * Possible values include any of the following numbers:\n * <br/>0 = trace, 1 = debug, 2 = info, 3 = warn, 4 = error, 5 = silent\n *\n * Or any of the following strings:\n * <br/>'trace', 'debug', 'info', 'warn', 'error', 'silent'\n * <br/>'TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'SILENT'\n */\n logLevel?: loglevel.LogLevelDesc;\n\n /**\n * The maximum average audio bitrate to use, in bits per second (bps) based on\n * [RFC-7587 7.1](https://tools.ietf.org/html/rfc7587#section-7.1). By default, the setting\n * is not used. If you specify 0, then the setting is not used. Any positive integer is allowed,\n * but values outside the range 6000 to 510000 are ignored and treated as 0. The recommended\n * bitrate for speech is between 8000 and 40000 bps as noted in\n * [RFC-7587 3.1.1](https://tools.ietf.org/html/rfc7587#section-3.1.1).\n */\n maxAverageBitrate?: number;\n\n /**\n * The maximum duration to attempt to reconnect to a preferred URI.\n * This is used by signaling reconnection in that during the existence of\n * any call, edge-fallback is disabled until this length of time has\n * elapsed.\n *\n * Using a value of 30000 as an example: while a call exists, the Device\n * will attempt to reconnect to the edge that the call was established on\n * for approximately 30 seconds. After the next failure to connect, the\n * Device will use edge-fallback.\n *\n * This feature is opt-in, and will not work until a number greater than 0\n * is explicitly specified within the Device options.\n *\n * Read more about edge fallback and signaling reconnection on the\n * [Edge Locations page](https://www.twilio.com/docs/voice/sdks/javascript/edges#edge-fallback-and-signaling-reconnection).\n *\n * **Note:** Setting this option to a value greater than zero means Twilio will not terminate the\n * call until the timeout has expired. Please take this into consideration if your application\n * contains webhooks that relies on [call status callbacks](https://www.twilio.com/docs/voice/twiml#callstatus-values).\n */\n maxCallSignalingTimeoutMs?: number;\n\n /**\n * Overrides the native MediaStream class.\n */\n MediaStream?: any;\n\n /**\n * Overrides the native RTCPeerConnection class.\n *\n * By default, the SDK will only use the `unified-plan` SDP format.\n * Unexpected behavior may happen if the `RTCPeerConnection` parameter uses an SDP format\n * that is different than what the SDK uses.\n *\n * For example, if the browser only supports `unified-plan` and the `RTCPeerConnection`\n * parameter uses `plan-b` by default, the SDK will use `unified-plan`\n * which will cause conflicts with the usage of the `RTCPeerConnection`.\n *\n * In order to avoid this issue, you need to explicitly set the SDP format that you want\n * the SDK to use with the `RTCPeerConnection` via [[Device.ConnectOptions.rtcConfiguration]] for outgoing calls.\n * Or [[Call.AcceptOptions.rtcConfiguration]] for incoming calls.\n *\n * See the example below. Assuming the `RTCPeerConnection` you provided uses `plan-b` by default, the following\n * code sets the SDP format to `unified-plan` instead.\n *\n * ```ts\n * // Outgoing calls\n * const call = await device.connect({\n * rtcConfiguration: {\n * sdpSemantics: 'unified-plan'\n * }\n * // Other options\n * });\n *\n * // Incoming calls\n * device.on('incoming', call => {\n * call.accept({\n * rtcConfiguration: {\n * sdpSemantics: 'unified-plan'\n * }\n * // Other options\n * });\n * });\n * ```\n */\n RTCPeerConnection?: any;\n\n /**\n * A mapping of custom sound URLs by sound name.\n */\n sounds?: Partial<Record<Device.SoundName, string>>;\n\n /**\n * Number of milliseconds fewer than the token's TTL to emit the tokenWillExpire event.\n * Default is 10000 (10 seconds).\n */\n tokenRefreshMs?: number;\n }\n}\n\nexport default Device;\n","// @ts-nocheck\nimport PeerConnection from './peerconnection';\nimport RTCPC from './rtcpc';\n\nfunction enabled() {\n return RTCPC.test();\n}\n\nfunction getMediaEngine() {\n return typeof RTCIceGatherer !== 'undefined' ? 'ORTC' : 'WebRTC';\n}\n\nexport {\n enabled,\n getMediaEngine,\n PeerConnection,\n};\n","/**\n * Payload object we send to insights\n * @private\n */\ninterface RTCIceCandidatePayload {\n candidate_type: string;\n // Deprecated by newer browsers. Will likely not show on most recent versions of browsers.\n deleted: boolean;\n ip: string;\n is_remote: boolean;\n 'network-cost': number | undefined;\n port: number;\n priority: number;\n protocol: string;\n related_address: string;\n related_port: number;\n tcp_type: string;\n transport_id: string;\n}\n\n/**\n * Represents an ICE candidate coming from the browser\n * https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate\n * @private\n */\nexport type RTCIceCandidate = any;\n\n/**\n * {@link RTCIceCandidate} parses an ICE candidate gathered by the browser\n * and returns a IceCandidate object\n */\nexport class IceCandidate {\n /**\n * Candidate's type\n * https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateType\n */\n private candidateType: string;\n\n /**\n * Whether this is deleted from the list of candidate gathered\n */\n private deleted: boolean = false;\n\n /**\n * Candidate's IP address\n */\n private ip: string;\n\n /**\n * Whether this is a remote candidate\n */\n private isRemote: boolean;\n\n /**\n * A number from 0 to 999 indicating the cost of network\n * where larger values indicate a stronger preference for not using that network\n */\n private networkCost: number | undefined;\n\n /**\n * Candidate's port number\n */\n private port: number;\n\n /**\n * A number indicating candidate's priority\n */\n private priority: number;\n\n /**\n * Candidate's protocol - udp or tcp\n */\n private protocol: string;\n\n /**\n * The host candidate's IP address if the candidate is derived from another candidate,\n */\n private relatedAddress: string;\n\n /**\n * The port number of the candidate from which this\n * candidate is derived, such as a relay or reflexive candidate.\n */\n private relatedPort: number;\n\n /**\n * Represents the type of TCP candidate.\n */\n private tcpType: string;\n\n /**\n * Also known as sdpMid, specifying the candidate's media stream identification tag which uniquely\n * identifies the media stream within the component with which the candidate is associated\n */\n private transportId: string;\n\n /**\n * @constructor\n * @param iceCandidate RTCIceCandidate coming from the browser\n */\n constructor(iceCandidate: RTCIceCandidate, isRemote: boolean = false) {\n let cost;\n const parts = iceCandidate.candidate.split('network-cost ');\n\n if (parts[1]) {\n cost = parseInt(parts[1], 10);\n }\n\n this.candidateType = iceCandidate.type;\n this.ip = iceCandidate.ip || iceCandidate.address;\n this.isRemote = isRemote;\n this.networkCost = cost;\n this.port = iceCandidate.port;\n this.priority = iceCandidate.priority;\n this.protocol = iceCandidate.protocol;\n this.relatedAddress = iceCandidate.relatedAddress;\n this.relatedPort = iceCandidate.relatedPort;\n this.tcpType = iceCandidate.tcpType;\n this.transportId = iceCandidate.sdpMid;\n }\n\n /**\n * Get the payload object for insights\n */\n toPayload(): RTCIceCandidatePayload {\n return {\n 'candidate_type': this.candidateType,\n 'deleted': this.deleted,\n 'ip': this.ip,\n 'is_remote': this.isRemote,\n 'network-cost': this.networkCost,\n 'port': this.port,\n 'priority': this.priority,\n 'protocol': this.protocol,\n 'related_address': this.relatedAddress,\n 'related_port': this.relatedPort,\n 'tcp_type': this.tcpType,\n 'transport_id': this.transportId,\n };\n }\n}\n","const r0 = 94.768; // Constant used in computing \"rFactor\".\n\n/**\n * Calculate the mos score of a stats object\n * @param {number} rtt\n * @param {number} jitter\n * @param {number} fractionLost - The fraction of packets that have been lost.\n * Calculated by packetsLost / totalPackets\n * @return {number | null} mos - Calculated MOS, `1.0` through roughly `4.5`.\n * Returns `null` when any of the input parameters are not a `non-negative`\n * number.\n */\nexport function calculate(\n rtt: any,\n jitter: any,\n fractionLost: any,\n): number | null {\n if (\n typeof rtt !== 'number' ||\n typeof jitter !== 'number' ||\n typeof fractionLost !== 'number' ||\n !isNonNegativeNumber(rtt) ||\n !isNonNegativeNumber(jitter) ||\n !isNonNegativeNumber(fractionLost)\n ) {\n return null;\n }\n\n // Compute the effective latency.\n const effectiveLatency: number = rtt + (jitter * 2) + 10;\n\n // Compute the initial \"rFactor\" from effective latency.\n let rFactor: number = 0;\n switch (true) {\n case effectiveLatency < 160:\n rFactor = r0 - (effectiveLatency / 40);\n break;\n case effectiveLatency < 1000:\n rFactor = r0 - ((effectiveLatency - 120) / 10);\n break;\n }\n\n // Adjust \"rFactor\" with the fraction of packets lost.\n switch (true) {\n case fractionLost <= (rFactor / 2.5):\n rFactor = Math.max(rFactor - fractionLost * 2.5, 6.52);\n break;\n default:\n rFactor = 0;\n break;\n }\n\n // Compute MOS from \"rFactor\".\n const mos: number = 1 +\n (0.035 * rFactor) +\n (0.000007 * rFactor) *\n (rFactor - 60) *\n (100 - rFactor);\n\n return mos;\n}\n\n/**\n * Returns true if and only if the parameter passed is a number, is not `NaN`,\n * is finite, and is greater than or equal to `0`.\n * @param n\n */\nexport function isNonNegativeNumber(n: any): boolean {\n return typeof n === 'number' && !isNaN(n) && isFinite(n) && n >= 0;\n}\n\nexport default {\n calculate,\n isNonNegativeNumber,\n};\n","import { EventEmitter } from 'events';\nimport { InvalidArgumentError } from './errors';\nimport Mos from './rtc/mos';\nimport RTCSample from './rtc/sample';\nimport { getRTCStats } from './rtc/stats';\nimport RTCWarning from './rtc/warning';\nimport { average } from './util';\n\n// How many samples we use when testing metric thresholds\nconst SAMPLE_COUNT_METRICS = 5;\n\n// How many samples that need to cross the threshold to\n// raise or clear a warning.\nconst SAMPLE_COUNT_CLEAR = 0;\nconst SAMPLE_COUNT_RAISE = 3;\n\nconst SAMPLE_INTERVAL = 1000;\nconst WARNING_TIMEOUT = 5 * 1000;\n\nconst DEFAULT_THRESHOLDS: StatsMonitor.ThresholdOptions = {\n audioInputLevel: { minStandardDeviation: 327.67, sampleCount: 10 },\n audioOutputLevel: { minStandardDeviation: 327.67, sampleCount: 10 },\n bytesReceived: { clearCount: 2, min: 1, raiseCount: 3, sampleCount: 3 },\n bytesSent: { clearCount: 2, min: 1, raiseCount: 3, sampleCount: 3 },\n jitter: { max: 30 },\n mos: { min: 3 },\n packetsLostFraction: [{\n max: 1,\n }, {\n clearValue: 1,\n maxAverage: 3,\n sampleCount: 7,\n }],\n rtt: { max: 400 },\n};\n\n// Placeholders until we convert the respective files to TypeScript.\n/**\n * @private\n */\nexport type IPeerConnection = any;\n\n/**\n * @private\n */\nexport type IRTCStats = any;\n\n/**\n * @private\n */\nexport type IMos = typeof Mos;\n\n/**\n * Count the number of values that cross the max threshold.\n * @private\n * @param max - The max allowable value.\n * @param values - The values to iterate over.\n * @returns The amount of values in which the stat crossed the threshold.\n */\nfunction countHigh(max: number, values: number[]): number {\n return values.reduce((highCount, value) => highCount += (value > max) ? 1 : 0, 0);\n}\n\n/**\n * Count the number of values that cross the min threshold.\n * @private\n * @param min - The minimum allowable value.\n * @param values - The values to iterate over.\n * @returns The amount of values in which the stat crossed the threshold.\n */\nfunction countLow(min: number, values: number[]): number {\n return values.reduce((lowCount, value) => lowCount += (value < min) ? 1 : 0, 0);\n}\n\n/**\n * Calculate the standard deviation from a list of numbers.\n * @private\n * @param values The list of numbers to calculate the standard deviation from.\n * @returns The standard deviation of a list of numbers.\n */\nfunction calculateStandardDeviation(values: number[]): number | null {\n if (values.length <= 0) {\n return null;\n }\n\n const valueAverage: number = values.reduce(\n (partialSum: number, value: number) => partialSum + value,\n 0,\n ) / values.length;\n\n const diffSquared: number[] = values.map(\n (value: number) => Math.pow(value - valueAverage, 2),\n );\n\n const stdDev: number = Math.sqrt(diffSquared.reduce(\n (partialSum: number, value: number) => partialSum + value,\n 0,\n ) / diffSquared.length);\n\n return stdDev;\n}\n\n/**\n * Flatten a set of numerical sample sets into a single array of samples.\n * @param sampleSets\n */\nfunction flattenSamples(sampleSets: number[][]): number[] {\n return sampleSets.reduce(\n (flat: number[], current: number[]) => [...flat, ...current],\n [],\n );\n}\n\n/**\n * {@link StatsMonitor} polls a peerConnection via PeerConnection.getStats\n * and emits warnings when stats cross the specified threshold values.\n */\nclass StatsMonitor extends EventEmitter {\n /**\n * A map of warnings with their raised time\n */\n private _activeWarnings: Map<string, StatsMonitor.WarningTimestamp> = new Map();\n\n /**\n * A map of stats with the number of exceeded thresholds\n */\n private _currentStreaks: Map<string, number> = new Map();\n\n /**\n * Method to get stats from a PeerConnection object. Overrides getRTCStats library\n */\n private _getRTCStats: (peerConnection: IPeerConnection, options?: any) => IRTCStats;\n\n /**\n * Keeps track of input volumes in the last second\n */\n private _inputVolumes: number[] = [];\n\n /**\n * How many samples we use when testing metric thresholds.\n */\n private _maxSampleCount: number;\n\n /**\n * For calculating Mos. Overrides Mos library\n */\n private _mos: IMos;\n\n /**\n * Keeps track of output volumes in the last second\n */\n private _outputVolumes: number[] = [];\n\n /**\n * The PeerConnection to monitor.\n */\n private _peerConnection: IPeerConnection;\n\n /**\n * Sample buffer. Saves most recent samples\n */\n private _sampleBuffer: RTCSample[] = [];\n\n /**\n * The setInterval id for fetching samples.\n */\n private _sampleInterval?: NodeJS.Timeout;\n\n /**\n * Keeps track of supplemental sample values.\n *\n * Currently used for constant audio detection. Contains an array of volume\n * samples for each sample interval.\n */\n private _supplementalSampleBuffers: Record<string, number[][]> = {\n audioInputLevel: [],\n audioOutputLevel: [],\n };\n\n /**\n * Threshold values for {@link StatsMonitor}\n */\n private _thresholds: StatsMonitor.ThresholdOptions;\n\n /**\n * Whether warnings should be enabled\n */\n private _warningsEnabled: boolean = true;\n\n /**\n * @constructor\n * @param [options] - Optional settings\n */\n constructor(options?: StatsMonitor.Options) {\n super();\n\n options = options || {};\n this._getRTCStats = options.getRTCStats || getRTCStats;\n this._mos = options.Mos || Mos;\n this._peerConnection = options.peerConnection;\n this._thresholds = {...DEFAULT_THRESHOLDS, ...options.thresholds};\n\n const thresholdSampleCounts = Object.values(this._thresholds)\n .map((threshold: StatsMonitor.ThresholdOptions) => threshold.sampleCount)\n .filter((sampleCount: number | undefined) => !!sampleCount);\n\n this._maxSampleCount = Math.max(SAMPLE_COUNT_METRICS, ...thresholdSampleCounts);\n\n if (this._peerConnection) {\n this.enable(this._peerConnection);\n }\n }\n\n /**\n * Called when a volume sample is available\n * @param inputVolume - Input volume level from 0 to 32767\n * @param outputVolume - Output volume level from 0 to 32767\n */\n addVolumes(inputVolume: number, outputVolume: number): void {\n this._inputVolumes.push(inputVolume);\n this._outputVolumes.push(outputVolume);\n }\n\n /**\n * Stop sampling RTC statistics for this {@link StatsMonitor}.\n * @returns The current {@link StatsMonitor}.\n */\n disable(): this {\n if (this._sampleInterval) {\n clearInterval(this._sampleInterval);\n delete this._sampleInterval;\n }\n return this;\n }\n\n /**\n * Disable warnings for this {@link StatsMonitor}.\n * @returns The current {@link StatsMonitor}.\n */\n disableWarnings(): this {\n if (this._warningsEnabled) {\n this._activeWarnings.clear();\n }\n\n this._warningsEnabled = false;\n return this;\n }\n\n /**\n * Start sampling RTC statistics for this {@link StatsMonitor}.\n * @param peerConnection - A PeerConnection to monitor.\n * @returns The current {@link StatsMonitor}.\n */\n enable(peerConnection: IPeerConnection): this {\n if (peerConnection) {\n if (this._peerConnection && peerConnection !== this._peerConnection) {\n throw new InvalidArgumentError('Attempted to replace an existing PeerConnection in StatsMonitor.enable');\n }\n this._peerConnection = peerConnection;\n }\n\n if (!this._peerConnection) {\n throw new InvalidArgumentError('Can not enable StatsMonitor without a PeerConnection');\n }\n\n this._sampleInterval = this._sampleInterval ||\n setInterval(this._fetchSample.bind(this), SAMPLE_INTERVAL);\n\n return this;\n }\n\n /**\n * Enable warnings for this {@link StatsMonitor}.\n * @returns The current {@link StatsMonitor}.\n */\n enableWarnings(): this {\n this._warningsEnabled = true;\n return this;\n }\n\n /**\n * Check if there is an active warning for a specific stat and threshold\n * @param statName - The name of the stat to check\n * @param thresholdName - The name of the threshold to check\n * @returns Whether there is an active warning for a specific stat and threshold\n */\n hasActiveWarning(statName: string, thresholdName: string): boolean {\n const warningId = `${statName}:${thresholdName}`;\n return !!this._activeWarnings.get(warningId);\n }\n\n /**\n * Add a sample to our sample buffer and remove the oldest if we are over the limit.\n * @param sample - Sample to add\n */\n private _addSample(sample: RTCSample): void {\n const samples = this._sampleBuffer;\n samples.push(sample);\n\n // We store 1 extra sample so that we always have (current, previous)\n // available for all {sampleBufferSize} threshold validations.\n if (samples.length > this._maxSampleCount) {\n samples.splice(0, samples.length - this._maxSampleCount);\n }\n }\n\n /**\n * Clear an active warning.\n * @param statName - The name of the stat to clear.\n * @param thresholdName - The name of the threshold to clear\n * @param [data] - Any relevant sample data.\n */\n private _clearWarning(statName: string, thresholdName: string, data?: RTCWarning): void {\n const warningId = `${statName}:${thresholdName}`;\n const activeWarning = this._activeWarnings.get(warningId);\n\n if (!activeWarning || Date.now() - activeWarning.timeRaised < WARNING_TIMEOUT) { return; }\n this._activeWarnings.delete(warningId);\n\n this.emit('warning-cleared', {\n ...data,\n name: statName,\n threshold: {\n name: thresholdName,\n value: this._thresholds[statName][thresholdName],\n },\n });\n }\n\n /**\n * Create a sample object from a stats object using the previous sample, if available.\n * @param stats - Stats retrieved from getStatistics\n * @param [previousSample=null] - The previous sample to use to calculate deltas.\n * @returns A universally-formatted version of RTC stats.\n */\n private _createSample(stats: IRTCStats, previousSample: RTCSample | null): RTCSample {\n const previousBytesSent = previousSample && previousSample.totals.bytesSent || 0;\n const previousBytesReceived = previousSample && previousSample.totals.bytesReceived || 0;\n const previousPacketsSent = previousSample && previousSample.totals.packetsSent || 0;\n const previousPacketsReceived = previousSample && previousSample.totals.packetsReceived || 0;\n const previousPacketsLost = previousSample && previousSample.totals.packetsLost || 0;\n\n const currentBytesSent = stats.bytesSent - previousBytesSent;\n const currentBytesReceived = stats.bytesReceived - previousBytesReceived;\n const currentPacketsSent = stats.packetsSent - previousPacketsSent;\n const currentPacketsReceived = stats.packetsReceived - previousPacketsReceived;\n const currentPacketsLost = stats.packetsLost - previousPacketsLost;\n const currentInboundPackets = currentPacketsReceived + currentPacketsLost;\n const currentPacketsLostFraction = (currentInboundPackets > 0) ?\n (currentPacketsLost / currentInboundPackets) * 100 : 0;\n\n const totalInboundPackets = stats.packetsReceived + stats.packetsLost;\n const totalPacketsLostFraction = (totalInboundPackets > 0) ?\n (stats.packetsLost / totalInboundPackets) * 100 : 100;\n\n const rttValue = (typeof stats.rtt === 'number' || !previousSample) ? stats.rtt : previousSample.rtt;\n\n const audioInputLevelValues = this._inputVolumes.splice(0);\n this._supplementalSampleBuffers.audioInputLevel.push(audioInputLevelValues);\n\n const audioOutputLevelValues = this._outputVolumes.splice(0);\n this._supplementalSampleBuffers.audioOutputLevel.push(audioOutputLevelValues);\n\n return {\n audioInputLevel: Math.round(average(audioInputLevelValues)),\n audioOutputLevel: Math.round(average(audioOutputLevelValues)),\n bytesReceived: currentBytesReceived,\n bytesSent: currentBytesSent,\n codecName: stats.codecName,\n jitter: stats.jitter,\n mos: this._mos.calculate(rttValue, stats.jitter, previousSample && currentPacketsLostFraction),\n packetsLost: currentPacketsLost,\n packetsLostFraction: currentPacketsLostFraction,\n packetsReceived: currentPacketsReceived,\n packetsSent: currentPacketsSent,\n rtt: rttValue,\n timestamp: stats.timestamp,\n totals: {\n bytesReceived: stats.bytesReceived,\n bytesSent: stats.bytesSent,\n packetsLost: stats.packetsLost,\n packetsLostFraction: totalPacketsLostFraction,\n packetsReceived: stats.packetsReceived,\n packetsSent: stats.packetsSent,\n },\n };\n }\n\n /**\n * Get stats from the PeerConnection and add it to our list of samples.\n */\n private _fetchSample(): void {\n this._getSample().then(sample => {\n this._addSample(sample);\n this._raiseWarnings();\n this.emit('sample', sample);\n }).catch(error => {\n this.disable();\n // We only bubble up any errors coming from pc.getStats()\n // No need to attach a twilioError\n this.emit('error', error);\n });\n }\n\n /**\n * Get stats from the PeerConnection.\n * @returns A universally-formatted version of RTC stats.\n */\n private _getSample(): Promise<RTCSample> {\n return this._getRTCStats(this._peerConnection).then((stats: IRTCStats) => {\n let previousSample = null;\n if (this._sampleBuffer.length) {\n previousSample = this._sampleBuffer[this._sampleBuffer.length - 1];\n }\n\n return this._createSample(stats, previousSample);\n });\n }\n\n /**\n * Raise a warning and log its raised time.\n * @param statName - The name of the stat to raise.\n * @param thresholdName - The name of the threshold to raise\n * @param [data] - Any relevant sample data.\n */\n private _raiseWarning(statName: string, thresholdName: string, data?: RTCWarning): void {\n const warningId = `${statName}:${thresholdName}`;\n\n if (this._activeWarnings.has(warningId)) { return; }\n this._activeWarnings.set(warningId, { timeRaised: Date.now() });\n\n const thresholds: StatsMonitor.ThresholdOption | StatsMonitor.ThresholdOption[] =\n this._thresholds[statName];\n\n let thresholdValue;\n\n if (Array.isArray(thresholds)) {\n const foundThreshold = thresholds.find(threshold => thresholdName in threshold);\n if (foundThreshold) {\n thresholdValue = foundThreshold[thresholdName as keyof StatsMonitor.ThresholdOption];\n }\n } else {\n thresholdValue = this._thresholds[statName][thresholdName];\n }\n\n this.emit('warning', {\n ...data,\n name: statName,\n threshold: {\n name: thresholdName,\n value: thresholdValue,\n },\n });\n }\n\n /**\n * Apply our thresholds to our array of RTCStat samples.\n */\n private _raiseWarnings(): void {\n if (!this._warningsEnabled) { return; }\n\n Object.keys(this._thresholds).forEach(name => this._raiseWarningsForStat(name));\n }\n\n /**\n * Apply thresholds for a given stat name to our array of\n * RTCStat samples and raise or clear any associated warnings.\n * @param statName - Name of the stat to compare.\n */\n private _raiseWarningsForStat(statName: string): void {\n const limits: StatsMonitor.ThresholdOptions[] =\n Array.isArray(this._thresholds[statName])\n ? this._thresholds[statName]\n : [this._thresholds[statName]];\n\n limits.forEach((limit: StatsMonitor.ThresholdOptions) => {\n const samples = this._sampleBuffer;\n\n const clearCount = limit.clearCount || SAMPLE_COUNT_CLEAR;\n const raiseCount = limit.raiseCount || SAMPLE_COUNT_RAISE;\n const sampleCount = limit.sampleCount || this._maxSampleCount;\n\n let relevantSamples = samples.slice(-sampleCount);\n const values = relevantSamples.map(sample => sample[statName]);\n\n // (rrowland) If we have a bad or missing value in the set, we don't\n // have enough information to throw or clear a warning. Bail out.\n const containsNull = values.some(value => typeof value === 'undefined' || value === null);\n\n if (containsNull) {\n return;\n }\n\n let count;\n if (typeof limit.max === 'number') {\n count = countHigh(limit.max, values);\n if (count >= raiseCount) {\n this._raiseWarning(statName, 'max', { values, samples: relevantSamples });\n } else if (count <= clearCount) {\n this._clearWarning(statName, 'max', { values, samples: relevantSamples });\n }\n }\n\n if (typeof limit.min === 'number') {\n count = countLow(limit.min, values);\n if (count >= raiseCount) {\n this._raiseWarning(statName, 'min', { values, samples: relevantSamples });\n } else if (count <= clearCount) {\n this._clearWarning(statName, 'min', { values, samples: relevantSamples });\n }\n }\n\n if (typeof limit.maxDuration === 'number' && samples.length > 1) {\n relevantSamples = samples.slice(-2);\n const prevValue = relevantSamples[0][statName];\n const curValue = relevantSamples[1][statName];\n\n const prevStreak = this._currentStreaks.get(statName) || 0;\n const streak = (prevValue === curValue) ? prevStreak + 1 : 0;\n\n this._currentStreaks.set(statName, streak);\n\n if (streak >= limit.maxDuration) {\n this._raiseWarning(statName, 'maxDuration', { value: streak });\n } else if (streak === 0) {\n this._clearWarning(statName, 'maxDuration', { value: prevStreak });\n }\n }\n\n if (typeof limit.minStandardDeviation === 'number') {\n const sampleSets: number[][] = this._supplementalSampleBuffers[statName];\n if (!sampleSets || sampleSets.length < limit.sampleCount) {\n return;\n }\n if (sampleSets.length > limit.sampleCount) {\n sampleSets.splice(0, sampleSets.length - limit.sampleCount);\n }\n const flatSamples: number[] = flattenSamples(sampleSets.slice(-sampleCount));\n const stdDev: number | null = calculateStandardDeviation(flatSamples);\n\n if (typeof stdDev !== 'number') {\n return;\n }\n\n if (stdDev < limit.minStandardDeviation) {\n this._raiseWarning(statName, 'minStandardDeviation', { value: stdDev });\n } else {\n this._clearWarning(statName, 'minStandardDeviation', { value: stdDev });\n }\n }\n\n ([\n ['maxAverage', (x: number, y: number) => x > y],\n ['minAverage', (x: number, y: number) => x < y],\n ] as const).forEach(([thresholdName, comparator]) => {\n if (typeof limit[thresholdName] === 'number' && values.length >= sampleCount) {\n const avg: number = average(values);\n\n if (comparator(avg, limit[thresholdName])) {\n this._raiseWarning(statName, thresholdName, { values, samples: relevantSamples });\n } else if (!comparator(avg, limit.clearValue || limit[thresholdName])) {\n this._clearWarning(statName, thresholdName, { values, samples: relevantSamples });\n }\n }\n });\n });\n }\n}\n\nnamespace StatsMonitor {\n /**\n * Config options to be passed to the {@link StatsMonitor} constructor.\n * @private\n */\n export interface Options {\n /**\n * Method to get stats from a PeerConnection object\n */\n getRTCStats?: (peerConnection: IPeerConnection) => IRTCStats;\n\n /**\n * For calculating Mos. Overrides Mos library\n */\n Mos?: IMos;\n\n /**\n * The PeerConnection to monitor.\n */\n peerConnection?: IPeerConnection;\n\n /**\n * Optional custom threshold values.\n */\n thresholds?: ThresholdOptions;\n }\n\n /**\n * Speficic threshold value for {@link ThresholdOptions}\n * @private\n */\n export interface ThresholdOption {\n /**\n * How many samples that need to cross the threshold to clear a warning.\n * Overrides SAMPLE_COUNT_CLEAR\n */\n clearCount?: number;\n\n /**\n * Used with the `minAverage` and `maxAverage` options. If `maxAverage` is\n * used, then the warning will be cleared when at or below this value. If\n * `minAverage` is used, then the warning will be cleared at or above this\n * value.\n */\n clearValue?: number;\n\n /**\n * Warning will be raised if tracked metric rises above this value.\n */\n max?: number;\n\n /**\n * Warning will be raised based on the average over `sampleCount` samples.\n * The warning is raised if the average is above the `raiseValue` amount and\n * is cleared when below the `clearValue` amount.\n */\n maxAverage?: number;\n\n /**\n * Warning will be raised if tracked metric stays constant for\n * the specified number of consequent samples.\n */\n maxDuration?: number;\n\n /**\n * Warning will be raised if tracked metric falls below this value.\n */\n min?: number;\n\n /**\n * Warning will be raised based on the average over `sampleCount` samples.\n * The warning is raised if the average is below the `raiseValue` amount and\n * is cleared when above the `clearValue` amount.\n */\n minAverage?: number;\n\n /**\n * Warning will be raised if the standard deviation of the tracked metric\n * does not exceed this value.\n */\n minStandardDeviation?: number;\n\n /**\n * How many samples that need to cross the threshold to raise a warning.\n * Overrides SAMPLE_COUNT_RAISE\n */\n raiseCount?: number;\n\n /**\n * How many samples we use when testing metric thresholds.\n * Overrides _maxSampleCount\n */\n sampleCount?: number;\n }\n\n /**\n * Threshold values for {@link StatsMonitor}\n * @private\n */\n export interface ThresholdOptions {\n [key: string]: any;\n\n /**\n * Audio input level between 0 and 32767, representing -100 to -30 dB.\n */\n audioInputLevel?: ThresholdOption;\n\n /**\n * Audio output level between 0 and 32767, representing -100 to -30 dB.\n */\n audioOutputLevel?: ThresholdOption;\n\n /**\n * Rules to apply to sample.jitter\n */\n jitter?: ThresholdOption;\n\n /**\n * Rules to apply to sample.mos\n */\n mos?: ThresholdOption;\n\n /**\n * Rules to apply to sample.packetsLostFraction\n */\n packetsLostFraction?: ThresholdOption[];\n\n /**\n * Rules to apply to sample.rtt\n */\n rtt?: ThresholdOption;\n }\n\n /**\n * Timestamp for raised warnings\n * @private\n */\n export interface WarningTimestamp {\n /**\n * Timestamp in milliseconds\n */\n timeRaised: number;\n }\n}\n\nexport default StatsMonitor;\n","import { EventEmitter } from 'events';\nimport Backoff from './backoff';\nimport Device from './device';\nimport DialtonePlayer from './dialtonePlayer';\nimport {\n GeneralErrors,\n getPreciseSignalingErrorByCode,\n InvalidArgumentError,\n InvalidStateError,\n MediaErrors,\n SignalingErrors,\n TwilioError,\n UserMediaErrors,\n} from './errors';\nimport Log from './log';\nimport { PeerConnection } from './rtc';\nimport { IceCandidate, RTCIceCandidate } from './rtc/icecandidate';\nimport RTCSample from './rtc/sample';\nimport { getPreferredCodecInfo } from './rtc/sdp';\nimport RTCWarning from './rtc/warning';\nimport { generateVoiceEventSid } from './sid';\nimport StatsMonitor from './statsMonitor';\nimport { isChrome } from './util';\n\nimport { RELEASE_VERSION } from './constants';\n\n// Placeholders until we convert the respective files to TypeScript.\nexport type IAudioHelper = any;\nexport type IPStream = any;\nexport type IPeerConnection = any;\nexport type IPublisher = any;\nexport type ISound = any;\n\nconst BACKOFF_CONFIG = {\n factor: 1.1,\n jitter: 0.5,\n max: 30000,\n min: 1,\n};\n\nconst DTMF_INTER_TONE_GAP: number = 70;\nconst DTMF_PAUSE_DURATION: number = 500;\nconst DTMF_TONE_DURATION: number = 160;\n\nconst METRICS_BATCH_SIZE: number = 10;\nconst METRICS_DELAY: number = 5000;\n\nconst MEDIA_DISCONNECT_ERROR = {\n disconnect: true,\n info: {\n code: 31003,\n message: 'Connection with Twilio was interrupted.',\n twilioError: new MediaErrors.ConnectionError(),\n },\n};\n\nconst MULTIPLE_THRESHOLD_WARNING_NAMES: Record<string, Record<string, string>> = {\n // The stat `packetsLostFraction` is monitored by two separate thresholds,\n // `maxAverage` and `max`. Each threshold emits a different warning name.\n packetsLostFraction: {\n max: 'packet-loss',\n maxAverage: 'packets-lost-fraction',\n },\n};\n\nconst WARNING_NAMES: Record<string, string> = {\n audioInputLevel: 'audio-input-level',\n audioOutputLevel: 'audio-output-level',\n bytesReceived: 'bytes-received',\n bytesSent: 'bytes-sent',\n jitter: 'jitter',\n mos: 'mos',\n rtt: 'rtt',\n};\n\nconst WARNING_PREFIXES: Record<string, string> = {\n max: 'high-',\n maxAverage: 'high-',\n maxDuration: 'constant-',\n min: 'low-',\n minStandardDeviation: 'constant-',\n};\n\n/**\n * A {@link Call} represents a media and signaling connection to a TwiML application.\n */\nclass Call extends EventEmitter {\n /**\n * String representation of the {@link Call} class.\n */\n static toString = () => '[Twilio.Call class]';\n\n /**\n * Returns caller verification information about the caller.\n * If no caller verification information is available this will return null.\n */\n readonly callerInfo: Call.CallerInfo | null;\n\n /**\n * The custom parameters sent to (outgoing) or received by (incoming) the TwiML app.\n */\n readonly customParameters: Map<string, string>;\n\n /**\n * Whether this {@link Call} is incoming or outgoing.\n */\n get direction(): Call.CallDirection {\n return this._direction;\n }\n\n /**\n * Audio codec used for this {@link Call}. Expecting {@link Call.Codec} but\n * will copy whatever we get from RTC stats.\n */\n get codec(): string {\n return this._codec;\n }\n\n /**\n * The connect token is available as soon as the call is established\n * and connected to Twilio. Use this token to reconnect to a call via the {@link Device.connect}\n * method.\n *\n * For incoming calls, it is available in the call object after the {@link Device.incomingEvent} is emitted.\n * For outgoing calls, it is available after the {@link Call.acceptEvent} is emitted.\n */\n get connectToken(): string | undefined {\n const signalingReconnectToken = this._signalingReconnectToken;\n const callSid = this.parameters && this.parameters.CallSid ? this.parameters.CallSid : undefined;\n\n if (!signalingReconnectToken || !callSid) {\n return;\n }\n\n const customParameters = this.customParameters && typeof this.customParameters.keys === 'function' ?\n Array.from(this.customParameters.keys()).reduce((result: Record<string, string>, key: string) => {\n result[key] = this.customParameters.get(key)!;\n return result;\n }, {}) : {};\n\n const parameters = this.parameters || {};\n\n return btoa(encodeURIComponent(JSON.stringify({\n customParameters,\n parameters,\n signalingReconnectToken,\n })));\n }\n\n /**\n * The temporary CallSid for this call, if it's outbound.\n */\n readonly outboundConnectionId?: string;\n\n /**\n * Call parameters received from Twilio for an incoming call.\n */\n parameters: Record<string, string> = { };\n\n /**\n * Audio codec used for this {@link Call}. Expecting {@link Call.Codec} but\n * will copy whatever we get from RTC stats.\n */\n private _codec: string;\n\n /**\n * Whether this {@link Call} is incoming or outgoing.\n */\n private readonly _direction: Call.CallDirection;\n\n /**\n * The number of times input volume has been the same consecutively.\n */\n private _inputVolumeStreak: number = 0;\n\n /**\n * Whether the call has been answered.\n */\n private _isAnswered: boolean = false;\n\n /**\n * Whether the call has been cancelled.\n */\n private _isCancelled: boolean = false;\n\n /**\n * Whether the call has been rejected\n */\n private _isRejected: boolean = false;\n\n /**\n * The most recent public input volume value. 0 -> 1 representing -100 to -30 dB.\n */\n private _latestInputVolume: number = 0;\n\n /**\n * The most recent public output volume value. 0 -> 1 representing -100 to -30 dB.\n */\n private _latestOutputVolume: number = 0;\n\n /**\n * An instance of Logger to use.\n */\n private _log: Log = new Log('Call');\n\n /**\n * The MediaHandler (Twilio PeerConnection) this {@link Call} is using for\n * media signaling.\n */\n private _mediaHandler: IPeerConnection;\n\n /**\n * An instance of Backoff for media reconnection\n */\n private _mediaReconnectBackoff: any;\n\n /**\n * Timestamp for the initial media reconnection\n */\n private _mediaReconnectStartTime: number;\n\n /**\n * State of the {@link Call}'s media.\n */\n private _mediaStatus: Call.State = Call.State.Pending;\n\n /**\n * A map of messages sent via sendMessage API using voiceEventSid as the key.\n * The message will be deleted once an 'ack' or an error is received from the server.\n */\n private _messages: Map<string, Call.Message> = new Map();\n\n /**\n * A batch of metrics samples to send to Insights. Gets cleared after\n * each send and appended to on each new sample.\n */\n private readonly _metricsSamples: Call.CallMetrics[] = [];\n\n /**\n * An instance of StatsMonitor.\n */\n private readonly _monitor: StatsMonitor;\n\n /**\n * Method to be run after {@link Call.ignore} is called.\n */\n private _onIgnore: () => void;\n\n /**\n * Options passed to this {@link Call}.\n */\n private _options: Call.Options = {\n MediaHandler: PeerConnection,\n MediaStream: null,\n enableImprovedSignalingErrorPrecision: false,\n offerSdp: null,\n shouldPlayDisconnect: () => true,\n voiceEventSidGenerator: generateVoiceEventSid,\n };\n\n /**\n * The number of times output volume has been the same consecutively.\n */\n private _outputVolumeStreak: number = 0;\n\n /**\n * The PStream instance to use for Twilio call signaling.\n */\n private readonly _pstream: IPStream;\n\n /**\n * An instance of EventPublisher.\n */\n private readonly _publisher: IPublisher;\n\n /**\n * Whether the {@link Call} should send a hangup on disconnect.\n */\n private _shouldSendHangup: boolean = true;\n\n /**\n * The signaling reconnection token used to re-establish a lost signaling connection.\n */\n private _signalingReconnectToken: string | undefined;\n\n /**\n * State of the {@link Call}'s signaling.\n */\n private _signalingStatus: Call.State = Call.State.Pending;\n\n /**\n * A Map of Sounds to play.\n */\n private readonly _soundcache: Map<Device.SoundName, ISound> = new Map();\n\n /**\n * State of the {@link Call}.\n */\n private _status: Call.State = Call.State.Pending;\n\n /**\n * Voice event SID generator, creates a unique voice event SID.\n */\n private _voiceEventSidGenerator: () => string;\n\n /**\n * Whether the {@link Call} has been connected. Used to determine if we are reconnected.\n */\n private _wasConnected: boolean = false;\n\n /**\n * @internal\n * @param config - Mandatory configuration options\n * @param options - Optional settings\n */\n constructor(config: Call.Config, options?: Call.Options) {\n super();\n\n this._soundcache = config.soundcache;\n\n if (typeof config.onIgnore === 'function') {\n this._onIgnore = config.onIgnore;\n }\n\n const message = options && options.twimlParams || { };\n this.customParameters = new Map(\n Object.entries(message).map(([key, val]: [string, any]): [string, string] => [key, String(val)]));\n\n Object.assign(this._options, options);\n\n if (this._options.callParameters) {\n this.parameters = this._options.callParameters;\n }\n\n if (this._options.reconnectToken) {\n this._signalingReconnectToken = this._options.reconnectToken;\n }\n\n this._voiceEventSidGenerator =\n this._options.voiceEventSidGenerator || generateVoiceEventSid;\n\n this._direction = this.parameters.CallSid && !this._options.reconnectCallSid ?\n Call.CallDirection.Incoming : Call.CallDirection.Outgoing;\n\n if (this.parameters) {\n this.callerInfo = this.parameters.StirStatus\n ? { isVerified: this.parameters.StirStatus === 'TN-Validation-Passed-A' }\n : null;\n } else {\n this.callerInfo = null;\n }\n\n this._mediaReconnectBackoff = new Backoff(BACKOFF_CONFIG);\n this._mediaReconnectBackoff.on('ready', () => this._mediaHandler.iceRestart());\n\n // temporary call sid to be used for outgoing calls\n this.outboundConnectionId = generateTempCallSid();\n\n const publisher = this._publisher = config.publisher;\n\n if (this._direction === Call.CallDirection.Incoming) {\n publisher.info('connection', 'incoming', null, this);\n } else {\n publisher.info('connection', 'outgoing', {\n preflight: this._options.preflight,\n reconnect: !!this._options.reconnectCallSid,\n }, this);\n }\n\n const monitor = this._monitor = new (this._options.StatsMonitor || StatsMonitor)();\n monitor.on('sample', this._onRTCSample);\n\n // First 20 seconds or so are choppy, so let's not bother with these warnings.\n monitor.disableWarnings();\n setTimeout(() => monitor.enableWarnings(), METRICS_DELAY);\n\n monitor.on('warning', (data: RTCWarning, wasCleared?: boolean) => {\n if (data.name === 'bytesSent' || data.name === 'bytesReceived') {\n this._onMediaFailure(Call.MediaFailure.LowBytes);\n }\n this._reemitWarning(data, wasCleared);\n });\n monitor.on('warning-cleared', (data: RTCWarning) => {\n this._reemitWarningCleared(data);\n });\n\n this._mediaHandler = new (this._options.MediaHandler)\n (config.audioHelper, config.pstream, {\n MediaStream: this._options.MediaStream,\n RTCPeerConnection: this._options.RTCPeerConnection,\n codecPreferences: this._options.codecPreferences,\n dscp: this._options.dscp,\n forceAggressiveIceNomination: this._options.forceAggressiveIceNomination,\n maxAverageBitrate: this._options.maxAverageBitrate,\n });\n\n this.on('volume', (inputVolume: number, outputVolume: number): void => {\n this._inputVolumeStreak = this._checkVolume(\n inputVolume, this._inputVolumeStreak, this._latestInputVolume, 'input');\n this._outputVolumeStreak = this._checkVolume(\n outputVolume, this._outputVolumeStreak, this._latestOutputVolume, 'output');\n this._latestInputVolume = inputVolume;\n this._latestOutputVolume = outputVolume;\n });\n\n this._mediaHandler.onaudio = (remoteAudio: typeof Audio) => {\n this._log.debug('#audio');\n this.emit('audio', remoteAudio);\n };\n\n this._mediaHandler.onvolume = (inputVolume: number, outputVolume: number,\n internalInputVolume: number, internalOutputVolume: number) => {\n // (rrowland) These values mock the 0 -> 32767 format used by legacy getStats. We should look into\n // migrating to a newer standard, either 0.0 -> linear or -127 to 0 in dB, matching the range\n // chosen below.\n monitor.addVolumes((internalInputVolume / 255) * 32767, (internalOutputVolume / 255) * 32767);\n\n // (rrowland) 0.0 -> 1.0 linear\n this.emit('volume', inputVolume, outputVolume);\n };\n\n this._mediaHandler.ondtlstransportstatechange = (state: string): void => {\n const level = state === 'failed' ? 'error' : 'debug';\n this._publisher.post(level, 'dtls-transport-state', state, null, this);\n };\n\n this._mediaHandler.onpcconnectionstatechange = (state: string): void => {\n let level = 'debug';\n const dtlsTransport = this._mediaHandler.getRTCDtlsTransport();\n\n if (state === 'failed') {\n level = dtlsTransport && dtlsTransport.state === 'failed' ? 'error' : 'warning';\n }\n this._publisher.post(level, 'pc-connection-state', state, null, this);\n };\n\n this._mediaHandler.onicecandidate = (candidate: RTCIceCandidate): void => {\n const payload = new IceCandidate(candidate).toPayload();\n this._publisher.debug('ice-candidate', 'ice-candidate', payload, this);\n };\n\n this._mediaHandler.onselectedcandidatepairchange = (pair: RTCIceCandidatePair): void => {\n const localCandidatePayload = new IceCandidate(pair.local).toPayload();\n const remoteCandidatePayload = new IceCandidate(pair.remote, true).toPayload();\n\n this._publisher.debug('ice-candidate', 'selected-ice-candidate-pair', {\n local_candidate: localCandidatePayload,\n remote_candidate: remoteCandidatePayload,\n }, this);\n };\n\n this._mediaHandler.oniceconnectionstatechange = (state: string): void => {\n const level = state === 'failed' ? 'error' : 'debug';\n this._publisher.post(level, 'ice-connection-state', state, null, this);\n };\n\n this._mediaHandler.onicegatheringfailure = (type: Call.IceGatheringFailureReason): void => {\n this._publisher.warn('ice-gathering-state', type, null, this);\n this._onMediaFailure(Call.MediaFailure.IceGatheringFailed);\n };\n\n this._mediaHandler.onicegatheringstatechange = (state: string): void => {\n this._publisher.debug('ice-gathering-state', state, null, this);\n };\n\n this._mediaHandler.onsignalingstatechange = (state: string): void => {\n this._publisher.debug('signaling-state', state, null, this);\n };\n\n this._mediaHandler.ondisconnected = (msg: string): void => {\n this._log.warn(msg);\n this._publisher.warn('network-quality-warning-raised', 'ice-connectivity-lost', {\n message: msg,\n }, this);\n this._log.debug('#warning', 'ice-connectivity-lost');\n this.emit('warning', 'ice-connectivity-lost');\n\n this._onMediaFailure(Call.MediaFailure.ConnectionDisconnected);\n };\n\n this._mediaHandler.onfailed = (msg: string): void => {\n this._onMediaFailure(Call.MediaFailure.ConnectionFailed);\n };\n\n this._mediaHandler.onconnected = (): void => {\n // First time _mediaHandler is connected, but ICE Gathering issued an ICE restart and succeeded.\n if (this._status === Call.State.Reconnecting) {\n this._onMediaReconnected();\n }\n };\n\n this._mediaHandler.onreconnected = (msg: string): void => {\n this._log.info(msg);\n this._publisher.info('network-quality-warning-cleared', 'ice-connectivity-lost', {\n message: msg,\n }, this);\n this._log.debug('#warning-cleared', 'ice-connectivity-lost');\n this.emit('warning-cleared', 'ice-connectivity-lost');\n this._onMediaReconnected();\n };\n\n this._mediaHandler.onerror = (e: any): void => {\n if (e.disconnect === true) {\n this._disconnect(e.info && e.info.message);\n }\n\n const error = e.info.twilioError || new GeneralErrors.UnknownError(e.info.message);\n this._log.error('Received an error from MediaStream:', e);\n this._log.debug('#error', error);\n this.emit('error', error);\n };\n\n this._mediaHandler.onopen = () => {\n // NOTE(mroberts): While this may have been happening in previous\n // versions of Chrome, since Chrome 45 we have seen the\n // PeerConnection's onsignalingstatechange handler invoked multiple\n // times in the same signalingState 'stable'. When this happens, we\n // invoke this onopen function. If we invoke it twice without checking\n // for _status 'open', we'd accidentally close the PeerConnection.\n //\n // See <https://code.google.com/p/webrtc/issues/detail?id=4996>.\n if (this._status === Call.State.Open || this._status === Call.State.Reconnecting) {\n return;\n } else if (this._status === Call.State.Ringing || this._status === Call.State.Connecting) {\n this.mute(this._mediaHandler.isMuted);\n this._mediaStatus = Call.State.Open;\n this._maybeTransitionToOpen();\n } else {\n // call was probably canceled sometime before this\n this._mediaHandler.close();\n }\n };\n\n this._mediaHandler.onclose = () => {\n this._status = Call.State.Closed;\n if (this._options.shouldPlayDisconnect && this._options.shouldPlayDisconnect()\n // Don't play disconnect sound if this was from a cancel event. i.e. the call\n // was ignored or hung up even before it was answered.\n // Similarly, don't play disconnect sound if the call was rejected.\n && !this._isCancelled && !this._isRejected) {\n\n this._soundcache.get(Device.SoundName.Disconnect).play();\n }\n\n monitor.disable();\n this._publishMetrics();\n\n if (!this._isCancelled && !this._isRejected) {\n // tslint:disable no-console\n this._log.debug('#disconnect');\n this.emit('disconnect', this);\n }\n };\n\n this._pstream = config.pstream;\n this._pstream.on('ack', this._onAck);\n this._pstream.on('cancel', this._onCancel);\n this._pstream.on('error', this._onSignalingError);\n this._pstream.on('ringing', this._onRinging);\n this._pstream.on('transportClose', this._onTransportClose);\n this._pstream.on('connected', this._onConnected);\n this._pstream.on('message', this._onMessageReceived);\n\n this.on('error', error => {\n this._publisher.error('connection', 'error', {\n code: error.code, message: error.message,\n }, this);\n\n if (this._pstream && this._pstream.status === 'disconnected') {\n this._cleanupEventListeners();\n }\n });\n\n this.on('disconnect', () => {\n this._cleanupEventListeners();\n });\n }\n\n /**\n * Set the audio input tracks from a given stream.\n * @internal\n * @param stream\n */\n _setInputTracksFromStream(stream: MediaStream | null): Promise<void> {\n return this._mediaHandler.setInputTracksFromStream(stream);\n }\n\n /**\n * Set the audio output sink IDs.\n * @internal\n * @param sinkIds\n */\n _setSinkIds(sinkIds: string[]): Promise<void> {\n return this._mediaHandler._setSinkIds(sinkIds);\n }\n\n /**\n * Accept the incoming {@link Call}.\n * @param [options]\n */\n accept(options?: Call.AcceptOptions): void {\n this._log.debug('.accept', options);\n if (this._status !== Call.State.Pending) {\n this._log.debug(`.accept noop. status is '${this._status}'`);\n return;\n }\n\n options = options || { };\n const rtcConfiguration = options.rtcConfiguration || this._options.rtcConfiguration;\n const rtcConstraints = options.rtcConstraints || this._options.rtcConstraints || { };\n const audioConstraints = {\n audio: typeof rtcConstraints.audio !== 'undefined' ? rtcConstraints.audio : true,\n };\n\n this._status = Call.State.Connecting;\n\n const connect = () => {\n if (this._status !== Call.State.Connecting) {\n // call must have been canceled\n this._cleanupEventListeners();\n this._mediaHandler.close();\n return;\n }\n\n const onAnswer = (pc: RTCPeerConnection) => {\n // Report that the call was answered, and directionality\n const eventName = this._direction === Call.CallDirection.Incoming\n ? 'accepted-by-local'\n : 'accepted-by-remote';\n this._publisher.info('connection', eventName, null, this);\n\n // Report the preferred codec and params as they appear in the SDP\n const { codecName, codecParams } = getPreferredCodecInfo(this._mediaHandler.version.getSDP());\n this._publisher.info('settings', 'codec', {\n codec_params: codecParams,\n selected_codec: codecName,\n }, this);\n\n // Enable RTC monitoring\n this._monitor.enable(pc);\n };\n\n const sinkIds = typeof this._options.getSinkIds === 'function' && this._options.getSinkIds();\n if (Array.isArray(sinkIds)) {\n this._mediaHandler._setSinkIds(sinkIds).catch(() => {\n // (rrowland) We don't want this to throw to console since the customer\n // can't control this. This will most commonly be rejected on browsers\n // that don't support setting sink IDs.\n });\n }\n\n this._pstream.addListener('hangup', this._onHangup);\n\n if (this._direction === Call.CallDirection.Incoming) {\n this._isAnswered = true;\n this._pstream.on('answer', this._onAnswer);\n this._mediaHandler.answerIncomingCall(this.parameters.CallSid,\n this._options.offerSdp, rtcConfiguration, onAnswer);\n } else {\n const params = Array.from(this.customParameters.entries()).map(pair =>\n `${encodeURIComponent(pair[0])}=${encodeURIComponent(pair[1])}`).join('&');\n this._pstream.on('answer', this._onAnswer);\n this._mediaHandler.makeOutgoingCall(params, this._signalingReconnectToken,\n this._options.reconnectCallSid || this.outboundConnectionId, rtcConfiguration, onAnswer);\n }\n };\n\n if (this._options.beforeAccept) {\n this._options.beforeAccept(this);\n }\n\n const inputStream = typeof this._options.getInputStream === 'function' && this._options.getInputStream();\n\n const promise = inputStream\n ? this._mediaHandler.setInputTracksFromStream(inputStream)\n : this._mediaHandler.openDefaultDeviceWithConstraints(audioConstraints);\n\n promise.then(() => {\n this._publisher.info('get-user-media', 'succeeded', {\n data: { audioConstraints },\n }, this);\n\n connect();\n }, (error: Record<string, any>) => {\n let twilioError;\n\n if (error.code === 31208\n || ['PermissionDeniedError', 'NotAllowedError'].indexOf(error.name) !== -1) {\n twilioError = new UserMediaErrors.PermissionDeniedError();\n this._publisher.error('get-user-media', 'denied', {\n data: {\n audioConstraints,\n error,\n },\n }, this);\n } else {\n twilioError = new UserMediaErrors.AcquisitionFailedError();\n\n this._publisher.error('get-user-media', 'failed', {\n data: {\n audioConstraints,\n error,\n },\n }, this);\n }\n\n this._disconnect();\n this._log.debug('#error', error);\n this.emit('error', twilioError);\n });\n }\n\n /**\n * Disconnect from the {@link Call}.\n */\n disconnect(): void {\n this._log.debug('.disconnect');\n this._disconnect();\n }\n\n /**\n * Get the local MediaStream, if set.\n */\n getLocalStream(): MediaStream | undefined {\n return this._mediaHandler && this._mediaHandler.stream;\n }\n\n /**\n * Get the remote MediaStream, if set.\n */\n getRemoteStream(): MediaStream | undefined {\n return this._mediaHandler && this._mediaHandler._remoteStream;\n }\n\n /**\n * Ignore the incoming {@link Call}.\n */\n ignore(): void {\n this._log.debug('.ignore');\n if (this._status !== Call.State.Pending) {\n this._log.debug(`.ignore noop. status is '${this._status}'`);\n return;\n }\n\n this._status = Call.State.Closed;\n this._mediaHandler.ignore(this.parameters.CallSid);\n this._publisher.info('connection', 'ignored-by-local', null, this);\n\n if (this._onIgnore) {\n this._onIgnore();\n }\n }\n\n /**\n * Check whether call is muted\n */\n isMuted(): boolean {\n return this._mediaHandler.isMuted;\n }\n\n /**\n * Mute incoming audio.\n * @param shouldMute - Whether the incoming audio should be muted. Defaults to true.\n */\n mute(shouldMute: boolean = true): void {\n this._log.debug('.mute', shouldMute);\n const wasMuted = this._mediaHandler.isMuted;\n this._mediaHandler.mute(shouldMute);\n\n const isMuted = this._mediaHandler.isMuted;\n if (wasMuted !== isMuted) {\n this._publisher.info('connection', isMuted ? 'muted' : 'unmuted', null, this);\n this._log.debug('#mute', isMuted);\n this.emit('mute', isMuted, this);\n }\n }\n\n /**\n * Post an event to Endpoint Analytics indicating that the end user\n * has given call quality feedback. Called without a score, this\n * will report that the customer declined to give feedback.\n * @param score - The end-user's rating of the call; an\n * integer 1 through 5. Or undefined if the user declined to give\n * feedback.\n * @param issue - The primary issue the end user\n * experienced on the call. Can be: ['one-way-audio', 'choppy-audio',\n * 'dropped-call', 'audio-latency', 'noisy-call', 'echo']\n */\n postFeedback(score?: Call.FeedbackScore, issue?: Call.FeedbackIssue): Promise<void> {\n if (typeof score === 'undefined' || score === null) {\n return this._postFeedbackDeclined();\n }\n\n if (!Object.values(Call.FeedbackScore).includes(score)) {\n throw new InvalidArgumentError(`Feedback score must be one of: ${Object.values(Call.FeedbackScore)}`);\n }\n\n if (typeof issue !== 'undefined' && issue !== null && !Object.values(Call.FeedbackIssue).includes(issue)) {\n throw new InvalidArgumentError(`Feedback issue must be one of: ${Object.values(Call.FeedbackIssue)}`);\n }\n\n return this._publisher.info('feedback', 'received', {\n issue_name: issue,\n quality_score: score,\n }, this, true);\n }\n\n /**\n * Reject the incoming {@link Call}.\n */\n reject(): void {\n this._log.debug('.reject');\n if (this._status !== Call.State.Pending) {\n this._log.debug(`.reject noop. status is '${this._status}'`);\n return;\n }\n\n this._isRejected = true;\n this._pstream.reject(this.parameters.CallSid);\n this._mediaHandler.reject(this.parameters.CallSid);\n this._publisher.info('connection', 'rejected-by-local', null, this);\n this._cleanupEventListeners();\n this._mediaHandler.close();\n this._status = Call.State.Closed;\n this._log.debug('#reject');\n this.emit('reject');\n }\n\n /**\n * Send a string of digits.\n * @param digits\n */\n sendDigits(digits: string): void {\n this._log.debug('.sendDigits', digits);\n if (digits.match(/[^0-9*#w]/)) {\n throw new InvalidArgumentError('Illegal character passed into sendDigits');\n }\n\n const customSounds = this._options.customSounds || {};\n const sequence: string[] = [];\n digits.split('').forEach((digit: string) => {\n let dtmf = (digit !== 'w') ? `dtmf${digit}` : '';\n if (dtmf === 'dtmf*') { dtmf = 'dtmfs'; }\n if (dtmf === 'dtmf#') { dtmf = 'dtmfh'; }\n sequence.push(dtmf);\n });\n\n const playNextDigit = () => {\n const digit = sequence.shift() as Device.SoundName | undefined;\n if (digit) {\n if (this._options.dialtonePlayer && !customSounds[digit]) {\n this._options.dialtonePlayer.play(digit);\n } else {\n this._soundcache.get(digit).play();\n }\n }\n if (sequence.length) {\n setTimeout(() => playNextDigit(), 200);\n }\n };\n playNextDigit();\n\n const dtmfSender = this._mediaHandler.getOrCreateDTMFSender();\n\n function insertDTMF(dtmfs: string[]) {\n if (!dtmfs.length) { return; }\n const dtmf: string | undefined = dtmfs.shift();\n\n if (dtmf && dtmf.length) {\n dtmfSender.insertDTMF(dtmf, DTMF_TONE_DURATION, DTMF_INTER_TONE_GAP);\n }\n\n setTimeout(insertDTMF.bind(null, dtmfs), DTMF_PAUSE_DURATION);\n }\n\n if (dtmfSender) {\n if (!('canInsertDTMF' in dtmfSender) || dtmfSender.canInsertDTMF) {\n this._log.info('Sending digits using RTCDTMFSender');\n // NOTE(mroberts): We can't just map 'w' to ',' since\n // RTCDTMFSender's pause duration is 2 s and Twilio's is more\n // like 500 ms. Instead, we will fudge it with setTimeout.\n insertDTMF(digits.split('w'));\n return;\n }\n\n this._log.info('RTCDTMFSender cannot insert DTMF');\n }\n\n // send pstream message to send DTMF\n this._log.info('Sending digits over PStream');\n\n if (this._pstream !== null && this._pstream.status !== 'disconnected') {\n this._pstream.dtmf(this.parameters.CallSid, digits);\n } else {\n const error = new GeneralErrors.ConnectionError('Could not send DTMF: Signaling channel is disconnected');\n this._log.debug('#error', error);\n this.emit('error', error);\n }\n }\n\n /**\n * Send a message to Twilio. Your backend application can listen for these\n * messages to allow communication between your frontend and backend applications.\n * <br/><br/>This feature is currently in Beta.\n * @param message - The message object to send.\n * @returns A voice event sid that uniquely identifies the message that was sent.\n */\n sendMessage(message: Call.Message): string {\n this._log.debug('.sendMessage', JSON.stringify(message));\n const { content, contentType, messageType } = message;\n\n if (typeof content === 'undefined' || content === null) {\n throw new InvalidArgumentError('`content` is empty');\n }\n\n if (typeof messageType !== 'string') {\n throw new InvalidArgumentError(\n '`messageType` must be a string.',\n );\n }\n\n if (messageType.length === 0) {\n throw new InvalidArgumentError(\n '`messageType` must be a non-empty string.',\n );\n }\n\n if (this._pstream === null) {\n throw new InvalidStateError(\n 'Could not send CallMessage; Signaling channel is disconnected',\n );\n }\n\n const callSid = this.parameters.CallSid;\n if (typeof this.parameters.CallSid === 'undefined') {\n throw new InvalidStateError(\n 'Could not send CallMessage; Call has no CallSid',\n );\n }\n\n const voiceEventSid = this._voiceEventSidGenerator();\n this._messages.set(voiceEventSid, { content, contentType, messageType, voiceEventSid });\n this._pstream.sendMessage(callSid, content, contentType, messageType, voiceEventSid);\n return voiceEventSid;\n }\n\n /**\n * Get the current {@link Call} status.\n */\n status(): Call.State {\n return this._status;\n }\n\n /**\n * String representation of {@link Call} instance.\n * @internal\n */\n toString = () => '[Twilio.Call instance]';\n\n /**\n * Check the volume passed, emitting a warning if one way audio is detected or cleared.\n * @param currentVolume - The current volume for this direction\n * @param streakFieldName - The name of the field on the {@link Call} object that tracks how many times the\n * current value has been repeated consecutively.\n * @param lastValueFieldName - The name of the field on the {@link Call} object that tracks the most recent\n * volume for this direction\n * @param direction - The directionality of this audio track, either 'input' or 'output'\n * @returns The current streak; how many times in a row the same value has been polled.\n */\n private _checkVolume(currentVolume: number, currentStreak: number,\n lastValue: number, direction: 'input'|'output'): number {\n const wasWarningRaised: boolean = currentStreak >= 10;\n let newStreak: number = 0;\n\n if (lastValue === currentVolume) {\n newStreak = currentStreak;\n }\n\n if (newStreak >= 10) {\n this._emitWarning('audio-level-', `constant-audio-${direction}-level`, 10, newStreak, false);\n } else if (wasWarningRaised) {\n this._emitWarning('audio-level-', `constant-audio-${direction}-level`, 10, newStreak, true);\n }\n\n return newStreak;\n }\n\n /**\n * Clean up event listeners.\n */\n private _cleanupEventListeners(): void {\n const cleanup = () => {\n if (!this._pstream) { return; }\n\n this._pstream.removeListener('ack', this._onAck);\n this._pstream.removeListener('answer', this._onAnswer);\n this._pstream.removeListener('cancel', this._onCancel);\n this._pstream.removeListener('error', this._onSignalingError);\n this._pstream.removeListener('hangup', this._onHangup);\n this._pstream.removeListener('ringing', this._onRinging);\n this._pstream.removeListener('transportClose', this._onTransportClose);\n this._pstream.removeListener('connected', this._onConnected);\n this._pstream.removeListener('message', this._onMessageReceived);\n };\n\n // This is kind of a hack, but it lets us avoid rewriting more code.\n // Basically, there's a sequencing problem with the way PeerConnection raises\n // the\n //\n // Cannot establish call. SDK is disconnected\n //\n // error in Call#accept. It calls PeerConnection#onerror, which emits\n // the error event on Call. An error handler on Call then calls\n // cleanupEventListeners, but then control returns to Call#accept. It's\n // at this point that we add a listener for the answer event that never gets\n // removed. setTimeout will allow us to rerun cleanup again, _after_\n // Call#accept returns.\n cleanup();\n setTimeout(cleanup, 0);\n }\n\n /**\n * Create the payload wrapper for a batch of metrics to be sent to Insights.\n */\n private _createMetricPayload(): Partial<Record<string, string|boolean>> {\n const payload: Partial<Record<string, string|boolean>> = {\n call_sid: this.parameters.CallSid,\n dscp: !!this._options.dscp,\n sdk_version: RELEASE_VERSION,\n };\n\n if (this._options.gateway) {\n payload.gateway = this._options.gateway;\n }\n\n payload.direction = this._direction;\n return payload;\n }\n\n /**\n * Disconnect the {@link Call}.\n * @param message - A message explaining why the {@link Call} is being disconnected.\n * @param wasRemote - Whether the disconnect was triggered locally or remotely.\n */\n private _disconnect(message?: string | null, wasRemote?: boolean): void {\n message = typeof message === 'string' ? message : null;\n\n if (this._status !== Call.State.Open\n && this._status !== Call.State.Connecting\n && this._status !== Call.State.Reconnecting\n && this._status !== Call.State.Ringing) {\n return;\n }\n\n this._log.info('Disconnecting...');\n\n // send pstream hangup message\n if (this._pstream !== null && this._pstream.status !== 'disconnected' && this._shouldSendHangup) {\n const callsid: string | undefined = this.parameters.CallSid || this.outboundConnectionId;\n if (callsid) {\n this._pstream.hangup(callsid, message);\n }\n }\n\n this._cleanupEventListeners();\n this._mediaHandler.close();\n\n if (!wasRemote) {\n this._publisher.info('connection', 'disconnected-by-local', null, this);\n }\n }\n\n private _emitWarning = (groupPrefix: string, warningName: string, threshold: number,\n value: number|number[], wasCleared?: boolean, warningData?: RTCWarning): void => {\n const groupSuffix = wasCleared ? '-cleared' : '-raised';\n const groupName = `${groupPrefix}warning${groupSuffix}`;\n\n // Ignore constant input if the Call is muted (Expected)\n if (warningName === 'constant-audio-input-level' && this.isMuted()) {\n return;\n }\n\n let level = wasCleared ? 'info' : 'warning';\n\n // Avoid throwing false positives as warnings until we refactor volume metrics\n if (warningName === 'constant-audio-output-level') {\n level = 'info';\n }\n\n const payloadData: Record<string, any> = { threshold };\n\n if (value) {\n if (value instanceof Array) {\n payloadData.values = value.map((val: any) => {\n if (typeof val === 'number') {\n return Math.round(val * 100) / 100;\n }\n\n return value;\n });\n } else {\n payloadData.value = value;\n }\n }\n\n this._publisher.post(level, groupName, warningName, { data: payloadData }, this);\n\n if (warningName !== 'constant-audio-output-level') {\n const emitName = wasCleared ? 'warning-cleared' : 'warning';\n this._log.debug(`#${emitName}`, warningName);\n this.emit(emitName, warningName, warningData && !wasCleared ? warningData : null);\n }\n }\n\n /**\n * Transition to {@link CallStatus.Open} if criteria is met.\n */\n private _maybeTransitionToOpen(): void {\n const wasConnected = this._wasConnected;\n if (this._isAnswered) {\n this._onSignalingReconnected();\n this._signalingStatus = Call.State.Open;\n if (this._mediaHandler && this._mediaHandler.status === 'open') {\n this._status = Call.State.Open;\n if (!this._wasConnected) {\n this._wasConnected = true;\n this._log.debug('#accept');\n this.emit('accept', this);\n }\n }\n }\n }\n\n /**\n * Called when the {@link Call} receives an ack from signaling\n * @param payload\n */\n private _onAck = (payload: Record<string, any>): void => {\n const { acktype, callsid, voiceeventsid } = payload;\n if (this.parameters.CallSid !== callsid) {\n this._log.warn(`Received ack from a different callsid: ${callsid}`);\n return;\n }\n if (acktype === 'message') {\n this._onMessageSent(voiceeventsid);\n }\n }\n\n /**\n * Called when the {@link Call} is answered.\n * @param payload\n */\n private _onAnswer = (payload: Record<string, any>): void => {\n if (typeof payload.reconnect === 'string') {\n this._signalingReconnectToken = payload.reconnect;\n }\n\n // answerOnBridge=false will send a 183 which we need to catch in _onRinging when\n // the enableRingingState flag is disabled. In that case, we will receive a 200 after\n // the callee accepts the call firing a second `accept` event if we don't\n // short circuit here.\n if (this._isAnswered && this._status !== Call.State.Reconnecting) {\n return;\n }\n\n this._setCallSid(payload);\n this._isAnswered = true;\n this._maybeTransitionToOpen();\n }\n\n /**\n * Called when the {@link Call} is cancelled.\n * @param payload\n */\n private _onCancel = (payload: Record<string, any>): void => {\n // (rrowland) Is this check necessary? Verify, and if so move to pstream / VSP module.\n const callsid = payload.callsid;\n if (this.parameters.CallSid === callsid) {\n this._isCancelled = true;\n this._publisher.info('connection', 'cancel', null, this);\n this._cleanupEventListeners();\n this._mediaHandler.close();\n\n this._status = Call.State.Closed;\n this._log.debug('#cancel');\n this.emit('cancel');\n this._pstream.removeListener('cancel', this._onCancel);\n }\n }\n\n /**\n * Called when we receive a connected event from pstream.\n * Re-emits the event.\n */\n private _onConnected = (): void => {\n this._log.info('Received connected from pstream');\n if (this._signalingReconnectToken && this._mediaHandler.version) {\n this._pstream.reconnect(\n this._mediaHandler.version.getSDP(),\n this.parameters.CallSid,\n this._signalingReconnectToken,\n );\n }\n }\n\n /**\n * Called when the {@link Call} is hung up.\n * @param payload\n */\n private _onHangup = (payload: Record<string, any>): void => {\n if (this.status() === Call.State.Closed) {\n return;\n }\n\n /**\n * see if callsid passed in message matches either callsid or outbound id\n * call should always have either callsid or outbound id\n * if no callsid passed hangup anyways\n */\n if (payload.callsid && (this.parameters.CallSid || this.outboundConnectionId)) {\n if (payload.callsid !== this.parameters.CallSid\n && payload.callsid !== this.outboundConnectionId) {\n return;\n }\n } else if (payload.callsid) {\n // hangup is for another call\n return;\n }\n\n this._log.info('Received HANGUP from gateway');\n if (payload.error) {\n const code = payload.error.code;\n const errorConstructor = getPreciseSignalingErrorByCode(\n this._options.enableImprovedSignalingErrorPrecision,\n code,\n );\n const error = typeof errorConstructor !== 'undefined'\n ? new errorConstructor(payload.error.message)\n : new GeneralErrors.ConnectionError('Error sent from gateway in HANGUP', payload.error);\n this._log.error('Received an error from the gateway:', error);\n this._log.debug('#error', error);\n this.emit('error', error);\n }\n this._shouldSendHangup = false;\n this._publisher.info('connection', 'disconnected-by-remote', null, this);\n this._disconnect(null, true);\n this._cleanupEventListeners();\n }\n\n /**\n * Called when there is a media failure.\n * Manages all media-related states and takes action base on the states\n * @param type - Type of media failure\n */\n private _onMediaFailure = (type: Call.MediaFailure): void => {\n const {\n ConnectionDisconnected, ConnectionFailed, IceGatheringFailed, LowBytes,\n } = Call.MediaFailure;\n\n // These types signifies the end of a single ICE cycle\n const isEndOfIceCycle = type === ConnectionFailed || type === IceGatheringFailed;\n\n // All browsers except chrome doesn't update pc.iceConnectionState and pc.connectionState\n // after issuing an ICE Restart, which we use to determine if ICE Restart is complete.\n // Since we cannot detect if ICE Restart is complete, we will not retry.\n if (!isChrome(window, window.navigator) && type === ConnectionFailed) {\n return this._mediaHandler.onerror(MEDIA_DISCONNECT_ERROR);\n }\n\n // Ignore subsequent requests if ice restart is in progress\n if (this._mediaStatus === Call.State.Reconnecting) {\n\n // This is a retry. Previous ICE Restart failed\n if (isEndOfIceCycle) {\n\n // We already exceeded max retry time.\n if (Date.now() - this._mediaReconnectStartTime > BACKOFF_CONFIG.max) {\n this._log.warn('Exceeded max ICE retries');\n return this._mediaHandler.onerror(MEDIA_DISCONNECT_ERROR);\n }\n\n // Issue ICE restart with backoff\n try {\n this._mediaReconnectBackoff.backoff();\n } catch (error) {\n // Catch and ignore 'Backoff in progress.' errors. If a backoff is\n // ongoing and we try to start another one, there shouldn't be a\n // problem.\n if (!(error.message && error.message === 'Backoff in progress.')) {\n throw error;\n }\n }\n }\n\n return;\n }\n\n const pc = this._mediaHandler.version.pc;\n const isIceDisconnected = pc && pc.iceConnectionState === 'disconnected';\n const hasLowBytesWarning = this._monitor.hasActiveWarning('bytesSent', 'min')\n || this._monitor.hasActiveWarning('bytesReceived', 'min');\n\n // Only certain conditions can trigger media reconnection\n if ((type === LowBytes && isIceDisconnected)\n || (type === ConnectionDisconnected && hasLowBytesWarning)\n || isEndOfIceCycle) {\n\n const mediaReconnectionError = new MediaErrors.ConnectionError('Media connection failed.');\n this._log.warn('ICE Connection disconnected.');\n this._publisher.warn('connection', 'error', mediaReconnectionError, this);\n this._publisher.info('connection', 'reconnecting', null, this);\n\n this._mediaReconnectStartTime = Date.now();\n this._status = Call.State.Reconnecting;\n this._mediaStatus = Call.State.Reconnecting;\n this._mediaReconnectBackoff.reset();\n this._mediaReconnectBackoff.backoff();\n\n this._log.debug('#reconnecting');\n this.emit('reconnecting', mediaReconnectionError);\n }\n }\n\n /**\n * Called when media call is restored\n */\n private _onMediaReconnected = (): void => {\n // Only trigger once.\n // This can trigger on pc.onIceConnectionChange and pc.onConnectionChange.\n if (this._mediaStatus !== Call.State.Reconnecting) {\n return;\n }\n this._log.info('ICE Connection reestablished.');\n this._mediaStatus = Call.State.Open;\n\n if (this._signalingStatus === Call.State.Open) {\n this._publisher.info('connection', 'reconnected', null, this);\n this._log.debug('#reconnected');\n this.emit('reconnected');\n this._status = Call.State.Open;\n }\n }\n\n /**\n * Raised when a Call receives a message from the backend.\n * @param payload - A record representing the payload of the message from the\n * Twilio backend.\n */\n private _onMessageReceived = (payload: Record<string, any>): void => {\n const { callsid, content, contenttype, messagetype, voiceeventsid } = payload;\n\n if (this.parameters.CallSid !== callsid) {\n this._log.warn(`Received a message from a different callsid: ${callsid}`);\n return;\n }\n const data = {\n content,\n contentType: contenttype,\n messageType: messagetype,\n voiceEventSid: voiceeventsid,\n };\n this._publisher.info('call-message', messagetype, {\n content_type: contenttype,\n event_type: 'received',\n voice_event_sid: voiceeventsid,\n }, this);\n this._log.debug('#messageReceived', JSON.stringify(data));\n this.emit('messageReceived', data);\n }\n\n /**\n * Raised when a Call receives an 'ack' with an 'acktype' of 'message.\n * This means that the message sent via sendMessage API has been received by the signaling server.\n * @param voiceEventSid\n */\n private _onMessageSent = (voiceEventSid: string): void => {\n if (!this._messages.has(voiceEventSid)) {\n this._log.warn(`Received a messageSent with a voiceEventSid that doesn't exists: ${voiceEventSid}`);\n return;\n }\n const message = this._messages.get(voiceEventSid);\n this._messages.delete(voiceEventSid);\n this._publisher.info('call-message', message?.messageType, {\n content_type: message?.contentType,\n event_type: 'sent',\n voice_event_sid: voiceEventSid,\n }, this);\n this._log.debug('#messageSent', JSON.stringify(message));\n this.emit('messageSent', message);\n }\n\n /**\n * When we get a RINGING signal from PStream, update the {@link Call} status.\n * @param payload\n */\n private _onRinging = (payload: Record<string, any>): void => {\n this._setCallSid(payload);\n\n // If we're not in 'connecting' or 'ringing' state, this event was received out of order.\n if (this._status !== Call.State.Connecting && this._status !== Call.State.Ringing) {\n return;\n }\n\n const hasEarlyMedia = !!payload.sdp;\n this._status = Call.State.Ringing;\n this._publisher.info('connection', 'outgoing-ringing', { hasEarlyMedia }, this);\n this._log.debug('#ringing');\n this.emit('ringing', hasEarlyMedia);\n }\n\n /**\n * Called each time StatsMonitor emits a sample.\n * Emits stats event and batches the call stats metrics and sends them to Insights.\n * @param sample\n */\n private _onRTCSample = (sample: RTCSample): void => {\n const callMetrics: Call.CallMetrics = {\n ...sample,\n inputVolume: this._latestInputVolume,\n outputVolume: this._latestOutputVolume,\n };\n\n this._codec = callMetrics.codecName;\n\n this._metricsSamples.push(callMetrics);\n if (this._metricsSamples.length >= METRICS_BATCH_SIZE) {\n this._publishMetrics();\n }\n\n this.emit('sample', sample);\n }\n\n /**\n * Called when an 'error' event is received from the signaling stream.\n */\n private _onSignalingError = (payload: Record<string, any>): void => {\n const { callsid, voiceeventsid, error } = payload;\n if (this.parameters.CallSid !== callsid) {\n this._log.warn(`Received an error from a different callsid: ${callsid}`);\n return;\n }\n if (voiceeventsid && this._messages.has(voiceeventsid)) {\n // Do not emit an error here. Device is handling all signaling related errors.\n this._messages.delete(voiceeventsid);\n this._log.warn(`Received an error while sending a message.`, payload);\n\n this._publisher.error('call-message', 'error', {\n code: error.code,\n message: error.message,\n voice_event_sid: voiceeventsid,\n }, this);\n\n let twilioError;\n const errorConstructor = getPreciseSignalingErrorByCode(\n !!this._options.enableImprovedSignalingErrorPrecision,\n error.code,\n );\n\n if (typeof errorConstructor !== 'undefined') {\n twilioError = new errorConstructor(error);\n }\n\n if (!twilioError) {\n this._log.error('Unknown Call Message Error: ', error);\n twilioError = new GeneralErrors.UnknownError(error.message, error);\n }\n\n this._log.debug('#error', error, twilioError);\n this.emit('error', twilioError);\n }\n }\n\n /**\n * Called when signaling is restored\n */\n private _onSignalingReconnected = (): void => {\n if (this._signalingStatus !== Call.State.Reconnecting) {\n return;\n }\n this._log.info('Signaling Connection reestablished.');\n\n this._signalingStatus = Call.State.Open;\n\n if (this._mediaStatus === Call.State.Open) {\n this._publisher.info('connection', 'reconnected', null, this);\n this._log.debug('#reconnected');\n this.emit('reconnected');\n this._status = Call.State.Open;\n }\n }\n\n /**\n * Called when we receive a transportClose event from pstream.\n * Re-emits the event.\n */\n private _onTransportClose = (): void => {\n this._log.error('Received transportClose from pstream');\n this._log.debug('#transportClose');\n this.emit('transportClose');\n if (this._signalingReconnectToken) {\n this._status = Call.State.Reconnecting;\n this._signalingStatus = Call.State.Reconnecting;\n this._publisher.info('connection', 'reconnecting', null, this);\n this._log.debug('#reconnecting');\n this.emit('reconnecting', new SignalingErrors.ConnectionDisconnected());\n } else {\n this._status = Call.State.Closed;\n this._signalingStatus = Call.State.Closed;\n }\n }\n\n /**\n * Post an event to Endpoint Analytics indicating that the end user\n * has ignored a request for feedback.\n */\n private _postFeedbackDeclined(): Promise<void> {\n return this._publisher.info('feedback', 'received-none', null, this, true);\n }\n\n /**\n * Publish the current set of queued metrics samples to Insights.\n */\n private _publishMetrics(): void {\n if (this._metricsSamples.length === 0) {\n return;\n }\n\n this._publisher.postMetrics(\n 'quality-metrics-samples', 'metrics-sample', this._metricsSamples.splice(0), this._createMetricPayload(), this,\n ).catch((e: any) => {\n this._log.warn('Unable to post metrics to Insights. Received error:', e);\n });\n }\n\n /**\n * Re-emit an StatsMonitor warning as a {@link Call}.warning or .warning-cleared event.\n * @param warningData\n * @param wasCleared - Whether this is a -cleared or -raised event.\n */\n private _reemitWarning = (warningData: Record<string, any>, wasCleared?: boolean): void => {\n const groupPrefix = /^audio/.test(warningData.name) ?\n 'audio-level-' : 'network-quality-';\n\n const warningPrefix = WARNING_PREFIXES[warningData.threshold.name];\n\n /**\n * NOTE: There are two \"packet-loss\" warnings: `high-packet-loss` and\n * `high-packets-lost-fraction`, so in this case we need to use a different\n * `WARNING_NAME` mapping.\n */\n let warningName: string | undefined;\n if (warningData.name in MULTIPLE_THRESHOLD_WARNING_NAMES) {\n warningName = MULTIPLE_THRESHOLD_WARNING_NAMES[warningData.name][warningData.threshold.name];\n } else if (warningData.name in WARNING_NAMES) {\n warningName = WARNING_NAMES[warningData.name];\n }\n\n const warning: string = warningPrefix + warningName;\n\n this._emitWarning(groupPrefix, warning, warningData.threshold.value,\n warningData.values || warningData.value, wasCleared, warningData);\n }\n\n /**\n * Re-emit an StatsMonitor warning-cleared as a .warning-cleared event.\n * @param warningData\n */\n private _reemitWarningCleared = (warningData: Record<string, any>): void => {\n this._reemitWarning(warningData, true);\n }\n\n /**\n * Set the CallSid\n * @param payload\n */\n private _setCallSid(payload: Record<string, string>): void {\n const callSid = payload.callsid;\n if (!callSid) { return; }\n\n this.parameters.CallSid = callSid;\n this._mediaHandler.callSid = callSid;\n }\n}\n\n/**\n * @mergeModuleWith Call\n */\nnamespace Call {\n /**\n * Emitted when the {@link Call} is accepted.\n * @event\n * @param call - The {@link Call}.\n * @example\n * ```ts\n * call.on('accept', (call) => { });\n * ```\n */\n export declare function acceptEvent(call: Call): void;\n\n /**\n * Emitted after the HTMLAudioElement for the remote audio is created.\n * @event\n * @param remoteAudio - The HTMLAudioElement.\n * @example\n * ```ts\n * call.on('audio', (remoteAudio) => { });\n * ```\n */\n export declare function audioEvent(remoteAudio: HTMLAudioElement): void;\n\n /**\n * Emitted when the {@link Call} is canceled.\n * @event\n * @example\n * ```ts\n * call.on('cancel', () => { });\n * ```\n */\n export declare function cancelEvent(): void;\n\n /**\n * Emitted when the {@link Call} is disconnected.\n * @event\n * @param call - The {@link Call}.\n * @example\n * ```ts\n * call.on('disconnect', (call) => { });\n * ```\n */\n export declare function disconnectEvent(call: Call): void;\n\n /**\n * Emitted when the {@link Call} receives an error.\n * @event\n * @param error\n * @example\n * ```ts\n * call.on('error', (error) => { });\n * ```\n */\n export declare function errorEvent(error: TwilioError): void;\n\n /**\n * Emitted when a Call receives a message from the backend.\n * <br/><br/>This feature is currently in Beta.\n * @event\n * @param message - A message object representing the payload\n * that was received from the Twilio backend.\n */\n export declare function messageReceivedEvent(message: Call.Message): void;\n\n /**\n * Emitted after calling the {@link Call.sendMessage} API.\n * This event indicates that Twilio has received the message.\n * <br/><br/>This feature is currently in Beta.\n * @event\n * @param message - A message object that was sent to the Twilio backend.\n */\n export declare function messageSentEvent(message: Call.Message): void;\n\n /**\n * Emitted when the {@link Call} is muted or unmuted.\n * @event\n * @param isMuted - Whether the {@link Call} is muted.\n * @param call - The {@link Call}.\n * @example\n * ```ts\n * call.on('mute', (isMuted, call) => { });\n * ```\n */\n export declare function muteEvent(isMuted: boolean, call: Call): void;\n\n /**\n * Emitted when the {@link Call} has regained media connectivity.\n * @event\n * @example\n * ```ts\n * call.on('reconnected', () => { })\n * ```\n */\n export declare function reconnectedEvent(): void;\n\n /**\n * Emitted when the {@link Call} has lost media connectivity and is reconnecting.\n * @event\n * @param error - The {@link TwilioError} that caused the media connectivity loss\n * @example\n * ```ts\n * call.on('reconnecting', (error) => { });\n * ```\n */\n export declare function reconnectingEvent(error: TwilioError): void;\n\n /**\n * Emitted when the {@link Call} is rejected.\n * @event\n * @example\n * ```ts\n * call.on('reject', () => { })\n * ```\n */\n export declare function rejectEvent(): void;\n\n /**\n * Emitted when the {@link Call} has entered the `ringing` state.\n * When using the Dial verb with `answerOnBridge=true`, the ringing state will begin when\n * the callee has been notified of the call and will transition into open after the callee accepts the call,\n * or closed if the call is rejected or cancelled.\n * @event\n * @param hasEarlyMedia - Denotes whether there is early media available from the callee.\n * If `true`, the Client SDK will automatically play the early media. Sometimes this is ringing,\n * other times it may be an important message about the call. If `false`, there is no remote media to play,\n * so the application may want to play its own outgoing ringtone sound.\n * @example\n * ```ts\n * call.on('ringing', (hasEarlyMedia) => { });\n * ```\n */\n export declare function ringingEvent(hasEarlyMedia: boolean): void;\n\n /**\n * Emitted when the {@link Call} gets a webrtc sample object.\n * This event is published every second.\n * @event\n * @param sample\n * @example\n * ```ts\n * call.on('sample', (sample) => { });\n * ```\n */\n export declare function sampleEvent(sample: RTCSample): void;\n\n /**\n * Emitted every 50ms with the current input and output volumes, as a percentage of maximum\n * volume, between -100dB and -30dB. Represented by a floating point number.\n * @event\n * @param inputVolume - A floating point number between 0.0 and 1.0 inclusive.\n * @param outputVolume - A floating point number between 0.0 and 1.0 inclusive.\n * @example\n * ```ts\n * call.on('volume', (inputVolume, outputVolume) => { });\n * ```\n */\n export declare function volumeEvent(inputVolume: number, outputVolume: number): void;\n\n /**\n * Emitted when the SDK detects a drop in call quality or other conditions that may indicate\n * the user is having trouble with the call. You can implement callbacks on these events to\n * alert the user of an issue.\n *\n * To alert the user that an issue has been resolved, you can listen for the `warning-cleared` event,\n * which indicates that a call quality metric has returned to normal.\n *\n * For a full list of conditions that will raise a warning event, check the\n * [Voice Insights SDK Events Reference](https://www.twilio.com/docs/voice/voice-insights/api/call/details-sdk-call-quality-events) page.\n *\n * @event\n * @param name - The name of the warning\n * @param data - An object containing data on the warning\n * @example\n * ```ts\n * call.on('warning', (name, data) => { });\n * ```\n */\n export declare function warningEvent(name: string, data: any): void;\n\n /**\n * Emitted when a call quality metric has returned to normal.\n * You can listen for this event to update the user when a call quality issue has been resolved.\n *\n * @event\n * @param name - The name of the warning\n * @example\n * ```ts\n * call.on('warning-cleared', (name) => { });\n * ```\n */\n export declare function warningClearedEvent(name: string): void;\n\n /**\n * Possible states of the {@link Call}.\n */\n export enum State {\n Closed = 'closed',\n Connecting = 'connecting',\n Open = 'open',\n Pending = 'pending',\n Reconnecting = 'reconnecting',\n Ringing = 'ringing',\n }\n\n /**\n * Different issues that may have been experienced during a call, that can be\n * reported to Twilio Insights via {@link Call}.postFeedback().\n */\n export enum FeedbackIssue {\n AudioLatency = 'audio-latency',\n ChoppyAudio = 'choppy-audio',\n DroppedCall = 'dropped-call',\n Echo = 'echo',\n NoisyCall = 'noisy-call',\n OneWayAudio = 'one-way-audio',\n }\n\n /**\n * A rating of call quality experienced during a call, to be reported to Twilio Insights\n * via {@link Call}.postFeedback().\n */\n export enum FeedbackScore {\n One = 1,\n Two,\n Three,\n Four,\n Five,\n }\n\n /**\n * The directionality of the {@link Call}, whether incoming or outgoing.\n */\n export enum CallDirection {\n Incoming = 'INCOMING',\n Outgoing = 'OUTGOING',\n }\n\n /**\n * Valid audio codecs to use for the media connection.\n */\n export enum Codec {\n Opus = 'opus',\n PCMU = 'pcmu',\n }\n\n /**\n * Possible ICE Gathering failures\n */\n export enum IceGatheringFailureReason {\n None = 'none',\n Timeout = 'timeout',\n }\n\n /**\n * Possible media failures\n */\n export enum MediaFailure {\n ConnectionDisconnected = 'ConnectionDisconnected',\n ConnectionFailed = 'ConnectionFailed',\n IceGatheringFailed = 'IceGatheringFailed',\n LowBytes = 'LowBytes',\n }\n\n /**\n * Options to be used to acquire media tracks and connect media.\n */\n export interface AcceptOptions {\n /**\n * An RTCConfiguration to pass to the RTCPeerConnection constructor.\n */\n rtcConfiguration?: RTCConfiguration;\n\n /**\n * MediaStreamConstraints to pass to getUserMedia when making or accepting a Call.\n */\n rtcConstraints?: MediaStreamConstraints;\n }\n\n /**\n * A CallerInfo provides caller verification information.\n */\n export interface CallerInfo {\n /**\n * Whether or not the caller's phone number has been verified by\n * Twilio using SHAKEN/STIR validation. True if the caller has\n * been validated at level 'A', false if the caller has been\n * verified at any lower level or has failed validation.\n */\n isVerified: boolean;\n }\n\n /**\n * Mandatory config options to be passed to the {@link Call} constructor.\n * @internal\n */\n export interface Config {\n /**\n * An AudioHelper instance to be used for input/output devices.\n */\n audioHelper: IAudioHelper;\n\n /**\n * A function to be called after {@link Call.ignore} is called.\n */\n onIgnore: () => void;\n\n /**\n * The PStream instance to use for Twilio call signaling.\n */\n pstream: IPStream;\n\n /**\n * An EventPublisher instance to use for publishing events\n */\n publisher: IPublisher;\n\n /**\n * A Map of Sounds to play.\n */\n soundcache: Map<Device.SoundName, ISound>;\n }\n\n /**\n * A Call Message represents the data that is being transferred between\n * Twilio and the SDK.\n */\n export interface Message {\n /**\n * The content of the message which should match the contentType parameter.\n */\n content: any;\n\n /**\n * The MIME type of the content. The default value is application/json\n * and is the only contentType that is supported at the moment.\n */\n contentType?: string;\n\n /**\n * The type of message. Currently, only 'user-defined-message' is supported.\n * More message types will be added in the future.\n * See [call resource](https://www.twilio.com/docs/voice/api/call-resource) documentation for more details.\n */\n messageType: string;\n\n /**\n * An autogenerated id that uniquely identifies the instance of this message.\n * This is not required when sending a message from the SDK as this is autogenerated.\n * But it will be available after the message is sent, or when a message is received.\n */\n voiceEventSid?: string;\n }\n\n /**\n * Options to be passed to the {@link Call} constructor.\n * @internal\n */\n export interface Options {\n /**\n * A method to call before Call.accept is processed.\n */\n beforeAccept?: (call: Call) => void;\n\n /**\n * Custom format context parameters associated with this call.\n */\n callParameters?: Record<string, string>;\n\n /**\n * An ordered array of codec names, from most to least preferred.\n */\n codecPreferences?: Codec[];\n\n /**\n * A mapping of custom sound URLs by sound name.\n */\n customSounds?: Partial<Record<Device.SoundName, string>>;\n\n /**\n * A DialTone player, to play mock DTMF sounds.\n */\n dialtonePlayer?: DialtonePlayer;\n\n /**\n * Whether or not to enable DSCP.\n */\n dscp?: boolean;\n\n enableImprovedSignalingErrorPrecision: boolean;\n\n /**\n * Experimental feature.\n * Force Chrome's ICE agent to use aggressive nomination when selecting a candidate pair.\n */\n forceAggressiveIceNomination?: boolean;\n\n /**\n * The gateway currently connected to.\n */\n gateway?: string;\n\n /**\n * A method that returns the current input MediaStream set on {@link Device}.\n */\n getInputStream?: () => MediaStream;\n\n /**\n * A method that returns the current SinkIDs set on {@link Device}.\n */\n getSinkIds?: () => string[];\n\n /**\n * The maximum average audio bitrate to use, in bits per second (bps) based on\n * [RFC-7587 7.1](https://tools.ietf.org/html/rfc7587#section-7.1). By default, the setting\n * is not used. If you specify 0, then the setting is not used. Any positive integer is allowed,\n * but values outside the range 6000 to 510000 are ignored and treated as 0. The recommended\n * bitrate for speech is between 8000 and 40000 bps as noted in\n * [RFC-7587 3.1.1](https://tools.ietf.org/html/rfc7587#section-3.1.1).\n */\n maxAverageBitrate?: number;\n\n /**\n * Custom MediaHandler (PeerConnection) constructor.\n */\n MediaHandler?: IPeerConnection;\n\n /**\n * Overrides the native MediaStream class.\n */\n MediaStream?: any;\n\n /**\n * The offer SDP, if this is an incoming call.\n */\n offerSdp?: string | null;\n\n /**\n * Whether this is a preflight call or not\n */\n preflight?: boolean;\n\n /**\n * The callSid to reconnect to.\n */\n reconnectCallSid?: string;\n\n /**\n * A reconnect token for the {@link Call}. Passed in for incoming {@link Calls}.\n */\n reconnectToken?: string;\n\n /**\n * An RTCConfiguration to pass to the RTCPeerConnection constructor.\n */\n rtcConfiguration?: RTCConfiguration;\n\n /**\n * RTC Constraints to pass to getUserMedia when making or accepting a Call.\n * The format of this object depends on browser.\n */\n rtcConstraints?: MediaStreamConstraints;\n\n /**\n * The RTCPeerConnection passed to {@link Device} on setup.\n */\n RTCPeerConnection?: any;\n\n /**\n * Whether the disconnect sound should be played.\n */\n shouldPlayDisconnect?: () => boolean;\n\n /**\n * An override for the StatsMonitor dependency.\n */\n StatsMonitor?: new () => StatsMonitor;\n\n /**\n * TwiML params for the call. May be set for either outgoing or incoming calls.\n */\n twimlParams?: Record<string, any>;\n\n /**\n * Voice event SID generator.\n */\n voiceEventSidGenerator?: () => string;\n }\n\n /**\n * Call metrics published to Insight Metrics.\n * This include rtc samples and audio information.\n * @internal\n */\n export interface CallMetrics extends RTCSample {\n /**\n * Percentage of maximum volume, between 0.0 to 1.0, representing -100 to -30 dB.\n */\n inputVolume: number;\n\n /**\n * Percentage of maximum volume, between 0.0 to 1.0, representing -100 to -30 dB.\n */\n outputVolume: number;\n }\n}\n\nfunction generateTempCallSid() {\n return 'TJSxxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n /* tslint:disable:no-bitwise */\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n /* tslint:enable:no-bitwise */\n return v.toString(16);\n });\n}\n\nexport default Call;\n","import * as React from \"react\";\nfunction MicrophoneIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.25 4.5a3.75 3.75 0 1 1 7.5 0v8.25a3.75 3.75 0 1 1-7.5 0V4.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 10.5a.75.75 0 0 1 .75.75v1.5a5.25 5.25 0 1 0 10.5 0v-1.5a.75.75 0 0 1 1.5 0v1.5a6.751 6.751 0 0 1-6 6.709v2.291h3a.75.75 0 0 1 0 1.5h-7.5a.75.75 0 0 1 0-1.5h3v-2.291a6.751 6.751 0 0 1-6-6.709v-1.5A.75.75 0 0 1 6 10.5Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(MicrophoneIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction PhoneXMarkIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M15.22 3.22a.75.75 0 0 1 1.06 0L18 4.94l1.72-1.72a.75.75 0 1 1 1.06 1.06L19.06 6l1.72 1.72a.75.75 0 0 1-1.06 1.06L18 7.06l-1.72 1.72a.75.75 0 1 1-1.06-1.06L16.94 6l-1.72-1.72a.75.75 0 0 1 0-1.06ZM1.5 4.5a3 3 0 0 1 3-3h1.372c.86 0 1.61.586 1.819 1.42l1.105 4.423a1.875 1.875 0 0 1-.694 1.955l-1.293.97c-.135.101-.164.249-.126.352a11.285 11.285 0 0 0 6.697 6.697c.103.038.25.009.352-.126l.97-1.293a1.875 1.875 0 0 1 1.955-.694l4.423 1.105c.834.209 1.42.959 1.42 1.82V19.5a3 3 0 0 1-3 3h-2.25C8.552 22.5 1.5 15.448 1.5 6.75V4.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(PhoneXMarkIcon);\nexport default ForwardRef;","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n options || (options = {})\n options.components || (options.components = empty)\n const result = []\n const arr = []\n let current\n let level = -1\n let inComponent = false\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n var end = html.indexOf('<')\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n })\n }\n\n html.replace(tagRE, function (tag, index) {\n if (inComponent) {\n if (tag !== '</' + current.name + '>') {\n return\n } else {\n inComponent = false\n }\n }\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith('<!--')\n const start = index + tag.length\n const nextChar = html.charAt(start)\n let parent\n\n if (isComment) {\n const comment = parseTag(tag)\n\n // if we're at root, push new base node\n if (level < 0) {\n result.push(comment)\n return result\n }\n parent = arr[level]\n parent.children.push(comment)\n return result\n }\n\n if (isOpen) {\n level++\n\n current = parseTag(tag)\n if (current.type === 'tag' && options.components[current.name]) {\n current.type = 'component'\n inComponent = true\n }\n\n if (\n !current.voidElement &&\n !inComponent &&\n nextChar &&\n nextChar !== '<'\n ) {\n current.children.push({\n type: 'text',\n content: html.slice(start, html.indexOf('<', start)),\n })\n }\n\n // if we're at root, push new base node\n if (level === 0) {\n result.push(current)\n }\n\n parent = arr[level - 1]\n\n if (parent) {\n parent.children.push(current)\n }\n\n arr[level] = current\n }\n\n if (!isOpen || current.voidElement) {\n if (\n level > -1 &&\n (current.voidElement || current.name === tag.slice(2, -1))\n ) {\n level--\n // move current up a level to match the end tag\n current = level === -1 ? result : arr[level]\n }\n if (!inComponent && nextChar !== '<' && nextChar) {\n // trailing text node\n // if we're at the root, push a base text node. otherwise add as\n // a child to the current node.\n parent = level === -1 ? result : arr[level].children\n\n // calculate correct end of the content slice in case there's\n // no tag after the text node.\n const end = html.indexOf('<', start)\n let content = html.slice(start, end === -1 ? undefined : end)\n // if a node is nothing but whitespace, collapse it as the spec states:\n // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n if (whitespaceRE.test(content)) {\n content = ' '\n }\n // don't add whitespace-only text nodes if they would be trailing text nodes\n // or if they would be leading whitespace-only text nodes:\n // * end > -1 indicates this is not a trailing text node\n // * leading node is when level is -1 and parent has length 0\n if ((end > -1 && level + parent.length >= 0) || content !== ' ') {\n parent.push({\n type: 'text',\n content: content,\n })\n }\n }\n }\n })\n\n return result\n}\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&amp;': '&',\n '&#38;': '&',\n '&lt;': '<',\n '&#60;': '<',\n '&gt;': '>',\n '&#62;': '>',\n '&apos;': \"'\",\n '&#39;': \"'\",\n '&quot;': '\"',\n '&#34;': '\"',\n '&nbsp;': ' ',\n '&#160;': ' ',\n '&copy;': '©',\n '&#169;': '©',\n '&reg;': '®',\n '&#174;': '®',\n '&hellip;': '…',\n '&#8230;': '…',\n '&#x2F;': '/',\n '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport truncate from 'lodash-es/truncate';\nimport uniq from 'lodash-es/uniq';\nimport scrollIntoView from 'smooth-scroll-into-view-if-needed';\nimport { getConfig } from '../config/config';\nimport { WEB_CLIENT_NEXT_URL, WEB_CLIENT_URL, WEB_CLIENT_URL_NEW, WEB_CLIENT_URL_NEW_DEV, } from '../config/constants';\n/**\n * Fetches the integration configuration\n * @param host the channels host\n * @param id the integration id\n * @returns\n */\nexport const fetchIntegration = async (id, host) => {\n const channelHost = host || getConfig().CHANNELS_HOST;\n const response = await fetch(`${channelHost}/v1/web/${id}`, {\n headers: {\n 'Cache-Control': 'no-cache',\n },\n });\n const text = await response.text();\n if (response.ok) {\n const data = JSON.parse(text);\n return data;\n }\n throw new Error(`Error loading config from: ${channelHost}/${id}`);\n};\n/**\n * Promise that resolves when the document is ready.\n *\n */\n/**\n * Promise that resolves when the document is ready.\n * @returns Promise that resolves when document is fully loaded\n */\nexport const onDocumentReady = () => new Promise((resolve) => {\n if (document.readyState === 'complete') {\n return resolve();\n }\n else {\n window.addEventListener('load', () => {\n return resolve();\n });\n }\n});\n/**\n * Creates a promise that resolves after a specified delay.\n * @param ms - Number of milliseconds to wait\n * @returns Promise that resolves after the delay\n */\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n/**\n * Gets the current timestamp in milliseconds.\n * @returns Current timestamp as number\n */\nexport const getTimestamp = () => Date.now();\nexport const KEYS = {\n UP: 'ArrowUp',\n DOWN: 'ArrowDown',\n ESC: 'Escape',\n ENTER: 'Enter',\n DELETE: 'Delete',\n SPACE: 'Space',\n TAB: 'Tab',\n};\nexport const emailRegExp = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))){2,}$/i;\n/**\n * Validates and converts a YouTube URL to an embeddable format.\n * @param text - The YouTube URL to validate and convert\n * @returns Embeddable YouTube URL or false if invalid\n */\nexport const validateYouTubeUrl = (text) => {\n if (text) {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = text.match(regExp);\n if (match && match[2].length == 11) {\n return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;\n }\n }\n return false;\n};\n/**\n * Determines if the current window is considered mobile based on dimensions.\n * @returns True if window is mobile-sized, false otherwise\n */\nexport const isWindowMobile = () => window.innerWidth < 650 ||\n (window.innerHeight < 550 && window.innerWidth < 1000);\n/**\n * Returns the URL that will be use to load the iframe\n */\nexport const createIframeUrl = (widgetId, version = 'v1') => {\n // 1. Check if using the beta/next release by looking at the script src\n let url = '';\n const scripts = document.querySelectorAll('script');\n const regex = /@moveo-ai\\/web-client.*next/;\n if (scripts) {\n scripts.forEach((script) => {\n var _a;\n if ((_a = script.src) === null || _a === void 0 ? void 0 : _a.match(regex)) {\n url = WEB_CLIENT_NEXT_URL;\n }\n });\n }\n // 2. Check if using localhost, specific moveo-ai deployment on Vercel,\n // or other conditions by looking at the origin\n const { origin } = window.location;\n if (!url) {\n if (origin.match(/localhost:8880/) ||\n origin.match(/web-client.*moveo-ai\\.vercel\\.app/)) {\n url = origin; // Load from localhost or a web-client deployment in Vercel\n }\n else if (origin.match(/web-client\\.dev/)) {\n url = WEB_CLIENT_NEXT_URL; // Specific web-client development URL\n }\n else {\n url = WEB_CLIENT_URL; // Default to the production web-client URL\n }\n }\n // 4. Append the WidgetId to the iframe so that this window and the iframe can\n // stablish a communication channel\n return `${url}?widgetId=${widgetId}&version=${version}`;\n};\n/**\n * Returns the URL that will be use to load the iframe\n */\nexport const createNewIframeUrl = (widgetId) => {\n // 1. Check if using the beta/next release by looking at the script src\n let url = '';\n const scripts = document.querySelectorAll('script');\n if (scripts) {\n scripts.forEach((script) => {\n var _a, _b, _c;\n if ((_a = script.src) === null || _a === void 0 ? void 0 : _a.includes(WEB_CLIENT_URL_NEW_DEV)) {\n url = WEB_CLIENT_URL_NEW_DEV;\n }\n if ((_b = script.src) === null || _b === void 0 ? void 0 : _b.includes(WEB_CLIENT_URL_NEW)) {\n url = WEB_CLIENT_URL_NEW;\n }\n const regex = /@moveo-ai\\/web-client.*next/;\n if ((_c = script.src) === null || _c === void 0 ? void 0 : _c.match(regex)) {\n url = WEB_CLIENT_NEXT_URL;\n }\n });\n }\n // 2. Check if using localhost, specific moveo-ai deployment on Vercel,\n // or other conditions by looking at the origin\n const { origin } = window.location;\n if (!url) {\n if (origin.match(/localhost:8880/) ||\n origin.match(/web-client.*moveo-ai\\.vercel\\.app/) ||\n origin.match(/web.*moveo\\.ai/)) {\n url = origin; // Load from localhost , from cloudflare preview or a deployment in Vercel\n }\n else {\n url = WEB_CLIENT_URL_NEW; // Default to the production web-client URL\n }\n }\n // 4. Append the WidgetId to the iframe so that this window and the iframe can\n // stablish a communication channel\n return `${url}?widgetId=${widgetId}&version=v2`;\n};\n/**\n * Parses a message event and extracts the event type and data.\n * @param widgetId - The widget ID to filter events\n * @param event - The message event to parse\n * @returns Parsed event object or null if invalid\n */\nexport const parseEvent = (widgetId, event) => {\n var _a, _b;\n const eventType = (_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.type;\n if (typeof eventType !== 'string' || !eventType.startsWith(widgetId)) {\n return null;\n }\n // Extract the event type by removing the prefix `widgetId`\n const type = eventType.replace(widgetId, '');\n const data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.data;\n return { type, data };\n};\n/**\n * Determines if the parent URL is a test environment.\n * @param parentUrl - The parent URL to check\n * @returns True if URL is a test environment, false otherwise\n */\nexport const isTest = (parentUrl) => {\n if (parentUrl) {\n const url = new URL(parentUrl).origin;\n if (url.match(/localhost:|vercel.app/) ||\n url === WEB_CLIENT_NEXT_URL ||\n url === WEB_CLIENT_URL ||\n url === WEB_CLIENT_URL_NEW ||\n url === WEB_CLIENT_URL_NEW_DEV) {\n return true;\n }\n }\n return false;\n};\n/**\n * Checks if a value is a plain object (not array or null).\n * @param item - The value to check\n * @returns True if item is a plain object, false otherwise\n */\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n// From: stackoverflow.com/a/37164538\nexport function mergeDeep(target = {}, source = {}) {\n const output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep(target[key], source[key]);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n/**\n * Smoothly scrolls an element into view.\n * @param element - The element to scroll to\n * @param options - Additional scroll options to override defaults\n */\nexport const scrollToElement = (element, options = {}) => {\n scrollIntoView(element, Object.assign({ behavior: 'smooth', inline: 'end', block: 'end' }, options));\n};\n/**\n * Finds the file type based on the provided MIME type.\n * Supported types: 'image', 'video', 'audio', 'file'.\n */\n/**\n * Determines the file type category based on MIME type.\n * @param mimeType - The MIME type string to analyze\n * @returns File type category: 'image', 'video', 'audio', or 'file'\n */\nexport const getFileTypeFromMimeType = (mimeType) => {\n if (mimeType.startsWith('image/')) {\n return 'image';\n }\n if (mimeType.startsWith('video/')) {\n return 'video';\n }\n if (mimeType.startsWith('audio/')) {\n return 'audio';\n }\n return 'file';\n};\n// This number comes from the max length in orchestrator\nexport const MAX_CHARS_IN_TAG = 48;\n/**\n * Normalizes the tags in the provided context by:\n * - Removing empty or whitespace-only tags.\n * - Transliterating non-Latin characters into ASCII.\n * - Removing diacritic marks from characters.\n * - Truncating each tag to a maximum allowed length.\n * - Removing duplicate tags.\n * - Removing tags that are not latin or greek characters.\n *\n * @param context - The context object containing a `tags` array and other properties.\n * @returns The updated context object with normalized tags.\n */\nexport const normalizeTags = (_a) => {\n var { tags } = _a, rest = __rest(_a, [\"tags\"]);\n if (!tags) {\n return rest;\n }\n const normalizedTags = tags\n .map((tag) => {\n // This will return an undefined value that later will be filtered.\n if (typeof tag !== 'string') {\n return;\n }\n // Remove spaces at the end and beggining\n let normalizedTag = tag.trim();\n // After trimming the tag, check if it's empty\n if (!normalizedTag) {\n return;\n }\n // Convert non-latin characters to ASCII (Such as Greek)\n normalizedTag = greekToLatin(normalizedTag);\n // Remove diacritic marks\n normalizedTag = transliterateToAscii(normalizedTag);\n normalizedTag = normalizedTag.replace(/\\s+/g, '-');\n // Shorten tag to max length\n return truncate(normalizedTag, {\n length: MAX_CHARS_IN_TAG,\n // This avoids appending `...` to the end of the string\n omission: '',\n });\n })\n // Remove empty tags\n .filter((tag) => Boolean(tag));\n return Object.assign(Object.assign({}, rest), { tags: uniq(normalizedTags) });\n};\n/**\n * Converts Greek text to its Latin equivalent using a simple character mapping.\n *\n * This function replaces each Greek letter with its corresponding Latin transcription\n * based on common transliteration rules.\n *\n * @param text - The Greek text to be transliterated.\n * @returns The transliterated Latin text.\n */\nconst greekToLatin = (text) => {\n const map = {\n Α: 'A',\n Β: 'B',\n Γ: 'G',\n Δ: 'D',\n Ε: 'E',\n Ζ: 'Z',\n Η: 'H',\n Θ: 'Th',\n Ι: 'I',\n Κ: 'K',\n Λ: 'L',\n Μ: 'M',\n Ν: 'N',\n Ξ: 'X',\n Ο: 'O',\n Π: 'P',\n Ρ: 'R',\n Σ: 'S',\n Τ: 'T',\n Υ: 'Y',\n Φ: 'F',\n Χ: 'Ch',\n Ψ: 'Ps',\n Ω: 'O',\n α: 'a',\n β: 'b',\n γ: 'g',\n δ: 'd',\n ε: 'e',\n ζ: 'z',\n η: 'i',\n θ: 'th',\n ι: 'i',\n κ: 'k',\n λ: 'l',\n μ: 'm',\n ν: 'n',\n ξ: 'x',\n ο: 'o',\n π: 'p',\n ρ: 'r',\n σ: 's',\n ς: 's',\n τ: 't',\n υ: 'y',\n φ: 'f',\n χ: 'ch',\n ψ: 'ps',\n ω: 'o',\n };\n return text\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .split('')\n .map((char) => map[char] || char)\n .join('');\n};\n/**\n * Converts a string to its ASCII equivalent by:\n * - Normalizing Unicode characters to their decomposed form.\n * - Removing diacritic marks (accents, tildes, etc.).\n * - Removing any non-ASCII characters.\n *\n * @param {string} str - The input string to transliterate.\n * @returns {string} - The ASCII-only version of the input string.\n */\nconst transliterateToAscii = (str) => {\n return str\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/[^\\x00-\\x7F]/g, '');\n};\n/**\n * Normalizes the display name in the context object.\n * If the display name is an empty string, it will be set to null.\n * When the value is null, channels will assign a default value such as\n * `Visitor <id>`.\n *\n * @param context - The context object containing user information\n * @returns The context object with normalized display name\n */\nexport const normalizeDisplayName = (context) => {\n if (!(context === null || context === void 0 ? void 0 : context.user)) {\n return context;\n }\n return Object.assign(Object.assign({}, context), { user: Object.assign(Object.assign({}, context.user), { display_name: context.user.display_name === '' ? null : context.user.display_name }) });\n};\n/**\n * Normalizes the email address in the context object.\n * - Splits multiple emails by comma, semicolon, or space\n * - Trims whitespace\n * - Converts to lowercase\n * - Takes the first valid email if multiple are provided\n *\n * @param context - The context object containing user email\n * @returns The context object with normalized email\n */\nexport const normalizeEmail = (context) => {\n var _a, _b;\n const email = (_a = context.user) === null || _a === void 0 ? void 0 : _a.email;\n if (!email || typeof email !== 'string') {\n return context;\n }\n const emails = email\n .split(/[,; ]+/)\n .map((e) => e.trim().toLowerCase())\n .filter(Boolean);\n return Object.assign(Object.assign({}, context), { user: Object.assign(Object.assign({}, context.user), { email: (_b = emails[0]) !== null && _b !== void 0 ? _b : email }) });\n};\n/**\n * Converts specified user fields to strings if they are not already strings.\n * Handles the following fields: external_id, phone, user_id, contact_id\n * As this fields are used internally by moveo, they must be strings.\n *\n * @param context - The context object containing user information\n * @returns The context object with stringified user fields\n */\nexport const stringifyUserKeys = (context) => {\n if (!context.user) {\n return context;\n }\n const keys = ['external_id', 'phone', 'user_id', 'contact_id'];\n const updatedUser = Object.assign({}, context.user);\n for (const key of keys) {\n const val = updatedUser[key];\n if (val !== undefined && typeof val !== 'string') {\n updatedUser[key] = `${val}`;\n }\n }\n return Object.assign(Object.assign({}, context), { user: updatedUser });\n};\n/**\n * Applies a series of normalization functions to the context object.\n * The normalization pipeline includes:\n * - Normalizing display name\n * - Normalizing email address\n * - Converting user fields to strings\n * - Normalizing tags\n *\n * @param context - The context object to normalize\n * @returns The fully normalized context object\n */\nexport const normalizeContext = (context) => {\n return [\n normalizeDisplayName,\n normalizeEmail,\n stringifyUserKeys,\n normalizeTags,\n ].reduce((acc, fn) => fn(acc), context);\n};\n/**\n * Pattern for unformatted phone number, this is how users\n * typically enter their phone numbers. Validation:\n * - Optional + prefix\n * - 9-20 characters including digits, spaces, hyphens, and parentheses\n * - Allows international format with parentheses\n * - No backtracking possible due to fixed structure\n */\nexport const UNFORMATTED_PHONE_PATTERN = /^\\+?[0-9()-\\s]{9,20}$/;\n/**\n * Pattern for normalized phone number, this is how we\n * store phone numbers in the database. Validation:\n * - Optional + prefix\n * - 7-18 digits only\n * - No spaces, hyphens, or parentheses\n * - No backtracking possible due to fixed structure\n */\nexport const NORMALIZED_PHONE_PATTERN = /^\\+?[0-9]{7,18}$/;\n/**\n * Validates and formats a phone number.\n * @param value - The phone number string to validate\n * @returns Object with validation result and formatted number\n */\nexport const validatePhoneNumber = (value) => {\n if (!value) {\n return { valid: true, formatted: value };\n }\n if (!UNFORMATTED_PHONE_PATTERN.test(value)) {\n return { valid: false };\n }\n const formatted = value.replace(/[()-\\s]/g, '');\n if (!NORMALIZED_PHONE_PATTERN.test(formatted)) {\n return { valid: false };\n }\n return { valid: true, formatted };\n};\n/**\n * Creates a nested object structure from a dot-notation path.\n * @param path - Dot-notation path like 'custom.field' or 'settings.theme.color'\n * @param value - The value to set at the specified path\n * @returns Nested object with the value at the specified path\n */\nexport const setNestedValue = (path, value) => {\n const keys = path.split('.');\n const result = {};\n let current = result;\n for (let i = 0; i < keys.length - 1; i++) {\n current[keys[i]] = {};\n current = current[keys[i]];\n }\n current[keys[keys.length - 1]] = value;\n return result;\n};\n/**\n * Formats a Date object to a local datetime string in ISO format.\n * @param date - The Date object to format\n * @returns Formatted datetime string (YYYY-MM-DDTHH:mm)\n */\nexport const getLocalDateTimeString = (date) => {\n const pad = (n) => n.toString().padStart(2, '0');\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`;\n};\nexport const formatDurationMMSS = (totalSeconds) => {\n const rawSeconds = typeof totalSeconds === 'number' ? totalSeconds : 0;\n const safeSeconds = Number.isFinite(rawSeconds)\n ? Math.max(0, Math.floor(rawSeconds))\n : 0;\n const minutes = Math.floor(safeSeconds / 60);\n const seconds = safeSeconds % 60;\n return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n};\nexport const formatMinutesSecondsMMSS = (minutes, seconds) => {\n const rawMinutes = typeof minutes === 'number' ? minutes : 0;\n const rawSeconds = typeof seconds === 'number' ? seconds : 0;\n const safeMinutes = Number.isFinite(rawMinutes) ? Math.max(0, rawMinutes) : 0;\n const safeSeconds = Number.isFinite(rawSeconds) ? Math.max(0, rawSeconds) : 0;\n return formatDurationMMSS(safeMinutes * 60 + safeSeconds);\n};\nexport const formatTimeHMMA = (date) => {\n const hours = date.getHours();\n const hour12 = hours % 12 || 12;\n const minutes = date.getMinutes().toString().padStart(2, '0');\n const amPm = hours >= 12 ? 'PM' : 'AM';\n return `${hour12}:${minutes} ${amPm}`;\n};\n/**\n * Determines if a survey event is a custom survey (not hosted by moveo.ai).\n * @param event - The survey event to check\n * @returns True if the survey is custom, false if it's a Moveo survey\n */\nexport const isCustomSurveyEvent = (event) => {\n var _a;\n // We might need to find a more reliable way to determine if a survey is custom. This approach cannot have surveys hosted in a moveo.ai domain\n return !((_a = event === null || event === void 0 ? void 0 : event.url) === null || _a === void 0 ? void 0 : _a.includes('moveo.ai'));\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { MicrophoneIcon, PhoneXMarkIcon } from '@heroicons/react/24/solid';\nimport { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { formatDurationMMSS } from '@/util/utils';\nconst THINKING_AUDIO_THRESHOLD = 0.04;\nconst THINKING_DELAY_MS = 1400;\nconst MAX_THINKING_DURATION_MS = 4000;\nconst VoiceWaveIndicator = ({ audioLevel, isMuted = false }) => {\n const prevLevelRef = useRef(0);\n const [smoothedLevel, setSmoothedLevel] = useState(0);\n useEffect(() => {\n // Exponential smoothing: 0.3 weight for new value, 0.7 for previous\n const smoothingFactor = 0.3;\n const targetLevel = audioLevel * 5;\n const newSmoothed = targetLevel * smoothingFactor +\n prevLevelRef.current * (1 - smoothingFactor);\n const changeThreshold = 0.02;\n if (Math.abs(newSmoothed - prevLevelRef.current) > changeThreshold ||\n audioLevel < 0.005) {\n prevLevelRef.current = newSmoothed;\n setSmoothedLevel(newSmoothed);\n }\n }, [audioLevel]);\n const normalizedLevel = Math.min(1, Math.max(0, smoothedLevel));\n const multipliers = [0.4, 0.7, 1.0, 0.7, 0.4];\n const isActive = smoothedLevel > 0.03;\n return (_jsx(\"div\", { className: \"flex h-9 w-9 items-center justify-center gap-[2px]\", children: multipliers.map((multiplier, index) => {\n const scale = isActive\n ? Math.max(0.25, Math.min(0.95, 0.25 + normalizedLevel * multiplier * 0.7))\n : 0.15;\n return (_jsx(\"span\", { className: `h-5 w-[2px] origin-center rounded-full transition-transform duration-150 ${isMuted ? 'bg-slate-400' : 'bg-emerald-500'}`, style: {\n transform: `scaleY(${scale})`,\n opacity: isActive ? 0.7 + normalizedLevel * 0.3 : 0.4,\n } }, index));\n }) }));\n};\nconst PhoneIcon = () => (_jsx(\"svg\", { className: \"h-[18px] w-[18px]\", viewBox: \"0 0 24 24\", fill: \"currentColor\", xmlns: \"http://www.w3.org/2000/svg\", children: _jsx(\"path\", { d: \"M20.01 15.38c-1.23 0-2.42-.2-3.53-.56-.35-.12-.74-.03-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z\" }) }));\nconst ErrorIcon = () => (_jsx(\"svg\", { className: \"h-[18px] w-[18px]\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, xmlns: \"http://www.w3.org/2000/svg\", children: _jsx(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", d: \"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" }) }));\nconst MutedMicrophoneIcon = () => (_jsxs(\"div\", { className: \"relative h-5 w-5\", children: [_jsx(MicrophoneIcon, { className: \"h-5 w-5\" }), _jsx(\"svg\", { className: \"absolute inset-0 h-5 w-5\", viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", children: _jsx(\"path\", { d: \"M3 3L17 17\", stroke: \"currentColor\", strokeWidth: 2.5, strokeLinecap: \"round\" }) })] }));\nconst AudioWidget = ({ onStartCall, onEndCall, onToggleMute, isMuted, onEvent, }) => {\n const { t } = useTranslation();\n const [callState, setCallState] = useState('idle');\n const [errorMessage, setErrorMessage] = useState('');\n const [warningMessage, setWarningMessage] = useState('');\n const [audioLevel, setAudioLevel] = useState(0);\n const [isThinking, setIsThinking] = useState(false);\n const [hasUserSpoken, setHasUserSpoken] = useState(false);\n const [callDuration, setCallDuration] = useState(0);\n const [isMutedState, setIsMutedState] = useState(false);\n const warningTimeoutRef = useRef(null);\n const thinkingTimeoutRef = useRef(null);\n const thinkingAutoClearRef = useRef(null);\n const callStartTimeRef = useRef(null);\n const durationIntervalRef = useRef(null);\n useEffect(() => {\n if (callState === 'connected' && callStartTimeRef.current) {\n durationIntervalRef.current = window.setInterval(() => {\n if (callStartTimeRef.current) {\n setCallDuration(Math.floor((Date.now() - callStartTimeRef.current) / 1000));\n }\n }, 1000);\n }\n else if (durationIntervalRef.current) {\n clearInterval(durationIntervalRef.current);\n durationIntervalRef.current = null;\n }\n return () => {\n if (durationIntervalRef.current) {\n clearInterval(durationIntervalRef.current);\n }\n };\n }, [callState]);\n useEffect(() => {\n const handleStateUpdate = ({ state, message, data, }) => {\n switch (state) {\n case 'audio-level': {\n const source = data !== null && data !== void 0 ? data : message;\n let parsedLevel;\n if (typeof source === 'number') {\n parsedLevel = source;\n }\n else if (typeof source === 'string') {\n parsedLevel = parseFloat(source);\n }\n else {\n parsedLevel = Number(source);\n }\n if (!Number.isNaN(parsedLevel)) {\n setAudioLevel(Math.max(0, parsedLevel));\n }\n break;\n }\n case 'warning':\n if (message) {\n setWarningMessage(message);\n if (warningTimeoutRef.current) {\n clearTimeout(warningTimeoutRef.current);\n }\n warningTimeoutRef.current = window.setTimeout(() => {\n setWarningMessage('');\n warningTimeoutRef.current = null;\n }, 5000);\n }\n break;\n case 'warning-cleared':\n setWarningMessage('');\n if (warningTimeoutRef.current) {\n clearTimeout(warningTimeoutRef.current);\n warningTimeoutRef.current = null;\n }\n break;\n case 'remote-audio':\n if (thinkingTimeoutRef.current) {\n clearTimeout(thinkingTimeoutRef.current);\n thinkingTimeoutRef.current = null;\n }\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n thinkingAutoClearRef.current = null;\n }\n setIsThinking(false);\n setHasUserSpoken(false);\n break;\n case 'error':\n setCallState('error');\n setErrorMessage(message || t('audio_widget.errors.generic'));\n setIsThinking(false);\n setHasUserSpoken(false);\n setCallDuration(0);\n callStartTimeRef.current = null;\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n thinkingAutoClearRef.current = null;\n }\n setTimeout(() => {\n setCallState('idle');\n setErrorMessage('');\n }, 3000);\n break;\n }\n };\n const unsubscribe = onEvent('any', handleStateUpdate);\n return () => {\n unsubscribe();\n if (warningTimeoutRef.current) {\n clearTimeout(warningTimeoutRef.current);\n }\n };\n }, [onEvent, t]);\n useEffect(() => {\n if (callState !== 'connected') {\n if (thinkingTimeoutRef.current) {\n clearTimeout(thinkingTimeoutRef.current);\n thinkingTimeoutRef.current = null;\n }\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n thinkingAutoClearRef.current = null;\n }\n // Defer state updates to avoid synchronous setState in effect\n queueMicrotask(() => {\n if (isThinking) {\n setIsThinking(false);\n }\n if (hasUserSpoken) {\n setHasUserSpoken(false);\n }\n });\n return;\n }\n if (audioLevel > THINKING_AUDIO_THRESHOLD) {\n // Defer state updates to avoid synchronous setState in effect\n queueMicrotask(() => {\n if (!hasUserSpoken) {\n setHasUserSpoken(true);\n }\n if (isThinking) {\n setIsThinking(false);\n }\n });\n if (thinkingTimeoutRef.current) {\n clearTimeout(thinkingTimeoutRef.current);\n thinkingTimeoutRef.current = null;\n }\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n thinkingAutoClearRef.current = null;\n }\n return;\n }\n if (hasUserSpoken && !isThinking && !thinkingTimeoutRef.current) {\n thinkingTimeoutRef.current = window.setTimeout(() => {\n setIsThinking(true);\n thinkingTimeoutRef.current = null;\n }, THINKING_DELAY_MS);\n }\n }, [audioLevel, callState, hasUserSpoken, isThinking]);\n useEffect(() => {\n return () => {\n if (thinkingTimeoutRef.current) {\n clearTimeout(thinkingTimeoutRef.current);\n }\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n }\n };\n }, []);\n useEffect(() => {\n if (isThinking) {\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n }\n thinkingAutoClearRef.current = window.setTimeout(() => {\n setIsThinking(false);\n setHasUserSpoken(false);\n thinkingAutoClearRef.current = null;\n }, MAX_THINKING_DURATION_MS);\n }\n else if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n thinkingAutoClearRef.current = null;\n }\n }, [isThinking]);\n const handleStartCall = async () => {\n try {\n setCallState('connecting');\n setErrorMessage('');\n setAudioLevel(0);\n setIsThinking(false);\n setHasUserSpoken(false);\n setCallDuration(0);\n callStartTimeRef.current = null;\n await onStartCall();\n setCallState('connected');\n callStartTimeRef.current = Date.now();\n setCallDuration(0);\n }\n catch (error) {\n setCallState('error');\n setIsThinking(false);\n setHasUserSpoken(false);\n setErrorMessage(error instanceof Error\n ? error.message\n : t('audio_widget.errors.start_failed'));\n setCallDuration(0);\n callStartTimeRef.current = null;\n }\n };\n const handleEndCall = () => {\n if (thinkingTimeoutRef.current) {\n clearTimeout(thinkingTimeoutRef.current);\n thinkingTimeoutRef.current = null;\n }\n if (durationIntervalRef.current) {\n clearInterval(durationIntervalRef.current);\n durationIntervalRef.current = null;\n }\n onEndCall();\n setCallState('idle');\n setAudioLevel(0);\n setIsThinking(false);\n setHasUserSpoken(false);\n setCallDuration(0);\n setIsMutedState(false);\n callStartTimeRef.current = null;\n if (thinkingAutoClearRef.current) {\n clearTimeout(thinkingAutoClearRef.current);\n thinkingAutoClearRef.current = null;\n }\n };\n const handleToggleMute = () => {\n onToggleMute();\n setIsMutedState(isMuted());\n };\n const showSpinner = callState === 'connecting';\n const buttonToneClass = callState === 'error'\n ? 'bg-rose-50/80 text-rose-600 border border-rose-200/60 shadow-[0_2px_8px_rgba(244,63,94,0.12)] dark:bg-rose-500/15 dark:text-rose-300 dark:border-rose-500/30'\n : callState === 'connected'\n ? 'bg-emerald-50/80 text-emerald-600 border border-emerald-200/60 shadow-[0_2px_8px_rgba(16,185,129,0.15)] hover:bg-gradient-to-br hover:from-red-500 hover:to-red-600 hover:text-white hover:border-red-500/20 hover:shadow-[0_6px_20px_rgba(239,68,68,0.35)] dark:bg-emerald-500/15 dark:text-emerald-300 dark:border-emerald-500/30 dark:hover:from-red-600 dark:hover:to-red-700 transition-colors'\n : callState === 'connecting'\n ? 'bg-sky-50/80 text-sky-600 border border-sky-200/60 shadow-[0_2px_8px_rgba(14,165,233,0.12)] dark:bg-sky-500/15 dark:text-sky-300 dark:border-sky-500/30'\n : 'bg-gradient-to-br from-emerald-500 to-emerald-600 text-white border border-emerald-500/20 shadow-[0_4px_14px_rgba(16,185,129,0.25)] hover:shadow-[0_6px_20px_rgba(16,185,129,0.35)] dark:from-emerald-600 dark:to-emerald-700 dark:border-emerald-500/30';\n const spinnerBorderClass = callState === 'error'\n ? 'border-t-rose-400/60 border-r-rose-300/30 border-b-transparent border-l-transparent'\n : isThinking\n ? 'border-t-sky-400/60 border-r-sky-300/30 border-b-transparent border-l-transparent'\n : 'border-t-sky-500/60 border-r-sky-400/30 border-b-transparent border-l-transparent';\n const statusLabel = callState === 'idle'\n ? t('audio_widget.status.ready')\n : callState === 'connecting'\n ? t('audio_widget.status.connecting')\n : callState === 'connected'\n ? isThinking\n ? t('audio_widget.status.thinking')\n : t('audio_widget.status.on_call')\n : t('audio_widget.status.error');\n const statusToneClass = callState === 'error'\n ? 'text-rose-500 dark:text-rose-400'\n : callState === 'connected'\n ? 'text-emerald-500 dark:text-emerald-400'\n : callState === 'connecting'\n ? 'text-sky-500 dark:text-sky-400'\n : 'text-slate-500 dark:text-slate-400';\n const buttonActionLabel = callState === 'idle' || callState === 'error'\n ? t('audio_widget.actions.start')\n : callState === 'connecting'\n ? t('audio_widget.actions.cancel')\n : t('audio_widget.actions.end');\n const srStatus = callState === 'idle'\n ? t('audio_widget.sr.ready')\n : callState === 'connecting'\n ? t('audio_widget.sr.connecting')\n : callState === 'connected'\n ? isThinking\n ? t('audio_widget.sr.connected_thinking')\n : t('audio_widget.sr.connected')\n : errorMessage\n ? t('audio_widget.sr.error_with_message', { message: errorMessage })\n : t('audio_widget.sr.error');\n const handlePrimaryAction = () => {\n if (callState === 'idle' || callState === 'error') {\n void handleStartCall();\n return;\n }\n handleEndCall();\n };\n return (_jsxs(\"div\", { className: \"relative font-sans text-slate-800 antialiased dark:text-slate-100\", children: [warningMessage && (_jsx(\"div\", { className: \"absolute -top-14 left-1/2 w-max max-w-[18rem] -translate-x-1/2 rounded-full bg-amber-100/90 px-4 py-2 text-xs font-medium text-amber-800 shadow-lg shadow-amber-200/70 ring-1 ring-amber-300 backdrop-blur dark:bg-amber-500/15 dark:text-amber-200 dark:ring-amber-400/40\", role: \"status\", \"aria-live\": \"polite\", children: warningMessage })), _jsxs(\"div\", { className: \"inline-flex min-w-[260px] items-center gap-3 rounded-2xl border border-slate-200/80 bg-white/90 px-5 py-3.5 shadow-sm backdrop-blur-md backdrop-saturate-150 transition-all duration-200 hover:shadow-md dark:border-slate-700/50 dark:bg-slate-900/80 dark:shadow-xl dark:shadow-slate-950/30\", children: [_jsxs(\"button\", { type: \"button\", onClick: handlePrimaryAction, className: `group relative flex h-12 w-12 shrink-0 items-center justify-center rounded-full transition-all duration-200 hover:scale-[1.05] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white active:scale-[0.98] dark:focus-visible:ring-offset-slate-950 ${buttonToneClass}`, \"aria-label\": buttonActionLabel, title: callState === 'error' && errorMessage ? errorMessage : statusLabel, children: [_jsx(\"span\", { className: \"sr-only\", children: srStatus }), callState === 'connected' ? (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: \"absolute inset-0 flex items-center justify-center transition-opacity duration-200 group-hover:opacity-0\", children: _jsx(VoiceWaveIndicator, { audioLevel: audioLevel, isMuted: isMutedState }) }), _jsx(\"div\", { className: \"absolute inset-0 flex items-center justify-center opacity-0 transition-opacity duration-200 group-hover:opacity-100\", children: _jsx(PhoneXMarkIcon, { className: \"h-5 w-5\" }) })] })) : callState === 'error' ? (_jsx(ErrorIcon, {})) : (_jsx(PhoneIcon, {})), showSpinner ? (_jsx(\"span\", { className: `pointer-events-none absolute inset-[-4px] rounded-full border border-transparent ${spinnerBorderClass} animate-spin` })) : null] }), callState === 'connected' && (_jsx(\"button\", { type: \"button\", onClick: handleToggleMute, className: `flex h-12 w-12 shrink-0 items-center justify-center rounded-full transition-all duration-200 hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 active:scale-95 ${isMutedState\n ? 'bg-amber-100 text-amber-700 hover:bg-amber-200 focus-visible:ring-amber-400 dark:bg-amber-500/20 dark:text-amber-300 dark:hover:bg-amber-500/30'\n : 'bg-slate-100 text-slate-600 hover:bg-slate-200 focus-visible:ring-slate-400 dark:bg-slate-700/50 dark:text-slate-300 dark:hover:bg-slate-700'}`, \"aria-label\": isMutedState\n ? t('audio_widget.mute.unmute_microphone')\n : t('audio_widget.mute.mute_microphone'), title: isMutedState\n ? t('audio_widget.mute.unmute')\n : t('audio_widget.mute.mute'), children: isMutedState ? (_jsx(MutedMicrophoneIcon, {})) : (_jsx(MicrophoneIcon, { className: \"h-5 w-5\" })) })), _jsxs(\"div\", { className: \"relative flex flex-col gap-1 overflow-hidden leading-tight\", children: [_jsx(\"span\", { className: `relative z-10 text-[0.65rem] font-medium uppercase tracking-[0.25em] ${statusToneClass} transition-colors duration-200`, children: statusLabel }), callState === 'connected' && (_jsx(\"span\", { className: \"animate-in fade-in slide-in-from-bottom-1 relative z-10 font-mono text-[0.8rem] text-slate-600 transition-all duration-500 dark:text-slate-400\", children: formatDurationMMSS(callDuration) }))] })] })] }));\n};\nexport { AudioWidget };\n","import { Device, Call } from '@twilio/voice-sdk';\nimport debug from 'debug';\nimport { createElement } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { AudioWidget } from '@/newComponents/AudioWidget';\n// Widget state event types\nvar WidgetStateEvent;\n(function (WidgetStateEvent) {\n WidgetStateEvent[\"AUDIO_LEVEL\"] = \"audio-level\";\n WidgetStateEvent[\"WARNING\"] = \"warning\";\n WidgetStateEvent[\"WARNING_CLEARED\"] = \"warning-cleared\";\n WidgetStateEvent[\"REMOTE_AUDIO\"] = \"remote-audio\";\n WidgetStateEvent[\"ERROR\"] = \"error\";\n})(WidgetStateEvent || (WidgetStateEvent = {}));\n// Warning message mappings for call quality issues\nconst CALL_QUALITY_WARNINGS = {\n 'high-rtt': 'High network latency detected',\n 'low-mos': 'Poor call quality detected',\n 'high-jitter': 'Network instability detected',\n 'high-packet-loss': 'Packet loss detected',\n 'constant-audio-input-level': 'Microphone may be muted',\n 'constant-audio-output-level': 'Remote audio unchanged',\n};\nconst REMOTE_AUDIO_THRESHOLD = 0.02;\nconst NOISE_GATE_THRESHOLD = 0.01; // Minimum level to register as audio activity\n/**\n * Handles audio level monitoring for voice activity detection\n */\nclass AudioLevelMonitor {\n constructor(onLevelUpdate, logger) {\n this.analyserNode = null;\n this.localAudioSource = null;\n this.audioLevelAnimationId = null;\n this.audioLevelContext = null;\n this.onLevelUpdate = onLevelUpdate;\n this.log = logger;\n }\n start(localStream) {\n try {\n // Create a separate audio context for level monitoring\n this.audioLevelContext = new AudioContext();\n this.localAudioSource =\n this.audioLevelContext.createMediaStreamSource(localStream);\n this.analyserNode = this.audioLevelContext.createAnalyser();\n // Configure analyser for voice detection\n this.analyserNode.fftSize = 256;\n this.analyserNode.smoothingTimeConstant = 0.3;\n // Connect source to analyser\n this.localAudioSource.connect(this.analyserNode);\n // Create buffer for audio data\n const dataArray = new Float32Array(this.analyserNode.fftSize);\n const checkAudioLevel = () => {\n if (!this.analyserNode) {\n this.stop();\n return;\n }\n // Get time domain data\n this.analyserNode.getFloatTimeDomainData(dataArray);\n // Calculate RMS (Root Mean Square) for volume\n let sum = 0;\n for (const amplitude of dataArray) {\n sum += amplitude * amplitude;\n }\n const rms = Math.sqrt(sum / dataArray.length);\n // Normalize to 0-1 range (adjust multiplier based on testing)\n const normalizedLevel = Math.min(1, rms * 10);\n // Apply noise gate threshold\n const gatedLevel = normalizedLevel > NOISE_GATE_THRESHOLD ? normalizedLevel : 0;\n // Emit audio level update\n this.onLevelUpdate(gatedLevel.toFixed(3));\n // Continue monitoring\n this.audioLevelAnimationId = requestAnimationFrame(checkAudioLevel);\n };\n // Start monitoring\n checkAudioLevel();\n }\n catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.log(`Failed to start audio level monitoring: ${message}`, error);\n }\n }\n stop() {\n if (this.audioLevelAnimationId !== null) {\n cancelAnimationFrame(this.audioLevelAnimationId);\n this.audioLevelAnimationId = null;\n }\n if (this.localAudioSource) {\n try {\n this.localAudioSource.disconnect();\n }\n catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.log(`Error disconnecting audio source: ${message}`, error);\n }\n this.localAudioSource = null;\n }\n if (this.audioLevelContext) {\n void this.audioLevelContext.close().catch((error) => {\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.log(`Error closing audio level context: ${message}`, error);\n });\n this.audioLevelContext = null;\n }\n this.analyserNode = null;\n // Send zero level to clear the indicator\n this.onLevelUpdate('0');\n }\n}\n/**\n * AudioController manages the Twilio Voice connection and audio widget UI\n */\nexport class AudioController {\n constructor(config) {\n this.twilioDevice = null;\n this.activeCall = null;\n this.widgetContainer = null;\n this.widgetRoot = null;\n this.audioMonitor = null;\n this.eventListeners = new Map();\n this.config = {\n host: config.host || 'https://channels.moveo.ai',\n integrationId: config.integrationId,\n };\n this.log = debug(`moveo:audio:controller:${config.integrationId}`);\n }\n /**\n * Initialize the audio widget\n */\n async init() {\n // Validate integration before initializing widget\n await this.validateIntegration();\n // Create and mount widget container\n this.createWidgetContainer();\n // Render the AudioWidget React component\n this.renderWidget();\n this.log('AudioController initialized');\n return this;\n }\n /**\n * Validate the integration exists and is accessible\n */\n async validateIntegration() {\n // Try new twiliovoice endpoint first\n const twilioVoiceUrl = `${this.config.host}/v1/twiliovoice/${encodeURIComponent(this.config.integrationId)}`;\n try {\n const response = await fetch(twilioVoiceUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n if (response.ok) {\n this.log('Integration validated using twiliovoice endpoint');\n return;\n }\n // If twiliovoice endpoint returns 404, try legacy web endpoint\n if (response.status === 404) {\n this.log('Twiliovoice endpoint not found, trying legacy web endpoint');\n const webUrl = `${this.config.host}/v1/web/${encodeURIComponent(this.config.integrationId)}`;\n const webResponse = await fetch(webUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n if (webResponse.ok) {\n this.log('Integration validated using legacy web endpoint (backward compatibility)');\n return;\n }\n if (webResponse.status === 404) {\n throw new Error(`Integration ID \"${this.config.integrationId}\" was not found.`);\n }\n throw new Error(`Unable to validate integration (status ${webResponse.status} ${webResponse.statusText}).`);\n }\n // Non-404 error from twiliovoice endpoint\n throw new Error(`Unable to validate integration (status ${response.status} ${response.statusText}).`);\n }\n catch (error) {\n if (error instanceof Error) {\n // Re-throw with context if it's already an Error\n if (error.message.includes('Integration ID') ||\n error.message.includes('Unable to validate')) {\n throw error;\n }\n // Network or other errors\n throw new Error(`Failed to validate integration \"${this.config.integrationId}\": ${error.message}`);\n }\n throw new Error(`Failed to validate integration \"${this.config.integrationId}\": Unknown error`);\n }\n }\n /**\n * Create the DOM container for the audio widget\n */\n createWidgetContainer() {\n this.widgetContainer = document.createElement('div');\n this.widgetContainer.id = 'moveo-audio-widget';\n this.widgetContainer.style.position = 'fixed';\n this.widgetContainer.style.zIndex = '2147483647'; // Max z-index\n this.widgetContainer.style.bottom = '20px';\n this.widgetContainer.style.right = '20px';\n document.body.appendChild(this.widgetContainer);\n }\n /**\n * Render the AudioWidget React component\n */\n renderWidget() {\n if (!this.widgetContainer) {\n throw new Error('Widget container not created');\n }\n this.widgetRoot = createRoot(this.widgetContainer);\n this.widgetRoot.render(createElement(AudioWidget, {\n onStartCall: this.startCall.bind(this),\n onEndCall: this.endCall.bind(this),\n onToggleMute: this.toggleMute.bind(this),\n isMuted: this.isMuted.bind(this),\n onEvent: this.on.bind(this),\n }));\n }\n /**\n * Get access token from backend\n */\n async getAccessToken() {\n try {\n const tokenUrl = `${this.config.host}/v1/twiliovoice/${this.config.integrationId}/token`;\n const response = await fetch(tokenUrl, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n });\n if (!response.ok) {\n throw new Error(`Failed to get token: ${response.status} ${response.statusText}`);\n }\n const data = (await response.json());\n if (!data.token) {\n throw new Error('Token not found in response');\n }\n this.log('Token obtained', { identity: data.identity });\n return data.token;\n }\n catch (error) {\n this.handleError(error, 'Token fetch failed');\n throw error;\n }\n }\n /**\n * Initialize Twilio Device\n */\n async initializeTwilioDevice() {\n try {\n const token = await this.getAccessToken();\n const deviceConfig = {\n codecPreferences: [Call.Codec.Opus, Call.Codec.PCMU],\n logLevel: 1, // DEBUG level\n };\n this.twilioDevice = new Device(token, deviceConfig);\n // Set up event listeners\n this.setupDeviceEventListeners();\n this.log('Twilio Device initialized with browser default audio settings');\n return this.twilioDevice;\n }\n catch (error) {\n this.handleError(error, 'Twilio Device initialization failed');\n throw error;\n }\n }\n /**\n * Setup Twilio Device event listeners (simplified for outbound calls only)\n */\n setupDeviceEventListeners() {\n if (!this.twilioDevice) {\n return;\n }\n // Handle device errors\n this.twilioDevice.on('error', (error) => {\n const message = this.handleError(error, 'Device error');\n this.emit(WidgetStateEvent.ERROR, message);\n });\n // Track when call disconnects\n this.twilioDevice.on('disconnect', (call) => {\n var _a;\n this.log('Call disconnected', { callSid: (_a = call === null || call === void 0 ? void 0 : call.parameters) === null || _a === void 0 ? void 0 : _a.CallSid });\n this.activeCall = null;\n });\n }\n /**\n * Setup call-specific event listeners\n */\n setupCallEventListeners(call) {\n call.on('accept', () => {\n this.log('Call accepted');\n // Start audio level monitoring for voice activity indication\n const localStream = call.getLocalStream();\n if (localStream) {\n // Create audio monitor with callback to update widget\n this.audioMonitor = new AudioLevelMonitor((level) => this.emit(WidgetStateEvent.AUDIO_LEVEL, level, Number(level)), this.log);\n this.audioMonitor.start(localStream);\n }\n });\n call.on('disconnect', () => {\n var _a;\n (_a = this.audioMonitor) === null || _a === void 0 ? void 0 : _a.stop();\n this.audioMonitor = null;\n });\n call.on('volume', (_inputVolume, outputVolume) => {\n if (outputVolume > REMOTE_AUDIO_THRESHOLD) {\n this.emit(WidgetStateEvent.REMOTE_AUDIO, outputVolume.toFixed(3), outputVolume);\n }\n });\n call.on('error', (error) => {\n var _a;\n const message = this.handleError(error, 'Call error');\n (_a = this.audioMonitor) === null || _a === void 0 ? void 0 : _a.stop();\n this.audioMonitor = null;\n this.emit(WidgetStateEvent.ERROR, message);\n });\n // Voice Insights: Network quality warnings\n call.on('warning', (warningName, warningData) => {\n this.log(`Call quality warning: ${warningName}`, warningData);\n // Surface quality warnings to the UI\n const warningMessage = CALL_QUALITY_WARNINGS[warningName] ||\n `Call quality issue: ${warningName}`;\n this.emit(WidgetStateEvent.WARNING, warningMessage);\n });\n // When warnings are cleared\n call.on('warning-cleared', (warningName) => {\n this.log(`Call quality warning cleared: ${warningName}`);\n this.emit(WidgetStateEvent.WARNING_CLEARED, warningName);\n });\n }\n /**\n * Handle errors centrally\n */\n handleError(error, context) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.log(`${context}: ${message}`, error);\n return message;\n }\n /**\n * Notify listeners about controller state changes.\n */\n emit(state, message, data) {\n const detail = { state, message, data };\n this.emitEvent(state, detail);\n }\n /**\n * Start a call\n */\n async startCall() {\n var _a;\n try {\n // Request microphone permission (using browser defaults)\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: true,\n });\n stream.getTracks().forEach((track) => track.stop());\n // Initialize device if needed (lazy initialization)\n if (!this.twilioDevice) {\n await this.initializeTwilioDevice();\n }\n // Make outbound call\n const call = await this.twilioDevice.connect({\n params: { integration_id: this.config.integrationId },\n });\n this.activeCall = call;\n this.setupCallEventListeners(call);\n this.log('Call initiated', {\n callSid: (_a = call.parameters) === null || _a === void 0 ? void 0 : _a.CallSid,\n status: call.status(),\n });\n }\n catch (error) {\n const message = this.handleError(error, 'Failed to start call');\n this.emit(WidgetStateEvent.ERROR, message);\n throw error;\n }\n }\n /**\n * End the current call\n */\n endCall() {\n try {\n if (this.activeCall) {\n this.activeCall.disconnect();\n }\n else if (this.twilioDevice) {\n this.twilioDevice.disconnectAll();\n }\n }\n catch (error) {\n this.handleError(error, 'Error ending call');\n }\n }\n /**\n * Toggle mute/unmute for the current call\n */\n toggleMute() {\n try {\n if (this.activeCall) {\n const currentlyMuted = this.activeCall.isMuted();\n this.activeCall.mute(!currentlyMuted);\n this.log(currentlyMuted ? 'Call unmuted' : 'Call muted');\n }\n }\n catch (error) {\n this.handleError(error, 'Error toggling mute');\n }\n }\n /**\n * Check if the current call is muted\n */\n isMuted() {\n var _a, _b;\n return (_b = (_a = this.activeCall) === null || _a === void 0 ? void 0 : _a.isMuted()) !== null && _b !== void 0 ? _b : false;\n }\n /**\n * Destroy the audio widget and clean up\n */\n destroy() {\n var _a;\n // Stop audio monitoring\n (_a = this.audioMonitor) === null || _a === void 0 ? void 0 : _a.stop();\n this.audioMonitor = null;\n // Clear registered listeners\n this.eventListeners.clear();\n // End any active calls\n if (this.activeCall) {\n this.activeCall.disconnect();\n }\n // Destroy Twilio device\n if (this.twilioDevice) {\n this.twilioDevice.destroy();\n this.twilioDevice = null;\n }\n // Unmount React component and remove container\n if (this.widgetRoot) {\n this.widgetRoot.unmount();\n this.widgetRoot = null;\n }\n if (this.widgetContainer) {\n document.body.removeChild(this.widgetContainer);\n this.widgetContainer = null;\n }\n }\n /**\n * Subscribe to controller events.\n *\n * Returns a disposer that removes the handler when invoked.\n */\n on(event, handler) {\n var _a;\n const listeners = (_a = this.eventListeners.get(event)) !== null && _a !== void 0 ? _a : new Set();\n listeners.add(handler);\n this.eventListeners.set(event, listeners);\n return () => this.off(event, handler);\n }\n /**\n * Remove a previously registered event handler.\n */\n off(event, handler) {\n const listeners = this.eventListeners.get(event);\n if (!listeners) {\n return;\n }\n listeners.delete(handler);\n if (listeners.size === 0) {\n this.eventListeners.delete(event);\n }\n }\n /**\n * Invoke listeners for the specific event and the wildcard channel.\n */\n emitEvent(event, detail) {\n const invoke = (name) => {\n const listeners = this.eventListeners.get(name);\n if (!listeners || listeners.size === 0) {\n return;\n }\n listeners.forEach((listener) => {\n try {\n listener(detail);\n }\n catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown listener error';\n this.log(`Listener error for event \"${name}\": ${message}`, error);\n }\n });\n };\n invoke(event);\n invoke('any');\n }\n}\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n return path.join(opts?.keySeparator ?? '.');\n}\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n if (usingLegacyFormatFunction) {\n this.logger.deprecate(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n }\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, {\n ...this.options,\n ...opts\n });\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, {\n ...this.options,\n ...opts\n });\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) clone.services.interpolator = new Interpolator(mergedOptions);\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const {\n slice,\n forEach\n} = [];\nfunction defaults(obj) {\n forEach.call(slice.call(arguments, 1), source => {\n if (source) {\n for (const prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction hasXSS(input) {\n if (typeof input !== 'string') return false;\n\n // Common XSS attack patterns\n const xssPatterns = [/<\\s*script.*?>/i, /<\\s*\\/\\s*script\\s*>/i, /<\\s*img.*?on\\w+\\s*=/i, /<\\s*\\w+\\s*on\\w+\\s*=.*?>/i, /javascript\\s*:/i, /vbscript\\s*:/i, /expression\\s*\\(/i, /eval\\s*\\(/i, /alert\\s*\\(/i, /document\\.cookie/i, /document\\.write\\s*\\(/i, /window\\.location/i, /innerHTML/i];\n return xssPatterns.some(pattern => pattern.test(input));\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = function (name, val) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n path: '/'\n };\n const opt = options;\n const value = encodeURIComponent(val);\n let str = `${name}=${value}`;\n if (opt.maxAge > 0) {\n const maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += `; Max-Age=${Math.floor(maxAge)}`;\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n if (opt.sameSite) {\n const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n if (opt.partitioned) str += '; Partitioned';\n return str;\n};\nconst cookie = {\n create(name, value, minutes, domain) {\n let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, value, cookieOptions);\n },\n read(name) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove(name, domain) {\n this.create(name, '', -1, domain);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n // Deconstruct the options object and extract the lookupCookie property\n lookup(_ref) {\n let {\n lookupCookie\n } = _ref;\n if (lookupCookie && typeof document !== 'undefined') {\n return cookie.read(lookupCookie) || undefined;\n }\n return undefined;\n },\n // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupCookie,\n cookieMinutes,\n cookieDomain,\n cookieOptions\n } = _ref2;\n if (lookupCookie && typeof document !== 'undefined') {\n cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n // Deconstruct the options object and extract the lookupQuerystring property\n lookup(_ref) {\n let {\n lookupQuerystring\n } = _ref;\n let found;\n if (typeof window !== 'undefined') {\n let {\n search\n } = window.location;\n if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n const query = search.substring(1);\n const params = query.split('&');\n for (let i = 0; i < params.length; i++) {\n const pos = params[i].indexOf('=');\n if (pos > 0) {\n const key = params[i].substring(0, pos);\n if (key === lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\n\nvar hash = {\n name: 'hash',\n // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property\n lookup(_ref) {\n let {\n lookupHash,\n lookupFromHashIndex\n } = _ref;\n let found;\n if (typeof window !== 'undefined') {\n const {\n hash\n } = window.location;\n if (hash && hash.length > 2) {\n const query = hash.substring(1);\n if (lookupHash) {\n const params = query.split('&');\n for (let i = 0; i < params.length; i++) {\n const pos = params[i].indexOf('=');\n if (pos > 0) {\n const key = params[i].substring(0, pos);\n if (key === lookupHash) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n if (found) return found;\n if (!found && lookupFromHashIndex > -1) {\n const language = hash.match(/\\/([a-zA-Z-]*)/g);\n if (!Array.isArray(language)) return undefined;\n const index = typeof lookupFromHashIndex === 'number' ? lookupFromHashIndex : 0;\n return language[index]?.replace('/', '');\n }\n }\n }\n return found;\n }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = typeof window !== 'undefined' && window.localStorage !== null;\n if (!hasLocalStorageSupport) {\n return false;\n }\n const testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: 'localStorage',\n // Deconstruct the options object and extract the lookupLocalStorage property\n lookup(_ref) {\n let {\n lookupLocalStorage\n } = _ref;\n if (lookupLocalStorage && localStorageAvailable()) {\n return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n }\n return undefined;\n },\n // Deconstruct the options object and extract the lookupLocalStorage property\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupLocalStorage\n } = _ref2;\n if (lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(lookupLocalStorage, lng);\n }\n }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = typeof window !== 'undefined' && window.sessionStorage !== null;\n if (!hasSessionStorageSupport) {\n return false;\n }\n const testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup(_ref) {\n let {\n lookupSessionStorage\n } = _ref;\n if (lookupSessionStorage && sessionStorageAvailable()) {\n return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n }\n return undefined;\n },\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupSessionStorage\n } = _ref2;\n if (lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup(options) {\n const found = [];\n if (typeof navigator !== 'undefined') {\n const {\n languages,\n userLanguage,\n language\n } = navigator;\n if (languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (let i = 0; i < languages.length; i++) {\n found.push(languages[i]);\n }\n }\n if (userLanguage) {\n found.push(userLanguage);\n }\n if (language) {\n found.push(language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n // Deconstruct the options object and extract the htmlTag property\n lookup(_ref) {\n let {\n htmlTag\n } = _ref;\n let found;\n const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n found = internalHtmlTag.getAttribute('lang');\n }\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n // Deconstruct the options object and extract the lookupFromPathIndex property\n lookup(_ref) {\n let {\n lookupFromPathIndex\n } = _ref;\n if (typeof window === 'undefined') return undefined;\n const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (!Array.isArray(language)) return undefined;\n const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n return language[index]?.replace('/', '');\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup(_ref) {\n let {\n lookupFromSubdomainIndex\n } = _ref;\n // If given get the subdomain index else 1\n const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n // if there is no match (null) return undefined\n if (!language) return undefined;\n // return the given group match\n return language[internalLookupFromSubdomainIndex];\n }\n};\n\n// some environments, throws when accessing document.cookie\nlet canCookies = false;\ntry {\n // eslint-disable-next-line no-unused-expressions\n document.cookie;\n canCookies = true;\n // eslint-disable-next-line no-empty\n} catch (e) {}\nconst order = ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'];\nif (!canCookies) order.splice(1, 1);\nconst getDefaults = () => ({\n order,\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'],\n // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n\n convertDetectedLanguage: l => l\n});\nclass Browser {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n init() {\n let services = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n languageUtils: {}\n };\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n this.options.convertDetectedLanguage = l => l.replace('-', '_');\n }\n\n // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n this.addDetector(hash);\n }\n addDetector(detector) {\n this.detectors[detector.name] = detector;\n return this;\n }\n detect() {\n let detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n let detected = [];\n detectionOrder.forEach(detectorName => {\n if (this.detectors[detectorName]) {\n let lookup = this.detectors[detectorName].lookup(this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n detected = detected.filter(d => d !== undefined && d !== null && !hasXSS(d)).map(d => this.options.convertDetectedLanguage(d));\n if (this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n cacheUserLanguage(lng) {\n let caches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(cacheName => {\n if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n });\n }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nexport function hasXMLHttpRequest() {\n return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\nfunction isPromise(maybePromise) {\n return !!maybePromise && typeof maybePromise.then === 'function';\n}\nexport function makePromise(maybePromise) {\n if (isPromise(maybePromise)) {\n return maybePromise;\n }\n return Promise.resolve(maybePromise);\n}","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { hasXMLHttpRequest } from './utils.js';\nvar fetchApi = typeof fetch === 'function' ? fetch : undefined;\nif (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch;\n} else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch;\n}\nvar XmlHttpRequestApi;\nif (hasXMLHttpRequest()) {\n if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n XmlHttpRequestApi = global.XMLHttpRequest;\n } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n XmlHttpRequestApi = window.XMLHttpRequest;\n }\n}\nvar ActiveXObjectApi;\nif (typeof ActiveXObject === 'function') {\n if (typeof global !== 'undefined' && global.ActiveXObject) {\n ActiveXObjectApi = global.ActiveXObject;\n } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n ActiveXObjectApi = window.ActiveXObject;\n }\n}\nif (typeof fetchApi !== 'function') fetchApi = undefined;\nif (!fetchApi && !XmlHttpRequestApi && !ActiveXObjectApi) {\n try {\n import('cross-fetch').then(function (mod) {\n fetchApi = mod.default;\n }).catch(function () {});\n } catch (e) {}\n}\nvar addQueryString = function addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '';\n for (var paramName in params) {\n queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n }\n if (!queryString) return url;\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n return url;\n};\nvar fetchIt = function fetchIt(url, fetchOptions, callback, altFetch) {\n var resolver = function resolver(response) {\n if (!response.ok) return callback(response.statusText || 'Error', {\n status: response.status\n });\n response.text().then(function (data) {\n callback(null, {\n status: response.status,\n data: data\n });\n }).catch(callback);\n };\n if (altFetch) {\n var altResponse = altFetch(url, fetchOptions);\n if (altResponse instanceof Promise) {\n altResponse.then(resolver).catch(callback);\n return;\n }\n }\n if (typeof fetch === 'function') {\n fetch(url, fetchOptions).then(resolver).catch(callback);\n } else {\n fetchApi(url, fetchOptions).then(resolver).catch(callback);\n }\n};\nvar omitFetchOptions = false;\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n var headers = _objectSpread({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n if (typeof window === 'undefined' && typeof global !== 'undefined' && typeof global.process !== 'undefined' && global.process.versions && global.process.versions.node) {\n headers['User-Agent'] = \"i18next-http-backend (node/\".concat(global.process.version, \"; \").concat(global.process.platform, \" \").concat(global.process.arch, \")\");\n }\n if (payload) headers['Content-Type'] = 'application/json';\n var reqOptions = typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions;\n var fetchOptions = _objectSpread({\n method: payload ? 'POST' : 'GET',\n body: payload ? options.stringify(payload) : undefined,\n headers: headers\n }, omitFetchOptions ? {} : reqOptions);\n var altFetch = typeof options.alternateFetch === 'function' && options.alternateFetch.length >= 1 ? options.alternateFetch : undefined;\n try {\n fetchIt(url, fetchOptions, callback, altFetch);\n } catch (e) {\n if (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf('not implemented') < 0) {\n return callback(e);\n }\n try {\n Object.keys(reqOptions).forEach(function (opt) {\n delete fetchOptions[opt];\n });\n fetchIt(url, fetchOptions, callback, altFetch);\n omitFetchOptions = true;\n } catch (err) {\n callback(err);\n }\n }\n};\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n if (payload && _typeof(payload) === 'object') {\n payload = addQueryString('', payload).slice(1);\n }\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n try {\n var x = XmlHttpRequestApi ? new XmlHttpRequestApi() : new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n x.open(payload ? 'POST' : 'GET', url, 1);\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n x.withCredentials = !!options.withCredentials;\n if (payload) {\n x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n if (x.overrideMimeType) {\n x.overrideMimeType('application/json');\n }\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n x.onreadystatechange = function () {\n x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n status: x.status,\n data: x.responseText\n });\n };\n x.send(payload);\n } catch (e) {\n console && console.log(e);\n }\n};\nvar request = function request(options, url, payload, callback) {\n if (typeof payload === 'function') {\n callback = payload;\n payload = undefined;\n }\n callback = callback || function () {};\n if (fetchApi && url.indexOf('file:') !== 0) {\n return requestWithFetch(options, url, payload, callback);\n }\n if (hasXMLHttpRequest() || typeof ActiveXObject === 'function') {\n return requestWithXmlHttpRequest(options, url, payload, callback);\n }\n callback(new Error('No fetch and no xhr implementation found!'));\n};\nexport default request;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { makePromise } from './utils.js';\nimport request from './request.js';\nvar getDefaults = function getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n parse: function parse(data) {\n return JSON.parse(data);\n },\n stringify: JSON.stringify,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n parseLoadPayload: function parseLoadPayload(languages, namespaces) {\n return undefined;\n },\n request: request,\n reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n customHeaders: {},\n queryStringParams: {},\n crossDomain: false,\n withCredentials: false,\n overrideMimeType: false,\n requestOptions: {\n mode: 'cors',\n credentials: 'same-origin',\n cache: 'default'\n }\n };\n};\nvar Backend = function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.services = services;\n this.options = options;\n this.allOptions = allOptions;\n this.type = 'backend';\n this.init(services, options, allOptions);\n }\n return _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), this.options || {}), options);\n this.allOptions = allOptions;\n if (this.services && this.options.reloadInterval) {\n var timer = setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n if (_typeof(timer) === 'object' && typeof timer.unref === 'function') timer.unref();\n }\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n this._readAny(languages, languages, namespaces, namespaces, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n this._readAny([language], language, [namespace], namespace, callback);\n }\n }, {\n key: \"_readAny\",\n value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n var _this2 = this;\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n loadPath = makePromise(loadPath);\n loadPath.then(function (resolvedLoadPath) {\n if (!resolvedLoadPath) return callback(null, {});\n var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n });\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback, languages, namespaces) {\n var _this3 = this;\n var lng = typeof languages === 'string' ? [languages] : languages;\n var ns = typeof namespaces === 'string' ? [namespaces] : namespaces;\n var payload = this.options.parseLoadPayload(lng, ns);\n this.options.request(this.options, url, payload, function (err, res) {\n if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n if (!res && err && err.message) {\n var errorMessage = err.message.toLowerCase();\n var isNetworkError = ['failed', 'fetch', 'network', 'load'].find(function (term) {\n return errorMessage.indexOf(term) > -1;\n });\n if (isNetworkError) {\n return callback('failed loading ' + url + ': ' + err.message, true);\n }\n }\n if (err) return callback(err, false);\n var ret, parseErr;\n try {\n if (typeof res.data === 'string') {\n ret = _this3.options.parse(res.data, languages, namespaces);\n } else {\n ret = res.data;\n }\n } catch (e) {\n parseErr = 'failed parsing ' + url + ' to json';\n }\n if (parseErr) return callback(parseErr, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue, callback) {\n var _this4 = this;\n if (!this.options.addPath) return;\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n var finished = 0;\n var dataArray = [];\n var resArray = [];\n languages.forEach(function (lng) {\n var addPath = _this4.options.addPath;\n if (typeof _this4.options.addPath === 'function') {\n addPath = _this4.options.addPath(lng, namespace);\n }\n var url = _this4.services.interpolator.interpolate(addPath, {\n lng: lng,\n ns: namespace\n });\n _this4.options.request(_this4.options, url, payload, function (data, res) {\n finished += 1;\n dataArray.push(data);\n resArray.push(res);\n if (finished === languages.length) {\n if (typeof callback === 'function') callback(dataArray, resArray);\n }\n });\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this5.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n}();\nBackend.type = 'backend';\nexport default Backend;","import i18next from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport Backend from 'i18next-http-backend';\nimport { initReactI18next } from 'react-i18next';\nimport { languageByCountryCode } from '@/config/constants';\nconst detection = {\n // order and from where user language should be detected\n order: ['cookie', 'localStorage', 'navigator'],\n // keys or params to lookup language from\n lookupCookie: 'moveo_web_client_language',\n lookupLocalStorage: 'moveo_web_client_language',\n // cache user language on\n caches: ['localStorage', 'cookie'],\n};\ni18next\n .use(LanguageDetector)\n .use(initReactI18next)\n .use(Backend)\n .init({\n supportedLngs: Object.keys(languageByCountryCode),\n load: 'all',\n backend: {\n loadPath: '/public/locales/{{lng}}.json',\n },\n fallbackLng: 'en',\n debug: false,\n interpolation: {\n escapeValue: false,\n },\n react: {\n useSuspense: false,\n },\n detection,\n});\n// eslint-disable-next-line import/no-default-export\nexport default i18next;\n","/**\n * Mapping of country codes to their respective language names.\n * Provides a record of language names based on ISO country codes.\n */\nexport const languageByCountryCode = {\n en: 'English',\n el: 'Ελληνικά',\n es: 'Español',\n pt: 'Português',\n 'pt-br': 'Português brasileiro',\n it: 'Italiano',\n fr: 'Français',\n da: 'Dansk',\n de: 'Deutsch',\n ro: 'Română',\n bg: 'Български',\n cs: 'Čeština',\n pl: 'Polski',\n id: 'Bahasa Indonesia',\n me: 'Montenegrin',\n nl: 'Nederlands',\n 'nl-be': 'Nederlands (België)',\n sr: 'Српски',\n sv: 'Svenska',\n ru: 'Русский',\n sq: 'Shqip',\n ar: 'العربية',\n ja: '日本語',\n zh: '中文',\n tr: 'Türkçe',\n tl: 'Tagalog',\n};\nexport const DEFAULT_BACKGROUND_COLOR = '#1B66D6';\nexport const DEFAULT_ACCENT_COLOR = '#ffffff';\n/**\n * URL of the next version of the web client.\n */\nexport const WEB_CLIENT_NEXT_URL = 'https://web-client.dev.moveo.ai';\n/**\n * URL of the production web client.\n */\nexport const WEB_CLIENT_URL = 'https://web-client.moveo.ai';\n/**\n * URL of the new web client.\n */\nexport const WEB_CLIENT_URL_NEW = 'https://web.moveo.ai';\nexport const WEB_CLIENT_URL_NEW_DEV = 'https://web.dev.moveo.ai';\n/**\n * Timeout duration in milliseconds for modals.\n * Specifies the time duration for modal timeouts.\n * The value is 400 milliseconds.\n */\nexport const MODAL_TIMEOUT = 400;\n/**\n * Minimum number of messages required to show a survey.\n * Specifies the minimum number of messages required to trigger a survey display.\n * The value is 3.\n */\nexport const MINIMUM_MESSAGES_TO_SHOW_SURVEY = 3;\nexport const LOCAL_EVENT = 'local-storage';\nexport const STORAGE_EVENT = 'storage';\n/**\n * The size in pixels of the custom launcher image.\n * The value is 72 pixels.\n **/\nexport const CUSTOM_LAUNCHER_SIZE_PX = '72px';\n/**\n * The width of the expanded chat.\n * The value is 672 pixels.\n **/\nexport const EXPANDED_CHAT_WIDTH = '672px';\n/**\n * The size in pixels of the bubble image.\n * The value is 60 pixels.\n **/\nexport const BUBBLE_SIZE_PX = '60px';\n/**\n * The maximum number of minutes that user can be inactive before we consider\n * them to reconnect to the server.\n * The value is 30 minutes.\n */\nexport const MAX_INACTIVITY_TO_RECONNECT_MS = 30 * 60 * 1000; // 30 minutes\n/**\n * The interval, in milliseconds, at which the inactivity is checked.\n * The value is 10 seconds.\n * */\nexport const CHECK_INACTIVITY_INTERVAL_MS = 10 * 1000; // 10 seconds\n/**\n * The interval to use when updating the visitor activity in local storage\n * The value is 3 seconds.\n * */\nexport const UPDATE_ACTIVITY_INTERVAL_MS = 3 * 1000; // 3 seconds\n/**\n * The duration, in milliseconds, of inactivity timeout.\n * This variable represents the amount of time that can elapse without any user activity\n * before considering the user as inactive.\n * The value is 10 minutes.\n */\nexport const INACTIVITY_TIMEOUT_MS = 10 * 60 * 1000;\n/**\n * The maximum duration, in milliseconds, that the compose indicator\n * will be displayed\n * The value is 20 seconds.\n */\nexport const MAX_TYPING_INDICATOR_MS = 20000;\n/**\n * The maximum duration, in milliseconds, that can elapse before\n * considering the user as having stopped typing.\n * The value is 1.1 seconds.\n */\nexport const MAX_TYPING_DURATION_MS = 1100;\n/**\n * The maximum length, in characters for user messages.\n * The value is 280 characters.\n */\nexport const MAX_CHARS = 280;\nexport const NEW_MAX_CHARS = 512;\n/**\n * The interval, in milliseconds, at which the last activity is sent to the server.\n * The value is 10 seconds.\n */\nexport const DEFAULT_UPDATE_INTERVAL_MS = 10 * 1000; // 10 seconds\n/**\n * The interval, in milliseconds, at which the session id is checked in\n * local storage. This is used to detect if the user create another session\n * in another tab.\n * The value is 5 seconds.\n **/\nexport const SESSION_ID_CHECK_INTERVAL_MS = 5000; // 5 seconds\nexport const isArabic = (text) => {\n const arabicRegex = /[\\u0600-\\u06FF]/;\n return arabicRegex.test(text) ? 'rtl' : 'ltr';\n};\nexport const NUMBER_OF_ACCEPTED_FILES = 4;\nexport const ONE_MB = 1024 * 1024;\nexport const MAX_FILE_SIZE = 20 * ONE_MB;\nexport const ACCEPTED_FILE_TYPES = {\n 'application/pdf': ['.pdf'],\n 'text/plain': ['.txt', '.csv'],\n 'application/msword': ['.doc', '.docx'],\n 'application/vnd.ms-excel': ['.xls', '.xlsx'],\n 'application/vnd.ms-powerpoint': ['.ppt', '.pptx'],\n 'image/jpeg': ['.jpg', '.jpeg'],\n 'image/png': ['.png'],\n 'image/gif': ['.gif'],\n};\n","import debug from 'debug';\nimport { AudioController } from '@/controller/audio-controller';\nimport './i18n';\n// Debug logger\nconst log = debug('moveo:audio:main');\n/**\n * MoveoAudio - Twilio-powered voice widget library\n *\n * This library provides a complete voice communication solution using Twilio's Voice SDK.\n * It creates a floating audio widget that allows users to make voice calls directly from\n * your website.\n *\n * @example\n * // Basic usage - initialize with integration ID\n * const controller = await MoveoAudio.init({\n * integrationId: 'your-integration-id'\n * });\n *\n * @example\n * // Advanced usage - with custom host\n * const controller = await MoveoAudio.init({\n * integrationId: 'your-integration-id',\n * host: 'https://channels.moveo.ai'\n * });\n *\n * // Use the controller to manage calls\n * await controller.startCall();\n * controller.endCall();\n *\n * controller.on('error', (event) => {\n * console.error('Call error:', event.message);\n * });\n *\n * @example\n * // HTML integration (UMD)\n * <script src=\"https://cdn.example.com/audio-client.min.js\"></script>\n * <script>\n * window.addEventListener('load', async function() {\n * const controller = await MoveoAudio.init({\n * integrationId: 'your-id'\n * });\n * });\n * </script>\n *\n * @example\n * // ES Module / TypeScript usage\n * import MoveoAudio, { AudioConfig, AudioController } from './audio-client.min.js';\n *\n * const config: AudioConfig = {\n * integrationId: 'your-id'\n * };\n *\n * const controller: AudioController = await init(config);\n *\n * @module MoveoAudio\n */\n/**\n * Initialize MoveoAudio widget\n *\n * Creates and initializes a Twilio-powered voice widget on your page. The widget appears\n * as a floating button in the bottom-right corner that users can click to start a call.\n *\n * The function automatically:\n * - Fetches access tokens from your backend\n * - Registers the Twilio device\n * - Handles microphone permissions\n * - Manages call state and quality\n *\n * @param config - Audio widget configuration\n * @param config.integrationId - (Required) Your Moveo integration ID\n * @param config.host - Backend URL (default: 'https://channels.moveo.ai')\n *\n * @returns Promise<AudioController> - The initialized audio controller instance with methods to control calls\n *\n * @throws {Error} If integrationId is not provided\n * @throws {Error} If backend token endpoint is not accessible\n * @throws {Error} If Twilio device initialization fails\n *\n * @see {@link AudioConfig} for configuration options\n * @see {@link AudioController} for controller API methods\n * @see {@link https://docs.moveo.ai/audio|Audio Widget Documentation}\n */\nexport const init = async (config) => {\n log('MoveoAudio.init() called with config', config);\n // Validate configuration\n if (!config.integrationId) {\n const error = new Error('integrationId is required in config');\n log('Initialization failed: integrationId is required', error);\n throw error;\n }\n log('Creating AudioController instance');\n const controller = new AudioController(config);\n log('Initializing AudioController');\n await controller.init();\n log('MoveoAudio initialization complete');\n return controller;\n};\n/**\n * Audio controller class for managing Twilio voice calls\n *\n * Provides methods to control calls, manage devices, and handle audio state.\n *\n * @typedef {Object} AudioController\n * @property {function(): Promise<void>} startCall - Start a new call\n * @property {function(): void} endCall - End the current call\n * @property {function(): void} destroy - Destroy widget and clean up resources\n * @property {function(string, function): function} on - Subscribe to controller events\n * @property {function(string, function): void} off - Unsubscribe from controller events\n * @property {function(string, function): function} once - Subscribe to the next occurrence\n *\n * @see {@link https://docs.moveo.ai/audio#api-reference|API Reference}\n */\nexport { AudioController };\n/**\n * MoveoAudio - Browser global namespace\n *\n * When consumed via the UMD bundle, the library exposes a namespaced object\n * with an `init` function matching the named export.\n */\nexport const MoveoAudio = Object.assign(init, {\n init,\n AudioController,\n});\n// eslint-disable-next-line import/no-default-export\nexport default MoveoAudio;\n"],"names":["root","factory","exports","module","define","amd","this","leafPrototypes","getProto","inProgress","dataWebpackPrefix","f","a","b","c","length","push","d","e","g","h","k","pop","w","m","C","n","x","sortIndex","id","performance","now","l","unstable_now","p","Date","q","r","t","u","v","y","z","A","B","D","setTimeout","E","clearTimeout","F","setImmediate","G","callback","startTime","expirationTime","H","I","J","K","L","M","priorityLevel","navigator","scheduling","isInputPending","bind","S","N","O","P","Q","R","MessageChannel","T","U","port2","port1","onmessage","postMessage","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_forceFrameRate","console","error","Math","floor","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","apply","arguments","formatArgs","args","useColors","namespace","humanize","diff","color","splice","index","lastC","replace","match","save","namespaces","storage","setItem","removeItem","load","getItem","process","env","DEBUG","window","type","__nwjs","userAgent","toLowerCase","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","localStorage","localstorage","destroy","warned","warn","colors","log","debug","formatters","j","JSON","stringify","message","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","Symbol","for","Object","prototype","hasOwnProperty","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","key","ref","__self","__source","call","defaultProps","$$typeof","props","_owner","current","Fragment","jsx","jsxs","noop","undefinedType","isIE","test","logMethods","_loggersByName","defaultLogger","bindMethod","obj","methodName","method","Function","traceForIE","trace","replaceLoggingMethods","level","getLevel","i","methodFactory","name","levels","SILENT","enableLoggingWhenConsoleArrives","defaultMethodFactory","_level","_loggerName","undefined","realMethod","Logger","inheritedLevel","defaultLevel","userLevel","self","storageKey","getPersistedLevel","storedLevel","ignore","cookie","cookieName","encodeURIComponent","location","indexOf","exec","slice","normalizeLevel","input","toUpperCase","TypeError","setLevel","persist","levelNum","levelName","persistLevelIfPossible","setDefaultLevel","resetLevel","clearPersistedLevel","enableAll","TRACE","disableAll","rebuild","childName","initialLevel","getLogger","logger","_log","noConflict","getLoggers","createRoot","hydrateRoot","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","enabled","curr","Number","ms","prev","coerce","unshift","format","formatter","val","selectColor","extend","defineProperty","enumerable","configurable","get","set","init","delimiter","newDebug","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","default","Error","stack","disable","names","skips","map","join","enable","split","trim","filter","Boolean","ns","skip","keys","forEach","hash","charCodeAt","abs","ReflectOwnKeys","Reflect","ReflectApply","target","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","isNaN","value","EventEmitter","once","emitter","Promise","resolve","reject","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","events","existing","warning","create","newListener","emit","String","count","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","Array","unwrapListeners","arrayClone","listenerCount","copy","flags","addEventListener","wrapListener","arg","removeEventListener","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","spliceOne","off","removeAllListeners","rawListeners","eventNames","iterator","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","assign","refs","updater","isReactComponent","setState","forceUpdate","constructor","isPureReactComponent","isArray","children","escape","toString","next","done","_status","_result","then","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","X","Children","toArray","only","Component","Profiler","PureComponent","StrictMode","Suspense","act","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","s","plural","msAbs","isPlural","round","options","str","parseFloat","parse","isFinite","long","fmtShort","aa","ca","da","Set","ea","fa","ha","add","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","construct","displayName","includes","Pa","tag","Qa","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","number","password","range","tel","text","time","url","week","me","ne","oe","event","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","of","has","pf","qf","rf","random","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_stringRef","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","stores","ei","fi","gi","hi","ii","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","readContext","useMutableSource","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","_reactInternals","Fi","shouldComponentUpdate","Gi","contextType","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Ki","Li","Mi","WeakMap","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","Gj","Hj","Ij","Jj","Kj","WeakSet","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","src","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","querySelectorAll","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","vl","isDisabled","supportsFiber","inject","createPortal","cl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","__proto__","def","definition","o","chunkId","all","reduce","promises","globalThis","prop","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","onScriptComplete","onerror","onload","timeout","doneFns","fn","head","toStringTag","scriptUrl","importScripts","currentScript","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","Backoff","super","defineProperties","_attempts","writable","_duration","_min","pow","_factor","_jitter","rand","deviation","_max","factor","jitter","max","_timeoutID","backoff","duration","reset","__awaiter","thisArg","_arguments","generator","fulfilled","step","rejected","result","SuppressedError","AuthorizationErrors","SignatureValidationErrors","ClientErrors","SIPServerErrors","GeneralErrors","MalformedRequestErrors","UserMediaErrors","SignalingErrors","MediaErrors","TwilioError","messageOrError","setPrototypeOf","explanation","originalError","AccessTokenInvalid","causes","description","solutions","AccessTokenExpired","AuthenticationFailed","AccessTokenSignatureValidationFailed","BadRequest","NotFound","TemporarilyUnavailable","BusyHere","Decline","UnknownError","ApplicationNotFoundError","ConnectionDeclinedError","ConnectionTimeoutError","ConnectionError","CallCancelledError","TransportError","MalformedRequestError","MissingParameterArrayError","AuthorizationTokenMissingError","MaxParameterLengthExceededError","InvalidBridgeTokenError","InvalidClientNameError","ReconnectParameterInvalidError","AuthorizationError","NoValidAccountError","InvalidJWTTokenError","JWTTokenExpiredError","RateExceededError","JWTTokenExpirationTooLongError","ReconnectAttemptError","CallMessageEventTypeInvalidError","PayloadSizeExceededError","PermissionDeniedError","AcquisitionFailedError","ConnectionDisconnected","ClientLocalDescFailed","ClientRemoteDescFailed","errorsByCode","freeze","PRECISE_SIGNALING_ERROR_CODES","getPreciseSignalingErrorByCode","enableImprovedSignalingErrorPrecision","errorCode","InvalidArgumentError","getErrorByCode","InvalidStateError","NotSupportedError","PACKAGE_NAME","RELEASE_VERSION","SOUNDS_BASE_URL","COWBELL_AUDIO_URL","Log","getLogLevelInstance","loglevelInstance","LogLevelModule","loglevel","_prefix","info","DEFAULT_TEST_SOUND_URL","OutputDeviceCollection","_name","_availableDevices","_beforeChange","_isSupported","_activeDevices","device","wasDeleted","defaultDevice","from","values","deviceIds","deviceInfo","deviceId","deviceIdOrIds","missingIds","devices","clear","soundUrl","Audio","oncanplay","setSinkId","play","MediaDeviceInfoShim","groupId","kind","label","TwilioException","average","difference","lefts","rights","getKey","rightKeys","isElectron","isChrome","isCriOS","isHeadlessChrome","isGoogle","chrome","vendor","isFirefox","isLegacyEdge","isSafari","queryToJson","params","output","pair","parts","decodeURIComponent","flatMap","mapFn","listArray","item","flattened","mapped","promisifyEvents","resolveEventName","rejectEventName","resolveHandler","rejectHandler","sortByMimeTypes","codecs","preferredOrder","preferredCodecs","codec","sort","indexA","mimeType","indexB","MAX_VALUE","Exception","kindAliases","audioinput","audiooutput","AudioHelper","audioConstraints","_audioConstraints","inputDevice","_inputDevice","inputStream","_localProcessedStream","_selectedInputDeviceStream","processedStream","localProcessedStream","remoteProcessedStream","_remoteProcessedStream","onActiveOutputsChanged","onActiveInputChanged","availableInputDevices","availableOutputDevices","_defaultInputDeviceStream","_enabledSounds","Device","SoundName","Disconnect","Incoming","Outgoing","_inputDevicePromise","_isPollingInputVolume","_unknownDeviceIndexes","_updateAvailableDevices","_mediaDevices","_enumerateDevices","_updateDevices","_removeLostOutput","_removeLostInput","speakerDevices","ringtoneDevices","outputDevices","isOutputSelectionSupported","reason","lostDevice","_destroyLocalProcessedStream","_replaceStream","_maybeStopPollingVolume","setInputDevice","wasSpeakerLost","wasRingtoneLost","AudioContext","HTMLAudioElement","_beforeSetInputDevice","beforeSetInputDevice","_updateUserOptions","_audioProcessorEventObserver","audioProcessorEventObserver","mediaDevices","_onActiveInputChanged","enumerateDevices","isAudioContextSupported","audioContext","isEnumerationSupported","enabledSounds","isSetSinkSupported","isVolumeSupported","_audioContext","_inputVolumeAnalyser","createAnalyser","fftSize","smoothingTimeConstant","eventName","_maybeStartPollingVolume","_initializeEnumeration","permissions","query","microphonePermissionStatus","handleStateChange","_stopMicrophonePermissionListener","_microphonePermissionStatus","_onMicrophonePermissionStatusChanged","_destroy","_stopDefaultInputDeviceStream","_stopSelectedInputDeviceStream","_destroyRemoteProcessedStream","_unbind","_remoteProcessor","getTracks","stop","destroyProcessedStream","_getInputDevicePromise","_getAudioProcessorEventObserver","_maybeCreateRemoteProcessedStream","stream","createProcessedStream","_updateVolumeSource","bufferLength","frequencyBinCount","buffer","Uint8Array","emitVolume","getByteFrequencyData","inputVolume","requestAnimationFrame","_inputVolumeSource","disconnect","_openDefaultDeviceWithConstraints","constraints","_getUserMedia","_maybeCreateLocalProcessedStream","getUserMedia","addProcessor","processor","isRemote","_localProcessor","_restartInputStreams","doEnable","_maybeEnableSound","incoming","outgoing","removeProcessor","setAudioConstraints","_setInputDevice","unsetAudioConstraints","unsetInputDevice","_getUnknownDeviceIndex","mediaDeviceInfo","soundName","forceGetUserMedia","audio","exact","originalStream","newStream","finally","updatedDevices","availableDevices","removeLostDevice","updatedDeviceIds","knownDeviceIds","lostActiveDevices","lostDeviceIds","lostDeviceId","deviceChanged","newDevice","existingDevice","newMediaDeviceInfo","_wrapMediaDeviceInfo","defaultId","isInputDeviceSet","isDefaultDeviceSet","createMediaStreamSource","connect","ex","AudioProcessorEventObserver","_reEmitEvent","group","bandFrequencies","dtmf0","dtmf1","dtmf2","dtmf3","dtmf4","dtmf5","dtmf6","dtmf7","dtmf8","dtmf9","dtmfh","dtmfs","DialtonePlayer","_gainNodes","createGain","gainNode","destination","gain","cleanup","sound","frequencies","createOscillator","oscillator","frequency","currentTime","Request","headers","Headers","entries","headerName","headerBody","append","fetch","response","responseText","post","EventPublisher","productName","token","defaultPayload","isEnabled","metadata","app_name","app_version","_defaultPayload","_host","host","_isEnabled","_request","_token","formatMetric","sample","audio_codec","codecName","audio_level_in","audioInputLevel","audio_level_out","audioOutputLevel","bytes_received","bytesReceived","bytes_sent","bytesSent","call_volume_input","call_volume_output","outputVolume","mos","packets_lost","packetsLost","packets_lost_fraction","packetsLostFraction","packets_received","packetsReceived","rtt","timestamp","toISOString","total_bytes_received","totals","total_bytes_sent","total_packets_lost","total_packets_received","total_packets_sent","packetsSent","_post","endpointName","connection","force","parameters","CallSid","outboundConnectionId","payload_type","private","publisher","publisher_metadata","requestParams","postMetrics","metrics","customFields","samples","setHost","setToken","NativeRTCStatsReport","RTCStatsReport","MockRTCStatsReport","statsMap","_map","createRTCTransportStats","report","dtlsState","localCertificateId","stat","remoteCertificateId","rtcpTransportStatsId","selectedCandidatePairId","createRTCRTPStreamStats","isInbound","associateStatsId","codecId","firCount","getInt","mediaType","nackCount","pliCount","qpSum","sliCount","ssrc","trackId","transportId","createRTCIceCandidateStats","candidateType","translateCandidateType","deleted","ip","port","getFloat","protocol","relayProtocol","convertMsToSeconds","inMs","statName","isPresent","getBoolean","findStatById","find","getRTCStatsReport","peerConnection","getStats","fromRTCStatsResponse","getRTCStats","createRTCSample","getRTCIceCandidateStatsReport","candidatePairs","localCandidates","remoteCandidates","transport","rval","selectedCandidatePairReport","selectedIceCandidatePairStats","localCandidate","candidate","localCandidateId","remoteCandidate","remoteCandidateId","iceCandidateStats","RTCSample","statsReport","activeTransportId","fallbackTimestamp","stats","remoteId","remote","roundTripTime","activeTransport","selectedCandidatePair","currentRoundTripTime","localAddress","address","remoteAddress","fromArray","array","rtcStats","statsResponse","activeCandidatePairId","transportIds","base64Certificate","fingerprint","fingerprintAlgorithm","issuerCertificateId","createRTCCertificateStats","datachannelid","messagesReceived","messagesSent","createRTCDataChannelStats","availableIncomingBitrate","availableOutgoingBitrate","consentRequestsSent","lastPacketReceivedTimestamp","lastPacketSentTimestamp","nominated","readable","requestsReceived","requestsSent","responsesReceived","responsesSent","retransmissionsReceived","retransmissionsSent","totalRoundTripTime","createRTCIceCandidatePairStats","rtp","burstDiscardCount","burstDiscardRate","burstLossCount","burstLossRate","burstPacketsDiscarded","burstPacketsLost","fractionLost","framesDecoded","gapDiscardRate","gapLossRate","packetsDiscarded","packetsRepaired","createRTCInboundRTPStreamStats","framesEncoded","remoteTimestamp","targetBitrate","createRTCOutboundRTPStreamStats","audioLevel","detached","echoReturnLoss","echoReturnLossEnhancement","ended","frameHeight","frameWidth","framesCorrupted","framesDropped","framesPerSecond","framesReceived","framesSent","fullFramesLost","partialFramesLost","remoteSource","ssrcIds","trackIdentifier","createRTCMediaStreamTrackStats","channels","clockRate","payloadType","sdpFmtpLine","createRTCCodecStats","transportReport","PreflightTest","_hasInsightsErrored","_networkTiming","_options","codecPreferences","Call","Codec","PCMU","Opus","edge","fakeMicInput","logLevel","signalingTimeoutMs","Status","Connecting","_samples","_warnings","_startTime","_initDevice","fileInputStream","_getStreamFromFile","userOptions","userOptionOverrides","toLog","_device","EventName","Unregistered","_onFailed","_emitWarning","rtcWarning","Warning","_getCallQuality","CallQuality","Excellent","Great","Good","Fair","Degraded","_getReport","_getRTCStats","testTiming","_endTime","callSid","_callSid","_edge","_rtcIceCandidateStatsReport","networkTiming","selectedEdge","_getRTCSampleTotals","warnings","isTurnRequired","callQuality","_latestSample","firstMosSampleIdx","findIndex","statObj","total","toPrecision","audioEl","createMediaElementSource","dest","createMediaStreamDestination","deviceFactory","chunderw","eventgw","preflight","Registered","_onDeviceRegistered","_onDeviceError","register","_signalingTimeoutTimer","_echoTimer","_call","rtcConfiguration","signaling","_setupCallHandlers","disconnectAll","_onUnregistered","_releaseHandlers","Failed","Completed","_report","outputs","muted","Connected","Sample","reportLabel","handlerName","originalHandler","timing","endTime","latestSample","status","WebSocket","WSTransportState","Edge","Region","WSTransport","uris","Closed","_backoffStartTime","preferred","primary","_connectedUri","_shouldFallback","_uriIndex","_moveUriIndex","_uris","_onSocketClose","twilioError","wasConnected","Open","_previousState","_closeSocket","_onSocketError","_onSocketMessage","_setHeartbeatTimeout","_socket","send","_onSocketOpen","_timeOpened","_setState","_connectTimeout","_resetBackoffs","defaultConstructorOptions","_backoff","_setupBackoffs","close","_close","open","readyState","CONNECTING","OPEN","_preferredUri","_connect","updatePreferredURI","uri","updateURIs","_heartbeatTimeout","_performBackoff","retryCount","connectTimeoutMs","preferredBackoffConfig","maxPreferredDelayMs","preferredBackoff","attempt","_delay","maxPreferredDurationMs","primaryBackoffConfig","maxPrimaryDelayMs","primaryBackoff","maxPrimaryDurationMs","PStream","defaults","TransportFactory","gateway","region","_messageQueue","_handleTransportClose","_handleTransportError","_handleTransportMessage","_handleTransportOpen","backoffMaxMs","getBrowserInfo","nav","browser","platform","plugin","C.RELEASE_VERSION","msg","_publish","reconnectTimeout","browserinfo","sendMessage","callsid","content","contenttype","messagetype","voiceeventsid","mediaCapabilities","regPayload","media","invite","sdp","twilio","reconnect","answer","dtmf","digits","hangup","reinvite","publish","shouldRetry","regionShortcodes","ASIAPAC_SINGAPORE","Sg1","ASIAPAC_SYDNEY","Au1","ASIAPAC_TOKYO","Jp1","EU_FRANKFURT","De1","EU_IRELAND","Ie1","SOUTH_AMERICA_SAO_PAULO","Br1","US_EAST_VIRGINIA","Us1","US_WEST_OREGON","Us2","regionToEdge","Sydney","SaoPaulo","Dublin","Frankfurt","Tokyo","Singapore","Ashburn","Umatilla","Gll","Roaming","Us1Ix","AshburnIx","Us2Ix","SanJoseIx","Ie1Ix","LondonIx","De1Ix","FrankfurtIx","Sg1Ix","SingaporeIx","Au1Ix","SydneyIx","Jp1Ix","TokyoIx","Us1Tnx","Us2Tnx","Ie1Tnx","Sg1Tnx","defaultEdge","createChunderEdgeURI","createEventGatewayURI","createSignalingEndpointURL","getChunderURIs","ptToFixedBitrateAudioCodecName","setMaxAverageBitrate","maxAverageBitrate","matches","opusId","regex","RegExp","line","setCodecPreferences","mediaSections","mediaSection","kindPattern","directionPattern","getMediaSections","section","codecMap","getPayloadTypesInMediaSection","ptToCodecName","pt","rtpmapPattern","pts","createCodecMapForMediaSection","payloadTypes","preferredPayloadTypes","util.flatMap","remainingPayloadTypes","util.difference","getReorderedPayloadTypes","newSection","lines","mLine","otherLines","setPayloadTypesInMediaSection","pcmaPayloadTypes","pcmuPayloadTypes","RTCPC","RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","RTCSessionDescription","mozRTCSessionDescription","RTCIceCandidate","mozRTCIceCandidate","promisify","ctx","areCallbacksFirst","checkRval","promisifyCreate","promisifySet","PeerConnection","audioHelper","pstream","onaudio","onopen","onclose","ondisconnected","onfailed","onconnected","onreconnected","onsignalingstatechange","ondtlstransportstatechange","onicegatheringfailure","onicegatheringstatechange","oniceconnectionstatechange","onpcconnectionstatechange","onicecandidate","onselectedcandidatepairchange","onvolume","sinkIds","isMuted","webkitAudioContext","_isSinkSupported","_audioHelper","_hasIceCandidates","_hasIceGatheringFailures","_iceGatheringTimeoutId","_masterAudio","_masterAudioDeviceId","_mediaStreamSource","_dtmfSender","_dtmfSenderUnsupported","_callEvents","_nextTimeToPublish","_onAnswerOrRinging","_onHangup","_remoteStream","_shouldManageStream","_iceState","util","_onAudioProcessorAdded","_handleAudioProcessorEvent","_onAudioProcessorRemoved","cloneStream","oldStream","_MediaStream","MediaStream","webkitMediaStream","getAudioTracks","addTrack","setAudioSource","maybeProcessedStream","srcObject","mozSrcObject","_window","URL","webkitURL","createObjectURL","webkitGetUserMedia","mozGetUserMedia","generateVoiceEventSid","crypto","getRandomValues","padStart","generateRandomizedString","createModernConstraints","util.isLegacyEdge","offerToReceiveAudio","video","offerToReceiveVideo","mandatory","OfferToReceiveAudio","OfferToReceiveVideo","createOffer","onSuccess","offer","setLocalDescription","createAnswer","processSDP","desc","setRemoteDescription","getSDP","localDescription","processAnswer","getLocalStreams","RTCIceGatherer","_uri","openDefaultDeviceWithConstraints","_setInputTracksFromStream","setInputTracksFromStream","_createAnalyser","analyser","field","_setVolumeHandler","_startPollingVolume","inputBufferLength","_inputAnalyser","inputDataArray","_inputAnalyser2","maxDecibels","minDecibels","outputBufferLength","_outputAnalyser","outputDataArray","_outputAnalyser2","_updateInputStreamSource","_updateOutputStreamSource","inputVolume2","outputVolume2","_stopStream","_inputStreamSource","_outputStreamSource","shouldClone","localStream","getStreamPromise","mute","_sender","getSenders","replaceTrack","_onInputDevicesChanged","every","_onIceGatheringFailure","_onMediaConnectionStateChange","newState","previousState","_stopIceGatheringTimeout","_setSinkIds","_updateAudioOutputs","_startIceGatheringTimeout","clearInterval","addedOutputIds","removedOutputIds","createOutputPromises","_createAudioOutput","_removeAudioOutput","_createAudio","pcStream","_removeAudioOutputs","_disableOutput","paused","pause","_reassignMasterOutput","masterId","masterOutput","activeDeviceId","idToReplace","_onAddTrack","_fallbackOnAddTrack","_setEncodingParameters","enableDscp","getParameters","setParameters","encodings","encoding","networkPriority","_setupPeerConnection","rtcpcFactory","addStream","supportedCodecs","RTCRtpReceiver","getCapabilities","sortedCodecs","util.sortByMimeTypes","transceiver","getTransceivers","streams","_maybeSetIceAggressiveNomination","forceAggressiveIceNomination","util.isChrome","setIceAggressiveNomination","_setupChannel","onstatechange","signalingState","onconnectionstatechange","connectionState","targetPc","connectionState_","_setupRTCIceTransportListener","iceGatheringState","iceConnectionState","_initializeMediaStream","_removeReconnectionListeners","_setupRTCDtlsTransportListener","dtlsTransport","getRTCDtlsTransport","iceTransport","_getRTCIceTransport","getSelectedCandidatePair","iceRestart","_answerSdp","makeOutgoingCall","signalingReconnectToken","onMediaStarted","onAnswerSuccess","dscp","onAnswerError","errMsg","answerIncomingCall","shouldMute","audioTracks","getOrCreateDTMFSender","RTCDTMFSender","RTCDtmfSender","chosenSender","sender","createDTMFSender","tracks","_getAudioTracks","_canStopMediaStreamTrack","MediaStreamTrack","isAddProcessor","successLog","errorLog","Deferred","_promise","_resolve","_reject","AsyncQueue","_operations","enqueue","hasPending","deferred","_processQueue","hasResolved","EventTarget","_eventEmitter","AudioPlayer","_destination","loop","_loop","shouldLoop","_audioNode","pauseAfterPlaythrough","_gainNode","shouldBeMuted","_src","_load","_audioElement","sinkId","_sinkId","srcOrOptions","_pendingPlayDeferreds","AudioFactory","_bufferPromise","_createPlayDeferred","_XMLHttpRequest","XMLHttpRequestFactory","XMLHttpRequest","_resolvePlayDeferreds","_rejectPlayDeferreds","createBufferSource","RequestFactory","responseType","decodeAudioData","bufferSound","deferreds","Sound","maxDuration","_Audio","_activeEls","_maxDuration","_maxDurationTimeout","_playPromise","_shouldLoop","_sinkIds","isPlaying","_play","destroyAudioElement","audioElement","_playAudioElement","forceIsMuted","forceShouldLoop","_stop","setSinkIds","ids","extension","canPlayType","canPlayMp3","canPlayVorbis","isSupported","packageName","C.PACKAGE_NAME","runPreflight","_getOrCreateAudioContext","_activeCall","_audio","_callInputStream","_calls","_callSinkIds","_chunderURIs","_defaultOptions","allowIncomingWhileBusy","closeProtection","ERROR","maxCallSignalingTimeoutMs","sounds","tokenRefreshMs","voiceEventSidGenerator","_home","_identity","_makeCallPromise","_preferredURI","_publisher","_region","_regTimer","_shouldReRegister","_soundcache","_state","State","_stateEventMapping","Destroyed","Registering","_stream","_streamConnectedPromise","_tokenWillExpireTimeout","_createDefaultPayload","aggressive_nomination","browser_extension","_isBrowserExtension","ice_restart_enabled","sdk_version","setIfDefined","direction","_onSignalingClose","_onSignalingConnected","getRegionShortcode","home","identity","ttl","ttlMs","timeoutMs","preferredURIs","_getChunderws","preferredURI","_onSignalingError","_findCall","customMessage","_stopRegistrationTimer","errorConstructor","_onSignalingInvite","wasBusy","callParameters","customParameters","Params","_makeCall","offerSdp","reconnectToken","_publishNetworkChange","_showIncomingCall","_onSignalingOffline","_onSignalingReady","_networkInformation","connection_type","downlink","downlinkMax","effective_type","effectiveType","_updateInputStream","_updateSinkIds","_updateRingtoneSinkIds","_updateSpeakerSinkIds","audio_device_ids","_setupLoglevel","_logOptions","updateToken","ignoreBrowserSupport","msBrowser","safari","mozConnection","webkitConnection","_dialtonePlayer","_boundDestroy","_boundConfirmClose","_confirmClose","updateOptions","_throwIfDestroyed","connectToken","connectTokenParts","atob","isReconnect","twimlParams","callOptions","activeCall","reconnectCallSid","accept","rtcConstraints","calls","_destroyStream","_destroyAudioHelper","_destroyPublisher","isBusy","_setupStream","_sendPresence","unregister","streamOfflinePromise","originalChunderURIs","newChunderURIs","hasChunderURIsChanged","_defaultSounds","soundDef","defaultUrl","C.SOUNDS_BASE_URL","filename","disableAudioContextSounds","_setupAudioHelper","_setupPublisher","confirmationMsg","caller","inputDevicePromise","config","onIgnore","soundcache","beforeAccept","currentCall","_removeCall","customSounds","dialtonePlayer","getInputStream","getSinkIds","shouldPlayDisconnect","maybeUnsetPreferredUri","CallDirection","_maybeStopIncomingSound","Pending","presence","_startRegistrationTimer","is_remote","audioOptions","lost_active_device_ids","publisherOptions","appName","appVersion","Publisher","publishEvents","race","entry","IceCandidate","iceCandidate","cost","networkCost","relatedAddress","relatedPort","tcpType","sdpMid","toPayload","r0","isNonNegativeNumber","calculate","effectiveLatency","rFactor","DEFAULT_THRESHOLDS","minStandardDeviation","sampleCount","clearCount","raiseCount","clearValue","maxAverage","StatsMonitor","_activeWarnings","_currentStreaks","_inputVolumes","_outputVolumes","_sampleBuffer","_supplementalSampleBuffers","_warningsEnabled","_mos","Mos","_peerConnection","_thresholds","thresholds","thresholdSampleCounts","threshold","_maxSampleCount","addVolumes","_sampleInterval","disableWarnings","setInterval","_fetchSample","enableWarnings","hasActiveWarning","thresholdName","warningId","_addSample","_clearWarning","activeWarning","timeRaised","_createSample","previousSample","previousBytesSent","previousBytesReceived","previousPacketsSent","previousPacketsReceived","previousPacketsLost","currentBytesSent","currentBytesReceived","currentPacketsSent","currentPacketsReceived","currentPacketsLost","currentInboundPackets","currentPacketsLostFraction","totalInboundPackets","totalPacketsLostFraction","rttValue","audioInputLevelValues","audioOutputLevelValues","_getSample","_raiseWarnings","_raiseWarning","thresholdValue","foundThreshold","_raiseWarningsForStat","limit","relevantSamples","highCount","countHigh","lowCount","countLow","prevValue","curValue","prevStreak","streak","sampleSets","stdDev","valueAverage","partialSum","diffSquared","sqrt","calculateStandardDeviation","flat","flattenSamples","comparator","avg","BACKOFF_CONFIG","MEDIA_DISCONNECT_ERROR","MULTIPLE_THRESHOLD_WARNING_NAMES","WARNING_NAMES","WARNING_PREFIXES","_direction","_codec","_signalingReconnectToken","btoa","_inputVolumeStreak","_isAnswered","_isCancelled","_isRejected","_latestInputVolume","_latestOutputVolume","_mediaStatus","_messages","_metricsSamples","MediaHandler","_outputVolumeStreak","_shouldSendHangup","_signalingStatus","_wasConnected","groupPrefix","warningName","wasCleared","warningData","groupName","payloadData","emitName","_onAck","acktype","_onMessageSent","_onAnswer","Reconnecting","_setCallSid","_maybeTransitionToOpen","_onCancel","_cleanupEventListeners","_mediaHandler","_pstream","_onConnected","_disconnect","_onMediaFailure","ConnectionFailed","IceGatheringFailed","LowBytes","MediaFailure","isEndOfIceCycle","_mediaReconnectStartTime","_mediaReconnectBackoff","isIceDisconnected","hasLowBytesWarning","_monitor","mediaReconnectionError","_onMediaReconnected","_onMessageReceived","contentType","messageType","voiceEventSid","content_type","event_type","voice_event_sid","_onRinging","Ringing","hasEarlyMedia","_onRTCSample","callMetrics","_publishMetrics","_onSignalingReconnected","_onTransportClose","_reemitWarning","warningPrefix","_reemitWarningCleared","_onIgnore","_voiceEventSidGenerator","callerInfo","StirStatus","isVerified","monitor","_checkVolume","remoteAudio","internalInputVolume","internalOutputVolume","localCandidatePayload","local","remoteCandidatePayload","local_candidate","remote_candidate","onAnswer","codecParams","getPreferredCodecInfo","codec_params","selected_codec","getLocalStream","getRemoteStream","wasMuted","postFeedback","score","issue","_postFeedbackDeclined","FeedbackScore","FeedbackIssue","issue_name","quality_score","sendDigits","sequence","digit","playNextDigit","dtmfSender","canInsertDTMF","insertDTMF","currentVolume","currentStreak","lastValue","wasWarningRaised","newStreak","_createMetricPayload","call_sid","wasRemote","IceGatheringFailureReason","MicrophoneIcon","title","titleId","svgRef","xmlns","viewBox","fill","PhoneXMarkIcon","fillRule","clipRule","alreadyWarned","i18n","rest","services","forward","loadedClb","isInitialized","initialized","loadNamespaces","loadLanguages","lng","preload","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","initReactI18next","setDefaults","react","setI18n","ReportNamespaces","usedNamespaces","addUsedNamespaces","getUsedNamespaces","alwaysNewT","language","keyPrefix","getFixedT","formatDurationMMSS","totalSeconds","rawSeconds","safeSeconds","minutes","seconds","VoiceWaveIndicator","prevLevelRef","smoothedLevel","setSmoothedLevel","newSmoothed","normalizedLevel","isActive","className","multiplier","scale","transform","PhoneIcon","ErrorIcon","stroke","strokeLinecap","strokeLinejoin","MutedMicrophoneIcon","AudioWidget","onStartCall","onEndCall","onToggleMute","onEvent","i18nFromProps","i18nFromContext","defaultNS","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","wait","i18nOptions","initializedStoreOnce","languages","hasLoadedNamespace","precheck","loadNotPending","backendConnector","backend","isLanguageChangingTo","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","usePrevious","boundReset","store","callState","setCallState","errorMessage","setErrorMessage","warningMessage","setWarningMessage","setAudioLevel","isThinking","setIsThinking","hasUserSpoken","setHasUserSpoken","callDuration","setCallDuration","isMutedState","setIsMutedState","warningTimeoutRef","thinkingTimeoutRef","thinkingAutoClearRef","callStartTimeRef","durationIntervalRef","unsubscribe","parsedLevel","showSpinner","buttonToneClass","spinnerBorderClass","statusLabel","statusToneClass","buttonActionLabel","srStatus","role","async","handleStartCall","WidgetStateEvent","CALL_QUALITY_WARNINGS","AudioLevelMonitor","onLevelUpdate","analyserNode","localAudioSource","audioLevelAnimationId","audioLevelContext","dataArray","Float32Array","checkAudioLevel","getFloatTimeDomainData","sum","amplitude","rms","gatedLevel","toFixed","cancelAnimationFrame","AudioController","twilioDevice","widgetContainer","widgetRoot","audioMonitor","eventListeners","integrationId","validateIntegration","createWidgetContainer","renderWidget","twilioVoiceUrl","webUrl","webResponse","statusText","bottom","right","startCall","endCall","toggleMute","getAccessToken","tokenUrl","json","handleError","initializeTwilioDevice","deviceConfig","setupDeviceEventListeners","_a","setupCallEventListeners","AUDIO_LEVEL","_inputVolume","REMOTE_AUDIO","WARNING","WARNING_CLEARED","emitEvent","integration_id","currentlyMuted","_b","invoke","defer","res","rej","makeString","object","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","path","Empty","stackIndex","setPath","newValue","getPath","deepExtend","overwrite","regexEscape","_entityMap","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","pattern","regExpFromCache","regExpNew","deepFind","keySeparator","tokens","nextPath","getCleanedCode","consoleLogger","concreteLogger","prefix","deprecate","lvl","debugOnly","moduleName","clone","baseLogger","observers","numListeners","observer","numTimesAdded","ResourceStore","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","addResource","silent","addResources","resources","addResourceBundle","deep","skipCopy","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage","hasLanguageSomeTranslations","toJSON","postProcessor","processors","addPostProcessor","handle","translator","PATH_KEY","keysFromSelector","selector","opts","proxy","revoke","Proxy","revocable","createProxy","checkedLoadedFor","shouldHandleAsObject","Translator","changeLanguage","exists","interpolation","opt","resolved","isObject","returnObjects","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","looksLikeObjectPath","interpolator","nestingRegexp","translate","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","pluralSeparator","resForObjHndl","resType","extendTranslation","usedDefault","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","defaultVariables","skipInterpolation","skipOnVariables","nestBef","interpolate","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","formattedCode","Intl","getCanonicalLocales","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","suffixesOrder","zero","one","two","few","many","other","dummyRule","select","resolvedOptions","pluralCategories","PluralResolver","pluralRulesCache","addRule","rules","clearCache","getRule","cleanedCode","cacheKey","rule","PluralRules","lngPart","needsPlural","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","Interpolator","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","keyEndIndex","lastIndexOf","elem","createCachedFormatter","optForCache","formatParams","frm","createNonCachedFormatter","Formatter","cacheInBuiltFormats","formats","NumberFormat","currency","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","addCached","mem","formatName","formatOptions","formatStr","optStr","trimmedKey","parseFormatStr","formatted","valOptions","Connector","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","pushPath","removePending","loadedKeys","read","fcName","tried","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initAsync","simplifyPluralSuffix","partialBundledLanguages","tDescription","transformOptions","initImmediate","I18n","inst","modules","external","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","finish","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","use","lngInLngs","setLngProps","setLng","cacheUserLanguage","detect","fixedT","resultKey","setDefaultNamespace","lastLng","loadState","preResult","preloaded","newLngs","dir","Locale","getTextInfo","createInstance","cloneInstance","forkResourceStore","mergedOptions","clonedData","acc","fieldContentRegExp","domain","cookieOptions","sameSite","expires","setTime","getTime","maxAge","toUTCString","httpOnly","secure","partitioned","serializeCookie","nameEQ","remove","cookie$1","lookup","_ref","lookupCookie","_ref2","cookieMinutes","cookieDomain","querystring","lookupQuerystring","pos","lookupHash","lookupFromHashIndex","hasLocalStorageSupport","localStorageAvailable","testKey","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","internalHtmlTag","lookupFromPathIndex","pathname","subdomain","lookupFromSubdomainIndex","internalLookupFromSubdomainIndex","hostname","canCookies","Browser","detectors","caches","excludeCacheFor","convertDetectedLanguage","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","_typeof","hasXMLHttpRequest","_objectSpread","_defineProperty","getOwnPropertyDescriptors","toPrimitive","_toPrimitive","_toPropertyKey","XmlHttpRequestApi","ActiveXObjectApi","fetchApi","ActiveXObject","mod","addQueryString","queryString","paramName","fetchIt","fetchOptions","altFetch","altResponse","omitFetchOptions","queryStringParams","customHeaders","versions","arch","reqOptions","requestOptions","alternateFetch","requestWithFetch","crossDomain","setRequestHeader","withCredentials","overrideMimeType","onreadystatechange","requestWithXmlHttpRequest","_defineProperties","Backend","allOptions","_classCallCheck","_this","loadPath","addPath","parsePayload","parseLoadPayload","reloadInterval","credentials","timer","unref","_readAny","loadUrlLanguages","loadUrlNamespaces","maybePromise","_this2","isPromise","resolvedLoadPath","loadUrl","_this3","term","parseErr","_this4","finished","resArray","_this5","_this$services","currentLanguage","en","es","it","fr","ro","cs","sr","sv","ru","sq","ar","tr","controller"],"ignoreList":[],"sourceRoot":""}