PageSourceSearch

https://www.clientpoint.me/_next/static/chunks/4393-41233e29c0c04e03.js

js clientpoint.me collected 2026-10-02 07:13:00 UTC 1,113,359 bytes, 33 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4393],{8169:function(e,t,i){"use strict";let n,r;i.r(t),i.d(t,{$Command:function(){return e5},AllowNotifications:function(){return rI},AssociateChannelFlowCommand:function(){return dP},BadRequestException:function(){return rD},BatchChannelMembershipsFilterSensitiveLog:function(){return r6},BatchCreateChannelMembershipCommand:function(){return dR},BatchCreateChannelMembershipResponseFilterSensitiveLog:function(){return r3},ChannelAssociatedWithFlowSummaryFilterSensitiveLog:function(){return r5},ChannelBanFilterSensitiveLog:function(){return r8},ChannelBanSummaryFilterSensitiveLog:function(){return r9},ChannelFilterSensitiveLog:function(){return r4},ChannelFlowCallbackCommand:function(){return dI},ChannelFlowCallbackRequestFilterSensitiveLog:function(){return sr},ChannelFlowFilterSensitiveLog:function(){return se},ChannelFlowSummaryFilterSensitiveLog:function(){return ss},ChannelMembershipFilterSensitiveLog:function(){return sa},ChannelMembershipForAppInstanceUserSummaryFilterSensitiveLog:function(){return sd},ChannelMembershipPreferencesFilterSensitiveLog:function(){return sc},ChannelMembershipSummaryFilterSensitiveLog:function(){return su},ChannelMembershipType:function(){return rO},ChannelMessageCallbackFilterSensitiveLog:function(){return sn},ChannelMessageFilterSensitiveLog:function(){return sh},ChannelMessagePersistenceType:function(){return rQ},ChannelMessageStatus:function(){return rJ},ChannelMessageSummaryFilterSensitiveLog:function(){return sf},ChannelMessageType:function(){return rY},ChannelMode:function(){return rj},ChannelModeratedByAppInstanceUserSummaryFilterSensitiveLog:function(){return sm},ChannelModeratorFilterSensitiveLog:function(){return sp},ChannelModeratorSummaryFilterSensitiveLog:function(){return sg},ChannelPrivacy:function(){return rW},ChannelSummaryFilterSensitiveLog:function(){return so},ChimeSDKMessaging:function(){return lg},ChimeSDKMessagingClient:function(){return rC},ChimeSDKMessagingServiceException:function(){return rR},ConflictException:function(){return rB},CreateChannelBanCommand:function(){return dO},CreateChannelBanResponseFilterSensitiveLog:function(){return sS},CreateChannelCommand:function(){return dx},CreateChannelFlowCommand:function(){return dD},CreateChannelFlowRequestFilterSensitiveLog:function(){return sy},CreateChannelMembershipCommand:function(){return dB},CreateChannelMembershipResponseFilterSensitiveLog:function(){return sC},CreateChannelModeratorCommand:function(){return dN},CreateChannelModeratorResponseFilterSensitiveLog:function(){return sw},CreateChannelRequestFilterSensitiveLog:function(){return sb},DeleteChannelBanCommand:function(){return dL},DeleteChannelCommand:function(){return dF},DeleteChannelFlowCommand:function(){return dV},DeleteChannelMembershipCommand:function(){return dU},DeleteChannelMessageCommand:function(){return dz},DeleteChannelModeratorCommand:function(){return d$},DeleteMessagingStreamingConfigurationsCommand:function(){return dH},DescribeChannelBanCommand:function(){return dj},DescribeChannelBanResponseFilterSensitiveLog:function(){return sM},DescribeChannelCommand:function(){return dW},DescribeChannelFlowCommand:function(){return dG},DescribeChannelFlowResponseFilterSensitiveLog:function(){return sE},DescribeChannelMembershipCommand:function(){return dK},DescribeChannelMembershipForAppInstanceUserCommand:function(){return dq},DescribeChannelMembershipForAppInstanceUserResponseFilterSensitiveLog:function(){return sk},DescribeChannelMembershipResponseFilterSensitiveLog:function(){return sA},DescribeChannelModeratedByAppInstanceUserCommand:function(){return dQ},DescribeChannelModeratedByAppInstanceUserResponseFilterSensitiveLog:function(){return s_},DescribeChannelModeratorCommand:function(){return dJ},DescribeChannelModeratorResponseFilterSensitiveLog:function(){return sP},DescribeChannelResponseFilterSensitiveLog:function(){return sT},DisassociateChannelFlowCommand:function(){return dY},ErrorCode:function(){return rx},ExpirationCriterion:function(){return rH},FallbackAction:function(){return rK},ForbiddenException:function(){return rN},GetChannelMembershipPreferencesCommand:function(){return dX},GetChannelMembershipPreferencesResponseFilterSensitiveLog:function(){return sR},GetChannelMessageCommand:function(){return dZ},GetChannelMessageResponseFilterSensitiveLog:function(){return sI},GetChannelMessageStatusCommand:function(){return d0},GetMessagingSessionEndpointCommand:function(){return d1},GetMessagingStreamingConfigurationsCommand:function(){return d2},IdentityFilterSensitiveLog:function(){return r2},InvocationType:function(){return rG},ListChannelBansCommand:function(){return d6},ListChannelBansRequestFilterSensitiveLog:function(){return sO},ListChannelBansResponseFilterSensitiveLog:function(){return sx},ListChannelFlowsCommand:function(){return d3},ListChannelFlowsRequestFilterSensitiveLog:function(){return sD},ListChannelFlowsResponseFilterSensitiveLog:function(){return sB},ListChannelMembershipsCommand:function(){return d4},ListChannelMembershipsForAppInstanceUserCommand:function(){return d5},ListChannelMembershipsForAppInstanceUserRequestFilterSensitiveLog:function(){return sF},ListChannelMembershipsForAppInstanceUserResponseFilterSensitiveLog:function(){return sV},ListChannelMembershipsRequestFilterSensitiveLog:function(){return sN},ListChannelMembershipsResponseFilterSensitiveLog:function(){return sL},ListChannelMessagesCommand:function(){return d8},ListChannelMessagesRequestFilterSensitiveLog:function(){return sU},ListChannelMessagesResponseFilterSensitiveLog:function(){return sz},ListChannelModeratorsCommand:function(){return d9},ListChannelModeratorsRequestFilterSensitiveLog:function(){return s$},ListChannelModeratorsResponseFilterSensitiveLog:function(){return sH},ListChannelsAssociatedWithChannelFlowCommand:function(){return d7},ListChannelsAssociatedWithChannelFlowRequestFilterSensitiveLog:function(){return sG},ListChannelsAssociatedWithChannelFlowResponseFilterSensitiveLog:function(){return sK},ListChannelsCommand:function(){return le},ListChannelsModeratedByAppInstanceUserCommand:function(){return lt},ListChannelsModeratedByAppInstanceUserRequestFilterSensitiveLog:function(){return sq},ListChannelsModeratedByAppInstanceUserResponseFilterSensitiveLog:function(){return sQ},ListChannelsRequestFilterSensitiveLog:function(){return sj},ListChannelsResponseFilterSensitiveLog:function(){return sW},ListSubChannelsCommand:function(){return li},ListSubChannelsRequestFilterSensitiveLog:function(){return sJ},ListSubChannelsResponseFilterSensitiveLog:function(){return sY},ListTagsForResourceCommand:function(){return ln},ListTagsForResourceResponseFilterSensitiveLog:function(){return sX},MessageAttributeValueFilterSensitiveLog:function(){return st},MessagingDataType:function(){return rX},NotFoundException:function(){return rL},ProcessorFilterSensitiveLog:function(){return r7},PushNotificationConfigurationFilterSensitiveLog:function(){return si}
1,PushNotificationPreferencesFilterSensitiveLog:function(){return sl},PushNotificationType:function(){return rq},PutChannelExpirationSettingsCommand:function(){return lr},PutChannelMembershipPreferencesCommand:function(){return ls},PutChannelMembershipPreferencesRequestFilterSensitiveLog:function(){return sZ},PutChannelMembershipPreferencesResponseFilterSensitiveLog:function(){return s0},PutMessagingStreamingConfigurationsCommand:function(){return la},RedactChannelMessageCommand:function(){return lo},ResourceLimitExceededException:function(){return r$},SearchChannelsCommand:function(){return ld},SearchChannelsRequestFilterSensitiveLog:function(){return s1},SearchChannelsResponseFilterSensitiveLog:function(){return s2},SearchFieldKey:function(){return r0},SearchFieldOperator:function(){return r1},SendChannelMessageCommand:function(){return ll},SendChannelMessageRequestFilterSensitiveLog:function(){return s6},ServiceFailureException:function(){return rF},ServiceUnavailableException:function(){return rV},SortOrder:function(){return rZ},TagFilterSensitiveLog:function(){return sv},TagResourceCommand:function(){return lc},TagResourceRequestFilterSensitiveLog:function(){return s3},ThrottledClientException:function(){return rU},UnauthorizedClientException:function(){return rz},UntagResourceCommand:function(){return lu},UntagResourceRequestFilterSensitiveLog:function(){return s4},UpdateChannelCommand:function(){return lh},UpdateChannelFlowCommand:function(){return lf},UpdateChannelFlowRequestFilterSensitiveLog:function(){return s8},UpdateChannelMessageCommand:function(){return lm},UpdateChannelMessageRequestFilterSensitiveLog:function(){return s9},UpdateChannelReadMarkerCommand:function(){return lp},UpdateChannelRequestFilterSensitiveLog:function(){return s5},__Client:function(){return ez},paginateListChannelBans:function(){return lv},paginateListChannelFlows:function(){return lb},paginateListChannelMemberships:function(){return ly},paginateListChannelMembershipsForAppInstanceUser:function(){return lS},paginateListChannelMessages:function(){return lC},paginateListChannelModerators:function(){return lw},paginateListChannels:function(){return lE},paginateListChannelsAssociatedWithChannelFlow:function(){return lT},paginateListChannelsModeratedByAppInstanceUser:function(){return lM},paginateListSubChannels:function(){return lA},paginateSearchChannels:function(){return lk}});let s=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,i){t.updateHttpClientConfig(e,i)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}},a=e=>({httpHandler:e.httpHandler()});(S=A||(A={})).HEADER="header",S.QUERY="query",(y=k||(k={})).HEADER="header",y.QUERY="query",(C=_||(_={})).HTTP="http",C.HTTPS="https",(w=P||(P={})).MD5="md5",w.CRC32="crc32",w.CRC32C="crc32c",w.SHA1="sha1",w.SHA256="sha256",(T=R||(R={}))[T.HEADER=0]="HEADER",T[T.TRAILER=1]="TRAILER";let o="__smithy_context";(M=I||(I={})).PROFILE="profile",M.SSO_SESSION="sso-session",M.SERVICES="services",(E=O||(O={})).HTTP_0_9="http/0.9",E.HTTP_1_0="http/1.0",E.TDS_8_0="tds/8.0";class d{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){var t;let i=new d({...e,headers:{...e.headers}});return i.query&&(i.query=Object.keys(t=i.query).reduce((e,i)=>{let n=t[i];return{...e,[i]:Array.isArray(n)?[...n]:n}},{})),i}static isInstance(e){return!!e&&"method"in e&&"protocol"in e&&"hostname"in e&&"path"in e&&"object"==typeof e.query&&"object"==typeof e.headers}clone(){return d.clone(this)}}class l{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){return!!e&&"number"==typeof e.statusCode&&"object"==typeof e.headers}}let c=e=>t=>async i=>{if(!d.isInstance(i.request))return t(i);let{request:n}=i,{handlerProtocol:r=""}=e.requestHandler.metadata||{};if(r.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(i)},u={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},h=e=>({applyToStack:t=>{t.add(c(e),u)}}),f=()=>(e,t)=>async i=>{try{let n=await e(i),{clientName:r,commandName:s,logger:a,dynamoDbDocumentClientOptions:o={}}=t,{overrideInputFilterSensitiveLog:d,overrideOutputFilterSensitiveLog:l}=o,c=d??t.inputFilterSensitiveLog,u=l??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return a?.info?.({clientName:r,commandName:s,input:c(i.input),output:u(f),metadata:h}),n}catch(d){let{clientName:e,commandName:n,logger:r,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,o=a??t.inputFilterSensitiveLog;throw r?.error?.({clientName:e,commandName:n,input:o(i.input),error:d,metadata:d.$metadata}),d}},m={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},p=e=>({applyToStack:e=>{e.add(f(),m)}});var g,v,b,S,y,C,w,T,M,E,A,k,_,P,R,I,O,x,D,B,N=i(34406);let L="X-Amzn-Trace-Id",F=e=>t=>async i=>{let n;let{request:r}=i;if(!d.isInstance(r)||"node"!==e.runtime||r.headers.hasOwnProperty(L))return t(i);let s=N.env.AWS_LAMBDA_FUNCTION_NAME,a=N.env._X_AMZN_TRACE_ID;return"string"==typeof s&&s.length>0&&"string"==typeof(n=a)&&n.length>0&&(r.headers[L]=a),t({...i,request:r})},V={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},U=e=>({applyToStack:t=>{t.add(F(e),V)}}),z=e=>e[o]||(e[o]={}),$=e=>{if("function"==typeof e)return e;let t=Promise.resolve(e);return()=>t},H=(e,t)=>(i,n)=>async r=>{let s=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,r.input)),a=function(e){let t=new Map;for(let i of e)t.set(i.schemeId,i);return t}(e.httpAuthSchemes),o=z(n),d=[];for(let i of s){let r=a.get(i.schemeId);if(!r){d.push(`HttpAuthScheme \`${i.schemeId}\` was not enabled for this service.`);continue}
1let s=r.identityProvider(await t.identityProviderConfigProvider(e));if(!s){d.push(`HttpAuthScheme \`${i.schemeId}\` did not have an IdentityProvider configured.`);continue}let{identityProperties:l={},signingProperties:c={}}=i.propertiesExtractor?.(e,n)||{};i.identityProperties=Object.assign(i.identityProperties||{},l),i.signingProperties=Object.assign(i.signingProperties||{},c),o.selectedHttpAuthScheme={httpAuthOption:i,identity:await s(i.identityProperties),signer:r.signer};break}if(!o.selectedHttpAuthScheme)throw Error(d.join("\n"));return i(r)},j=async e=>{let t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Q(t)){if(!0===e.ForcePathStyle)throw Error("Path-style addressing cannot be used with ARN buckets")}else q(t)&&(-1===t.indexOf(".")||String(e.Endpoint).startsWith("http:"))&&t.toLowerCase()===t&&!(t.length<3)||(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e},W=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,G=/(\d+\.){3}\d+/,K=/\.\./,q=e=>W.test(e)&&!G.test(e)&&!K.test(e),Q=e=>{let[t,i,n,,,r]=e.split(":"),s="arn"===t&&e.split(":").length>=6,a=!!(s&&i&&n&&r);if(s&&!a)throw Error(`Invalid ARN: ${e} was an invalid ARN.`);return a},J=(e,t,i)=>{let n=async()=>{let n=i[e]??i[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{let e="function"==typeof i.credentials?await i.credentials():i.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{let e="function"==typeof i.credentials?await i.credentials():i.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{let e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){let{protocol:t,hostname:i,port:n,path:r}=e;return`${t}//${i}${n?":"+n:""}${r}`}}return e}:n},Y=async e=>void 0,X=e=>{let t;if("string"==typeof e)return X(new URL(e));let{hostname:i,pathname:n,port:r,protocol:s,search:a}=e;return a&&(t=function(e){let t={};if(e=e.replace(/^\?/,""))for(let i of e.split("&")){let[e,n=null]=i.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(a)),{hostname:i,port:r?parseInt(r):void 0,protocol:s,path:n,query:t}},Z=e=>"object"==typeof e?"url"in e?X(e.url):e:X(e),ee=async(e,t,i,n)=>{if(!i.endpoint){let e;(e=i.serviceConfiguredEndpoint?await i.serviceConfiguredEndpoint():await Y(i.serviceId))&&(i.endpoint=()=>Promise.resolve(Z(e)))}let r=await et(e,t,i);if("function"!=typeof i.endpointProvider)throw Error("config.endpointProvider is not set.");return i.endpointProvider(r,n)},et=async(e,t,i)=>{let n={},r=t?.getEndpointParameterInstructions?.()||{};for(let[t,s]of Object.entries(r))switch(s.type){case"staticContextParams":n[t]=s.value;break;case"contextParams":n[t]=e[s.name];break;case"clientContextParams":case"builtInParams":n[t]=await J(s.name,t,i)();break;default:throw Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(s))}return 0===Object.keys(r).length&&Object.assign(n,i),"s3"===String(i.serviceId).toLowerCase()&&await j(n),n},ei=({config:e,instructions:t})=>(i,n)=>async r=>{let s=await ee(r.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=s,n.authSchemes=s.properties?.authSchemes;let a=n.authSchemes?.[0];if(a){n.signing_region=a.signingRegion,n.signing_service=a.signingName;let e=z(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:a.signingRegion,signingRegion:a.signingRegion,signing_service:a.signingName,signingName:a.signingName,signingRegionSet:a.signingRegionSet},a.properties))}return i({...r})},en=(e,t)=>i=>async n=>{let{response:r}=await i(n);try{let i=await t(r,e);return{response:r,output:i}}catch(e){throw Object.defineProperty(e,"$response",{value:r}),"$metadata"in e||(e.message+="\n  Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.",void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)),e}},er=(e,t)=>(i,n)=>async r=>{let s=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!s)throw Error("No valid endpoint provider available.");let a=await t(r.input,{...e,endpoint:s});return i({...r,request:a})},es={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ea={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function eo(e,t,i){return{applyToStack:n=>{n.add(en(e,i),es),n.add(er(e,t),ea)}}}let ed={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ea.name},el=(e,t)=>
1({applyToStack:i=>{i.addRelativeTo(ei({config:e,instructions:t}),ed)}}),ec=e=>{let t;let i=e.tls??!0,{endpoint:n}=e,r={...e,endpoint:null!=n?async()=>Z(await $(n)()):void 0,tls:i,isCustomEndpoint:!!n,useDualstackEndpoint:$(e.useDualstackEndpoint??!1),useFipsEndpoint:$(e.useFipsEndpoint??!1)};return r.serviceConfiguredEndpoint=async()=>(e.serviceId&&!t&&(t=Y(e.serviceId)),t),r},eu={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:ed.name},eh=(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:i})=>({applyToStack:n=>{n.addRelativeTo(H(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:i}),eu)}});ea.name;let ef=e=>e=>{throw e},em=(e,t)=>{},ep=e=>(e,t)=>async i=>{if(!d.isInstance(i.request))return e(i);let n=z(t).selectedHttpAuthScheme;if(!n)throw Error("No HttpAuthScheme was selected: unable to sign request");let{httpAuthOption:{signingProperties:r={}},identity:s,signer:a}=n,o=await e({...i,request:await a.sign(i.request,s,r)}).catch((a.errorHandler||ef)(r));return(a.successHandler||em)(o.response,r),o};(g=x||(x={})).STANDARD="standard",g.ADAPTIVE="adaptive";let eg=x.STANDARD,ev=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],eb=["TimeoutError","RequestTimeout","RequestTimeoutException"],eS=[500,502,503,504],ey=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],eC=e=>e.$metadata?.clockSkewCorrected,ew=e=>e.$metadata?.httpStatusCode===429||ev.includes(e.name)||e.$retryable?.throttling==!0,eT=e=>eC(e)||eb.includes(e.name)||ey.includes(e?.code||"")||eS.includes(e.$metadata?.httpStatusCode||0),eM=e=>{if(e.$metadata?.httpStatusCode!==void 0){let t=e.$metadata.httpStatusCode;if(500<=t&&t<=599&&!eT(e))return!0}return!1};class eE{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;let t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){let t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise(e=>setTimeout(e,t))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){let e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=e;return}let t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),ew(e)){let e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());let i=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(i)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}
1cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){let e=Math.floor(2*this.getCurrentTimeInSeconds())/2;if(this.requestCount++,e>this.lastTxRateBucket){let t=this.requestCount/(e-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(t*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=e}}getPrecise(e){return parseFloat(e.toFixed(8))}}let eA=()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}},ek=({retryDelay:e,retryCount:t,retryCost:i})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>i});class e_{constructor(e){this.maxAttempts=e,this.mode=x.STANDARD,this.capacity=500,this.retryBackoffStrategy=eA(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return ek({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){let i=await this.getMaxAttempts();if(this.shouldRetry(e,t,i)){let i=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===i?500:100);let n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),r=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,s=this.getCapacityCost(i);return this.capacity-=s,ek({retryDelay:r,retryCount:e.getRetryCount()+1,retryCost:s})}throw Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,i){return e.getRetryCount()+1<i&&this.capacity>=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class eP{constructor(e,t){this.maxAttemptsProvider=e,this.mode=x.ADAPTIVE;let{rateLimiter:i}=t??{};this.rateLimiter=i??new eE,this.standardRetryStrategy=new e_(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}var eR={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let eI=new Uint8Array(16),eO=[];for(let e=0;e<256;++e)eO.push((e+256).toString(16).slice(1));var ex=function(e,t,i){if(eR.randomUUID&&!t&&!e)return eR.randomUUID();let r=(e=e||{}).random||(e.rng||function(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(eI)})();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){i=i||0;for(let e=0;e<16;++e)t[i+e]=r[e];return t}return function(e,t=0){return eO[e[t+0]]+eO[e[t+1]]+eO[e[t+2]]+eO[e[t+3]]+"-"+eO[e[t+4]]+eO[e[t+5]]+"-"+eO[e[t+6]]+eO[e[t+7]]+"-"+eO[e[t+8]]+eO[e[t+9]]+"-"+eO[e[t+10]]+eO[e[t+11]]+eO[e[t+12]]+eO[e[t+13]]+eO[e[t+14]]+eO[e[t+15]]}(r)};let eD=e=>e instanceof Error?e:e instanceof Object?Object.assign(Error(),e):"string"==typeof e?Error(e):Error(`AWS SDK error wrapper for ${e}`),eB=e=>{let{retryStrategy:t}=e,i=$(e.maxAttempts??3);return{...e,maxAttempts:i,retryStrategy:async()=>t||(await $(e.retryMode)()===x.ADAPTIVE?new eP(i):new e_(i))}},eN=(e,t)=>{let i=[];if(e&&i.push(e),t)for(let e of t)i.push(e);return i},eL=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,eF=()=>{let e=[],t=[],i=!1,n=new Set,r=e=>e.sort((e,t)=>
1eV[t.step]-eV[e.step]||eU[t.priority||"normal"]-eU[e.priority||"normal"]),s=i=>{let r=!1,s=e=>{let t=eN(e.name,e.aliases);if(t.includes(i)){for(let e of(r=!0,t))n.delete(e);return!1}return!0};return e=e.filter(s),t=t.filter(s),r},a=i=>{let r=!1,s=e=>{if(e.middleware===i){for(let t of(r=!0,eN(e.name,e.aliases)))n.delete(t);return!1}return!0};return e=e.filter(s),t=t.filter(s),r},o=i=>(e.forEach(e=>{i.add(e.middleware,{...e})}),t.forEach(e=>{i.addRelativeTo(e.middleware,{...e})}),i.identifyOnResolve?.(c.identifyOnResolve()),i),d=e=>{let t=[];return e.before.forEach(e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...d(e))}),t.push(e),e.after.reverse().forEach(e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...d(e))}),t},l=(i=!1)=>{let n=[],s=[],a={};return e.forEach(e=>{let t={...e,before:[],after:[]};for(let e of eN(t.name,t.aliases))a[e]=t;n.push(t)}),t.forEach(e=>{let t={...e,before:[],after:[]};for(let e of eN(t.name,t.aliases))a[e]=t;s.push(t)}),s.forEach(e=>{if(e.toMiddleware){let t=a[e.toMiddleware];if(void 0===t){if(i)return;throw Error(`${e.toMiddleware} is not found when adding ${eL(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}),r(n).map(d).reduce((e,t)=>(e.push(...t),e),[])},c={add:(t,i={})=>{let{name:r,override:s,aliases:a}=i,o={step:"initialize",priority:"normal",middleware:t,...i},d=eN(r,a);if(d.length>0){if(d.some(e=>n.has(e))){if(!s)throw Error(`Duplicate middleware name '${eL(r,a)}'`);for(let t of d){let i=e.findIndex(e=>e.name===t||e.aliases?.some(e=>e===t));if(-1===i)continue;let n=e[i];if(n.step!==o.step||o.priority!==n.priority)throw Error(`"${eL(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${eL(r,a)}" middleware with ${o.priority} priority in ${o.step} step.`);e.splice(i,1)}}for(let e of d)n.add(e)}e.push(o)},addRelativeTo:(e,i)=>{let{name:r,override:s,aliases:a}=i,o={middleware:e,...i},d=eN(r,a);if(d.length>0){if(d.some(e=>n.has(e))){if(!s)throw Error(`Duplicate middleware name '${eL(r,a)}'`);for(let e of d){let i=t.findIndex(t=>t.name===e||t.aliases?.some(t=>t===e));if(-1===i)continue;let n=t[i];if(n.toMiddleware!==o.toMiddleware||n.relation!==o.relation)throw Error(`"${eL(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${eL(r,a)}" middleware ${o.relation} "${o.toMiddleware}" middleware.`);t.splice(i,1)}}for(let e of d)n.add(e)}t.push(o)},clone:()=>o(eF()),use:e=>{e.applyToStack(c)},remove:e=>"string"==typeof e?s(e):a(e),removeByTag:i=>{let r=!1,s=e=>{let{tags:t,name:s,aliases:a}=e;if(t&&t.includes(i)){for(let e of eN(s,a))n.delete(e);return r=!0,!1}return!0};return e=e.filter(s),t=t.filter(s),r},concat:e=>{let t=o(eF());return t.use(e),t.identifyOnResolve(i||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:o,identify:()=>l(!0).map(e=>{let t=e.step??e.relation+" "+e.toMiddleware;return eL(e.name,e.aliases)+" - "+t}),identifyOnResolve:e=>("boolean"==typeof e&&(i=e),i),resolve:(e,t)=>{for(let i of l().map(e=>e.middleware).reverse())e=i(e,t);return i&&console.log(c.identify()),e}};return c},eV={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},eU={high:3,normal:2,low:1};class ez{constructor(e){this.config=e,this.middlewareStack=eF()}send(e,t,i){let n;let r="function"!=typeof t?t:void 0,s="function"==typeof t?t:i;if(void 0===r&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);let t=this.handlers;t.has(e.constructor)?n=t.get(e.constructor):(n=e.resolveMiddleware(this.middlewareStack,this.config,r),t.set(e.constructor,n))}else delete this.handlers,n=e.resolveMiddleware(this.middlewareStack,this.config,r);if(!s)return n(e).then(e=>e.output);n(e).then(e=>s(null,e.output),e=>s(e)).catch(()=>{})}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}let e$={},eH=Array(64);for(let e=0;e+65<=90;e++){let t=String.fromCharCode(e+65);e$[t]=e,eH[e]=t}for(let e=0;e+97<=122;e++){let t=String.fromCharCode(e+97),i=e+26;e$[t]=i,eH[i]=t}for(let e=0;e<10;e++){e$[e.toString(10)]=e+52;let t=e.toString(10),i=e+52;e$[t]=i,eH[i]=t}e$["+"]=62,eH[62]="+",e$["/"]=63,eH[63]="/";let ej=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;let i=new ArrayBuffer(t),n=new DataView(i);for(let t=0;t<e.length;t+=4){let i=0,r=0;for(let n=t,s=t+3;n<=s;
1n++)if("="!==e[n]){if(!(e[n]in e$))throw TypeError(`Invalid character ${e[n]} in base64 string.`);i|=e$[e[n]]<<(s-n)*6,r+=6}else i>>=6;let s=t/4*3;i>>=r%8;let a=Math.floor(r/8);for(let e=0;e<a;e++){let t=(a-e-1)*8;n.setUint8(s+e,(i&255<<t)>>t)}}return new Uint8Array(i)},eW=e=>new TextEncoder().encode(e);function eG(e){let t;let i="object"==typeof(t="string"==typeof e?eW(e):e)&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!i&&!n)throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let r="";for(let e=0;e<t.length;e+=3){let i=0,n=0;for(let r=e,s=Math.min(e+3,t.length);r<s;r++)i|=t[r]<<(s-r-1)*8,n+=8;let s=Math.ceil(n/6);i<<=6*s-n;for(let e=1;e<=s;e++){let t=(s-e)*6;r+=eH[(i&63<<t)>>t]}r+="==".slice(0,4-s)}return r}let eK=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};class eq extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return"base64"===t?eq.mutate(ej(e)):eq.mutate(eW(e));throw Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,eq.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?eG(e):eK(e)}(this,e)}}let eQ=e=>encodeURIComponent(e).replace(/[!'()*]/g,eJ),eJ=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`,eY={supported:void 0};class eX{static create(e){return"function"==typeof e?.handle?e:new eX(e)}constructor(e){"function"==typeof e?this.configProvider=e().then(e=>e||{}):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===eY.supported&&(eY.supported=!!("undefined"!=typeof Request&&"keepalive"in new Request("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);let i=this.config.requestTimeout,n=!0===this.config.keepAlive,r=this.config.credentials;if(t?.aborted){let e=Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let s=e.path,a=function(e){let t=[];for(let i of Object.keys(e).sort()){let n=e[i];if(i=eQ(i),Array.isArray(n))for(let e=0,r=n.length;e<r;e++)t.push(`${i}=${eQ(n[e])}`);else{let e=i;(n||"string"==typeof n)&&(e+=`=${eQ(n)}`),t.push(e)}}return t.join("&")}(e.query||{});a&&(s+=`?${a}`),e.fragment&&(s+=`#${e.fragment}`);let o="";if(null!=e.username||null!=e.password){let t=e.username??"",i=e.password??"";o=`${t}:${i}@`}let{port:d,method:c}=e,u=`${e.protocol}//${o}${e.hostname}${d?`:${d}`:""}${s}`,h="GET"===c||"HEAD"===c?void 0:e.body,f={body:h,headers:new Headers(e.headers),method:c,credentials:r};this.config?.cache&&(f.cache=this.config.cache),h&&(f.duplex="half"),"undefined"!=typeof AbortController&&(f.signal=t),eY.supported&&(f.keepalive=n),"function"==typeof this.config.requestInit&&Object.assign(f,this.config.requestInit(e));let m=()=>{},p=[fetch(new Request(u,f)).then(e=>{let t=e.headers,i={};for(let e of t.entries())i[e[0]]=e[1];return void 0!=e.body?{response:new l({headers:i,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then(t=>({response:new l({headers:i,reason:e.statusText,statusCode:e.status,body:t})}))}),function(e=0){return new Promise((t,i)=>{e&&setTimeout(()=>{let t=Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",i(t)},e)})}(i)];return t&&p.push(new Promise((e,i)=>{let n=()=>{let e=Error("Request aborted");e.name="AbortError",i(e)};"function"==typeof t.addEventListener?(t.addEventListener("abort",n,{once:!0}),m=()=>t.removeEventListener("abort",n)):t.onabort=n})),Promise.race(p).finally(m)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then(i=>(i[e]=t,i))}httpHandlerConfigs(){return this.config??{}}}let eZ=e=>"function"==typeof Blob&&e instanceof Blob?e0(e):e1(e);async function e0(e){return new Uint8Array(ej(await new Promise((t,i)=>{let n=new FileReader;n.onloadend=()=>
1{if(2!==n.readyState)return i(Error("Reader aborted too early"));let e=n.result??"",r=e.indexOf(","),s=r>-1?r+1:e.length;t(e.substring(s))},n.onabort=()=>i(Error("Read aborted")),n.onerror=()=>i(n.error),n.readAsDataURL(e)})))}async function e1(e){let t=[],i=e.getReader(),n=!1,r=0;for(;!n;){let{done:e,value:s}=await i.read();s&&(t.push(s),r+=s.length),n=e}let s=new Uint8Array(r),a=0;for(let e of t)s.set(e,a),a+=e.length;return s}let e2={},e6={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),e2[e]=t,e6[t]=e}function e3(e){let t="";for(let i=0;i<e.byteLength;i++)t+=e2[e[i]];return t}let e4=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return eq.mutate(e);if(!e)return eq.mutate(new Uint8Array);let i=t.streamCollector(e);return eq.mutate(await i)};class e5{constructor(){this.middlewareStack=eF()}static classBuilder(){return new e8}resolveMiddlewareWithContext(e,t,i,{middlewareFn:n,clientName:r,commandName:s,inputFilterSensitiveLog:a,outputFilterSensitiveLog:d,smithyContext:l,additionalContext:c,CommandCtor:u}){for(let r of n.bind(this)(u,e,t,i))this.middlewareStack.use(r);let h=e.concat(this.middlewareStack),{logger:f}=t,m={logger:f,clientName:r,commandName:s,inputFilterSensitiveLog:a,outputFilterSensitiveLog:d,[o]:{commandInstance:this,...l},...c},{requestHandler:p}=t;return h.resolve(e=>p.handle(e.request,i||{}),m)}}class e8{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,i={}){return this._smithyContext={service:e,operation:t,...i},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){let e;let t=this;return e=class extends e5{static getEndpointParameterInstructions(){return t._ep}constructor(...[e]){super(),this.serialize=t._serializer,this.deserialize=t._deserializer,this.input=e??{},t._init(this)}resolveMiddleware(i,n,r){return this.resolveMiddlewareWithContext(i,n,r,{CommandCtor:e,middlewareFn:t._middlewareFn,clientName:t._clientName,commandName:t._commandName,inputFilterSensitiveLog:t._inputFilterSensitiveLog,outputFilterSensitiveLog:t._outputFilterSensitiveLog,smithyContext:t._smithyContext,additionalContext:t._additionalContext})}}}}let e9="***SensitiveInformation***",e7=e=>{if(null!=e){if("number"==typeof e){if((0===e||1===e)&&td.warn(to(`Expected boolean, got ${typeof e}: ${e}`)),0===e)return!1;if(1===e)return!0}if("string"==typeof e){let t=e.toLowerCase();if(("false"===t||"true"===t)&&td.warn(to(`Expected boolean, got ${typeof e}: ${e}`)),"false"===t)return!1;if("true"===t)return!0}if("boolean"==typeof e)return e;throw TypeError(`Expected boolean, got ${typeof e}: ${e}`)}},te=e=>{if(null!=e){if("string"==typeof e){let t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&td.warn(to(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw TypeError(`Expected number, got ${typeof e}: ${e}`)}},tt=(e,t)=>{if(null==e){if(t)throw TypeError(`Expected a non-null value for ${t}`);throw TypeError("Expected a non-null value")}return e},ti=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;let t=Array.isArray(e)?"array":typeof e;throw TypeError(`Expected object, got ${t}: ${e}`)},tn=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return td.warn(to(`Expected string, got ${typeof e}: ${e}`)),String(e);throw TypeError(`Expected string, got ${typeof e}: ${e}`)}},tr=e=>"string"==typeof e?te(ta(e)):te(e),ts=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,ta=e=>{let t=e.match(ts);if(null===t||t[0].length!==e.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat(e)},to=e=>String(TypeError(e).stack||e).split("\n").slice(0,5).filter(e=>!e.includes("stackTraceWarning")).join("\n"),td={warn:console.warn},tl=e=>{let t;if(null!=e){if("number"==typeof e)t=e;else if("string"==typeof e)t=tr(e);else if("object"==typeof e&&1===e.tag)t=e.value;else throw TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(t)||t===1/0||t===-1/0)throw TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(1e3*t))}};
1class tc extends Error{constructor(e){super(e.message),Object.setPrototypeOf(this,tc.prototype),this.name=e.name,this.$fault=e.$fault,this.$metadata=e.$metadata}}let tu=(e,t={})=>{Object.entries(t).filter(([,e])=>void 0!==e).forEach(([t,i])=>{(void 0==e[t]||""===e[t])&&(e[t]=i)});let i=e.message||e.Message||"UnknownError";return e.message=i,delete e.Message,e},th=({output:e,parsedBody:t,exceptionCtor:i,errorCode:n})=>{let r=tf(e),s=r.httpStatusCode?r.httpStatusCode+"":void 0;throw tu(new i({name:t?.code||t?.Code||n||s||"UnknownError",$fault:"client",$metadata:r}),t)},tf=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),tm=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},tp=e=>{let t=[];for(let i in P){let n=P[i];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},tg=e=>{let t={};return e.checksumAlgorithms().forEach(e=>{t[e.algorithmId()]=e.checksumConstructor()}),t},tv=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},tb=e=>{let t={};return t.retryStrategy=e.retryStrategy(),t},tS=e=>({...tp(e),...tv(e)}),ty=e=>({...tg(e),...tb(e)}),tC=e=>null!=e,tw=function(){let e=Object.getPrototypeOf(this).constructor,t=Function.bind.apply(String,[null,...arguments]),i=new t;return Object.setPrototypeOf(i,e.prototype),i};tw.prototype=Object.create(String.prototype,{constructor:{value:tw,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(tw,String);class tT{trace(){}debug(){}info(){}warn(){}error(){}}function tM(e,t,i){let n,r;if(void 0===t&&void 0===i)n={},r=e;else{if(n=e,"function"==typeof t)return tA(n,t,r=i);r=t}for(let e of Object.keys(r)){if(!Array.isArray(r[e])){n[e]=r[e];continue}tk(n,null,r,e)}return n}let tE=(e,t)=>{let i={};for(let n in t)tk(i,e,t,n);return i},tA=(e,t,i)=>tM(e,Object.entries(i).reduce((e,[i,n])=>(Array.isArray(n)?e[i]=n:"function"==typeof n?e[i]=[t,n()]:e[i]=[t,n],e),{})),tk=(e,t,i,n)=>{if(null!==t){let r=i[n];"function"==typeof r&&(r=[,r]);let[s=t_,a=tP,o=n]=r;("function"==typeof s&&s(t[o])||"function"!=typeof s&&s)&&(e[n]=a(t[o]));return}let[r,s]=i[n];if("function"==typeof s){let t;let i=void 0===r&&null!=(t=s()),a="function"==typeof r&&!!r(void 0)||"function"!=typeof r&&!!r;i?e[n]=t:a&&(e[n]=s())}else{let t=void 0===r&&null!=s,i="function"==typeof r&&!!r(s)||"function"!=typeof r&&!!r;(t||i)&&(e[n]=s)}},t_=e=>null!=e,tP=e=>e;function tR(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}let tI=(e,t,i,n,r,s)=>{if(null!=t&&void 0!==t[i]){let t=n();if(t.length<=0)throw Error("Empty value provided for input HTTP label: "+i+".");e=e.replace(r,s?t.split("/").map(e=>tR(e)).join("/"):tR(t))}else throw Error("No value provided for input HTTP label: "+i+".");return e},tO=e=>e.toISOString().replace(".000Z","Z"),tx=e=>{if(null==e)return{};if(Array.isArray(e))return e.filter(e=>null!=e).map(tx);if("object"==typeof e){let t={};for(let i of Object.keys(e))null!=e[i]&&(t[i]=tx(e[i]));return t}return e},tD=e=>e?.body instanceof ReadableStream,tB=e=>(t,i)=>async n=>{let r=await e.retryStrategy(),s=await e.maxAttempts();if(!tN(r))return r?.mode&&(i.userAgent=[...i.userAgent||[],["cfg/retry-mode",r.mode]]),r.retry(t,n);{let e=await r.acquireInitialRetryToken(i.partition_id),a=Error(),o=0,l=0,{request:c}=n,u=d.isInstance(c);for(u&&(c.headers["amz-sdk-invocation-id"]=ex());;)try{u&&(c.headers["amz-sdk-request"]=`attempt=${o+1}; max=${s}`);let{response:i,output:a}=await t(n);return r.recordSuccess(e),a.$metadata.attempts=o+1,a.$metadata.totalRetryDelay=l,{response:i,output:a}}catch(s){let t=tL(s);if(a=eD(s),u&&tD(c))throw(i.logger instanceof tT?console:i.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await r.refreshRetryTokenForRetry(e,t)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=o+1,a.$metadata.totalRetryDelay=l,a}o=e.getRetryCount();let n=e.getRetryDelay();l+=n,await new Promise(e=>setTimeout(e,n))}}},tN=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,tL=e=>{let t={error:e,errorType:tF(e)},i=tz(e.$response);return i&&(t.retryAfterHint=i),t},tF=e=>ew(e)?"THROTTLING":eT(e)?"TRANSIENT":eM(e)?"SERVER_ERROR":"CLIENT_ERROR",tV={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},tU=e=>({applyToStack:t=>{t.add(tB(e),tV)}}),tz=e=>{if(!l.isInstance(e))return;let t=Object.keys(e.headers).find(e=>"retry-after"===e.toLowerCase());if(!t)return;let i=e.headers[t],n=Number(i);return new Date(Number.isNaN(n)?i:1e3*n)},t$={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:tV.name},tH=e=>({applyToStack:t=>{t.addRelativeTo(ep(e),t$)}});class tj{constructor(e){for(let[t,i]of(this.authSchemes=new Map,Object.entries(e)))void 0!==i&&this.authSchemes.set(t,i)}
1getIdentityProvider(e){return this.authSchemes.get(e)}}let tW=e=>tG(e)&&e.expiration.getTime()-Date.now()<3e5,tG=e=>void 0!==e.expiration,tK=(e,t,i)=>{let n,r,s;if(void 0===e)return;let a="function"!=typeof e?async()=>Promise.resolve(e):e,o=!1,d=async e=>{r||(r=a(e));try{n=await r,s=!0,o=!1}finally{r=void 0}return n};return void 0===t?async e=>((!s||e?.forceRefresh)&&(n=await d(e)),n):async e=>((!s||e?.forceRefresh)&&(n=await d(e)),o||(i(n)?t(n)&&await d(e):o=!0),n)},tq=e=>{if("function"==typeof e)return e;let t=Promise.resolve(e);return()=>t};function tQ(e,t){return new tJ(e,t)}class tJ{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){let{hostname:e,protocol:t="https",port:i,path:n}=await this.context.endpoint();for(let e of(this.path=n,this.resolvePathStack))e(this.path);return new d({protocol:t,hostname:this.hostname||e,port:i,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e}),this}p(e,t,i,n){return this.resolvePathStack.push(r=>{this.path=tI(r,this.input,e,t,i,n)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}let tY=async(e,t,i,...n)=>await t.send(new e(i),...n);function tX(e,t,i,n,r){return async function*(s,a,...o){let d,l=s.startingToken||void 0,c=!0;for(;c;){if(a[i]=l,r&&(a[r]=a[r]??s.pageSize),s.client instanceof e)d=await tY(t,s.client,a,...o);else throw Error(`Invalid client, expected instance of ${e.name}`);yield d;let u=l;c=!!((l=tZ(d,n))&&(!s.stopOnSameToken||l!==u))}}}let tZ=(e,t)=>{let i=e;for(let e of t.split(".")){if(!i||"object"!=typeof i)return;i=i[e]}return i},t0=void 0;class t1{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){let i=this.hash(e);if(!1===i)return t();if(!this.data.has(i)){if(this.data.size>this.capacity+10){let e=this.data.keys(),t=0;for(;;){let{value:i,done:n}=e.next();if(this.data.delete(i),n||++t>10)break}}this.data.set(i,t())}return this.data.get(i)}size(){return this.data.size}hash(e){let t="",{parameters:i}=this;if(0===i.length)return!1;for(let n of i){let i=String(e[n]??"");if(i.includes("|;"))return!1;t+=i+"|;"}return t}}let t2=RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),t6=e=>t2.test(e)||e.startsWith("[")&&e.endsWith("]"),t3=RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),t4=(e,t=!1)=>{if(!t)return t3.test(e);for(let t of e.split("."))if(!t4(t))return!1;return!0},t5={},t8="endpoints";function t9(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${t9(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(t9).join(", ")})`:JSON.stringify(e,null,2)}
1class t7 extends Error{constructor(e){super(e),this.name="EndpointError"}}let ie=e=>{let t=e.split("."),i=[];for(let n of t){let t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new t7(`Path: '${e}' does not end with ']'`);let r=n.slice(t+1,-1);if(Number.isNaN(parseInt(r)))throw new t7(`Invalid array index: '${r}' in path: '${e}'`);0!==t&&i.push(n.slice(0,t)),i.push(r)}else i.push(n)}return i},it=(e,t)=>ie(t).reduce((i,n)=>{if("object"!=typeof i)throw new t7(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(i)?i[parseInt(n)]:i[n]},e),ii={[_.HTTP]:80,[_.HTTPS]:443},ir={booleanEquals:(e,t)=>e===t,getAttr:it,isSet:e=>null!=e,isValidHostLabel:t4,not:e=>!e,parseURL:e=>{let t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){let{hostname:t,port:i,protocol:n="",path:r="",query:s={}}=e,a=new URL(`${n}//${t}${i?`:${i}`:""}${r}`);return a.search=Object.entries(s).map(([e,t])=>`${e}=${t}`).join("&"),a}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;let i=t.href,{host:n,hostname:r,pathname:s,protocol:a,search:o}=t;if(o)return null;let d=a.slice(0,-1);if(!Object.values(_).includes(d))return null;let l=t6(r),c=i.includes(`${n}:${ii[d]}`)||"string"==typeof e&&e.includes(`${n}:${ii[d]}`),u=`${n}${c?`:${ii[d]}`:""}`;return{scheme:d,authority:u,path:s,normalizedPath:s.endsWith("/")?s:`${s}/`,isIp:l}},stringEquals:(e,t)=>e===t,substring:(e,t,i,n)=>t>=i||e.length<i?null:n?e.substring(e.length-i,e.length-t):e.substring(t,i),uriEncode:e=>encodeURIComponent(e).replace(/[!*'()]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)},is=(e,t)=>{let i=[],n={...t.endpointParams,...t.referenceRecord},r=0;for(;r<e.length;){let t=e.indexOf("{",r);if(-1===t){i.push(e.slice(r));break}i.push(e.slice(r,t));let s=e.indexOf("}",t);if(-1===s){i.push(e.slice(t));break}"{"===e[t+1]&&"}"===e[s+1]&&(i.push(e.slice(t+1,s)),r=s+2);let a=e.substring(t+1,s);if(a.includes("#")){let[e,t]=a.split("#");i.push(it(n[e],t))}else i.push(n[a]);r=s+1}return i.join("")},ia=({ref:e},t)=>({...t.endpointParams,...t.referenceRecord})[e],io=(e,t,i)=>{if("string"==typeof e)return is(e,i);if(e.fn)return id(e,i);if(e.ref)return ia(e,i);throw new t7(`'${t}': ${String(e)} is not a string, function or reference.`)},id=({fn:e,argv:t},i)=>{let n=t.map(e=>["boolean","number"].includes(typeof e)?e:io(e,"arg",i)),r=e.split(".");return r[0]in t5&&null!=r[1]?t5[r[0]][r[1]](...n):ir[e](...n)},il=({assign:e,...t},i)=>{if(e&&e in i.referenceRecord)throw new t7(`'${e}' is already defined in Reference Record.`);let n=id(t,i);return i.logger?.debug?.(`${t8} evaluateCondition: ${t9(t)} = ${t9(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},ic=(e=[],t)=>{let i={};for(let n of e){let{result:e,toAssign:r}=il(n,{...t,referenceRecord:{...t.referenceRecord,...i}});if(!e)return{result:e};r&&(i[r.name]=r.value,t.logger?.debug?.(`${t8} assign: ${r.name} := ${t9(r.value)}`))}return{result:!0,referenceRecord:i}},iu=(e,t)=>Object.entries(e).reduce((e,[i,n])=>({...e,[i]:n.map(e=>{let n=io(e,"Header value entry",t);if("string"!=typeof n)throw new t7(`Header '${i}' value '${n}' is not a string`);return n})}),{}),ih=(e,t)=>{if(Array.isArray(e))return e.map(e=>ih(e,t));switch(typeof e){case"string":return is(e,t);case"object":if(null===e)throw new t7(`Unexpected endpoint property: ${e}`);return im(e,t);case"boolean":return e;default:throw new t7(`Unexpected endpoint property type: ${typeof e}`)}},im=(e,t)=>Object.entries(e).reduce((e,[i,n])=>({...e,[i]:ih(n,t)}),{}),ip=(e,t)=>{let i=io(e,"Endpoint URL",t);if("string"==typeof i)try{return new URL(i)}catch(e){throw console.error(`Failed to construct URL with ${i}`,e),e}throw new t7(`Endpoint URL must be a string, got ${typeof i}`)},ig=(e,t)=>{let{conditions:i,endpoint:n}=e,{result:r,referenceRecord:s}=ic(i,t);if(!r)return;let a={...t,referenceRecord:{...t.referenceRecord,...s}},{url:o,properties:d,headers:l}=n;return t.logger?.debug?.(`${t8} Resolving endpoint from template: ${t9(n)}`),{...void 0!=l&&{headers:iu(l,a)},...void 0!=d&&{properties:im(d,a)},url:ip(o,a)}},iv=(e,t)=>{let{conditions:i,error:n}=e,{result:r,referenceRecord:s}=ic(i,t);if(r)throw new t7(io(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...s}}))},ib=(e,t)=>
1{let{conditions:i,rules:n}=e,{result:r,referenceRecord:s}=ic(i,t);if(r)return iS(n,{...t,referenceRecord:{...t.referenceRecord,...s}})},iS=(e,t)=>{for(let i of e)if("endpoint"===i.type){let e=ig(i,t);if(e)return e}else if("error"===i.type)iv(i,t);else if("tree"===i.type){let e=ib(i,t);if(e)return e}else throw new t7(`Unknown endpoint rule: ${i}`);throw new t7("Rules evaluation failed")},iy=(e,t)=>{let{endpointParams:i,logger:n}=t,{parameters:r,rules:s}=e;t.logger?.debug?.(`${t8} Initial EndpointParams: ${t9(i)}`);let a=Object.entries(r).filter(([,e])=>null!=e.default).map(([e,t])=>[e,t.default]);if(a.length>0)for(let[e,t]of a)i[e]=i[e]??t;for(let e of Object.entries(r).filter(([,e])=>e.required).map(([e])=>e))if(null==i[e])throw new t7(`Missing required parameter: '${e}'`);let o=iS(s,{endpointParams:i,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${t8} Resolved endpoint: ${t9(o)}`),o},iC=(e,t=!1)=>{if(t){for(let t of e.split("."))if(!iC(t))return!1;return!0}return!(!t4(e)||e.length<3||e.length>63||e!==e.toLowerCase()||t6(e))};var iw=JSON.parse('{"partitions":[{"id":"aws","outputs":{"dnsSuffix":"amazonaws.com","dualStackDnsSuffix":"api.aws","implicitGlobalRegion":"us-east-1","name":"aws","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^(us|eu|ap|sa|ca|me|af|il|mx)\\\\-\\\\w+\\\\-\\\\d+$","regions":{"af-south-1":{"description":"Africa (Cape Town)"},"ap-east-1":{"description":"Asia Pacific (Hong Kong)"},"ap-northeast-1":{"description":"Asia Pacific (Tokyo)"},"ap-northeast-2":{"description":"Asia Pacific (Seoul)"},"ap-northeast-3":{"description":"Asia Pacific (Osaka)"},"ap-south-1":{"description":"Asia Pacific (Mumbai)"},"ap-south-2":{"description":"Asia Pacific (Hyderabad)"},"ap-southeast-1":{"description":"Asia Pacific (Singapore)"},"ap-southeast-2":{"description":"Asia Pacific (Sydney)"},"ap-southeast-3":{"description":"Asia Pacific (Jakarta)"},"ap-southeast-4":{"description":"Asia Pacific (Melbourne)"},"ap-southeast-5":{"description":"Asia Pacific (Malaysia)"},"aws-global":{"description":"AWS Standard global region"},"ca-central-1":{"description":"Canada (Central)"},"ca-west-1":{"description":"Canada West (Calgary)"},"eu-central-1":{"description":"Europe (Frankfurt)"},"eu-central-2":{"description":"Europe (Zurich)"},"eu-north-1":{"description":"Europe (Stockholm)"},"eu-south-1":{"description":"Europe (Milan)"},"eu-south-2":{"description":"Europe (Spain)"},"eu-west-1":{"description":"Europe (Ireland)"},"eu-west-2":{"description":"Europe (London)"},"eu-west-3":{"description":"Europe (Paris)"},"il-central-1":{"description":"Israel (Tel Aviv)"},"me-central-1":{"description":"Middle East (UAE)"},"me-south-1":{"description":"Middle East (Bahrain)"},"sa-east-1":{"description":"South America (Sao Paulo)"},"us-east-1":{"description":"US East (N. Virginia)"},"us-east-2":{"description":"US East (Ohio)"},"us-west-1":{"description":"US West (N. California)"},"us-west-2":{"description":"US West (Oregon)"}}},{"id":"aws-cn","outputs":{"dnsSuffix":"amazonaws.com.cn","dualStackDnsSuffix":"api.amazonwebservices.com.cn","implicitGlobalRegion":"cn-northwest-1","name":"aws-cn","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^cn\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-cn-global":{"description":"AWS China global region"},"cn-north-1":{"description":"China (Beijing)"},"cn-northwest-1":{"description":"China (Ningxia)"}}},{"id":"aws-us-gov","outputs":{"dnsSuffix":"amazonaws.com","dualStackDnsSuffix":"api.aws","implicitGlobalRegion":"us-gov-west-1","name":"aws-us-gov","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-us-gov-global":{"description":"AWS GovCloud (US) global region"},"us-gov-east-1":{"description":"AWS GovCloud (US-East)"},"us-gov-west-1":{"description":"AWS GovCloud (US-West)"}}},{"id":"aws-iso","outputs":{"dnsSuffix":"c2s.ic.gov","dualStackDnsSuffix":"c2s.ic.gov","implicitGlobalRegion":"us-iso-east-1","name":"aws-iso","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-iso-global":{"description":"AWS ISO (US) global region"},"us-iso-east-1":{"description":"US ISO East"},"us-iso-west-1":{"description":"US ISO WEST"}}},{"id":"aws-iso-b","outputs":{"dnsSuffix":"sc2s.sgov.gov","dualStackDnsSuffix":"sc2s.sgov.gov","implicitGlobalRegion":"us-isob-east-1","name":"aws-iso-b","supportsDualStack":false,"supportsFIPS":true}
1,"regionRegex":"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-iso-b-global":{"description":"AWS ISOB (US) global region"},"us-isob-east-1":{"description":"US ISOB East (Ohio)"}}},{"id":"aws-iso-e","outputs":{"dnsSuffix":"cloud.adc-e.uk","dualStackDnsSuffix":"cloud.adc-e.uk","implicitGlobalRegion":"eu-isoe-west-1","name":"aws-iso-e","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$","regions":{"eu-isoe-west-1":{"description":"EU ISOE West"}}},{"id":"aws-iso-f","outputs":{"dnsSuffix":"csp.hci.ic.gov","dualStackDnsSuffix":"csp.hci.ic.gov","implicitGlobalRegion":"us-isof-south-1","name":"aws-iso-f","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$","regions":{}}],"version":"1.1"}');let iT=()=>"",iM={isVirtualHostableS3Bucket:iC,parseArn:e=>{let t=e.split(":");if(t.length<6)return null;let[i,n,r,s,a,...o]=t;return"arn"!==i||""===n||""===r||""===o.join(":")?null:{partition:n,service:r,region:s,accountId:a,resourceId:o.map(e=>e.split("/")).flat()}},partition:e=>{let{partitions:t}=iw;for(let i of t){let{regions:t,outputs:n}=i;for(let[i,r]of Object.entries(t))if(i===e)return{...n,...r}}for(let i of t){let{regionRegex:t,outputs:n}=i;if(new RegExp(t).test(e))return{...n}}let i=t.find(e=>"aws"===e.id);if(!i)throw Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...i.outputs}}};function iE(e,t,i){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=i}t5.aws=iM;let iA=/\d{12}\.ddb/;async function ik(e,t,i){let n=i.request;if(n?.headers?.["smithy-protocol"]==="rpc-v2-cbor"&&iE(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){let i=await t.retryStrategy();"function"==typeof i.acquireInitialRetryToken?i.constructor?.name?.includes("Adaptive")?iE(e,"RETRY_MODE_ADAPTIVE","F"):iE(e,"RETRY_MODE_STANDARD","E"):iE(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){let i=e.endpointV2;switch(String(i?.url?.hostname).match(iA)&&iE(e,"ACCOUNT_ID_ENDPOINT","O"),await t.accountIdEndpointMode?.()){case"disabled":iE(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":iE(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":iE(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}let r=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(r?.$source)for(let[t,i]of(r.accountId&&iE(e,"RESOLVED_ACCOUNT_ID","T"),Object.entries(r.$source??{})))iE(e,t,i)}let i_="user-agent",iP="x-amz-user-agent",iR=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,iI=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g,iO=e=>(t,i)=>async n=>{let{request:r}=n;if(!d.isInstance(r))return t(n);let{headers:s}=r,a=i?.userAgent?.map(ix)||[],o=(await e.defaultUserAgentProvider()).map(ix);await ik(i,e,n),o.push(`m/${function(e){let t="";for(let i in e){let n=e[i];if(t.length+n.length+1<=1024){t.length?t+=","+n:t+=n;continue}break}return t}(Object.assign({},i.__smithy_context?.features,i.__aws_sdk_context?.features))}`);let l=e?.customUserAgent?.map(ix)||[],c=await e.userAgentAppId();c&&o.push(ix([`app/${c}`]));let u=iT(),h=(u?[u]:[]).concat([...o,...a,...l]).join(" "),f=[...o.filter(e=>e.startsWith("aws-sdk-")),...l].join(" ");return"browser"!==e.runtime?(f&&(s[iP]=s[iP]?`${s[i_]} ${f}`:f),s[i_]=h):s[iP]=h,t({...n,request:r})},ix=e=>{let t=e[0].split("/").map(e=>e.replace(iR,"-")).join("/"),i=e[1]?.replace(iI,"-"),n=t.indexOf("/"),r=t.substring(0,n),s=t.substring(n+1);return"api"===r&&(s=s.toLowerCase()),[r,s,i].filter(e=>e&&e.length>0).reduce((e,t,i)=>{switch(i){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}},"")},iD={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},iB=e=>({applyToStack:t=>{t.add(iO(e),iD)}});(v=D||(D={})).ENV="env",v.CONFIG="shared config entry";let iN=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),iL=e=>iN(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,iF=e=>{let{region:t,useFipsEndpoint:i}=e;if(!t)throw Error("Region is missing");return{...e,region:async()=>"string"==typeof t?iL(t):iL(await t()),useFipsEndpoint:async()=>!!iN("string"==typeof t?t:await t())||("function"!=typeof i?Promise.resolve(!!i):i())}},iV="content-length",iU={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},iz=e=>({applyToStack:t=>{var i;t.add((i=e.bodyLengthChecker,e=>async t=>{let n=t.request;if(d.isInstance(n)){let{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map(e=>e.toLowerCase()).indexOf(iV))try{let t=i(e);n.headers={...n.headers,[iV]:String(t)}}catch(e){}}return e({...t,request:n})}),iU)}}),i$=e=>"string"==typeof e?eW(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),iH="X-Amz
1-Date",ij="X-Amz-Signature",iW="X-Amz-Security-Token",iG="authorization",iK=iH.toLowerCase(),iq=[iG,iK,"date"],iQ=ij.toLowerCase(),iJ="x-amz-content-sha256",iY=iW.toLowerCase(),iX={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},iZ=/^proxy-/,i0=/^sec-/,i1="AWS4-HMAC-SHA256",i2="aws4_request",i6={},i3=[],i4=(e,t,i)=>`${e}/${t}/${i}/${i2}`,i5=async(e,t,i,n,r)=>{let s=await i8(e,t.secretAccessKey,t.accessKeyId),a=`${i}:${n}:${r}:${e3(s)}:${t.sessionToken}`;if(a in i6)return i6[a];for(i3.push(a);i3.length>50;)delete i6[i3.shift()];let o=`AWS4${t.secretAccessKey}`;for(let t of[i,n,r,i2])o=await i8(e,o,t);return i6[a]=o},i8=(e,t,i)=>{let n=new e(t);return n.update(i$(i)),n.digest()},i9=({headers:e},t,i)=>{let n={};for(let r of Object.keys(e).sort()){if(void 0==e[r])continue;let s=r.toLowerCase();(!(s in iX||t?.has(s)||iZ.test(s)||i0.test(s))||i&&(!i||i.has(s)))&&(n[s]=e[r].trim().replace(/\s+/g," "))}return n},i7=({query:e={}})=>{let t=[],i={};for(let n of Object.keys(e)){if(n.toLowerCase()===iQ)continue;let r=eQ(n);t.push(r);let s=e[n];"string"==typeof s?i[r]=`${r}=${eQ(s)}`:Array.isArray(s)&&(i[r]=s.slice(0).reduce((e,t)=>e.concat([`${r}=${eQ(t)}`]),[]).sort().join("&"))}return t.sort().map(e=>i[e]).filter(e=>e).join("&")},ne=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),nt=async({headers:e,body:t},i)=>{for(let t of Object.keys(e))if(t.toLowerCase()===iJ)return e[t];if(void 0==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||ne(t)){let e=new i;return e.update(i$(t)),e3(await e.digest())}return"UNSIGNED-PAYLOAD"};class ni{format(e){let t=[];for(let i of Object.keys(e)){let n=eW(i);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[i]))}let i=new Uint8Array(t.reduce((e,t)=>e+t.byteLength,0)),n=0;for(let e of t)i.set(e,n),n+=e.byteLength;return i}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":let t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":let i=new DataView(new ArrayBuffer(5));return i.setUint8(0,4),i.setInt32(1,e.value,!1),new Uint8Array(i.buffer);case"long":let n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":let r=new DataView(new ArrayBuffer(3+e.value.byteLength));r.setUint8(0,6),r.setUint16(1,e.value.byteLength,!1);let s=new Uint8Array(r.buffer);return s.set(e.value,3),s;case"string":let a=eW(e.value),o=new DataView(new ArrayBuffer(3+a.byteLength));o.setUint8(0,7),o.setUint16(1,a.byteLength,!1);let d=new Uint8Array(o.buffer);return d.set(a,3),d;case"timestamp":let l=new Uint8Array(9);return l[0]=8,l.set(nr.fromNumber(e.value.valueOf()).bytes,1),l;case"uuid":if(!nn.test(e.value))throw Error(`Invalid UUID received: ${e.value}`);let c=new Uint8Array(17);return c[0]=9,c.set(function(e){if(e.length%2!=0)throw Error("Hex encoded strings must have an even number length");let t=new Uint8Array(e.length/2);for(let i=0;i<e.length;i+=2){let n=e.slice(i,i+2).toLowerCase();if(n in e6)t[i/2]=e6[n];else throw Error(`Cannot decode unrecognized sequence ${n} as hexadecimal`)}return t}(e.value.replace(/\-/g,"")),1),c}}}(b=B||(B={}))[b.boolTrue=0]="boolTrue",b[b.boolFalse=1]="boolFalse",b[b.byte=2]="byte",b[b.short=3]="short",b[b.integer=4]="integer",b[b.long=5]="long",b[b.byteArray=6]="byteArray",b[b.string=7]="string",b[b.timestamp=8]="timestamp",b[b.uuid=9]="uuid";let nn=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class nr{constructor(e){if(this.bytes=e,8!==e.byteLength)throw Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x7fffffffffffffff||e<-0x8000000000000000)throw Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);let t=new Uint8Array(8);for(let i=7,n=Math.abs(Math.round(e));i>-1&&n>0;i--,n/=256)t[i]=n;return e<0&&ns(t),new nr(t)}valueOf(){let e=this.bytes.slice(0),t=128&e[0];return t&&ns(e),parseInt(e3(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function ns(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}let na=(e,t)=>{for(let i of(e=e.toLowerCase(),Object.keys(t)))if(e===i.toLowerCase())return!0;return!1},no=(e,t={})=>{let{headers:i,query:n={}}=d.clone(e);for(let e of Object.keys(i)){let r=e.toLowerCase();("x-amz-"===r.slice(0,6)&&!t.unhoistableHeaders?.has(r)||t.hoistableHeaders?.has(r))&&(n[e]=i[e],delete i[e])}return{...e,headers:i,query:n}},nd=e=>{for(let t of Object.keys((e=d.clone(e)).headers))iq.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},nl=e=>nc(e).toISOString().replace(/\.\d{3}Z$/,"Z"),nc=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?new Date(Number(e)?1e3*Number(e):e):e;class nu{constructor({applyChecksum:e,credentials:t,region:i,service:n,sha256:r,uriEscapePath:s=!0}){this.headerFormatter=new ni,this.service=n,this.sha256=r,this.uriEscapePath=s,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=$(i),this.credentialProvider=$(t)}async presign(e,t={}
1){let{signingDate:i=new Date,expiresIn:n=3600,unsignableHeaders:r,unhoistableHeaders:s,signableHeaders:a,hoistableHeaders:o,signingRegion:d,signingService:l}=t,c=await this.credentialProvider();this.validateResolvedCredentials(c);let u=d??await this.regionProvider(),{longDate:h,shortDate:f}=nh(i);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");let m=i4(f,u,l??this.service),p=no(nd(e),{unhoistableHeaders:s,hoistableHeaders:o});c.sessionToken&&(p.query[iW]=c.sessionToken),p.query["X-Amz-Algorithm"]=i1,p.query["X-Amz-Credential"]=`${c.accessKeyId}/${m}`,p.query[iH]=h,p.query["X-Amz-Expires"]=n.toString(10);let g=i9(p,r,a);return p.query["X-Amz-SignedHeaders"]=nf(g),p.query[ij]=await this.getSignature(h,m,this.getSigningKey(c,u,f,l),this.createCanonicalRequest(p,g,await nt(e,this.sha256))),p}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:i=new Date,priorSignature:n,signingRegion:r,signingService:s}){let a=r??await this.regionProvider(),{shortDate:o,longDate:d}=nh(i),l=i4(o,a,s??this.service),c=await nt({headers:{},body:t},this.sha256),u=new this.sha256;u.update(e);let h=["AWS4-HMAC-SHA256-PAYLOAD",d,l,n,e3(await u.digest()),c].join("\n");return this.signString(h,{signingDate:i,signingRegion:a,signingService:s})}async signMessage(e,{signingDate:t=new Date,signingRegion:i,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:i,signingService:n,priorSignature:e.priorSignature}).then(t=>({message:e.message,signature:t}))}async signString(e,{signingDate:t=new Date,signingRegion:i,signingService:n}={}){let r=await this.credentialProvider();this.validateResolvedCredentials(r);let s=i??await this.regionProvider(),{shortDate:a}
1=nh(t),o=new this.sha256(await this.getSigningKey(r,s,a,n));return o.update(i$(e)),e3(await o.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:i,unsignableHeaders:n,signingRegion:r,signingService:s}={}){let a=await this.credentialProvider();this.validateResolvedCredentials(a);let o=r??await this.regionProvider(),d=nd(e),{longDate:l,shortDate:c}=nh(t),u=i4(c,o,s??this.service);d.headers[iK]=l,a.sessionToken&&(d.headers[iY]=a.sessionToken);let h=await nt(d,this.sha256);!na(iJ,d.headers)&&this.applyChecksum&&(d.headers[iJ]=h);let f=i9(d,n,i),m=await this.getSignature(l,u,this.getSigningKey(a,o,c,s),this.createCanonicalRequest(d,f,h));return d.headers[iG]=`${i1} Credential=${a.accessKeyId}/${u}, SignedHeaders=${nf(f)}, Signature=${m}`,d}createCanonicalRequest(e,t,i){let n=Object.keys(t).sort();return`${e.method}
2${this.getCanonicalPath(e)}
3${i7(e)}
4${n.map(e=>`${e}:${t[e]}`).join("\n")}
5
6${n.join(";")}
7${i}`}async createStringToSign(e,t,i){let n=new this.sha256;n.update(i$(i));let r=await n.digest();return`${i1}
8${e}
9${t}
10${e3(r)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){let t=[];for(let i of e.split("/"))i?.length!==0&&"."!==i&&(".."===i?t.pop():t.push(i));return eQ(`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`).replace(/%2F/g,"/")}return e}async getSignature(e,t,i,n){let r=await this.createStringToSign(e,t,n),s=new this.sha256(await i);return s.update(i$(r)),e3(await s.digest())}getSigningKey(e,t,i,n){return i5(this.sha256,e,i,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw Error("Resolved credential object is not valid")}}let nh=e=>{let t=nl(e).replace(/[\-:]/g,"");return{longDate:t,shortDate:t.slice(0,8)}},nf=e=>Object.keys(e).sort().join(";"),nm=e=>{let t,i,n=!1;e.credentials&&(n=!0,t=tK(e.credentials,tW,tG)),t||(t=e.credentialDefaultProvider?tq(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw Error("`credentials` is missing")});let{signingEscapePath:r=!0,systemClockOffset:s=e.systemClockOffset||0,sha256:a}=e;return i=e.signer?tq(e.signer):e.regionInfoProvider?()=>tq(e.region)().then(async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t]).then(([i,n])=>{let{signingRegion:s,signingService:o}=i;e.signingRegion=e.signingRegion||s||n,e.signingName=e.signingName||o||e.serviceId;let d={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:a,uriEscapePath:r};return new(e.signerConstructor||nu)(d)}):async i=>{let n=(i=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await tq(e.region)(),properties:{}},i)).signingRegion,s=i.signingName;e.signingRegion=e.signingRegion||n,e.signingName=e.signingName||s||e.serviceId;let o={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:a,uriEscapePath:r};return new(e.signerConstructor||nu)(o)},{...e,systemClockOffset:s,signingEscapePath:r,credentials:n?async()=>t().then(e=>(e.$source||(e.$source={}),e.$source.CREDENTIALS_CODE="e",e)):t,signer:i}},np=async(e,t,i)=>({operation:z(t).operation,region:await $(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),ng=e=>{let t=[];return e.operation,t.push({schemeId:"aws.auth#sigv4",signingProperties:{name:"chime",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}),t},nv=e=>({...nm(e)}),nb=e=>({...e,useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:"chime"}),nS={UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};var ny={i8:"3.675.0"},nC=i(48834).Buffer,nw=void 0!==nC&&nC.from?function(e){return nC.from(e,"utf8")}:e=>new TextEncoder().encode(e);function nT(e){return e instanceof Uint8Array?e:"string"==typeof e?nw(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function nM(e){return"string"==typeof e?0===e.length:0===e.byteLength}var nE={name:"SHA-256"},nA={name:"HMAC",hash:nE},nk=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85]);let n_={};function nP(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:n_}var nR=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!nM(e)){var t=nT(e),i=new Uint8Array(this.toHash.byteLength+t.byteLength);i.set(this.toHash,0),i.set(t,this.toHash.byteLength),this.toHash=i}},e.prototype.digest=function(){var e=this;return this.key?this.key.then(function(t){return nP().crypto.subtle.sign(nA,t,e.toHash).then(function(e){return new Uint8Array(e)})}):nM(this.toHash)?Promise.resolve(nk):Promise.resolve().then(function(){return nP().crypto.subtle.digest(nE,e.toHash)}).then(function(e){return Promise.resolve(new Uint8Array(e))})},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise(function(t,i){nP().crypto.subtle.importKey("raw",nT(e.secret),nA,!1,["sign"]).then(t,i)}),this.key.catch(function(){}))},e}(),nI=i(22970),nO=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756
10734187,3204031479,3329325298]),nx=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],nD=function(){function e(){this.state=Int32Array.from(nx),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}return e.prototype.update=function(e){if(this.finished)throw Error("Attempted to update an already finished hash.");var t=0,i=e.byteLength;if(this.bytesHashed+=i,8*this.bytesHashed>9007199254740991)throw Error("Cannot hash more than 2^53 - 1 bits");for(;i>0;)this.buffer[this.bufferLength++]=e[t++],i--,64===this.bufferLength&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),i=this.bufferLength;if(t.setUint8(this.bufferLength++,128),i%64>=56){for(var n=this.bufferLength;n<64;n++)t.setUint8(n,0);this.hashBuffer(),this.bufferLength=0}for(var n=this.bufferLength;n<56;n++)t.setUint8(n,0);t.setUint32(56,Math.floor(e/4294967296),!0),t.setUint32(60,e),this.hashBuffer(),this.finished=!0}for(var r=new Uint8Array(32),n=0;n<8;n++)r[4*n]=this.state[n]>>>24&255,r[4*n+1]=this.state[n]>>>16&255,r[4*n+2]=this.state[n]>>>8&255,r[4*n+3]=this.state[n]>>>0&255;return r},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,i=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],d=t[6],l=t[7],c=0;c<64;c++){if(c<16)this.temp[c]=(255&e[4*c])<<24|(255&e[4*c+1])<<16|(255&e[4*c+2])<<8|255&e[4*c+3];else{var u=this.temp[c-2],h=(u>>>17|u<<15)^(u>>>19|u<<13)^u>>>10,f=((u=this.temp[c-15])>>>7|u<<25)^(u>>>18|u<<14)^u>>>3;this.temp[c]=(h+this.temp[c-7]|0)+(f+this.temp[c-16]|0)}var m=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&o^~a&d)|0)+(l+(nO[c]+this.temp[c]|0)|0)|0,p=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&n^i&r^n&r)|0;l=d,d=o,o=a,a=s+m|0,s=r,r=n,n=i,i=m+p|0}t[0]+=i,t[1]+=n,t[2]+=r,t[3]+=s,t[4]+=a,t[5]+=o,t[6]+=d,t[7]+=l},e}(),nB=function(){function e(e){this.secret=e,this.hash=new nD,this.reset()}return e.prototype.update=function(e){if(!nM(e)&&!this.error)try{this.hash.update(nT(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return(0,nI.mG)(this,void 0,void 0,function(){return(0,nI.Jh)(this,function(e){return[2,this.digestSync()]})})},e.prototype.reset=function(){if(this.hash=new nD,this.secret){this.outer=new nD;var e=function(e){var t=nT(e);if(t.byteLength>64){var i=new nD;i.update(t),t=i.digest()}var n=new Uint8Array(64);return n.set(t),n}(this.secret),t=new Uint8Array(64);t.set(e);for(var i=0;i<64;i++)e[i]^=54,t[i]^=92;this.hash.update(e),this.outer.update(t);for(var i=0;i<e.byteLength;i++)e[i]=0}},e}(),nN=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"],nL=function(){function e(e){var t,i,n;"object"==typeof(i=t=nP())&&"object"==typeof i.crypto&&"function"==typeof i.crypto.getRandomValues&&"object"==typeof t.crypto.subtle&&(n=t.crypto.subtle)&&nN.every(function(e){return"function"==typeof n[e]})?this.hash=new nR(e):this.hash=new nB(e)}return e.prototype.update=function(e,t){this.hash.update(nT(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),nF=i(77160),nV=i.n(nF);let nU=({serviceId:e,clientVersion:t})=>async i=>{let n="undefined"!=typeof window&&window?.navigator?.userAgent?nV().parse(window.navigator.userAgent):void 0,r=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&r.push([`api/${e}`,t]);let s=await i?.userAgentAppId?.();return s&&r.push([`app/${s}`]),r},nz=e=>()=>Promise.reject(e),n$="function"==typeof TextEncoder?new TextEncoder:null,nH=e=>{if("string"==typeof e){if(n$)return n$.encode(e).byteLength;let t=e.length;for(let i=t-1;i>=0;i--){let n=e.charCodeAt(i);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&i--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw Error(`Body Length computation failed for ${e}`)},nj=e=>new Date(Date.now()+e),nW=e=>l.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,nG=(e,t)=>
10Math.abs(nj(t).getTime()-e)>=3e5,nK=(e,t)=>{let i=Date.parse(e);return nG(i,t)?i-Date.now():t},nq=(e,t)=>{if(!t)throw Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},nQ=async e=>{let t=nq("context",e.context),i=nq("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],r=nq("signer",i.signer),s=await r(n);return{config:i,signer:s,signingRegion:e?.signingRegion,signingRegionSet:e?.signingRegionSet,signingName:e?.signingName}};class nJ{async sign(e,t,i){if(!d.isInstance(e))throw Error("The request is not an instance of `HttpRequest` and cannot be signed");let n=await nQ(i),{config:r,signer:s}=n,{signingRegion:a,signingName:o}=n,l=i.context;if(l?.authSchemes?.length){let[e,t]=l.authSchemes;e?.name==="sigv4a"&&t?.name==="sigv4"&&(a=t?.signingRegion??a,o=t?.signingName??o)}return await s.sign(e,{signingDate:nj(r.systemClockOffset),signingRegion:a,signingService:o})}errorHandler(e){return t=>{let i=t.ServerTime??nW(t.$response);if(i){let n=nq("config",e.config),r=n.systemClockOffset;n.systemClockOffset=nK(i,n.systemClockOffset),n.systemClockOffset!==r&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){let i=nW(e);if(i){let e=nq("config",t.config);e.systemClockOffset=nK(i,e.systemClockOffset)}}}let nY="required",nX="argv",nZ="isSet",n0="booleanEquals",n1="error",n2="endpoint",n6="tree",n3="PartitionResult",n4={[nY]:!1,type:"String"},n5={[nY]:!0,default:!1,type:"Boolean"},n8={ref:"Endpoint"},n9={fn:n0,[nX]:[{ref:"UseFIPS"},!0]},n7={fn:n0,[nX]:[{ref:"UseDualStack"},!0]},re={},rt={fn:"getAttr",[nX]:[{ref:n3},"supportsFIPS"]},ri={fn:n0,[nX]:[!0,{fn:"getAttr",[nX]:[{ref:n3},"supportsDualStack"]}]},rn=[n9],rr=[n7],rs=[{ref:"Region"}],ra={version:"1.0",parameters:{Region:n4,UseDualStack:n5,UseFIPS:n5,Endpoint:n4},rules:[{conditions:[{fn:nZ,[nX]:[n8]}],rules:[{conditions:rn,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:n1},{conditions:rr,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:n1},{endpoint:{url:n8,properties:re,headers:re},type:n2}],type:n6},{conditions:[{fn:nZ,[nX]:rs}],rules:[{conditions:[{fn:"aws.partition",[nX]:rs,assign:n3}],rules:[{conditions:[n9,n7],rules:[{conditions:[{fn:n0,[nX]:[!0,rt]},ri],rules:[{endpoint:{url:"https://messaging-chime-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:re,headers:re},type:n2}],type:n6},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:n1}],type:n6},{conditions:rn,rules:[{conditions:[{fn:n0,[nX]:[rt,!0]}],rules:[{endpoint:{url:"https://messaging-chime-fips.{Region}.{PartitionResult#dnsSuffix}",properties:re,headers:re},type:n2}],type:n6},{error:"FIPS is enabled but this partition does not support FIPS",type:n1}],type:n6},{conditions:rr,rules:[{conditions:[ri],rules:[{endpoint:{url:"https://messaging-chime.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:re,headers:re},type:n2}],type:n6},{error:"DualStack is enabled but this partition does not support DualStack",type:n1}],type:n6},{endpoint:{url:"https://messaging-chime.{Region}.{PartitionResult#dnsSuffix}",properties:re,headers:re},type:n2}],type:n6}],type:n6},{error:"Invalid Configuration: Missing Region",type:n1}]},ro=new t1({size:50,params:["Endpoint","Region","UseDualStack","UseFIPS"]}),rd=(e,t={})=>ro.get(e,()=>iy(ra,{endpointParams:e,logger:t.logger}));t5.aws=iM;let rl=e=>({apiVersion:"2021-05-15",base64Decoder:e?.base64Decoder??ej,base64Encoder:e?.base64Encoder??eG,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??rd,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??ng,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new nJ}],logger:e?.logger??new tT,serviceId:e?.serviceId??"Chime SDK Messaging",urlParser:e?.urlParser??X,utf8Decoder:e?.utf8Decoder??eW,utf8Encoder:e?.utf8Encoder??eK}),rc=(e,t,i)=>{let n,r,s;let a=!1,o=async()=>{r||(r=e());try{n=await r,s=!0,a=!1}finally{r=void 0}return n};return void 0===t?async e=>((!s||e?.forceRefresh)&&(n=await o()),n):async e=>((!s||e?.forceRefresh)&&(n=await o()),a||(i&&!i(n)?a=!0:t(n)&&await o()),n)},ru=["in-region","cross-region","mobile","standard","legacy"],rh=({defaultsMode:e}={})=>rc(async()=>{let t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(rf()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw Error(`Invalid parameter for "defaultsMode", expect ${ru.join(", ")}, got ${t}`)}}),rf=()=>{let e="undefined"!=typeof window&&window?.navigator?.userAgent?nV().parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},rm=e=>{let t=rh(e),i=()=>t().then(tm),n=rl(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??nH,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??nU({serviceId:n.serviceId,clientVersion:ny.i8}),maxAttempts:e?.maxAttempts??3,region:e?.region??nz("Region is missing"),requestHandler:eX.create(e?.requestHandler??i),retryMode:e?.retryMode??(async()=>(await i()).retryMode||eg),sha256:e?.sha256??nL,streamCollector:e?.streamCollector??eZ,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(!1)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(!1))}},rp=e=>{let t=async()=>
10{if(void 0===e.region)throw Error("Region is missing from runtimeConfig");let t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},rg=e=>({region:e.region()}),rv=e=>{let t=e.httpAuthSchemes,i=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){let i=t.findIndex(t=>t.schemeId===e.schemeId);-1===i?t.push(e):t.splice(i,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){i=e},httpAuthSchemeProvider:()=>i,setCredentials(e){n=e},credentials:()=>n}},rb=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()}),rS=e=>e,ry=(e,t)=>{let i={...rS(rp(e)),...rS(tS(e)),...rS(s(e)),...rS(rv(e))};return t.forEach(e=>e.configure(i)),{...e,...rg(i),...ty(i),...a(i),...rb(i)}};class rC extends ez{constructor(...[e]){let t=ry(nv(ec(iF(eB(function(e){let t=tq(e.userAgentAppId??t0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{let i=await t();if(!(void 0===i||"string"==typeof i&&i.length<=50)){let t=e.logger?.constructor?.name!=="NoOpLogger"&&e.logger?e.logger:console;"string"!=typeof i?t?.warn("userAgentAppId must be a string or undefined."):i.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return i}}}(nb(rm(e||{}))))))),e?.extensions||[]);super(t),this.config=t,this.middlewareStack.use(iB(this.config)),this.middlewareStack.use(tU(this.config)),this.middlewareStack.use(iz(this.config)),this.middlewareStack.use(h(this.config)),this.middlewareStack.use(p(this.config)),this.middlewareStack.use(U(this.config)),this.middlewareStack.use(eh(this.config,{httpAuthSchemeParametersProvider:np,identityProviderConfigProvider:async e=>new tj({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(tH(this.config))}destroy(){super.destroy()}}let rw=(e,t)=>e4(e,t).then(e=>t.utf8Encoder(e)),rT=(e,t)=>rw(e,t).then(e=>{if(e.length)try{return JSON.parse(e)}catch(t){throw t?.name==="SyntaxError"&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}return{}}),rM=async(e,t)=>{let i=await rT(e,t);return i.message=i.message??i.Message,i},rE=(e,t)=>{let i,n;let r=e=>{let t=e;return"number"==typeof t&&(t=t.toString()),t.indexOf(",")>=0&&(t=t.split(",")[0]),t.indexOf(":")>=0&&(t=t.split(":")[0]),t.indexOf("#")>=0&&(t=t.split("#")[1]),t},s=(i=e.headers,n="x-amzn-errortype",Object.keys(i).find(e=>e.toLowerCase()===n.toLowerCase()));return void 0!==s?r(e.headers[s]):void 0!==t.code?r(t.code):void 0!==t.__type?r(t.__type):void 0};var rA={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let rk=new Uint8Array(16),r_=[];for(let e=0;e<256;++e)r_.push((e+256).toString(16).slice(1));var rP=function(e,t,i){if(rA.randomUUID&&!t&&!e)return rA.randomUUID();let n=(e=e||{}).random||(e.rng||function(){if(!r&&!(r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(rk)})();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){i=i||0;for(let e=0;e<16;++e)t[i+e]=n[e];return t}return function(e,t=0){return r_[e[t+0]]+r_[e[t+1]]+r_[e[t+2]]+r_[e[t+3]]+"-"+r_[e[t+4]]+r_[e[t+5]]+"-"+r_[e[t+6]]+r_[e[t+7]]+"-"+r_[e[t+8]]+r_[e[t+9]]+"-"+r_[e[t+10]]+r_[e[t+11]]+r_[e[t+12]]+r_[e[t+13]]+r_[e[t+14]]+r_[e[t+15]]}(n)};class rR extends tc{constructor(e){super(e),Object.setPrototypeOf(this,rR.prototype)}}let rI={ALL:"ALL",FILTERED:"FILTERED",NONE:"NONE"},rO={DEFAULT:"DEFAULT",HIDDEN:"HIDDEN"},rx={AccessDenied:"AccessDenied",BadRequest:"BadRequest",Conflict:"Conflict",Forbidden:"Forbidden",NotFound:"NotFound",PhoneNumberAssociationsExist:"PhoneNumberAssociationsExist",PreconditionFailed:"PreconditionFailed",ResourceLimitExceeded:"ResourceLimitExceeded",ServiceFailure:"ServiceFailure",ServiceUnavailable:"ServiceUnavailable",Throttled:"Throttled",Throttling:"Throttling",Unauthorized:"Unauthorized",Unprocessable:"Unprocessable",VoiceConnectorGroupAssociationsExist:"VoiceConnectorGroupAssociationsExist"};class rD extends rR{constructor(e){super({name:"BadRequestException",$fault:"client",...e}),this.name="BadRequestException",this.$fault="client",Object.setPrototypeOf(this,rD.prototype),this.Code=e.Code,this.Message=e.Message}}class rB extends rR{constructor(e){super({name:"ConflictException",$fault:"client",...e}),this.name="ConflictException",this.$fault="client",Object.setPrototypeOf(this,rB.prototype),this.Code=e.Code,this.Message=e.Message}}class rN extends rR{constructor(e){super({name:"ForbiddenException",$fault:"client",...e}),this.name="ForbiddenException",this.$fault="client",Object.setPrototypeOf(this,rN.prototype),this.Code=e.Code,this.Message=e.Message}}class rL extends rR{constructor(e){super({name:"NotFoundException",$fault:"client",...e}),this.name="NotFoundException",this.$fault="client",Object.setPrototypeOf(this,rL.prototype),this.Code=e.Code,this.Message=e.Message}}class rF extends rR{constructor(e){super({name:"ServiceFailureException",$fault:"server",...e}),this.name="ServiceFailureException",this.$fault="server",Object.setPrototypeOf(this,rF.prototype),this.Code=e.Code,this.Message=e.Message}}class rV extends rR{constructor(e){super({name:"ServiceUnavailableException",$fault:"server",...e}),this.name="ServiceUnavailableException",this.$fault="server",Object.setPrototypeOf(this,rV.prototype),this.Code=e.Code,this.Message=e.Message}}class rU extends rR{constructor(e){super({name:"ThrottledClientException",$fault:"client",...e}),this.name="ThrottledClientException",this.$fault="client",Object.setPrototypeOf(this,rU.prototype),this.Code=e.Code,this.Message=e.Message}}class rz extends rR{constructor(e){super({name:"UnauthorizedClientException",$fault:"client",...e}),this.name="UnauthorizedClientException",this.$fault="client",Object.setPrototypeOf(this,rz.prototype),this.Code=e.Code,this.Message=e.Message}}class r$ extends rR{constructor(e){super({name:"ResourceLimitExceededException",$fault:"client",...e}),this.name="ResourceLimitExceededException",this.$fault="client",Object.setPrototypeOf(this,r$.prototype),this.Code=e.Code,this.Message=e.Message}}let rH={CREATED_TIMESTAMP:"CREATED_TIMESTAMP",LAST_MESSAGE_TIMESTAMP:"LAST_MESSAGE_TIMESTAMP"},rj={RESTRICTED:"RESTRICTED",UNRESTRICTED:"UNRESTRICTED"},rW={PRIVATE:"PRIVATE",PUBLIC:"PUBLIC"},rG={ASYNC:"ASYNC"},rK={ABORT:"ABORT",CONTINUE:"CONTINUE"},rq={DEFAULT:"DEFAULT",VOIP:"VOIP"},rQ={NON_PERSISTENT:"NON_PERSISTENT",PERSISTENT:"PERSISTENT"},rJ={DENIED:"DENIED",FAILED:"FAILED",PENDING:"PENDING",SENT:"SENT"}
10,rY={CONTROL:"CONTROL",STANDARD:"STANDARD"},rX={Channel:"Channel",ChannelMessage:"ChannelMessage"},rZ={ASCENDING:"ASCENDING",DESCENDING:"DESCENDING"},r0={MEMBERS:"MEMBERS"},r1={EQUALS:"EQUALS",INCLUDES:"INCLUDES"},r2=e=>({...e,...e.Name&&{Name:e9}}),r6=e=>({...e,...e.InvitedBy&&{InvitedBy:r2(e.InvitedBy)},...e.Members&&{Members:e.Members.map(e=>r2(e))}}),r3=e=>({...e,...e.BatchChannelMemberships&&{BatchChannelMemberships:r6(e.BatchChannelMemberships)}}),r4=e=>({...e,...e.Name&&{Name:e9},...e.Metadata&&{Metadata:e9},...e.CreatedBy&&{CreatedBy:r2(e.CreatedBy)}}),r5=e=>({...e,...e.Name&&{Name:e9},...e.Metadata&&{Metadata:e9}}),r8=e=>({...e,...e.Member&&{Member:r2(e.Member)},...e.CreatedBy&&{CreatedBy:r2(e.CreatedBy)}}),r9=e=>({...e,...e.Member&&{Member:r2(e.Member)}}),r7=e=>({...e,...e.Name&&{Name:e9}}),se=e=>({...e,...e.Processors&&{Processors:e.Processors.map(e=>r7(e))},...e.Name&&{Name:e9}}),st=e=>({...e,...e.StringValues&&{StringValues:e9}}),si=e=>({...e,...e.Title&&{Title:e9},...e.Body&&{Body:e9}}),sn=e=>({...e,...e.Content&&{Content:e9},...e.Metadata&&{Metadata:e9},...e.PushNotification&&{PushNotification:si(e.PushNotification)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce((e,[t,i])=>(e[t]=st(i),e),{})},...e.ContentType&&{ContentType:e9}}),sr=e=>({...e,...e.ChannelMessage&&{ChannelMessage:sn(e.ChannelMessage)}}),ss=e=>({...e,...e.Name&&{Name:e9},...e.Processors&&{Processors:e.Processors.map(e=>r7(e))}}),sa=e=>({...e,...e.InvitedBy&&{InvitedBy:r2(e.InvitedBy)},...e.Member&&{Member:r2(e.Member)}}),so=e=>({...e,...e.Name&&{Name:e9},...e.Metadata&&{Metadata:e9}}),sd=e=>({...e,...e.ChannelSummary&&{ChannelSummary:so(e.ChannelSummary)}}),sl=e=>({...e,...e.FilterRule&&{FilterRule:e9}}),sc=e=>({...e,...e.PushNotifications&&{PushNotifications:sl(e.PushNotifications)}}),su=e=>({...e,...e.Member&&{Member:r2(e.Member)}}),sh=e=>({...e,...e.Content&&{Content:e9},...e.Metadata&&{Metadata:e9},...e.Sender&&{Sender:r2(e.Sender)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce((e,[t,i])=>(e[t]=st(i),e),{})},...e.ContentType&&{ContentType:e9}}),sf=e=>({...e,...e.Content&&{Content:e9},...e.Metadata&&{Metadata:e9},...e.Sender&&{Sender:r2(e.Sender)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce((e,[t,i])=>(e[t]=st(i),e),{})},...e.ContentType&&{ContentType:e9}}),sm=e=>({...e,...e.ChannelSummary&&{ChannelSummary:so(e.ChannelSummary)}}),sp=e=>({...e,...e.Moderator&&{Moderator:r2(e.Moderator)},...e.CreatedBy&&{CreatedBy:r2(e.CreatedBy)}}),sg=e=>({...e,...e.Moderator&&{Moderator:r2(e.Moderator)}}),sv=e=>({...e,...e.Key&&{Key:e9},...e.Value&&{Value:e9}}),sb=e=>({...e,...e.Name&&{Name:e9},...e.Metadata&&{Metadata:e9},...e.ClientRequestToken&&{ClientRequestToken:e9},...e.Tags&&{Tags:e.Tags.map(e=>sv(e))},...e.ChannelId&&{ChannelId:e9}}),sS=e=>({...e,...e.Member&&{Member:r2(e.Member)}}),sy=e=>({...e,...e.Processors&&{Processors:e.Processors.map(e=>r7(e))},...e.Name&&{Name:e9},...e.Tags&&{Tags:e.Tags.map(e=>sv(e))},...e.ClientRequestToken&&{ClientRequestToken:e9}}),sC=e=>({...e,...e.Member&&{Member:r2(e.Member)}}),sw=e=>({...e,...e.ChannelModerator&&{ChannelModerator:r2(e.ChannelModerator)}}),sT=e=>({...e,...e.Channel&&{Channel:r4(e.Channel)}}),sM=e=>({...e,...e.ChannelBan&&{ChannelBan:r8(e.ChannelBan)}}),sE=e=>({...e,...e.ChannelFlow&&{ChannelFlow:se(e.ChannelFlow)}}),sA=e=>({...e,...e.ChannelMembership&&{ChannelMembership:sa(e.ChannelMembership)}}),sk=e=>({...e,...e.ChannelMembership&&{ChannelMembership:sd(e.ChannelMembership)}}),s_=e=>({...e,...e.Channel&&{Channel:sm(e.Channel)}}),sP=e=>({...e,...e.ChannelModerator&&{ChannelModerator:sp(e.ChannelModerator)}}),sR=e=>({...e,...e.Member&&{Member:r2(e.Member)},...e.Preferences&&{Preferences:sc(e.Preferences)}}),sI=e=>({...e,...e.ChannelMessage&&{ChannelMessage:sh(e.ChannelMessage)}}),sO=e=>({...e,...e.NextToken&&{NextToken:e9}}),sx=e=>({...e,...e.NextToken&&{NextToken:e9},...e.ChannelBans&&{ChannelBans:e.ChannelBans.map(e=>r9(e))}}),sD=e=>({...e,...e.NextToken&&{NextToken:e9}}),sB=e=>({...e,...e.ChannelFlows&&{ChannelFlows:e.ChannelFlows.map(e=>ss(e))},...e.NextToken&&{NextToken:e9}}),sN=e=>({...e,...e.NextToken&&{NextToken:e9}}),sL=e=>({...e,...e.ChannelMemberships&&{ChannelMemberships:e.ChannelMemberships.map(e=>su(e))},...e.NextToken&&{NextToken:e9}}),sF=e=>({...e,...e.NextToken&&{NextToken:e9}}),sV=e=>({...e,...e.ChannelMemberships&&{ChannelMemberships:e.ChannelMemberships.map(e=>sd(e))},...e.NextToken&&{NextToken:e9}}),sU=e=>({...e,...e.NextToken&&{NextToken:e9}}),sz=e=>({...e,...e.NextToken&&{NextToken:e9},...e.ChannelMessages&&{ChannelMessages:e.ChannelMessages.map(e=>sf(e))}}),s$=e=>({...e,...e.NextToken&&{NextToken:e9}}),sH=e=>({...e,...e.NextToken&&{NextToken:e9},...e.ChannelModerators&&{ChannelModerators:e.ChannelModerators.map(e=>sg(e))}}),sj=e=>({...e,...e.NextToken&&{NextToken:e9}}),sW=e=>({...e,...e.Channels&&{Channels:e.Channels.map(e=>so(e))},...e.NextToken&&{NextToken:e9}}),sG=e=>({...e,...e.NextToken&&{NextToken:e9}}),sK=e=>({...e,...e.Channels&&{Channels:e.Channels.map(e=>r5(e))},...e.NextToken&&{NextToken:e9}}),sq=e=>({...e,...e.NextToken&&{NextToken:e9}}),sQ=e=>({...e,...e.Channels&&{Channels:e.Channels.map(e=>sm(e))},...e.NextToken&&{NextToken:e9}}),sJ=e=>({...e,...e.NextToken&&{NextToken:e9}}),sY=e=>({...e,...e.NextToken&&{NextToken:e9}}),sX=e=>({...e,...e.Tags&&{Tags:e.Tags.map(e=>sv(e))}}),sZ=e=>({...e,...e.Preferences&&{Preferences:sc(e.Preferences)}}),s0=e=>({...e,...e.Member&&{Member:r2(e.Member)},...e.Preferences&&{Preferences:sc(e.Preferences)}}),s1=e=>({...e,...e.NextToken&&{NextToken:e9}}),s2=e=>({...e,...e.Channels&&{Channels:e.Channels.map(e=>so(e))},...e.NextToken&&{NextToken:e9}}),s6=e=>({...e,...e.Content&&{Content:e9},...e.Metadata&&{Metadata:e9},...e.ClientRequestToken&&{ClientRequestToken:e9},...e.PushNotification&&{PushNotification:si(e.PushNotification)},...e.MessageAttributes&&{MessageAttributes:Object.entries(e.MessageAttributes).reduce((e,[t,i])=>(e[t]=st(i),e),{})},...e.ContentType&&{ContentType:e9}}),s3=e=>({...e,...e.Tags&&{Tags:e.Tags.map(e=>sv(e))}}),s4=e=>({...e,...e.TagKeys&&{TagKeys:e9}}),s5=e=>({...e,...e.Name&&{Name:e9},...e.Metadata&&{Metadata:e9}}),s8=e=>({...e,...e.Processors&&{Processors:e.Processors.map(e=>r7(e))},...e.Name&&{Name:e9}}),s9=e=>({...e,...e.Content&&{Content:e9},...e.Metadata&&{Metadata:e9},...e.ContentType&&{ContentType:e9}}),s7=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/channel-flow"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{ChannelFlowArn:[]})),n.m("PUT").h(r).b(i),n.build()},ae=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});n.bp("/channels/{ChannelArn}/memberships"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[dw]:[,"batch-create"]});return i=JSON.stringify(tE(e,{MemberArns:e=>tx(e),SubChannelId:[],Type:[]})),n.m("POST").h(r).q(s).b(i),n.build()},at=async(e,t)=>{let i;let n=tQ(e,t);n.bp("/channels/{ChannelArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let r=tM({[dw]:[,"channel-flow-callback"]});return i=JSON.stringify(tE(e,{CallbackId:[!0,e=>e??rP()],ChannelMessage:e=>tx(e),DeleteResource:[]})),n.m("POST").h({"content-type":"application/json"}).q(r).b(i),n.build()},ai=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels"),i=JSON.stringify(tE(e,{AppInstanceArn:[],ChannelId:[],ClientRequestToken:[!0,e=>e??rP()],ElasticChannelConfiguration:e=>tx(e),ExpirationSettings:e=>tx(e),MemberArns:e=>tx(e),Metadata:[],Mode:[],ModeratorArns:e=>tx(e),Name:[],Privacy:[],Tags:e=>tx(e)})),n.m("POST").h(r).b(i),n.build()},an=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/bans"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{MemberArn:[]})),n.m("POST").h(r).b(i),n.build()},ar=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/channel-flows"),i=JSON.stringify(tE(e,{AppInstanceArn:[],ClientRequestToken:[!0,e=>e??rP()],Name:[],Processors:e=>tx(e),Tags:e=>tx(e)})),n.m("POST").h({"content-type":"application/json"}).b(i),n.build()},as=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/memberships"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{MemberArn:[],SubChannelId:[],Type:[]})),n.m("POST").h(r).b(i),n.build()},aa=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/moderators"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{ChannelModeratorArn:[]})),n.m("POST").h(r).b(i),n.build()},ao=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.m("DELETE").h(r).b(i),n.build()},ad=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/bans/{MemberArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MemberArn",()=>e.MemberArn,"{MemberArn}",!1),n.m("DELETE").h(r).b(i),n.build()},al=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/channel-flows/{ChannelFlowArn}"),n.p("ChannelFlowArn",()=>e.ChannelFlowArn,"{ChannelFlowArn}",!1),n.m("DELETE").h({}).b(i),n.build()},ac=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/memberships/{MemberArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MemberArn",()=>e.MemberArn,"{MemberArn}",!1);let s=tM({[dE]:[,e[du]]});return n.m("DELETE").h(r).q(s).b(i),n.build()},au=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/messages/{MessageId}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MessageId",()=>e.MessageId,"{MessageId}",!1);let s=tM({[dE]:[,e[du]]});return n.m("DELETE").h(r).q(s).b(i),n.build()},ah=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/moderators/{ChannelModeratorArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("ChannelModeratorArn",()=>e.ChannelModeratorArn,"{ChannelModeratorArn}",!1),n.m("DELETE").h(r).b(i),n.build()},af=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/app-instances/{AppInstanceArn}/streaming-configurations"),n.p("AppInstanceArn",()=>e.AppInstanceArn,"{AppInstanceArn}",!1),n.m("DELETE").h({}).b(i),n.build()},am=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.m("GET").h(r).b(i),n.build()},ap=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/bans/{MemberArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MemberArn",()=>e.MemberArn,"{MemberArn}",!1),n.m("GET").h(r).b(i),n.build()},ag=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/channel-flows/{ChannelFlowArn}"),n.p("ChannelFlowArn",()=>e.ChannelFlowArn,"{ChannelFlowArn}",!1),n.m("GET").h({}).b(i),n.build()},av=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/memberships/{MemberArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MemberArn",()=>e.MemberArn,"{MemberArn}",!1);let s=tM({[dE]:[,e[du]]});return n.m("GET").h(r).q(s).b(i),n.build()},ab=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[dM]:[,"app-instance-user-membership"],[dg]:[,tt(e[dt],"AppInstanceUserArn")]});return n.m("GET").h(r).q(s).b(i),n.build()},aS=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[dM]:[,"app-instance-user-moderated-channel"],[dg]:[,tt(e[dt],"AppInstanceUserArn")]});return n.m("GET").h(r).q(s).b(i),n.build()},ay=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/moderators/{ChannelModeratorArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("ChannelModeratorArn",()=>e.ChannelModeratorArn,"{ChannelModeratorArn}",!1),n.m("GET").h(r).b(i),n.build()},aC=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/channel-flow/{ChannelFlowArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("ChannelFlowArn",()=>e.ChannelFlowArn,"{ChannelFlowArn}",!1),n.m("DELETE").h(r).b(i),n.build()},aw=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/memberships/{MemberArn}/preferences"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MemberArn",()=>e.MemberArn,"{MemberArn}",!1),n.m("GET").h(r).b(i),n.build()}
10,aT=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/messages/{MessageId}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MessageId",()=>e.MessageId,"{MessageId}",!1);let s=tM({[dE]:[,e[du]]});return n.m("GET").h(r).q(s).b(i),n.build()},aM=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/messages/{MessageId}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MessageId",()=>e.MessageId,"{MessageId}",!1);let s=tM({[dM]:[,"message-status"],[dE]:[,e[du]]});return n.m("GET").h(r).q(s).b(i),n.build()},aE=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/endpoints/messaging-session"),n.m("GET").h({}).b(i),n.build()},aA=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/app-instances/{AppInstanceArn}/streaming-configurations"),n.p("AppInstanceArn",()=>e.AppInstanceArn,"{AppInstanceArn}",!1),n.m("GET").h({}).b(i),n.build()},ak=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/bans"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h(r).q(s).b(i),n.build()},a_=async(e,t)=>{let i;let n=tQ(e,t);n.bp("/channel-flows");let r=tM({[dp]:[,tt(e[de],"AppInstanceArn")],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h({}).q(r).b(i),n.build()},aP=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/memberships"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[dk]:[,e[df]],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]],[dE]:[,e[du]]});return n.m("GET").h(r).q(s).b(i),n.build()},aR=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels");let s=tM({[dM]:[,"app-instance-user-memberships"],[dg]:[,e[dt]],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h(r).q(s).b(i),n.build()},aI=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/messages"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[dA]:[,e[dh]],[dy]:[()=>void 0!==e.NotBefore,()=>tO(e[da]).toString()],[dS]:[()=>void 0!==e.NotAfter,()=>tO(e[ds]).toString()],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]],[dE]:[,e[du]]});return n.m("GET").h(r).q(s).b(i),n.build()},aO=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/moderators"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h(r).q(s).b(i),n.build()},ax=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels");let s=tM({[dp]:[,tt(e[de],"AppInstanceArn")],[dT]:[,e[dl]],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h(r).q(s).b(i),n.build()},aD=async(e,t)=>{let i;let n=tQ(e,t);n.bp("/channels");let r=tM({[dM]:[,"channel-flow-associations"],[dv]:[,tt(e[dn],"ChannelFlowArn")],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h({}).q(r).b(i),n.build()},aB=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels");let s=tM({[dM]:[,"app-instance-user-moderated-channels"],[dg]:[,e[dt]],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h(r).q(s).b(i),n.build()},aN=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});n.bp("/channels/{ChannelArn}/subchannels"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1);let s=tM({[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return n.m("GET").h(r).q(s).b(i),n.build()},aL=async(e,t)=>{let i;let n=tQ(e,t);n.bp("/tags");let r=tM({[dm]:[,tt(e[dc],"ResourceARN")]});return n.m("GET").h({}).q(r).b(i),n.build()},aF=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/expiration-settings"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{ExpirationSettings:e=>tx(e)})),n.m("PUT").h(r).b(i),n.build()},aV=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/memberships/{MemberArn}/preferences"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MemberArn",()=>e.MemberArn,"{MemberArn}",!1),i=JSON.stringify(tE(e,{Preferences:e=>tx(e)})),n.m("PUT").h(r).b(i),n.build()},aU=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/app-instances/{AppInstanceArn}/streaming-configurations"),n.p("AppInstanceArn",()=>e.AppInstanceArn,"{AppInstanceArn}",!1),i=JSON.stringify(tE(e,{StreamingConfigurations:e=>tx(e)})),n.m("PUT").h({"content-type":"application/json"}).b(i),n.build()},az=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});n.bp("/channels/{ChannelArn}/messages/{MessageId}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MessageId",()=>e.MessageId,"{MessageId}",!1);let s=tM({[dw]:[,"redact"]});return i=JSON.stringify(tE(e,{SubChannelId:[]})),n.m("POST").h(r).q(s).b(i),n.build()},a$=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});n.bp("/channels");let s=tM({[dw]:[,"search"],[db]:[()=>void 0!==e.MaxResults,()=>e[dr].toString()],[dC]:[,e[dd]]});return i=JSON.stringify(tE(e,{Fields:e=>tx(e)})),n.m("POST").h(r).q(s).b(i),n.build()},aH=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/messages"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{ClientRequestToken:[!0,e=>e??rP()],Content:[],ContentType:[],MessageAttributes:e=>tx(e),Metadata:[],Persistence:[],PushNotification:e=>tx(e),SubChannelId:[],Target:e=>tx(e),Type:[]})),n.m("POST").h(r).b(i),n.build()},aj=async(e,t)=>{let i;let n=tQ(e,t);n.bp("/tags");let r=tM({[dw]:[,"tag-resource"]});return i=JSON.stringify(tE(e,{ResourceARN:[],Tags:e=>tx(e)})),n.m("POST").h({"content-type":"application/json"}).q(r).b(i),n.build()},aW=async(e,t)=>{let i;let n=tQ(e,t);n.bp("/tags");let r=tM({[dw]:[,"untag-resource"]});return i=JSON.stringify(tE(e,{ResourceARN:[],TagKeys:e=>tx(e)})),n.m("POST").h({"content-type":"application/json"}).q(r).b(i),n.build()},aG=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),i=JSON.stringify(tE(e,{Metadata:[],Mode:[],Name:[]})),n.m("PUT").h(r).b(i),n.build()},aK=async(e,t)=>{let i;let n=tQ(e,t);return n.bp("/channel-flows/{ChannelFlowArn}"),n.p("ChannelFlowArn",()=>e.ChannelFlowArn,"{ChannelFlowArn}",!1),i=JSON.stringify(tE(e,{Name:[],Processors:e=>tx(e)})),n.m("PUT").h({"content-type":"application/json"}).b(i),n.build()},aq=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{"content-type":"application/json",[d_]:e[di]});return n.bp("/channels/{ChannelArn}/messages/{MessageId}"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.p("MessageId",()=>e.MessageId,"{MessageId}",!1),i=JSON.stringify(tE(e,{Content:[],ContentType:[],Metadata:[],SubChannelId:[]})),n.m("PUT").h(r).b(i),n.build()},aQ=async(e,t)=>{let i;let n=tQ(e,t),r=tM({},tC,{[d_]:e[di]});return n.bp("/channels/{ChannelArn}/readMarker"),n.p("ChannelArn",()=>e.ChannelArn,"{ChannelArn}",!1),n.m("PUT").h(r).b(i),n.build()},aJ=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},aY=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{BatchChannelMemberships:tx,Errors:tx})),i},aX=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{CallbackId:tn,ChannelArn:tn})),i},aZ=async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn})),i},a0=async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,Member:tx})),i},a1=async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelFlowArn:tn})),i},a2=async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,Member:tx,SubChannelId:tn})),i},a6=async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,ChannelModerator:tx})),i},a3=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},a4=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},a5=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},a8=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},a9=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},a7=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},oe=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},ot=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Channel:e=>oQ(e,t)})),i},oi=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelBan:e=>oJ(e,t)})),i},on=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelFlow:e=>oY(e,t)})),i},or=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelMembership:e=>oX(e,t)})),i},os=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelMembership:e=>oZ(e,t)})),i},oa=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Channel:e=>o3(e,t)})),i},oo=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelModerator:e=>o5(e,t)})),i},od=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},ol=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,Member:tx,Preferences:tx})),i},oc=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelMessage:e=>o1(e,t)})),i},ou=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Status:tx})),i},oh=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Endpoint:tx})),i},of=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{StreamingConfigurations:tx})),i},om=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,ChannelBans:tx,NextToken:tn})),i},op=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelFlows:tx,NextToken:tn})),i},og=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,ChannelMemberships:tx,NextToken:tn})),i},ov=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelMemberships:e=>o0(e,t),NextToken:tn})),i},ob=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,ChannelMessages:e=>o6(e,t),NextToken:tn,SubChannelId:tn})),i},oS=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,ChannelModerators:tx,NextToken:tn})),i},oy=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Channels:e=>o9(e,t),NextToken:tn})),i},oC=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Channels:tx,NextToken:tn})),i},ow=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Channels:e=>o4(e,t),NextToken:tn})),i},oT=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,NextToken:tn,SubChannels:tx})),i},oM=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Tags:tx})),i},oE=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,ExpirationSettings:tx})),i},oA=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,Member:tx,Preferences:tx})),i},ok=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{StreamingConfigurations:tx})),i},o_=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,MessageId:tn,SubChannelId:tn})),i},oP=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{Channels:e=>o9(e,t),NextToken:tn})),i},oR=async(e,t)=>{if(201!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,MessageId:tn,Status:tx,SubChannelId:tn})),i},oI=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},oO=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return await e4(e.body,t),i},ox=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn})),i},oD=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelFlowArn:tn})),i},oB=async(
10e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn,MessageId:tn,Status:tx,SubChannelId:tn})),i},oN=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return oL(e,t);let i=tM({$metadata:o7(e)});return Object.assign(i,tE(tt(ti(await rT(e.body,t)),"body"),{ChannelArn:tn})),i},oL=async(e,t)=>{let i={...e,body:await rM(e.body,t)},n=rE(e,i.body);switch(n){case"BadRequestException":case"com.amazonaws.chimesdkmessaging#BadRequestException":throw await oV(i,t);case"ConflictException":case"com.amazonaws.chimesdkmessaging#ConflictException":throw await oU(i,t);case"ForbiddenException":case"com.amazonaws.chimesdkmessaging#ForbiddenException":throw await oz(i,t);case"NotFoundException":case"com.amazonaws.chimesdkmessaging#NotFoundException":throw await o$(i,t);case"ServiceFailureException":case"com.amazonaws.chimesdkmessaging#ServiceFailureException":throw await oj(i,t);case"ServiceUnavailableException":case"com.amazonaws.chimesdkmessaging#ServiceUnavailableException":throw await oW(i,t);case"ThrottledClientException":case"com.amazonaws.chimesdkmessaging#ThrottledClientException":throw await oG(i,t);case"UnauthorizedClientException":case"com.amazonaws.chimesdkmessaging#UnauthorizedClientException":throw await oK(i,t);case"ResourceLimitExceededException":case"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException":throw await oH(i,t);default:return oF({output:e,parsedBody:i.body,errorCode:n})}},oF=({output:e,parsedBody:t,errorCode:i})=>{th({output:e,parsedBody:t,exceptionCtor:rR,errorCode:i}
10)},oV=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rD({$metadata:o7(e),...i}),e.body)},oU=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rB({$metadata:o7(e),...i}),e.body)},oz=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rN({$metadata:o7(e),...i}),e.body)},o$=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rL({$metadata:o7(e),...i}),e.body)},oH=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new r$({$metadata:o7(e),...i}),e.body)},oj=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rF({$metadata:o7(e),...i}),e.body)},oW=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rV({$metadata:o7(e),...i}),e.body)},oG=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rU({$metadata:o7(e),...i}),e.body)},oK=async(e,t)=>{let i=tM({});return Object.assign(i,tE(e.body,{Code:tn,Message:tn})),tu(new rz({$metadata:o7(e),...i}),e.body)},oq=(e,t)=>tE(e,{ReadMarkerTimestamp:e=>tt(tl(te(e))),SubChannelId:tn,Type:tn}),oQ=(e,t)=>tE(e,{ChannelArn:tn,ChannelFlowArn:tn,CreatedBy:tx,CreatedTimestamp:e=>tt(tl(te(e))),ElasticChannelConfiguration:tx,ExpirationSettings:tx,LastMessageTimestamp:e=>tt(tl(te(e))),LastUpdatedTimestamp:e=>tt(tl(te(e))),Metadata:tn,Mode:tn,Name:tn,Privacy:tn}),oJ=(e,t)=>tE(e,{ChannelArn:tn,CreatedBy:tx,CreatedTimestamp:e=>tt(tl(te(e))),Member:tx}),oY=(e,t)=>tE(e,{ChannelFlowArn:tn,CreatedTimestamp:e=>tt(tl(te(e))),LastUpdatedTimestamp:e=>tt(tl(te(e))),Name:tn,Processors:tx}),oX=(e,t)=>tE(e,{ChannelArn:tn,CreatedTimestamp:e=>tt(tl(te(e))),InvitedBy:tx,LastUpdatedTimestamp:e=>tt(tl(te(e))),Member:tx,SubChannelId:tn,Type:tn}),oZ=(e,t)=>tE(e,{AppInstanceUserMembershipSummary:e=>oq(e,t),ChannelSummary:e=>o8(e,t)}),o0=(e,t)=>(e||[]).filter(e=>null!=e).map(e=>oZ(e,t)),o1=(e,t)=>tE(e,{ChannelArn:tn,Content:tn,ContentType:tn,CreatedTimestamp:e=>tt(tl(te(e))),LastEditedTimestamp:e=>tt(tl(te(e))),LastUpdatedTimestamp:e=>tt(tl(te(e))),MessageAttributes:tx,MessageId:tn,Metadata:tn,Persistence:tn,Redacted:e7,Sender:tx,Status:tx,SubChannelId:tn,Target:tx,Type:tn}),o2=(e,t)=>
10tE(e,{Content:tn,ContentType:tn,CreatedTimestamp:e=>tt(tl(te(e))),LastEditedTimestamp:e=>tt(tl(te(e))),LastUpdatedTimestamp:e=>tt(tl(te(e))),MessageAttributes:tx,MessageId:tn,Metadata:tn,Redacted:e7,Sender:tx,Status:tx,Target:tx,Type:tn}),o6=(e,t)=>(e||[]).filter(e=>null!=e).map(e=>o2(e,t)),o3=(e,t)=>tE(e,{ChannelSummary:e=>o8(e,t)}),o4=(e,t)=>(e||[]).filter(e=>null!=e).map(e=>o3(e,t)),o5=(e,t)=>tE(e,{ChannelArn:tn,CreatedBy:tx,CreatedTimestamp:e=>tt(tl(te(e))),Moderator:tx}),o8=(e,t)=>tE(e,{ChannelArn:tn,LastMessageTimestamp:e=>tt(tl(te(e))),Metadata:tn,Mode:tn,Name:tn,Privacy:tn}),o9=(e,t)=>(e||[]).filter(e=>null!=e).map(e=>o8(e,t)),o7=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),de="AppInstanceArn",dt="AppInstanceUserArn",di="ChimeBearer",dn="ChannelFlowArn",dr="MaxResults",ds="NotAfter",da="NotBefore",dd="NextToken",dl="Privacy",dc="ResourceARN",du="SubChannelId",dh="SortOrder",df="Type",dm="arn",dp="app-instance-arn",dg="app-instance-user-arn",dv="channel-flow-arn",db="max-results",dS="not-after",dy="not-before",dC="next-token",dw="operation",dT="privacy",dM="scope",dE="sub-channel-id",dA="sort-order",dk="type",d_="x-amz-chime-bearer";class dP extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","AssociateChannelFlow",{}).n("ChimeSDKMessagingClient","AssociateChannelFlowCommand").f(void 0,void 0).ser(s7).de(aJ).build(){}class dR extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","BatchCreateChannelMembership",{}).n("ChimeSDKMessagingClient","BatchCreateChannelMembershipCommand").f(void 0,r3).ser(ae).de(aY).build(){}class dI extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ChannelFlowCallback",{}).n("ChimeSDKMessagingClient","ChannelFlowCallbackCommand").f(sr,void 0).ser(at).de(aX).build(){}class dO extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","CreateChannelBan",{}).n("ChimeSDKMessagingClient","CreateChannelBanCommand").f(void 0,sS).ser(an).de(a0).build(){}class dx extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","CreateChannel",{}).n("ChimeSDKMessagingClient","CreateChannelCommand").f(sb,void 0).ser(ai).de(aZ).build(){}class dD extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","CreateChannelFlow",{}).n("ChimeSDKMessagingClient","CreateChannelFlowCommand").f(sy,void 0).ser(ar).de(a1).build(){}class dB extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","CreateChannelMembership",{}).n("ChimeSDKMessagingClient","CreateChannelMembershipCommand").f(void 0,sC).ser(as).de(a2).build(){}class dN extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","CreateChannelModerator",{}).n("ChimeSDKMessagingClient","CreateChannelModeratorCommand").f(void 0,sw).ser(aa).de(a6).build(){}class dL extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DeleteChannelBan",{}).n("ChimeSDKMessagingClient","DeleteChannelBanCommand").f(void 0,void 0).ser(ad).de(a4).build(){}class dF extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstru
10ctions())]}).s("ChimeMessagingService","DeleteChannel",{}).n("ChimeSDKMessagingClient","DeleteChannelCommand").f(void 0,void 0).ser(ao).de(a3).build(){}class dV extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DeleteChannelFlow",{}).n("ChimeSDKMessagingClient","DeleteChannelFlowCommand").f(void 0,void 0).ser(al).de(a5).build(){}class dU extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DeleteChannelMembership",{}).n("ChimeSDKMessagingClient","DeleteChannelMembershipCommand").f(void 0,void 0).ser(ac).de(a8).build(){}class dz extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DeleteChannelMessage",{}).n("ChimeSDKMessagingClient","DeleteChannelMessageCommand").f(void 0,void 0).ser(au).de(a9).build(){}class d$ extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DeleteChannelModerator",{}).n("ChimeSDKMessagingClient","DeleteChannelModeratorCommand").f(void 0,void 0).ser(ah).de(a7).build(){}class dH extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DeleteMessagingStreamingConfigurations",{}).n("ChimeSDKMessagingClient","DeleteMessagingStreamingConfigurationsCommand").f(void 0,void 0).ser(af).de(oe).build(){}class dj extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannelBan",{}).n("ChimeSDKMessagingClient","DescribeChannelBanCommand").f(void 0,sM).ser(ap).de(oi).build(){}class dW extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannel",{}).n("ChimeSDKMessagingClient","DescribeChannelCommand").f(void 0,sT).ser(am).de(ot).build(){}class dG extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannelFlow",{}).n("ChimeSDKMessagingClient","DescribeChannelFlowCommand").f(void 0,sE).ser(ag).de(on).build(){}class dK extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannelMembership",{}).n("ChimeSDKMessagingClient","DescribeChannelMembershipCommand").f(void 0,sA).ser(av).de(or).build(){}class dq extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannelMembershipForAppInstanceUser",{}).n("ChimeSDKMessagingClient","DescribeChannelMembershipForAppInstanceUserCommand").f(void 0,sk).ser(ab).de(os).build(){}class dQ extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannelModeratedByAppInstanceUser",{}).n("ChimeSDKMessagingClient","DescribeChannelModeratedByAppInstanceUserCommand").f(void 0,s_).ser(aS).de(oa).build(){}class dJ extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DescribeChannelModerator",{}).n("ChimeSDKMessagingClient","DescribeChannelModeratorCommand").f(void 0,sP).ser(ay).de(oo).build(){}class dY extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","DisassociateChannelFlow",{}).n("ChimeSDKMessagingClient","DisassociateChannelFlowCommand").f(void 0,void 0).ser(aC).de(od).build(){}class dX extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstru
10ctions())]}).s("ChimeMessagingService","GetChannelMembershipPreferences",{}).n("ChimeSDKMessagingClient","GetChannelMembershipPreferencesCommand").f(void 0,sR).ser(aw).de(ol).build(){}class dZ extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","GetChannelMessage",{}).n("ChimeSDKMessagingClient","GetChannelMessageCommand").f(void 0,sI).ser(aT).de(oc).build(){}class d0 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","GetChannelMessageStatus",{}).n("ChimeSDKMessagingClient","GetChannelMessageStatusCommand").f(void 0,void 0).ser(aM).de(ou).build(){}class d1 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","GetMessagingSessionEndpoint",{}).n("ChimeSDKMessagingClient","GetMessagingSessionEndpointCommand").f(void 0,void 0).ser(aE).de(oh).build(){}class d2 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","GetMessagingStreamingConfigurations",{}).n("ChimeSDKMessagingClient","GetMessagingStreamingConfigurationsCommand").f(void 0,void 0).ser(aA).de(of).build(){}class d6 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelBans",{}).n("ChimeSDKMessagingClient","ListChannelBansCommand").f(sO,sx).ser(ak).de(om).build(){}class d3 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelFlows",{}).n("ChimeSDKMessagingClient","ListChannelFlowsCommand").f(sD,sB).ser(a_).de(op).build(){}class d4 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelMemberships",{}).n("ChimeSDKMessagingClient","ListChannelMembershipsCommand").f(sN,sL).ser(aP).de(og).build(){}class d5 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelMembershipsForAppInstanceUser",{}).n("ChimeSDKMessagingClient","ListChannelMembershipsForAppInstanceUserCommand").f(sF,sV).ser(aR).de(ov).build(){}class d8 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelMessages",{}).n("ChimeSDKMessagingClient","ListChannelMessagesCommand").f(sU,sz).ser(aI).de(ob).build(){}class d9 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelModerators",{}).n("ChimeSDKMessagingClient","ListChannelModeratorsCommand").f(s$,sH).ser(aO).de(oS).build(){}class d7 extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelsAssociatedWithChannelFlow",{}).n("ChimeSDKMessagingClient","ListChannelsAssociatedWithChannelFlowCommand").f(sG,sK).ser(aD).de(oC).build(){}class le extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannels",{}).n("ChimeSDKMessagingClient","ListChannelsCommand").f(sj,sW).ser(ax).de(oy).build(){}class lt extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListChannelsModeratedByAppInstanceUser",{}).n("ChimeSDKMessagingClient","ListChannelsModeratedByAppInstanceUserCommand").f(sq,sQ).ser(aB).de(ow).build(){}class li extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstru
10ctions())]}).s("ChimeMessagingService","ListSubChannels",{}).n("ChimeSDKMessagingClient","ListSubChannelsCommand").f(sJ,sY).ser(aN).de(oT).build(){}class ln extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","ListTagsForResource",{}).n("ChimeSDKMessagingClient","ListTagsForResourceCommand").f(void 0,sX).ser(aL).de(oM).build(){}class lr extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","PutChannelExpirationSettings",{}).n("ChimeSDKMessagingClient","PutChannelExpirationSettingsCommand").f(void 0,void 0).ser(aF).de(oE).build(){}class ls extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","PutChannelMembershipPreferences",{}).n("ChimeSDKMessagingClient","PutChannelMembershipPreferencesCommand").f(sZ,s0).ser(aV).de(oA).build(){}class la extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","PutMessagingStreamingConfigurations",{}).n("ChimeSDKMessagingClient","PutMessagingStreamingConfigurationsCommand").f(void 0,void 0).ser(aU).de(ok).build(){}class lo extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","RedactChannelMessage",{}).n("ChimeSDKMessagingClient","RedactChannelMessageCommand").f(void 0,void 0).ser(az).de(o_).build(){}class ld extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","SearchChannels",{}).n("ChimeSDKMessagingClient","SearchChannelsCommand").f(s1,s2).ser(a$).de(oP).build(){}class ll extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","SendChannelMessage",{}).n("ChimeSDKMessagingClient","SendChannelMessageCommand").f(s6,void 0).ser(aH).de(oR).build(){}class lc extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","TagResource",{}).n("ChimeSDKMessagingClient","TagResourceCommand").f(s3,void 0).ser(aj).de(oI).build(){}class lu extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","UntagResource",{}).n("ChimeSDKMessagingClient","UntagResourceCommand").f(s4,void 0).ser(aW).de(oO).build(){}class lh extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","UpdateChannel",{}).n("ChimeSDKMessagingClient","UpdateChannelCommand").f(s5,void 0).ser(aG).de(ox).build(){}class lf extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","UpdateChannelFlow",{}).n("ChimeSDKMessagingClient","UpdateChannelFlowCommand").f(s8,void 0).ser(aK).de(oD).build(){}class lm extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","UpdateChannelMessage",{}).n("ChimeSDKMessagingClient","UpdateChannelMessageCommand").f(s9,void 0).ser(aq).de(oB).build(){}class lp extends e5.classBuilder().ep(nS).m(function(e,t,i,n){return[eo(i,this.serialize,this.deserialize),el(i,e.getEndpointParameterInstructions())]}).s("ChimeMessagingService","UpdateChannelReadMarker",{}).n("ChimeSDKMessagingClient","UpdateChannelReadMarkerCommand").f(void 0,void 0).ser(aQ).de(oN).build(){}class lg extends rC{}((e,t)=>{for(let i of Object.keys(e)){let n=e[i],r=async function(e,t,i){let r=new n(e);if("function"==typeof t)this.send(r,t);else{if("function"!=typeof i)return this.send(r,t);if("object"!=typeof t)throw Error(`Expected http options but got ${typeof t}`);this.send(r,t||{},i)}},s=(i[0].toLowerCase()+i.slice(1)).replace(/Command$/,"");t.prototype[s]=r}})({AssociateChannelFlowCommand:dP,BatchCreateChannelMembershipCommand:dR,ChannelFlowCallbackCommand:dI,CreateChannelCommand:dx,CreateChannelBanCommand:dO,CreateChannelFlowCommand:dD,CreateChannelMembershipCommand:dB,CreateChannelModeratorCommand:dN,DeleteChannelCommand:dF,DeleteChannelBanCommand:dL,DeleteChannelFlowCommand:dV,DeleteChannelMembershipCommand:dU,DeleteChannelMessageCommand:dz,DeleteChannelModeratorCommand:d$,DeleteMessagingStreamingConfigurationsCommand:dH,DescribeChannelCommand:dW,DescribeChannelBanCommand:dj,DescribeChannelFlowCommand:dG,DescribeChannelMembershipCommand:dK,DescribeChannelMembershipForAppInstanceUserCommand:dq,DescribeChannelModeratedByAppInstanceUserCommand:dQ,DescribeChannelModeratorCommand:dJ,DisassociateChannelFlowCommand:dY,GetChannelMembershipPreferencesCommand:dX,GetChannelMessageCommand:dZ,GetChannelMessageStatusCommand:d0,GetMessagingSessionEndpointCommand:d1,GetMessagingStreamingConfigurationsCommand:d2,ListChannelBansCommand:d6,ListChannelFlowsCommand:d3,ListChannelMembershipsCommand:d4,ListChannelMembershipsForAppInstanceUserCommand:d5,ListChannelMessagesCommand:d8,ListChannelModeratorsCommand:d9,List
10ChannelsCommand:le,ListChannelsAssociatedWithChannelFlowCommand:d7,ListChannelsModeratedByAppInstanceUserCommand:lt,ListSubChannelsCommand:li,ListTagsForResourceCommand:ln,PutChannelExpirationSettingsCommand:lr,PutChannelMembershipPreferencesCommand:ls,PutMessagingStreamingConfigurationsCommand:la,RedactChannelMessageCommand:lo,SearchChannelsCommand:ld,SendChannelMessageCommand:ll,TagResourceCommand:lc,UntagResourceCommand:lu,UpdateChannelCommand:lh,UpdateChannelFlowCommand:lf,UpdateChannelMessageCommand:lm,UpdateChannelReadMarkerCommand:lp},lg);let lv=tX(rC,d6,"NextToken","NextToken","MaxResults"),lb=tX(rC,d3,"NextToken","NextToken","MaxResults"),lS=tX(rC,d5,"NextToken","NextToken","MaxResults"),ly=tX(rC,d4,"NextToken","NextToken","MaxResults"),lC=tX(rC,d8,"NextToken","NextToken","MaxResults"),lw=tX(rC,d9,"NextToken","NextToken","MaxResults"),lT=tX(rC,d7,"NextToken","NextToken","MaxResults"),lM=tX(rC,lt,"NextToken","NextToken","MaxResults"),lE=tX(rC,le,"NextToken","NextToken","MaxResults"),lA=tX(rC,li,"NextToken","NextToken","MaxResults"),lk=tX(rC,ld,"NextToken","NextToken","MaxResults")},65254:function(e,t,i){"use strict";i.r(t),i.d(t,{fromHex:function(){return s},toHex:function(){return a}});let n={},r={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),n[e]=t,r[t]=e}function s(e){if(e.length%2!=0)throw Error("Hex encoded strings must have an even number length");let t=new Uint8Array(e.length/2);for(let i=0;i<e.length;i+=2){let n=e.slice(i,i+2).toLowerCase();if(n in r)t[i/2]=r[n];else throw Error(`Cannot decode unrecognized sequence ${n} as hexadecimal`)}return t}function a(e){let t="";for(let i=0;i<e.byteLength;i++)t+=n[e[i]];return t}},66631:function(e,t,i){"use strict";i.r(t),i.d(t,{fromUtf8:function(){return s},toUtf8:function(){return a}});let n=e=>{let t=[];for(let i=0,n=e.length;i<n;i++){let n=e.charCodeAt(i);if(n<128)t.push(n);else if(n<2048)t.push(n>>6|192,63&n|128);else if(i+1<e.length&&(64512&n)==55296&&(64512&e.charCodeAt(i+1))==56320){let r=65536+((1023&n)<<10)+(1023&e.charCodeAt(++i));t.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else t.push(n>>12|224,n>>6&63|128,63&n|128)}return Uint8Array.from(t)},r=e=>{let t="";for(let i=0,n=e.length;i<n;i++){let n=e[i];n<128?t+=String.fromCharCode(n):192<=n&&n<224?t+=String.fromCharCode((31&n)<<6|63&e[++i]):240<=n&&n<365?t+=decodeURIComponent("%"+[n,e[++i],e[++i],e[++i]].map(e=>e.toString(16)).join("%")):t+=String.fromCharCode((15&n)<<12|(63&e[++i])<<6|63&e[++i])}return t},s=e=>"function"==typeof TextEncoder?new TextEncoder().encode(e):n(e),a=e=>"function"==typeof TextDecoder?new TextDecoder("utf-8").decode(e):r(e)},46781:function(e){"use strict";e.exports=function(e,t){for(var i=Array(arguments.length-1),n=0,r=2,s=!0;r<arguments.length;)i[n++]=arguments[r++];return new Promise(function(r,a){i[n]=function(e){if(s){if(s=!1,e)a(e);else{for(var t=Array(arguments.length-1),i=0;i<t.length;)t[i++]=arguments[i];r.apply(null,t)}}};try{e.apply(t||null,i)}catch(e){s&&(s=!1,a(e))}})}},87026:function(e,t){"use strict";t.length=function(e){var t=e.length;if(!t)return 0;for(var i=0;--t%4>1&&"="===e.charAt(t);)++i;return Math.ceil(3*e.length)/4-i};for(var i=Array(64),n=Array(123),r=0;r<64;)n[i[r]=r<26?r+65:r<52?r+71:r<62?r-4:r-59|43]=r++;t.encode=function(e,t,n){for(var r,s=null,a=[],o=0,d=0;t<n;){var l=e[t++];switch(d){case 0:a[o++]=i[l>>2],r=(3&l)<<4,d=1;break;case 1:a[o++]=i[r|l>>4],r=(15&l)<<2,d=2;break;case 2:a[o++]=i[r|l>>6],a[o++]=i[63&l],d=0}o>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,a)),o=0)}return(d&&(a[o++]=i[r],a[o++]=61,1===d&&(a[o++]=61)),s)?(o&&s.push(String.fromCharCode.apply(String,a.slice(0,o))),s.join("")):String.fromCharCode.apply(String,a.slice(0,o))};var s="invalid encoding";t.decode=function(e,t,i){for(var r,a=i,o=0,d=0;d<e.length;){var l=e.charCodeAt(d++);if(61===l&&o>1)break;if(void 0===(l=n[l]))throw Error(s);switch(o){case 0:r=l,o=1;break;case 1:t[i++]=r<<2|(48&l)>>4,r=l,o=2;break;case 2:t[i++]=(15&r)<<4|(60&l)>>2,r=l,o=3;break;case 3:t[i++]=(3&r)<<6|l,o=0}}if(1===o)throw Error(s);return i-a},t.test=function(e){return/^(?:[A-Za-z0-9+/]{4}
10)*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}},5298:function(e){"use strict";function t(e){return"undefined"!=typeof Float32Array?function(){var t=new Float32Array([-0]),i=new Uint8Array(t.buffer),n=128===i[3];function r(e,n,r){t[0]=e,n[r]=i[0],n[r+1]=i[1],n[r+2]=i[2],n[r+3]=i[3]}function s(e,n,r){t[0]=e,n[r]=i[3],n[r+1]=i[2],n[r+2]=i[1],n[r+3]=i[0]}function a(e,n){return i[0]=e[n],i[1]=e[n+1],i[2]=e[n+2],i[3]=e[n+3],t[0]}function o(e,n){return i[3]=e[n],i[2]=e[n+1],i[1]=e[n+2],i[0]=e[n+3],t[0]}e.writeFloatLE=n?r:s,e.writeFloatBE=n?s:r,e.readFloatLE=n?a:o,e.readFloatBE=n?o:a}():function(){function t(e,t,i,n){var r=t<0?1:0;if(r&&(t=-t),0===t)e(1/t>0?0:2147483648,i,n);else if(isNaN(t))e(2143289344,i,n);else if(t>34028234663852886e22)e((r<<31|2139095040)>>>0,i,n);else if(t<11754943508222875e-54)e((r<<31|Math.round(t/1401298464324817e-60))>>>0,i,n);else{var s=Math.floor(Math.log(t)/Math.LN2),a=8388607&Math.round(t*Math.pow(2,-s)*8388608);e((r<<31|s+127<<23|a)>>>0,i,n)}}function a(e,t,i){var n=e(t,i),r=(n>>31)*2+1,s=n>>>23&255,a=8388607&n;return 255===s?a?NaN:1/0*r:0===s?1401298464324817e-60*r*a:r*Math.pow(2,s-150)*(a+8388608)}e.writeFloatLE=t.bind(null,i),e.writeFloatBE=t.bind(null,n),e.readFloatLE=a.bind(null,r),e.readFloatBE=a.bind(null,s)}(),"undefined"!=typeof Float64Array?function(){var t=new Float64Array([-0]),i=new Uint8Array(t.buffer),n=128===i[7];function r(e,n,r){t[0]=e,n[r]=i[0],n[r+1]=i[1],n[r+2]=i[2],n[r+3]=i[3],n[r+4]=i[4],n[r+5]=i[5],n[r+6]=i[6],n[r+7]=i[7]}function s(e,n,r){t[0]=e,n[r]=i[7],n[r+1]=i[6],n[r+2]=i[5],n[r+3]=i[4],n[r+4]=i[3],n[r+5]=i[2],n[r+6]=i[1],n[r+7]=i[0]}function a(e,n){return i[0]=e[n],i[1]=e[n+1],i[2]=e[n+2],i[3]=e[n+3],i[4]=e[n+4],i[5]=e[n+5],i[
106]=e[n+6],i[7]=e[n+7],t[0]}function o(e,n){return i[7]=e[n],i[6]=e[n+1],i[5]=e[n+2],i[4]=e[n+3],i[3]=e[n+4],i[2]=e[n+5],i[1]=e[n+6],i[0]=e[n+7],t[0]}e.writeDoubleLE=n?r:s,e.writeDoubleBE=n?s:r,e.readDoubleLE=n?a:o,e.readDoubleBE=n?o:a}():function(){function t(e,t,i,n,r,s){var a,o=n<0?1:0;if(o&&(n=-n),0===n)e(0,r,s+t),e(1/n>0?0:2147483648,r,s+i);else if(isNaN(n))e(0,r,s+t),e(2146959360,r,s+i);else if(n>17976931348623157e292)e(0,r,s+t),e((o<<31|2146435072)>>>0,r,s+i);else if(n<22250738585072014e-324)e((a=n/5e-324)>>>0,r,s+t),e((o<<31|a/4294967296)>>>0,r,s+i);else{var d=Math.floor(Math.log(n)/Math.LN2);1024===d&&(d=1023),e(4503599627370496*(a=n*Math.pow(2,-d))>>>0,r,s+t),e((o<<31|d+1023<<20|1048576*a&1048575)>>>0,r,s+i)}}function a(e,t,i,n,r){var s=e(n,r+t),a=e(n,r+i),o=(a>>31)*2+1,d=a>>>20&2047,l=4294967296*(1048575&a)+s;return 2047===d?l?NaN:1/0*o:0===d?5e-324*o*l:o*Math.pow(2,d-1075)*(l+4503599627370496)}e.writeDoubleLE=t.bind(null,i,0,4),e.writeDoubleBE=t.bind(null,n,4,0),e.readDoubleLE=a.bind(null,r,0,4),e.readDoubleBE=a.bind(null,s,4,0)}(),e}function i(e,t,i){t[i]=255&e,t[i+1]=e>>>8&255,t[i+2]=e>>>16&255,t[i+3]=e>>>24}function n(e,t,i){t[i]=e>>>24,t[i+1]=e>>>16&255,t[i+2]=e>>>8&255,t[i+3]=255&e}function r(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function s(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=t(t)},90804:function(e){"use strict";e.exports=function(e,t,i){var n=i||8192,r=n>>>1,s=null,a=n;return function(i){if(i<1||i>r)return e(i);a+i>n&&(s=e(n),a=0);var o=t.call(s,a,a+=i);return 7&a&&(a=(7|a)+1),o}}},28270:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(68414));class s{constructor(e,t,i,n=1e3,r=200){this.realtimeController=e,this.selfAttendeeId=t,this.hasBandwidthPriorityCallback=i,this.waitIntervalMs=n,this.updateIntervalMs=r,this.speakerScores={},this.speakerMuteState={},this.detectorCallbackToHandler=new Map,this.detectorCallbackToScoresTimer=new Map,this.detectorCallbackToActivityTimer=new Map,this.hasBandwidthPriority=!1,this.mostRecentUpdateTimestamp={}}needUpdate(e){return!this.activeSpeakers||0===this.speakerScores[e]&&this.activeSpeakers.includes(e)||this.speakerScores[e]>0&&!this.activeSpeakers.includes(e)}updateActiveSpeakers(e,t,i){if(!this.needUpdate(i))return;let n=[],r=Object.keys(this.speakerScores);for(let e=0;e<r.length;e++){let t=r[e];n.push({attendeeId:t,activeScore:this.speakerScores[t]})}let s=n.sort((e,t)=>t.activeScore-e.activeScore).filter(function(e){return e.activeScore>0}).map(function(e){return e.attendeeId});this.activeSpeakers=s,t(s);let a=s.length>0&&s[0]===this.selfAttendeeId&&e.prioritizeVideoSendBandwidthForActiveSpeaker();this.hasBandwidthPriority!==a&&(this.hasBandwidthPriority=a,this.hasBandwidthPriorityCallback(a))}updateScore(e,t,i,n,r){let s=e.calculateScore(i,n,r);this.speakerScores[i]!==s&&(this.speakerScores[i]=s,this.mostRecentUpdateTimestamp[i]=Date.now(),this.updateActiveSpeakers(e,t,i))}subscribe(e,t,i,n){let s=(i,n)=>{if(!n){this.speakerScores[i]=0,this.mostRecentUpdateTimestamp[i]=Date.now(),this.updateActiveSpeakers(e,t,i);return}this.realtimeController.realtimeSubscribeToVolumeIndicator(i,(i,n,r,s)=>{this.mostRecentUpdateTimestamp[i]=Date.now(),null!==r&&(this.speakerMuteState[i]=r),this.updateScore(e,t,i,n,r)})};this.detectorCallbackToHandler.set(t,s);let a=new r.default(this.updateIntervalMs);if(a.start(()=>{for(let i in this.speakerScores)Date.now()-this.mostRecentUpdateTimestamp[i]>this.waitIntervalMs&&this.updateScore(e,t,i,0,this.speakerMuteState[i])}),this.detectorCallbackToActivityTimer.set(t,a),i&&n){let e=new r.default(n);e.start(()=>{i(this.speakerScores)}),this.detectorCallbackToScoresTimer.set(t,e)}this.realtimeController.realtimeSubscribeToAttendeeIdPresence(s)}unsubscribe(e){let t=this.detectorCallbackToHandler.get(e);this.detectorCallbackToHandler.delete(e),t&&this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(t);let i=this.detectorCallbackToActivityTimer.get(e);i&&(i.stop(),this.detectorCallbackToActivityTimer.delete(e));let n=this.detectorCallbackToScoresTimer.get(e);n&&(n.stop(),this.detectorCallbackToHandler.delete(e))}async destroy(){for(let e of this.detectorCallbackToHandler.values())this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(e);for(let e of this.detectorCallbackToActivityTimer.values())e.stop();for(let e of this.detectorCallbackToScoresTimer.values())e.stop();this.detectorCallbackToHandler.clear(),this.detectorCallbackToActivityTimer.clear(),this.detectorCallbackToScoresTimer.clear()}}t.default=s},76578:function(e,t){"use strict";
10Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e=.9,t=.01,i=.2,n=.2){this.speakerWeight=e,this.cutoffThreshold=t,this.silenceThreshold=i,this.takeoverRate=n,this.volumes={}}calculateScore(e,t,i){(i||null===t)&&(t=0),this.volumes.hasOwnProperty(e)||(this.volumes[e]=0),t=t>this.silenceThreshold?1:0;let n=this.volumes[e]*this.speakerWeight+t*(1-this.speakerWeight);for(let i in this.volumes[e]=n,this.volumes)i!==e&&(this.volumes[i]=Math.max(this.volumes[i]-this.takeoverRate*t,0));return n<this.cutoffThreshold?0:n}prioritizeVideoSendBandwidthForActiveSpeaker(){return!0}}t.default=i},38027:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t){this.appName=e,this.appVersion=t}static create(e,t){let n=/^[a-zA-Z0-9]+[a-zA-Z0-9_-]*[a-zA-Z0-9]+$/g;if(!e||e.length>32)throw Error("appName should be a valid string and 1 to 32 characters in length");if(!n.test(e))throw Error(`appName must satisfy ${n} regular expression`);if(!t||t.length>32)throw Error("appVersion should be a valid string and 1 to 32 characters in length");if(!/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/gm.test(t))throw Error("appVersion must satisfy Semantic Versioning format");return new i(e,t)}}t.default=i},2476:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},29174:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(16564));class a{constructor(e){this.logger=e,this.audioDevice=null,this.audioElement=null,this.audioStream=null,this.browserBehavior=new r.default,this.observers=new Set}async bindAudioElement(e){if(!e)throw Error(`Cannot bind audio element: ${e}`);return this.audioElement=e,this.audioElement.autoplay=!0,this.bindAudioMix()}unbindAudioElement(){this.audioElement&&(this.audioElement.srcObject=null,this.audioElement=null,this.forEachObserver(e=>{this.audioStream&&e.meetingAudioStreamBecameInactive(this.audioStream)}))}async bindAudioStream(e){if(e){this.audioStream=e;try{await this.bindAudioMix()}catch(e){this.logger&&this.logger.warn(`Failed to bind audio stream: ${e}`)}}}async bindAudioDevice(e){if(e&&!this.browserBehavior.supportsSetSinkId())throw Error("Cannot select audio output device. This browser does not support setSinkId.");return this.audioDevice=e,this.bindAudioMix()}forEachObserver(e){for(let t of this.observers)s.default.nextTick(()=>{e(t)})}async bindAudioMix(){var e,t;if(!this.audioElement)return;let i=this.audioElement.srcObject;this.audioStream&&(this.audioElement.srcObject=this.audioStream),i!==this.audioStream&&this.forEachObserver(e=>{i&&e.meetingAudioStreamBecameInactive(i),this.audioStream&&e.meetingAudioStreamBecameActive(this.audioStream)});let n=(null===(e=this.audioDevice)||void 0===e?void 0:e.deviceId)!==this.audioElement.sinkId;if(n&&void 0===this.audioElement.sinkId)throw Error("Cannot select audio output device. This browser does not support setSinkId.");let r=this.audioDevice?this.audioDevice.deviceId:"";if(r===this.audioElement.sinkId)return;let s=this.audioElement,a=this.audioStream;if(this.browserBehavior.hasChromiumWebRTC()&&(s.srcObject=null),n)try{await s.setSinkId(r)}catch(e){throw null===(t=this.logger)||void 0===t||t.error(`Failed to set sinkId for audio element: ${e}`),e}this.browserBehavior.hasChromiumWebRTC()&&(s.srcObject=a)}async getCurrentMeetingAudioStream(){return this.audioStream}async addAudioMixObserver(e){this.observers.add(e)}async removeAudioMixObserver(e){this.observers.delete(e)}async audioOutputDidChange(e){return this.logger.info("Receive an audio output change event"),this.bindAudioDevice(e)}}t.default=a},15566:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340));class s{constructor(e=null,t=!0){this.audioBitrateBps=e,this.enableAudioRedundancy=new r.default().supportsAudioRedundancy()&&t}static fullbandSpeechMono(e=!0){return new s(4e4,e)}static fullbandMusicMono(e=!0){return new s(64e3,e)}static fullbandMusicStereo(e=!0){return new s(128e3,e)}isStereo(){return 128e3===this.audioBitrateBps}hasRedundancyEnabled(){return this.enableAudioRedundancy}}t.default=s},73646:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
10dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT=void 0;let r=n(i(27316));t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT=25;class s{constructor(){this.logger=null,this.browserBehavior=null,this.meetingSessionConfiguration=null,this.signalingClient=null,this.peer=null,this.previousSdpOffer=null,this.sdpOfferInit=null,this.audioVideoController=null,this.realtimeController=null,this.videoTileController=null,this.mediaStreamBroker=null,this.activeAudioInput=void 0,this.activeVideoInput=void 0,this.audioMixController=null,this.transceiverController=null,this.encodedTransformWorkerManager=null,this.meetingSessionTimingManager=null,this.indexFrame=null,this.iceCandidates=[],this.iceCandidateHandler=null,this.iceGatheringStateEventHandler=null,this.sdpAnswer=null,this.turnCredentials=null,this.reconnectController=null,this.removableObservers=[],this.audioProfile=null,this.videoStreamIndex=null,this.videoDownlinkBandwidthPolicy=null,this.videoUplinkBandwidthPolicy=null,this.lastKnownVideoAvailability=null,this.videoCaptureAndEncodeParameter=null,this.videosToReceive=null,this.lastVideosToReceive=null,this.videoSubscriptions=null,this.lastVideoSubscriptionConfiguration=new Map,this.videoSubscriptionLimit=t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT,this.previousSdpAnswerAsString="",this.serverSupportsCompression=!1,this.videoSendCodecPreferences=[],this.currentVideoSendCodec=void 0,this.meetingSupportedVideoSendCodecPreferences=void 0,this.prioritizedSendVideoCodecCapabilities=[],this.degradedVideoSendCodecs=[],this.videosPaused=null,this.videoDuplexMode=null,this.volumeIndicatorAdapter=null,this.statsCollector=null,this.connectionMonitor=null,this.videoInputAttachedTimestampMs=0,this.audioDeviceInformation={},this.videoDeviceInformation={},this.enableSimulcast=!1,this.enableSVC=!1,this.eventController=null,this.signalingOpenDurationMs=null,this.iceGatheringDurationMs=null,this.startAudioVideoT
10imestamp=null,this.attendeePresenceDurationMs=null,this.meetingStartDurationMs=null,this.poorConnectionCount=0,this.maxVideoTileCount=0,this.startTimeMs=null,this.retryCount=0,this.isSessionConnected=!1}enableAudioRedundancy(){var e,t;return!!((null===(e=this.audioProfile)||void 0===e?void 0:e.hasRedundancyEnabled())&&(null===(t=this.encodedTransformWorkerManager)||void 0===t?void 0:t.isEnabled()))}resetConnectionSpecificState(){this.peer&&this.peer.close(),this.peer=null,this.previousSdpOffer=null,this.sdpOfferInit=null,void 0!==this.transceiverController&&this.transceiverController.reset(),this.indexFrame=null,this.iceCandidates=[],this.iceCandidateHandler=null,this.sdpAnswer=null,this.turnCredentials=null,this.videoDownlinkBandwidthPolicy.reset(),this.videoUplinkBandwidthPolicy.reset&&this.videoUplinkBandwidthPolicy.reset(),this.lastVideosToReceive=null,this.lastVideoSubscriptionConfiguration=new Map,this.videoSubscriptions=null,this.videoSubscriptionLimit=t.DEFAULT_VIDEO_SUBSCRIPTION_LIMIT,this.previousSdpAnswerAsString="",this.serverSupportsCompression=!1,this.videosToReceive=new r.default,this.videosPaused=new r.default,this.currentVideoSendCodec=void 0,this.meetingSupportedVideoSendCodecPreferences=void 0,this.videoDuplexMode=null,this.isSessionConnected=!1}}t.default=s},63629:function(e,t,i){"use strict";var n,r=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);
10(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return(n=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i=n(e),a=0;a<i.length;a++)"default"!==i[a]&&r(t,e,i[a]);return s(t,e),t}),o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let d=o(i(28270)),l=o(i(29174)),c=o(i(15566)),u=o(i(12340)),h=o(i(74813)),f=o(i(12790)),m=o(i(31278)),p=i(97937),g=o(i(90176)),v=o(i(69647)),b=o(i(14118)),S=o(i(53652)),y=o(i(67941)),C=o(i(61711)),w=o(i(64446)),T=o(i(16564)),M=o(i(92220)),E=o(i(13382)),A=o(i(1982)),k=o(i(4754)),_=o(i(49160)),P=o(i(51774)),R=a(i(16802)),I=o(i(66485)),O=o(i(83065)),x=i(8283),D=o(i(14162)),B=o(i(87310)),N=o(i(94871)),L=o(i(32709)),F=o(i(84710)),V=o(i(48999)),U=o(i(63985)),z=o(i(68092)),$=o(i(76611)),H=o(i(72655)),j=o(i(74575)),W=o(i(54633)),G=o(i(59879)),K=o(i(67275)),q=o(i(74638)),Q=o(i(69609)),J=o(i(32910)),Y=o(i(87552)),X=o(i(13563)),Z=o(i(72762)),ee=o(i(45065)),et=o(i(12450)),ei=o(i(50949)),en=o(i(99880)),er=o(i(55159)),es=o(i(51112)),ea=o(i(847)),eo=o(i(56446)),ed=o(i(46599)),el=o(i(50615)),ec=i(24670),eu=o(i(10512)),eh=o(i(55725)),ef=i(7472),em=o(i(64891)),ep=o(i(27316)),eg=o(i(35341)),ev=o(i(30481)),eb=o(i(53027)),eS=o(i(48569)),ey=o(i(8459)),eC=o(i(95876)),ew=o(i(84395)),eT=o(i(73646));class eM{constructor(e,t,i,n,r,s,a){this._audioProfile=new c.default,this._timingResolutionObserver=null,this.connectionHealthData=new h.default,this.observerQueue=new Set,this.meetingSessionContext=new eT.default,this.enableSimulcast=!1,this.enableSVC=!1,this.useUpdateTransceiverControllerForUplink=!1,this.startAudioVideoT
10imestamp=0,this.mayNeedRenegotiationForSimulcastLayerChange=!1,this.promotedToPrimaryMeeting=!1,this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent=!1,this.receiveIndexTask=void 0,this.monitorTask=void 0,this.receiveRemotePauseResumeTask=void 0,this.destroyed=!1,this._logger=t,this.sessionStateController=new E.default(this._logger),this._configuration=e,this._encodedTransformWorkerManager=a,this._meetingSessionTimingManager=new S.default(t),this._webSocketAdapter=i,this._realtimeController=new w.default(n),this._realtimeController.realtimeSetLocalAttendeeId(e.credentials.attendeeId,e.credentials.externalUserId),this._mediaStreamBroker=n,this._reconnectController=r,this._videoTileController=new eb.default(new eS.default,this,this._logger),this._audioMixController=new l.default(this._logger),this._mediaStreamBroker.addMediaStreamBrokerObserver(this._audioMixController),this.meetingSessionContext.logger=this._logger,this._eventController=s,this.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers||(new y.default(this.configuration.credentials.attendeeId).hasModality(y.default.MODALITY_CONTENT)&&new u.default().hasChromiumWebRTC()?this.videoSendCodecPreferences=[M.default.av1Main(),M.default.vp9Profile0(),M.default.h264ConstrainedBaselineProfile(),M.default.vp8()]:this.videoSendCodecPreferences=[M.default.vp9Profile0(),M.default.h264ConstrainedBaselineProfile(),M.default.vp8()])}async destroy(){var e;this.observerQueue.clear(),this._mediaStreamBroker.removeMediaStreamBrokerObserver(this._audioMixController),this._meetingSessionTimingManager.removeObserver(this),this._meetingSessionTimingManager.destroy(),null===(e=this._encodedTransformWorkerManager)||void 0===e||e.removeObserver(this),this.destroyed=!0}get configuration(){return this._configuration}get realtimeController(){return this._realtimeController}get activeSpeakerDetector(){return this._activeSpeakerDetector||(this._activeSpeakerDetector=new d.default(this._realtimeController,this._configuration.credentials.attendeeId,this.handleHasBandwidthPriority.bind(this))),this._activeSpeakerDetector}get videoTileController(){return this._videoTileController}get audioMixController(){return this._audioMixController}get logger(){return this._logger}get rtcPeerConnection(){return this.meetingSessionContext&&this.meetingSessionContext.peer||null}get mediaStreamBroker(){return this._mediaStreamBroker}get eventController(){return this._eventController}getRTCPeerConnectionStats(e){return(this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent||(this.logger.warn("The `getRTCPeerConnectionStats()` is on its way to be deprecated. It makes an additional call to the `getStats` API and therefore may cause slight performance degradation. Please use the new API `clientMetricReport.getRTCStatsReport()` returned by `metricsDidReceive(clientMetricReport)` callback instead."),this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent=!0),this.rtcPeerConnection)?this.rtcPeerConnection.getStats(e):null}setAudioProfile(e){this._audioProfile=e}addObserver(e){this.logger.info("adding meeting observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing meeting observer"),this.observerQueue.delete(e)}forEachObserver(e){for(let t of this.observerQueue)T.default.nextTick(()=>{this.observerQueue.has(t)&&e(t)})}initSignalingClient(){var e;this.connectionHealthData.reset(),this.meetingSessionContext.signalingClient||(this.meetingSessionContext=new eT.default,this.meetingSessionContext.logger=this.logger,this.meetingSessionContext.eventController=this.eventController,this.meetingSessionContext.browserBehavior=new u.default,this.meetingSessionContext.videoSendCodecPreferences=this.videoSendCodecPreferences,this.meetingSessionContext.audioProfile=this._audioProfile,this.meetingSessionContext.encodedTransformWorkerManager=this._encodedTransformWorkerManager,null===(e=this._encodedTransformWorkerManager)||void 0===e||e.addObserver(this),this.meetingSessionContext.meetingSessionConfiguration=this.configuration,this.meetingSessionContext.signalingClient=new P.default(this._webSocketAdapter,this.logger,this._meetingSessionTimingManager),this._meetingSessionTimingManager.reset(),this.meetingSessionContext.meetingSessionTimingManager=this._meetingSessionTimingManager,this._meetingSessionTimingManager.addObserver(this))}uninstallPreStartObserver(){this.meetingSessionContext.signalingClient.removeObserver(this.preStartObserver),this.preStartObserver=void 0}prestart(){return this.logger.info("Pre-connecting signaling connection."),this.createOrReuseSignalingTask().run().then(()=>{let e=async()=>{this.logger.info("Early connection closed; discarding signaling task."),this.signalingTask=void 0,this.uninstallPreStartObserver()};this.preStartObserver={handleSignalingClientEvent(t){t.type===I.default.WebSocketClosed&&e()}},this.meetingSessionContext.signalingClient.registerObserver(this.preStartObserver)}).catch(e=>{this.logger.error(`Signaling task pre-start failed: ${e}`),this.signalingTask=void 0})}start(e){this.startReturningPromise(e).then(()=>{this.logger.info("start completed")}
10).catch(e=>{this.logger.error(`start failed: ${e}`)})}startReturningPromise(e){return(null==e?void 0:e.signalingOnly)===!0?this.prestart():(this.activeSpeakerDetector,new Promise((e,t)=>{this.sessionStateController.perform(A.default.Connect,()=>{this.actionConnect(!1).then(e).catch(t)})}))}connectWithPromises(e){let t,i;let n=this.meetingSessionContext;this.monitorTask=new j.default(n,this.configuration.connectionHealthPolicyConfiguration,this.connectionHealthData);let r=this.monitorTask.once(),s=new q.default(n).once(),a=new ei.default(n).once();this.receiveIndexTask=new Y.default(n),this.monitorTask.pauseResubscribeCheck(),this.receiveIndexTask.pauseIngestion();let o=new Z.default(this.logger,"Signaling",[this.createOrReuseSignalingTask(),new H.default(n),new X.default(n),new z.default(n),this.receiveIndexTask]).once(),d=new F.default(n).once(o,a),l=new B.default(n).once(d,s),c=new V.default(n).once(l),u=new ee.default(n).once(c),h=new U.default(n).once(u),f=new en.default(n).once(h);return this.receiveRemotePauseResumeTask=new Q.default(n),this.receiveRemotePauseResumeTask.once(f),new Z.default(this.logger,this.wrapTaskName("AudioVideoStart"),[r,(t=this.configuration.connectionTimeoutMs,i=new Z.default(this.logger,"Peer",[f,this.receiveRemotePauseResumeTask,e?new er.default(this.logger,new G.default(this.logger,"FinalizeConnection",[new es.default(n),new et.default(n)]),this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs):new et.default(n)]),new er.default(this.logger,i,t))])}async actionConnect(e){var t,i,n;this.initSignalingClient(),this.uninstallPreStartObserver(),this.meetingSessionContext.browserBehavior&&await this.meetingSessionContext.browserBehavior.updateWithHighEntropyValues(!0),this.meetingSessionContext.mediaStreamBroker=this._mediaStreamBroker,this.meetingSessionContext.realtimeController=this._realtimeController,this.meetingSessionContext.audioMixController=this._audioMixController,this.meetingSessionContext.audioVideoController=this,this.enableSimulcast=this.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers&&new u.default().hasChromiumWebRTC(),this.enableSimulcast&&this.configuration.enableSVC&&this.logger.warn("SVC cannot be enabled at the same time as simulcast. Disabling SVC, using simulcast."),this.enableSVC=!this.enableSimulcast&&this.configuration.enableSVC&&new u.default().supportsScalableVideoCoding();let r=!!this.configuration.urls.audioHostURL;if(this._meetingSessionTimingManager.onStart(),r&&(this._meetingSessionTimingManager.onLocalAudioAdded(),this._meetingSessionTimingManager.onRemoteAudioAdded()),r?this.enableSimulcast?(this.logger.info("Using transceiver controller with simulcast support"),new y.default(this.configuration.credentials.attendeeId).hasModality(y.default.MODALITY_CONTENT)?this.meetingSessionContext.transceiverController=new eo.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext,this._encodedTransformWorkerManager):this.meetingSessionContext.transceiverController=new ed.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext,this._encodedTransformWorkerManager)):(this.logger.info("Using default transceiver controller"),this.meetingSessionContext.transceiverController=new ea.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext,this._encodedTransformWorkerManager)):(this.logger.info("Using video only transceiver controller"),this.meetingSessionContext.transceiverController=new el.default(this.logger,this.meetingSessionContext.browserBehavior,this.meetingSessionContext,this._encodedTransformWorkerManager)),this.meetingSessionContext.volumeIndicatorAdapter=new ew.default(this.logger,this._realtimeController,eM.MIN_VOLUME_DECIBELS,eM.MAX_VOLUME_DECIBELS,this.configuration.credentials.attendeeId),this.meetingSessionContext.videoTileController=this._videoTileController,this.meetingSessionContext.videoDownlinkBandwidthPolicy=this.configuration.videoDownlinkBandwidthPolicy,this.meetingSessionContext.videoUplinkBandwidthPolicy=this.configuration.videoUplinkBandwidthPolicy,this.meetingSessionContext.enableSimulcast=this.enableSimulcast,this.meetingSessionContext.enableSVC=this.enableSVC,this.enableSimulcast){let e=this.meetingSessionContext.videoUplinkBandwidthPolicy;e||(e=new ey.default(this.configuration.credentials.attendeeId,this.meetingSessionContext.logger),this.meetingSessionContext.videoUplinkBandwidthPolicy=e),e.addObserver(this),this.meetingSessionContext.videoStreamIndex=new ev.default(this.logger)}else this.meetingSessionContext.enableSimulcast=!1,this.meetingSessionContext.videoStreamIndex=new eg.default(this.logger),this.meetingSessionContext.videoUplinkBandwidthPolicy||(this.meetingSessionContext.videoUplinkBandwidthPolicy=new eC.default(this.configuration.credentials.attendeeId,!this.meetingSessionContext.browserBehavior.disableResolutionScaleDown(),this.meetingSessionContext.logger,this.meetingSessionContext.browserBehavior),this.meetingSessionContext.videoUplinkBandwidthPolicy.setSVCEnabled(this.enableSVC)),this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController&&this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController&&(this.useUpd
10ateTransceiverControllerForUplink=!0,this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController(this.meetingSessionContext.transceiverController)),this.meetingSessionContext.audioProfile=this._audioProfile;if(this.meetingSessionContext.videoDownlinkBandwidthPolicy||(this.meetingSessionContext.videoDownlinkBandwidthPolicy=this.enableSVC||this.enableSimulcast?new em.default(this.meetingSessionContext.logger):new eh.default(this.configuration.credentials.attendeeId)),new y.default(this.configuration.credentials.attendeeId).hasModality(y.default.MODALITY_CONTENT)){let e=this.configuration.meetingFeatures.contentMaxResolution===m.default.VideoResolutionUHD;e&&this.setVideoMaxBandwidthKbps(2500),this.meetingSessionContext.videoUplinkBandwidthPolicy.setHighResolutionFeatureEnabled(e)}else{let e=this.configuration.meetingFeatures.videoMaxResolution===m.default.VideoResolutionFHD;this.meetingSessionContext.videoUplinkBandwidthPolicy.setHighResolutionFeatureEnabled(e)}this.meetingSessionContext.videoUplinkBandwidthPolicy&&this.maxUplinkBandwidthKbps&&this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(this.maxUplinkBandwidthKbps),this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController&&this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController(this._videoTileController),this.meetingSessionContext.videoDownlinkBandwidthPolicy.setWantsResubscribeObserver&&this.meetingSessionContext.videoDownlinkBandwidthPolicy.setWantsResubscribeObserver(()=>this.update({needsRenegotiation:!1})),this.meetingSessionContext.lastKnownVideoAvailability=new b.default,this.meetingSessionContext.videoCaptureAndEncodeParameter=new eu.default(0,0,0,0,!1),this.meetingSessionContext.videosToReceive=new ep.default,this.meetingSessionContext.videosPaused=new ep.default,this.meetingSessionContext.statsCollector=new D.default(this,this.logger),null===(i=(t=this._mediaStreamBroker).setStatsCollector)||void 0===i||i.call(t,this.meetingSessionContext.statsCollector),this.meetingSessionContext.connectionMonitor=new f.default(this,this._realtimeController,this.connectionHealthData,new C.default(this.meetingSessionContext.signalingClient,eM.PING_PONG_INTERVAL_MS,this.logger),this.meetingSessionContext.statsCollector),this.meetingSessionContext.reconnectController=this._reconnectController,this.meetingSessionContext.videoDeviceInformation={},this._videoTileController.registerVideoTileResolutionObserver(this.meetingSessionContext.statsCollector),this._timingResolutionObserver={videoTileResolutionDidChange:()=>{},videoTileUnbound:(e,t)=>{void 0!==t&&this._meetingSessionTimingManager.onRemoteVideoUnbound(t)},videoTileBound:e=>{this._meetingSessionTimingManager.onRemoteVideoBound(e)},videoTileFirstFrameDidRender:(e,t)=>{this._meetingSessionTimingManager.onRemoteVideoFirstFrameRendered(e,t)}},this._videoTileController.registerVideoTileResolutionObserver(this._timingResolutionObserver),e||(this.meetingSessionContext.retryCount=0,this._reconnectController.reset(),this.startAudioVideoT
10imestamp=Date.now(),this.forEachObserver(e=>{ec.Maybe.of(e.audioVideoDidStartConnecting).map(t=>t.bind(e)(!1))}),null===(n=this.eventController)||void 0===n||n.publishEvent("meetingStartRequested")),this.meetingSessionContext.startAudioVideoTimestamp=this.startAudioVideoTimestamp,this._reconnectController.hasStartedConnectionAttempt()?this._reconnectController.startedConnectionAttempt(!1):this._reconnectController.startedConnectionAttempt(!0);let s=r&&this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs>0;this.logger.info("Needs to wait for attendee presence? "+s);let a=this.connectWithPromises(s);try{await a.run(),this.connectionHealthData.setConnectionStartTime();let e=new y.default(this.configuration.credentials.attendeeId).hasModality(y.default.MODALITY_CONTENT);this.connectionHealthData.setIsContentShare(e),this._mediaStreamBroker.addMediaStreamBrokerObserver(this),this.sessionStateController.perform(A.default.FinishConnecting,()=>{var e;this.meetingSessionContext.meetingStartDurationMs=Date.now()-this.startAudioVideoT
10imestamp,null===(e=this.eventController)||void 0===e||e.publishEvent("meetingStartSucceeded",(0,p.audioVideoEventAttributesFromState)(this.meetingSessionContext)),this.meetingSessionContext.startTimeMs=Date.now(),this.actionFinishConnecting()})}catch(t){this.signalingTask=void 0;let e=new g.default(this.getMeetingStatusCode(t)||v.default.TaskFailed);if(this.logger.info(`Start failed: ${e} due to error ${t}.`),this.sessionStateController.state()===k.default.NotConnected){this.logger.info("Start failed and not connected. Not cleaning up.");return}this.sessionStateController.perform(A.default.Fail,async()=>{await this.actionDisconnect(e,!0,t),this.handleMeetingSessionStatus(e,t)||this.notifyStop(e,t)})}}createOrReuseSignalingTask(){return this.signalingTask||(this.initSignalingClient(),this.signalingTask=new er.default(this.logger,new W.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs).once()),this.signalingTask}actionFinishConnecting(){this.signalingTask=void 0,this.meetingSessionContext.videoDuplexMode=x.SdkStreamServiceType.RX,this.meetingSessionContext.enableSimulcast||(this.useUpdateTransceiverControllerForUplink?this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController():this.enforceBandwidthLimitationForSender(this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0])),this.meetingSessionContext.isSessionConnected=!0,this.forEachObserver(e=>{ec.Maybe.of(e.audioVideoDidStart).map(t=>t.bind(e)())}),this._reconnectController.reset(),this.receiveIndexTask.resumeIngestion(),this.monitorTask.resumeResubscribeCheck()}stopReturningPromise(){var e;return(this._reconnectController.disableReconnect(),this.sessionStateController.state()===k.default.NotConnected)?(null===(e=this.meetingSessionContext.signalingClient)||void 0===e||e.closeConnection(),this.cleanUpMediaStreamsAfterStop(),Promise.resolve()):new Promise((e,t)=>{this.sessionStateController.perform(A.default.Disconnect,()=>{this.logger.info("attendee left meeting, session will not be reconnected"),this.actionDisconnect(new g.default(v.default.Left),!1,null).then(e).catch(t)})})}stop(){this.stopReturningPromise()}async actionDisconnect(e,t,i){var n;try{await new Z.default(this.logger,this.wrapTaskName("AudioVideoStop"),[new er.default(this.logger,new $.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs)]).run()}catch(e){this.logger.info("fail to stop")}try{let e=[new er.default(this.logger,new L.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs)];this.cleanUpMediaStreamsAfterStop(),await new Z.default(this.logger,this.wrapTaskName("AudioVideoClean"),e).run()}catch(e){this.logger.info("fail to clean")}await (null===(n=this._encodedTransformWorkerManager)||void 0===n?void 0:n.stop()),this.sessionStateController.perform(A.default.FinishDisconnecting,()=>{t||this.notifyStop(e,i)}),this._videoTileController.removeVideoTileResolutionObserver(this.meetingSessionContext.statsCollector),this._timingResolutionObserver&&(this._videoTileController.removeVideoTileResolutionObserver(this._timingResolutionObserver),this._timingResolutionObserver=null)}update(e={needsRenegotiation:!0}){let t=e.needsRenegotiation;if(t||(t=void 0===this.meetingSessionContext.peer),t||(t=!this.updateRemoteVideosFromPolicy()),t||(t=!this.updateLocalVideoFromPolicy()),this.meetingSessionContext.lastVideosToReceive=this.meetingSessionContext.videosToReceive,!t)return this.logger.info("Update request does not require resubscribe"),this.actionFinishUpdating(),!0;this.logger.info("Update request requires resubscribe"),this.updateNumberOfPublishedVideoSources();let i=this.sessionStateController.perform(A.default.Update,()=>{this.actionUpdateWithRenegotiation(!0)});return i===_.default.Transitioned||i===_.default.DeferredTransition}updateNumberOfPublishedVideoSources(){let e=this.configuration.credentials.attendeeId,t=this._videoTileController.hasStartedLocalVideoTile();if(null!==this.meetingSessionContext.videoStreamIndex){let i=this.meetingSessionContext.videoStreamIndex.numberOfVideoPublishingParticipantsExcludingSelf(e)+(t?1:0);this.connectionHealthData.setNumberOfPublishedVideoSources(i)}}updateRemoteVideosFromPolicy(){if(this.meetingSessionContext.videoDownlinkBandwidthPolicy&&void 0!==this.meetingSessionContext.videoDownlinkBandwidthPolicy.getVideoPreferences&&void 0!==this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption&&!(0,R.serverSideNetworkAdaptionIsNoneOrDefault)(this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption())){if(!this.sendRemoteVideoUpdate())return!1;if(this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption()===R.default.BandwidthProbingAndRemoteVideoQualityAdaption)return this.isNotAddingOrRemovingStreams()}return this.updateRemoteVideosIfNotAddingOrRemovingStreams()}updateRemoteVideosIfNotAddingOrRemovingStreams(){let e=this.detectChangesInVideosToReceive();if(void 0===e)return!1;let t=e.added,i=e.simulcastStreamUpdates,n=e.removed,r=this.meetingSessionContext,s=[];for(let[e,t]of i.entries()){let i=new O.default;if(i.streamId=t,i.attendeeId=r.videoStreamIndex.attendeeIdForStreamId(t),i.mid=r.transceiverController.getMidForStreamId(e),void 0===i.mid)return this.logger.info(`No MID found for stream ID ${e}, cannot update stream without renegotiation`),!1;if(s.push(i),r.transceiverController.setStreamIdForMid(i.mid,t),r.videoStreamIndex.overrideStreamIdMappings(e,t),r.videoTileController.haveVideoTileForAttendeeId(i.attendeeId)){let e=r.videoTileController.getVideoTileForAttendeeId(i.attendeeId);if(!e.setStreamId)return!1;e.setStreamId(t)}}return 0!==s.length&&r.signalingClient.remoteVideoUpdate(s,[]),0===t.length&&0===n.length&&(r.videoStreamIndex.remoteVideoUpdateSent(),!0)}detectChangesInVideosToReceive(){let e=this.meetingSessionContext;if(null===e.videosToReceive||!e.transceiverController||!e.transceiverController.getMidForStreamId||!e.transceiverController.setStreamIdForMid||!e.videosToReceive.forEach||!e.signalingClient.remoteVideoUpdate||!e.videoStreamIndex.overrideStreamIdMappings)return;let t=[],i=new Map,n=[];if(null===e.lastVideosToReceive)t=e.videosToReceive.array();else{let r=e.videoStreamIndex;e.videosToReceive.forEach(n=>{if(e.lastVideosToReceive.contain(n))return;let s=!1;
10e.lastVideosToReceive.forEach(e=>{!s&&r.StreamIdsInSameGroup(e,n)&&(i.set(e,n),s=!0)}),s||t.push(n)}),n=e.lastVideosToReceive.array().filter(t=>{let n=e.videosToReceive.contain(t),r=i.has(t);return!n&&!r})}return this.logger.info(`Request to update remote videos with added: [${t}], updated: [${Array.from(i.entries()).map(([e,t])=>`${e}->${t}`).join(",")}], removed: [${n}]`),{added:t,removed:n,simulcastStreamUpdates:i}}isNotAddingOrRemovingStreams(){let e=this.detectChangesInVideosToReceive();if(void 0===e)return!1;let t=e.added,i=e.removed;return 0===t.length&&0===i.length&&(this.meetingSessionContext.videoStreamIndex.remoteVideoUpdateSent(),!0)}sendRemoteVideoUpdate(){let e=this.meetingSessionContext;if(null===e.videosToReceive)return!1;let t=e.videosToReceive.array().map(t=>e.videoStreamIndex.groupIdForStreamId(t));this.receiveRemotePauseResumeTask.updateSubscribedGroupdIds(new Set(t));let i=(0,ef.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration)(e,t,e.videoDownlinkBandwidthPolicy.getVideoPreferences()),n=new Map,r=[];for(let t of i){let i=!1;if(e.lastVideoSubscriptionConfiguration.has(t.groupId)){let n=e.lastVideoSubscriptionConfiguration.get(t.groupId);t.equals(n)||(this.logger.debug(`${JSON.stringify(t)} does not equal ${JSON.stringify(n)}, sending update`),i=!0)}else i=!0;n.set(t.groupId,t),i&&r.push(t)}e.lastVideoSubscriptionConfiguration=n;let s=[];if(null!==e.lastVideosToReceive){let i=new Set(t);for(let t of e.lastVideosToReceive.array()){let n=e.videoStreamIndex.groupIdForStreamId(t);if(!i.has(n)){let t=e.transceiverController.getMidForGroupId(n);if(void 0===t){e.logger.warn(`Could not find MID for group ID to remove: ${n}`);continue}s.push(t)}}}return(0!==r.length||0!==s.length)&&e.signalingClient.remoteVideoUpdate(r,s),!0}updateLocalVideoFromPolicy(){if(this.meetingSessionContext.enableSimulcast){let e=this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseEncodingParameters();if(this.mayNeedRenegotiationForSimulcastLayerChange&&this.meetingSessionContext.transceiverController.hasVideoInput()&&!this.negotiatedBitrateLayersAllocationRtpHeaderExtension())return this.logger.info("Needs regenotiation for local video simulcast layer change"),this.mayNeedRenegotiationForSimulcastLayerChange=!1,!1;this.meetingSessionContext.transceiverController.setEncodingParameters(e)}else this.meetingSessionContext.videoCaptureAndEncodeParameter=this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();return this.logger.info("Updated local video from policy without renegotiation"),!0}negotiatedBitrateLayersAllocationRtpHeaderExtension(){if(!this.meetingSessionContext.transceiverController.localVideoTransceiver())return!1;let e=this.meetingSessionContext.transceiverController.localVideoTransceiver().sender.getParameters();return!!e&&!!e.headerExtensions&&e.headerExtensions.some(e=>"http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00"===e.uri)}restartLocalVideo(e){let t=async()=>{this._videoTileController.hasStartedLocalVideoTile()&&(this.logger.info("stopping local video tile prior to local video restart"),this._videoTileController.stopLocalVideoTile(),this.logger.info("preparing local video restart update"),await this.actionUpdateWithRenegotiation(!1),this.logger.info("starting local video tile for local video restart"),this._videoTileController.startLocalVideoTile()),this.logger.info("finalizing local video restart update"),await this.actionUpdateWithRenegotiation(!0),e()},i=this.sessionStateController.perform(A.default.Update,()=>{t()});return i===_.default.Transitioned||i===_.default.DeferredTransition}async replaceLocalVideo(e){if(!e||e.getVideoTracks().length<1)throw Error("could not acquire video track");if(!this.meetingSessionContext||!this.meetingSessionContext.peer)throw Error("no active meeting and peer connection");let t=this.meetingSessionContext.videoTileController.getLocalVideoTile();if(t){let i=t.state(),n=e.getVideoTracks()[0].getSettings();t.bindVideoStream(i.boundAttendeeId,!0,e,n.width,n.height,i.streamId,i.boundExternalUserId)}await this.meetingSessionContext.transceiverController.setVideoInput(e.getVideoTracks()[0]),this.meetingSessionContext.activeVideoInput=e,this.logger.info("Local video input is updated")}async replaceLocalAudio(e){if(!e||e.getAudioTracks().length<1)throw Error("could not acquire audio track");if(!this.meetingSessionContext||!this.meetingSessionContext.peer)throw Error("no active meeting and peer connection");if(this.connectionHealthData.reset(),this.connectionHealthData.setConnectionStartTime(),!await this.meetingSessionContext.transceiverController.replaceAudioTrack(e.getAudioTracks()[0]))throw Error("Failed to replace audio track");this.meetingSessionContext.activeAudioInput=e,this.logger.info("Local audio input is updated")}async actionUpdateWithRenegotiation(e){this.monitorTask.pauseResubscribeCheck(),this.receiveIndexTask.pauseIngestion();try{await new Z.default(this.logger,this.wrapTaskName("AudioVideoUpdate"),[new J.default(this.meetingSessionContext),new er.default(this.logger,new Z.default(this.logger,"UpdateSession",[new B.default(this.meetingSessionContext),new V.default(this.meetingSessionContext),new ee.default(this.meetingSessionContext),new U.default(this.meetingSessionContext),new en.default(this.meetingSessionContext),new et.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs)]).run(),e&&this.sessionStateController.perform(A.default.FinishUpdating,()=>{this.actionFinishUpdating()})}catch(e){this.sessionStateController.perform(A.default.FinishUpdating,()=>{let t=new g.default(this.getMeetingStatusCode(e)||v.default.TaskFailed);t.statusCode()!==v.default.IncompatibleSDP&&this.logger.info("failed to update audio-video session"),this.handleMeetingSessionStatus(t,e)})}}notifyStop(e,t){var i;if(this.forEachObserver(t=>{ec.Maybe.of(t.audioVideoDidStop).map(i=>i.bind(t)(e))}),this.eventController){let n={...(0,p.audioVideoEventAttributesFromState)(this.meetingSessionContext),meetingStatus:v.default[e.statusCode()]},r=t&&t.message||(null===(i=e.toString)||void 0===i?void 0:i.call(e))||"";null===this.meetingSessionContext.startTimeMs?(n.meetingErrorMessage=r,delete n.meetingDurationMs,delete n.attendeePresenceDurationMs,delete n.meetingStartDurationMs,this.eventController.publishEvent("meetingStartFailed",n)):e.isFailure()||e.isAudioConnectionFailure()?(n.meetingErrorMessage=r,this.eventController.publishEvent("meetingFailed",n)):this.eventController.publishEvent("meetingEnded",n)}}actionFinishUpdating(){if(!this.meetingSessionContext.enableSimulcast){if(this.useUpd
10ateTransceiverControllerForUplink)this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();else{let e=this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0];this.enforceBandwidthLimitationForSender(e)}}this.monitorTask.resumeResubscribeCheck(),this.receiveIndexTask.resumeIngestion(),this.logger.info("updated audio-video session")}reconnect(e,t){this.promotedToPrimaryMeeting&&(this.promotedToPrimaryMeeting=!1,this.forEachObserver(e=>{ec.Maybe.of(e.audioVideoWasDemotedFromPrimaryMeeting).map(t=>t.bind(e)(new g.default(v.default.AudioVideoDisconnectedWhilePromoted)))}));let i=this._reconnectController.retryWithBackoff(async()=>{this.sessionStateController.state()===k.default.NotConnected?this.sessionStateController.perform(A.default.Connect,()=>{this.actionConnect(!0)}):this.sessionStateController.perform(A.default.Reconnect,()=>{this.actionReconnect(e)}),this.meetingSessionContext.retryCount+=1},()=>{this.logger.info("canceled retry")});return i||this.sessionStateController.perform(A.default.Fail,()=>{this.actionDisconnect(e,!1,t)}),i}async actionReconnect(e){this._reconnectController.hasStartedConnectionAttempt()||(this._reconnectController.startedConnectionAttempt(!1),this.forEachObserver(e=>{ec.Maybe.of(e.audioVideoDidStartConnecting).map(t=>t.bind(e)(!0))})),this.meetingSessionContext.volumeIndicatorAdapter.onReconnect(),this.connectionHealthData.reset(),this.receiveRemotePauseResumeTask=new Q.default(this.meetingSessionContext);try{await new Z.default(this.logger,this.wrapTaskName("AudioVideoReconnect"),[new er.default(this.logger,new Z.default(this.logger,"Media",[new N.default(this.meetingSessionContext),new Z.default(this.logger,"Signaling",[new W.default(this.meetingSessionContext),new z.default(this.meetingSessionContext)]),new F.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs),new J.default(this.meetingSessionContext),new er.default(this.logger,new Z.default(this.logger,"UpdateSession",[new B.default(this.meetingSessionContext),new V.default(this.meetingSessionContext),new ee.default(this.meetingSessionContext),new U.default(this.meetingSessionContext),new en.default(this.meetingSessionContext),new et.default(this.meetingSessionContext),this.receiveRemotePauseResumeTask]),this.configuration.connectionTimeoutMs)]).run(),this.sessionStateController.perform(A.default.FinishConnecting,()=>{var t;null===(t=this.eventController)||void 0===t||t.publishEvent("meetingReconnected",{...(0,p.audioVideoEventAttributesFromState)(this.meetingSessionContext),meetingStatus:v.default[e.statusCode()]}),this.actionFinishConnecting()})}catch(e){this.sessionStateController.perform(A.default.FinishConnecting,()=>{this.logger.info("failed to reconnect audio-video session");let t=new g.default(this.getMeetingStatusCode(e)||v.default.TaskFailed);this.handleMeetingSessionStatus(t,e)})}this.connectionHealthData.setConnectionStartTime()}wrapTaskName(e){return`${e}/${this.configuration.meetingId}/${this.configuration.credentials.attendeeId}`}cleanUpMediaStreamsAfterStop(){this._mediaStreamBroker.removeMediaStreamBrokerObserver(this),this.meetingSessionContext.activeAudioInput=void 0,this.meetingSessionContext.activeVideoInput=void 0}getMeetingStatusCode(e){let t=/the meeting status code: (\d+)/.exec(e&&e.message);return t&&t.length>1?Number.parseInt(t[1],10):null}async enforceBandwidthLimitationForSender(e){await this.meetingSessionContext.transceiverController.setVideoSendingBitrateKbps(e)}handleMeetingSessionStatus(e,t){if(this.logger.info(`handling status: ${v.default[e.statusCode()]}`),!e.isTerminal()&&this.meetingSessionContext.statsCollector&&this.meetingSessionContext.statsCollector.logMeetingSessionStatus(e),e.statusCode()===v.default.IncompatibleSDP)return this.restartLocalVideo(()=>{this.logger.info("handled incompatible SDP by attempting to restart video")}),!0;if(e.statusCode()===v.default.VideoCallSwitchToViewOnly)return this._videoTileController.removeLocalVideoTile(),this.forEachObserver(e=>{ec.Maybe.of(e.videoSendDidBecomeUnavailable).map(t=>t.bind(e)())}),!1;if(e.statusCode()===v.default.AudioVideoWasRemovedFromPrimaryMeeting)return this.forEachObserver(t=>{ec.Maybe.of(t.audioVideoWasDemotedFromPrimaryMeeting).map(i=>i.bind(t)(e))}),!1;if(e.isTerminal()&&(this.logger.error("session will not be reconnected"),this.meetingSessionContext.reconnectController&&this.meetingSessionContext.reconnectController.disableReconnect()),(e.isFailure()||e.isTerminal())&&this.meetingSessionContext.reconnectController){let i=this.reconnect(e,t);return i?this.logger.warn(`The audio video controller will reconnect due to status code ${v.default[e.statusCode()]}${t?` and error: ${t.message}`:""}`):this.logger.error(`The audio video controller failed with status code ${v.default[e.statusCode()]}${t?` and error: ${t.message}`:""}`),i}return!1}setVideoMaxBandwidthKbps(e){if(e<=0)throw Error("Max bandwidth kbps has to be greater than 0");this.meetingSessionContext&&this.meetingSessionContext.videoUplinkBandwidthPolicy&&(this.logger.info(`video send has 
10ideal max bandwidth ${e} kbps`),this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(e)),this.maxUplinkBandwidthKbps=e}async handleHasBandwidthPriority(e){if(this.meetingSessionContext&&this.meetingSessionContext.videoUplinkBandwidthPolicy&&!this.meetingSessionContext.enableSimulcast){if(this.useUpdateTransceiverControllerForUplink){this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(e),await this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();return}let t=this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(e);let i=this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();t!==i&&(this.logger.info(`video send bandwidth priority ${e} max has changed from ${t} kbps to ${i} kbps`),await this.enforceBandwidthLimitationForSender(i))}}pauseReceivingStream(e){this.meetingSessionContext&&this.meetingSessionContext.signalingClient&&this.meetingSessionContext.signalingClient.pause([e])}resumeReceivingStream(e){this.meetingSessionContext&&this.meetingSessionContext.signalingClient&&this.meetingSessionContext.signalingClient.resume([e])}setVideoCodecSendPreferences(e){this.videoSendCodecPreferences=e,this.meetingSessionContext.videoSendCodecPreferences=e,this.sessionStateController.state()!==k.default.NotConnected&&this.update({needsRenegotiation:!0})}getRemoteVideoSources(){let{videoStreamIndex:e}=this.meetingSessionContext;if(!e)return this.logger.info("meeting has not started"),[];let t=this.configuration.credentials.attendeeId;return e.allVideoSendingSourcesExcludingSelf(t)}encodingSimulcastLayersDidChange(e){this.mayNeedRenegotiationForSimulcastLayerChange=!0,this.forEachObserver(t=>{ec.Maybe.of(t.encodingSimulcastLayersDidChange).map(i=>i.bind(t)(e))})}promoteToPrimaryMeeting(e){return this.actionPromoteToPrimaryMeeting(e)}async actionPromoteToPrimaryMeeting(e){let t=new g.default(v.default.SignalingRequestFailed);return await new Z.default(this.logger,this.wrapTaskName("PromoteToPrimaryMeeting"),[new er.default(this.logger,new K.default(this.meetingSessionContext,e,e=>{t=e}),this.configuration.connectionTimeoutMs)]).run(),this.promotedToPrimaryMeeting=t.statusCode()===v.default.OK,t}demoteFromPrimaryMeeting(){this.meetingSessionContext.signalingClient.demoteFromPrimaryMeeting(),this.forEachObserver(e=>{ec.Maybe.of(e.audioVideoWasDemotedFromPrimaryMeeting).map(t=>t.bind(e)(new g.default(v.default.OK)))})}async videoInputDidChange(e){if(this.logger.info("Receive a video input change event"),!this.meetingSessionContext||!this.meetingSessionContext.peer){this.logger.info("Skip updating video input because there is no active meeting and peer connection");return}this._videoTileController.hasStartedLocalVideoTile()&&(e?await this.replaceLocalVideo(e):this._videoTileController.stopLocalVideoTile())}async audioInputDidChange(e){if(this.logger.info("Receive an audio input change event"),!this.meetingSessionContext||!this.meetingSessionContext.peer){this.logger.info("Skip updating audio input because there is no active meeting and peer connection");return}if(!e)try{e=await this.mediaStreamBroker.acquireAudioInputStream()}catch(e){this.logger.error("Could not acquire audio track from mediaStreamBroker");return}await this.replaceLocalAudio(e)}onEncodedTransformWorkerManagerFailed(e){if(this.logger.error(`Encoded transform worker failed: ${e.message}`),this.sessionStateController.state()!==k.default.Connected){this.logger.info("Skipping reconnect for worker failure - session not connected");return}let t=new g.default(v.default.EncodedTransformManagerFailed);this.reconnect(t,e)}onFirstPacketReceived(e,t,i,n){var r,s;if("audio"===e)"receive"===t?this._meetingSessionTimingManager.onRemoteAudioFirstPacketReceived(n):"send"===t&&this._meetingSessionTimingManager.onLocalAudioFirstPacketSent(n);else if("video"===e){if("receive"===t){let e=null===(r=this.meetingSessionContext.videoStreamIndex)||void 0===r?void 0:r.streamIdForSSRC(i);if(void 0===e){this.logger.warn(`Received first video packet but no stream ID found for ssrc=${i}`);return}let t=null===(s=this.meetingSessionContext.videoStreamIndex)||void 0===s?void 0:s.groupIdForStreamId(e);if(void 0===t){this.logger.warn(`Received first video packet but no group ID found for streamId=${e} ssrc=${i}`);return}this.logger.debug(`Received first video packet for groupId=${t} ssrc=${i}`),this._meetingSessionTimingManager.onRemoteVideoFirstPacketReceived(t,n)}else"send"===t&&this._meetingSessionTimingManager.onLocalVideoFirstFrameSent(n)}}onMeetingSessionTimingReady(e){if(!this.meetingSessionContext.signalingClient){this.logger.warn("Timing data ready but signaling client is not available, discarding");return}this.meetingSessionContext.signalingClient.sendMeetingSessionTiming(e)}}eM.MIN_VOLUME_DECIBELS=-42,eM.MAX_VOLUME_DECIBELS=-14,eM.PING_PONG_INTERVAL_MS=1e4,t.default=eM},18173:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
10dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(4494)),s=n(i(75499)),a=n(i(50495)),o=n(i(87617)),d=n(i(63170)),l=n(i(69461)),c=n(i(90176)),u=n(i(69647)),h=n(i(60692)),f=n(i(80409)),m=n(i(92979)),p=n(i(63629));class g extends p.default{constructor(e){let t=new d.default;t.meetingId="",t.externalMeetingId="",t.credentials=new l.default,t.credentials.attendeeId="",t.credentials.joinToken="",t.urls=new h.default,t.urls.turnControlURL="",t.urls.audioHostURL="",t.urls.signalingURL="wss://localhost/";let i=new a.default;super(e||t,i,new m.default(new a.default),new o.default,new f.default(0,new r.default(0,0,0)),new s.default(e||t,i))}setAudioProfile(e){}start(){}stop(){}promoteToPrimaryMeeting(e){return Promise.resolve(new c.default(u.default.OK))}demoteFromPrimaryMeeting(){}}t.default=g},7924:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=i(88295);class r{constructor(e,t,i,n,r,s){this.audioVideoController=e,this.videoTileController=t,this.realtimeController=i,this.audioMixController=n,this.deviceController=r,this.contentShareController=s}addObserver(e){this.audioVideoController.addObserver(e),this.trace("addObserver")}removeObserver(e){this.audioVideoController.removeObserver(e),this.trace("removeObserver")}setAudioProfile(e){this.trace("setAudioProfile",e),this.audioVideoController.setAudioProfile(e)}start(e){this.audioVideoController.start(e),this.trace("start")}stop(){this.audioVideoController.stop(),this.trace("stop")}getRTCPeerConnectionStats(e){return this.trace("getRTCPeerConnectionStats",e?e.id:null),this.audioVideoController.getRTCPeerConnectionStats(e)}bindAudioElement(e){let t=this.audioMixController.bindAudioElement(e);return this.trace("bindAudioElement",e.id,t),t}unbindAudioElement(){this.audioMixController.unbindAudioElement(),this.trace("unbindAudioElement")}getCurrentMeetingAudioStream(){return this.trace("getCurrentConferenceStream"),this.audioMixController.getCurrentMeetingAudioStream()}addAudioMixObserver(e){this.trace("addAudioMixObserver"),this.audioMixController.addAudioMixObserver(e)}removeAudioMixObserver(e){this.trace("removeAudioMixObserver"),this.audioMixController.removeAudioMixObserver(e)}bindVideoElement(e,t){this.videoTileController.bindVideoElement(e,t),this.trace("bindVideoElement",{tileId:e,videoElementId:t.id})}unbindVideoElement(e,t=!0){this.videoTileController.unbindVideoElement(e,t),this.trace("unbindVideoElement",{tileId:e,cleanUpVideoElement:t})}startLocalVideoTile(){let e=this.videoTileController.startLocalVideoTile();return this.trace("startLocalVideoTile",null,e),e}stopLocalVideoTile(){this.videoTileController.stopLocalVideoTile(),this.trace("stopLocalVideoTile")}hasStartedLocalVideoTile(){let e=this.videoTileController.hasStartedLocalVideoTile();return this.trace("hasStartedLocalVideoTile",null,e),e}removeLocalVideoTile(){this.videoTileController.removeLocalVideoTile(),this.trace("removeLocalVideoTile")}getLocalVideoTile(){let e=this.videoTileController.getLocalVideoTile();return this.trace("getLocalVideoTile"),e}pauseVideoTile(e){this.videoTileController.pauseVideoTile(e),this.trace("pauseVideoTile",e)}unpauseVideoTile(e){this.videoTileController.unpauseVideoTile(e),this.trace("unpauseVideoTile",e)}getVideoTile(e){let t=this.videoTileController.getVideoTile(e);return this.trace("getVideoTile",e),t}getAllRemoteVideoTiles(){let e=this.videoTileController.getAllRemoteVideoTiles();return this.trace("getAllRemoteVideoTiles"),e}getAllVideoTiles(){let e=this.videoTileController.getAllVideoTiles();return this.trace("getAllVideoTiles"),e}addVideoTile(){let e=this.videoTileController.addVideoTile();return this.trace("addVideoTile",null,e.state()),e}removeVideoTile(e){this.videoTileController.removeVideoTile(e),this.trace("removeVideoTile",e)}removeVideoTilesByAttendeeId(e){let t=this.videoTileController.removeVideoTilesByAttendeeId(e);return this.trace("removeVideoTilesByAttendeeId",e,t),t}removeAllVideoTiles(){this.videoTileController.removeAllVideoTiles(),this.trace("removeAllVideoTiles")}captureVideoTile(e){let t=this.videoTileController.captureVideoTile(e);
10return this.trace("captureVideoTile",e),t}realtimeSubscribeToAttendeeIdPresence(e){this.realtimeController.realtimeSubscribeToAttendeeIdPresence(e),this.trace("realtimeSubscribeToAttendeeIdPresence")}realtimeUnsubscribeToAttendeeIdPresence(e){this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(e),this.trace("realtimeUnsubscribeToAttendeeIdPresence")}realtimeSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeSetCanUnmuteLocalAudio(e),this.trace("realtimeSetCanUnmuteLocalAudio",e)}realtimeSubscribeToSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeSubscribeToSetCanUnmuteLocalAudio(e),this.trace("realtimeSubscribeToSetCanUnmuteLocalAudio")}realtimeUnsubscribeToSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeUnsubscribeToSetCanUnmuteLocalAudio(e),this.trace("realtimeUnsubscribeToSetCanUnmuteLocalAudio")}realtimeCanUnmuteLocalAudio(){let e=this.realtimeController.realtimeCanUnmuteLocalAudio();return this.trace("realtimeCanUnmuteLocalAudio",null,e),e}realtimeMuteLocalAudio(){this.realtimeController.realtimeMuteLocalAudio(),this.trace("realtimeMuteLocalAudio")}realtimeUnmuteLocalAudio(){let e=this.realtimeController.realtimeUnmuteLocalAudio();return this.trace("realtimeUnmuteLocalAudio"),e}realtimeSubscribeToMuteAndUnmuteLocalAudio(e){this.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(e),this.trace("realtimeSubscribeToMuteAndUnmuteLocalAudio")}realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e){this.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e),this.trace("realtimeUnsubscribeToMuteAndUnmuteLocalAudio")}realtimeIsLocalAudioMuted(){let e=this.realtimeController.realtimeIsLocalAudioMuted();return this.trace("realtimeIsLocalAudioMuted"),e}realtimeSubscribeToVolumeIndicator(e,t){this.realtimeController.realtimeSubscribeToVolumeIndicator(e,t),this.trace("realtimeSubscribeToVolumeIndicator",e)}realtimeUnsubscribeFromVolumeIndicator(e,t){this.realtimeController.realtimeUnsubscribeFromVolumeIndicator(e,t),this.trace("realtimeUnsubscribeFromVolumeIndicator",e,t)}realtimeSubscribeToLocalSignalStrengthChange(e){this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(e),this.trace("realtimeSubscribeToLocalSignalStrengthChange")}realtimeUnsubscribeToLocalSignalStrengthChange(e){this.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(e),this.trace("realtimeUnsubscribeToLocalSignalStrengthChange")}realtimeSendDataMessage(e,t,i){this.realtimeController.realtimeSendDataMessage(e,t,i),this.trace("realtimeSendDataMessage")}realtimeSubscribeToReceiveDataMessage(e,t){this.realtimeController.realtimeSubscribeToReceiveDataMessage(e,t),this.trace("realtimeSubscribeToReceiveDataMessage")}realtimeUnsubscribeFromReceiveDataMessage(e){this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(e),this.trace("realtimeUnsubscribeFromReceiveDataMessage")}realtimeSubscribeToFatalError(e){this.realtimeController.realtimeSubscribeToFatalError(e),this.trace("realtimeSubscribeToFatalError")}realtimeUnsubscribeToFatalError(e){this.realtimeController.realtimeUnsubscribeToFatalError(e),this.trace("realtimeUnsubscribeToFatalError")}subscribeToActiveSpeakerDetector(e,t,i,n){this.audioVideoController.activeSpeakerDetector.subscribe(e,t,i,n),this.trace("subscribeToActiveSpeakerDetector")}unsubscribeFromActiveSpeakerDetector(e){this.audioVideoController.activeSpeakerDetector.unsubscribe(e),this.trace("unsubscribeFromActiveSpeakerDetector")}async listAudioInputDevices(e=!1){let t=await this.deviceController.listAudioInputDevices(e);return this.trace("listAudioInputDevices",e,t),t}async listVideoInputDevices(e=!1){let t=await this.deviceController.listVideoInputDevices(e);return this.trace("listVideoInputDevices",e,t),t}async listAudioOutputDevices(e=!1){let t=await this.deviceController.listAudioOutputDevices(e);return this.trace("listAudioOutputDevices",e,t),t}async startAudioInput(e){return this.trace("startAudioInput",e),this.deviceController.startAudioInput(e)}async stopAudioInput(){return this.trace("stopAudioInput"),this.deviceController.stopAudioInput()}async startVideoInput(e){return(0,n.isVideoTransformDevice)(e)?this.trace("startVideoInput with transform device"):this.trace("startVideoInput",e),this.deviceController.startVideoInput(e)}async stopVideoInput(){return this.trace("stopVideoInput"),this.deviceController.stopVideoInput()}chooseAudioOutput(e){let t=this.deviceController.chooseAudioOutput(e);return this.trace("chooseAudioOutput",e),t}addDeviceChangeObserver(e){this.deviceController.addDeviceChangeObserver(e),this.trace("addDeviceChangeObserver")}removeDeviceChangeObserver(e){this.deviceController.removeDeviceChangeObserver(e),this.trace("removeDeviceChangeObserver")}createAnalyserNodeForAudioInput(){let e=this.deviceController.createAnalyserNodeForAudioInput();return this.trace("createAnalyserNodeForAudioInput"),e}startVideoPreviewForVideoInput(e){this.deviceController.startVideoPreviewForVideoInput(e),this.trace("startVideoPreviewForVideoInput",e.id)}stopVideoPreviewForVideoInput(e){this.deviceController.stopVideoPreviewForVideoInput(e),this.trace("stopVideoPreviewForVideoInput",e.id)}setDeviceLabelTrigger(e){this.deviceController.setDeviceLabelTrigger(e),this.trace("setDeviceLabelTrigger")}mixIntoAudioInput(e){let t=this.deviceController.mixIntoAudioInput(e);return this.trace("mixIntoAudioInput",e.id),t}chooseVideoInputQuality(e,t,i){this.deviceController.chooseVideoInputQuality(e,t,i),this.trace("chooseVideoInputQuality",{width:e,height:t,frameRate:i})}setVideoMaxBandwidthKbps(e){this.audioVideoController.setVideoMaxBandwidthKbps(e),this.trace("setVideoMaxBandwidthKbps",e)}setVideoCodecSendPreferences(e){this.audioVideoController.setVideoCodecSendPreferences(e),this.trace("setVideoCodecSendPreferences",e)}getVideoInputQualitySettings(){let e=this.deviceController.getVideoInputQualitySettings();return this.trace("getVideoInputQualitySettings"),e}setContentAudioProfile(e){this.trace("setContentAudioProfile",e),this.contentShareController.setContentAudioProfile(e)}enableSimulcastForContentShare(e,t){this.trace("enableSimulcastForContentShare"),this.contentShareController.enableSimulcastForContentShare(e,t)}enableSVCForContentShare(e){this.trace("enableSVCForContentShare"),this.contentShareController.enableSVCForContentShare(e)}startContentShare(e){let t=this.contentShareController.startContentShare(e);return this.trace("startContentShare"),t}startContentShareFromScreenCapture(e,t){let i=this.contentShareController.startContentShareFromScreenCapture(e,t);return this.trace("startContentShareFromScreenCapture"),i}pauseContentShare(){this.contentShareController.pauseContentShare(),this.trace("pauseContentShare")}unpauseContentShare(){this.contentShareController.unpauseContentShare(),this.trace("unpauseContentShare")}stopContentShare(){this.contentShareController.stopContentShare(),this.trace("stopContentShare")}addContentShareObserver(e){this.contentShareController.addContentShareObserver(e),this.trace("addContentShareObserver")}
10removeContentShareObserver(e){this.contentShareController.removeContentShareObserver(e),this.trace("removeContentShareObserver")}setContentShareVideoCodecPreferences(e){this.contentShareController.setContentShareVideoCodecPreferences(e),this.trace("setContentShareVideoCodecPreferences")}trace(e,t,i){let n=this.audioVideoController.configuration.meetingId,r=this.audioVideoController.configuration.credentials.attendeeId,s=`API/DefaultAudioVideoFacade/${n}/${r}/${e}`;void 0!==t&&(s+=` ${JSON.stringify(t)}`),void 0!==i&&(s+=` -> ${JSON.stringify(i)}`),this.audioVideoController.logger.info(s)}getRemoteVideoSources(){let e=this.audioVideoController.getRemoteVideoSources();return this.trace("getRemoteVideoSources",null,e),e}get transcriptionController(){return this.realtimeController.transcriptionController}promoteToPrimaryMeeting(e){this.audioVideoController.removeObserver(this),this.audioVideoController.addObserver(this);let t=this.audioVideoController.promoteToPrimaryMeeting(e);return this.trace("promoteToPrimaryMeeting",null,t),t}demoteFromPrimaryMeeting(){this.trace("demoteFromPrimaryMeeting"),this.audioVideoController.demoteFromPrimaryMeeting()}audioVideoWasDemotedFromPrimaryMeeting(e){this.contentShareController.stopContentShare(),this.audioVideoController.removeObserver(this)}}t.default=r},49438:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(42340)),s=i(7754);class a extends r.default{constructor(e,t){super(e,t),this.blurCanvas=document.createElement("canvas"),this.blurCanvasCtx=this.blurCanvas.getContext("2d"),this.blurCanvas.width=this.spec.model.input.width,this.blurCanvas.height=this.spec.model.input.height,this.logger.info("Backgroun
10dBlur processor using builtin blur")}drawImageWithMask(e,t){let i=this.blurredImage,{canvasCtx:n,targetCanvas:r}=this,{width:s,height:a}=r;if(!t||!i){n.clearRect(0,0,s,a);return}this.scaledCanvas.getContext("2d").putImageData(t,0,0),this.blurCanvasCtx.putImageData(this.blurredImage,0,0),n.save(),n.clearRect(0,0,s,a),n.drawImage(this.scaledCanvas,0,0,s,a),n.globalCompositeOperation="source-in",n.drawImage(e,0,0,s,a),n.globalCompositeOperation="destination-over",n.drawImage(this.blurCanvas,0,0,s,a),n.restore()}setBlurStrength(e){if(super.setBlurStrength(e),this.worker){this.modelInitialized=!1,this.worker.postMessage({msg:"destroy"});let e=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:e.path,inputHeight:e.input.height,inputWidth:e.input.width,inputChannels:4,modelRangeMin:e.input.range[0],modelRangeMax:e.input.range[1],blurPixels:this.blurAmount}})}}setBlurPixels(){this.blurAmount=s.BlurStrengthMapper.getBlurAmount(this._blurStrength,{height:540}),this.logger.info(`background blur amount set to ${this.blurAmount}`)}handleInitialize(e){if(this.logger.info(`received initialize message: ${this.stringify(e)}`),!e.payload){this.logger.error("failed to initialize module"),this.initWorkerPromise.reject(Error("failed to initialize the module"));return}let t=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:t.path,inputHeight:t.input.height,inputWidth:t.input.width,inputChannels:4,modelRangeMin:t.input.range[0],modelRangeMax:t.input.range[1],blurPixels:this.blurAmount}}),this.initWorkerPromise.resolve({})}handlePredict(e){this.blurredImage=e.payload.blurOutput,super.handlePredict(e)}async destroy(){var e;super.destroy(),null===(e=this.blurCanvas)||void 0===e||e.remove(),this.blurCanvas=void 0}}t.default=a},42340:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(5853)),s=i(7754),a=n(i(49293));class o extends r.default{validateOptions(e){if(super.validateOptions(e),!e.blurStrength)throw Error("processor has null options - blurStrength")}constructor(e,t){super("background blur",e,t,new a.default),this.blurAmount=0,this.setBlurStrength(t.blurStrength),this.logger.info("Backgroun
10dBlur processor successfully created"),this.logger.info(`BackgroundBlur spec: ${this.stringify(this.spec)}`),this.logger.info(`BackgroundBlur options: { blurStrength: ${t.blurStrength}, filterCPUUtilization: ${t.filterCPUUtilization}, reportingPeriodMillis: ${t.reportingPeriodMillis}}`)}initOnFirstExecution(){this.setBlurPixels()}drawImageWithMask(e,t){t||(t=new ImageData(this.spec.model.input.width,this.spec.model.input.height)),this.scaledCanvas.getContext("2d").putImageData(t,0,0);let{canvasCtx:i,targetCanvas:n}=this,{width:r,height:s}=n;i.save(),i.clearRect(0,0,r,s),i.drawImage(this.scaledCanvas,0,0,r,s),i.globalCompositeOperation="source-in",i.drawImage(e,0,0,r,s),i.globalCompositeOperation="destination-over",i.filter=`blur(${this.blurAmount}px)`,i.drawImage(e,0,0,n.width,n.height),i.restore()}setBlurStrength(e){this._blurStrength=e,this.logger.info(`blur strength set to ${this._blurStrength}`),this.setBlurPixels()}setBlurPixels(){this.blurAmount=s.BlurStrengthMapper.getBlurAmount(this._blurStrength,{height:this.sourceHeight}),this.logger.info(`background blur amount set to ${this.blurAmount}`)}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}static async isSupported(){let e=document.createElement("canvas"),t=void 0!==e.getContext("2d").filter;return e.remove(),t}setEventController(e){this.eventController?this.eventController=e:(this.eventController=e,this.publishBackgroundFilterEvent())}publishBackgroundFilterEvent(){let e={backgroundBlurEnabled:"true",backgroundBlurStrength:this._blurStrength,backgroundReplacementEnabled:"false",backgroundFilterVersion:1};this.eventController.publishEvent("backgroundFilterConfigSelected",e)}}t.default=o},7754:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlurStrengthMapper=void 0;class i{static getBlurAmount(e,t){if(e<=0)throw Error(`invalid value for blur strength: ${e}`);return Math.round(e*t.height/this.BLUR_STRENGTH_DIVISOR)}}t.BlurStrengthMapper=i,i.BLUR_STRENGTH_DIVISOR=540,t.default={LOW:7,MEDIUM:15,HIGH:30}},48562:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(21238)),s=n(i(87594)),a=n(i(94618)),o=n(i(66642)),d=n(i(49438)),l=n(i(42340)),c=n(i(7754));class u extends o.default{setBlurStrength(){}async loadAssets(){}addObserver(){}removeObserver(){}}class h extends r.default{static async create(e,t){let i;e=h.resolveSpec(e);let{logger:n}=t=h.resolveOptions(t),r=await h.isSupported(e,t);return(n.info(`processor is ${r?"":"not"} supported`),r)?(await l.default.isSupported()?(n.info("Using browser-provided background blur"),i=new l.default(e,t)):(n.info("Using built-in background blur"),i=new d.default(e,t)),await i.loadAssets(),i):(n.warn("Using no-op processor because background blur is not supported"),new u)}static resolveOptions(e={}){let t={...e};return t.blurStrength||(t.blurStrength=c.default.MEDIUM),t.logger||(t.logger=new s.default("BackgroundBlurProcessor",a.default.INFO)),t=super.resolveOptions(t)}static isSupported(e,t){return e=h.resolveSpec(e),t=h.resolveOptions(t),super.isSupported(e,t)}}t.default=h},49293:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94383));class s extends r.default{}t.default=s},50838:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.path=null,this.input=null,this.output=null}static builder(){return new i}withDefaultModel(){return this.withSelfieSegmentationDefaults()}withSelfieSegmentationDefaults(){return this.path="https://static.sdkassets.chime.aws/bgblur/models/selfie_segmentation_landscape.tflite",this.input={height:144,width:256,range:[0,1],channels:3},this.output={height:144,width:256,range:[0,1],channels:1},this}withPath(e){return this.path=e,this}withInput(e){return this.input=e,this}withOutput(e){return this.output=e,this}validate(){if(!this.path)throw Error("model spec path is not set");if(!this.input)throw Error("model spec input is not set");if(!this.output)throw Error("model spec output is not set")}build(){return this.validate(),{path:this.path,input:this.input,output:this.output}}}t.default=i},57765:function(e,t){"use strict";
10Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n){this.delegate=e,this.reportingPeriodMillis=t,this.filterCPUUtilization=i,this.logger=n,this._processingFilter=!0,this.lastReportedEventTimestamp=0,this.lastFilterCompleteTimestamp=0,this.filterTotalMillis=0,this.filterCount=0,this.framerate=0,this.filterDurationNotifyMillis=0,this.setSegmentationDuration()}reportEvent(e){let t=e-this.lastReportedEventTimestamp;if(t>=this.reportingPeriodMillis){let i=this.filterCount,n=this.filterTotalMillis;if(this.filterCount=0,this.filterTotalMillis=0,this.lastReportedEventTimestamp=e,0===this.framerate||0===i)return;let r=Math.round(n/i),s=Math.round(this.framerate*(t/1e3))-i,a=Math.round(100*n/t);r>=this.filterDurationNotifyMillis&&this.delegate.filterFrameDurationHigh({framesDropped:s,avgFilterDurationMillis:r,framerate:this.framerate,periodMillis:t}),a>=this.filterCPUUtilization&&this.delegate.filterCPUUtilizationHigh({cpuUtilization:a,filterMillis:n,periodMillis:t})}}setSegmentationDuration(){this.filterDurationNotifyMillis=Math.round(1e3/this.framerate*.8)}frameReceived(e){e!==this.framerate&&(this.framerate=e,this.logger.info(`frame counter setting frame rate to ${this.framerate}`),this.setSegmentationDuration());let t=Date.now();this.reportEvent(t)}filterSubmitted(){this._processingFilter=!0,this.lastFilterCompleteTimestamp=Date.now()}filterComplete(){this.filterTotalMillis+=Date.now()-this.lastFilterCompleteTimestamp,this._processingFilter=!1,this.filterCount++}get processingSegment(){return this._processingFilter}}t.default=i},5853:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BackgroundFilterMonitor=void 0;let r=i(35908),s=n(i(16445)),a=n(i(57765));class o{constructor(){this.value=void 0,this.resolve=null}whenNext(){return this.promise||(this.promise=new Promise(e=>this.resolve=e)),this.promise}next(e){this.value=e,this.resolve(e),delete this.promise}}class d{static createWorkerPromise(){let e={resolve:null,reject:null,promise:null};return e.promise=new Promise((t,i)=>{e.resolve=t,e.reject=i}),e}validateSpec(e){if(!e)throw Error("processor has null spec");if(!e.model)throw Error("processor spec has null model");if(!e.paths)throw Error("processor spec has null paths")}validateOptions(e){if(!e)throw Error("processor has null options");if(!e.logger)throw Error("processor has null options - logger");if(!e.reportingPeriodMillis)throw Error("processor has null options - reportingPeriodMillis");if(!e.filterCPUUtilization)throw Error("processor has null options - filterCPUUtilization")}constructor(e,t,i,n,r){this.targetCanvas=document.createElement("canvas"),this.canvasCtx=this.targetCanvas.getContext("2d"),this.canvasVideoFrameBuffer=new s.default(this.targetCanvas),this.mask$=new o,this.sourceWidth=0,this.sourceHeight=0,this.frameNumber=0,this.videoFramesPerFilterUpdate=1,this.initWorkerPromise=d.createWorkerPromise(),this.loadModelPromise=d.createWorkerPromise(),this.modelInitialized=!1,this.destroyed=!1,this.filterType=e,this.validateSpec(t),this.validateOptions(i),this.spec=t,this.logger=i.logger,this.delegate=n,this.initCPUMonitor(i),this.eventController=r}initCPUMonitor(e){this.videoFramesPerFilterUpdate=1,this.frameCounter=new a.default(this.delegate,e.reportingPeriodMillis,e.filterCPUUtilization,this.logger),this.cpuMonitor=new l(5e3,{reduceCPUUtilization:()=>{this.updateVideoFramesPerFilterUpdate(Math.min(this.videoFramesPerFilterUpdate+1,10))},increaseCPUUtilization:()=>{this.updateVideoFramesPerFilterUpdate(Math.max(this.videoFramesPerFilterUpdate-1,1))}}),this.delegate.addObserver(this.cpuMonitor)}stringify(e){return JSON.stringify(e,null,2)}handleInitialize(e){if(this.logger.info(`received initialize message: ${this.stringify(e)}`),!e.payload){this.logger.error("failed to initialize module"),this.initWorkerPromise.reject(Error("failed to initialize the module"));return}let t=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:t.path,inputHeight:t.input.height,inputWidth:t.input.width,inputChannels:4,modelRangeMin:t.input.range[0],modelRangeMax:t.input.range[1],blurPixels:0}}),this.initWorkerPromise.resolve({})}handleLoadModel(e){if(this.logger.info(`received load model message: ${this.stringify(e)}`),2!==e.payload){this.logger.error("failed to load model! status: "+e.payload),this.loadModelPromise.reject(Error("failed to load model! status: "+e.payload));return}this.modelInitialized=!0,this.loadModelPromise.resolve({})}handlePredict(e){this.mask$.next(e.payload.output)}handleWorkerEvent(e){let t=e.data;switch(t.msg){case"initialize":this.handleInitialize(t);break;case"loadModel":this.handleLoadModel(t);break;case"predict":this.handlePredict(t);break;default:this.logger.info(`unexpected event msg: ${this.stringify(t)}`)}}async loadAssets(){this.logger.info("start initializing the processor");try{this.worker=await (0,r.loadWorker)(this.spec.paths.worker,"Backgroun
10dFilterWorker",{},null),this.worker.addEventListener("message",e=>this.handleWorkerEvent(e)),this.worker.postMessage({msg:"initialize",payload:{wasmPath:this.spec.paths.wasm,simdPath:this.spec.paths.simd}}),await this.initWorkerPromise.promise,this.logger.info(`successfully initialized the ${this.filterType} worker`),await this.loadModelPromise.promise,this.logger.info(`successfully loaded ${this.filterType} worker segmentation model`)}catch(e){throw Error(`could not initialize the ${this.filterType} video frame processor due to '${e.message}'`)}this.logger.info(`successfully initialized the ${this.filterType} processor`)}async process(e){if(this.destroyed)return e;this.frameCounter.frameReceived(e[0].framerate),this.cpuMonitor.frameReceived();let t=e[0].asCanvasElement();if(!t)return e;if(!this.modelInitialized)return e[0]=this.canvasVideoFrameBuffer,e;let i=t.width,n=t.height;if(0===i||0===n)return e;0===this.sourceWidth&&(this.sourceWidth=i,this.sourceHeight=n,this.targetCanvas.width=this.sourceWidth,this.targetCanvas.height=this.sourceHeight,this.logger.info(`${this.filterType} source width: ${this.sourceWidth}`),this.logger.info(`${this.filterType} source height: ${this.sourceHeight}`),this.initOnFirstExecution()),(this.sourceWidth!==i||this.sourceHeight!==n)&&(this.sourceWidth=i,this.sourceHeight=n,this.targetCanvas.width=this.sourceWidth,this.targetCanvas.height=this.sourceHeight);try{this.frameCounter.filterSubmitted();let e=this.mask$.value,i=this.spec.model.input.width/t.width,n=this.spec.model.input.height/t.height;void 0===this.scaledCanvas&&(this.scaledCanvas=document.createElement("canvas"),this.scaledCanvas.width=this.spec.model.input.width,this.scaledCanvas.height=this.spec.model.input.height);let r=this.scaledCanvas.getContext("2d");r.save(),r.scale(i,n),r.drawImage(t,0,0),r.restore();let s=r.getImageData(0,0,this.scaledCanvas.width,this.scaledCanvas.height);if(this.frameNumber%this.videoFramesPerFilterUpdate==0){let t=this.mask$.whenNext();this.worker.postMessage({msg:"predict",payload:s},[s.data.buffer]),e=await t}this.destroyed||this.drawImageWithMask(t,e)}catch(t){return this.logger.error(`could not process ${this.filterType} frame buffer due to ${t}`),e}finally{this.frameCounter.filterComplete(),this.frameNumber++}return e[0]=this.canvasVideoFrameBuffer,e}updateVideoFramesPerFilterUpdate(e){e!==this.videoFramesPerFilterUpdate&&(this.videoFramesPerFilterUpdate=e,this.logger.info(`Adjusting filter rate to compensate for CPU utilization. Filter rate is ${this.videoFramesPerFilterUpdate} video frames per filter.`))}async destroy(){var e,t,i,n;this.destroyed=!0,this.delegate.removeObserver(this.cpuMonitor),this.canvasVideoFrameBuffer.destroy(),null===(e=this.worker)||void 0===e||e.postMessage({msg:"destroy"}),null===(t=this.worker)||void 0===t||t.postMessage({msg:"stop"}),null===(i=this.targetCanvas)||void 0===i||i.remove(),this.targetCanvas=void 0,null===(n=this.scaledCanvas)||void 0===n||n.remove(),this.scaledCanvas=void 0,this.logger.info(`${this.filterType} frame process destroyed`)}}t.default=d;class l{constructor(e,t){this.monitoringPeriodMillis=e,this.observer=t,this.lastCPUChangeTimestamp=0}filterCPUUtilizationHigh(){let e=Date.now();e-this.lastCPUChangeTimestamp>=this.monitoringPeriodMillis&&(this.lastCPUChangeTimestamp=e,this.observer.reduceCPUUtilization())}frameReceived(){let e=Date.now();e-this.lastCPUChangeTimestamp>=2*this.monitoringPeriodMillis&&(this.lastCPUChangeTimestamp=e,this.observer.increaseCPUUtilization())}}t.BackgroundFilterMonitor=l},21238:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(35908),s=i(30589),a=n(i(50838)),o=n(i(12340)),d=n(i(61492)),l=()=>a.default.builder().withSelfieSegmentationDefaults().build(),c="https://static.sdkassets.chime.aws",u={worker:`${c}/bgblur/workers/worker.js`,wasm:`${c}/bgblur/wasm/_cwt-wasm.wasm`,simd:`${c}/bgblur/wasm/_cwt-wasm-simd.wasm`};class h{static defaultAssetSpec(){let e=d.default.sdkVersionSemVer;return{assetGroup:`sdk-${e.major}.${e.minor}`}}static createUrlWithParams(e,t){let i=new URL(e);for(let e of Object.keys(t))void 0!==t[e]&&i.searchParams.set(e,t[e]);return i.toString()}static resolveSpec(e){let{paths:t=u,model:i=l(),assetGroup:n=this.defaultAssetSpec().assetGroup,revisionID:r=this.defaultAssetSpec().revisionID}=e||{}
10,s={assetGroup:n,revisionID:r,sdk:encodeURIComponent(d.default.sdkVersion),ua:encodeURIComponent(d.default.sdkUserAgentLowResolution)};return t.worker=this.createUrlWithParams(t.worker,s),t.wasm=this.createUrlWithParams(t.wasm,s),t.simd=this.createUrlWithParams(t.simd,s),i.path=this.createUrlWithParams(i.path,s),{paths:t,model:i,assetGroup:n,revisionID:r}}static resolveOptions(e){return e.reportingPeriodMillis||(e.reportingPeriodMillis=1e3),e.filterCPUUtilization?(e.filterCPUUtilization<0||e.filterCPUUtilization>100)&&(e.logger.warn("filterCPUUtilization must be set to a range between 0 and 100 percent. Falling back to default of 30 percent"),e.filterCPUUtilization=30):e.filterCPUUtilization=30,e}static isSupported(e,t){let{logger:i}=t;return"undefined"==typeof globalThis?(i.info("Browser does not have globalThis."),Promise.resolve(!1)):new o.default().supportsBackgroundFilter()?(0,s.supportsWASM)(globalThis,i)?this.supportsBackgroundFilter(globalThis,e,i):(i.info("Browser does not support WASM."),Promise.resolve(!1)):(i.info("Browser is not supported."),Promise.resolve(!1))}static async supportsBackgroundFilter(e=globalThis,t,i){if(!(0,s.supportsWorker)(e,i))return i.info("Browser does not support web workers."),!1;let n=t.paths.worker;try{let e=await (0,r.loadWorker)(n,"BackgroundFilterWorker",{},null);try{e.terminate()}catch(e){i.info(`Failed to terminate worker. ${e.message}`)}return!0}catch(e){return i.info(`Failed to fetch and instantiate test worker ${e.message}`),!1}}}t.default=h},94383:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.observers=new Set}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}filterFrameDurationHigh(e){var t;for(let i of this.observers)null===(t=i.filterFrameDurationHigh)||void 0===t||t.call(i,e)}filterCPUUtilizationHigh(e){var t;for(let i of this.observers)null===(t=i.filterCPUUtilizationHigh)||void 0===t||t.call(i,e)}}t.default=i},84414:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(5853)),s=n(i(35303));class a extends r.default{constructor(e,t){super("background replacement",e,t,new s.default),this.replacementBlob=t.imageBlob,this.logger.info("Backgroun
10dReplacement processor successfully created"),this.logger.info(`BackgroundReplacement spec: ${this.stringify(this.spec)}`),this.logger.info(`BackgroundReplacement options: { filterCPUUtilization: ${t.filterCPUUtilization}, reportingPeriodMillis: ${t.reportingPeriodMillis}}`)}async setImageBlob(e){this.replacementBlob=e,this.replacementImage=await a.loadImage(this.createReplacementObjectUrl())}initOnFirstExecution(){}drawImageWithMask(e,t){t||(t=new ImageData(this.spec.model.input.width,this.spec.model.input.height)),this.scaledCanvas.getContext("2d").putImageData(t,0,0);let{canvasCtx:i,targetCanvas:n}=this,{width:r,height:s}=n;i.save(),i.clearRect(0,0,r,s),i.drawImage(this.scaledCanvas,0,0,r,s),i.globalCompositeOperation="source-in",i.drawImage(e,0,0,r,s),i.globalCompositeOperation="destination-over",i.drawImage(this.replacementImage,0,0,n.width,n.height),i.restore()}static loadImageExecutor(e,t,i){let n=new Image;n.crossOrigin="Anonymous",n.addEventListener("load",()=>{e(n)},!1),n.addEventListener("error",e=>{t(Error(`Could not load replacement image ${n.src}: ${e.message}`))},!1),n.src=i}static async loadImage(e){return new Promise((t,i)=>this.loadImageExecutor(t,i,e))}revokeReplacementObjectUrl(){this.replacementObjectUrl&&URL.revokeObjectURL(this.replacementObjectUrl)}createReplacementObjectUrl(){return this.revokeReplacementObjectUrl(),this.replacementObjectUrl=URL.createObjectURL(this.replacementBlob),this.replacementObjectUrl}async loadAssets(){this.replacementImage=await a.loadImage(this.createReplacementObjectUrl()),super.loadAssets()}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}async destroy(){super.destroy(),this.revokeReplacementObjectUrl()}setEventController(e){this.eventController?this.eventController=e:(this.eventController=e,this.publishBackgroundFilterEvent())}publishBackgroundFilterEvent(){this.eventController.publishEvent("backgroundFilterConfigSelected",{backgroundBlurEnabled:"false",backgroundBlurStrength:"low",backgroundReplacementEnabled:"true",backgroundFilterVersion:1})}}t.default=a},82226:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(21238)),s=n(i(87594)),a=n(i(94618)),o=n(i(66642)),d=n(i(84414));class l extends o.default{async loadAssets(){}addObserver(){}removeObserver(){}async setImageBlob(){}}class c extends r.default{static async create(e,t){e=this.resolveSpec(e),t=this.resolveOptions(t),await this.resolveOptionsAsync(t);let{logger:i}=t;if(!await c.isSupported(e,t))return i.warn("Using no-op processor because background replacement is not supported"),new l;i.info("Using background replacement filter");let n=new d.default(e,t);return await n.loadAssets(),n}static resolveOptions(e={}){let t={...e};return t.logger||(t.logger=new s.default("BackgroundReplacementProcessor",a.default.INFO)),super.resolveOptions(t)}static async resolveOptionsAsync(e){if(!e.imageBlob){let t=document.createElement("canvas");t.width=100,t.height=100;let i=t.getContext("2d");i.fillStyle="blue",i.fillRect(0,0,100,100);let n=await new Promise(e=>{t.toBlob(e)});e.imageBlob=n}}static async isSupported(e,t){e=this.resolveSpec(e),t=this.resolveOptions(t),await this.resolveOptionsAsync(t);let i=t.imageBlob,n=URL.createObjectURL(i);try{await d.default.loadImage(n)}catch(e){return t.logger.info(`Failed to fetch load replacement image ${e.message}`),!1}finally{URL.revokeObjectURL(n)}return super.isSupported(e,t)}}t.default=c},35303:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94383));class s extends r.default{}t.default=s},28379:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(61492));class s{constructor(e){this.logger=e,this.loadPromise=null}async load(){return window.BackgroundSegmentationProcessor?(this.logger.info("[Backgroun
10dSegmentationAssetLoader] BackgroundSegmentationVideoFrameProcessor already loaded, skipping"),0):(this.loadPromise||(this.loadPromise=this.doLoad().catch(e=>{throw this.loadPromise=null,e})),this.loadPromise)}async doLoad(){let e=new URL("https://static.sdkassets.chime.aws/background_segmentation/otherassets/background-segmentation-processor.js"),t=r.default.sdkVersionSemVer;e.searchParams.set("sdkVersion",`sdk-${t.major}.${t.minor}`);let i=e.toString();this.logger.info(`[BackgroundSegmentationAssetLoader] Loading CDN asset from ${i}`);let n=performance.now();await new Promise((e,t)=>{let n=document.createElement("script");n.src=i,n.crossOrigin="anonymous",n.onload=()=>{e()},n.onerror=()=>{n.remove(),t(Error(`Failed to load processor script: ${i}`))},document.head.appendChild(n)});let s=performance.now()-n;if(!window.BackgroundSegmentationProcessor)throw this.logger.error("[BackgroundSegmentationAssetLoader] BackgroundSegmentationVideoFrameProcessor not found on window object"),Error("Processor script loaded but BackgroundSegmentationVideoFrameProcessor not found on window");return this.logger.info(`[BackgroundSegmentationAssetLoader] CDN asset loading completed successfully in ${s.toFixed(2)}ms`),s}}t.default=s},62478:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{static checkCompatibility(e){let t=Object.entries({webgl2:this.hasWebGL2Support(e),webWorkers:this.hasWebWorkerSupport(),webAssembly:this.hasWebAssemblySupport(),offscreenCanvas:this.hasOffscreenCanvasSupport(e)}).filter(([e,t])=>!t).map(([e,t])=>e),i=0===t.length;return e.info(`[BackgroundSegmentationCompatibilityChecker] Compatibility: ${i}, missing: [${t.join(", ")}]`),{isCompatible:i,missingFeatures:t}}static hasWebGL2Support(e){try{let e=document.createElement("canvas").getContext("webgl2"),t=null!==e;if(t){let t=e.getExtension("WEBGL_lose_context");t&&t.loseContext()}return t}catch(t){return e.error(`[BackgroundSegmentationCompatibilityChecker] WebGL2 check error: ${t}`),!1}}static hasWebWorkerSupport(){return"undefined"!=typeof Worker}static hasWebAssemblySupport(){return"undefined"!=typeof WebAssembly}static hasOffscreenCanvasSupport(e){if("undefined"!=typeof OffscreenCanvas)try{let e=new OffscreenCanvas(1,1).getContext("2d");return null!==e}catch(t){e.warn(`[BackgroundSegmentationCompatibilityChecker] OffscreenCanvas instantiation error: ${t}`)}return!1}}t.default=i},43781:function(e,t){"use strict";var i,n,r,s,a,o;Object.defineProperty(t,"__esModule",{value:!0}
10),t.ModelType=t.BlurStrength=t.ProcessorEffect=void 0,(s=i||(t.ProcessorEffect=i={})).BLUR="blur",s.IMAGE_REPLACEMENT="image-replacement",s.COLOR_REPLACEMENT="color-replacement",(a=n||(t.BlurStrength=n={})).NONE="none",a.LOW="low",a.MEDIUM="medium",a.HIGH="high",(o=r||(t.ModelType=r={})).SELFIE_GENERAL="selfie_general",o.SELFIE_MULTICLASS="selfie_multiclass"},98846:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.BackgroundSegmentationInitializationStatus=void 0,(n=i||(t.BackgroundSegmentationInitializationStatus=i={}))[n.SUCCESS=0]="SUCCESS",n[n.ASSET_LOADING_FAILURE=1]="ASSET_LOADING_FAILURE",n[n.COMPATIBILITY_FAILURE=2]="COMPATIBILITY_FAILURE",n[n.PROCESSOR_CREATION_FAILURE=3]="PROCESSOR_CREATION_FAILURE";class r{constructor(e,t){this.logger=e,this.bufferedMetrics=[],this._initializationStatus=i.SUCCESS,this.metricsCollector=t}setMetricsCollector(e){this.metricsCollector=e,this.flushBufferedMetrics()}flushBufferedMetrics(){if(0===this.bufferedMetrics.length)return;this.logger.info(`[BackgroundSegmentationMetrics] Flushing ${this.bufferedMetrics.length} buffered metrics`);let e=[...this.bufferedMetrics];this.bufferedMetrics=[],e.forEach(e=>{this.sendToCollector(e)})}reportCompatibilityCheck(e){e||(this._initializationStatus=i.COMPATIBILITY_FAILURE)}reportAssetLoadingResult(e,t){e&&this._initializationStatus===i.SUCCESS&&(this._initializationStatus=i.ASSET_LOADING_FAILURE),this._assetLoadingTimeMs=t}reportProcessorError(){this._initializationStatus===i.SUCCESS&&(this._initializationStatus=i.PROCESSOR_CREATION_FAILURE)}emitInitializationMetrics(){let e={initializationStatus:this._initializationStatus,assetLoadingTimeMs:this._assetLoadingTimeMs};this.sendToCollector(e)}reportProcessorMetrics(e){if(this.metricsCollector)try{this.metricsCollector.backgroundSegmentationProcessorMetricsDidReceive(e)}catch(e){this.logger.warn(`[BackgroundSegmentationMetrics] Failed to send processor metrics to collector: ${e}`)}}sendToCollector(e){if(!this.metricsCollector){this.bufferedMetrics.length>=r.MAX_BUFFERED_METRICS&&this.bufferedMetrics.shift(),this.bufferedMetrics.push(e);return}try{this.metricsCollector.backgroundSegmentationInitializationMetricsDidReceive(e)}catch(e){this.logger.warn(`[BackgroundSegmentationMetrics] Failed to send initialization metric to collector: ${e}`)}}}r.MAX_BUFFERED_METRICS=100,t.default=r},27956:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(28379)),s=n(i(62478)),a=i(43781),o=n(i(98846));class d{constructor(e,t,i,n){this.logger=e,this.cdnProcessor=t,this.metrics=i,this.eventController=n}static async create(e,t,i=a.ModelType.SELFIE_GENERAL,n,l,c){let u=new o.default(e,c);e.info(`[BackgroundSegmentationVideoFrameProcessor] Creating processor: model=${i}, effect=${t.type}`);let h=s.default.checkCompatibility(e);if(u.reportCompatibilityCheck(h.isCompatible),!h.isCompatible)return e.warn(`[BackgroundSegmentationVideoFrameProcessor] Browser not compatible, missing: [${h.missingFeatures.join(", ")}]`),u.reportAssetLoadingResult(`Missing features: ${h.missingFeatures.join(", ")}`),d.publishFilterFailedEvent(l,"compatibility-check-failed",`Missing features: ${h.missingFeatures.join(", ")}`).catch(t=>e.error(`[BackgroundSegmentationVideoFrameProcessor] Failed to publish error event: ${t}`)),u.emitInitializationMetrics(),new d(e,null,u,l);let f=navigator.deviceMemory,m=navigator.hardwareConcurrency;e.info(`[BackgroundSegmentationVideoFrameProcessor] Device resources: memory=${f||"unknown"}GB, cores=${m||"unknown"}`);try{let t=new r.default(e),i=await t.load();e.info(`[BackgroundSegmentationVideoFrameProcessor] CDN assets loaded in ${i.toFixed(2)}ms`),u.reportAssetLoadingResult(void 0,i)}catch(i){let t=i instanceof Error?i.message:String(i);return e.error(`[BackgroundSegmentationVideoFrameProcessor] ✗ Failed to load CDN assets: ${t}`),u.reportAssetLoadingResult(t),d.publishFilterFailedEvent(l,"cdn-loading-failed",t).catch(t=>e.error(`[BackgroundSegmentationVideoFrameProcessor] Failed to publish error event: ${t}
10`)),e.warn("[BackgroundSegmentationVideoFrameProcessor] Falling back to no-op processor"),u.emitInitializationMetrics(),new d(e,null,u,l)}try{let r=window.BackgroundSegmentationProcessor;if(!r)throw Error("Processor script loaded but BackgroundSegmentationProcessor not found on window");let s=await r.create(t,i,n);e.info(`[BackgroundSegmentationVideoFrameProcessor] ✓ Successfully created BackgroundSegmentationProcessor from CDN`);let a=new d(e,s,u,l);return a.subscribeToProcessorMetrics(),l&&await a.publishProcessorConfigEvent("backgroundFilterStarted",t),u.emitInitializationMetrics(),a}catch(i){let t=i instanceof Error?i.message:String(i);return e.error(`[BackgroundSegmentationVideoFrameProcessor] ✗ Failed to create BackgroundSegmentationProcessor: ${t}`),u.reportProcessorError(),d.publishFilterFailedEvent(l,"processor-creation-failed",t).catch(t=>e.error(`[BackgroundSegmentationVideoFrameProcessor] Failed to publish error event: ${t}`)),e.warn("[BackgroundSegmentationVideoFrameProcessor] Falling back to no-op processor"),u.emitInitializationMetrics(),new d(e,null,u,l)}}async process(e){if(!this.cdnProcessor)return e;try{return await this.cdnProcessor.process(e)}catch(i){let t=i instanceof Error?i.message:String(i);return this.logger.error(`[BackgroundSegmentationVideoFrameProcessor] Processing error: ${t}`),e}}async destroy(){if(this.cdnProcessor)try{await this.cdnProcessor.destroy()}finally{this.cdnProcessor=null}}getConfig(){var e;return null===(e=this.cdnProcessor)||void 0===e?void 0:e.getConfig()}setConfig(e){if(this.cdnProcessor)try{this.cdnProcessor.setConfig(e),this.eventController&&this.publishProcessorConfigEvent("backgroundFilterConfigSelected",e).catch(e=>this.logger.error(`[BackgroundSegmentationVideoFrameProcessor] Failed to publish config changed event: ${e}`))}catch(t){let e=t instanceof Error?t.message:String(t);this.logger.error(`[BackgroundSegmentationVideoFrameProcessor] setConfig error: ${e}`)}}getModelType(){var e;return null===(e=this.cdnProcessor)||void 0===e?void 0:e.getModelType()}setModelType(e){this.cdnProcessor&&this.cdnProcessor.setModelType(e)}getMaxCPUUsagePercentage(){var e;return null===(e=this.cdnProcessor)||void 0===e?void 0:e.getMaxCPUUsagePercentage()}setMaxCPUUsagePercentage(e){var t;null===(t=this.cdnProcessor)||void 0===t||t.setMaxCPUUsagePercentage(e)}setEventController(e){if(this.eventController=e,this.cdnProcessor){let e=this.getConfig();e&&this.publishProcessorConfigEvent("backgroundFilterStarted",e).catch(e=>this.logger.error(`[BackgroundSegmentationVideoFrameProcessor] Failed to publish started event: ${e}`))}}setMetricsCollector(e){this.metrics.setMetricsCollector(e)}subscribeToProcessorMetrics(){this.cdnProcessor&&"function"==typeof this.cdnProcessor.addMetricsObserver&&this.cdnProcessor.addMetricsObserver({metricsDidReceive:e=>{var t,i,n,r,s,a,o,d,l;let c={segmentationDurationMs:null!==(t=e.segmentationDurationMs)&&void 0!==t?t:0,effectRenderDurationMs:null!==(i=e.effectRenderDurationMs)&&void 0!==i?i:0,framesPerSegmentation:null!==(n=e.framesPerSegmentation)&&void 0!==n?n:0,framesSubmitted:null!==(r=e.framesSubmitted)&&void 0!==r?r:0,framesSegmented:null!==(s=e.framesSegmented)&&void 0!==s?s:0,estimatedCPUUsagePercentage:null!==(a=e.estimatedCPUUsagePercentage)&&void 0!==a?a:0,modelType:String(null!==(o=e.modelType)&&void 0!==o?o:"unknown"),delegateType:String(null!==(d=e.delegateType)&&void 0!==d?d:"unknown"),errorCount:null!==(l=e.errorCount)&&void 0!==l?l:0};void 0!==e.initializationDurationMs&&(c.initializationDurationMs=e.initializationDurationMs),void 0!==e.initializationFailure&&(c.initializationFailure=e.initializationFailure),this.metrics.reportProcessorMetrics(c)}})}async publishProcessorConfigEvent(e,t){if(!this.eventController)return;
10let i={backgroundBlurEnabled:(t.type===a.ProcessorEffect.BLUR).toString(),backgroundBlurStrength:t.type===a.ProcessorEffect.BLUR?this.getConfig().blurStrength:a.BlurStrength.NONE,backgroundReplacementEnabled:(t.type===a.ProcessorEffect.IMAGE_REPLACEMENT||t.type===a.ProcessorEffect.COLOR_REPLACEMENT).toString(),backgroundFilterVersion:3,backgroundFilterModelType:this.getModelType(),backgroundFilterEffectType:t.type};await this.eventController.publishEvent(e,i)}static async publishFilterFailedEvent(e,t,i){e&&await e.publishEvent("backgroundFilterFailed",{backgroundFilterVersion:3,backgroundFilterErrorType:t,backgroundFilterErrorMessage:i})}}t.default=d},4494:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i){this.fixedWaitMs=e,this.shortBackoffMs=t,this.longBackoffMs=i,this.currentRetry=0,this.fixedWaitMs<0&&(this.fixedWaitMs=0),this.shortBackoffMs<0&&(this.shortBackoffMs=0),this.longBackoffMs<0&&(this.longBackoffMs=0),this.reset()}reset(){this.currentRetry=0}nextBackoffAmountMs(){let e=Math.random()*Math.min(this.longBackoffMs,this.shortBackoffMs*Math.pow(2,this.currentRetry))+this.fixedWaitMs;return this.currentRetry+=1,e}}t.default=i},1571:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(4494)),s=n(i(56985));class a{constructor(e,t,i){this.fixedWaitMs=e,this.shortBackoffMs=t,this.longBackoffMs=i}create(){return new r.default(this.fixedWaitMs,this.shortBackoffMs,this.longBackoffMs)}createWithLimit(e){return new s.default(this.fixedWaitMs,this.shortBackoffMs,this.longBackoffMs,e)}}t.default=a},56985:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(4494));class s extends r.default{constructor(e,t,i,n){super(e,t,i),this.limit=n,this.attempts=0}nextBackoffAmountMs(){if(this.attempts++,this.attempts>this.limit)throw Error("retry limit exceeded");return super.nextBackoffAmountMs()}}t.default=s},12340:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(54924),s=n(i(19202)),a=n(i(50794)),o=i(93002);class d{constructor(e){this.FALLBACK_BROWSER={type:"browser",name:"unknown",version:"unknown",os:"unknown"},this.browser=(0,r.detect)()||this.FALLBACK_BROWSER,this.browserSupport={chrome:78,"edge-chromium":79,electron:7,firefox:75,ios:13,safari:13,opera:66,samsung:12,crios:86,fxios:23,"ios-webview":605,"chromium-webview":92},this.browserName={chrome:"Google Chrome","edge-chromium":"Microsoft Edge",electron:"Electron",firefox:"Mozilla Firefox",ios:"Safari iOS",safari:"Safari",opera:"Opera",samsung:"Samsung Internet",crios:"Chrome iOS",fxios:"Firefox iOS","ios-webview":"WKWebView iOS","chromium-webview":"Chrome WebView"},this.chromeLike=["chrome","edge-chromium","chromium-webview","opera","samsung"],this.webkitBrowsers=["crios","fxios","safari","ios","ios-webview","edge-ios"],this.userAgentParser=null!=e?e:new a.default(new s.default)}version(){let e=this.userAgentParser.getParserResult().browserVersion;return e===o.USER_AGENT_PARSER_UNAVAILABLE?"":e}majorVersion(){return parseInt(this.userAgentParser.getParserResult().browserMajorVersion)}osMajorVersion(){return parseInt(this.osVersion().split(".")[0])}deviceName(){let e=this.userAgentParser.getParserResult().deviceName;return e===o.USER_AGENT_PARSER_UNAVAILABLE?"":e}osName(){let e=this.userAgentParser.getParserResult().osName;return e===o.USER_AGENT_PARSER_UNAVAILABLE?"":e}osVersion(){let e=this.userAgentParser.getParserResult().osVersion;return e===o.USER_AGENT_PARSER_UNAVAILABLE?"":e}engine(){var e;return null!==(e=this.userAgentParser.getParserResult().engineName)&&void 0!==e?e:""}engineMajorVersion(){var e;return parseInt(null!==(e=this.userAgentParser.getParserResult().engineMajorVersion)&&void 0!==e?e:"0")}name(){return this.browser.name}hasChromiumWebRTC(){for(let e of this.chromeLike)if(e===this.browser.name)return!0;return!1}hasWebKitWebRTC(){for(let e of this.webkitBrowsers)if(e===this.browser.name)return!0;return!1}hasFirefoxWebRTC(){return this.isFirefox()}requiresPlaybackLatencyHintForAudioContext(){return -1!==navigator.userAgent.indexOf("Windows")}supportsCanvasCapturedStreamPlayback(){return!this.isIOSSafari()&&!this.isIOSChrome()&&!this.isIOSFirefox()&&!this.isIOSEdge()||this.isIOSSafari()&&this.majorVersion()>=d.MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK||this.majorVersion()>=d.MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK}
10supportsBackgroundFilter(){return!!(("safari"!==this.name()||15!==this.majorVersion())&&this.supportsCanvasCapturedStreamPlayback())}supportsVideoLayersAllocationRtpHeaderExtension(){return this.hasChromiumWebRTC()}supportsDependencyDescriptorRtpHeaderExtension(){return this.hasChromiumWebRTC()}supportsScalableVideoCoding(){return this.hasChromiumWebRTC()&&"Blink"===this.engine()&&this.engineMajorVersion()>=111}supportsAudioRedundancy(){return this.hasChromiumWebRTC()?this.engineMajorVersion()>=107:!this.hasFirefoxWebRTC()}requiresResolutionAlignment(e,t){return this.isAndroid()&&this.isPixel3()?[64*Math.ceil(e/64),64*Math.ceil(t/64)]:[e,t]}requiresCheckForSdpConnectionAttributes(){return!this.isIOSSafari()&&!this.isIOSChrome()&&!this.isIOSFirefox()}requiresIceCandidateGatheringTimeoutWorkaround(){return this.hasChromiumWebRTC()}requiresBundlePolicy(){return"max-bundle"}requiresNoExactMediaStreamConstraints(){return this.isSamsungInternet()}requiresGroupIdMediaStreamConstraints(){return this.isSamsungInternet()}getDisplayMediaAudioCaptureSupport(){return this.isChrome()||this.isEdge()}doesNotSupportMediaDeviceLabels(){return"chromium-webview"===this.browser.name}isSupported(){return!(!this.browserSupport[this.browser.name]||this.majorVersion()<this.browserSupport[this.browser.name]||"firefox"===this.browser.name&&this.isAndroid())}isSimulcastSupported(){return this.hasChromiumWebRTC()}supportDownlinkBandwidthEstimation(){return!this.isFirefox()}supportString(){if(this.isAndroid())return`${this.browserName.chrome} ${this.browserSupport.chrome}+, ${this.browserName.samsung} ${this.browserSupport.samsung}+`;let e=[];for(let t in this.browserSupport)e.push(`${this.browserName[t]} ${this.browserSupport[t]}+`);return e.join(", ")}async supportedVideoCodecs(){let e=new RTCPeerConnection;return e.addTransceiver("video",{direction:"inactive",streams:[]}),(await e.createOffer({offerToReceiveVideo:!0})).sdp.split("\r\n").filter(e=>e.includes("a=rtpmap:")).map(e=>e.replace(/.* /,"").replace(/\/.*/,"")).filter((e,t,i)=>i.indexOf(e)===t).filter(e=>"rtx"!==e&&"red"!==e&&"ulpfec"!==e)}supportsSetSinkId(){return"setSinkId"in HTMLAudioElement.prototype}disableResolutionScaleDown(){return this.isAndroid()}disable480pResolutionScaleDown(){return/( Chrome\/98\.)/i.test(navigator.userAgent)&&this.browser.os.startsWith("Windows")}requiresDisablingH264Encoding(){return this.isIOS()&&("15.1.0"===this.version()||"15.1"===this.version()||/( OS 15_1)/i.test(navigator.userAgent))}requiresVideoPlayWorkaround(){return this.isSafari()}requiresAudioContextResetOnDeviceFailureForWebAudio(){return this.isIOS()}isVideoFxSupportedBrowser(){return this.supportsBackgroundFilter()}async updateWithHighEntropyValues(e=!1){var t,i;await (null===(i=(t=this.userAgentParser).updateWithHighEntropyValues)||void 0===i?void 0:i.call(t,e))}isIOSSafari(){return"ios"===this.browser.name||"ios-webview"===this.browser.name||"safari"===this.browser.name&&/( Mac )/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1}isSafari(){return"safari"===this.browser.name||this.isIOSSafari()}isFirefox(){return"firefox"===this.browser.name}isIOSFirefox(){return"fxios"===this.browser.name}isIOSChrome(){return"crios"===this.browser.name}isChrome(){return"chrome"===this.browser.name}isEdge(){return"edge-chromium"===this.browser.name}isIOSEdge(){return"edge-ios"===this.browser.name}isSamsungInternet(){return"samsung"===this.browser.name}isAndroid(){return/(android)/i.test(navigator.userAgent)}isPixel3(){return/( pixel 3)/i.test(navigator.userAgent)}isIOS(){return this.isIOSSafari()||this.isIOSChrome()||this.isIOSFirefox()}}d.MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK=16,d.MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK=106,t.default=d},14388:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(8283),s=n(i(87911)),a=n(i(40372)),o=n(i(85981));class d{constructor(e,t,i){this.logger=e,this.videoStreamIndex=t,this.selfAttendeeId=i,this.globalMetricReport=new o.default,this.streamMetricReports={},this.rtcStatsReport={},this.customStatsReports=[],this.currentTimestampMs=0,this.previousTimestampMs=0,this.currentSsrcs={},this.overriddenObservableMetrics=new Map,this.identityValue=(e,t)=>
10Number((t?this.streamMetricReports[t]:this.globalMetricReport).currentMetrics[e]),this.decoderLossPercent=(e,t)=>{let i=this.streamMetricReports[t],n=i.currentMetrics.concealedSamples-(i.previousMetrics.concealedSamples||0),r=i.currentMetrics.totalSamplesReceived-(i.previousMetrics.totalSamplesReceived||0);return r<=0?0:r-n<=0?0:n/r*100},this.packetLossPercent=(e,t)=>{let i=this.streamMetricReports[t],n=i.currentMetrics[e]-(i.previousMetrics[e]||0),r=i.currentMetrics.packetsLost-(i.previousMetrics.packetsLost||0),s=n+r;return s<=0||r<=0?0:100*r/s},this.jitterBufferMs=(e,t)=>{let i=this.streamMetricReports[t],n=i.currentMetrics.jitterBufferDelay-(i.previousMetrics.jitterBufferDelay||0),r=i.currentMetrics.jitterBufferEmittedCount-(i.previousMetrics.jitterBufferEmittedCount||0);return n<=0||r<=0?0:n/r*1e3},this.countPerSecond=(e,t)=>{let i=t?this.streamMetricReports[t]:this.globalMetricReport,n=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(n<=0)return 0;this.previousTimestampMs<=0&&(n=1);let r=i.currentMetrics[e]-(i.previousMetrics[e]||0);return r<=0?0:Math.trunc(r/n)},this.bitsPerSecond=(e,t)=>{let i=t?this.streamMetricReports[t]:this.globalMetricReport,n=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(n<=0)return 0;this.previousTimestampMs<=0&&(n=1);let r=(i.currentMetrics[e]-(i.previousMetrics[e]||0))*8;return r<=0?0:Math.trunc(r/n)},this.secondsToMilliseconds=(e,t)=>Number(1e3*(t?this.streamMetricReports[t]:this.globalMetricReport).currentMetrics[e]),this.averageTimeSpentPerSecondInMilliseconds=(e,t)=>{let i=t?this.streamMetricReports[t]:this.globalMetricReport,n=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(n<=0)return 0;this.previousTimestampMs<=0&&(n=1);let r=i.currentMetrics[e]-(i.previousMetrics[e]||0);return r<=0?0:1e3*r/n},this.averageCpuQualityLimitationDurationPerSecondInMilliseconds=(e,t)=>{let i=this.streamMetricReports[t];if(void 0===i.previousObjectMetrics[e]||void 0===i.currentObjectMetrics[e])return NaN;let n=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(n<=0)return 0;this.previousTimestampMs<=0&&(n=1);let r=0,s=0;for(let[t,n]of Object.entries(i.previousObjectMetrics[e]))"cpu"===t&&(r=n);for(let[t,n]of Object.entries(i.currentObjectMetrics[e]))"cpu"===t&&(s=n);let a=s-r;return a<=0?0:1e3*a/n},this.isHardwareImplementation=(e,t)=>{let i=this.streamMetricReports[t];if(void 0===i.currentStringMetrics[e])return NaN;let n=String(i.currentStringMetrics[e]),r=n.includes("ExternalDecoder")||n.includes("ExternalEncoder")||n.includes("EncodeAccelerator")||n.includes("DecodeAccelerator"),s=n.includes("fallback from");return r&&!s?1:0},this.globalMetricMap={retransmittedBytesSent:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_RETRANSMIT_BITRATE},totalEncodedBytesTarget:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_TARGET_ENCODER_BITRATE},totalPacketSendDelay:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BUCKET_DELAY_MS},packetsDiscardedOnSend:{transform:this.countPerSecond,type:r.SdkMetric.Type.SOCKET_DISCARDED_PPS},availableIncomingBitrate:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH},availableOutgoingBitrate:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH},currentRoundTripTime:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.STUN_RTT_MS},audioLevel:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_MIC_AUDIO_LEVEL,source:"audioLevel"}},this.audioUpstreamMetricMap={jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.RTC_MIC_JITTER_MS},packetsSent:{transform:this.countPerSecond,type:r.SdkMetric.Type.RTC_MIC_PPS},bytesSent:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.RTC_MIC_BITRATE},roundTripTime:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.RTC_MIC_RTT_MS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.RTC_MIC_FRACTION_PACKET_LOST_PERCENT,source:"packetsSent"},audioSentTransformPps:{transform:this.countPerSecond,type:r.SdkMetric.Type.AUDIO_SENT_TRANSFORM_PPS}},this.audioDownstreamMetricMap={concealedSamples:{transform:this.countPerSecond},totalSamplesReceived:{transform:this.countPerSecond},decoderLoss:{transform:this.decoderLossPercent,type:r.SdkMetric.Type.RTC_SPK_FRACTION_DECODER_LOSS_PERCENT},packetsReceived:{transform:this.countPerSecond,type:r.SdkMetric.Type.RTC_SPK_PPS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.RTC_SPK_FRACTION_PACKET_LOST_PERCENT,source:"packetsReceived"},jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.RTC_SPK_JITTER_MS},jitterBufferDelay:{transform:this.countPerSecond},jitterBufferEmittedCount:{transform:this.countPerSecond},jitterBufferMs:{transform:this.jitterBufferMs,type:r.SdkMetric.Type.RTC_SPK_JITTER_BUFFER_MS},bytesReceived:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.RTC_SPK_BITRATE},audioLevel:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_AUDIO_LEVEL},totalAudioPacketsLost:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_LOST},totalAudioPacketsExpected:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_EXPECTED},totalAudioPacketsRecoveredRed:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_RECOVERED_RED},totalAudioPacketsRecoveredFec:{transform:this.identityValue,type:r.SdkMetric.Type.RTC_SPK_TOTAL_RECOVERED_FEC},audioReceivedTransformPps:{transform:this.countPerSecond,type:r.SdkMetric.Type.AUDIO_RECEIVED_TRANSFORM_PPS}},this.videoUpstreamMetricMap={roundTripTime:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.VIDEO_SENT_RTT_MS},nackCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_NACKS_RECEIVED},pliCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_PLIS_RECEIVED},firCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_FIRS_RECEIVED},framesPerSecond:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_INPUT_FPS},framesEncoded:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_ENCODE_FPS},packetsSent:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_PPS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT,source:"packetsSent"},bytesSent:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_BITRATE},qpSum:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_QP_SUM},frameHeight:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_ENCODE_HEIGHT},frameWidth:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_ENCODE_WIDTH},jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.VIDEO_SENT_JITTER_MS},totalEncodeTime:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_ENCODE_MS},encoderImplementation:{transform:this.isHardwareImplementation,t
10ype:r.SdkMetric.Type.VIDEO_ENCODER_IS_HARDWARE},qualityLimitationDurations:{transform:this.averageCpuQualityLimitationDurationPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_QUALITY_LIMITATION_DURATION_CPU},videoCodecDegradationHighEncodeCpu:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU},videoCodecDegradationEncodeFailure:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE},videoInputWidth:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_INPUT_WIDTH},videoInputHeight:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_INPUT_HEIGHT},videoSentTransformPps:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_SENT_TRANSFORM_PPS},videoBgSegSegmentationDurationMs:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_DURATION_MS},videoBgSegEffectRenderDurationMs:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_EFFECT_RENDER_DURATION_MS},videoBgSegFramesPerSegmentation:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_FRAMES_PER_SEGMENTATION},videoBgSegCpuUsagePercent:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_CPU_USAGE_PERCENT},videoBgSegInitializationDurationMs:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_INITIALIZATION_DURATION_MS},videoBgSegInitializationFailure:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_INITIALIZATION_FAILURE},videoBgSegErrorCount:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_ERROR_COUNT},videoBgSegFramesSubmitted:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_FRAMES_SUBMITTED},videoBgSegFramesSegmented:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_FRAMES_SEGMENTED},videoPipelineFrameRate:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_PIPELINE_FRAME_RATE},videoProcessorAverageInferenceLatency:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_PROCESSOR_LATENCY_MS},videoBgSegAssetLoadingFailure:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_ASSET_LOADING_FAILURE},videoBgSegAssetLoadingTimeMs:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_ASSET_LOADING_TIME_MS},videoBgSegCompatibilityFailure:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_COMPATIBILITY_FAILURE},videoBgSegProcessorCreationFailure:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_BACKGROUND_SEGMENTATION_PROCESSOR_CREATION_FAILURE},videoProcessorName:{transform:this.identityValue,type:void 0},videoBgSegModelType:{transform:this.identityValue,type:void 0},videoBgSegDelegateType:{transform:this.identityValue,type:void 0}},this.videoDownstreamMetricMap={packetsReceived:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_PPS},packetsLost:{transform:this.packetLossPercent,type:r.SdkMetric.Type.VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT,source:"packetsReceived"},framesReceived:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_RECEIVED_FPS},framesDecoded:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_DECODE_FPS},nackCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_NACKS_SENT},firCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_FIRS_SENT},pliCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_PLIS_SENT},bytesReceived:{transform:this.bitsPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_BITRATE},jitter:{transform:this.secondsToMilliseconds,type:r.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS},jitterBufferDelay:{transform:this.countPerSecond},jitterBufferEmittedCount:{transform:this.countPerSecond},jitterBufferMs:{transform:this.jitterBufferMs,type:r.SdkMetric.Type.VIDEO_JITTER_BUFFER_MS},qpSum:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_QP_SUM},frameHeight:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_DECODE_HEIGHT},frameWidth:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_DECODE_WIDTH},totalDecodeTime:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_DECODE_MS},decoderImplementation:{transform:this.isHardwareImplementation,t
10ype:r.SdkMetric.Type.VIDEO_DECODER_IS_HARDWARE},totalFreezesDuration:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_FREEZE_DURATION},freezeCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_FREEZE_COUNT},totalPausesDuration:{transform:this.averageTimeSpentPerSecondInMilliseconds,type:r.SdkMetric.Type.VIDEO_PAUSE_DURATION},pauseCount:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_PAUSE_COUNT},framesDropped:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_DROPPED_FPS},videoRenderWidth:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_RENDER_WIDTH},videoRenderHeight:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_RENDER_HEIGHT},videoReceivedTransformPps:{transform:this.countPerSecond,type:r.SdkMetric.Type.VIDEO_RECEIVED_TRANSFORM_PPS},videoRemoteRenderFps:{transform:this.identityValue,type:r.SdkMetric.Type.VIDEO_REMOTE_RENDER_FPS}},this.streamDimensionMap={encoderImplementation:r.SdkStreamDimension.Type.VIDEO_ENCODER_NAME,decoderImplementation:r.SdkStreamDimension.Type.VIDEO_DECODER_NAME,videoBgSegModelType:r.SdkStreamDimension.Type.VIDEO_BACKGROUND_SEGMENTATION_MODEL_TYPE,videoBgSegDelegateType:r.SdkStreamDimension.Type.VIDEO_BACKGROUND_SEGMENTATION_DELEGATE_TYPE,videoProcessorName:r.SdkStreamDimension.Type.VIDEO_PROCESSOR_NAME},this.observableVideoMetricSpec={videoUpstreamBitrate:{source:"bytesSent",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamPacketsSent:{source:"packetsSent",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamPacketLossPercent:{source:"packetsLost",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamFramesEncodedPerSecond:{source:"framesEncoded",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamFramesInputPerSecond:{source:"framesPerSecond",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamFrameHeight:{source:"frameHeight",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamFrameWidth:{source:"frameWidth",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamJitterMs:{source:"jitter",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamRoundTripTimeMs:{source:"roundTripTime",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamEncoderImplementation:{source:"encoderImplementation",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamTotalEncodeTimePerSecond:{source:"totalEncodeTime",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoUpstreamCpuQualityLimitationDurationPerSecond:{source:"qualityLimitationDurations",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoDownstreamBitrate:{source:"bytesReceived",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamPacketLossPercent:{source:"packetsLost",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamPacketsReceived:{source:"packetsReceived",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamFramesDecodedPerSecond:{source:"framesDecoded",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamFrameHeight:{source:"frameHeight",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamFrameWidth:{source:"frameWidth",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamJitterMs:{source:"jitter",media:a.default.VIDEO,dir:s.default.DOWNSTREAM},videoDownstreamDelayMs:{source:"jitterBufferMs",media:a.default.VIDEO,dir:s.default.DOWNSTREAM}},this.observableMetricSpec={audioPacketsReceived:{source:"packetsReceived",media:a.default.AUDIO,dir:s.default.DOWNSTREAM},audioPacketsReceivedFractionLoss:{source:"packetsLost",media:a.default.AUDIO,dir:s.default.DOWNSTREAM},audioDecoderLoss:{source:"decoderLoss",media:a.default.AUDIO,dir:s.default.DOWNSTREAM},audioPacketsSent:{source:"packetsSent",media:a.default.AUDIO,dir:s.default.UPSTREAM},audioPacketLossPercent:{source:"packetsLost",media:a.default.AUDIO,dir:s.default.UPSTREAM},audioUpstreamRoundTripTimeMs:{source:"roundTripTime",media:a.default.AUDIO,dir:s.default.UPSTREAM},videoUpstreamBitrate:{source:"bytesSent",media:a.default.VIDEO,dir:s.default.UPSTREAM},videoPacketSentPerSecond:{source:"packetsSent",media:a.default.VIDEO,dir:s.default.UPSTREAM},audioSpeakerDelayMs:{source:"jitterBufferMs",media:a.default.AUDIO,dir:s.default.DOWNSTREAM},audioUpstreamJitterMs:{source:"jitter",media:a.default.AUDIO,dir:s.default.UPSTREAM},audioDownstreamJitterMs:{source:"jitter",media:a.default.AUDIO,dir:s.default.DOWNSTREAM},nackCountReceivedPerSecond:{source:"nackCount",media:a.default.VIDEO,dir:s.default.UPSTREAM},availableOutgoingBitrate:{source:"availableOutgoingBitrate"},availableIncomingBitrate:{source:"availableIncomingBitrate"},currentRoundTripTimeMs:{source:"currentRoundTripTime"},audioDownstreamLevel:{source:"audioLevel",media:a.default.AUDIO,dir:s.default.DOWNSTREAM}
10,audioUpstreamLevel:{source:"audioLevel"}}}getMetricMap(e,t){switch(e){case a.default.AUDIO:switch(t){case s.default.UPSTREAM:return this.audioUpstreamMetricMap;case s.default.DOWNSTREAM:return this.audioDownstreamMetricMap}case a.default.VIDEO:switch(t){case s.default.UPSTREAM:return this.videoUpstreamMetricMap;case s.default.DOWNSTREAM:return this.videoDownstreamMetricMap}default:return this.globalMetricMap}}getStreamDimensionMap(){return this.streamDimensionMap}getObservableMetricValue(e){if(this.overriddenObservableMetrics.has(e))return this.overriddenObservableMetrics.get(e);let t=this.observableMetricSpec[e],{transform:i,source:n}=this.getMetricMap(t.media,t.dir)[t.source];if(!t.hasOwnProperty("media"))return i(n||t.source);for(let e in this.streamMetricReports){let r=this.streamMetricReports[e];if(r.direction===t.dir&&r.mediaType===t.media)return i(n||t.source,Number(e))}return 0}getObservableVideoMetricValue(e,t){let i=this.observableVideoMetricSpec[e],{transform:n,source:r}=this.getMetricMap(i.media,i.dir)[i.source];return n(r||i.source,t)}getVideoUpstreamSsrcs(){let e=[];for(let t in this.streamMetricReports)this.streamMetricReports[t].mediaType===a.default.VIDEO&&this.streamMetricReports[t].direction===s.default.UPSTREAM&&e.push(Number(t));return e}getObservableMetrics(){let e={};for(let t in this.observableMetricSpec)e[t]=this.getObservableMetricValue(t);return e}getObservableVideoMetrics(){let e={};if(!this.videoStreamIndex||!this.selfAttendeeId)return this.logger.error("Need to define VideoStreamIndex and selfAttendeeId if using getObservableVideoMetrics API"),e;for(let t in this.streamMetricReports)if(this.streamMetricReports[t].mediaType===a.default.VIDEO){let i={};for(let e in this.observableVideoMetricSpec)if(this.observableVideoMetricSpec[e].dir===this.streamMetricReports[t].direction){let n=this.getObservableVideoMetricValue(e,Number(t));isNaN(n)||(i[e]=n)}let n=this.streamMetricReports[t].groupId,r=this.streamMetricReports[t].streamId,s="";e[s=void 0!==this.videoStreamIndex.attendeeIdForGroupId?n?this.videoStreamIndex.attendeeIdForGroupId(n):this.selfAttendeeId:r?this.videoStreamIndex.attendeeIdForStreamId(r):this.selfAttendeeId]=e[s]?e[s]:{},e[s][t]=i}return e}getRTCStatsReport(){return this.rtcStatsReport}clone(){let e=new d(this.logger,this.videoStreamIndex,this.selfAttendeeId);return e.globalMetricReport=this.globalMetricReport,e.streamMetricReports=this.streamMetricReports,e.rtcStatsReport=this.rtcStatsReport,e.customStatsReports=this.customStatsReports,e.currentTimestampMs=this.currentTimestampMs,e.previousTimestampMs=this.previousTimestampMs,e.overriddenObservableMetrics=this.overriddenObservableMetrics,e}print(){let e={globalMetricReport:this.globalMetricReport,streamMetricReports:this.streamMetricReports,currentTimestampMs:this.currentTimestampMs,previousTimestampMs:this.previousTimestampMs};this.logger.debug(()=>`Client Metric Report: ${JSON.stringify(e)}`)}removeDestroyedSsrcs(){for(let e in this.streamMetricReports)this.currentSsrcs[e]||delete this.streamMetricReports[e]}overrideObservableMetric(e,t){this.overriddenObservableMetrics.set(e,t)}}t.default=d},87911:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.ClientMetricReportDirection=void 0,(n=i||(t.ClientMetricReportDirection=i={}))[n.UPSTREAM=0]="UPSTREAM",n[n.DOWNSTREAM=1]="DOWNSTREAM",t.default=i},40372:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.ClientMetricReportMediaType=void 0,(n=i||(t.ClientMetricReportMediaType=i={}))[n.AUDIO=0]="AUDIO",n[n.VIDEO=1]="VIDEO",t.default=i},47715:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},85981:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.previousMetrics={},this.currentMetrics={},this.currentStringMetrics={},this.previousObjectMetrics={},this.currentObjectMetrics={}}}t.default=i},55728:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.currentTimestampMs=0,this.ssrc=0,this.totalAudioPacketsLost=0,this.totalAudioPacketsExpected=0,this.totalAudioPacketsRecoveredRed=0,this.totalAudioPacketsRecoveredFec=0}}t.default=i},11566:function(e,t){"use strict";
10Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.previousMetrics={},this.currentMetrics={},this.currentStringMetrics={},this.previousObjectMetrics={},this.currentObjectMetrics={}}}t.default=i},18471:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i){this.minHealth=e.minHealth,this.maxHealth=e.maxHealth,this.currentHealth=e.initialHealth,this.currentData=t.clone(),this.name=i}minimumHealth(){return this.minHealth}maximumHealth(){return this.maxHealth}health(){return this.maximumHealth()}update(e){this.currentData=e}getConnectionHealthData(){return this.currentData.clone()}healthy(){return this.health()>this.minimumHealth()}healthIfChanged(){let e=this.health();return e!==this.currentHealth?(this.currentHealth=e,e):null}}t.default=i},74813:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.connectionStartTimestampMs=0,this.consecutiveStatsWithNoPackets=0,this.consecutiveStatsWithNoAudioPacketsSent=0,this.lastPacketLossInboundTimestampMs=0,this.lastGoodSignalTimestampMs=0,this.lastWeakSignalTimestampMs=0,this.lastNoSignalTimestampMs=0,this.consecutiveMissedPongs=0,this.packetsReceivedInLastMinute=[],this.fractionPacketsLostInboundInLastMinute=[],this.audioSpeakerDelayMs=0,this.isVideoEncoderHardware=!1,this.videoEncodingTimeInMs=0,this.videoEncodingTimePerFrameInMs=0,this.cpuLimitationDuration=0,this.videoInputFps=0,this.videoEncodeFps=0,this.isContentShare=!1,this.numberOfPublishedVideoSources=0,this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now()}static isTimestampRecent(e,t){return Date.now()<e+t}setConnectionStartTime(){this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now()}reset(){this.connectionStartTimestampMs=0,this.consecutiveStatsWithNoPackets=0,this.consecutiveStatsWithNoAudioPacketsSent=0,this.lastPacketLossInboundTimestampMs=0,this.lastGoodSignalTimestampMs=0,this.lastWeakSignalTimestampMs=0,this.lastNoSignalTimestampMs=0,this.consecutiveMissedPongs=0,this.packetsReceivedInLastMinute=[],this.fractionPacketsLostInboundInLastMinute=[],this.audioSpeakerDelayMs=0,this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now(),this.isVideoEncoderHardware=!1,this.videoEncodingTimeInMs=0,this.videoEncodingTimePerFrameInMs=0,this.cpuLimitationDuration=0,this.videoInputFps=0,this.videoEncodeFps=0,this.isContentShare=!1,this.numberOfPublishedVideoSources=0}isConnectionStartRecent(e){return i.isTimestampRecent(this.connectionStartTimestampMs,e)}isLastPacketLossRecent(e){return i.isTimestampRecent(this.lastPacketLossInboundTimestampMs,e)}isGoodSignalRecent(e){return i.isTimestampRecent(this.lastGoodSignalTimestampMs,e)}isWeakSignalRecent(e){return i.isTimestampRecent(this.lastWeakSignalTimestampMs,e)}isNoSignalRecent(e){return i.isTimestampRecent(this.lastNoSignalTimestampMs,e)}clone(){let e=new i;return e.connectionStartTimestampMs=this.connectionStartTimestampMs,e.consecutiveStatsWithNoPackets=this.consecutiveStatsWithNoPackets,e.consecutiveStatsWithNoAudioPacketsSent=this.consecutiveStatsWithNoAudioPacketsSent,e.lastPacketLossInboundTimestampMs=this.lastPacketLossInboundTimestampMs,e.lastGoodSignalTimestampMs=this.lastGoodSignalTimestampMs,e.lastWeakSignalTimestampMs=this.lastWeakSignalTimestampMs,e.lastNoSignalTimestampMs=this.lastNoSignalTimestampMs,e.consecutiveMissedPongs=this.consecutiveMissedPongs,e.packetsReceivedInLastMinute=this.packetsReceivedInLastMinute.slice(0),e.fractionPacketsLostInboundInLastMinute=this.fractionPacketsLostInboundInLastMinute.slice(0),e.audioSpeakerDelayMs=this.audioSpeakerDelayMs,e.isVideoEncoderHardware=this.isVideoEncoderHardware,e.videoEncodingTimeInMs=this.videoEncodingTimeInMs,e.videoEncodingTimePerFrameInMs=this.videoEncodingTimePerFrameInMs,e.cpuLimitationDuration=this.cpuLimitationDuration,e.videoInputFps=this.videoInputFps,e.videoEncodeFps=this.videoEncodeFps,e.isContentShare=this.isContentShare,e.numberOfPublishedVideoSources=this.numberOfPublishedVideoSources,e}setConsecutiveMissedPongs(e){this.consecutiveMissedPongs=e}setConsecutiveStatsWithNoPackets(e){this.consecutiveStatsWithNoPackets=e}setConsecutiveStatsWithNoAudioPacketsSent(e){this.consecutiveStatsWithNoAudioPacketsSent=e}setLastPacketLossInboundTimestampMs(e){this.lastPacketLossInboundTimestampMs=e}setLastNoSignalTimestampMs(e){this.lastNoSignalTimestampMs=e}setLastWeakSignalTimestampMs(e){this.lastWeakSignalTimestampMs=e}setLastGoodSignalTimestampMs(e){this.lastGoodSignalTimestampMs=e}setAudioSpeakerDelayMs(e){this.audioSpeakerDelayMs=e}setIsVideoEncoderHardware(e){this.isVideoEncoderHardware=e}setVideoEncodingTimeInMs(e){this.videoEncodingTimeInMs=e}setVideoEncodingTimePerFrameInMs(e){this.videoEncodingTimePerFrameInMs=e}setCpuLimitationDuration(e){this.cpuLimitationDuration=e}setVideoInputFps(e){this.videoInputFps=e}setVideoEncodeFps(e){this.videoEncodeFps=e}setIsContentShare(e){this.isContentShare=e}setNumberOfPublishedVideoSources(e){this.numberOfPublishedVideoSources=e}}t.default=i},28677:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
10dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(83015)),s=n(i(85463)),a=n(i(50070));class o{constructor(){this.minHealth=0,this.maxHealth=1,this.initialHealth=1,this.connectionUnhealthyThreshold=25,this.noSignalThresholdTimeMs=1e4,this.connectionWaitTimeMs=1e4,this.zeroBarsNoSignalTimeMs=5e3,this.oneBarWeakSignalTimeMs=5e3,this.twoBarsTimeMs=5e3,this.threeBarsTimeMs=1e4,this.fourBarsTimeMs=2e4,this.fiveBarsTimeMs=6e4,this.cooldownTimeMs=6e4,this.pastSamplesToConsider=15,this.goodSignalTimeMs=15e3,this.fractionalLoss=.5,this.packetsExpected=50,this.maximumTimesToWarn=2,this.missedPongsLowerThreshold=1,this.missedPongsUpperThreshold=4,this.maximumAudioDelayMs=6e4,this.maximumAudioDelayDataPoints=10,this.sendingAudioFailureSamplesToConsider=2,this.sendingAudioFailureInitialWaitTimeMs=3e3,this.videoEncodingHealthPolicies=[r.default,s.default,a.default],this.consecutiveHighEncodeCpuThreshold=10,this.highEncodeCpuMsThreshold=500,this.highEncodeCpuMsPerFrameThreshold=15,this.consecutiveVideoEncodingFailureThreshold=5,this.concurrentVideoSendersThreshold=15}}t.default=o},67089:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(18471));class s extends r.default{constructor(e,t,i){super(t,i,"Reconnection Health"),this.logger=e,this.audioDelayPointsOverMaximum=0,s.CONNECTION_UNHEALTHY_THRESHOLD=t.connectionUnhealthyThreshold,s.CONNECTION_WAIT_TIME_MS=t.connectionWaitTimeMs,s.MISSED_PONGS_THRESHOLD=t.missedPongsUpperThreshold,s.MAXIMUM_AUDIO_DELAY_MS=t.maximumAudioDelayMs,s.MAXIMUM_AUDIO_DELAY_DATA_POINTS=t.maximumAudioDelayDataPoints}health(){if(this.currentData.isConnectionStartRecent(s.CONNECTION_WAIT_TIME_MS))return 1;let e=this.currentData.consecutiveStatsWithNoPackets>=s.CONNECTION_UNHEALTHY_THRESHOLD,t=this.currentData.consecutiveMissedPongs>=s.MISSED_PONGS_THRESHOLD;this.currentData.audioSpeakerDelayMs>s.MAXIMUM_AUDIO_DELAY_MS?this.audioDelayPointsOverMaximum+=1:this.audioDelayPointsOverMaximum=0;let i=this.audioDelayPointsOverMaximum>s.MAXIMUM_AUDIO_DELAY_DATA_POINTS;return(i&&(this.audioDelayPointsOverMaximum=0),e||t||i)?(this.logger.warn(`reconnection recommended due to: no packets received: ${e}, missed pongs: ${t}, bad audio delay: ${i}`),0):1}}t.default=s},80279:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(18471));class s extends r.default{constructor(e,t,i){super(t,i,"Sending Audio Health"),this.logger=e,this.sendingAudioFailureSamplesToConsider=t.sendingAudioFailureSamplesToConsider>0?t.sendingAudioFailureSamplesToConsider:1,this.sendingAudioFailureInitialWaitTimeMs=t.sendingAudioFailureInitialWaitTimeMs,this.maximumTimesToWarn=t.maximumTimesToWarn,this.coolDownTimeMs=t.cooldownTimeMs,this.lastWarnTimestampMs=0,this.warnCount=0}isSendingAudioUnhealthy(){let e=!this.currentData.isConnectionStartRecent(this.sendingAudioFailureInitialWaitTimeMs),t=this.currentData.consecutiveStatsWithNoAudioPacketsSent>=this.sendingAudioFailureSamplesToConsider;return e&&t}health(){if(this.isSendingAudioUnhealthy()){let e=Date.now()-this.lastWarnTimestampMs<this.coolDownTimeMs;return!(this.currentHealth>this.minimumHealth())||e?this.currentHealth:(this.logger.warn(`Sending Audio is unhealthy for ${this.sendingAudioFailureSamplesToConsider} seconds consecutively.`),this.warnCount++,this.warnCount>this.maximumTimesToWarn)?(this.logger.warn("SendingAudioFailure health policy maximum warnings breached. Falling back to reporting healthy."),this.maximumHealth()):(this.lastWarnTimestampMs=Date.now(),this.minimumHealth())}return this.maximumHealth()}}t.default=s},355:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(18471));class s extends r.default{constructor(e,t){super(e,t,"Unusable Audio Warning"),this.coolDownTimeMs=e.cooldownTimeMs,this.pastSamplesToConsider=e.pastSamplesToConsider,this.fractionalLoss=e.fractionalLoss,this.packetsExpected=e.packetsExpected,this.maximumTimesToWarn=e.maximumTimesToWarn,this.lastWarnTimestampMs=0,this.warnCount=0}calculateFractionalLoss(){if(this.currentData.packetsReceivedInLastMinute.length<this.pastSamplesToConsider)return 0;let e=this.pastSamplesToConsider,t=e*this.packetsExpected,i=0;for(let t=0;t<e;t++)i+=this.currentData.packetsReceivedInLastMinute[t];return Math.min(Math.max(1-i/t,0),1)}health(){return Date.now()-this.lastWarnTimestampMs<this.coolDownTimeMs?this.currentHealth:this.calculateFractionalLoss()>=this.fractionalLoss?0!==this.currentHealth&&(this.lastWarnTimestampMs=Date.now(),this.warnCount++,this.warnCount>this.maximumTimesToWarn)?1:0:1}}t.default=s},83015:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
10dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(18471)),s=n(i(74588));class a extends r.default{constructor(e,t){super(e,t,s.default.VideoConcurrentSendersHealth),this.concurrentVideoSendersThreshold=e.concurrentVideoSendersThreshold}health(){return this.currentData.isContentShare?this.maximumHealth():this.currentData.numberOfPublishedVideoSources>this.concurrentVideoSendersThreshold?this.minimumHealth():this.maximumHealth()}}t.default=a},74588:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.VideoEncodingConnectionHealthPolicyName=void 0,(n=i||(t.VideoEncodingConnectionHealthPolicyName=i={})).VideoEncodingCpuHealth="Video Encoding CPU Health",n.VideoEncodingFramerateHealth="Video Encoding framerate Health",n.VideoConcurrentSendersHealth="Video Concurrent Senders Health",t.default=i},85463:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(18471)),s=n(i(74588));class a extends r.default{constructor(e,t){super(e,t,s.default.VideoEncodingCpuHealth),this.consecutiveHighEncodeCpuCnt=0,this.consecutiveHighEncodeCpuThreshold=e.consecutiveHighEncodeCpuThreshold,this.highEncodeCpuMsThreshold=e.highEncodeCpuMsThreshold,this.highEncodeCpuMsPerFrameThreshold=e.highEncodeCpuMsPerFrameThreshold}health(){let e=this.currentData.videoEncodingTimeInMs>=this.highEncodeCpuMsThreshold&&this.currentData.videoEncodingTimePerFrameInMs>=this.highEncodeCpuMsPerFrameThreshold;if(!this.currentData.isVideoEncoderHardware&&(e||this.currentData.cpuLimitationDuration>0)){if(this.consecutiveHighEncodeCpuCnt++,this.consecutiveHighEncodeCpuCnt>this.consecutiveHighEncodeCpuThreshold)return this.consecutiveHighEncodeCpuCnt=0,this.minimumHealth()}else this.consecutiveHighEncodeCpuCnt=0;return this.maximumHealth()}}t.default=a},50070:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(18471)),s=n(i(74588));class a extends r.default{constructor(e,t){super(e,t,s.default.VideoEncodingFramerateHealth),this.consecutiveEncodeFailureCnt=0,this.consecutiveVideoEncodingFailureThreshold=e.consecutiveVideoEncodingFailureThreshold}health(){if(0===this.currentData.videoEncodeFps&&this.currentData.videoInputFps>0){if(this.consecutiveEncodeFailureCnt++,this.consecutiveEncodeFailureCnt>this.consecutiveVideoEncodingFailureThreshold)return this.consecutiveEncodeFailureCnt=0,this.minimumHealth()}else this.consecutiveEncodeFailureCnt=0;return this.maximumHealth()}}t.default=a},12790:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=i(24670);class r{constructor(e,t,i,n,r){this.audioVideoController=e,this.realtimeController=t,this.connectionHealthData=i,this.pingPong=n,this.statsCollector=r,this.isActive=!1,this.hasSeenValidCandidatePairMetricsBefore=!1,this.lastTotalBytesReceived=0,this.lastTotalStunMessagesReceived=0,this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(e=>{this.isActive&&this.receiveSignalStrengthChange(e)})}start(){this.isActive=!0,this.pingPong.addObserver(this),this.pingPong.start(),this.audioVideoController.addObserver(this)}stop(){this.isActive=!1,this.pingPong.removeObserver(this),this.pingPong.stop(),this.audioVideoController.removeObserver(this)}receiveSignalStrengthChange(e){0===e?this.connectionHealthData.setLastNoSignalTimestampMs(Date.now()):e<=.5?this.connectionHealthData.setLastWeakSignalTimestampMs(Date.now()):this.connectionHealthData.setLastGoodSignalTimestampMs(Date.now()),this.updateConnectionHealth()}didReceivePong(e,t,i){this.connectionHealthData.setConsecutiveMissedPongs(0),this.statsCollector.logLatency("ping_pong",t),this.statsCollector.logLatency("ping_pong_clock_skew",i),this.updateConnectionHealth()}didMissPongs(){this.connectionHealthData.setConsecutiveMissedPongs(this.connectionHealthData.consecutiveMissedPongs+1),this.updateConnectionHealth()}metricsDidReceive(e){let t=0,i=0,n=e.getObservableMetrics(),r=n.audioPacketsReceived,s=n.audioPacketsReceivedFractionLoss,a=n.audioSpeakerDelayMs;"number"!=typeof a||isNaN(a)||this.connectionHealthData.setAudioSpeakerDelayMs(a);let o=e.getRTCStatsReport(),d=0,l=0;
10o.forEach(e=>{"candidate-pair"===e.type&&(e.bytesReceived&&(d+=e.bytesReceived),e.requestsReceived&&(l+=e.requestsReceived),e.responsesReceived&&(l+=e.responsesReceived))});let c=d-this.lastTotalBytesReceived;this.lastTotalBytesReceived=d;let u=l-this.lastTotalStunMessagesReceived;this.lastTotalStunMessagesReceived=l,"number"==typeof r&&"number"==typeof s&&(t=r,i=s,t<0||i<0||c<0||u<0||(this.addToMinuteWindow(this.connectionHealthData.packetsReceivedInLastMinute,t),this.addToMinuteWindow(this.connectionHealthData.fractionPacketsLostInboundInLastMinute,i),c>0||u>0?(this.hasSeenValidCandidatePairMetricsBefore=!0,this.connectionHealthData.setConsecutiveStatsWithNoPackets(0)):this.hasSeenValidCandidatePairMetricsBefore&&this.connectionHealthData.setConsecutiveStatsWithNoPackets(this.connectionHealthData.consecutiveStatsWithNoPackets+1),(0===t||i>0)&&this.connectionHealthData.setLastPacketLossInboundTimestampMs(Date.now()),"number"==typeof n.audioPacketsSent&&this.updateAudioPacketsSentInConnectionHealth(n.audioPacketsSent),this.updateVideoEncodingHealth(e),this.updateConnectionHealth()))}updateAudioPacketsSentInConnectionHealth(e){e>0?this.connectionHealthData.setConsecutiveStatsWithNoAudioPacketsSent(0):this.connectionHealthData.setConsecutiveStatsWithNoAudioPacketsSent(this.connectionHealthData.consecutiveStatsWithNoAudioPacketsSent+1)}updateVideoEncodingHealth(e){let t=this.audioVideoController.videoTileController.hasStartedLocalVideoTile(),i=e.getVideoUpstreamSsrcs();if(!t||0===i.length){this.connectionHealthData.setIsVideoEncoderHardware(!1),this.connectionHealthData.setVideoEncodingTimePerFrameInMs(0),this.connectionHealthData.setCpuLimitationDuration(0),this.connectionHealthData.setVideoInputFps(0),this.connectionHealthData.setVideoEncodeFps(0);return}let n=!1,r=0,s=0,a=0,o=0;for(let t of i)n||(n=!!e.getObservableVideoMetricValue("videoUpstreamEncoderImplementation",t)),r+=e.getObservableVideoMetricValue("videoUpstreamTotalEncodeTimePerSecond",t),s+=e.getObservableVideoMetricValue("videoUpstreamCpuQualityLimitationDurationPerSecond",t),a+=e.getObservableVideoMetricValue("videoUpstreamFramesInputPerSecond",t),o+=e.getObservableVideoMetricValue("videoUpstreamFramesEncodedPerSecond",t);let d=o>0?r/o:0;this.connectionHealthData.setIsVideoEncoderHardware(!!n),this.connectionHealthData.setVideoEncodingTimeInMs(r),this.connectionHealthData.setVideoEncodingTimePerFrameInMs(d),this.connectionHealthData.setCpuLimitationDuration(s),this.connectionHealthData.setVideoInputFps(a),this.connectionHealthData.setVideoEncodeFps(o)}addToMinuteWindow(e,t){e.unshift(t),e.length>60&&e.pop()}updateConnectionHealth(){this.audioVideoController.forEachObserver(e=>{n.Maybe.of(e.connectionHealthDidChange).map(t=>t.bind(e)(this.connectionHealthData.clone()))})}}t.default=r},26519:function(e,t){"use strict";var i;Object.defineProperty(t,"__esModule",{value:!0}),(i||(i={})).Modality="#content",t.default=i},82083:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(41198));class a{constructor(e){this.logger=e}get mediaStream(){return this._mediaStream}set mediaStream(e){this._mediaStream=e}async acquireAudioInputStream(){return 0===this._mediaStream.getAudioTracks().length?(this.logger.info("No audio stream available. Synthesizing an audio stream."),s.default.synthesizeAudioDevice(0)):this._mediaStream}async acquireVideoInputStream(){return this._mediaStream}async acquireDisplayInputStream(e){return e&&e.video&&e.video.mandatory&&e.video.mandatory.chromeMediaSource&&e.video.mandatory.chromeMediaSourceId?navigator.mediaDevices.getUserMedia(e):navigator.mediaDevices.getDisplayMedia(e)}async acquireScreenCaptureDisplayInputStream(e,t){return this.acquireDisplayInputStream(this.screenCaptureDisplayMediaConstraints(e,t))}screenCaptureDisplayMediaConstraints(e,t){return{audio:!!(!e&&new r.default().getDisplayMediaAudioCaptureSupport()),video:{...!e&&{frameRate:{max:t||a.defaultFrameRate}},...e&&{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:e,maxFrameRate:t||a.defaultFrameRate}}}}}toggleMediaStream(e){let t=!1;if(this.mediaStream)for(let i=0;i<this.mediaStream.getTracks().length;i++)this.mediaStream.getTracks()[i].enabled!==e&&(this.mediaStream.getTracks()[i].enabled=e,t=!0);return t}cleanup(){if(this.mediaStream)for(let e=0;e<this.mediaStream.getTracks().length;e++)this.mediaStream.getTracks()[e].stop();this.mediaStream=null}muteLocalAudioInputStream(){throw Error("unsupported")}unmuteLocalAudioInputStream(){throw Error("unsupported")}addMediaStreamBrokerObserver(e){}removeMediaStreamBrokerObserver(e){}}a.defaultFrameRate=15,t.default=a},84082:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
10dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(31278)),s=n(i(63170)),a=n(i(69461)),o=n(i(67941)),d=n(i(16564)),l=i(24670),c=n(i(10197)),u=n(i(6354)),h=n(i(26519));class f{static createContentShareMeetingSessionConfigure(e){let t=new s.default;return t.meetingId=e.meetingId,t.externalMeetingId=e.externalMeetingId,t.urls=e.urls,t.disablePeriodicKeyframeRequestOnContentSender=e.disablePeriodicKeyframeRequestOnContentSender,t.credentials=new a.default,t.credentials.attendeeId=e.credentials.attendeeId+h.default.Modality,t.credentials.externalUserId=e.credentials.externalUserId,t.credentials.joinToken=e.credentials.joinToken+h.default.Modality,t.meetingFeatures=e.meetingFeatures.clone(),t.videoDownlinkBandwidthPolicy=new c.default,t}constructor(e,t,i){this.mediaStreamBroker=e,this.contentAudioVideo=t,this.attendeeAudioVideo=i,this.observerQueue=new Set,this.destroyed=!1,this.contentAudioVideo.addObserver(this),this.setupContentShareEvents()}setContentAudioProfile(e){this.contentAudioVideo.setAudioProfile(e)}enableSimulcastForContentShare(e,t){e?(this.contentAudioVideo.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!0,this.contentAudioVideo.configuration.videoUplinkBandwidthPolicy=new u.default(this.contentAudioVideo.logger,t)):(this.contentAudioVideo.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.contentAudioVideo.configuration.videoUplinkBandwidthPolicy=void 0)}enableSVCForContentShare(e){e?this.contentAudioVideo.configuration.enableSVC=!0:this.contentAudioVideo.configuration.enableSVC=!1}async startContentShare(e){if(e){if(this.contentAudioVideo.configuration.meetingFeatures.contentMaxResolution===r.default.VideoDisabled){this.contentAudioVideo.logger.info("Could not start content because max content resolution was set to None");return}this.mediaStreamBroker.mediaStream=e;for(let e=0;e<this.mediaStreamBroker.mediaStream.getTracks().length;e++)this.mediaStreamBroker.mediaStream.getTracks()[e].addEventListener("ended",()=>{this.stopContentShare()});this.contentAudioVideo.start()}}async startContentShareFromScreenCapture(e,t){let i=await this.mediaStreamBroker.acquireScreenCaptureDisplayInputStream(e,t);return await this.startContentShare(i),i}pauseContentShare(){this.mediaStreamBroker.toggleMediaStream(!1)&&this.forEachContentShareObserver(e=>{l.Maybe.of(e.contentShareDidPause).map(t=>t.call(e))})}unpauseContentShare(){this.mediaStreamBroker.toggleMediaStream(!0)&&this.forEachContentShareObserver(e=>{l.Maybe.of(e.contentShareDidUnpause).map(t=>t.call(e))})}setContentShareVideoCodecPreferences(e){this.contentAudioVideo.setVideoCodecSendPreferences(e)}async destroy(){this.contentAudioVideo&&(this.destroyed=!0,this.contentAudioVideo.removeObserver(this),this.stopContentShare(),this.observerQueue.clear(),this.contentAudioVideo=void 0,this.attendeeAudioVideo=void 0,this.mediaStreamBroker=void 0)}stopContentShare(){this.contentAudioVideo.stop(),this.mediaStreamBroker.cleanup()}addContentShareObserver(e){this.observerQueue.add(e)}removeContentShareObserver(e){this.observerQueue.delete(e)}forEachContentShareObserver(e){for(let t of this.observerQueue)d.default.nextTick(()=>{this.observerQueue.has(t)&&e(t)})}audioVideoDidStart(){var e;(null===(e=this.mediaStreamBroker.mediaStream)||void 0===e?void 0:e.getVideoTracks().length)>0&&this.contentAudioVideo.videoTileController.startLocalVideoTile()}audioVideoDidStop(e){this.mediaStreamBroker.cleanup(),this.contentShareTile&&(this.attendeeAudioVideo.videoTileController.removeVideoTile(this.contentShareTile.id()),this.contentShareTile=null),this.forEachContentShareObserver(e=>{l.Maybe.of(e.contentShareDidStop).map(t=>t.call(e))})}setupContentShareEvents(){this.attendeeAudioVideo.realtimeController.realtimeSubscribeToAttendeeIdPresence((e,t,i,n)=>{let r=new o.default(e).hasModality(o.default.MODALITY_CONTENT),s=new o.default(e).base()===this.attendeeAudioVideo.configuration.credentials.attendeeId;if(!r||!s||!t||this.contentShareTile)return;let a=this.mediaStreamBroker.mediaStream;if(null==a?void 0:a.getVideoTracks().length){let e,t;this.contentShareTile=this.attendeeAudioVideo.videoTileController.addVideoTile();let i=a.getVideoTracks()[0];if(i.getSettings){let n=i.getSettings();e=n.width,t=n.height}else{let n=i.getCapabilities();e=n.width,t=n.height}
10this.contentShareTile.bindVideoStream(this.contentAudioVideo.configuration.credentials.attendeeId,!1,a,e,t,null,this.contentAudioVideo.configuration.credentials.externalUserId)}this.forEachContentShareObserver(e=>{l.Maybe.of(e.contentShareDidStart).map(t=>t.call(e))})})}}t.default=f},17401:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{static register(){"document"in i.g&&document.addEventListener&&n.shouldRegisterCSPMonitor&&!n.added&&(document.addEventListener("securitypolicyviolation",n.listener),n.added=!0)}static unregister(){"document"in i.g&&document.removeEventListener&&(document.removeEventListener("securitypolicyviolation",n.listener),n.loggers=new Set,n.added=!1)}static disable(){n.shouldRegisterCSPMonitor=!1,n.unregister()}static addLogger(e){e&&n.loggers.add(e)}static removeLogger(e){e&&n.loggers.delete(e)}}n.loggers=new Set,n.shouldRegisterCSPMonitor=!0,n.added=!1,n.listener=e=>{let t=`Security Policy Violation
11Blocked URI: ${e.blockedURI}
12Violated Directive: ${e.violatedDirective}
13Original Policy: ${e.originalPolicy}
14Document URI: ${e.documentURI}
15Source File: ${e.sourceFile}
16Line No.: ${e.lineNumber}
17`;for(let e of n.loggers)e.error(t);0===n.loggers.size&&console.error(t)},t.default=n},93661:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n,r,s){this.timestampMs=e,this.topic=t,this.data=i,this.senderAttendeeId=n,this.senderExternalUserId=r,this.throttled=!!s}text(){return new TextDecoder().decode(this.data)}json(){return JSON.parse(new TextDecoder().decode(this.data))}}t.default=i},96630:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDestroyable=function(e){return e&&"destroy"in e}},69139:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAudioTransformDevice=function(e){return!!e&&"object"==typeof e&&"mute"in e&&"stop"in e&&"intrinsicDevice"in e}},41198:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(3496)),a=n(i(16564)),o=n(i(91973)),d=i(24670),l=n(i(56441)),c=n(i(6476)),u=i(69139),h=n(i(22752)),f=n(i(64212)),m=n(i(92613)),p=n(i(27688)),g=n(i(88254)),v=n(i(27578)),b=n(i(77916)),S=n(i(31278)),y=i(88295);class C{constructor(e,t,i=new r.default,n,d){this.logger=e,this.browserBehavior=i,this.eventController=n,this.statsCollector=d,this.deviceInfoCache=null,this.activeDevices={audio:null,video:null},this.chosenVideoTransformDevice=null,this.audioOutputDeviceId=void 0,this.deviceChangeObservers=new Set,this.mediaStreamBrokerObservers=new Set,this.deviceLabelTrigger=()=>navigator.mediaDevices.getUserMedia({audio:!0,video:!0}),this.audioInputDestinationNode=null,this.audioInputSourceNode=null,this.videoInputQualitySettings=null,this.useWebAudio=!1,this.useMediaConstraintsFallback=!0,this.audioInputTaskQueue=new o.default,this.videoInputTaskQueue=new o.default,this.muted=!1,this.mediaStreamMuteObserver=(e,t)=>{for(let i of this.deviceChangeObservers)a.default.nextTick(()=>{this.deviceChangeObservers.has(i)&&i.audioInputMuteStateChanged&&i.audioInputMuteStateChanged(e,t)})},this.alreadyHandlingDeviceChange=!1;let{enableWebAudio:l=!1,useMediaConstraintsFallback:c=!0}=t||{};this.useWebAudio=l,this.useMediaConstraintsFallback=c,this.videoInputQualitySettings=new S.default(C.defaultVideoWidth,C.defaultVideoHeight,C.defaultVideoFrameRate);let u=this.browserBehavior.requiresResolutionAlignment(this.videoInputQualitySettings.videoWidth,this.videoInputQualitySettings.videoHeight);this.videoInputQualitySettings.videoWidth=u[0],this.videoInputQualitySettings.videoHeight=u[1],this.logger.info(`DefaultDeviceController video dimension ${this.videoInputQualitySettings.videoWidth} x ${this.videoInputQualitySettings.videoHeight}`);try{this.mediaDeviceWrapper=new s.default().create();let e=navigator.mediaDevices.getSupportedConstraints();this.logger.info(`Supported Constraints in this browser ${JSON.stringify(e)}`)}catch(t){e.error(t.message)}}isWatchingForDeviceChanges(){return!!this.onDeviceChangeCallback}ensureWatchingDeviceChanges(){var e;this.isWatchingForDeviceChanges()||(this.logger.info("Starting devicechange listener."),this.onDeviceChangeCallback=()=>{this.logger.info("Device change event callback is triggered"),this.handleDeviceChange()},null===(e=this.mediaDeviceWrapper)||void 0===e||e.addEventListener("devicechange",this.onDeviceChangeCallback))}stopWatchingDeviceChanges(){var e;this.isWatchingForDeviceChanges()&&(this.logger.info("Stopping devicechange listener."),null===(e=this.mediaDeviceWrapper)||void 0===e||e.removeEventListener("devicechange",this.onDeviceChangeCallback),this.onDeviceChangeCallback=void 0)}shouldObserveDeviceChanges(){return!!this.deviceChangeObservers.size||this.activeDevices.audio&&null!==this.activeDevices.audio.constraints||this.activeDevices.video&&null!==this.activeDevices.video.constraints||!!this.audioOutputDeviceId}watchForDeviceChangesIfNecessary(){this.shouldObserveDeviceChanges()?this.ensureWatchingDeviceChanges():this.stopWatchingDeviceChanges()}async destroy(){this.stopWatchingDeviceChanges(),await this.stopAudioInput(),await this.stopVideoInput()}async listAudioInputDevices(e=!1){let t=await this.listDevicesOfKind("audioinput",e);return this.trace("listAudioInputDevices",e,t),t}async listVideoInputDevices(e=!1){let t=await this.listDevicesOfKind("videoinput",e);return this.trace("listVideoInputDevices",e,t),t}async listAudioOutputDevices(e=!1){let t=await this.listDevicesOfKind("audiooutput",e);return this.trace("listAudioOutputDevices",e,t),t}pushAudioMeetingStateForPermissions(e){var t;null===(t=this.eventController)||void 0===t||t.publishEvent(void 0===e?"audio
17InputUnselected":"audioInputSelected")}pushVideoMeetingStateForPermissions(e){var t;null===(t=this.eventController)||void 0===t||t.publishEvent(void 0===e?"videoInputUnselected":"videoInputSelected")}async startAudioInput(e){return await this.audioInputTaskQueue.add(()=>this.startAudioInputTask(e))}async startAudioInputTask(e){var t;if(void 0===e){this.logger.error("Audio input device cannot be undefined");return}try{if((0,u.isAudioTransformDevice)(e)?(this.logger.info(`Choosing transform input device ${e}`),await this.chooseAudioTransformInputDevice(e)):(this.logger.info(`Choosing intrinsic audio input device ${e}`),this.removeTransform(),await this.chooseInputIntrinsicDevice("audio",e)),this.trace("startAudioInputDevice",e,"success"),this.useWebAudio)return this.attachAudioInputStreamToAudioContext(this.activeDevices.audio.stream),this.pushAudioMeetingStateForPermissions(this.getMediaStreamDestinationNode().stream),await (null===(t=this.transform)||void 0===t?void 0:t.device.mute(this.muted)),this.getMediaStreamDestinationNode().stream;return this.publishAudioInputDidChangeEvent(this.activeDevices.audio.stream),this.activeDevices.audio.stream}catch(e){throw e}}async stopAudioInput(){return this.audioInputTaskQueue.add(()=>this.stopAudioInputTask())}async stopAudioInputTask(){try{if(this.useWebAudio){this.releaseAudioTransformStream();return}this.stopTracksAndRemoveCallbacks("audio")}finally{this.watchForDeviceChangesIfNecessary(),this.publishAudioInputDidChangeEvent(void 0)}}async chooseAudioTransformInputDevice(e){var t;let i;if((null===(t=this.transform)||void 0===t?void 0:t.device)===e)return;if(!this.useWebAudio)throw Error("Cannot apply transform device without enabling Web Audio.");let n=C.getAudioContext();if(n instanceof OfflineAudioContext);else switch(n.state){case"running":break;case"closed":throw Error("Cannot choose a transform device with a closed audio context.");case"suspended":await n.resume()}try{i=await e.createAudioNode(n)}catch(e){throw this.logger.error(`Unable to create transform device node: ${e}.`),e}let r=await e.intrinsicDevice();await this.chooseInputIntrinsicDevice("audio",r),this.logger.debug(`Got inner stream: ${r}.`),this.setTransform(e,i)}async chooseVideoTransformInputDevice(e){var t;if(this.eventController&&e instanceof l.default&&e.passEventControllerToProcessors(this.eventController),this.statsCollector&&e instanceof l.default&&e.setStatsCollector(this.statsCollector),e===this.chosenVideoTransformDevice){this.logger.info("Reselecting same VideoTransformDevice");return}let i=this.chosenVideoTransformDevice;i&&this.logger.info("Switched from previous VideoTransformDevice");let n=await e.intrinsicDevice();if(!this.isMediaStreamReusableByDeviceId(null===(t=this.activeDevices.video)||void 0===t?void 0:t.stream,n)){this.logger.info("video transform device needs new intrinsic device"),i&&i.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=e,this.activeDevices.video=null,await this.chooseInputIntrinsicDevice("video",n),this.logger.info("apply processors to transform"),await this.chosenVideoTransformDevice.transformStream(this.activeDevices.video.stream);return}this.chosenVideoTransformDevice=e,this.logger.info("video transform device uses previous stream"),this.logger.info("apply processors to transform"),await e.transformStream(this.activeDevices.video.stream)}async startVideoInput(e){return await this.videoInputTaskQueue.add(()=>this.startVideoInputTask(e))}async startVideoInputTask(e){if(!e){this.logger.error("Invalid video input device");return}try{if((0,y.isVideoTransformDevice)(e))return this.logger.info(`Choosing video transform device ${e}`),await this.chooseVideoTransformInputDevice(e),this.publishVideoInputDidChangeEvent(this.chosenVideoTransformDevice.outputMediaStream),this.chosenVideoTransformDevice.outputMediaStream;return this.chosenVideoInputIsTransformDevice()&&(this.chosenVideoTransformDevice.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=null),await this.chooseInputIntrinsicDevice("video",e),this.trace("startVideoInputDevice",e),this.publishVideoInputDidChangeEvent(this.activeDevices.video.stream),this.activeDevices.video.stream}catch(e){throw e}}async stopVideoInput(){return this.videoInputTaskQueue.add(()=>this.stopVideoInputTask())}async stopVideoInputTask(){try{if(this.chosenVideoInputIsTransformDevice()
17){this.releaseVideoTransformStream();return}this.stopTracksAndRemoveCallbacks("video")}finally{this.watchForDeviceChangesIfNecessary(),this.publishVideoInputDidChangeEvent(void 0)}}async chooseAudioOutput(e){this.audioOutputDeviceId=e,this.watchForDeviceChangesIfNecessary();let t=this.deviceInfoFromDeviceId("audiooutput",this.audioOutputDeviceId);this.publishAudioOutputDidChangeEvent(t),this.trace("chooseAudioOutput",e,null)}addDeviceChangeObserver(e){this.logger.info("adding device change observer"),this.deviceChangeObservers.add(e),this.watchForDeviceChangesIfNecessary(),this.trace("addDeviceChangeObserver")}removeDeviceChangeObserver(e){this.logger.info("removing device change observer"),this.deviceChangeObservers.delete(e),this.watchForDeviceChangesIfNecessary(),this.trace("removeDeviceChangeObserver")}createAnalyserNodeForAudioInput(){var e,t;if(!this.activeDevices.audio)return null;let i=null===(t=null===(e=this.transform)||void 0===e?void 0:e.nodes)||void 0===t?void 0:t.end;if(i){let e=i.context.createAnalyser();return e.removeOriginalInputs=()=>{try{i.disconnect(e)}catch(e){}},i.connect(e),e}return this.createAnalyserNodeForRawAudioInput()}createAnalyserNodeForRawAudioInput(){return this.activeDevices.audio?this.createAnalyserNodeForStream(this.activeDevices.audio.stream):null}createAnalyserNodeForStream(e){let t=C.getAudioContext(),i=t.createAnalyser(),n=t.createMediaStreamSource(e);return n.connect(i),this.trace("createAnalyserNodeForAudioInput"),i.removeOriginalInputs=()=>{try{n.disconnect(i)}catch(e){}},i}startVideoPreviewForVideoInput(e){if(!this.activeDevices.video){this.logger.warn("cannot bind video preview since video input device has not been chosen"),this.trace("startVideoPreviewForVideoInput",e.id);return}
17c.default.connectVideoStreamToVideoElement(this.chosenVideoTransformDevice?this.chosenVideoTransformDevice.outputMediaStream:this.activeDevices.video.stream,e,!0),this.trace("startVideoPreviewForVideoInput",e.id)}stopVideoPreviewForVideoInput(e){c.default.disconnectVideoStreamFromVideoElement(e,!1),this.trace("stopVideoPreviewForVideoInput",e.id)}setStatsCollector(e){this.statsCollector=e,this.chosenVideoTransformDevice instanceof l.default&&this.chosenVideoTransformDevice.setStatsCollector(e)}setDeviceLabelTrigger(e){if(this.deviceInfoCache){for(let e of this.deviceInfoCache)if(!e.label){this.deviceInfoCache=null;break}}this.deviceLabelTrigger=e,this.trace("setDeviceLabelTrigger")}mixIntoAudioInput(e){let t=null;return this.useWebAudio?(t=C.getAudioContext().createMediaStreamSource(e)).connect(this.getMediaStreamOutputNode()):this.logger.warn("WebAudio is not enabled, mixIntoAudioInput will not work"),this.trace("mixIntoAudioInput",e.id),t}chooseVideoInputQuality(e,t,i){let n=this.browserBehavior.requiresResolutionAlignment(e,t);this.videoInputQualitySettings=new S.default(n[0],n[1],i)}getVideoInputQualitySettings(){return this.videoInputQualitySettings}async acquireAudioInputStream(){return(this.activeDevices.audio||(this.logger.info("No audio device chosen, creating empty audio device"),await this.startAudioInput(null)),this.useWebAudio)?this.getMediaStreamDestinationNode().stream:this.activeDevices.audio.stream}async acquireVideoInputStream(){if(!this.activeDevices.video)throw Error("No video device chosen");return this.chosenVideoInputIsTransformDevice()?this.chosenVideoTransformDevice.outputMediaStream:this.activeDevices.video.stream}async acquireDisplayInputStream(e){throw Error("unsupported")}releaseAudioTransformStream(){this.logger.info("Stopping audio track for Web Audio graph"),this.stopTracksAndRemoveCallbacks("audio"),this.logger.info("Removing audio transform, if there is one."),this.removeTransform(),this.audioInputSourceNode&&(this.audioInputSourceNode.disconnect(),this.audioInputSourceNode=void 0),this.audioInputDestinationNode&&(this.audioInputDestinationNode.disconnect(),this.audioInputDestinationNode=void 0)}releaseVideoTransformStream(){this.logger.info("Stopping video track for transform"),this.stopTracksAndRemoveCallbacks("video"),this.logger.info("Disconnecting video transform"),this.chosenVideoTransformDevice.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=null}stopTracksAndRemoveCallbacks(e){let t=this.activeDevices[e];if(!t)return;let i=t.endedCallback,n=t.trackMuteCallback,r=t.trackUnmuteCallback;for(let s of t.stream.getTracks())s.stop(),i&&s.removeEventListener("ended",i),n&&s.removeEventListener("mute",n),r&&s.removeEventListener("unmute",r),delete t.endedCallback,delete t.trackMuteCallback,delete t.trackUnmuteCallback,delete this.activeDevices[e]}chosenVideoInputIsTransformDevice(){return!!this.chosenVideoTransformDevice}muteLocalAudioInputStream(){this.toggleLocalAudioInputStream(!1)}unmuteLocalAudioInputStream(){this.toggleLocalAudioInputStream(!0)}toggleLocalAudioInputStream(e){var t;let i=this.activeDevices.audio;if(this.useWebAudio&&(i=this.getMediaStreamDestinationNode()),i){for(let t of i.stream.getTracks())t.enabled!==e&&(t.enabled=e);!e!==this.muted&&(this.muted=!e,null===(t=this.transform)||void 0===t||t.device.mute(this.muted))}}static getIntrinsicDeviceId(e){if(!e)return;if("string"==typeof e)return e;if(e.id)return e.id;let t=e.deviceId;return t?"string"==typeof t||Array.isArray(t)?t:"string"==typeof t.exact||Array.isArray(t.exact)?t.exact:void 0:void 0}static createEmptyAudioDevice(){return C.synthesizeAudioDevice(0)}static synthesizeAudioDevice(e){let t=C.getAudioContext(),i=t.createMediaStreamDestination();if(e){let n=t.createGain();n.gain.value=.1,n.connect(i);let r=t.createOscillator();r.frequency.value=e,r.connect(n),r.start()}else{let e=t.createBufferSource();try{e.buffer=t.createBuffer(1,5*t.sampleRate,t.sampleRate)}catch(i){if(i&&"NotSupportedError"===i.name)e.buffer=t.createBuffer(1,5*C.defaultSampleRate,C.defaultSampleRate);else throw i}e.buffer.getChannelData(0)[0]=3e-4,e.loop=!0,e.connect(i),e.start()}return i.stream}async listDevicesOfKind(e,t){return(t||null===this.deviceInfoCache||!this.isWatchingForDeviceChanges())&&await this.updateDeviceInfoCacheFromBrowser(),this.listCachedDevicesOfKind(e)}async updateDeviceInfoCacheFromBrowser(){var e;if("undefined"==typeof MediaDeviceInfo){this.deviceInfoCache=[];return}let t=await navigator.mediaDevices.enumerateDevices(),i=!0;for(let e of t)if(!e.label){i=!1;break}if(!i)try{this.logger.info("attempting to trigger media device labels since they are hidden");let e=await this.deviceLabelTrigger();for(let i of(t=await navigator.mediaDevices.enumerateDevices(),e.getTracks()))i.stop()}catch(t){this.logger.info("unable to get media device labels"),null===(e=this.eventController)||void 0===e||e.publishEvent("deviceLabelTriggerFailed",{deviceLabelTriggerErrorMessage:this.getErrorMessage(t)})}
17this.logger.debug(`Update device info cache with devices: ${JSON.stringify(t)}`),this.deviceInfoCache=t}listCachedDevicesOfKind(e){let t=[];if(this.deviceInfoCache)for(let i of this.deviceInfoCache)i.kind===e&&t.push(i);return t}async handleDeviceChange(){if(null===this.deviceInfoCache)return;if(this.alreadyHandlingDeviceChange){a.default.nextTick(()=>{this.handleDeviceChange()});return}this.alreadyHandlingDeviceChange=!0;let e=this.listCachedDevicesOfKind("audioinput"),t=this.listCachedDevicesOfKind("videoinput"),i=this.listCachedDevicesOfKind("audiooutput");await this.updateDeviceInfoCacheFromBrowser();let n=this.listCachedDevicesOfKind("audioinput"),r=this.listCachedDevicesOfKind("videoinput"),s=this.listCachedDevicesOfKind("audiooutput");this.forEachObserver(a=>{this.areDeviceListsEqual(e,n)||d.Maybe.of(a.audioInputsChanged).map(e=>e.bind(a)(n)),this.areDeviceListsEqual(t,r)||d.Maybe.of(a.videoInputsChanged).map(e=>e.bind(a)(r)),this.areDeviceListsEqual(i,s)||d.Maybe.of(a.audioOutputsChanged).map(e=>e.bind(a)(s))}),this.alreadyHandlingDeviceChange=!1}async handleDeviceStreamEnded(e,t){try{"audio"===e?(this.useWebAudio&&this.browserBehavior.requiresAudioContextResetOnDeviceFailureForWebAudio()?(this.logger.warn("Audio input device which was active is no longer available, suspending and resuming audio context before resetting to empty device to ensure packets are sent"),await this.stopAudioInput(),C.suspendAudioContext(),C.resumeAudioContext()):this.logger.warn("Audio input device which was active is no longer available, resetting to empty device to ensure packets are sent"),await this.startAudioInput(null)):(this.logger.warn("Video input device which was active is no longer available, stopping video"),await this.stopVideoInput())}catch(e){this.logger.error("Failed to choose null device after stream ended.")}"audio"===e?this.forEachObserver(e=>{d.Maybe.of(e.audioInputStreamEnded).map(i=>i.bind(e)(t))}):this.forEachObserver(e=>{d.Maybe.of(e.videoInputStreamEnded).map(i=>i.bind(e)(t))})}forEachObserver(e){for(let t of this.deviceChangeObservers)a.default.nextTick(()=>{this.deviceChangeObservers.has(t)&&e(t)})}forEachMediaStreamBrokerObserver(e){for(let t of this.mediaStreamBrokerObservers)a.default.nextTick(()=>{this.mediaStreamBrokerObservers.has(t)&&e(t)})}areDeviceListsEqual(e,t){return JSON.stringify(e.map(e=>JSON.stringify(e)).sort())===JSON.stringify(t.map(e=>JSON.stringify(e)).sort())}intrinsicDeviceAsMediaStream(e){return e&&e.id?e:null}hasSameMediaStreamId(e,t,i){var n,r,s,a;let o;return"audio"===e?!!(o=null==i?void 0:i.audio.streamId)&&o===(null===(r=null===(n=t.constraints)||void 0===n?void 0:n.audio)||void 0===r?void 0:r.streamId):!!(o=null==i?void 0:i.video.streamId)&&o===(null===(a=null===(s=null==t?void 0:t.constraints)||void 0===s?void 0:s.video)||void 0===a?void 0:a.streamId)}hasSameGroupId(e,t,i){if(""===e)return!0;let n=C.getIntrinsicDeviceId(i);return this.logger.debug(`Checking deviceIds ${n} of type ${typeof n} with groupId ${e}`),"string"==typeof n&&e===this.getGroupIdFromDeviceId(t,n)}getGroupIdFromDeviceId(e,t){if(null!==this.deviceInfoCache){let i=this.listCachedDevicesOfKind(`${e}input`).find(e=>e.deviceId===t);if(i&&i.groupId)return this.logger.debug(`GroupId of deviceId ${t} found in cache is ${i.groupId}`),i.groupId}return this.logger.debug(`GroupId of deviceId ${t} found in cache is empty`),""}handleGetUserMediaError(e,t){if(!e)throw new f.default(e);switch(e.name){case"NotReadableError":case"TrackStartError":throw new p.default(e);case"NotFoundError":case"DevicesNotFoundError":throw new m.default(e);case"NotAllowedError":case"PermissionDeniedError":case"SecurityError":if(t&&t<C.permissionDeniedOriginDetectionThresholdMs)throw new v.default(e,"Permission denied by browser");throw new v.default(e,"Permission denied by user");case"OverconstrainedError":case"ConstraintNotSatisfiedError":throw new g.default(e);case"TypeError":throw new b.default(e);default:throw new f.default(e)}}matchesDeviceSelection(e,t,i,n){return!!(i&&i.stream.active&&(this.hasSameMediaStreamId(e,i,n)||null!==i.groupId&&this.hasSameGroupId(i.groupId,e,t)))&&(this.logger.debug(`Compare current device constraint ${JSON.stringify(i.constraints)} to proposed constraints ${JSON.stringify(n)}`),i.matchesConstraints(n))}async chooseInputIntrinsicDevice(e,t){var i,n;let r=this.getMediaStreamConstraints(e,t);if(this.matchesDeviceSelection(e,t,this.activeDevices[e],r)){this.logger.info(`reusing existing ${e} input device`);return}this.activeDevices[e]&&this.activeDevices[e].stream&&this.stopTracksAndRemoveCallbacks(e);let s=Date.now(),a=new h.default;try{this.logger.info(`requesting new ${e} device with constraint ${JSON.stringify(r)}`);let i=this.intrinsicDeviceAsMediaStream(t);"audio"===e&&null===t?(a.stream=C.createEmptyAudioDevice(),a.constraints=null):(i?(this.logger.info(`using media stream ${i.id} for ${e} device`),a.stream=i):a.stream=await navigator.mediaDevices.getUserMedia(r),a.constraints=r),await this.handleNewInputDevice(e,a)}catch(l){let o=this.getErrorMessage(l);"audio"===e?null===(i=this.eventController)||void 0===i||i.publishEvent("audioInputFailed",{audioInputErrorMessage:o}):null===(n=this.eventController)||void 0===n||n.publishEvent("videoInputFailed",{videoInputErrorMessage:o}),this.logger.error(`failed to get ${e} device for constraints ${JSON.stringify(r)}: ${o}`);let d=!0;if(l&&"constraint"in l&&(this.logger.error(`Over-constrained by constraint: ${l.constraint}`),this.useMediaConstraintsFallback)){let i=this.getMediaStreamConstraints(e,t,!0),n=JSON.stringify(i);if(n!==JSON.stringify(r)){this.logger.info(`retry requesting new ${e} device with minimal constraint ${n}`);try{a.stream=await navigator.mediaDevices.getUserMedia(i),a.constraints=i,await this.handleNewInputDevice(e,a),d=!1}catch(t){this.logger.error(`failed to get ${e} device for constraints ${n}: ${this.getErrorMessage(t)}`)}}}if(d){if("audio"===e){this.logger.info(`choosing null ${e} device instead`);try{a.stream=C.createEmptyAudioDevice(),a.constraints=null,await this.handleNewInputDevice(e,a)}catch(t){this.logger.error(`failed to choose null ${e} device. ${t.name}: ${t.message}`)}}this.handleGetUserMediaError(l,Date.now()-s)}}finally{this.watchForDeviceChangesIfNecessary()}}getErrorMessage(e){return e?e.name&&e.message?`${e.name}: ${e.message}`:e.name?e.name:e.message?e.message:"UnknownError":"UnknownError"}async handleNewInputDevice(e,t){var i;this.logger.info(`got ${e} device for constraints ${JSON.stringify(t.constraints)}`);let n=null===(i=this.getMediaTrackSettings(t.stream))||void 0===i?void 0:i.deviceId;
17t.groupId=n?this.getGroupIdFromDeviceId(e,n):"",this.activeDevices[e]=t,this.logger.debug(`Set activeDevice to ${JSON.stringify(t)}`),this.watchForDeviceChangesIfNecessary();let r=t.stream.getTracks()[0];if(r&&(t.endedCallback=()=>{this.activeDevices[e]&&this.activeDevices[e].stream===t.stream&&(this.handleDeviceStreamEnded(e,n),delete t.endedCallback)},r.addEventListener("ended",t.endedCallback,{once:!0})),"audio"===e){let e=t.stream.getAudioTracks()[0];if(e){let i=e.getSettings().deviceId||t.stream;t.trackMuteCallback=()=>{this.mediaStreamMuteObserver(i,!0)},t.trackUnmuteCallback=()=>{this.mediaStreamMuteObserver(i,!1)},e.addEventListener("mute",t.trackMuteCallback,{once:!1}),e.addEventListener("unmute",t.trackUnmuteCallback,{once:!1}),this.logger.debug("Notifying mute state after selection"),e.muted?t.trackMuteCallback():t.trackUnmuteCallback()}}}calculateMediaStreamConstraints(e,t,i,n){if(n&&1===this.listCachedDevicesOfKind(`${e}input`).length)return!0;let r={};return(this.browserBehavior.requiresNoExactMediaStreamConstraints()?r.deviceId=t:r.deviceId={exact:t},i&&(r.groupId=i),n)?r:"video"===e?(r.width={ideal:this.videoInputQualitySettings.videoWidth}
17,r.height={ideal:this.videoInputQualitySettings.videoHeight},r.frameRate={ideal:this.videoInputQualitySettings.videoFrameRate},r):(this.supportSampleRateConstraint()&&(r.sampleRate={ideal:C.defaultSampleRate}),this.supportSampleSizeConstraint()&&(r.sampleSize={ideal:C.defaultSampleSize}),this.supportChannelCountConstraint()&&(r.channelCount={ideal:C.defaultChannelCount}),{echoCancellation:!0,googEchoCancellation:!0,googEchoCancellation2:!0,googAutoGainControl:!0,googAutoGainControl2:!0,googNoiseSuppression:!0,googNoiseSuppression2:!0,googHighpassFilter:!0,...r})}getMediaStreamConstraintsFromTrackConstraints(e,t){return"audio"===e?{audio:t}:{video:t}}getMediaStreamConstraints(e,t,i=!1){let n={};if(!t)return null;let r=this.intrinsicDeviceAsMediaStream(t);if(r)return n.streamId=r.id,this.getMediaStreamConstraintsFromTrackConstraints(e,n);if("string"==typeof t){let r="";return this.browserBehavior.requiresGroupIdMediaStreamConstraints()&&(null!==this.deviceInfoCache?r=this.getGroupIdFromDeviceId(e,t):this.logger.error("Device cache is not populated. Please make sure to call list devices first")),n=this.calculateMediaStreamConstraints(e,t,r,i),this.getMediaStreamConstraintsFromTrackConstraints(e,n)}return n="object"==typeof t&&"deviceId"in t&&"groupId"in t&&"kind"in t&&"label"in t?this.calculateMediaStreamConstraints(e,t.deviceId,t.groupId,i):t,this.getMediaStreamConstraintsFromTrackConstraints(e,n)}deviceInfoFromDeviceId(e,t){if(null===this.deviceInfoCache)return null;for(let i of this.deviceInfoCache)if(i.kind===e&&i.deviceId===t)return i;return null}hasAppliedTransform(){return!!this.transform}isMediaStreamReusableByDeviceId(e,t){if(!e||!e.active||!t)return!1;if(t.id)return e.id===t.id;let i=this.getMediaTrackSettings(e);if(!i.deviceId)return!1;let n=C.getIntrinsicDeviceId(t);return"string"==typeof n&&i.deviceId===n}getMediaTrackSettings(e){var t;return null===(t=e.getTracks()[0])||void 0===t?void 0:t.getSettings()}reconnectAudioInputs(){if(!this.audioInputSourceNode)return;this.audioInputSourceNode.disconnect();let e=this.getMediaStreamOutputNode();this.audioInputSourceNode.connect(e)}setTransform(e,t){var i,n;null===(n=null===(i=this.transform)||void 0===i?void 0:i.nodes)||void 0===n||n.end.disconnect(),this.transform={nodes:t,device:e};let r=null==t?void 0:t.end,s=this.getMediaStreamDestinationNode();this.logger.debug(`Connecting transform node ${r} to destination ${s}.`),null==r||r.connect(s),this.reconnectAudioInputs()}removeTransform(){var e;let t=this.transform;if(t)return null===(e=this.transform.nodes)||void 0===e||e.end.disconnect(),this.transform=void 0,this.reconnectAudioInputs(),t}attachAudioInputStreamToAudioContext(e){var t;null===(t=this.audioInputSourceNode)||void 0===t||t.disconnect(),this.audioInputSourceNode=C.getAudioContext().createMediaStreamSource(e);let i=this.getMediaStreamOutputNode();this.audioInputSourceNode.connect(i)}getMediaStreamDestinationNode(){return this.audioInputDestinationNode||(this.audioInputDestinationNode=C.getAudioContext().createMediaStreamDestination()),this.audioInputDestinationNode}getMediaStreamOutputNode(){var e,t;return(null===(t=null===(e=this.transform)||void 0===e?void 0:e.nodes)||void 0===t?void 0:t.start)||this.getMediaStreamDestinationNode()}static setDefaultLatencyHint(e){C.defaultLatencyHint=e}static getAudioContext(){if(!C.audioContext){let e={};navigator.mediaDevices.getSupportedConstraints().sampleRate&&(e.sampleRate=C.defaultSampleRate),new r.default().requiresPlaybackLatencyHintForAudioContext()&&(e.latencyHint="playback"),C.defaultLatencyHint&&(e.latencyHint=C.defaultLatencyHint),C.audioContext=new(window.AudioContext||window.webkitAudioContext)(e)}return C.audioContext}static async suspendAudioContext(){return C.audioContext?C.audioContext.suspend():Promise.resolve()}static async resumeAudioContext(){return C.audioContext?C.audioContext.resume():Promise.resolve()}static closeAudioContext(){if(C.audioContext)try{C.audioContext.close()}catch(e){}C.audioContext=null}addMediaStreamBrokerObserver(e){this.mediaStreamBrokerObservers.add(e)}removeMediaStreamBrokerObserver(e){this.mediaStreamBrokerObservers.delete(e)}publishVideoInputDidChangeEvent(e){this.forEachMediaStreamBrokerObserver(t=>{t.videoInputDidChange&&t.videoInputDidChange(e)}
17),this.pushVideoMeetingStateForPermissions(e)}publishAudioInputDidChangeEvent(e){this.forEachMediaStreamBrokerObserver(t=>{t.audioInputDidChange&&t.audioInputDidChange(e)}),this.pushAudioMeetingStateForPermissions(e)}publishAudioOutputDidChangeEvent(e){this.forEachMediaStreamBrokerObserver(t=>{t.audioOutputDidChange&&t.audioOutputDidChange(e)})}supportSampleRateConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().sampleRate}supportSampleSizeConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().sampleSize}supportChannelCountConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().channelCount}trace(e,t,i){let n=`API/DefaultDeviceController/${e}`;void 0!==t&&(n+=` ${JSON.stringify(t)}`),void 0!==i&&(n+=` -> ${JSON.stringify(i)}`),this.logger.info(n)}}C.permissionDeniedOriginDetectionThresholdMs=500,C.defaultVideoWidth=960,C.defaultVideoHeight=540,C.defaultVideoFrameRate=15,C.defaultSampleRate=48e3,C.defaultSampleSize=16,C.defaultChannelCount=1,C.audioContext=null,t.default=C},22752:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.groupId=""}matchesConstraints(e){return JSON.stringify(this.constraints)===JSON.stringify(e)}}t.default=i},64212:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i extends Error{constructor(e,t){super(t||"Error fetching device."),this.cause=e,this.name="GetUserMediaError"}}t.default=i},96225:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.NoOpDeviceControllerWithEventController=void 0;let r=n(i(87617)),s=n(i(31278));class a extends r.default{constructor(e){super(),this.destroyed=!1}async destroy(){this.destroyed=!0}listAudioInputDevices(){return Promise.resolve([])}listVideoInputDevices(){return Promise.resolve([])}listAudioOutputDevices(){return Promise.resolve([])}startAudioInput(e){return Promise.reject()}stopAudioInput(){return Promise.resolve()}startVideoInput(e){return Promise.reject()}stopVideoInput(){return Promise.resolve()}chooseAudioOutput(e){return Promise.reject()}addDeviceChangeObserver(e){}removeDeviceChangeObserver(e){}createAnalyserNodeForAudioInput(){return null}startVideoPreviewForVideoInput(e){}stopVideoPreviewForVideoInput(e){}setDeviceLabelTrigger(e){}mixIntoAudioInput(e){return null}chooseVideoInputQuality(e,t,i){}getVideoInputQualitySettings(){return s.default.VideoDisabled}}t.default=a;class o extends a{constructor(e){super(),this.eventController=e}}t.NoOpDeviceControllerWithEventController=o},92613:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(64212));class s extends r.default{constructor(e){super(e),this.name="NotFoundError"}}t.default=s},27688:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(64212));class s extends r.default{constructor(e){super(e),this.name="NotReadableError"}}t.default=s},88254:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(64212));class s extends r.default{constructor(e,t){super(e),this.constraint=t,this.name="OverconstrainedError"}}t.default=s},27578:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(64212));class s extends r.default{constructor(e,t){super(e,t),this.name="PermissionDeniedError"}}t.default=s},80354:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e){this.inner=e}async mute(e){}async stop(){var e;null===(e=this.node)||void 0===e||e.disconnect()}async intrinsicDevice(){return this.inner}async createAudioNode(e){var t;return null===(t=this.node)||void 0===t||t.disconnect(),this.node=await this.createSingleAudioNode(e),{start:this.node,end:this.node}}}t.default=i},77916:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
17dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(64212));class s extends r.default{constructor(e){super(e),this.name="TypeError"}}t.default=s},31278:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i){this.videoWidth=e,this.videoHeight=t,this.videoFrameRate=i}equals(e){return this.videoWidth===e.videoWidth&&this.videoHeight===e.videoHeight&&this.videoFrameRate===e.videoFrameRate}}i.VideoDisabled=new i(0,0,0),i.VideoResolutionHD=new i(1280,720,30),i.VideoResolutionFHD=new i(1920,1080,30),i.VideoResolutionUHD=new i(3840,2160,30),t.default=i},88295:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isVideoTransformDevice=function(e){return!!e&&"object"==typeof e&&"transformStream"in e&&"stop"in e&&"intrinsicDevice"in e}},32681:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t){if(this.devicePixelRatioSource=e,this.observerQueue=new Set,this.mediaQueryListener=()=>{this.observerQueue.forEach(e=>{e.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio())})},"undefined"==typeof window)return;let i=matchMedia(`(resolution: ${this.devicePixelRatioSource.devicePixelRatio()}dppx)`);"function"==typeof i.addEventListener?(i.addEventListener("change",this.mediaQueryListener),this.mediaQueryList=i):"function"==typeof i.addListener?(i.addListener(this.mediaQueryListener),this.mediaQueryList=i):t.warn("ignoring DefaultDevicePixelRatioMonitor")}async destroy(){this.mediaQueryList&&("function"==typeof this.mediaQueryList.addEventListener?this.mediaQueryList.removeEventListener("change",this.mediaQueryListener):this.mediaQueryList.removeListener(this.mediaQueryListener)),delete this.mediaQueryListener,this.observerQueue.clear()}registerObserver(e){this.observerQueue.add(e),e.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio())}removeObserver(e){this.observerQueue.delete(e)}}t.default=i},70615:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{devicePixelRatio(){return"undefined"!=typeof window&&window&&window.devicePixelRatio?window.devicePixelRatio:1}}t.default=i},31901:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(10832),s=n(i(59503)),a=n(i(6030)),o=n(i(50131));class d{constructor(e){this.worker=null,this.workerURL=null,this.observers=new Set,this.disabled=!1,this.disabledTransforms={},this.redManager=null,this.metricsManager=null,this.supportsRTCScriptTransform=!!window.RTCRtpScriptTransform,this.supportsInsertableStreams=!!RTCRtpSender.prototype.createEncodedStreams,this.logger=e,this.logger.info(`[EncodedTransform] API support - RTCRtpScriptTransform: ${this.supportsRTCScriptTransform}, createEncodedStreams: ${this.supportsInsertableStreams}`),this.supportsRTCScriptTransform||this.supportsInsertableStreams||(this.disabled=!0)}isEnabled(){return!this.disabled}async start(e){this.disabledTransforms=e||{};let t=await this.createWorker();(null==e?void 0:e.redundantAudio)||(this.redManager=new o.default(t,this.logger),await this.redManager.start()),this.metricsManager=new a.default(t,this.logger),await this.metricsManager.start(),this.logger.info("DefaultEncodedTransformManager initialized")}redundantAudioEncodeTransformManager(){return this.redManager||void 0}metricsTransformManager(){return this.metricsManager||void 0}setupAudioSenderTransform(e){this.setupTransform(e,"send","audio")}setupAudioReceiverTransform(e){this.setupTransform(e,"receive","audio")}setupVideoSenderTransform(e){this.setupTransform(e,"send","video")}setupVideoReceiverTransform(e){this.setupTransform(e,"receive","video")}setupTransform(e,t,i){if("send"===t&&!(e instanceof RTCRtpSender))throw Error('Operation "send" requires an RTCRtpSender');if("receive"===t&&!(e instanceof RTCRtpReceiver))throw Error('Operation "receive" requires an RTCRtpReceiver');if(!this.worker)throw Error("Worker not initialized");let n={operation:t,mediaType:i,disabledTransforms:this.disabledTransforms};if(this.supportsRTCScriptTransform)e.transform=new RTCRtpScriptTransform(this.worker,n);else if(this.supportsInsertableStreams){let r=e.createEncodedStreams();this.worker.postMessage({msgType:"StartEncodedTransformWorker",options:n,[i]:{[t]:r}},[r.readable,r.writable])}}async stop(){var e,t;await (null===(e=this.redManager)||void 0===e?void 0:e.stop()),await (null===(t=this.metricsManager)||void 0===t?void 0:t.stop()),this.redManager&&(this.redManager=null),this.metricsManager&&(this.metricsManager=null),this.worker&&(this.worker.terminate(),this.worker=null),this.workerURL&&(URL.revokeObjectURL(this.workerURL),this.workerURL=null),this.logger.info("DefaultEncodedTransformManager stopped")}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}handleWorkerMessage(e){var t,i,n;let s=e.data;if(s.type===r.COMMON_MESSAGE_TYPES.LOG){this.logger.info(`[${s.transformName}] ${null===(t=s.message)||void 0===t?void 0:t.text}`);return}(null===(i=this.redManager)||void 0===i?void 0:i.transformNames().includes(s.transformName))&&this.redManager.handleWorkerMessage(s),(null===(n=this.metricsManager)||void 0===n?void 0:n.transformNames().includes(s.transformName))&&this.metricsManager.handleWorkerMessage(s)}handleWorkerError(e){this.logger.error(`Web Worker error: ${e.message} at ${e.filename}:${e.lineno}:${e.colno}`),this.disable();let t=Error(`Web Worker error: ${e.message}`);for(let e of this.observers)try{e.onEncodedTransformWorkerManagerFailed(t)}catch(e){this.logger.error(`Error notifying observer: ${e}`)}}async createWorker(){try{return this.workerURL=URL.createObjectURL(new Blob([s.default],{type:"application/javascript"})),this.worker=new Worker(this.workerURL),this.worker.onmessage=this.handleWorkerMessage.bind(this),this.worker.onerror=this.handleWorkerError.bind(this),this.logger.info("Web Worker created"),this.worker}catch(e){throw this.logger.error(`Failed to create Web Worker: ${e}`),this.disable(),this.workerURL&&(URL.revokeObjectURL(this.workerURL),this.workerURL=null),e}}async disable(){this.disabled=!0,this.logger.info("Media transforms disabled"),await this.stop()}}t.default=d},82904:function(e,t){"use strict";
17Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t){this.worker=e,this.logger=t}postMessage(e){this.worker.postMessage(e)}}t.default=i},6030:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(10832),s=i(36292),a=n(i(68414)),o=n(i(82904));class d extends o.default{constructor(e,t){super(e,t),this.audioSendMetrics={},this.audioReceiveMetrics={},this.videoSendMetrics={},this.videoReceiveMetrics={},this.observers=new Set,this.metricsReportingScheduler=null,this.METRICS_REPORTING_INTERVAL_MS=1e3}async start(){this.startMetricsReporting()}transformNames(){return[r.TRANSFORM_NAMES.AUDIO_SENDER,r.TRANSFORM_NAMES.AUDIO_RECEIVER,r.TRANSFORM_NAMES.VIDEO_SENDER,r.TRANSFORM_NAMES.VIDEO_RECEIVER]}handleWorkerMessage(e){var t,i;if(e.type===s.MEDIA_METRICS_MESSAGE_TYPES.NEW_SSRC){let n,s,a;let o=null===(t=e.message)||void 0===t?void 0:t.ssrc;if(!o){this.logger.warn("Received NEW_SSRC message without ssrc, ignoring");return}let d=parseInt(o,10);if(isNaN(d)){this.logger.warn(`Received NEW_SSRC message with invalid ssrc: ${o}, ignoring`);return}let l=e.message.firstFrameTimestampMs;if(void 0!==l){let e=parseInt(l,10);isNaN(e)||(n=e)}switch(e.transformName){case r.TRANSFORM_NAMES.AUDIO_SENDER:s="audio",a="send";break;case r.TRANSFORM_NAMES.AUDIO_RECEIVER:s="audio",a="receive";break;case r.TRANSFORM_NAMES.VIDEO_SENDER:s="video",a="send";break;case r.TRANSFORM_NAMES.VIDEO_RECEIVER:s="video",a="receive"}if(s&&a)for(let e of this.observers)try{null===(i=e.onFirstPacketReceived)||void 0===i||i.call(e,s,a,d,n)}catch(e){this.logger.error(`Error notifying first packet observer: ${e}`)}return}if(e.type===r.COMMON_MESSAGE_TYPES.METRICS)try{let t=JSON.parse(e.message.metrics);switch(e.transformName){case r.TRANSFORM_NAMES.AUDIO_SENDER:this.audioSendMetrics=t;break;case r.TRANSFORM_NAMES.AUDIO_RECEIVER:this.audioReceiveMetrics=t;break;case r.TRANSFORM_NAMES.VIDEO_SENDER:this.videoSendMetrics=t;break;case r.TRANSFORM_NAMES.VIDEO_RECEIVER:this.videoReceiveMetrics=t}}catch(e){this.logger.warn(`Failed to handle metrics message: ${e}`)}}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}startMetricsReporting(){this.metricsReportingScheduler=new a.default(this.METRICS_REPORTING_INTERVAL_MS),this.metricsReportingScheduler.start(()=>{this.reportMetrics()})}reportMetrics(){var e;let t={audioSendMetrics:{...this.audioSendMetrics},audioReceiveMetrics:{...this.audioReceiveMetrics},videoSendMetrics:{...this.videoSendMetrics},videoReceiveMetrics:{...this.videoReceiveMetrics}};for(let i of this.observers)try{null===(e=i.encodedTransformMediaMetricsDidReceive)||void 0===e||e.call(i,t)}catch(e){this.logger.error(`Error notifying media metrics observer: ${e}`)}}async stop(){this.metricsReportingScheduler&&(this.metricsReportingScheduler.stop(),this.metricsReportingScheduler=null),this.observers.clear(),this.audioSendMetrics={},this.audioReceiveMetrics={},this.videoSendMetrics={},this.videoReceiveMetrics={}}}t.default=d},50131:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(55728)),s=i(10832),a=i(45617),o=n(i(82904));class d extends o.default{constructor(){super(...arguments),this.numRedundantEncodings=0,this.redundancyEnabled=!0,this.metrics={totalAudioPacketsLost:0,totalAudioPacketsExpected:0,totalAudioPacketsRecoveredRed:0,totalAudioPacketsRecoveredFec:0},this.observers=new Set,this.audioMetricsHistory=[],this.currentNumRedundantEncodings=0,this.lastRedHolddownTimerStartTimestampMs=0,this.lastHighPacketLossEventTimestampMs=0,this.lastAudioRedTurnOffTimestampMs=0,this.maxAudioMetricsHistory=20,this.audioRedPacketLossShortEvalPeriodMs=5e3,this.audioRedPacketLossLongEvalPeriodMs=15e3,this.audioRedHoldDownTimeMs=3e5,this.redRecoveryTimeMs=6e4}transformNames(){return[s.TRANSFORM_NAMES.REDUNDANT_AUDIO]}handleWorkerMessage(e){if(e.type===s.COMMON_MESSAGE_TYPES.METRICS)try{let t=JSON.parse(e.message.metrics),i=parseInt(e.message.ssrc,10);this.updateMetrics(t),this.notifyObservers(i)}catch(e){this.logger.warn(`Failed to handle RED metrics message: ${e}`)}}setAudioPayloadTypes(e){let t=e.get("opus")||0,i=e.get("red")||0,n={transformName:s.TRANSFORM_NAMES.REDUNDANT_AUDIO,type:a.REDUNDANT_AUDIO_MESSAGE_TYPES.OPUS_PAYLOAD_TYPE,message:{payloadType:t.toString()}};this.postMessage(n);let r={transformName:s.TRANSFORM_NAMES.REDUNDANT_AUDIO,type:a.REDUNDANT_AUDIO_MESSAGE_TYPES.RED_PAYLOAD_TYPE,message:{payloadType:i.toString()}};this.postMessage(r),this.logger.info(`[AudioRed] Set payload types - Opus: ${t}, RED: ${i}`)}updateNumRedundantEncodings(e){let t=0;if(e>10?t=2:e>5&&(t=1),t!==this.numRedundantEncodings){this.numRedundantEncodings=t;let i={type:a.REDUNDANT_AUDIO_MESSAGE_TYPES.UPDATE_NUM_REDUNDANT_ENCODINGS,transformName:s.TRANSFORM_NAMES.REDUNDANT_AUDIO,message:{numRedundantEncodings:t.toString()}};this.postMessage(i),this.logger.info(`[AudioRed] Updated redundant encodings to ${t} (packet loss: ${e}%)`)}}setRedundancyEnabled(e){if(this.redundancyEnabled===e)return;this.redundancyEnabled=e;let t={type:e?a.REDUNDANT_AUDIO_MESSAGE_TYPES.ENABLE:a.REDUNDANT_AUDIO_MESSAGE_TYPES.DISABLE,transformName:s.TRANSFORM_NAMES.REDUNDANT_AUDIO};this.postMessage(t),this.logger.info(`[AudioRed] Redundancy ${e?"enabled":"disabled"}`)}metricsDidReceive(e){let{currentTimestampMs:t}=e,i=e.getRTCStatsReport(),n=0,r=0,s=0;
17i.forEach(e=>{"audio"===e.kind&&("outbound-rtp"===e.type?r=e.packetsSent:"remote-inbound-rtp"===e.type&&(n=e.timestamp,s=e.packetsLost))}),(0===this.audioMetricsHistory.length||n>this.audioMetricsHistory[this.audioMetricsHistory.length-1].timestampMs&&r>this.audioMetricsHistory[this.audioMetricsHistory.length-1].totalPacketsSent)&&this.audioMetricsHistory.push({timestampMs:n,totalPacketsSent:r,totalPacketsLost:s}),this.audioMetricsHistory.length>this.maxAudioMetricsHistory&&this.audioMetricsHistory.shift();let a=Math.max(this.lossPercent(this.audioRedPacketLossShortEvalPeriodMs),this.lossPercent(this.audioRedPacketLossLongEvalPeriodMs)),[o,l]=d.getNumRedundantEncodingsForPacketLoss(a);if(l){this.lastHighPacketLossEventTimestampMs=t,this.redundancyEnabled&&(this.setRedundancyEnabled(!1),this.lastAudioRedTurnOffTimestampMs=t);return}if(!this.redundancyEnabled){let e=t-this.lastAudioRedTurnOffTimestampMs,i=t-this.lastHighPacketLossEventTimestampMs;if(e>=this.audioRedPacketLossLongEvalPeriodMs&&i<this.redRecoveryTimeMs)return;this.setRedundancyEnabled(!0),this.maybeResetHoldDownTimer(t)}this.shouldUpdateAudioRedWorkerEncodings(t,o)&&this.updateNumRedundantEncodings(a)}lossPercent(e){if(this.audioMetricsHistory.length<2)return 0;let t=this.audioMetricsHistory[this.audioMetricsHistory.length-1].timestampMs,i=this.audioMetricsHistory[this.audioMetricsHistory.length-1].totalPacketsSent,n=this.audioMetricsHistory[this.audioMetricsHistory.length-1].totalPacketsLost;for(let r=this.audioMetricsHistory.length-2;r>=0;r--)if(t-this.audioMetricsHistory[r].timestampMs>=e)return Math.max(0,Math.min((n-this.audioMetricsHistory[r].totalPacketsLost)/(i-this.audioMetricsHistory[r].totalPacketsSent)*100,100));return 0}static getNumRedundantEncodingsForPacketLoss(e){let t=0,i=!1;return e<=8?t=0:e<=18?t=1:e<=75?t=2:(t=0,i=!0),[t,i]}shouldUpdateAudioRedWorkerEncodings(e,t){return this.currentNumRedundantEncodings===t?(this.maybeResetHoldDownTimer(e),!1):t<this.currentNumRedundantEncodings&&e-this.lastRedHolddownTimerStartTimestampMs<this.audioRedHoldDownTimeMs?(this.logger.debug(`[RED] Hold-down active: ${(e-this.lastRedHolddownTimerStartTimestampMs)/1e3}s / ${this.audioRedHoldDownTimeMs/1e3}s`),!1):(this.currentNumRedundantEncodings=t,this.maybeResetHoldDownTimer(e),!0)}maybeResetHoldDownTimer(e){this.currentNumRedundantEncodings>0&&(this.lastRedHolddownTimerStartTimestampMs=e)}async start(){}async stop(){this.observers.clear(),this.audioMetricsHistory=[]}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}updateMetrics(e){this.metrics={...e}}notifyObservers(e){if(0===this.observers.size)return;let t=new r.default;for(let i of(t.currentTimestampMs=Date.now(),t.ssrc=e,t.totalAudioPacketsLost=this.metrics.totalAudioPacketsLost,t.totalAudioPacketsExpected=this.metrics.totalAudioPacketsExpected,t.totalAudioPacketsRecoveredRed=this.metrics.totalAudioPacketsRecoveredRed,t.totalAudioPacketsRecoveredFec=this.metrics.totalAudioPacketsRecoveredFec,this.observers))i.recoveryMetricsDidReceive(t)}}t.default=d},10832:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.COMMON_MESSAGE_TYPES=t.TRANSFORM_NAMES=void 0,t.TRANSFORM_NAMES={REDUNDANT_AUDIO:"AudioRed",AUDIO_SENDER:"AudioSender",AUDIO_RECEIVER:"AudioReceiver",VIDEO_SENDER:"VideoSender",VIDEO_RECEIVER:"VideoReceiver"},t.COMMON_MESSAGE_TYPES={LOG:"Log",METRICS:"Metrics"};class i{constructor(){this.shouldLog=!0}transformName(){return this.constructor.name}handleMessage(e){}log(e){this.shouldLog&&self.postMessage({type:t.COMMON_MESSAGE_TYPES.LOG,transformName:this.transformName(),message:{text:e}})}}t.default=i},36292:function(e,t,i){"use strict";var n,r=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);
17(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return(n=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i=n(e),a=0;a<i.length;a++)"default"!==i[a]&&r(t,e,i[a]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.VideoReceiverMetricsTransform=t.VideoSenderMetricsTransform=t.AudioReceiverMetricsTransform=t.AudioSenderMetricsTransform=t.MEDIA_METRICS_MESSAGE_TYPES=void 0;let o=a(i(10832));t.MEDIA_METRICS_MESSAGE_TYPES={NEW_SSRC:"NewSSRC"};class d extends o.default{constructor(){super(...arguments),this.metricsMap=new Map,this.reportIntervalMs=500,this.lastReportTime=0}transform(e,i){var n;let r=(null===(n=e.getMetadata)||void 0===n?void 0:n.call(e).synchronizationSource)||0,s=this.metricsMap.get(r);s||(s={packetCount:0,timestamp:0},this.metricsMap.set(r,s),this.log(`Created metrics for SSRC ${r}`),self.postMessage({type:t.MEDIA_METRICS_MESSAGE_TYPES.NEW_SSRC,transformName:this.transformName(),message:{ssrc:String(r),firstFrameTimestampMs:String(Date.now())}})),s.packetCount++,s.timestamp=e.timestamp,i.enqueue(e);let a=Date.now();a-this.lastReportTime>=this.reportIntervalMs&&(this.reportMetrics(),this.lastReportTime=a)}reportMetrics(){let e={};for(let[t,i]of this.metricsMap.entries())e[t]={ssrc:t,...i};self.postMessage({type:o.COMMON_MESSAGE_TYPES.METRICS,transformName:this.transformName(),message:{metrics:JSON.stringify(e)}})}}class l extends d{transformName(){return o.TRANSFORM_NAMES.AUDIO_SENDER}}t.AudioSenderMetricsTransform=l;class c extends d{transformName(){return o.TRANSFORM_NAMES.AUDIO_RECEIVER}}t.AudioReceiverMetricsTransform=c;class u extends d{transformName(){return o.TRANSFORM_NAMES.VIDEO_SENDER}}t.VideoSenderMetricsTransform=u;class h extends d{transformName(){return o.TRANSFORM_NAMES.VIDEO_RECEIVER}}t.VideoReceiverMetricsTransform=h},45617:function(e,t,i){"use strict";var n,r=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);
17(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return(n=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i=n(e),a=0;a<i.length;a++)"default"!==i[a]&&r(t,e,i[a]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.REDUNDANT_AUDIO_MESSAGE_TYPES=void 0;let o=a(i(10832));t.REDUNDANT_AUDIO_MESSAGE_TYPES={OPUS_PAYLOAD_TYPE:"OpusPayloadType",RED_PAYLOAD_TYPE:"RedPayloadType",UPDATE_NUM_REDUNDANT_ENCODINGS:"UpdateNumRedundantEncodings",ENABLE:"Enable",DISABLE:"Disable"};class d extends o.default{constructor(){super(),this.maxRedPacketSizeBytes=1024,this.maxAudioPayloadSizeBytes=1e3,this.maxRedTimestampOffset=16384,this.redHeaderSizeBytes=4,this.redLastHeaderSizeBytes=1,this.redPacketizationTime=960,this.redPacketDistance=2,this.maxRedEncodings=2,this.redMaxRecoveryDistance=this.redPacketDistance*this.maxRedEncodings+1,this.maxEncodingHistorySize=10,this.numRedundantEncodings=0,this.redundancyEnabled=!0,this.lossReportInterval=24e4,this.maxOutOfOrderPacketDistance=16,this.OPUS_BAD_ARG=-1,this.OPUS_INVALID_PACKET=-4,this.OPUS_MAX_OPUS_FRAMES=48,this.OPUS_MAX_FRAME_SIZE_BYTES=1275,this.encodingHistory=[],this.opusPayloadType=0,this.redPayloadType=0,this.initializePacketLogs()}handleMessage(e){var i,n,r;try{switch(e.type){case t.REDUNDANT_AUDIO_MESSAGE_TYPES.RED_PAYLOAD_TYPE:this.setRedPayloadType(parseInt((null===(i=e.message)||void 0===i?void 0:i.payloadType)||"0",10));break;case t.REDUNDANT_AUDIO_MESSAGE_TYPES.OPUS_PAYLOAD_TYPE:this.setOpusPayloadType(parseInt((null===(n=e.message)||void 0===n?void 0:n.payloadType)||"0",10));break;case t.REDUNDANT_AUDIO_MESSAGE_TYPES.UPDATE_NUM_REDUNDANT_ENCODINGS:this.setNumRedundantEncodings(parseInt((null===(r=e.message)||void 0===r?void 0:r.numRedundantEncodings)||"0",10));break;case t.REDUNDANT_AUDIO_MESSAGE_TYPES.ENABLE:this.setRedundancyEnabled(!0);break;case t.REDUNDANT_AUDIO_MESSAGE_TYPES.DISABLE:this.setRedundancyEnabled(!1)}}catch(e){this.log(`Failed to handle message: ${e}`)}}transform(e,t){}transformName(){return o.TRANSFORM_NAMES.REDUNDANT_AUDIO}setRedPayloadType(e){this.redPayloadType=e,this.log(`red payload type set to ${this.redPayloadType}`)}setOpusPayloadType(e){this.opusPayloadType=e,this.log(`opus payload type set to ${this.opusPayloadType}`)}setNumRedundantEncodings(e){this.numRedundantEncodings=e,this.numRedundantEncodings>this.maxRedEncodings&&(this.numRedundantEncodings=this.maxRedEncodings),this.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`)}setRedundancyEnabled(e){this.redundancyEnabled=e,this.log(`redundancy ${this.redundancyEnabled?"enabled":"disabled"}`)}enqueueAudioFrameIfPayloadSizeIsValid(e,t){e.data.byteLength>this.maxAudioPayloadSizeBytes||t.enqueue(e)}senderTransform(e,t){if(e.getMetadata().payloadType!==this.redPayloadType){this.enqueueAudioFrameIfPayloadSizeIsValid(e,t);return}let i=this.getPrimaryPayload(e.timestamp,e.data);if(!i){this.enqueueAudioFrameIfPayloadSizeIsValid(e,t);return}let n=this.encode(e.timestamp,i);if(!n){this.enqueueAudioFrameIfPayloadSizeIsValid(e,t);return}e.data=n,this.enqueueAudioFrameIfPayloadSizeIsValid(e,t)}getPrimaryPayload(e,t){let i=this.splitEncodings(e,t);return!i||i.length<1?null:i[i.length-1].payload}splitEncodings(e,t,i=!1,n){let r=new DataView(t),s=r.byteLength,a=0,o=0,d=0,l=0,c=!1,u=[],h=[],f=[];for(;s>0;){if(c=(128&r.getUint8(l))==0){if((127&r.getUint8(l))!==this.opusPayloadType||(a+=this.redLastHeaderSizeBytes,o+=this.redLastHeaderSizeBytes,a>=r.byteLength))return null;d=r.byteLength-a;break}{if(s<this.redHeaderSizeBytes)return null;let t=((3&r.getUint8(l+2))<<8)+r.getUint8(l+3);h.push(t);let i=e-(r.getUint16(l+1)>>2);f.push(i),a+=t+this.redHeaderSizeBytes,o+=this.redHeaderSizeBytes,l+=this.redHeaderSizeBytes,s-=this.redHeaderSizeBytes}}if(!c)return void 0!==n?(u.push({payload:t,isRedundant:!1,seq:n}),u):null;let m=o;for(let e=0;e<f.length;e++){let t=new ArrayBuffer(h[e]);new Uint8Array(t).set(new Uint8Array(r.buffer,m,h[e]),0);let n={timestamp:f[e],payload:t,isRedundant:!0};i&&(n.hasFec=this.opusPacketHasFec(new DataView(t),t.byteLength)),u.push(n),m+=h[e]}let p=r.byteLength-d,g=new ArrayBuffer(d);new Uint8Array(g).set(new Uint8Array(r.buffer,p,d),0);let v={timestamp:e,payload:g,isRedundant:!1,seq:n};return i&&(v.hasFec=this.opusPacketHasFec(new DataView(g),g.byteLength)),u.push(v),u}encode(e,t){let i=t.byteLength;if(0===i||i>=this.maxRedPacketSizeBytes||i>=this.maxAudioPayloadSizeBytes)return null;let n=this.numRedundantEncodings,r=this.redLastHeaderSizeBytes,s=i,a=this.maxAudioPayloadSizeBytes-i-r,o=[],d=[];if(this.redundancyEnabled){let t=this.uint32WrapAround(e-this.redPacket
17izationTime*this.redPacketDistance);for(let i=0;i<n&&!(this.uint32WrapAround(e-t)>=this.maxRedTimestampOffset);i++){let e=t,i=this.encodingHistory.find(t=>t.timestamp===e);if(i||(e=this.uint32WrapAround(t-this.redPacketizationTime),i=this.encodingHistory.find(t=>t.timestamp===e)),i){let e=i.payload.byteLength;if(a<this.redHeaderSizeBytes+e)break;a-=this.redHeaderSizeBytes+e,r+=this.redHeaderSizeBytes,s+=e,o.unshift(i.timestamp),d.unshift(i.payload)}t-=this.redPacketizationTime*this.redPacketDistance,t=this.uint32WrapAround(t)}}let l=new ArrayBuffer(r+s),c=new DataView(l),u=0;for(let t=0;t<o.length;t++){let i=e-o[t];c.setUint8(u,128|this.opusPayloadType),c.setUint16(u+1,i<<2|d[t].byteLength>>8),c.setUint8(u+3,255&d[t].byteLength),u+=this.redHeaderSizeBytes}c.setUint8(u,this.opusPayloadType),u+=this.redLastHeaderSizeBytes;let h=new Uint8Array(l);for(let e=0;e<d.length;e++)h.set(new Uint8Array(d[e]),u),u+=d[e].byteLength;return(h.set(new Uint8Array(t),u),(u+=t.byteLength)!==r+s)?null:(this.updateEncodingHistory(e,t),l)}updateEncodingHistory(e,t){for(let t of this.encodingHistory){let i=this.redPacketizationTime*this.redMaxRecoveryDistance;if(e-t.timestamp>=i)this.encodingHistory.shift();else break}let i=new DataView(t);(this.opusPacketIsCeltOnly(i)||this.opusPacketHasVoiceActivity(i,i.byteLength)>0)&&(this.encodingHistory.length+1>this.maxEncodingHistorySize&&(this.encodingHistory.length=0),this.encodingHistory.push({timestamp:e,payload:t}))}initializePacketLogs(){let e=this.maxOutOfOrderPacketDistance+this.redMaxRecoveryDistance;this.primaryPacketLog={window:Array(e),index:0,windowSize:e},this.redRecoveryLog={window:Array(e),index:0,windowSize:e},this.fecRecoveryLog={window:Array(e),index:0,windowSize:e},this.totalAudioPacketsExpected=0,this.totalAudioPacketsLost=0,this.totalAudioPacketsRecoveredRed=0,this.totalAudioPacketsRecoveredFec=0,this.lastLossReportTimestamp=0}receivePacketLogTransform(e,t){let i=e.getMetadata();if(i.payloadType!==this.redPayloadType){this.enqueueAudioFrameIfPayloadSizeIsValid(e,t);return}let n=this.splitEncodings(e.timestamp,e.data,!0,i.sequenceNumber);if(!n){this.enqueueAudioFrameIfPayloadSizeIsValid(e,t);return}for(let e=n.length-1;e>=0;e--)this.updateLossStats(n[e])&&(this.updateRedStats(n[e]),this.updateFecStats(n[e]));this.maybeReportLossStats(i.synchronizationSource,n[n.length-1].timestamp),this.enqueueAudioFrameIfPayloadSizeIsValid(e,t)}updateLossStats(e){if(e.isRedundant)return!0;let t=e.timestamp,i=e.seq;if(0===this.totalAudioPacketsExpected)return this.totalAudioPacketsExpected=1,this.newestSequenceNumber=i,this.addTimestamp(this.primaryPacketLog,t),!0;let n=this.int16(i-this.newestSequenceNumber);return!(n<-this.maxOutOfOrderPacketDistance)&&(n<0?this.hasTimestamp(this.primaryPacketLog,t)||(this.totalAudioPacketsLost>0&&this.totalAudioPacketsLost--,this.addTimestamp(this.primaryPacketLog,t),this.removeFromRecoveryWindows(t)):n>1&&(this.totalAudioPacketsLost+=n-1),n>0&&(this.totalAudioPacketsExpected+=n,this.newestSequenceNumber=e.seq,this.addTimestamp(this.primaryPacketLog,t)),!0)}updateRedStats(e){if(!e.isRedundant||0===this.totalAudioPacketsLost)return;let t=e.timestamp;!this.hasTimestamp(this.primaryPacketLog,t)&&(this.hasTimestamp(this.redRecoveryLog,t)||(this.totalAudioPacketsRecoveredRed++,this.addTimestamp(this.redRecoveryLog,t)),this.removeTimestamp(this.fecRecoveryLog,t)&&this.totalAudioPacketsRecoveredFec>0&&this.totalAudioPacketsRecoveredFec--)}updateFecStats(e){if(!e.hasFec||0===this.totalAudioPacketsLost)return;let t=e.timestamp-this.redPacketizationTime;this.hasTimestamp(this.primaryPacketLog,t)||this.hasTimestamp(this.redRecoveryLog,t)||this.hasTimestamp(this.fecRecoveryLog,t)||(this.totalAudioPacketsRecoveredFec++,this.addTimestamp(this.fecRecoveryLog,t))}maybeReportLossStats(e,t){void 0===t||t-this.lastLossReportTimestamp<this.lossReportInterval||(self.postMessage({type:o.COMMON_MESSAGE_TYPES.METRICS,transformName:o.TRANSFORM_NAMES.REDUNDANT_AUDIO,message:{ssrc:String(e),metrics:JSON.stringify({totalAudioPacketsLost:this.totalAudioPacketsLost,totalAudioPacketsExpected:this.totalAudioPacketsExpected,totalAudioPacketsRecoveredRed:this.totalAudioPacketsRecoveredRed,totalAudioPacketsRecoveredFec:this.totalAudioPacketsRecoveredFec})}}),this.lastLossReportTimestamp=t)}addTimestamp(e,t){void 0!==t&&(e.window[e.index]=t,e.index=(e.index+1)%e.windowSize)}hasTimestamp(e,t){return!!e.window.find(e=>e===t)}removeTimestamp(e,t){let i=e.window.indexOf(t);return i>=0&&(e.window[i]=void 0,!0)}removeFromRecoveryWindows(e){let t=this.removeTimestamp(this.redRecoveryLog,e);t&&this.totalAudioPacketsRecoveredRed>0&&this.totalAudioPacketsRecoveredRed--,(t=this.removeTimestamp(this.fecRecoveryLog,e))&&this.totalAudioPacketsRecoveredFec>0&&this.totalAudioPacketsRecoveredFec--}uint32WrapAround(e){let t=e;return e>=4294967296?t=e-4294967296:e<0&&(t=4294967296+e),t}int16(e){return e<<16>>16}opusPacketIsCeltOnly(e){return!!(128&e.getUint8(0))}
17opusPacketGetSamplesPerFrame(e,t){let i,n;return t=Math.min(Math.max(t=Math.round(t),-4294967296),4294967296-1),this.opusPacketIsCeltOnly(e)?(n=e.getUint8(0)>>3&3,i=(t<<n)/400):i=(96&e.getUint8(0))==96?8&e.getUint8(0)?t/50:t/100:3==(n=e.getUint8(0)>>3&3)?60*t/1e3:(t<<n)/100,i}opusNumSilkFrames(e){let t=this.opusPacketGetSamplesPerFrame(e,48e3)/48;switch(t<10&&(t=10),t){case 10:case 20:return 1;case 40:return 2;case 60:return 3;default:return 0}}opusPacketGetNumChannels(e){return 4&e.getUint8(0)?2:1}opusParseSize(e,t,i,n){return i<1?(n[0]=-1,-1):252>e.getUint8(t)?(n[0]=e.getUint8(t),1):i<2?(n[0]=-1,-1):(n[0]=4*e.getUint8(t+1)+e.getUint8(t),2)}opusPacketParseImpl(e,t,i,n,r,s,a,o){let d,l;if(!s||t<0)return this.OPUS_BAD_ARG;if(0===t)return this.OPUS_INVALID_PACKET;let c=0,u=!1,h=e.getUint8(0);n&&(n[0]=h);let f=t-1,m=1,p=f;switch(3&h){case 0:d=1;break;case 1:if(d=2,u=!0,!i){if(1&f)return this.OPUS_INVALID_PACKET;p=f/2,s[0][0]=p}break;case 2:if(d=2,l=this.opusParseSize(e,m,f,s[0]),f-=l,s[0][0]<0||s[0][0]>f)return this.OPUS_INVALID_PACKET;m+=l,p=f-s[0][0];break;default:if(f<1)return this.OPUS_INVALID_PACKET;let g=e.getUint8(m++);if(--f,(d=63&g)<=0||this.opusPacketGetSamplesPerFrame(e,48e3)*d>5760)return this.OPUS_INVALID_PACKET;if(64&g){let t,i;do{if(f<=0)return this.OPUS_INVALID_PACKET;t=e.getUint8(m++),--f,f-=i=255===t?254:t,c+=i}while(255===t)}if(f<0)return this.OPUS_INVALID_PACKET;if(u=!(128&g)){if(!i){if((p=Math.trunc(f/d))*d!==f)return this.OPUS_INVALID_PACKET;for(let e=0;e<d-1;++e)s[e][0]=p}}else{p=f;for(let t=0;t<d-1;++t){if(l=this.opusParseSize(e,m,f,s[t]),f-=l,s[t][0]<0||s[t][0]>f)return this.OPUS_INVALID_PACKET;m+=l,p-=l+s[t][0]}if(p<0)return this.OPUS_INVALID_PACKET}}if(i){if(l=this.opusParseSize(e,m,f,s[d-1]),f-=l,s[d-1][0]<0||s[d-1][0]>f)return this.OPUS_INVALID_PACKET;if(m+=l,u){if(s[d-1][0]*d>f)return this.OPUS_INVALID_PACKET;for(let e=0;e<d-1;++e)s[e][0]=s[d-1][0]}else if(!(l+s[d-1][0]<=p))return this.OPUS_INVALID_PACKET}else{if(p>this.OPUS_MAX_FRAME_SIZE_BYTES)return this.OPUS_INVALID_PACKET;s[d-1][0]=p}a&&(a[0]=m);for(let e=0;e<d;++e)r&&(r[e][0]=m),m+=s[e][0];return o&&(o[0]=m+c),d}opusPacketParse(e,t,i,n,r,s){return this.opusPacketParseImpl(e,t,!1,i,n,r,s,null)}opusPacketHasVoiceActivity(e,t){if(!e||t<=0)return 0;if(this.opusPacketIsCeltOnly(e))return -1;let i=this.opusNumSilkFrames(e);if(0===i)return -1;let n=Array(this.OPUS_MAX_OPUS_FRAMES),r=Array(this.OPUS_MAX_OPUS_FRAMES);for(let e=0;e<this.OPUS_MAX_OPUS_FRAMES;++e)n[e]=[void 0],r[e]=[void 0];let s=this.opusPacketParse(e,t,null,n,r,null);if(s<0)return -1;for(let t=0;t<s;++t)if(!(r[t][0]<1)&&(e.getUint8(n[t][0])>>8-i||2===this.opusPacketGetNumChannels(e)&&e.getUint8(n[t][0])<<i+1>>8-i))return 1;return 0}opusPacketHasFec(e,t){if(!e||t<=0||this.opusPacketIsCeltOnly(e))return!1;let i=Array(this.OPUS_MAX_OPUS_FRAMES),n=Array(this.OPUS_MAX_OPUS_FRAMES);for(let e=0;e<this.OPUS_MAX_OPUS_FRAMES;++e)i[e]=[void 0],n[e]=[void 0];if(0>this.opusPacketParse(e,t,null,i,n,null)||n[0][0]<=1)return!1;let r=this.opusNumSilkFrames(e);if(0===r)return!1;let s=this.opusPacketGetNumChannels(e);if(1!==s&&2!==s)return!1;for(let t=0;t<s;t++)if(e.getUint8(i[0][0])&128>>(t+1)*(r+1)-1)return!0;return!1}}t.default=d},59503:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="// Bundled media transform worker code\n\"use strict\";\n\n// === EncodedTransform.js ===\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Transform name constants to ensure consistency between worker and manager.\n */\nconst TRANSFORM_NAMES = {\n    REDUNDANT_AUDIO: 'AudioRed',\n    AUDIO_SENDER: 'AudioSender',\n    AUDIO_RECEIVER: 'AudioReceiver',\n    VIDEO_SENDER: 'VideoSender',\n    VIDEO_RECEIVER: 'VideoReceiver',\n};\n/**\n * Common message types used by all transforms.\n */\nconst COMMON_MESSAGE_TYPES = {\n    LOG: 'Log',\n    METRICS: 'Metrics',\n};\n/**\n * Abstract base class for WebRTC encoded media transforms running in a Web Worker.\n * Provides logging infrastructure and message handling for transform implementations.\n */\nclass EncodedTransform {\n    constructor() {\n        this.shouldLog = true;\n    }\n    transformName() {\n        return this.constructor.name;\n    }\n    /**\n     * Handles configuration messages from the main thread. Override in subclasses.\n     */\n    handleMessage(_message) {\n        // Default: no-op\n    }\n    log(message) {\n        if (!this.shouldLog)\n            return;\n        self.postMessage({\n            type: COMMON_MESSAGE_TYPES.LOG,\n            transformName: this.transformName(),\n            message: { text: message },\n        });\n    }\n}\n//# sourceMappingURL=EncodedTransform.js.map\n\n// === RedundantAudioEncodedTransform.js ===\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Message types specific to RedundantAudio transform.\n */\nconst REDUNDANT_AUDIO_MESSAGE_TYPES = {\n    OPUS_PAYLOAD_TYPE: 'OpusPayloadType',\n    RED_PAYLOAD_TYPE: 'RedPayloadType',\n    UPDATE_NUM_REDUNDANT_ENCODINGS: 'UpdateNumRedundantEncodings',\n    ENABLE: 'Enable',\n    DISABLE: 'Disable',\n};\n/**\n * Implements RFC 2198 RED (Redundant Audio Data) encoding/decoding for Opus audio.\
17n *\n * Sender: Encodes primary + redundant payloads to recover from packet loss.\n * Receiver: Logs packets for loss/recovery statistics (does not decode RED).\n *\n * Dynamically adjusts redundancy level (0-2 encodings) based on packet loss.\n * Supports Opus FEC detection for recovery metrics calculation.\n */\nclass RedundantAudioEncodedTransform extends EncodedTransform {\n    constructor() {\n        super();\n        // Each payload must be less than 1024 bytes to fit the 10 bit block length\n        this.maxRedPacketSizeBytes = 1 << 10;\n        // Limit payload to 1000 bytes to handle small MTU. 1000 is chosen because in Chromium-based browsers, writing audio\n        // payloads larger than 1000 bytes using the WebRTC Insertable Streams API (which is used to enable dynamic audio\n        // redundancy) will cause an error to be thrown and cause audio flow to permanently stop. See\n        // https://crbug.com/1248479.\n        this.maxAudioPayloadSizeBytes = 1000;\n        // Each payload can encode a timestamp delta of 14 bits\n        this.maxRedTimestampOffset = 1 << 14;\n        // 4 byte RED header\n        this.redHeaderSizeBytes = 4;\n        // reduced size for last RED header\n        this.redLastHeaderSizeBytes = 1;\n        // P-Time for Opus 20 msec packets\n        // We do not support other p-times or clock rates\n        this.redPacketizationTime = 960;\n        // distance between redundant payloads, Opus FEC handles a distance of 1\n        this.redPacketDistance = 2;\n        // maximum number of redundant payloads per RTP packet\n        this.maxRedEncodings = 2;\n        // Maximum number of encodings that can be recovered with a single RED packet, assuming the primary and redundant\n        // payloads have FEC.\n        this.redMaxRecoveryDistance = this.redPacketDistance * this.maxRedEncodings + 1;\n        // maximum history of prior payloads to keep\n        // generally we will expire old entries based on timestamp\n        // this limit is in place just to make sure the history does not\n        // grow too large in the case of erroneous timestamp inputs\n        this.maxEncodingHistorySize = 10;\n        // Current number of encodings we want to send\n        // to the remote end. This will be dynamically\n        // updated through the setNumEncodingsFromPacketloss API\n        this.numRedundantEncodings = 0;\n        // Used to enable or disable redundancy\n        // in response to very high packet loss events\n        this.redundancyEnabled = true;\n        // Loss stats reported every 5 seconds (48000 samples/sec * 5 sec)\n        this.lossReportInterval = 48000 * 5;\n        this.maxOutOfOrderPacketDistance = 16;\n        /**\n         * Below are Opus helper methods and constants.\n         */\n        this.OPUS_BAD_ARG = -1;\n        this.OPUS_INVALID_PACKET = -4;\n        // Max number of Opus frames in an Opus packet is 48 (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5).\n        this.OPUS_MAX_OPUS_FRAMES = 48;\n        // Max number of bytes that any individual Opus frame can have.\n        this.OPUS_MAX_FRAME_SIZE_BYTES = 1275;\n        this.encodingHistory = new Array();\n        this.opusPayloadType = 0;\n        this.redPayloadType = 0;\n        this.initializePacketLogs();\n    }\n    /**\n     * Handle configuration messages from main thread\n     */\n    handleMessage(message) {\n        var _a, _b, _c;\n        try {\n            const msgType = message.type;\n            switch (msgType) {\n                case REDUNDANT_AUDIO_MESSAGE_TYPES.RED_PAYLOAD_TYPE:\n                    this.setRedPayloadType(parseInt(((_a = message.message) === null || _a === void 0 ? void 0 : _a.payloadType) || '0', 10));\n                    break;\n                case REDUNDANT_AUDIO_MESSAGE_TYPES.OPUS_PAYLOAD_TYPE:\n                    this.setOpusPayloadType(parseInt(((_b = message.message) === null || _b === void 0 ? void 0 : _b.payloadType) || '0', 10));\n                    break;\n                case REDUNDANT_AUDIO_MESSAGE_TYPES.UPDATE_NUM_REDUNDANT_ENCODINGS:\n                    this.setNumRedundantEncodings(parseInt(((_c = message.message) === null || _c === void 0 ? void 0 : _c.numRedundantEncodings) || '0', 10));\n                    break;\n                case REDUNDANT_AUDIO_MESSAGE_TYPES.ENABLE:\n                    this.setRedundancyEnabled(true);\n                    break;\n                case REDUNDANT_AUDIO_MESSAGE_TYPES.DISABLE:\n                    this.setRedundancyEnabled(false);\n                    break;\n            }\n        }\n        catch (e) {\n            this.log(`Failed to handle message: ${e}`);\n        }\n    }\n    /** Not used directly - use senderTransform or receivePacketLogTransform. */\n    transform(_frame, _controller) {\n        // Not used - use senderTransform or receivePacketLogTransform\n    }\n    transformName() {\n        return TRANSFORM_NAMES.REDUNDANT_AUDIO;\n    }\n    /**\n     * Set the RED payload type ideally obtained from local offer.\n     */\n    setRedPayloadType(payloadType) {\n        this.redPayloadType = payloadType;\n        this.log(`red payload type set to ${this.redPayloadType}`);\n    }\n    /**\n     * Set the opus payload type ideally obtained from local offer.\n     */\n    setOpusPayloadType(payloadType) {\n        this.opusPayloadType = payloadType;\n        this.log(`opus payload type set to ${this.opusPayloadType}`);\n    }\n    /**\n     * Set the number of redundant encodings\n     */\n    setNumRedundantEncodings(numRedundantEncodings) {\n        this.numRedundantEncodings = numRedundantEncodings;\n        if (this.numRedundantEncodings > this.maxRedEncodings) {\n            this.numRedundantEncodings = this.maxRedEncodings;\n        }\n        this.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`);\n    }\n    /**\n     * Enable or disable redundancy in response to\n     * high packet loss event.\n     */\n    setRedundancyEnabled(enabled) {\n        this.redundancyEnabled = enabled;\n        this.log(`redundancy ${this.redundancyEnabled ? 'enabled' : 'disabled'}`);\n    }\n    /**\n     * Helper function to only enqueue audio frames if they do not exceed the audio payload byte limit imposed by\n     * Chromium-based browsers. Chromium will throw an error (https://crbug.com/1248479) if an audio payload larger than\n     * 1000 bytes is enqueued. Any controller that attempts to enqueue an audio payload larger than 1000 bytes will\n     * encounter this error and will permanently stop sending or receiving audio.\n     */\n    enqueueAudioFrameIfPayloadSizeIsValid(frame, controller) {\n        if (frame.data.byteLength > this.maxAudioPayloadSizeBytes)\n            return;\n        controller.enqueue(frame);\n    }\n    /**\n     * Receives encoded frames and modifies as needed before sending to transport.\n     */\n    senderTransform(frame, controller) {\n        const frameMetadata = frame.getMetadata();\n        if (frameMetadata.payloadType !== this.redPayloadType) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        const primaryPayloadBuffer = this.getPrimaryPayload(frame.timestamp, frame.data);\n        if (!primaryPayloadBuffer) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        const encodedBuffer = this.encode(frame.timestamp, primaryPayloadBuffer);\n        /* istanbul ignore next */\n        if (!encodedBuffer) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        frame.data = encodedBuffer;\n        this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n        return;\n    }\n    /**\n     * Get the primary payload from encoding\n     */\n    getPrimaryPayload(primaryTimestamp, frame) {\n        const encodings = this.splitEncodings(primaryTimestamp, frame);\n        if (!encodings || encodings.length < 1)\n            return null;\n        return encodings[encodings.length - 1].payload;\n    }\n    /**\n     * Split up the encoding received into primary and redundant encodings\n     * These will be ordered oldest to newest which is the same ordering\n     * in the RTP red payload.\n     */\n    splitEncodings(primaryTimestamp, frame, getFecInfo = false, primarySequenceNumber = undefined) {\n        // process RED headers (according to RFC 2198)\n        //   0                   1                   2                   3\n        //   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n        //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n        //  |F|   block PT  |  timestamp offset         |   block length    |\n        //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n        //\n        // last header\n        //   0 1 2 3 4 5 6 7\n        //  +-+-+-+-+-+-+-+-+\n        //  |0|   Block PT  |\n        //  +-+-+-+-+-+-+-+-+\n        const payload = new DataView(frame);\n        let payloadSizeBytes = payload.byteLength;\n        let totalPayloadSizeBytes = 0;\n        let totalHeaderSizeBytes = 0;\n        let primaryPayloadSizeBytes = 0;\n        let payloadOffset = 0;\n        let gotLastBlock = false;\n        const encodings = new Array();\n        const redundantEncodingBlockLengths = new Array();\n        const redundantEncodingTimestamps = new Array();\n        while (payloadSizeBytes > 0) {\n            gotLastBlock = (payload.getUint8(payloadOffset) & 0x80) === 0;\n            if (gotLastBlock) {\n                // Bits 1 through 7 are payload type\n                const payloadType = payload.getUint8(payloadOffset) & 0x7f;\n                // Unexpected payload type. This is a bad packet.\n                if (payloadType !== this.opusPayloadType) {\n                    return null;\n                }\n                totalPayloadSizeBytes += this.redLastHeaderSizeBytes;\n                totalHeaderSizeBytes += this.redLastHeaderSizeBytes;\n                // Accumulated block lengths are equal to or larger than the buffer, which means there is no primary block. This\n                // is a bad packet.\n                if (totalPayloadSizeBytes >= payload.byteLength) {\n                    return null;\n                }\n                primaryPayloadSizeBytes = payload.byteLength - totalPayloadSizeBytes;\n                break;\n            }\n            else {\n                if (payloadSizeBytes < this.redHeaderSizeBytes) {\n                    return null;\n                }\n                // Bits 22 through 31 are payload length\n                const blockLength = ((payload.getUint8(payloadOffset + 2) & 0x03) << 8) + payload.getUint8(payloadOffset + 3);\n                redundantEncodingBlockLengths.push(blockLength);\n                const timestampOffset = payload.getUint16(payloadOffset + 1) >> 2;\n                const timestamp = primaryTimestamp - timestampOffset;\n                redundantEncodingTimestamps.push(timestamp);\n                totalPayloadSizeBytes += blockLength + this.redHeaderSizeBytes;\n                totalHeaderSizeBytes += this.redHeaderSizeBytes;\n                payloadOffset += this.redHeaderSizeBytes;\n                payloadSizeBytes -= this.redHeaderSizeBytes;\n            }\n        }\n        // The last block was never found. The packet we received\n        // does not have a good RED payload.\n        if (!gotLastBlock) {\n            // Note that sequence numbers only exist for\n            // incoming audio frames.\n            if (primarySequenceNumber !== undefined) {\n                // This could be a possible padding packet used\n                // for BWE with a good sequence number.\n                // Create a dummy encoding to make sure loss values\n                // are calculated correctly by consuming sequence number.\n                // Note that for the receive side, we process packets only\n                // for loss/recovery calculations and forward the original\n                // packet without changing it even in the error case.\n                encodings.push({\n                    payload: frame,\n                    isRedundant: false,\n                    seq: primarySequenceNumber,\n                });\n                return encodings;\n            }\n            // This is a bad packet.\n            return null;\n        }\n        let redundantPayloadOffset = totalHeaderSizeBytes;\n        for (let i = 0; i < redundantEncodingTimestamps.length;
17 i++) {\n            const redundantPayloadBuffer = new ArrayBuffer(redundantEncodingBlockLengths[i]);\n            const redundantPayloadArray = new Uint8Array(redundantPayloadBuffer);\n            redundantPayloadArray.set(new Uint8Array(payload.buffer, redundantPayloadOffset, redundantEncodingBlockLengths[i]), 0);\n            const encoding = {\n                timestamp: redundantEncodingTimestamps[i],\n                payload: redundantPayloadBuffer,\n                isRedundant: true,\n            };\n            if (getFecInfo) {\n                encoding.hasFec = this.opusPacketHasFec(new DataView(redundantPayloadBuffer), redundantPayloadBuffer.byteLength);\n            }\n            encodings.push(encoding);\n            redundantPayloadOffset += redundantEncodingBlockLengths[i];\n        }\n        const primaryPayloadOffset = payload.byteLength - primaryPayloadSizeBytes;\n        const primaryPayloadBuffer = new ArrayBuffer(primaryPayloadSizeBytes);\n        const primaryArray = new Uint8Array(primaryPayloadBuffer);\n        primaryArray.set(new Uint8Array(payload.buffer, primaryPayloadOffset, primaryPayloadSizeBytes), 0);\n        const encoding = {\n            timestamp: primaryTimestamp,\n            payload: primaryPayloadBuffer,\n            isRedundant: false,\n            seq: primarySequenceNumber,\n        };\n        if (getFecInfo) {\n            encoding.hasFec = this.opusPacketHasFec(new DataView(primaryPayloadBuffer), primaryPayloadBuffer.byteLength);\n        }\n        encodings.push(encoding);\n        return encodings;\n    }\n    /**\n     * Create a new encoding with current primary payload and the older payloads of choice.\n     */\n    encode(primaryTimestamp, primaryPayload) {\n        const primaryPayloadSize = primaryPayload.byteLength;\n        // Payload size needs to be valid.\n        if (primaryPayloadSize === 0 ||\n            primaryPayloadSize >= this.maxRedPacketSizeBytes ||\n            primaryPayloadSize >= this.maxAudioPayloadSizeBytes) {\n            return null;\n        }\n        const numRedundantEncodings = this.numRedundantEncodings;\n        let headerSizeBytes = this.redLastHeaderSizeBytes;\n        let payloadSizeBytes = primaryPayloadSize;\n        let bytesAvailable = this.maxAudioPayloadSizeBytes - primaryPayloadSize - headerSizeBytes;\n        const redundantEncodingTimestamps = new Array();\n        const redundantEncodingPayloads = new Array();\n        // If redundancy is disabled then only send the primary payload\n        if (this.redundancyEnabled) {\n            // Determine how much redundancy we can fit into our packet\n            let redundantTimestamp = this.uint32WrapAround(primaryTimestamp - this.redPacketizationTime * this.redPacketDistance);\n            for (let i = 0; i < numRedundantEncodings; i++) {\n                // Do not add redundant encodings that are beyond the maximum timestamp offset.\n                if (this.uint32WrapAround(primaryTimestamp - redundantTimestamp) >= this.maxRedTimestampOffset) {\n                    break;\n                }\n                let findTimestamp = redundantTimestamp;\n                let encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n                if (!encoding) {\n                    // If not found or not important then look for the previous packet.\n                    // The current packet may have included FEC for the previous, so just\n                    // use the previous packet instead provided that it has voice activity.\n                    findTimestamp = this.uint32WrapAround(redundantTimestamp - this.redPacketizationTime);\n                    encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n                }\n                if (encoding) {\n                    const redundantEncodingSizeBytes = encoding.payload.byteLength;\n                    // Only add redundancy if there are enough bytes available.\n                    if (bytesAvailable < this.redHeaderSizeBytes + redundantEncodingSizeBytes)\n                        break;\n                    bytesAvailable -= this.redHeaderSizeBytes + redundantEncodingSizeBytes;\n                    headerSizeBytes += this.redHeaderSizeBytes;\n                    payloadSizeBytes += redundantEncodingSizeBytes;\n                    redundantEncodingTimestamps.unshift(encoding.timestamp);\n                    redundantEncodingPayloads.unshift(encoding.payload);\n                }
17\n                redundantTimestamp -= this.redPacketizationTime * this.redPacketDistance;\n                redundantTimestamp = this.uint32WrapAround(redundantTimestamp);\n            }\n        }\n        const redPayloadBuffer = new ArrayBuffer(headerSizeBytes + payloadSizeBytes);\n        const redPayloadView = new DataView(redPayloadBuffer);\n        // Add redundant encoding header(s) to new buffer\n        let redPayloadOffset = 0;\n        for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\n            const timestampDelta = primaryTimestamp - redundantEncodingTimestamps[i];\n            redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType | 0x80);\n            redPayloadView.setUint16(redPayloadOffset + 1, (timestampDelta << 2) | (redundantEncodingPayloads[i].byteLength >> 8));\n            redPayloadView.setUint8(redPayloadOffset + 3, redundantEncodingPayloads[i].byteLength & 0xff);\n            redPayloadOffset += this.redHeaderSizeBytes;\n        }\n        // Add primary encoding header to new buffer\n        redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType);\n        redPayloadOffset += this.redLastHeaderSizeBytes;\n        // Add redundant payload(s) to new buffer\n        const redPayloadArray = new Uint8Array(redPayloadBuffer);\n        for (let i = 0; i < redundantEncodingPayloads.length; i++) {\n            redPayloadArray.set(new Uint8Array(redundantEncodingPayloads[i]), redPayloadOffset);\n            redPayloadOffset += redundantEncodingPayloads[i].byteLength;\n        }\n        // Add primary payload to new buffer\n        redPayloadArray.set(new Uint8Array(primaryPayload), redPayloadOffset);\n        redPayloadOffset += primaryPayload.byteLength;\n        /* istanbul ignore next */\n        // Sanity check that we got the expected total payload size.\n        if (redPayloadOffset !== headerSizeBytes + payloadSizeBytes)\n            return null;\n        this.updateEncodingHistory(primaryTimestamp, primaryPayload);\n        return redPayloadBuffer;\n    }\n    /** Maintains encoding history for redundancy, keeping only recent important packets. */\n    updateEncodingHistory(primaryTimestamp, primaryPayload) {\n        // Remove encodings from the history if they are too old.\n        for (const encoding of this.encodingHistory) {\n            const maxTimestampDelta = this.redPacketizationTime * this.redMaxRecoveryDistance;\n            if (primaryTimestamp - encoding.timestamp >= maxTimestampDelta) {\n                this.encodingHistory.shift();\n            }\n            else {\n                break;\n            }\n        }\n        // Only add an encoding to the history if the encoding is deemed to be important. An encoding is important if it is\n        // a CELT-only packet or contains voice activity.\n        const packet = new DataView(primaryPayload);\n        if (this.opusPacketIsCeltOnly(packet) ||\n            this.opusPacketHasVoiceActivity(packet, packet.byteLength) > 0) {\n            // Check if adding an encoding will cause the length of the encoding history to exceed the maximum history size.\n            // This is not expected to happen but could occur if we get incorrect timestamps. We want to make sure our memory\n            // usage is bounded. In this case, just clear the history and start over from empty.\n            if (this.encodingHistory.length + 1 > this.maxEncodingHistorySize)\n                this.encodingHistory.length = 0;\n            this.encodingHistory.push({ timestamp: primaryTimestamp, payload: primaryPayload });\n        }\n    }\n    /** Initializes packet logs and resets all metric counters. */\n    initializePacketLogs() {\n        // The extra space from the max RED recovery distance is to ensure that we do not incorrectly count recovery for\n        // packets that have already been received but are outside of the max out-of-order distance.\n        const packetLogSize = this.maxOutOfOrderPacketDistance + this.redMaxRecoveryDistance;\n        this.primaryPacketLog = {\n            window: new Array(packetLogSize),\n            index: 0,\n            windowSize: packetLogSize,\n        };\n        this.redRecoveryLog = {\n            window: new Array(packetLogSize),\n            index: 0,\n            windowSize: packetLogSize,\n        };
17\n        this.fecRecoveryLog = {\n            window: new Array(packetLogSize),\n            index: 0,\n            windowSize: packetLogSize,\n        };\n        this.totalAudioPacketsExpected = 0;\n        this.totalAudioPacketsLost = 0;\n        this.totalAudioPacketsRecoveredRed = 0;\n        this.totalAudioPacketsRecoveredFec = 0;\n        this.lastLossReportTimestamp = 0;\n    }\n    /** Receiver transform: logs packets for loss/recovery stats without modifying frames. */\n    receivePacketLogTransform(frame, controller) {\n        const frameMetadata = frame.getMetadata();\n        if (frameMetadata.payloadType !== this.redPayloadType) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        const encodings = this.splitEncodings(frame.timestamp, frame.data, \n        /*getFecInfo*/ true, frameMetadata.sequenceNumber);\n        if (!encodings) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        for (let i = encodings.length - 1; i >= 0; i--) {\n            if (this.updateLossStats(encodings[i])) {\n                this.updateRedStats(encodings[i]);\n                this.updateFecStats(encodings[i]);\n            }\n        }\n        this.maybeReportLossStats(frameMetadata.synchronizationSource, encodings[encodings.length - 1].timestamp);\n        this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n    }\n    /** Updates loss stats from primary packets. Returns false if packet is too old. */\n    updateLossStats(encoding) {\n        if (encoding.isRedundant)\n            return true;\n        const timestamp = encoding.timestamp;\n        const seq = encoding.seq;\n        if (this.totalAudioPacketsExpected === 0) {\n            this.totalAudioPacketsExpected = 1;\n            this.newestSequenceNumber = seq;\n            this.addTimestamp(this.primaryPacketLog, timestamp);\n            return true;\n        }\n        const diff = this.int16(seq - this.newestSequenceNumber);\n        if (diff < -this.maxOutOfOrderPacketDistance)\n            return false;\n        if (diff < 0) {\n            if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n                if (this.totalAudioPacketsLost > 0)\n                    this.totalAudioPacketsLost--;\n                this.addTimestamp(this.primaryPacketLog, timestamp);\n                this.removeFromRecoveryWindows(timestamp);\n            }\n        }\n        else if (diff > 1) {\n            this.totalAudioPacketsLost += diff - 1;\n        }\n        if (diff > 0) {\n            this.totalAudioPacketsExpected += diff;\n            this.newestSequenceNumber = encoding.seq;\n            this.addTimestamp(this.primaryPacketLog, timestamp);\n        }\n        return true;\n    }\n    /** Tracks RED recovery for packets not in primary log. */\n    updateRedStats(encoding) {\n        if (!encoding.isRedundant || this.totalAudioPacketsLost === 0)\n            return;\n        const timestamp = encoding.timestamp;\n        if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n            if (!this.hasTimestamp(this.redRecoveryLog, timestamp)) {\n                this.totalAudioPacketsRecoveredRed++;\n                this.addTimestamp(this.redRecoveryLog, timestamp);\n            }\n            if (this.removeTimestamp(this.fecRecoveryLog, timestamp)) {\n                /* istanbul ignore else */\n                if (this.totalAudioPacketsRecoveredFec > 0)\n                    this.totalAudioPacketsRecoveredFec--;\n            }\n        }\n    }\n    /** Tracks FEC recovery for packets not in primary or RED recovery logs. */\n    updateFecStats(encoding) {\n        if (!encoding.hasFec || this.totalAudioPacketsLost === 0)\n            return;\n        const fecTimestamp = encoding.timestamp - this.redPacketizationTime;\n        if (this.hasTimestamp(this.primaryPacketLog, fecTimestamp) ||\n            this.hasTimestamp(this.redRecoveryLog, fecTimestamp) ||\n            this.hasTimestamp(this.fecRecoveryLog, fecTimestamp)) {\n            return;\n        }\n        this.totalAudioPacketsRecoveredFec++;\n        this.addTimestamp(this.fecRecoveryLog, fecTimestamp);\n    }\n    /** Reports loss/recovery metrics to main thread at configured intervals. */\n    maybeReportLossStats(ssrc, timestamp) {\
17n        if (timestamp === undefined ||\n            timestamp - this.lastLossReportTimestamp < this.lossReportInterval)\n            return;\n        self.postMessage({\n            type: COMMON_MESSAGE_TYPES.METRICS,\n            transformName: TRANSFORM_NAMES.REDUNDANT_AUDIO,\n            message: {\n                ssrc: String(ssrc),\n                metrics: JSON.stringify({\n                    totalAudioPacketsLost: this.totalAudioPacketsLost,\n                    totalAudioPacketsExpected: this.totalAudioPacketsExpected,\n                    totalAudioPacketsRecoveredRed: this.totalAudioPacketsRecoveredRed,\n                    totalAudioPacketsRecoveredFec: this.totalAudioPacketsRecoveredFec,\n                }),\n            },\n        });\n        this.lastLossReportTimestamp = timestamp;\n    }\n    /** Adds a timestamp to a packet log's circular buffer. */\n    addTimestamp(packetLog, timestamp) {\n        if (timestamp === undefined) {\n            return;\n        }\n        packetLog.window[packetLog.index] = timestamp;\n        packetLog.index = (packetLog.index + 1) % packetLog.windowSize;\n    }\n    /** Checks if a timestamp exists in a packet log. */\n    hasTimestamp(packetLog, timestamp) {\n        const element = packetLog.window.find(t => t === timestamp);\n        return !!element;\n    }\n    /**\n     * Removes a timestamp from a packet log\n     *\n     * @param packetLog : The packetlog from which the timestamp should be removed\n     * @param timestamp : The timestamp to be removed\n     * @returns true if timestamp was present in the log and removed, false otherwise\n     */\n    removeTimestamp(packetLog, timestamp) {\n        const index = packetLog.window.indexOf(timestamp);\n        if (index >= 0) {\n            packetLog.window[index] = undefined;\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Removes a timestamp from red and fec recovery windows.\n     *\n     * @param timestamp : The timestamp to be removed\n     */\n    removeFromRecoveryWindows(timestamp) {\n        let removed = this.removeTimestamp(this.redRecoveryLog, timestamp);\n        if (removed) {\n            if (this.totalAudioPacketsRecoveredRed > 0)\n                this.totalAudioPacketsRecoveredRed--;\n        }\n        removed = this.removeTimestamp(this.fecRecoveryLog, timestamp);\n        if (removed) {\n            if (this.totalAudioPacketsRecoveredFec > 0)\n                this.totalAudioPacketsRecoveredFec--;\n        }\n    }\n    /**\n     * Converts the supplied argument to 32-bit unsigned integer\n     */\n    uint32WrapAround(num) {\n        const mod = 4294967296; // 2^32\n        let res = num;\n        if (num >= mod) {\n            res = num - mod;\n        }\n        else if (num < 0) {\n            res = mod + num;\n        }\n        return res;\n    }\n    /**\n     * Converts the supplied argument to 16-bit signed integer\n     */\n    int16(num) {\n        return (num << 16) >> 16;\n    }\n    /**\n     * Determines if an Opus packet is in CELT-only mode.\n     *\n     * @param packet Opus packet.\n     * @returns `true` if the packet is in CELT-only mode.\n     */\n    opusPacketIsCeltOnly(packet) {\n        // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n        //  0\n        //  0 1 2 3 4 5 6 7\n        // +-+-+-+-+-+-+-+-+\n        // | config  |s| c |\n        // +-+-+-+-+-+-+-+-+\n        // Since CELT-only packets are represented using configurations 16 to 31, the highest 'config' bit will always be 1\n        // for CELT-only packets.\n        return !!(packet.getUint8(0) & 0x80);\n    }\n    /**\n     * Gets the number of samples per frame from an Opus packet.\n     *\n     * @param packet Opus packet. This must contain at least one byte of data.\n     * @param sampleRateHz 32-bit integer sampling rate in Hz. This must be a multiple of 400 or inaccurate results will\n     *                     be returned.\n     * @returns Number of samples per frame.\n     */\n    opusPacketGetSamplesPerFrame(packet, sampleRateHz) {\n        // Sample rate must be a 32-bit integer.\n        sampleRateHz = Math.round(sampleRateHz);\n        sampleRateHz = Math.min(Math.max(sampleRateHz, -(2 ** 32)), 2 ** 32 - 1);\n        // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n        //  0\n        //  0 1 2 3 4 5 6 7\n        // +-+-+-+-+-+-+-+-+\n        // | config  |s| c |\n        // +-+-+-+-+-+-+-+-+\n        let numSamples;\n        let frameSizeOption;\n        // Case for CELT-only packet.\n        if (this.opusPacketIsCeltOnly(packet)) {\n            // The lower 3 'config' bits indicate the frame size option.\n            frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n            // The frame size options 0, 1, 2, 3 correspond to frame sizes of 2.5, 5, 10, 20 ms. Notice that the frame sizes\n            // can be represented as (2.5 * 2^0), (2.5 * 2^1), (2.5 * 2^2), (2.5 * 2^3) ms. So, the number of samples can be\n            // calculated as follows:\n            // (sample/s) * (1s/1000ms) * (2.5ms) * 2^(frameSizeOption)\n            // = (sample/s) * (1s/400) * 2^(frameSizeOption)\n            // = (sample/s) * 2^(frameSizeOption) * (1s/400)\n            numSamples = (sampleRateHz << frameSizeOption) / 400;\n        }\n        // Case for Hybrid packet. Since Hybrid packets are represented using configurations 12 to 15, bits 1 and 2 in the\n        // above TOC byte diagram will both be 1.\n        else if ((packet.getUint8(0) & 0x60) === 0x60) {\n            // In the case of configuration 13 or 15, bit 4 in the above TOC byte diagram will be 1. Configurations 13 and 15\n            // correspond to a 20ms frame size, so the number of samples is calculated as follows:\n            // (sample/s) * (1s/1000ms) * (20ms)\n            // = (sample/s) * (1s/50)\n            //\n            // In the case of configuration 12 or 14, bit 4 in the above TOC byte diagram will be 0. Configurations 12 and 14\
17n            // correspond to a 10ms frame size, so the number of samples is calculated as follows:\n            // (sample/s) * (1s/1000ms) * (10ms)\n            // = (sample/s) * (1s/100)\n            numSamples = packet.getUint8(0) & 0x08 ? sampleRateHz / 50 : sampleRateHz / 100;\n        }\n        // Case for SILK-only packet.\n        else {\n            // The lower 3 'config' bits indicate the frame size option for SILK-only packets.\n            frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n            if (frameSizeOption === 3) {\n                // Frame size option 3 corresponds to a frame size of 60ms, so the number of samples is calculated as follows:\n                // (sample/s) * (1s/1000ms) * (60ms)\n                // = (sample/s) * (60ms) * (1s/1000ms)\n                numSamples = (sampleRateHz * 60) / 1000;\n            }\n            else {\n                // The frame size options 0, 1, 2 correspond to frame sizes of 10, 20, 40 ms. Notice that the frame sizes can be\n                // represented as (10 * 2^0), (10 * 2^1), (10 * 2^2) ms. So, the number of samples can be calculated as follows:\n                // (sample/s) * (1s/1000ms) * (10ms) * 2^(frameSizeOption)\n                // = (sample/s) * (1s/100) * 2^(frameSizeOption)\n                // = (sample/s) * 2^(frameSizeOption) * (1s/100)\n                numSamples = (sampleRateHz << frameSizeOption) / 100;\n            }\n        }\n        return numSamples;\n    }\n    /**\n     * Gets the number of SILK frames per Opus frame.\n     *\n     * @param packet Opus packet.\n     * @returns Number of SILK frames per Opus frame.\n     */\n    opusNumSilkFrames(packet) {\n        // For computing the frame length in ms, the sample rate is not important since it cancels out. We use 48 kHz, but\n        // any valid sample rate would work.\n        //\n        // To calculate the length of a frame (with a 48kHz sample rate) in ms:\n        // (samples/frame) * (1s/48000 samples) * (1000ms/s)\n        // = (samples/frame) * (1000ms/48000 samples)\n        // = (samples/frame) * (1ms/48 samples)\n        let frameLengthMs = this.opusPacketGetSamplesPerFrame(packet, 48000) / 48;\n        if (frameLengthMs < 10)\n            frameLengthMs = 10;\n        // The number of SILK frames per Opus frame is described in https://www.rfc-editor.org/rfc/rfc6716#section-4.2.2.\n        switch (frameLengthMs) {\n            case 10:\n            case 20:\n                return 1;\n            case 40:\n                return 2;\n            case 60:\n                return 3;\n            // It is not possible to reach the default case since an Opus packet can only encode sizes of 2.5, 5, 10, 20, 40,\n            // or 60 ms, so we ignore the default case for test coverage.\n            /* istanbul ignore next */\n            default:\n                return 0;\n        }\n    }\n    /**\n     * Gets the number of channels from an Opus packet.\n     *\n     * @param packet Opus packet.\n     * @returns Number of channels.\n     */\n    opusPacketGetNumChannels(packet) {\n        // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n        //  0\n        //  0 1 2 3 4 5 6 7\n        // +-+-+-+-+-+-+-+-+\n        // | config  |s| c |\n        // +-+-+-+-+-+-+-+-+\n        // The 's' bit indicates mono or stereo audio, with 0 indicating mono and 1 indicating stereo.\n        return packet.getUint8(0) & 0x4 ? 2 : 1;\n    }\n    /**\n     * Determine the size (in bytes) of an Opus frame.\n     *\n     * @param packet Opus packet.\n     * @param byteOffset Offset (from the start of the packet) to the byte containing the size information.\n     * @param remainingBytes Remaining number of bytes to parse from the Opus packet.\n     * @param sizeBytes Variable to store the parsed frame size (in bytes).\n     * @returns Number of bytes that were parsed to determine the frame size.\n     */\n    opusParseSize(packet, byteOffset, remainingBytes, sizeBytes) {\n        // See https://www.rfc-editor.org/rfc/rfc6716#section-3.2.1 for an explanation of how frame size is represented.\n        // If there are no remaining bytes to parse the size from, then the size cannot be determined.\n        if (remainingBytes < 1) {\n            sizeBytes[0] = -1;\n            return -1;\n        }\n        // If the first byte is in the range 0...251, then this value is the size of the frame.\n        else if (packet.getUint8(byteOffset) < 252) {\n            sizeBytes[0] = packet.getUint8(byteOffset);\n            return 1;\n        }\n        // If the first byte is in the range 252...255, a second byte is needed. If there is no second byte, then the size\n        // cannot be determined.\n        else if (remainingBytes < 2) {\n            sizeBytes[0] = -1;\n            return -1;\n        }\n        // The total size of the frame given two size bytes is:\n        // (4 * secondSizeByte) + firstSizeByte\n        else {\n            sizeBytes[0] = 4 * packet.getUint8(byteOffset + 1) + packet.getUint8(byteOffset);\n            return 2;\n        }\n    }\n    /**\n     * Parse binary data containing an Opus packet into one or more Opus frames.\n     *\n     * @param data Binary data containing an Opus packet to be parsed. The data should begin with the first byte (i.e the\n     *             TOC byte) of an Opus packet. Note that the size of the data does not have to equal the size of the\n     *             contained Opus packet.\n     * @param lenBytes Size of the data (in bytes).\n     * @param selfDelimited Indicates if the Opus packet is self-delimiting\n     *                      (https://www.rfc-editor.org/rfc/rfc6716#appendix-B).\n     * @param tocByte Optional variable to store the TOC (table of contents) byte.\n     * @param frameOffsets Optional variable to store the offsets (from the start of the data) to the first bytes of each\n     *                     Opus frame.\n     * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n     * @param payloadOffset Optional variable to store the offset (from the start of the data) to the first byte of the\n     *                      payload.\n     * @param packetLenBytes Optional variable to store the length of the Opus packet (in bytes).\n     * @returns Number of Opus frames.\n     */\n    opusPacketParseImpl(data, lenBytes, selfDelimited, tocByte, frameOffsets, frameSizes, payloadOffset, packetLenBytes) {\n        if (!frameSizes || lenBytes < 0)\n            return this.OPUS_BAD_ARG;\n        if (lenBytes === 0)\n            return this.OPUS_INVALID_PACKET;\n        // The number of Opus frames in the packet.\n        let numFrames;\n        // Intermediate storage for the number of bytes parsed to determine the size of a frame.\n        let numBytesParsed;\n        // The number of the padding bytes (excluding the padding count bytes) in the packet.\n        let paddingBytes = 0;\n        // Indicates whether CBR (constant bitrate) framing is used.\n        let cbr = false;\n        // The TOC (table of contents) byte (https://www.rfc-editor.org/rfc/rfc6716#section-3.1).\n        const toc = data.getUint8(0);\n        // Store the TOC byte.\n        if (tocByte)\n            tocByte[0] = toc;\n        // The remaining number of bytes to parse from the packet. Note that the TOC byte has already been parsed, hence the\n        // minus 1.\n        let remainingBytes = lenBytes - 1;\n        // This keeps track of where we are in the packet. This starts at 1 since the TOC byte has already been read.\n        let byteOffset = 1;
17\n        // The size of the last Opus frame in bytes.\n        let lastSizeBytes = remainingBytes;\n        // Read the `c` bits (i.e. code bits) from the TOC byte.\n        switch (toc & 0x3) {\n            // A code 0 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.2) has one frame.\n            case 0:\n                numFrames = 1;\n                break;\n            // A code 1 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.3) has two CBR (constant bitrate) frames.\n            case 1:\n                numFrames = 2;\n                cbr = true;\n                if (!selfDelimited) {\n                    // Undelimited code 1 packets must be an even number of data bytes, otherwise the packet is invalid.\n                    if (remainingBytes & 0x1)\n                        return this.OPUS_INVALID_PACKET;\n                    // The sizes of both frames are equal (i.e. half of the number of data bytes).\n                    lastSizeBytes = remainingBytes / 2;\n                    // If `lastSizeBytes` is too large, we will catch it later.\n                    frameSizes[0][0] = lastSizeBytes;\n                }\n                break;\n            // A code 2 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.4) has two VBR (variable bitrate) frames.\n            case 2:\n                numFrames = 2;\n                numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[0]);\n                remainingBytes -= numBytesParsed;\n                // The parsed size of the first frame cannot be larger than the number of remaining bytes in the packet.\n                if (frameSizes[0][0] < 0 || frameSizes[0][0] > remainingBytes) {\n                    return this.OPUS_INVALID_PACKET;\n                }\n                byteOffset += numBytesParsed;\n                // The size of the second frame is the remaining number of bytes after the first frame.\n                lastSizeBytes = remainingBytes - frameSizes[0][0];\n                break;\n            // A code 3 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5) has multiple CBR/VBR frames (from 0 to\n            // 120 ms).\n            default:\n                // Code 3 packets must have at least 2 bytes (i.e. at least 1 byte after the TOC byte).\n                if (remainingBytes < 1)\n                    return this.OPUS_INVALID_PACKET;\n                // Frame count byte format:\n                //  0\n                //  0 1 2 3 4 5 6 7\n                // +-+-+-+-+-+-+-+-+\n                // |v|p|     M     |\n                // +-+-+-+-+-+-+-+-+\n                //\n                // Read the frame count byte, which immediately follows the TOC byte.\n                const frameCountByte = data.getUint8(byteOffset++);\n                --remainingBytes;\n                // Read the 'M' bits of the frame count byte, which encode the number of frames.\n                numFrames = frameCountByte & 0x3f;\n                // The number of frames in a code 3 packet must not be 0.\n                if (numFrames <= 0)\n                    return this.OPUS_INVALID_PACKET;\n                const samplesPerFrame = this.opusPacketGetSamplesPerFrame(data, 48000);\n                // A single frame can have at most 2880 samples, which happens in the case where 60ms of 48kHz audio is encoded\n                // per frame. A code 3 packet cannot contain more than 120ms of audio, so the total number of samples cannot\n                // exceed 2880 * 2 = 5760.\n                if (samplesPerFrame * numFrames > 5760)\n                    return this.OPUS_INVALID_PACKET;\n                // Parse padding bytes if the 'p' bit is 1.\n                if (frameCountByte & 0x40) {\n                    let paddingCountByte;\n                    let numPaddingBytes;\n                    // Remove padding bytes (including padding count bytes) from the remaining byte count.\n                    do {\n                        // Sanity check that there are enough bytes to parse and remove the padding.\n                        if (remainingBytes <= 0)\n                            return this.OPUS_INVALID_PACKET;\n                        // Get the next padding count byte.\n                        paddingCountByte = data.getUint8(byteOffset++);\n                        --remainingBytes;\n                        // If the padding count byte has a value in the range 0...254, then the total size of the padding is the\n                        // value in the padding count byte.\n                        //\n                        // If the padding count byte has value 255, then the total size of the padding is 254 plus the value in the\n                        // next padding count byte. Therefore, keep reading padding count bytes while the value is 255.\n                        numPaddingBytes = paddingCountByte === 25
175 ? 254 : paddingCountByte;\n                        remainingBytes -= numPaddingBytes;\n                        paddingBytes += numPaddingBytes;\n                    } while (paddingCountByte === 255);\n                }\n                // Sanity check that the remaining number of bytes is not negative after removing the padding.\n                if (remainingBytes < 0)\n                    return this.OPUS_INVALID_PACKET;\n                // Read the 'v' bit (i.e. VBR bit).\n                cbr = !(frameCountByte & 0x80);\n                // VBR case\n                if (!cbr) {\n                    lastSizeBytes = remainingBytes;\n                    // Let M be the number of frames. There will be M - 1 frame length indicators (which can be 1 or 2 bytes)\n                    // corresponding to the lengths of frames 0 to M - 2. The size of the last frame (i.e. frame M - 1) is the\n                    // number of data bytes after the end of frame M - 2 and before the start of the padding bytes.\n                    for (let i = 0; i < numFrames - 1; ++i) {\n                        numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[i]);\n                        remainingBytes -= numBytesParsed;\n                        // The remaining number of data bytes must be enough to contain each frame.\n                        if (frameSizes[i][0] < 0 || frameSizes[i][0] > remainingBytes) {\n                            return this.OPUS_INVALID_PACKET;\n                        }\n                        byteOffset += numBytesParsed;\n                        lastSizeBytes -= numBytesParsed + frameSizes[i][0];\n                    }\n                    // Sanity check that the size of the last frame is not negative.\n                    if (lastSizeBytes < 0)\n                        return this.OPUS_INVALID_PACKET;\n                }\n                // CBR case\n                else if (!selfDelimited) {\n                    // The size of each frame is the number of data bytes divided by the number of frames.\n                    lastSizeBytes = Math.trunc(remainingBytes / numFrames);\n                    // The number of data bytes must be a non-negative integer multiple of the number of frames.\n                    if (lastSizeBytes * numFrames !== remainingBytes)\n                        return this.OPUS_INVALID_PACKET;\n                    // All frames have equal size in the undelimited CBR case.\n                    for (let i = 0; i < numFrames - 1; ++i) {\n                        frameSizes[i][0] = lastSizeBytes;\n                    }\n                }\n        }\n        // Self-delimited framing uses an extra 1 or 2 bytes, immediately preceding the data bytes, to indicate either the\n        // size of the last frame (for code 0, code 2, and VBR code 3 packets) or the size of all the frames (for code 1 and\n        // CBR code 3 packets). See https://www.rfc-editor.org/rfc/rfc6716#appendix-B.\n        if (selfDelimited) {\n            // The extra frame size byte(s) will always indicate the size of the last frame.\n            numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[numFrames - 1]);\n            remainingBytes -= numBytesParsed;\n            // There must be enough data bytes for the last frame.\n            if (frameSizes[numFrames - 1][0] < 0 || frameSizes[numFrames - 1][0] > remainingBytes) {\n                return this.OPUS_INVALID_PACKET;\n            }\n            byteOffset += numBytesParsed;\n            // For CBR packets, the sizes of all the frames are equal.\n            if (cbr) {\n                // There must be enough data bytes for all the frames.\n                if (frameSizes[numFrames - 1][0] * numFrames > remainingBytes) {\n                    return this.OPUS_INVALID_PACKET;\n                }\n                for (let i = 0; i < numFrames - 1; ++i) {\n                    frameSizes[i][0] = frameSizes[numFrames - 1][0];\n                }\n            }\n            // At this point, `lastSizeBytes` contains the size of the last frame plus the size of the extra frame size\n            // byte(s), so sanity check that `lastSizeBytes` is the upper bound for the size of the last frame.\n            else if (!(numBytesParsed + frameSizes[numFrames - 1][0] <= lastSizeBytes)) {\n                return this.OPUS_INVALID_PACKET;\n            }\n        }\n        // Undelimited case\n        else {\n            // Because the size of the last packet is not encoded explicitly, it is possible that the size of the last packet\n            // (or of all the packets, for the CBR case) is larger than maximum frame size.\n            if (lastSizeBytes > this.OPUS_MAX_FRAME_SIZE_BYTES)\n                return this.OPUS_INVALID_PACKET;\n            frameSizes[numFrames - 1][0] = lastSizeBytes;\n        }\n        // Store the offset to the start of the payload.\n        if (payloadOffset)\n            payloadOffset[0] = byteOffset;\n        // Store the offsets to the start of each frame.\n        for (let i = 0; i < numFrames; ++i) {\n            if (frameOffsets)\n                frameOffsets[i][0] = byteOffset;\n            byteOffset += frameSizes[i][0];\n        }\n        // Store the length of the Opus packet.\n        if (packetLenBytes)\n            packetLenBytes[0] = byteOffset + paddingBytes;\n        return numFrames;\n    }
17\n    /**\n     * Parse a single undelimited Opus packet into one or more Opus frames.\n     *\n     * @param packet Opus packet to be parsed.\n     * @param lenBytes Size of the packet (in bytes).\n     * @param tocByte Optional variable to store the TOC (table of contents) byte.\n     * @param frameOffsets Optional variable to store the offsets (from the start of the packet) to the first bytes of\n     *                     each Opus frame.\n     * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n     * @param payloadOffset Optional variable to store the offset (from the start of the packet) to the first byte of the\n     *                      payload.\n     * @returns Number of Opus frames.\n     */\n    opusPacketParse(packet, lenBytes, tocByte, frameOffsets, frameSizes, payloadOffset) {\n        return this.opusPacketParseImpl(packet, lenBytes, \n        /* selfDelimited */ false, tocByte, frameOffsets, frameSizes, payloadOffset, null);\n    }\n    /**\n     * This function returns the SILK VAD (voice activity detection) information encoded in the Opus packet. For CELT-only\n     * packets that do not have VAD information, it returns -1.\n     *\n     * @param packet Opus packet.\n     * @param lenBytes Size of the packet (in bytes).\n     * @returns  0: no frame had the VAD flag set.\n     *           1: at least one frame had the VAD flag set.\n     *          -1: VAD status could not be determined.\n     */\n    opusPacketHasVoiceActivity(packet, lenBytes) {\n        if (!packet || lenBytes <= 0)\n            return 0;\n        // In CELT-only mode, we can not determine whether there is VAD.\n        if (this.opusPacketIsCeltOnly(packet))\n            return -1;\n        const numSilkFrames = this.opusNumSilkFrames(packet);\n        // It is not possible for `opusNumSilkFrames()` to return 0, so we ignore the next sanity check for test coverage.\n        /* istanbul ignore next */\n        if (numSilkFrames === 0)\n            return -1;\n        const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n            opusFrameOffsets[i] = [undefined];\n            opusFrameSizes[i] = [undefined];\n        }\n        // Parse packet to get the Opus frames.\n        const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\n        // VAD status cannot be determined for invalid packets.\n        if (numOpusFrames < 0)\n            return -1;\n        // Iterate over all Opus frames, which may contain multiple SILK frames, to determine the VAD status.\n        for (let i = 0; i < numOpusFrames; ++i) {\n            if (opusFrameSizes[i][0] < 1)\n                continue;\n            // LP layer header bits format (https://www.rfc-editor.org/rfc/rfc6716#section-4.2.3):\n            //\n            // Mono case:\n            // +-----------------+----------+\n            // | 1 to 3 VAD bits | LBRR bit |\n            // +-----------------+----------+\n            //\n            // Stereo case:\n            // +---------------------+--------------+----------------------+---------------+\n            // | 1 to 3 mid VAD bits | mid LBRR bit | 1 to 3 side VAD bits | side LBRR bit |\n            // +---------------------+--------------+----------------------+---------------+\n            // The upper 1 to 3 bits (dependent on the number of SILK frames) of the LP layer contain VAD bits. If any of\n            // these VAD bits are 1, then voice activity is present.\n            if (packet.getUint8(opusFrameOffsets[i][0]) >> (8 - numSilkFrames))\n                return 1;\n            // In the stereo case, there is a second set of 1 to 3 VAD bits, so also check these VAD bits.\n            const channels = this.opusPacketGetNumChannels(packet);\n            if (channels === 2 &&\n                (packet.getUint8(opusFrameOffsets[i][0]) << (numSilkFrames + 1)) >> (8 - numSilkFrames)) {\n                return 1;\n            }\n        }\n        // No voice activity was detected.\n        return 0;\n    }\n    /**\n     * This method is based on Definition of the Opus Audio Codec\n     * (https://tools.ietf.org/html/rfc6716). Basically, this method is based on\n     * parsing the LP layer of an Opus packet, particularly the LBRR flag.\n     *\n     * @param packet Opus packet.\n     * @param lenBytes Size of the packet (in bytes).\n     * @returns  true: packet has fec encoding about previous packet.\n     *           false: no fec encoding present.\n     */\n    opusPacketHasFec(packet, lenBytes) {\n        if (!packet || lenBytes <= 0)\n            return false;\n        // In CELT-only mode, packets should not have FEC.\n        if (this.opusPacketIsCeltOnly(packet))\n            return false;\n        const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n            opusFrameOffsets[i] = [undefined];\n            opusFrameSizes[i] = [undefined];\n        }\n        // Parse packet to get the Opus frames.\n        const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\n        if (numOpusFrames < 0)\n            return false;\n        /* istanbul ignore next */\n        if (opusFrameSizes[0][0] <= 1)\n            return false;\n        const numSilkFrames = this.opusNumSilkFrames(packet);\n        /* istanbul ignore next */\n        if (numSilkFrames === 0)\n            return false;\n        const channels = this.opusPacketGetNumChannels(packet);\n        /* istanbul ignore next */\n        if (channels !== 1 && channels !== 2)\n            return false;\n        // A frame starts with the LP layer. The LP layer begins with two to eight\n        // header bits.These consist of one VAD bit per SILK frame (up to 3),\n        // followed by a single flag indicating the presence of LBRR frames.\n        // For a stereo packet, these first flags correspond to the mid channel, and\n        // a second set of flags is included for the side channel. Because these are\
17n        // the first symbols decoded by the range coder and because they are coded\n        // as binary values with uniform probability, they can be extracted directly\n        // from the most significant bits of the first byte of compressed data.\n        for (let i = 0; i < channels; i++) {\n            if (packet.getUint8(opusFrameOffsets[0][0]) & (0x80 >> ((i + 1) * (numSilkFrames + 1) - 1)))\n                return true;\n        }\n        return false;\n    }\n}\n//# sourceMappingURL=RedundantAudioEncodedTransform.js.map\n\n// === MediaMetricsEncodedTransform.js ===\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Message types specific to MediaMetrics transforms.\n */\nconst MEDIA_METRICS_MESSAGE_TYPES = {\n    NEW_SSRC: 'NewSSRC',\n};\n/**\n * Abstract base class for packet-level metrics collection per SSRC.\n * Tracks packet counts and timestamps, periodically reporting to the main thread.\n */\nclass BaseMetricsTransform extends EncodedTransform {\n    constructor() {\n        super(...arguments);\n        this.metricsMap = new Map();\n        this.reportIntervalMs = 500;\n        this.lastReportTime = 0;\n    }\n    /** Processes frames, collects per-SSRC metrics, and forwards unchanged. */\n    transform(frame, controller) {\n        var _a;\n        const ssrc = ((_a = frame.getMetadata) === null || _a === void 0 ? void 0 : _a.call(frame).synchronizationSource) || 0;\n        // Get or create metrics for this SSRC\n        let metrics = this.metricsMap.get(ssrc);\n        if (!metrics) {\n            metrics = { packetCount: 0, timestamp: 0 };\n            this.metricsMap.set(ssrc, metrics);\n            this.log(`Created metrics for SSRC ${ssrc}`);\n            // Timestamp the first frame here so the main thread records the true\n            // send/receive time, not the post-postMessage time.\n            self.postMessage({\n                type: MEDIA_METRICS_MESSAGE_TYPES.NEW_SSRC,\n                transformName: this.transformName(),\n                message: { ssrc: String(ssrc), firstFrameTimestampMs: String(Date.now()) },\n            });\n        }\n        // Collect metrics\n        metrics.packetCount++;\n        metrics.timestamp = frame.timestamp;\n        // Forward frame unchanged\n        controller.enqueue(frame);\n        const now = Date.now();\n        if (now - this.lastReportTime >= this.reportIntervalMs) {\n            this.reportMetrics();\n            this.lastReportTime = now;\n        }\n    }\n    /** Posts aggregated metrics to the main thread via postMessage. */\n    reportMetrics() {\n        const metricsObject = {};\n        for (const [ssrc, metrics] of this.metricsMap.entries()) {\n            metricsObject[ssrc] = { ssrc, ...metrics };\n        }\n        self.postMessage({\n            type: COMMON_MESSAGE_TYPES.METRICS,\n            transformName: this.transformName(),\n            message: { metrics: JSON.stringify(metricsObject) },\n        });\n    }\n}\n/** Collects packet-level metrics for outbound audio streams. */\nclass AudioSenderMetricsTransform extends BaseMetricsTransform {\n    transformName() {\n        return TRANSFORM_NAMES.AUDIO_SENDER;\n    }\n}\n/** Collects packet-level metrics for inbound audio streams. */\nclass AudioReceiverMetricsTransform extends BaseMetricsTransform {\n    transformName() {\n        return TRANSFORM_NAMES.AUDIO_RECEIVER;\n    }\n}\n/** Collects packet-level metrics for outbound video streams. */\nclass VideoSenderMetricsTransform extends BaseMetricsTransform {\n    transformName() {\n        return TRANSFORM_NAMES.VIDEO_SENDER;\n    }\n}\n/** Collects packet-level metrics for inbound video streams. */\nclass VideoReceiverMetricsTransform extends BaseMetricsTransform {\n    transformName() {\n        return TRANSFORM_NAMES.VIDEO_RECEIVER;\n    }\n}\n//# sourceMappingURL=MediaMetricsEncodedTransform.js.map\n\n// === EncodedTransformWorker.js ===\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Web Worker entry point for WebRTC encoded media transforms.\n *\n * Manages transform pipelines for audio/video sender/receiver streams using either:\n * - RTCRtpScriptTransform API (modern browsers)\n * - createEncodedStreams() API (legacy fallback)\n *\n * Pipelines:\n * - Audio Sender: encoder → metrics → RED encode → network\n * - Audio Receiver: network → RED decode → metrics → decoder\n * - Video Sender/Receiver: encoder/network → metrics → network/decoder\n */\nclass EncodedTransformWorker {\n    /**\n     * Initializes the worker, sets up transform instances and event handlers.\n     */\n    static initializeWorker() {\n        EncodedTransformWorker.log('Initializing EncodedTransformWorker');\n        // Initialize transform instances\n        EncodedTransformWorker.redundantAudioEncodedTransform = new RedundantAudioEncodedTransform();
17\n        EncodedTransformWorker.audioSenderMetricsTransform = new AudioSenderMetricsTransform();\n        EncodedTransformWorker.audioReceiverMetricsTransform = new AudioReceiverMetricsTransform();\n        EncodedTransformWorker.videoSenderMetricsTransform = new VideoSenderMetricsTransform();\n        EncodedTransformWorker.videoReceiverMetricsTransform = new VideoReceiverMetricsTransform();\n        // Check the DedicatedWorkerGlobalScope for existence of RTCRtpScriptTransformer interface. If exists, then\n        // RTCRtpScriptTransform is supported by this browser.\n        // @ts-ignore - RTCRtpScriptTransformer may not be in all TS lib.dom.d.ts versions\n        if (self.RTCRtpScriptTransformer) {\n            // @ts-ignore - onrtctransform may not be in all TS lib.dom.d.ts versions\n            self.onrtctransform = (event) => {\n                const transformer = event.transformer;\n                const options = transformer.options;\n                const disabledTransforms = options.disabledTransforms || {};\n                EncodedTransformWorker.log(`Setting up transform: operation=${options.operation}, mediaType=${options.mediaType}, disabledTransforms=${JSON.stringify(disabledTransforms)}`);\n                if (options.mediaType === 'audio' && options.operation === 'send') {\n                    EncodedTransformWorker.setupAudioSenderPipeline(transformer, disabledTransforms);\n                }\n                else if (options.mediaType === 'audio' && options.operation === 'receive') {\n                    EncodedTransformWorker.setupAudioReceiverPipeline(transformer, disabledTransforms);\n                }\n                else if (options.mediaType === 'video' && options.operation === 'send') {\n                    EncodedTransformWorker.setupVideoSenderPipeline(transformer);\n                }\n                else if (options.mediaType === 'video' && options.operation === 'receive') {\n                    EncodedTransformWorker.setupVideoReceiverPipeline(transformer);\n                }\n            };\n        }\n        // Message handler for configuration updates and legacy createEncodedStreams() API\n        self.onmessage = (event) => {\n            var _a, _b, _c, _d, _e;\n            const message = event.data;\n            EncodedTransformWorker.log(`Received message: ${message.msgType || message.type}`);\n            // Handle legacy createEncodedStreams() API\n            if (message.msgType === 'StartEncodedTransformWorker') {\n                EncodedTransformWorker.log('Setting up legacy encoded streams');\n                const disabledTransforms = ((_a = message.options) === null || _a === void 0 ? void 0 : _a.disabledTransforms) || {};\n                if ((_b = message.audio) === null || _b === void 0 ? void 0 : _b.send) {\n                    EncodedTransformWorker.setupAudioSenderPipeline({\n                        readable: message.audio.send.readable,\n                        writable: message.audio.send.writable,\n                    }, disabledTransforms);\n                }\n                if ((_c = message.audio) === null || _c === void 0 ? void 0 : _c.receive) {\n                    EncodedTransformWorker.setupAudioReceiverPipeline({\n                        readable: message.audio.receive.readable,\n                        writable: message.audio.receive.writable,\n                    }, disabledTransforms);\n                }\n                if ((_d = message.video) === null || _d === void 0 ? void 0 : _d.send) {\n                    EncodedTransformWorker.setupVideoSenderPipeline({\n                        readable: message.video.send.readable,\n                        writable: message.video.send.writable,\n                    });\n                }\n                if ((_e = message.video) === null || _e === void 0 ? void 0 : _e.receive) {\n                    EncodedTransformWorker.setupVideoReceiverPipeline({\n                        readable: message.video.receive.readable,\n                        writable: message.video.receive.writable,\n                    });\n                }\n            }\n            else if (message.transformName === TRANSFORM_NAMES.REDUNDANT_AUDIO &&\n                EncodedTransformWorker.redundantAudioEncodedTransform) {\n                EncodedTransformWorker.redundantAudioEncodedTransform.handleMessage(message);\n            }\n            else {\n                EncodedTransformWorker.log(`Unknown message type: ${message.type}, transformName: ${message.transformName}`);\n            }\n        };\n    }\n    /**\n     * Posts a log message to the main thread.\n     * @param msg The message to log\n     */\n    static log(msg) {\n        self.postMessage({\n            type: COMMON_MESSAGE_TYPES.LOG,\n            transformName: 'EncodedTransformWorker',\n            message: { text: msg },\n        });\n    }\n    /**\n     * Sets up audio sender pipeline: encoder → metrics → RED encode → network.\n     * If RED is disabled: encoder → metrics → network.\n     * @param transformer The RTCRtpScriptTransformer or legacy streams object\n     * @param disabledTransforms Configuration for disabled transforms\n     */\n    static setupAudioSenderPipeline(transformer, disabledTransforms) {\n        const metricsTransform = new TransformStream({\n            transform: EncodedTransformWorker.audioSen
17derMetricsTransform.transform.bind(EncodedTransformWorker.audioSenderMetricsTransform),\n        });\n        if (disabledTransforms.redundantAudio) {\n            transformer.readable.pipeThrough(metricsTransform).pipeTo(transformer.writable);\n        }\n        else {\n            const redEncodeTransform = new TransformStream({\n                transform: EncodedTransformWorker.redundantAudioEncodedTransform.senderTransform.bind(EncodedTransformWorker.redundantAudioEncodedTransform),\n            });\n            transformer.readable\n                .pipeThrough(metricsTransform)\n                .pipeThrough(redEncodeTransform)\n                .pipeTo(transformer.writable);\n        }\n    }\n    /**\n     * Sets up video sender pipeline: encoder → metrics → network.\n     * @param transformer The RTCRtpScriptTransformer or legacy streams object\n     */\n    static setupVideoSenderPipeline(transformer) {\n        const metricsTransform = new TransformStream({\n            transform: EncodedTransformWorker.videoSenderMetricsTransform.transform.bind(EncodedTransformWorker.videoSenderMetricsTransform),\n        });\n        transformer.readable.pipeThrough(metricsTransform).pipeTo(transformer.writable);\n    }\n    /**\n     * Sets up audio receiver pipeline: network → RED decode → metrics → decoder.\n     * If RED is disabled: network → metrics → decoder.\n     * @param transformer The RTCRtpScriptTransformer or legacy streams object\n     * @param disabledTransforms Configuration for disabled transforms\n     */\n    static setupAudioReceiverPipeline(transformer, disabledTransforms) {\n        const metricsTransform = new TransformStream({\n            transform: EncodedTransformWorker.audioReceiverMetricsTransform.transform.bind(EncodedTransformWorker.audioReceiverMetricsTransform),\n        });\n        if (disabledTransforms.redundantAudio) {\n            transformer.readable.pipeThrough(metricsTransform).pipeTo(transformer.writable);\n        }\n        else {\n            const redDecodeTransform = new TransformStream({\n                transform: EncodedTransformWorker.redundantAudioEncodedTransform.receivePacketLogTransform.bind(EncodedTransformWorker.redundantAudioEncodedTransform),\n            });\n            transformer.readable\n                .pipeThrough(redDecodeTransform)\n                .pipeThrough(metricsTransform)\n                .pipeTo(transformer.writable);\n        }\n    }\n    /**\n     * Sets up video receiver pipeline: network → metrics → decoder.\n     * @param transformer The RTCRtpScriptTransformer or legacy streams object\n     */\n    static setupVideoReceiverPipeline(transformer) {\n        const metricsTransform = new TransformStream({\n            transform: EncodedTransformWorker.videoReceiverMetricsTransform.transform.bind(EncodedTransformWorker.videoReceiverMetricsTransform),\n        });\n        transformer.readable.pipeThrough(metricsTransform).pipeTo(transformer.writable);\n    }\n}\n// Singleton transform instances shared across all pipelines\nEncodedTransformWorker.redundantAudioEncodedTransform = null;\nEncodedTransformWorker.audioSenderMetricsTransform = null;\nEncodedTransformWorker.audioReceiverMetricsTransform = null;\nEncodedTransformWorker.videoSenderMetricsTransform = null;\nEncodedTransformWorker.videoReceiverMetricsTransform = null;\nEncodedTransformWorker;\n//# sourceMappingURL=EncodedTransformWorker.js.map\n\n// Initialize worker\nEncodedTransformWorker.initializeWorker();\n"},46561:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(4494)),s=n(i(68414)),a=n(i(50794)),o=i(76477);class d{constructor(e,t,i,n,r){this.buffer=[],this.bufferSize=0,this.maxBufferItemCapacityBytes=0,this.ingestionEventSize=0,this.flushIntervalMs=0,this.flushSize=0,this.failedIngestionEvents=[],this.retryCountLimit=15,this.lock=!1,this.highEntropyUpdated=!1,this.cancellableEvents=new Map,this.attributesToFilter=["externalUserId","externalMeetingId","timestampMs"],this.deepCopyCurrentIngestionEvent=e=>({type:e.type,v:e.v,payloads:[...e.payloads]}),this.sendEvents=async()=>
17{if(this.lock)return;let e=this.getItems(this.flushSize);if(0===e.length)return;this.lock=!0,await this.updateMetadataWithHighEntropyValues();let t=this.makeRequestBody(e),i=!1,n=Date.now();"firefox"===this.metadata.browserName.toLowerCase()&&this.cancellableEvents.set(n,e);try{this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - sending body ${t}`);let e=await this.send(t);if(this.cancellableEvents.delete(n),e.ok)try{let i=await e.json();this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - send successful events: ${t} message: ${JSON.stringify(i)}`)}catch(e){this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEvents error reading OK response ${e} for events ${t}`)}else this.logger.error(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - Failed to send events ${t} with response status ${e.status}`),i=!0}catch(e){i=!0,this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - Error in sending events ${t} to the ingestion endpoint ${e}`)}finally{this.lock=!1}i&&(this.cancellableEvents.delete(n),this.failedIngestionEvents.push(...e))},this.userAgentParser=new a.default(r);let{browserMajorVersion:s,...o}=this.userAgentParser.getParserResult(),{type:d,v:l,...c}=t.toJSON();this.authenticationToken=t.getAuthenticationToken(),this.metadata={...o,...c},Object.keys(this.metadata).forEach(e=>this.attributesToFilter.push(e)),this.type=d,this.v=l,this.ingestionURL=i,this.logger=r,this.importantEvents=new Set(n);let{maxBufferCapacityKb:u,totalBufferItems:h,flushSize:f,flushIntervalMs:m,retryCountLimit:p}=e;this.maxBufferCapacityBytes=1024*u,this.totalBufferItems=h,this.maxBufferItemCapacityBytes=Math.round(this.maxBufferCapacityBytes/h),this.flushIntervalMs=m,this.flushSize=f,this.retryCountLimit=p,this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent(),this.beaconEventListener=e=>this.beaconEventHandler(e),this.addEventListeners()}async updateMetadataWithHighEntropyValues(){if(this.highEntropyUpdated)return;this.highEntropyUpdated=!0,await this.userAgentParser.updateWithHighEntropyValues();let{browserMajorVersion:e,...t}=this.userAgentParser.getParserResult();this.metadata={...this.metadata,...t}}addEventListeners(){this.beaconEventListener&&"window"in i.g&&window.addEventListener&&"document"in i.g&&document.addEventListener&&(this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - addEventListeners - adding pagehide and visibility change event listeners"),window.addEventListener("pagehide",this.beaconEventListener),document.addEventListener("visibilitychange",this.beaconEventListener))}beaconEventHandler(e){("visibilitychange"===e.type&&"hidden"===document.visibilityState||"pagehide"===e.type)&&(this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - beaconEventHandler is triggered calling sendBeacon"),this.sendBeacon())}removeEventListeners(){this.beaconEventListener&&"window"in i.g&&window.removeEventListener&&"document"in i.g&&document.removeEventListener&&(window.removeEventListener("pagehide",this.beaconEventListener),document.removeEventListener("visibilitychange",this.beaconEventListener),this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - removeEventListeners - removing pagehide and visibility change event listeners"))}start(){var e;this.removeEventListeners(),this.addEventListeners(),null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=new s.default(this.flushIntervalMs),this.intervalScheduler.start(()=>this.sendEvents())}stop(){var e;null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.sendBeacon(),this.removeEventListeners()}async addItem(e){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - received event ${JSON.stringify(e)}`);let{name:t,ts:i,attributes:n}=e,r=n&&this.filterAttributes(n,this.attributesToFilter),s={name:t,ts:i,...r};this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - event after filtering attributes ${JSON.stringify(s)}`);let a=this.getSize(s);if(a>d.MAX_ITEM_SIZE_BYTES_ALLOWED)throw Error(`Event Reporting - Item to be added has size ${a} bytes. Item cannot exceed max item size allowed of ${d.MAX_ITEM_SIZE_BYTES_ALLOWED} bytes.`);if(this.importantEvents.has(t)){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - sending important event ${JSON.stringify(s)}`),this.sendEventImmediately({name:t,ts:i,attributes:r});return}if(this.isFull())throw this.logger.warn("Event Reporting - Event buffer is full"),Error("Buffer full");if(this.currentIngestionEvent.payloads.push(s),this.ingestionEventSize+=a,this.bufferItemThresholdReached(a)){let e=this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);this.buffer.push(e),this.bufferSize+=this.ingestionEventSize,this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent(),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - buffer item threshold reached updated buffer ${JSON.stringify(this.buffer)}`)}}filterAttributes(e,t){let i=new Set(t);return Object.keys(e).filter(e=>
17i.has(e)).forEach(t=>delete e[t]),e}initializeAndGetCurrentIngestionEvent(){let e={type:this.type,v:this.v,payloads:[]};return this.ingestionEventSize=this.getSize(e),e}bufferItemThresholdReached(e){return e+this.ingestionEventSize>=this.maxBufferItemCapacityBytes||this.currentIngestionEvent.payloads.length===d.MAX_PAYLOAD_ITEMS}getSize(e){let t=0;if("object"==typeof e)for(let[i,n]of Object.entries(e))t+=this.getPrimitiveSize(i)+this.getSize(n);else t+=this.getPrimitiveSize(e);return t}getPrimitiveSize(e){let t=0;return"string"==typeof e?t+=2*e.length:"number"==typeof e&&(t+=8),t}isFull(){return this.bufferSize===this.maxBufferCapacityBytes||this.buffer.length===this.totalBufferItems}isEmpty(){return 0===this.buffer.length||0===this.bufferSize}getItems(e,t=0){return this.isEmpty()?[]:(e=Math.min(this.buffer.length,e+1),this.buffer.splice(t,e))}makeBeaconRequestBody(e){return JSON.stringify({metadata:this.metadata,events:e,authorization:this.authenticationToken})}makeRequestBody(e){return JSON.stringify({metadata:this.metadata,events:e})}async sendEventImmediately(e){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - important event received ${JSON.stringify(e)}`),await this.updateMetadataWithHighEntropyValues();let{name:t,ts:i,attributes:n}=e,r={type:this.type,v:this.v,payloads:[{name:t,ts:i,...n}]},s=!1,a=null,o=this.makeRequestBody([r]);try{if((a=await this.send(o)).ok){try{let e=await a.json();this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - send successful event: ${o}, message: ${JSON.stringify(e)}`)}catch(e){this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Error reading OK response ${e} for event ${o}`)}return}this.logger.error(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Failed to send an important event ${o} with response status ${a.status}`),s=!0}catch(e){this.logger.warn(`Event Reporting - There may be a failure in sending an important event ${o} to the ingestion endpoint ${e}.`),s=!0;try{if("firefox"===this.metadata.browserName.toLowerCase()){let e=this.makeBeaconRequestBody([r]);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - beaconing data out ${e}`),navigator.sendBeacon(`${this.ingestionURL}?beacon=1`,e)?s=!1:s=!0}}catch(e){this.logger.warn(`Event Reporting - Error sending beacon for an important event ${o}`),s=!0}}s&&(this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - pushing to failed events ${o}`),this.failedIngestionEvents.push(r))}async send(e){let t=new r.default(d.RETRY_FIXED_BACKOFF_WAIT_MS,d.RETRY_SHORT_BACKOFF_MS,d.RETRY_LONG_BACKOFF_MS);try{let i=0;for(;i<this.retryCountLimit;){let n=await fetch(this.ingestionURL,{method:"POST",headers:{Authorization:`Bearer ${this.authenticationToken}`},body:e});if(n.ok||!d.SENDING_FAILURE_CODES.has(n.status))return n;if(this.logger.warn(`Will retry sending failure for ${e} due to status code ${n.status}.`),++i<this.retryCountLimit){let e=t.nextBackoffAmountMs();await (0,o.wait)(e)}}if(i===this.retryCountLimit)throw Error(`Retry count limit reached for ${e}`)}catch(e){throw e}}async sendBeacon(){let e=this.buffer;if(this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out buffer events ${JSON.stringify(e)}`),this.buffer=[],this.currentIngestionEvent.payloads.length>0){let t=this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);e.push(t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out current ingestion event ${JSON.stringify(t)}`),this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent()}if(this.failedIngestionEvents.length>0){let t=this.failedIngestionEvents.map(e=>this.deepCopyCurrentIngestionEvent(e));e.push(...t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out any failed ingestion event ${JSON.stringify(t)}`),this.failedIngestionEvents=[]}if(this.cancellableEvents.size>0&&(this.cancellableEvents.forEach(t=>{e.push(...t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out each cancellable event ${JSON.stringify(t)}`)}),this.cancellableEvents.clear()),0===e.length)return;let t=this.makeBeaconRequestBody(e);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - beacon data to send ${t}`);try{navigator.sendBeacon(`${this.ingestionURL}?beacon=1`,t)||this.logger.warn(`Event Reporting - Browser failed to queue beacon data ${t}`)}catch(e){this.logger.warn(`Event Reporting - Sending beacon data ${t} failed with error ${e}`)}}reset(){this.maxBufferCapacityBytes=0,this.totalBufferItems=0,this.buffer=[],this.bufferSize=0,this.maxBufferItemCapacityBytes=0,this.ingestionEventSize=0,this.flushIntervalMs=0,this.flushSize=0,this.failedIngestionEvents=[],this.lock=!1,this.beaconEventListener=void 0,this.cancellableEvents.clear()}async destroy(){this.stop(),this.reset()}}d.SENDING_FAILURE_CODES=new Set([408,429,500,502,503,504]),d.RETRY_FIXED_BACKOFF_WAIT_MS=0,d.RETRY_SHORT_BACKOFF_MS=1e3,d.RETRY_LONG_BACKOFF_MS=15e3,d.MAX_PAYLOAD_ITEMS=2,d.MAX_ITEM_SIZE_BYTES_ALLOWED=3e3,t.default=d},22973:function(e,t){"use strict";
17Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e=5e3,t=2,i=64,n=100,r=15){this.flushIntervalMs=e,this.flushSize=t,this.maxBufferCapacityKb=i,this.totalBufferItems=n,this.retryCountLimit=r}}t.default=i},97937:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.audioVideoEventAttributesFromState=function(e){let t={};return null!==e.startTimeMs&&(t.meetingDurationMs=Math.round(Date.now()-e.startTimeMs)),null!==e.signalingOpenDurationMs&&(t.signalingOpenDurationMs=e.signalingOpenDurationMs),null!==e.iceGatheringDurationMs&&(t.iceGatheringDurationMs=e.iceGatheringDurationMs),null!==e.attendeePresenceDurationMs&&(t.attendeePresenceDurationMs=e.attendeePresenceDurationMs),null!==e.meetingStartDurationMs&&(t.meetingStartDurationMs=e.meetingStartDurationMs),void 0!==e.maxVideoTileCount&&(t.maxVideoTileCount=e.maxVideoTileCount),void 0!==e.poorConnectionCount&&(t.poorConnectionCount=e.poorConnectionCount),void 0!==e.retryCount&&(t.retryCount=e.retryCount),t}},75499:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(96630),s=n(i(927)),a=n(i(96558)),o=n(i(71782)),d=n(i(16564)),l=n(i(50794)),c=n(i(61492)),u=n(i(1366));class h{constructor(e,t,i){this.meetingHistoryStates=[],this.observerSet=new Set,this.highEntropyUpdated=null,this.destroyed=!1,this.logger=t,this.configuration=e,this.setupEventReporter(e,t,i),this.userAgentParser=new l.default(t),this.parserResult=this.userAgentParser.getParserResult()}updateAttributesWithHighEntropyValues(){return this.highEntropyUpdated||(this.highEntropyUpdated=(async()=>{await this.userAgentParser.updateWithHighEntropyValues(),this.parserResult=this.userAgentParser.getParserResult()})()),this.highEntropyUpdated}addObserver(e){this.observerSet.add(e)}removeObserver(e){this.observerSet.delete(e)}forEachObserver(e){for(let t of this.observerSet)d.default.nextTick(()=>{this.observerSet.has(t)&&e(t)})}async publishEvent(e,t){await this.updateAttributesWithHighEntropyValues();let i=Date.now();this.meetingHistoryStates.push({name:e,timestampMs:i});let n=Object.freeze(Object.assign(this.getAttributes(i),t));this.forEachObserver(t=>{t.eventDidReceive(e,n)}),this.reportEvent(e,i,t)}async reportEvent(e,t,i){var n;let r;try{i&&(r=(0,u.default)(i)),await (null===(n=this.eventReporter)||void 0===n?void 0:n.reportEvent(t,e,r))}catch(e){this.logger.error(`Error reporting event ${e}`)}}setupEventReporter(e,t,i){if(i)this._eventReporter=i;else if(e.urls){let i=e.urls.eventIngestionURL;if(i){this.logger.info("Event ingestion URL is present in the configuration");let{meetingId:n,credentials:{attendeeId:r,joinToken:d}}=e,l=new o.default(n,r,d),c=new s.default(l,i);this._eventReporter=new a.default(c,t)}}}getAttributes(e){return{attendeeId:this.configuration.credentials.attendeeId,browserMajorVersion:this.parserResult.browserMajorVersion,browserName:this.parserResult.browserName,browserVersion:this.parserResult.browserVersion,deviceName:this.parserResult.deviceName,externalMeetingId:"string"==typeof this.configuration.externalMeetingId?this.configuration.externalMeetingId:"",externalUserId:this.configuration.credentials.externalUserId,meetingHistory:this.meetingHistoryStates,meetingId:this.configuration.meetingId,osName:this.parserResult.osName,osVersion:this.parserResult.osVersion,sdkVersion:c.default.sdkVersion,sdkName:c.default.sdkName,timestampMs:e}}get eventReporter(){return this._eventReporter}async destroy(){(0,r.isDestroyable)(this.eventReporter)&&await this.eventReporter.destroy(),this.logger=void 0,this.configuration=void 0,this._eventReporter=void 0,this.destroyed=!0}}t.default=h},1366:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{let t={};for(let[i,n]of Object.entries(e))if(null!=n&&""!==n){if("number"==typeof n||"string"==typeof n)t[i]=n;else throw TypeError("Unhandled type received while flattening attributes.")}return t}},927:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
17dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(22973));class s{constructor(e,t,i=new r.default){this.eventsClientConfiguration=e,this.ingestionURL=t,this.eventBufferConfiguration=i}}t.default=s},96558:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(96630),s=n(i(46561));class a{constructor(e,t){this.reportingEvents=!1,this.importantEvents=["meetingEnded","meetingFailed","meetingStartFailed","audioInputFailed","videoInputFailed","meetingStartSucceeded","deviceLabelTriggerFailed"],this.destroyed=!1;let{eventsClientConfiguration:i,ingestionURL:n,eventBufferConfiguration:r}=e,{eventsToIgnore:a}=i;this.eventBuffer=new s.default(r,i,n,this.importantEvents,t),this.logger=t,this.eventsToIgnore=a,this.start()}start(){if(!this.reportingEvents)try{this.eventBuffer.start(),this.logger.info("Event reporting started"),this.reportingEvents=!0}catch(e){this.logger.error(`Event Reporting - Error starting the event buffer ${e}`)}}stop(){if(this.reportingEvents)try{this.eventBuffer.stop(),this.logger.info("Event reporting stopped"),this.reportingEvents=!1}catch(e){this.logger.error(`Event Reporting - Error stopping the event buffer ${e}`)}}async reportEvent(e,t,i){if(this.logger.debug(`Event Reporting - DefaultMeetingEventReporter - event received in reportEvent ${e}, ${t}, ${JSON.stringify(i)}`),this.eventsToIgnore.includes(t)){this.logger.debug(`Event Reporting - DefaultMeetingEventReporter - ${t} event will be ignored as it is in events to ignore`);return}try{this.logger.debug("Event Reporting - DefaultMeetingEventReporter - adding item to event buffer"),await this.eventBuffer.addItem({ts:e,name:t,attributes:i})}catch(e){this.logger.error(`Event Reporting - Error adding event to buffer ${e}`)}}async destroy(){this.destroyed=!0,this.stop(),(0,r.isDestroyable)(this.eventBuffer)&&this.eventBuffer.destroy(),this.eventBuffer=void 0}}t.default=a},99309:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){}reportEvent(e,t,i){}start(){}stop(){}}t.default=i},71782:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n=[]){this.type="Meet",this.v=1,this.meetingId=e,this.attendeeId=t,this.eventsToIgnore=n,this.authenticationToken=i}getAuthenticationToken(){return this.authenticationToken}toJSON(){let e={};return e.type=this.type,e.v=this.v,e.meetingId=this.meetingId,e.attendeeId=this.attendeeId,e}}t.default=i},26912:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultAudioVideoController=t.DefaultAudioMixController=t.DefaultActiveSpeakerPolicy=t.DefaultActiveSpeakerDetector=t.DataMessage=t.CreateSDPTask=t.CreatePeerConnectionTask=t.ContentShareMediaStreamBroker=t.ContentShareConstants=t.ConsoleLogger=t.ConnectionHealthPolicyConfiguration=t.ConnectionHealthData=t.ClientVideoStreamReceivingReport=t.ClientMetricReportMediaType=t.ClientMetricReportDirection=t.ClientMetricReport=t.CleanStoppedSessionTask=t.CleanRestartedSessionTask=t.CheckVideoInputFeedback=t.CheckVideoConnectivityFeedback=t.CheckNetworkUDPConnectivityFeedback=t.CheckNetworkTCPConnectivityFeedback=t.CheckContentShareConnectivityFeedback=t.CheckCameraResolutionFeedback=t.CheckAudioOutputFeedback=t.CheckAudioInputFeedback=t.CheckAudioConnectivityFeedback=t.CanvasVideoFrameBuffer=t.CSPMonitor=t.BitrateParameters=t.BaseTask=t.BaseConnectionHealthPolicy=t.BackgroundSegmentationVideoFrameProcessor=t.BackgroundSegmentationMetrics=t.BackgroundSegmentationInitializationStatus=t.BackgroundSegmentationCompatibilityChecker=t.BackgroundSegmentationBlurStrength=t.BackgroundSegmentationAssetLoader=t.BackgroundReplacementVideoFrameProcessor=t.BackgroundFilterVideoFrameProcessor=t.BackgroundBlurVideoFrameProcessor=t.BackgroundBlurStrength=t.AudioVideoControllerState=t.AudioProfile=t.AudioLogEvent=t.Attendee=t.AttachMediaInputTask=t.AsyncScheduler
17=t.ApplicationMetadata=t.AllHighestVideoBandwidthPolicy=void 0,t.IntervalScheduler=t.InMemoryJSONEventBuffer=t.GlobalMetricReport=t.GetUserMediaError=t.FullJitterLimitedBackoff=t.FullJitterBackoffFactory=t.FullJitterBackoff=t.FinishGatheringICECandidatesTask=t.EventIngestionConfiguration=t.EventBufferConfiguration=t.EncodedTransformWorkerCode=t.EncodedTransformManager=t.DeviceSelection=t.DevicePixelRatioWindowSource=t.DefaultWebSocketAdapter=t.DefaultVolumeIndicatorAdapter=t.DefaultVideoTransformDevice=t.DefaultVideoTileFactory=t.DefaultVideoTileController=t.DefaultVideoTile=t.DefaultVideoStreamIndex=t.DefaultVideoStreamIdSet=t.DefaultVideoFrameProcessorTimer=t.DefaultVideoFrameProcessorPipeline=t.DefaultVideoElementResolutionMonitor=t.DefaultVideoCaptureAndEncodeParameter=t.DefaultUserAgentParser=t.DefaultTranscriptionController=t.DefaultTransceiverController=t.DefaultSimulcastUplinkPolicyForContentShare=t.DefaultSimulcastUplinkPolicy=t.DefaultSignalingClient=t.DefaultSigV4=t.DefaultSessionStateController=t.DefaultReconnectController=t.DefaultRealtimeController=t.DefaultPingPong=t.DefaultModality=t.DefaultMessagingSession=t.DefaultMeetingSession=t.DefaultMeetingReadinessChecker=t.DefaultMeetingEventReporter=t.DefaultMediaDeviceFactory=t.DefaultEventController=t.DefaultEncodedTransformWorkerManager=t.DefaultDevicePixelRatioMonitor=t.DefaultDeviceController=t.DefaultContentShareController=t.DefaultBrowserBehavior=t.DefaultAudioVideoFacade=void 0,t.PrefetchOn=t.PermissionDeniedError=t.ParallelGroupTask=t.POSTLogger=t.OverconstrainedError=t.OpenSignalingConnectionTask=t.OnceTask=t.NotReadableError=t.NotFoundError=t.None=t.NoVideoUplinkBandwidthPolicy=t.NoVideoDownlinkBandwidthPolicy=t.NoOpVideoFrameProcessor=t.NoOpVideoElementFactory=t.NoOpTask=t.NoOpMediaStreamBroker=t.NoOpLogger=t.NoOpEventReporter=t.NoOpDeviceController=t.NoOpDebugLogger=t.NoOpAudioVideoController=t.NScaleVideoUplinkBandwidthPolicy=t.MutableVideoPreferences=t.MultiLogger=t.MonitorTask=t.ModelType=t.ModelSpecBuilder=t.MessagingSessionConfiguration=t.Message=t.MeetingSessionVideoAvailability=t.MeetingSessionURLs=t.MeetingSessionTimingManager=t.MeetingSessionTURNCredentials=t.MeetingSessionStatusCode=t.MeetingSessionStatus=t.MeetingSessionLifecycleEventCondition=t.MeetingSessionLifecycleEvent=t.MeetingSessionCredentials=t.MeetingSessionConfiguration=t.MeetingReadinessCheckerConfiguration=t.MeetingFeatures=t.MeetingEventsClientConfiguration=t.MediaMetricsEncodedTransformManager=t.MediaDeviceProxyHandler=t.Maybe=t.LogLevel=t.Log=t.ListenForVolumeIndicatorsTask=t.LeaveAndReceiveLeaveAckTask=t.JoinAndReceiveIndexTask=void 0,t.TimeoutTask=t.TimeoutScheduler=t.TaskStatus=t.TargetDisplaySize=t.SubscribeAndReceiveSubscribeAckTask=t.StreamMetricReport=t.StartEncodedTransformWorkerTask=t.Some=t.SingleNodeAudioTransformDevice=t.SimulcastVideoStreamIndex=t.SimulcastTransceiverController=t.SimulcastLayers=t.SimulcastContentShareTransceiverController=t.SignalingClientVideoSubscriptionConfiguration=t.SignalingClientSubscribe=t.SignalingClientJoin=t.SignalingClientEventType=t.SignalingClientEvent=t.SignalingClientConnectionRequest=t.SignalingAndMetricsConnectionMonitor=t.SetRemoteDescriptionTask=t.SetLocalDescriptionTask=t.SessionStateControllerTransitionResult=t.SessionStateControllerState=t.SessionStateControllerDeferPriority=t.SessionStateControllerAction=t.ServerSideNetworkAdaption=t.SerialGroupTask=t.SendingAudioFailureConnectionHealthPolicy=t.SendAndReceiveDataMessagesTask=t.SDPMediaSection=t.SDPCandidateType=t.SDP=t.RunnableTask=t.RedundantAudioRecoveryMetricReport=t.RedundantAudioEncoderWorkerCode=t.RedundantAudioEncodedTransformManager=t.RedundantAudioEncodedTransform=t.ReconnectionHealthPolicy=t.ReceiveVideoStreamIndexTask=t.ReceiveVideoInputTask=t.ReceiveRemoteVideoPauseResumeTask=t.ReceiveAudioInputTask=t.RealtimeVolumeIndicator=t.RealtimeState=t.RealtimeAttendeePositionInFrame=t.PromoteToPrimaryMeetingTask=t.PromiseQueue=t.ProcessorEffe
17ct=t.PrefetchSortBy=void 0,t.isVideoTransformDevice=t.isDestroyable=t.isAudioTransformDevice=t.ZLIBTextCompressor=t.WebSocketReadyState=t.WaitForAttendeePresenceTask=t.VoiceFocusTransformDevice=t.VoiceFocusDeviceTransformer=t.VideoTileState=t.VideoStreamDescription=t.VideoSource=t.VideoQualitySettings=t.VideoQualityAdaptationPreference=t.VideoPriorityBasedPolicyConfig=t.VideoPriorityBasedPolicy=t.VideoPreferences=t.VideoPreference=t.VideoOnlyTransceiverController=t.VideoLogEvent=t.VideoFxProcessor=t.VideoEncodingFramerateConnectionHealthPolicy=t.VideoEncodingCpuConnectionHealthPolicy=t.VideoEncodingConnectionHealthPolicyName=t.VideoEncodingConcurrentSendersHealthPolicy=t.VideoElementFrameMonitor=t.VideoCodecCapability=t.VideoAdaptiveProbePolicy=t.Versioning=t.UnusableAudioWarningConnectionHealthPolicy=t.TypeError=t.TranscriptionStatusType=t.TranscriptionStatus=t.TranscriptResult=t.TranscriptLanguageWithScore=t.TranscriptItemType=t.TranscriptItem=t.TranscriptEntity=t.TranscriptAlternative=t.Transcript=void 0;let r=n(i(55725));t.AllHighestVideoBandwidthPolicy=r.default;let s=n(i(38027));t.ApplicationMetadata=s.default;let a=n(i(16564));t.AsyncScheduler=a.default;let o=n(i(87310));t.AttachMediaInputTask=o.default;let d=n(i(2476));t.Attendee=d.default;let l=n(i(51417));t.AudioLogEvent=l.default;let c=n(i(15566));t.AudioProfile=c.default;let u=n(i(73646));t.AudioVideoControllerState=u.default;let h=n(i(7754));t.BackgroundBlurStrength=h.default;let f=n(i(48562));t.BackgroundBlurVideoFrameProcessor=f.default;let m=n(i(21238));t.BackgroundFilterVideoFrameProcessor=m.default;let p=n(i(82226));t.BackgroundReplacementVideoFrameProcessor=p.default;let g=n(i(28379));t.BackgroundSegmentationAssetLoader=g.default;let v=n(i(62478));t.BackgroundSegmentationCompatibilityChecker=v.default;let b=n(i(98846));t.BackgroundSegmentationMetrics=b.default;let S=n(i(27956));t.BackgroundSegmentationVideoFrameProcessor=S.default;let y=n(i(18471));t.BaseConnectionHealthPolicy=y.default;let C=n(i(99481));t.BaseTask=C.default;let w=n(i(11079));t.BitrateParameters=w.default;let T=n(i(17401));t.CSPMonitor=T.default;let M=n(i(16445));t.CanvasVideoFrameBuffer=M.default;let E=n(i(76942));t.CheckAudioConnectivityFeedback=E.default;let A=n(i(97571));t.CheckAudioInputFeedback=A.default;let k=n(i(30902));t.CheckAudioOutputFeedback=k.default;let _=n(i(1820));t.CheckCameraResolutionFeedback=_.default;let P=n(i(96963));t.CheckContentShareConnectivityFeedback=P.default;let R=n(i(39288));t.CheckNetworkTCPConnectivityFeedback=R.default;let I=n(i(80322));t.CheckNetworkUDPConnectivityFeedback=I.default;let O=n(i(57434));t.CheckVideoConnectivityFeedback=O.default;let x=n(i(34126));t.CheckVideoInputFeedback=x.default;let D=n(i(94871));t.CleanRestartedSessionTask=D.default;let B=n(i(32709));t.CleanStoppedSessionTask=B.default;let N=n(i(14388));t.ClientMetricReport=N.default;let L=n(i(87911));t.ClientMetricReportDirection=L.default;let F=n(i(40372));t.ClientMetricReportMediaType=F.default;let V=n(i(47715));t.ClientVideoStreamReceivingReport=V.default;let U=n(i(74813));t.ConnectionHealthData=U.default;let z=n(i(28677));t.ConnectionHealthPolicyConfiguration=z.default;let $=n(i(87594));t.ConsoleLogger=$.default;let H=n(i(26519));t.ContentShareConstants=H.default;let j=n(i(82083));t.ContentShareMediaStreamBroker=j.default;let W=n(i(84710));t.CreatePeerConnectionTask=W.default;let G=n(i(48999));t.CreateSDPTask=G.default;let K=n(i(93661));t.DataMessage=K.default;let q=n(i(28270));t.DefaultActiveSpeakerDetector=q.default;let Q=n(i(76578));t.DefaultActiveSpeakerPolicy=Q.default;let J=n(i(29174));t.DefaultAudioMixController=J.default;let Y=n(i(63629));t.DefaultAudioVideoController=Y.default;let X=n(i(7924));t.DefaultAudioVideoFacade=X.default;let Z=n(i(12340));t.DefaultBrowserBehavior=Z.default;let ee=n(i(84082));t.DefaultContentShareController=ee.default;let et=n(i(41198));t.DefaultDeviceController=et.default;let ei=n(i(32681));t.DefaultDevicePixelRatioMonitor=ei.default;let en=n(i(31901));t.DefaultEncodedTransformWorkerManager=en.default;let er=n(i(75499));t.DefaultEventController=er.default;let es=n(i(3496));t.DefaultMediaDeviceFactory=es.default;let ea=n(i(96558));t.DefaultMeetingEventReporter=ea.default;let eo=n(i(34611));t.DefaultMeetingReadinessChecker=eo.default;
17let ed=n(i(6817));t.DefaultMeetingSession=ed.default;let el=n(i(26711));t.DefaultMessagingSession=el.default;let ec=n(i(67941));t.DefaultModality=ec.default;let eu=n(i(61711));t.DefaultPingPong=eu.default;let eh=n(i(64446));t.DefaultRealtimeController=eh.default;let ef=n(i(80409));t.DefaultReconnectController=ef.default;let em=n(i(13382));t.DefaultSessionStateController=em.default;let ep=n(i(71148));t.DefaultSigV4=ep.default;let eg=n(i(51774));t.DefaultSignalingClient=eg.default;let ev=n(i(8459));t.DefaultSimulcastUplinkPolicy=ev.default;let eb=n(i(6354));t.DefaultSimulcastUplinkPolicyForContentShare=eb.default;let eS=n(i(847));t.DefaultTransceiverController=eS.default;let ey=n(i(19893));t.DefaultTranscriptionController=ey.default;let eC=n(i(50794));t.DefaultUserAgentParser=eC.default;let ew=n(i(10512));t.DefaultVideoCaptureAndEncodeParameter=ew.default;let eT=n(i(14284));t.DefaultVideoElementResolutionMonitor=eT.default;let eM=n(i(2817));t.DefaultVideoFrameProcessorPipeline=eM.default;let eE=n(i(25426));t.DefaultVideoFrameProcessorTimer=eE.default;let eA=n(i(27316));t.DefaultVideoStreamIdSet=eA.default;let ek=n(i(35341));t.DefaultVideoStreamIndex=ek.default;let e_=n(i(6476));t.DefaultVideoTile=e_.default;let eP=n(i(53027));t.DefaultVideoTileController=eP.default;let eR=n(i(48569));t.DefaultVideoTileFactory=eR.default;let eI=n(i(56441));t.DefaultVideoTransformDevice=eI.default;let eO=n(i(84395));t.DefaultVolumeIndicatorAdapter=eO.default;let ex=n(i(92979));t.DefaultWebSocketAdapter=ex.default;let eD=n(i(70615));t.DevicePixelRatioWindowSource=eD.default;let eB=n(i(22752));t.DeviceSelection=eB.default;let eN=n(i(82904));t.EncodedTransformManager=eN.default;let eL=n(i(59503));t.EncodedTransformWorkerCode=eL.default;let eF=n(i(22973));t.EventBufferConfiguration=eF.default;let eV=n(i(927));t.EventIngestionConfiguration=eV.default;let eU=n(i(63985));t.FinishGatheringICECandidatesTask=eU.default;let ez=n(i(4494));t.FullJitterBackoff=ez.default;let e$=n(i(1571));t.FullJitterBackoffFactory=e$.default;let eH=n(i(56985));t.FullJitterLimitedBackoff=eH.default;let ej=n(i(64212));t.GetUserMediaError=ej.default;let eW=n(i(85981));t.GlobalMetricReport=eW.default;let eG=n(i(46561));t.InMemoryJSONEventBuffer=eG.default;let eK=n(i(68414));t.IntervalScheduler=eK.default;let eq=n(i(68092));t.JoinAndReceiveIndexTask=eq.default;let eQ=n(i(76611));t.LeaveAndReceiveLeaveAckTask=eQ.default;let eJ=n(i(72655));t.ListenForVolumeIndicatorsTask=eJ.default;let eY=n(i(13763));t.Log=eY.default;let eX=n(i(94618));t.LogLevel=eX.default;let eZ=n(i(80297));t.MediaDeviceProxyHandler=eZ.default;let e0=n(i(6030));t.MediaMetricsEncodedTransformManager=e0.default;let e1=n(i(71782));t.MeetingEventsClientConfiguration=e1.default;let e2=n(i(47899));t.MeetingFeatures=e2.default;let e6=n(i(26978));t.MeetingReadinessCheckerConfiguration=e6.default;let e3=n(i(63170));t.MeetingSessionConfiguration=e3.default;let e4=n(i(69461));t.MeetingSessionCredentials=e4.default;let e5=n(i(29641));t.MeetingSessionLifecycleEvent=e5.default;let e8=n(i(29951));t.MeetingSessionLifecycleEventCondition=e8.default;let e9=n(i(90176));t.MeetingSessionStatus=e9.default;let e7=n(i(69647));t.MeetingSessionStatusCode=e7.default;let te=n(i(68187));t.MeetingSessionTURNCredentials=te.default;let tt=n(i(53652));t.MeetingSessionTimingManager=tt.default;let ti=n(i(60692));t.MeetingSessionURLs=ti.default;let tn=n(i(14118));t.MeetingSessionVideoAvailability=tn.default;let tr=n(i(42562));t.Message=tr.default;let ts=n(i(36229));t.MessagingSessionConfiguration=ts.default;let ta=n(i(50838));t.ModelSpecBuilder=ta.default;let to=n(i(74575));t.MonitorTask=to.default;let td=n(i(14034));t.MultiLogger=td.default;let tl=n(i(95876));t.NScaleVideoUplinkBandwidthPolicy=tl.default;let tc=n(i(18173));t.NoOpAudioVideoController=tc.default;let tu=n(i(50495));t.NoOpDebugLogger=tu.default;let th=n(i(96225));t.NoOpDeviceController=th.default;let tf=n(i(99309));t.NoOpEventReporter=tf.default;let tm=n(i(19202));t.NoOpLogger=tm.default;let tp=n(i(87617));t.NoOpMediaStreamBroker=tp.default;let tg=n(i(36154));t.NoOpTask=tg.default;let tv=n(i(92796));t.NoOpVideoElementFactory=tv.default;let tb=n(i(66642));t.NoOpVideoFrameProcessor=tb.default;
17let tS=n(i(10197));t.NoVideoDownlinkBandwidthPolicy=tS.default;let ty=n(i(73967));t.NoVideoUplinkBandwidthPolicy=ty.default;let tC=n(i(92613));t.NotFoundError=tC.default;let tw=n(i(27688));t.NotReadableError=tw.default;let tT=n(i(77540));t.OnceTask=tT.default;let tM=n(i(54633));t.OpenSignalingConnectionTask=tM.default;let tE=n(i(88254));t.OverconstrainedError=tE.default;let tA=n(i(26538));t.POSTLogger=tA.default;let tk=n(i(59879));t.ParallelGroupTask=tk.default;let t_=n(i(27578));t.PermissionDeniedError=t_.default;let tP=n(i(39653));t.PrefetchOn=tP.default;let tR=n(i(79273));t.PrefetchSortBy=tR.default;let tI=n(i(91973));t.PromiseQueue=tI.default;let tO=n(i(67275));t.PromoteToPrimaryMeetingTask=tO.default;let tx=n(i(69925));t.RealtimeAttendeePositionInFrame=tx.default;let tD=n(i(58142));t.RealtimeState=tD.default;let tB=n(i(34605));t.RealtimeVolumeIndicator=tB.default;let tN=n(i(74638));t.ReceiveAudioInputTask=tN.default;let tL=n(i(69609));t.ReceiveRemoteVideoPauseResumeTask=tL.default;let tF=n(i(32910));t.ReceiveVideoInputTask=tF.default;let tV=n(i(87552));t.ReceiveVideoStreamIndexTask=tV.default;let tU=n(i(67089));t.ReconnectionHealthPolicy=tU.default;let tz=n(i(45617));t.RedundantAudioEncodedTransform=tz.default;let t$=n(i(50131));t.RedundantAudioEncodedTransformManager=t$.default;let tH=n(i(27089));t.RedundantAudioEncoderWorkerCode=tH.default;let tj=n(i(55728));t.RedundantAudioRecoveryMetricReport=tj.default;let tW=n(i(42561));t.RunnableTask=tW.default;let tG=n(i(85207));t.SDP=tG.default;let tK=n(i(5774));t.SDPCandidateType=tK.default;let tq=n(i(7458));t.SDPMediaSection=tq.default;let tQ=n(i(13563));t.SendAndReceiveDataMessagesTask=tQ.default;let tJ=n(i(80279));t.SendingAudioFailureConnectionHealthPolicy=tJ.default;let tY=n(i(72762));t.SerialGroupTask=tY.default;let tX=n(i(16802));t.ServerSideNetworkAdaption=tX.default;let tZ=n(i(1982));t.SessionStateControllerAction=tZ.default;let t0=n(i(94433));t.SessionStateControllerDeferPriority=t0.default;let t1=n(i(4754));t.SessionStateControllerState=t1.default;let t2=n(i(49160));t.SessionStateControllerTransitionResult=t2.default;let t6=n(i(45065));t.SetLocalDescriptionTask=t6.default;let t3=n(i(12450));t.SetRemoteDescriptionTask=t3.default;let t4=n(i(12790));t.SignalingAndMetricsConnectionMonitor=t4.default;let t5=n(i(35848));t.SignalingClientConnectionRequest=t5.default;let t8=n(i(37308));t.SignalingClientEvent=t8.default;let t9=n(i(66485));t.SignalingClientEventType=t9.default;let t7=n(i(16387));t.SignalingClientJoin=t7.default;let ie=n(i(37928));t.SignalingClientSubscribe=ie.default;let it=n(i(83065));t.SignalingClientVideoSubscriptionConfiguration=it.default;let ii=n(i(56446));t.SimulcastContentShareTransceiverController=ii.default;let ir=n(i(92964));t.SimulcastLayers=ir.default;let is=n(i(46599));t.SimulcastTransceiverController=is.default;let ia=n(i(30481));t.SimulcastVideoStreamIndex=ia.default;let io=n(i(80354));t.SingleNodeAudioTransformDevice=io.default;let id=n(i(50949));t.StartEncodedTransformWorkerTask=id.default;let il=n(i(11566));t.StreamMetricReport=il.default;let ic=n(i(99880));t.SubscribeAndReceiveSubscribeAckTask=ic.default;let iu=n(i(14607));t.TargetDisplaySize=iu.default;let ih=n(i(53364));t.TaskStatus=ih.default;let im=n(i(71474));t.TimeoutScheduler=im.default;let ip=n(i(55159));t.TimeoutTask=ip.default;let ig=n(i(18901));t.Transcript=ig.default;let iv=n(i(2706));t.TranscriptAlternative=iv.default;let ib=n(i(45053));t.TranscriptEntity=ib.default;let iS=n(i(31909));t.TranscriptItem=iS.default;let iy=n(i(28185));t.TranscriptItemType=iy.default;let iC=n(i(48898));t.TranscriptLanguageWithScore=iC.default;let iw=n(i(45252));t.TranscriptResult=iw.default;let iT=n(i(62620));t.TranscriptionStatus=iT.default;let iM=n(i(78648));t.TranscriptionStatusType=iM.default;let iE=n(i(77916));t.TypeError=iE.default;let iA=n(i(355));t.UnusableAudioWarningConnectionHealthPolicy=iA.default;let ik=n(i(61492));t.Versioning=ik.default;let i_=n(i(78474));t.VideoAdaptiveProbePolicy=i_.default;let iP=n(i(92220));t.VideoCodecCapability=iP.default;let iR=n(i(88386));t.VideoElementFrameMonitor=iR.default;let iI=n(i(83015));t.VideoEncodingConcurrentSendersHealthPolicy=iI.default;let iO=n(i(74588));t.VideoEncodingConnectionHealthPolicyName=iO.default;let ix=n(i(85463));t.VideoEncodingCpuConnectionHealthPolicy=ix.default;let iD=n(i(50070));t.VideoEncodingFramerateConnectionHealthPolicy=iD.default;let iB=n(i(40626));t.VideoFxProcessor=iB.default;let iN=n(i(77769));t.VideoLogEvent=iN.default;let iL=n(i(50615));t.VideoOnlyTransceiverController=iL.default;let iF=n(i(92056));t.VideoPreference=iF.default;let iV=n(i(7472));t.VideoPreferences=iV.default;let iU=n(i(64891));t.VideoPriorityBasedPolicy=iU.default;let iz=n(i(64336));t.VideoPriorityBasedPolicyConfig=iz.default;let i$=n(i(52612));t.VideoQualityAdaptationPreference=i$.default;let iH=n(i(31278));t.VideoQualitySettings=iH.default;let ij=n(i(38163));t.VideoSource=ij.default;let iW=n(i(86196));t.VideoStreamDescription=iW.default;let iG=n(i(81993));t.VideoTileState=iG.default;let iK=n(i(8917));t.VoiceFocusDeviceTransformer=iK.default;let iq=n(i(50105));t.VoiceFocusTransformDevice=iq.default;let iQ=n(i(51112));t.WaitForAttendeePresenceTask=iQ.default;let iJ=n(i(84924));t.WebSocketReadyState=iJ.default;let iY=n(i(17349));t.ZLIBTextCompressor=iY.default;let iX=i(98846);
17Object.defineProperty(t,"BackgroundSegmentationInitializationStatus",{enumerable:!0,get:function(){return iX.BackgroundSegmentationInitializationStatus}});let iZ=i(43781);Object.defineProperty(t,"BackgroundSegmentationBlurStrength",{enumerable:!0,get:function(){return iZ.BlurStrength}}),Object.defineProperty(t,"ModelType",{enumerable:!0,get:function(){return iZ.ModelType}}),Object.defineProperty(t,"ProcessorEffect",{enumerable:!0,get:function(){return iZ.ProcessorEffect}});let i0=i(7472);Object.defineProperty(t,"MutableVideoPreferences",{enumerable:!0,get:function(){return i0.MutableVideoPreferences}});let i1=i(24670);Object.defineProperty(t,"Some",{enumerable:!0,get:function(){return i1.Some}}),Object.defineProperty(t,"None",{enumerable:!0,get:function(){return i1.None}}),Object.defineProperty(t,"Maybe",{enumerable:!0,get:function(){return i1.Maybe}});let i2=i(69139);Object.defineProperty(t,"isAudioTransformDevice",{enumerable:!0,get:function(){return i2.isAudioTransformDevice}});let i6=i(96630);Object.defineProperty(t,"isDestroyable",{enumerable:!0,get:function(){return i6.isDestroyable}});let i3=i(88295);Object.defineProperty(t,"isVideoTransformDevice",{enumerable:!0,get:function(){return i3.isVideoTransformDevice}})},87594:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94618));class s{constructor(e,t=r.default.WARN){this.name=e,this.level=t}info(e){this.log(r.default.INFO,e)}warn(e){this.log(r.default.WARN,e)}error(e){this.log(r.default.ERROR,e)}debug(e){r.default.DEBUG<this.level||("string"==typeof e?this.log(r.default.DEBUG,e):e?this.log(r.default.DEBUG,e()):this.log(r.default.DEBUG,""+e))}setLogLevel(e){this.level=e}getLogLevel(){return this.level}log(e,t){if(e<this.level)return;let i=new Date().toISOString(),n=`${i} [${r.default[e]}] ${this.name} - ${t}`;switch(e){case r.default.ERROR:console.error(n);break;case r.default.WARN:console.warn(n);break;case r.default.DEBUG:console.debug(n.replace(/\\r\\n/g,"\n"));break;case r.default.INFO:console.info(n)}}}t.default=s},13763:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n){this.sequenceNumber=e,this.message=t,this.timestampMs=i,this.logLevel=n}}t.default=i},94618:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevel=void 0,(n=i||(t.LogLevel=i={}))[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.OFF=4]="OFF",t.default=i},14034:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94618));class s{constructor(...e){this._loggers=e}info(e){for(let t of this._loggers)t.info(e)}warn(e){for(let t of this._loggers)t.warn(e)}error(e){for(let t of this._loggers)t.error(e)}debug(e){let t,i;for(let n of(i="string"==typeof e?e:e?()=>(t||(t=e()),t):""+e,this._loggers))n.debug(i)}setLogLevel(e){for(let t of this._loggers)t.setLogLevel(e)}getLogLevel(){for(let e of this._loggers)return e.getLogLevel();return r.default.OFF}}t.default=s},50495:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94618)),s=n(i(19202));class a extends s.default{constructor(){super(r.default.DEBUG)}}t.default=a},19202:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94618));class s{constructor(e=r.default.OFF){this.level=e}info(e){}warn(e){}error(e){}debug(e){r.default.DEBUG<this.level||"string"==typeof e||e()}setLogLevel(e){this.level=e}getLogLevel(){return this.level}}t.default=s},26538:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(68414)),s=n(i(13763)),a=n(i(94618));class o{constructor(e){this.logCapture=[],this.lock=!1,this.sequenceNumber=0;let{url:t,batchSize:i=o.BATCH_SIZE,intervalMs:n=o.INTERVAL_MS,logLevel:r=a.default.WARN,metadata:s,headers:d}=e;this.url=t,this.batchSize=i,this.intervalMs=n,this.logLevel=r,this.metadata=s,this.headers=d,this.start(),this.eventListener=()=>{this.stop()},this.addEventListener()}addEventListener(){this.eventListener&&"window"in i.g&&window.addEventListener&&window.addEventListener("unload",this.eventListener)}removeEventListener(){this.eventListener&&"window"in i.g&&window.removeEventListener&&window.removeEventListener("unload",this.eventListener)}debug(e){a.default.DEBUG<this.logLevel||("string"==typeof e?this.log(a.default.DEBUG,e):e?this.log(a.default.DEBUG,e()):this.log(a.default.DEBUG,""+e))}info(e){this.log(a.default.INFO,e)}warn(e){this.log(a.default.WARN,e)}error(e){this.log(a.default.ERROR,e)}setLogLevel(e){this.logLevel=e}getLogLevel(){return this.logLevel}getLogCaptureSize(){return this.logCapture.length}
17start(){this.addEventListener(),this.intervalScheduler=new r.default(this.intervalMs),this.intervalScheduler.start(async()=>{if(!0===this.lock||0===this.getLogCaptureSize())return;this.lock=!0;let e=this.logCapture.slice(0,this.batchSize),t=this.makeRequestBody(e);try{let i=await fetch(this.url,{method:"POST",body:t,...this.headers?{headers:this.headers}:{}});200===i.status&&(this.logCapture=this.logCapture.slice(e.length))}catch(e){console.warn("[POSTLogger] "+e.message)}finally{this.lock=!1}})}stop(){var e;null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.removeEventListener();let t=this.makeRequestBody(this.logCapture);navigator.sendBeacon(this.url,t)}async destroy(){this.stop(),this.metadata=void 0,this.headers=void 0,this.logCapture=[],this.sequenceNumber=0,this.lock=!1,this.batchSize=0,this.intervalMs=0,this.url=void 0}makeRequestBody(e){return JSON.stringify({...this.metadata,logs:e})}log(e,t){if(e<this.logLevel)return;let i=Date.now();this.logCapture.push(new s.default(this.sequenceNumber,t,i,a.default[e])),this.sequenceNumber+=1}}o.BATCH_SIZE=85,o.INTERVAL_MS=2e3,t.default=o},3496:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(80297));class s{constructor(){this.isMediaDevicesSupported="undefined"!=typeof navigator&&!!navigator.mediaDevices}create(){if(this.isMediaDevicesSupported)return new Proxy(navigator.mediaDevices,new r.default);throw Error("navigator.mediaDevices is not supported")}}t.default=s},80297:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(16564)),s=n(i(68414));class a{constructor(){this.scheduler=null,this.devices=null,this.deviceChangeListeners=new Set,this.get=(e,t,i)=>{if(!Reflect.has(e,t))return;if(!("ondevicechange"in navigator.mediaDevices)){if("addEventListener"===t)return this.patchAddEventListener(e,t,i);if("removeEventListener"===t)return this.patchRemoveEventListener(e,t,i)}let n=Reflect.get(e,t,i);return"function"==typeof n?n.bind(e):n},this.patchAddEventListener=(e,t,i)=>{let n=Reflect.get(e,t,i);return(t,i,r)=>{if("devicechange"!==t)return Reflect.apply(n,e,[t,i,r]);this.deviceChangeListeners.add(i),this.scheduler||(this.scheduler=new s.default(a.INTERVAL_MS),this.scheduler.start(this.pollDeviceLists))}},this.patchRemoveEventListener=(e,t,i)=>{let n=Reflect.get(e,t,i);return(t,i,r)=>{if("devicechange"!==t)return Reflect.apply(n,e,[t,i,r]);this.deviceChangeListeners.delete(i),0===this.deviceChangeListeners.size&&this.scheduler&&(this.scheduler.stop(),this.scheduler=null)}},this.pollDeviceLists=async()=>{let e=await this.sortedDeviceList();this.devices&&(e.length!==this.devices.length||e.some((e,t)=>e.deviceId!==this.devices[t].deviceId))&&this.handleDeviceChangeEvent(),this.devices=e}}async sortedDeviceList(){return(await navigator.mediaDevices.enumerateDevices()).sort((e,t)=>e.deviceId<t.deviceId?1:e.deviceId>t.deviceId?-1:0)}handleDeviceChangeEvent(){for(let e of this.deviceChangeListeners)r.default.nextTick(()=>{if(this.deviceChangeListeners.has(e)){let t=new Event("devicechange");"function"==typeof e?e(t):e.handleEvent(t)}})}}a.INTERVAL_MS=1e3,t.default=a},87617:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{acquireAudioInputStream(){return Promise.reject()}acquireVideoInputStream(){return Promise.reject()}acquireDisplayInputStream(e){return Promise.reject()}muteLocalAudioInputStream(){}unmuteLocalAudioInputStream(){}addMediaStreamBrokerObserver(e){}removeMediaStreamBrokerObserver(e){}}t.default=i},76942:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioConnectivityFeedback=void 0,(n=i||(t.CheckAudioConnectivityFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.AudioInputRequestFailed=1]="AudioInputRequestFailed",n[n.AudioInputPermissionDenied=2]="AudioInputPermissionDenied",n[n.ConnectionFailed=3]="ConnectionFailed",n[n.AudioNotReceived=4]="AudioNotReceived",t.default=i},97571:function(e,t){"use strict";var i,n;
17Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioInputFeedback=void 0,(n=i||(t.CheckAudioInputFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.Failed=1]="Failed",n[n.PermissionDenied=2]="PermissionDenied",t.default=i},30902:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioOutputFeedback=void 0,(n=i||(t.CheckAudioOutputFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.Failed=1]="Failed",t.default=i},1820:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckCameraResolutionFeedback=void 0,(n=i||(t.CheckCameraResolutionFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.Failed=1]="Failed",n[n.ResolutionNotSupported=2]="ResolutionNotSupported",n[n.PermissionDenied=3]="PermissionDenied",t.default=i},96963:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckContentShareConnectivityFeedback=void 0,(n=i||(t.CheckContentShareConnectivityFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.Failed=1]="Failed",n[n.PermissionDenied=2]="PermissionDenied",n[n.TimedOut=3]="TimedOut",n[n.ConnectionFailed=4]="ConnectionFailed",t.default=i},39288:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckNetworkTCPConnectivityFeedback=void 0,(n=i||(t.CheckNetworkTCPConnectivityFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.MeetingSessionURLsNotInitialized=1]="MeetingSessionURLsNotInitialized",n[n.ConnectionFailed=2]="ConnectionFailed",n[n.ICENegotiationFailed=3]="ICENegotiationFailed",t.default=i},80322:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckNetworkUDPConnectivityFeedback=void 0,(n=i||(t.CheckNetworkUDPConnectivityFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.MeetingSessionURLsNotInitialized=1]="MeetingSessionURLsNotInitialized",n[n.ConnectionFailed=2]="ConnectionFailed",n[n.ICENegotiationFailed=3]="ICENegotiationFailed",t.default=i},57434:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckVideoConnectivityFeedback=void 0,(n=i||(t.CheckVideoConnectivityFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.VideoInputRequestFailed=1]="VideoInputRequestFailed",n[n.VideoInputPermissionDenied=2]="VideoInputPermissionDenied",n[n.ConnectionFailed=3]="ConnectionFailed",n[n.VideoNotSent=4]="VideoNotSent",t.default=i}
17,34126:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckVideoInputFeedback=void 0,(n=i||(t.CheckVideoInputFeedback=i={}))[n.Succeeded=0]="Succeeded",n[n.Failed=1]="Failed",n[n.PermissionDenied=2]="PermissionDenied",t.default=i},34611:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(29174)),s=n(i(12340)),a=n(i(41198)),o=n(i(27578)),d=n(i(99481)),l=n(i(55159)),c=n(i(76942)),u=n(i(97571)),h=n(i(30902)),f=n(i(1820)),m=n(i(96963)),p=n(i(39288)),g=n(i(80322)),v=n(i(57434)),b=n(i(34126)),S=n(i(26978));class y{static async delay(e){return new Promise(t=>setTimeout(t,e))}constructor(e,t,i=new S.default){this.logger=e,this.meetingSession=t,this.configuration=i,this.browserBehavior=new s.default}async checkAudioInput(e){try{return await this.meetingSession.audioVideo.startAudioInput(e),await this.meetingSession.audioVideo.stopAudioInput(),u.default.Succeeded}catch(e){if(this.logger.error(`MeetingReadinessChecker: Audio input check failed with error ${e}`),e instanceof o.default)return u.default.PermissionDenied;return u.default.Failed}}async checkAudioOutput(e,t,i=null){try{let n=e?a.default.getIntrinsicDeviceId(e):"";if(await this.playTone(n,this.configuration.audioOutputFrequency,i),await t())return h.default.Succeeded;return h.default.Failed}catch(e){return this.logger.error(`MeetingReadinessChecker: Audio output check failed with error: ${e}`),h.default.Failed}finally{await this.stopTone()}}async playTone(e,t,i){let n=this.configuration.audioOutputGain;this.oscillatorNode&&await this.stopTone(),this.audioContext=a.default.getAudioContext(),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=0,this.oscillatorNode=this.audioContext.createOscillator(),this.oscillatorNode.frequency.value=t,this.oscillatorNode.connect(this.gainNode),this.destinationStream=this.audioContext.createMediaStreamDestination(),this.gainNode.connect(this.destinationStream);let s=this.audioContext.currentTime+.1;this.gainNode.gain.setValueAtTime(0,s),this.gainNode.gain.linearRampToValueAtTime(n,s+.1),this.oscillatorNode.start();let o=new r.default(this.logger),d=i||new Audio,l=this.destinationStream.stream;this.audioElement=d;try{this.browserBehavior.supportsSetSinkId()&&await o.bindAudioDevice({deviceId:e})}catch(e){this.logger.error(`Failed to bind audio device: ${e}`)}try{await o.bindAudioElement(d)}catch(e){this.logger.error(`Failed to bind audio element: ${e}`)}await o.bindAudioStream(l)}async stopTone(){if(!this.audioContext||!this.gainNode||!this.oscillatorNode||!this.destinationStream)return;let e=()=>{this.audioElement&&(this.audioElement.pause(),this.audioElement.srcObject=null),this.oscillatorNode&&this.gainNode&&this.oscillatorNode.disconnect(this.gainNode),this.gainNode&&this.destinationStream&&this.gainNode.disconnect(this.destinationStream),this.oscillatorNode=null,this.gainNode=null,this.destinationStream=null,this.audioElement=null},t=new Promise(t=>{this.oscillatorNode.addEventListener("ended",()=>{e(),t()},{once:!0})}),i=this.configuration.audioOutputGain,n=this.audioContext.currentTime;this.gainNode.gain.setValueAtTime(i,n),this.gainNode.gain.linearRampToValueAtTime(0,n+.1),this.oscillatorNode.stop(n+.1+.1),await t}async checkVideoInput(e){try{return await this.meetingSession.audioVideo.startVideoInput(e),await this.meetingSession.audioVideo.stopVideoInput(),b.default.Succeeded}catch(e){if(this.logger.error(`MeetingReadinessChecker: Video check failed with error ${e}`),e instanceof o.default)return b.default.PermissionDenied;return b.default.Failed}}async checkCameraResolution(e,t,i){let n;try{let r=a.default.getIntrinsicDeviceId(e),s={video:this.calculateVideoConstraint(r,t,i)};n=await navigator.mediaDevices.getUserMedia(s)}catch(e){if(this.logger.error(`MeetingReadinessChecker: Camera resolution check with width: ${t} height ${i} failed with error ${e}`),e&&"OverconstrainedError"===e.name)return f.default.ResolutionNotSupported;if(e&&"NotAllowedError"===e.name)return f.default.PermissionDenied;return f.default.Failed}
17finally{n&&n.getTracks().forEach(function(e){e.stop()})}return f.default.Succeeded}calculateVideoConstraint(e,t,i){let n=this.browserBehavior.requiresResolutionAlignment(t,i),r={};return this.browserBehavior.requiresNoExactMediaStreamConstraints()?(r.deviceId=e,r.width=t,r.height=i):(r.deviceId={exact:e},r.width={exact:n[0]},r.height={exact:n[1]}),r}async checkContentShareConnectivity(e){let t=!1,i=!1,n={contentShareDidStart:()=>{t=!0}},r={audioVideoDidStart:()=>{i=!0}};try{if(this.meetingSession.audioVideo.addObserver(r),this.meetingSession.audioVideo.start(),this.meetingSession.audioVideo.addContentShareObserver(n),await this.meetingSession.audioVideo.startContentShareFromScreenCapture(e),await this.executeTimeoutTask(async()=>i&&t),!i)return m.default.ConnectionFailed;return await this.stopMeeting(),t?m.default.Succeeded:m.default.TimedOut}catch(e){if(this.logger.error(`MeetingReadinessChecker: Content share check failed with error ${e}`),"NotAllowedError"===e.name)return m.default.PermissionDenied;return m.default.Failed}finally{this.meetingSession.audioVideo.removeObserver(r),this.meetingSession.audioVideo.stopContentShare(),this.meetingSession.audioVideo.removeContentShareObserver(n)}}async checkAudioConnectivity(e){let t=!1,i={packetsReceived:0},n=this.meetingSession.audioVideo,r={metricsDidReceive(e){e.getRTCStatsReport().forEach(e=>
17{"inbound-rtp"===e.type&&("audio"===e.mediaType||"audio"===e.kind)&&(i.packetsReceived=e.packetsReceived)})}},s=(e,i,n,r)=>{e===this.meetingSession.configuration.credentials.attendeeId&&i&&(t=!0)};try{await n.startAudioInput(e)}catch(e){if(this.logger.error(`MeetingReadinessChecker: Failed to get audio input device with error ${e}`),e instanceof o.default)return c.default.AudioInputPermissionDenied;return c.default.AudioInputRequestFailed}return(n.realtimeSubscribeToAttendeeIdPresence(s),n.addObserver(r),await this.startMeeting())?(await this.executeTimeoutTask(async()=>this.isAudioConnectionSuccessful(t,i)),n.removeObserver(r),n.realtimeUnsubscribeToAttendeeIdPresence(s),await this.stopMeeting(),await this.meetingSession.audioVideo.stopAudioInput(),this.isAudioConnectionSuccessful(t,i)?c.default.Succeeded:c.default.AudioNotReceived):(n.removeObserver(r),n.realtimeUnsubscribeToAttendeeIdPresence(s),await this.meetingSession.audioVideo.stopAudioInput(),c.default.ConnectionFailed)}async checkVideoConnectivity(e){let t=this.meetingSession.audioVideo,i=0,n={metricsDidReceive(e){e.getRTCStatsReport().forEach(e=>{"outbound-rtp"===e.type&&("video"===e.mediaType||"video"===e.kind)&&(i=e.packetsSent)})}};try{await t.startVideoInput(e)}catch(e){if(this.logger.error(`MeetingReadinessChecker: Failed to get video input device with error ${e}`),e instanceof o.default)return v.default.VideoInputPermissionDenied;return v.default.VideoInputRequestFailed}return(t.addObserver(n),await this.startMeeting())?(t.startLocalVideoTile(),await this.executeTimeoutTask(async()=>i>0),await t.stopVideoInput(),await this.stopMeeting(),t.removeObserver(n),i<=0)?v.default.VideoNotSent:v.default.Succeeded:v.default.ConnectionFailed}async checkNetworkUDPConnectivity(){let e=!1,t={metricsDidReceive(t){t.getRTCStatsReport().forEach(t=>{"candidate-pair"===t.type&&"succeeded"===t.state&&(e=!0)})}};try{this.originalURLRewriter=this.meetingSession.configuration.urls.urlRewriter}catch(e){return this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${e}`),g.default.MeetingSessionURLsNotInitialized}this.meetingSession.configuration.urls.urlRewriter=e=>{let t=this.originalURLRewriter(e);return t.includes("transport=tcp")?"":t};let i=this.meetingSession.audioVideo;return(i.addObserver(t),await this.startMeeting())?(await this.executeTimeoutTask(async()=>e),this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,await this.stopMeeting(),i.removeObserver(t),e)?g.default.Succeeded:g.default.ICENegotiationFailed:(this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,g.default.ConnectionFailed)}async checkNetworkTCPConnectivity(){let e=!1,t={metricsDidReceive(t){t.getRTCStatsReport().forEach(t=>{"candidate-pair"===t.type&&"succeeded"===t.state&&(e=!0)})}};try{this.originalURLRewriter=this.meetingSession.configuration.urls.urlRewriter}catch(e){return this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${e}`),p.default.MeetingSessionURLsNotInitialized}this.meetingSession.configuration.urls.urlRewriter=e=>{let t=this.originalURLRewriter(e);return t.includes("transport=udp")?"":t};let i=this.meetingSession.audioVideo;return(i.addObserver(t),await this.startMeeting())?(await this.executeTimeoutTask(async()=>e),this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,await this.stopMeeting(),i.removeObserver(t),e)?p.default.Succeeded:p.default.ICENegotiationFailed:(this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,p.default.ConnectionFailed)}async startMeeting(){let e=!1,t={audioVideoDidStart:()=>{e=!0}};return this.meetingSession.audioVideo.addObserver(t),this.meetingSession.audioVideo.start(),await this.executeTimeoutTask(async()=>e),this.meetingSession.audioVideo.removeObserver(t),e}async stopMeeting(){let e=!1,t={audioVideoDidStop:t=>{e=!0}};return this.meetingSession.audioVideo.addObserver(t),this.meetingSession.audioVideo.stop(),await this.executeTimeoutTask(async()=>e),this.meetingSession.audioVideo.removeObserver(t),e}async executeTimeoutTask(e){let t=!1;class i extends d.default{constructor(e,t){super(e),this.waitDurationMs=t,this.isCancelled=!1}cancel(){this.isCancelled=!0}async run(){for(;!this.isCancelled;){if(await e()){t=!0;break}await y.delay(this.waitDurationMs)}}}let n=new l.default(this.logger,new i(this.logger,this.configuration.waitDurationMs),this.configuration.timeoutMs);return await n.run(),t}isAudioConnectionSuccessful(e,t){return e&&t.packetsReceived>0}}t.default=y}
17,26978:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.timeoutMs=1e4,this.waitDurationMs=3e3,this.audioOutputFrequency=440,this.audioOutputGain=.1}}t.default=i},6817:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(63629)),s=n(i(7924)),a=n(i(4494)),o=n(i(12340)),d=n(i(82083)),l=n(i(84082)),c=n(i(17401)),u=i(96630),h=n(i(31901)),f=n(i(75499)),m=n(i(80409)),p=n(i(92979));class g{constructor(e,t,i,n){this._eventController=n,this._configuration=e,this._logger=t,this.checkBrowserSupportAndFeatureConfiguration(),c.default.addLogger(this._logger),c.default.register(),this._eventController||(this._eventController=new f.default(e,t)),i.eventController||(i.eventController=this.eventController),this.encodedTransformWorkerManager=new h.default(this._logger),this.audioVideoController=new r.default(this._configuration,this._logger,new p.default(this._logger),i,new m.default(this._configuration.reconnectTimeoutMs,new a.default(this._configuration.reconnectFixedWaitMs,this._configuration.reconnectShortBackOffMs,this._configuration.reconnectLongBackOffMs)),this.eventController,this.encodedTransformWorkerManager),this._deviceController=i,this.logger.info(`MeetingFeatures: ${JSON.stringify(e.meetingFeatures)}`),this.contentShareEncodedTransformWorkerManager=new h.default(this._logger);let o=new d.default(this._logger);this.contentShareController=new l.default(o,new r.default(l.default.createContentShareMeetingSessionConfigure(this._configuration),this._logger,new p.default(this._logger),o,new m.default(this._configuration.reconnectTimeoutMs,new a.default(this._configuration.reconnectFixedWaitMs,this._configuration.reconnectShortBackOffMs,this._configuration.reconnectLongBackOffMs)),void 0,this.contentShareEncodedTransformWorkerManager),this.audioVideoController),this.audioVideoFacade=new s.default(this.audioVideoController,this.audioVideoController.videoTileController,this.audioVideoController.realtimeController,this.audioVideoController.audioMixController,this._deviceController,this.contentShareController)}get configuration(){return this._configuration}get logger(){return this._logger}get audioVideo(){return this.audioVideoFacade}get contentShare(){return this.contentShareController}get deviceController(){return this._deviceController}get eventController(){return this._eventController}async destroy(){var e,t;(0,u.isDestroyable)(this.contentShareController)&&await this.contentShareController.destroy(),(0,u.isDestroyable)(this.audioVideoController)&&await this.audioVideoController.destroy(),(0,u.isDestroyable)(this.eventController)&&await this.eventController.destroy(),await (null===(e=this.encodedTransformWorkerManager)||void 0===e?void 0:e.stop()),await (null===(t=this.contentShareEncodedTransformWorkerManager)||void 0===t?void 0:t.stop()),c.default.removeLogger(this._logger),this._logger=void 0,this._configuration=void 0,this._deviceController=void 0,this.audioVideoFacade=void 0,this.audioVideoController=void 0,this.contentShareController=void 0,this._eventController=void 0,this.encodedTransformWorkerManager=void 0,this.contentShareEncodedTransformWorkerManager=void 0}checkBrowserSupportAndFeatureConfiguration(){let e=new o.default,t=`${e.name()} ${e.majorVersion()} (${e.version()})`;if(this.logger.info(`browser is ${t}`),e.isSupported()||this.logger.warn(`this browser is not currently supported. Stability may suffer. Supported browsers are: ${e.supportString()}.`),this._configuration.videoUplinkBandwidthPolicy){if(this.isSimulcastUplinkPolicy(this._configuration.videoUplinkBandwidthPolicy)){if(!e.hasChromiumWebRTC())throw Error("Simulcast is only supported on Chromium-based browsers");this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!0}else this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1}this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers&&(e.hasChromiumWebRTC()?this.logger.info(`Simulcast is enabled for ${e.name()}`):(this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.logger.info("Simulcast is only supported on Chromium-based browsers")),this._configuration.enableSVC&&(this._configuration.enableSVC=!1,this.logger.info("SVC is not successfully enabled since simulcast is enabled"))),this._configuration.enableSVC&&!e.supportsScalableVideoCoding()&&(this._configuration.enableSVC=!1,this.logger.info("SVC is only supported on Chromium-based browsers with version 111 or above"))}isSimulcastUplinkPolicy(e){return!!(e&&e.addObserver)}}t.default=g},47899:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
17dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(31278));class s{constructor(e=r.default.VideoResolutionHD,t=r.default.VideoResolutionFHD){this.videoMaxResolution=e,this.contentMaxResolution=t}clone(){return new s(this.videoMaxResolution,this.contentMaxResolution)}}t.default=s},63170:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(28677)),s=n(i(31278)),a=i(76477),o=n(i(47899)),d=n(i(69461)),l=n(i(60692));class c{constructor(e,t){var i,n;if(this.meetingId=null,this.externalMeetingId=null,this.credentials=null,this.urls=null,this.connectionTimeoutMs=15e3,this.attendeePresenceTimeoutMs=0,this.connectionHealthPolicyConfiguration=new r.default,this.reconnectTimeoutMs=12e4,this.reconnectFixedWaitMs=0,this.reconnectShortBackOffMs=1e3,this.reconnectLongBackOffMs=5e3,this.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.enableSVC=!1,this.videoDownlinkBandwidthPolicy=null,this.videoUplinkBandwidthPolicy=null,this.keepLastFrameWhenPaused=!1,this.disablePeriodicKeyframeRequestOnContentSender=!1,this.meetingFeatures=new o.default,e){(e=(0,a.toLowerCasePropertyNames)(e)).meeting&&(e=e.meeting),this.meetingId=e.meetingid,this.externalMeetingId=e.externalmeetingid,this.urls=new l.default,this.urls.audioHostURL=e.mediaplacement.audiohosturl,this.urls.signalingURL=e.mediaplacement.signalingurl,this.urls.turnControlURL=e.mediaplacement.turncontrolurl,e.mediaplacement.eventingestionurl&&(this.urls.eventIngestionURL=e.mediaplacement.eventingestionurl);let t=(e,t)=>{switch(e){case"None":return s.default.VideoDisabled;case"HD":return s.default.VideoResolutionHD;case"FHD":return s.default.VideoResolutionFHD;case"UHD":return s.default.VideoResolutionUHD;default:return t}};if((null===(i=e.meetingfeatures)||void 0===i?void 0:i.video)!==void 0||(null===(n=e.meetingfeatures)||void 0===n?void 0:n.content)!==void 0){let i=void 0===e.meetingfeatures.video?"HD":e.meetingfeatures.video.maxresolution,n=void 0===e.meetingfeatures.content?"FHD":e.meetingfeatures.content.maxresolution;this.meetingFeatures=new o.default(t(i,s.default.VideoResolutionHD),t(n,s.default.VideoResolutionFHD))}}t&&((t=(0,a.toLowerCasePropertyNames)(t)).attendee&&(t=t.attendee),this.credentials=new d.default,this.credentials.attendeeId=t.attendeeid,this.credentials.externalUserId=t.externaluserid,this.credentials.joinToken=t.jointoken)}}t.default=c},69461:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.attendeeId=null,this.externalUserId=null,this.joinToken=null}toJSON(){return{attendeeId:this.attendeeId,joinToken:null===this.joinToken?null:"<redacted>"}}}t.default=i},29641:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionLifecycleEvent=void 0,(n=i||(t.MeetingSessionLifecycleEvent=i={}))[n.Connecting=0]="Connecting",n[n.Started=1]="Started",n[n.Stopped=2]="Stopped",t.default=i},29951:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionLifecycleEventCondition=void 0,(n=i||(t.MeetingSessionLifecycleEventCondition=i={}))[n.ConnectingNew=0]="ConnectingNew",n[n.ReconnectingExisting=1]="ReconnectingExisting",n[n.StartedNew=2]="StartedNew",n[n.StartedExisting=3]="StartedExisting",n[n.StartedAfterReconnect=4]="StartedAfterReconnect",n[n.StoppedCleanly=5]="StoppedCleanly",n[n.StoppedWithFailure=6]="StoppedWithFailure",t.default=i},90176:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(8283),s=n(i(69647));class a{constructor(e){this._statusCode=e}statusCode(){return this._statusCode}isFailure(){switch(this._statusCode){case s.default.AudioAuthenticationRejected:case s.default.AudioCallAtCapacity:case s.default.AudioInternalServerError:case s.default.AudioServiceUnavailable:case s.default.AudioDisconnected:case s.default.VideoCallAtSourceCapacity:case s.default.SignalingBadRequest:case s.default.SignalingInternalServerError:case s.default.SignalingRequestFailed:case s.default.ICEGatheringTimeoutWorkaround:case s.default.ConnectionHealthReconnect:case s.default.RealtimeApiFailed:case s.default.TaskFailed:case s.default.NoAttendeePresent:case s.default.SignalingChannelClosedUnexpectedly:return!0;default:return!1}}isTerminal(){switch(this._statusCode){case s.default.Left:case s.default.AudioJoinedFromAnotherDevice:case s.default.AudioAuthenticationRejected:case s.default.AudioCallAtCapacity:case s.default.MeetingEnded:case s.default.AudioDisconnected:case s.default.TURNCredentialsForbidden:case s.default.SignalingBadRequest:case s.default.SignalingRequestFailed:case s.default.VideoCallAtSourceCapacity:case s.default.RealtimeApiFailed:case s.default.AudioAttendeeRemoved:return!0;default:return!1}}isAudioConnectionFailure(){switch(this._statusCode){case s.default.AudioAuthenticationRejected:case s.default.AudioInternalServerError:case s.default.AudioServiceUnavailable:case s.default.ICEGatheringTimeoutWorkaround:case s.default.SignalingBadRequest:case s.default.SignalingInternalServerError:case s.default.SignalingRequestFailed:case s.default.RealtimeApiFailed:case s.default.NoAttendeePresent:return!0;default:return!1}}toString(){switch(this._statusCode){case s.default.OK:return"Everything is OK so far.";case s.default.Left:return"The attendee left the meeting.";case s.default.AudioJoinedFromAnotherDevice:return"The attendee joined from another device.";case s.default.AudioAuthenticationRejected:return"The meeting rejected the attendee.";case s.default.AudioCallAtCapacity:return"The attendee couldn't join because the meeting was at capacity.";case s.default.MeetingEnded:return"The meeting ended.";case s.default.AudioInternalServerError:case s.default.AudioServiceUnavailable:case s.default.AudioDisconnected:return"The audio connection failed.";
17case s.default.VideoCallSwitchToViewOnly:return"The attendee couldn't start the local video because the maximum video capacity was reached.";case s.default.VideoCallAtSourceCapacity:return"The connection failed due to an internal server error.";case s.default.SignalingBadRequest:case s.default.SignalingInternalServerError:case s.default.SignalingRequestFailed:return"The signaling connection failed.";case s.default.ICEGatheringTimeoutWorkaround:return"Gathering ICE candidates timed out. In Chrome, this might indicate that the browser is in a bad state after reconnecting to VPN.";case s.default.ConnectionHealthReconnect:return"The meeting was reconnected.";case s.default.RealtimeApiFailed:return"The real-time API failed. This status code might indicate that the callback you passed to the real-time API threw an exception.";case s.default.TaskFailed:return"The connection failed. See the error message for more details.";case s.default.IncompatibleSDP:return"The connection failed due to incompatible SDP.";case s.default.TURNCredentialsForbidden:return"The meeting ended, or the attendee was removed.";case s.default.NoAttendeePresent:return"The attendee was not present.";case s.default.AudioAttendeeRemoved:return"The meeting ended because attendee removed.";case s.default.AudioVideoWasRemovedFromPrimaryMeeting:return"The Primary meeting credentials provided are no longer valid. chime::DeleteAttendee may have been called on them.";case s.default.AudioVideoDisconnectedWhilePromoted:return"The client disconnected while promoted, which will automatically demote. The attendee must promote again to participate.";case s.default.AudioDisconnectAudio:return"The audio connection failed.";case s.default.SignalingChannelClosedUnexpectedly:return"The signaling channel was closed unexpectedly. This may be due to a network change or backend detected failure.";case s.default.EncodedTransformManagerFailed:return"The encoded transform worker manager failed. The connection will be reconnected without transforms.";default:{let e=this._statusCode;throw Error(`Unhandled case: ${e}`)}}}static fromSignalFrame(e){return e.error&&e.error.status?this.fromSignalingStatus(e.error.status):e.type===r.SdkSignalFrame.Type.AUDIO_STATUS?e.audioStatus?this.fromAudioStatus(e.audioStatus.audioStatus):new a(s.default.SignalingRequestFailed):new a(e.type===r.SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE?s.default.AudioVideoWasRemovedFromPrimaryMeeting:s.default.OK)}static fromAudioStatus(e){switch(e){case 200:return new a(s.default.OK);case 301:return new a(s.default.AudioJoinedFromAnotherDevice);case 302:return new a(s.default.AudioDisconnectAudio);case 403:return new a(s.default.AudioAuthenticationRejected);case 409:return new a(s.default.AudioCallAtCapacity);case 410:return new a(s.default.MeetingEnded);case 411:return new a(s.default.AudioAttendeeRemoved);case 500:return new a(s.default.AudioInternalServerError);case 503:return new a(s.default.AudioServiceUnavailable);default:if(2===Math.floor(e/100))return new a(s.default.OK);return new a(s.default.AudioDisconnected)}}static fromSignalingStatus(e){switch(e){case 206:return new a(s.default.VideoCallSwitchToViewOnly);case 509:return new a(s.default.VideoCallAtSourceCapacity);case 403:return new a(s.default.AudioAuthenticationRejected);case 409:return new a(s.default.AudioCallAtCapacity);default:switch(Math.floor(e/100)){case 2:return new a(s.default.OK);case 4:return new a(s.default.SignalingBadRequest);case 5:return new a(s.default.SignalingInternalServerError);default:return new a(s.default.SignalingRequestFailed)}}}}t.default=a},69647:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionStatusCode=void 0,(n=i||(t.MeetingSessionStatusCode=i={}))[n.OK=0]="OK",n[n.Left=1]="Left",n[n.AudioJoinedFromAnotherDevice=2]="AudioJoinedFromAnotherDevice",n[n.AudioAuthenticationRejected=3]="AudioAuthenticationRejected",n[n.AudioCallAtCapacity=4]="AudioCallAtCapacity",n[n.MeetingEnded=5]="MeetingEnded",n[n.AudioInternalServerError=6]="AudioInternalServerError",n[n.AudioServiceUnavailable=7]="AudioServiceUnavailable",n[n.AudioDisconnected=8]="AudioDisconnected",n[n.VideoCallSwitchToViewOnl
17y=9]="VideoCallSwitchToViewOnly",n[n.VideoCallAtSourceCapacity=10]="VideoCallAtSourceCapacity",n[n.SignalingBadRequest=11]="SignalingBadRequest",n[n.SignalingInternalServerError=12]="SignalingInternalServerError",n[n.SignalingRequestFailed=13]="SignalingRequestFailed",n[n.SignalingChannelClosedUnexpectedly=14]="SignalingChannelClosedUnexpectedly",n[n.ICEGatheringTimeoutWorkaround=15]="ICEGatheringTimeoutWorkaround",n[n.ConnectionHealthReconnect=16]="ConnectionHealthReconnect",n[n.RealtimeApiFailed=17]="RealtimeApiFailed",n[n.TaskFailed=18]="TaskFailed",n[n.IncompatibleSDP=19]="IncompatibleSDP",n[n.TURNCredentialsForbidden=20]="TURNCredentialsForbidden",n[n.NoAttendeePresent=21]="NoAttendeePresent",n[n.AudioAttendeeRemoved=22]="AudioAttendeeRemoved",n[n.AudioVideoWasRemovedFromPrimaryMeeting=23]="AudioVideoWasRemovedFromPrimaryMeeting",n[n.AudioVideoDisconnectedWhilePromoted=24]="AudioVideoDisconnectedWhilePromoted",n[n.AudioDisconnectAudio=25]="AudioDisconnectAudio",n[n.EncodedTransformManagerFailed=26]="EncodedTransformManagerFailed",t.default=i},68187:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.username=null,this.password=null,this.ttl=null,this.uris=null}}t.default=i},60692:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this._audioHostURL=null,this._signalingURL=null,this._turnControlURL=null,this._eventIngestionURL=null,this.urlRewriter=e=>e,this.urlRewriterMulti=null}get audioHostURL(){return this.urlRewriter(this._audioHostURL)}set audioHostURL(e){this._audioHostURL=e}get signalingURL(){return this.urlRewriter(this._signalingURL)}set signalingURL(e){this._signalingURL=e}get turnControlURL(){return this.urlRewriter(this._turnControlURL)}set turnControlURL(e){this._turnControlURL=e}get eventIngestionURL(){return this.urlRewriter(this._eventIngestionURL)}set eventIngestionURL(e){this._eventIngestionURL=e}}t.default=i},14118:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.remoteVideoAvailable=!1,this.canStartLocalVideo=!1}equal(e){return this.remoteVideoAvailable===e.remoteVideoAvailable&&this.canStartLocalVideo===e.canStartLocalVideo}clone(){let e=new i;return e.remoteVideoAvailable=this.remoteVideoAvailable,e.canStartLocalVideo=this.canStartLocalVideo,e}}t.default=i},53652:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e){this.observers=new Set,this.batchTimeout=null,this.signalingTiming={},this.isResubscribe=!1,this.remoteAudioTiming={},this.localAudioTiming={},this.localVideoTiming={},this.localVideoHasEmitted=!1,this.expectingRemoteVideo=!1,this.remoteVideoTiming=new Map,this.boundRemoteVideoGroupIds=new Set,this.emittedRemoteVideoGroupIds=new Set,this.logger=e}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}startBatchIfNeeded(){null===this.batchTimeout&&this.scheduleBatchTimeout()}onStart(){if(void 0!==this.signalingTiming.startMs){this.logger.debug("onStart called multiple times, ignoring");return}this.signalingTiming.startMs=this.getCurrentTimestamp(),this.startBatchIfNeeded(),this.logger.info(`MeetingSessionTimingManager: onStart at ${this.signalingTiming.startMs}`)}
17onResubscribeStart(){if(void 0!==this.signalingTiming.startMs){this.logger.debug("onResubscribeStart: signaling timing already active, ignoring");return}this.isResubscribe=!0,this.signalingTiming.startMs=this.getCurrentTimestamp(),this.startBatchIfNeeded(),this.logger.debug(`MeetingSessionTimingManager: resubscribe started at ${this.signalingTiming.startMs}`)}setExpectingRemoteVideo(){this.expectingRemoteVideo||(this.expectingRemoteVideo=!0,this.logger.debug("MeetingSessionTimingManager: expecting remote video in current batch"))}clearExpectingRemoteVideo(){this.expectingRemoteVideo&&(this.expectingRemoteVideo=!1,this.logger.debug("MeetingSessionTimingManager: no longer expecting remote video"),this.maybeEmitBatch())}onJoinSent(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received join sent event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.joinSentMs){this.logger.debug("onJoinSent called multiple times, ignoring");return}this.signalingTiming.joinSentMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onJoinAckReceived(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received join ack event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.joinAckReceivedMs){this.logger.debug("onJoinAckReceived called multiple times, ignoring");return}this.signalingTiming.joinAckReceivedMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onTransportConnected(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received transport connected event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.transportConnectedMs){this.logger.debug("onTransportConnected called multiple times, ignoring");return}this.signalingTiming.transportConnectedMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onCreateOfferCalled(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received create offer event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.createOfferMs){this.logger.debug("onCreateOfferCalled called multiple times, ignoring");return}this.signalingTiming.createOfferMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onSetLocalDescription(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received set local description event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.setLocalDescriptionMs){this.logger.debug("onSetLocalDescription called multiple times, ignoring");return}this.signalingTiming.setLocalDescriptionMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onSetRemoteDescription(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received set remote description event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.setRemoteDescriptionMs){this.logger.debug("onSetRemoteDescription called multiple times, ignoring");return}this.signalingTiming.setRemoteDescriptionMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onIceGatheringStarted(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received ICE gathering started event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.iceGatheringStartMs){this.logger.debug("onIceGatheringStarted called multiple times, ignoring");return}this.signalingTiming.iceGatheringStartMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onIceGatheringComplete(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received ICE gathering complete event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.iceGatheringCompleteMs){this.logger.debug("onIceGatheringComplete called multiple times, ignoring");return}this.signalingTiming.iceGatheringCompleteMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onIceConnected(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received ICE connected event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.iceConnectedMs){this.logger.debug("onIceConnected called multiple times, ignoring");return}this.signalingTiming.iceConnectedMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onSubscribeSent(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received subscribe sent event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.subscribeSentMs){this.logger.debug("onSubscribeSent called multiple times, ignoring");return}this.signalingTiming.subscribeSentMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onSubscribeAckReceived(){if(void 0===this.signalingTiming.startMs){this.logger.debug("Received subscribe ack event after initial batch was sent, ignoring");return}if(void 0!==this.signalingTiming.subscribeAckMs){this.logger.debug("onSubscribeAckReceived called multiple times, ignoring");return}this.signalingTiming.subscribeAckMs=this.getCurrentTimestamp(),this.maybeEmitBatch()}onRemoteAudioAdded(){if(void 0!==this.remoteAudioTiming.addedMs){this.logger.debug("onRemoteAudioAdded called multiple times, ignoring");return}this.remoteAudioTiming.addedMs=this.getCurrentTimestamp(),this.startBatchIfNeeded(),this.maybeEmitBatch()}onRemoteAudioFirstPacketReceived(e){if(void 0===this.remoteAudioTiming.addedMs){this.logger.warn("Received remote audio first packet before audio was added, ignoring");return}if(void 0!==this.remoteAudioTiming.firstPacketReceivedMs){this.logger.debug("onRemoteAudioFirstPacketReceived called multiple times, ignoring");return}this.remoteAudioTiming.firstPacketReceivedMs=null!=e?e:this.getCurrentTimestamp(),this.maybeEmitBatch()}onLocalAudioAdded(){if(void 0!==this.localAudioTiming.addedMs){this.logger.debug("onLocalAudioAdded called multiple times, ignoring");return}this.localAudioTiming.addedMs=this.getCurrentTimestamp(),this.startBatchIfNeeded(),this.maybeEmitBatch()}onLocalAudioFirstPacketSent(e){if(void 0===this.localAudioTiming.addedMs){this.logger.warn("Received local audio first packet sent before audio was added, ignoring");return}if(void 0!==this.localAudioTiming.firstPacketSentMs){this.logger.debug("onLocalAudioFirstPacketSent called multiple times, ignoring");return}this.localAudioTiming.firstPacketSentMs=null!=e?e:this.getCurrentTimestamp(),this.maybeEmitBatch()}onLocalVideoAdded(){if(void 0!==this.localVideoTiming.addedMs||this.localVideoHasEmitted){this.logger.debug("onLocalVideoAdded called multiple times, ignoring");return}this.localVideoTiming.addedMs=this.getCurrentTimestamp(),this.startBatchIfNeeded(),this.maybeEmitBatch()}onLocalVideoFirstFrameSent(e){if(void 0===this.localVideoTiming.addedMs){this.logger.warn("Received local video first frame sent before video was added, ignoring");return}if(void 0!==this.localVideoTiming.firstFrameSentMs){this.logger.debug("onLocalVideoFirstFrameSent called multiple times, ignoring");return}this.localVideoTiming.firstFrameSentMs=null!=e?e:this.getCurrentTimestamp(),this.maybeEmitBatch()}onLocalVideoRemoved(){if(void 0===this.localVideoTiming.addedMs){this.logger.debug("onLocalVideoRemoved called without prior add, ignoring");return}this.localVideoTiming.removed=!0,this.localVideoHasEmitted=!1,this.logger.debug("Local video timing marked as removed"),this.maybeEmitBatch()}onRemoteVideoAdded(e){this.emittedRemoteVideoGroupIds.has(e)||(this.remoteVideoTiming.set(e,{addedMs:this.getCurrentTimestamp()}),this.startBatchIfNeeded(),this.logger.debug(`Remote video timer started for group_id=${e}`))}onRemoteVideoBound(e){this.boundRemoteVideoGroupIds.add(e)}onRemoteVideoUnbound(e){this.boundRemoteVideoGroupIds.delete(e),this.emittedRemoteVideoGroupIds.delete(e),this.maybeEmitBatch()}onRemoteVideoFirstPacketReceived(e,t){let i=this.remoteVideoTiming.get(e);if(!i){this.logger.warn(`onRemoteVideoFirstPacketReceived: No timer found for group_id=${e}`);return}if(void 0!==i.firstPacketReceivedMs){this.logger.debug(`onRemoteVideoFirstPacketReceived called multiple times for group_id=${e}, ignoring`);return}i.firstPacketReceivedMs=null!=t?t:this.getCurrentTimestamp(),this.maybeEmitBatch()}onRemoteVideoFirstFrameRendered(e,t){let i=this.remoteVideoTiming.get(e);if(!i){this.logger.warn(`onRemoteVideoFirstFrameRendered: No timer found for group_id=${e}`);return}if(void 0!==i.firstFrameRenderedMs){this.logger.debug(`onRemoteVideoFirstFrameRendered called multiple times for group_id=${e}, ignoring`);return}i.firstFrameRenderedMs=(null==t?void 0:t.expectedDisplayTime)!==void 0?Math.round(performance.timeOrigin+t.expectedDisplayTime):this.getCurrentTimestamp(),this.maybeEmitBatch()}onRemoteVideoRemoved(e){let t=this.remoteVideoTiming.get(e);t&&(t.removed=!0,this.emittedRemoteVideoGroupIds.delete(e),this.logger.debug(`Remote video timing marked as removed for group_id=${e}`),this.maybeEmitBatch())}reset(){this.cancelBatchTimeout(),this.signalingTiming={},this.isResubscribe=!1,this.remoteAudioTiming={},this.localAudioTiming={},this.localVideoTiming={},this.localVideoHasEmitted=!1,this.expectingRemoteVideo=!1,this.remoteVideoTiming.clear(),this.boundRemoteVideoGroupIds.clear(),this.emittedRemoteVideoGroupIds.clear(),this.logger.info("MeetingSessionTimingManager: reset")}destroy(){this.cancelBatchTimeout(),this.observers.clear(),this.logger.info("MeetingSessionTimingManager: destroyed")}getCurrentTimestamp(){return Date.now()}isSignalingComplete(){let e=this.signalingTiming,t=void 0!==e.createOfferMs&&void 0!==e.setLocalDescriptionMs&&void 0!==e.subscribeSentMs&&void 0!==e.subscribeAckMs&&void 0!==e.setRemoteDescriptionMs;return this.isResubscribe?t:t&&void 0!==e.joinSentMs&&void 0!==e.joinAckReceivedMs&&void 0!==e.transportConnectedMs&&void 0!==e.iceGatheringStartMs&&void 0!==e.iceGatheringCompleteMs&&void 0!==e.iceConnectedMs}isRemoteAudioComplete(){return!0===this.remoteAudioTiming.removed||void 0!==this.remoteAudioTiming.addedMs&&void 0!==this.remoteAudioTiming.firstPacketReceivedMs}isLocalAudioComplete(){return!0===this.localAudioTiming.removed||void 0!==this.localAudioTiming.addedMs&&void 0!==this.localAudioTiming.firstPacketSentMs}isLocalVideoComplete(){return!0===this.localVideoTiming.removed||void 0!==this.localVideoTiming.addedMs&&void 0!==this.localVideoTiming.firstFrameSentMs}isRemoteVideoComplete(e){return!0===e.removed||void 0!==e.addedMs&&void 0!==e.firstFrameRenderedMs}areAllBatchTimingsComplete(){if(void 0!==this.signalingTiming.startMs&&!this.isSignalingComplete()||void 0!==this.remoteAudioTiming.addedMs&&!this.isRemoteAudioComplete()||void 0!==this.localAudioTiming.addedMs&&!this.isLocalAudioComplete()||void 0!==this.localVideoTiming.addedMs&&!this.isLocalVideoComplete())return!1;if(this.expectingRemoteVideo){let e=!1;for(let[t,i]of this.remoteVideoTiming)if(this.boundRemoteVideoGroupIds.has(t)&&this.isRemoteVideoComplete(i)){e=!0;break}if(!e)return!1}for(let[e,t]of this.remoteVideoTiming)if(this.boundRemoteVideoGroupIds.has(e)&&!this.isRemoteVideoComplete(t))return!1;return!0}maybeEmitBatch(){this.areAllBatchTimingsComplete()&&this.emitAndReset(!1)}emitAndReset(e){let t=this.buildMeetingSessionTiming(e);if(void 0!==this.localVideoTiming.addedMs&&this.isLocalVideoComplete()&&!this.localVideoTiming.removed&&(this.localVideoHasEmitted=!0),this.clearReportedState(),0===this.observers.size){this.logger.warn("MeetingSessionTimingManager: No observers set, timing data discarded");return}for(let e of this.observers)try{e.onMeetingSessionTimingReady(t)}catch(e){this.logger.error(`MeetingSessionTimingManager: Error notifying observer: ${e}`)}}clearReportedState(){this.cancelBatchTimeout(),this.signalingTiming={},this.isResubscribe=!1,this.remoteAudioTiming={},this.localAudioTiming={},this.localVideoTiming={},this.expectingRemoteVideo=!1;let e=new Map,t=new Set;for(let[t,i]of this.remoteVideoTiming)this.boundRemoteVideoGroupIds.has(t)?this.emittedRemoteVideoGroupIds.add(t):e.set(t,i);this.remoteVideoTiming=e,this.boundRemoteVideoGroupIds=t,e.size>0&&this.startBatchIfNeeded()}buildMeetingSessionTiming(e){let t=[],i=[],n=[],r=[],s=[];for(let[a,o]of(void 0!==this.signalingTiming.startMs&&t.push({...this.signalingTiming,timedOut:e&&!this.isSignalingComplete()}),void 0!==this.remoteAudioTiming.addedMs&&i.push({...this.remoteAudioTiming,timedOut:e&&!this.isRemoteAudioComplete()}),void 0!==this.localAudioTiming.addedMs&&n.push({...this.localAudioTiming,timedOut:e&&!this.isLocalAudioComplete()}),void 0!==this.localVideoTiming.addedMs&&r.push({...this.localVideoTiming,timedOut:e&&!this.isLocalVideoComplete()}),this.remoteVideoTiming))void 0!==o.addedMs&&this.boundRemoteVideoGroupIds.has(a)&&s.push({...o,groupId:a,timedOut:e&&!this.isRemoteVideoComplete(o)});return{signaling:t,remoteAudio:i,localAudio:n,localVideo:r,remoteVideos:s}}scheduleBatchTimeout(){this.batchTimeout=setTimeout(()=>{this.batchTimeout=null,this.logger.warn("Batch timing timeout"),this.emitAndReset(!0)},i.TIMEOUT_THRESHOLD_MS)}cancelBatchTimeout(){null!==this.batchTimeout&&(clearTimeout(this.batchTimeout),this.batchTimeout=null)}}i.TIMEOUT_THRESHOLD_MS=15e3,t.default=i},42562:function(e,t){"use strict";
17Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i){this.type=e,this.headers=t,this.payload=i}}t.default=i},26711:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(8169),s=n(i(4494)),a=n(i(17401)),o=n(i(42562)),d=n(i(80409)),l=n(i(16564)),c=n(i(71148)),u=n(i(92979)),h=n(i(84924)),f=n(i(39653));class m{constructor(e,t,i,n,r){this.configuration=e,this.logger=t,this.webSocket=i,this.reconnectController=n,this.sigV4=r,this.observerQueue=new Set,this.webSocket||(this.webSocket=new u.default(this.logger)),this.reconnectController||(this.reconnectController=new d.default(e.reconnectTimeoutMs,new s.default(e.reconnectFixedWaitMs,e.reconnectShortBackoffMs,e.reconnectLongBackoffMs))),this.sigV4||(this.sigV4=new c.default(this.configuration.chimeClient)),a.default.addLogger(this.logger),a.default.register(),this.preBootstrapMessages=[]}addObserver(e){this.logger.info("adding messaging observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing messaging observer"),this.observerQueue.delete(e)}async start(){this.isClosed()?await this.startConnecting(!1):this.logger.info("messaging session already started")}stop(){this.isClosed()?this.logger.info("no existing messaging session needs closing"):(this.isClosing=!0,this.webSocket.close(),a.default.removeLogger(this.logger))}forEachObserver(e){for(let t of this.observerQueue)l.default.nextTick(()=>{this.observerQueue.has(t)&&e(t)})}setUpEventListeners(){this.webSocket.addEventListener("open",()=>{this.openEventHandler()}),this.webSocket.addEventListener("message",e=>{this.receiveMessageHandler(e.data)}),this.webSocket.addEventListener("close",e=>{this.closeEventHandler(e)}),this.webSocket.addEventListener("error",()=>{this.logger.error("WebSocket error")})}async startConnecting(e){return await this.startConnectingInternal(e),await new Promise((e,t)=>{this.bootstrapResolved=e,this.bootstrapRejected=t})}async startConnectingInternal(e){var t;let i=this.configuration.endpointUrl;if(e||this.reconnectController.reset(),this.reconnectController.hasStartedConnectionAttempt()?this.reconnectController.startedConnectionAttempt(!1):this.reconnectController.startedConnectionAttempt(!0),e||void 0===i)try{if(this.configuration.chimeClient.getMessagingSessionEndpoint instanceof Function){let e=await this.configuration.chimeClient.getMessagingSessionEndpoint();i=(null===(t=e.Endpoint)||void 0===t?void 0:t.Url)?e.Endpoint.Url:(await this.configuration.chimeClient.getMessagingSessionEndpoint().promise()).Endpoint.Url}else i=(await this.configuration.chimeClient.send(new r.GetMessagingSessionEndpointCommand({}))).Endpoint.Url;this.logger.debug(`Messaging endpoint resolved to: ${i}`)}catch(t){this.logger.error(`Messaging Session failed to resolve endpoint: ${t}`);let e=new CloseEvent("close",{wasClean:!1,code:4999,reason:"Failed to get messaging session endpoint URL",bubbles:!1});this.closeEventHandler(e);return}let n=await this.prepareWebSocketUrl(i);this.logger.info(`opening connection to ${n}`),e||this.reconnectController.reset(),this.reconnectController.hasStartedConnectionAttempt()?this.reconnectController.startedConnectionAttempt(!1):this.reconnectController.startedConnectionAttempt(!0),this.webSocket.create(n,[],!0),this.forEachObserver(t=>{t.messagingSessionDidStartConnecting&&t.messagingSessionDidStartConnecting(e)}),this.setUpEventListeners()}async prepareWebSocketUrl(e){let t=new Map;return t.set("userArn",[this.configuration.userArn]),t.set("sessionId",[this.configuration.messagingSessionId]),this.configuration.prefetchOn===f.default.Connect&&t.set("prefetch-on",[f.default.Connect]),this.configuration.prefetchSortBy&&t.set("prefetch-sort-by",[this.configuration.prefetchSortBy]),await this.sigV4.signURL("GET","wss","chime",e,"/connect","",t)}isClosed(){return this.webSocket.readyState()===h.default.None||this.webSocket.readyState()===h.default.Closed}openEventHandler(){this.reconnectController.reset(),this.isSessionEstablished=!1}receiveMessageHandler(e){try{let t=JSON.parse(e),i=t.Headers["x-amz-chime-event-type"],n=new o.default(i,t.Headers,t.Payload||null);if(this.isSessionEstablished||"SESSION_ESTABLISHED"!==i){if(!this.isSessionEstablished){this.preBootstrapMessages.push(n);return}}else{this.forEachObserver(e=>{e.messagingSessionDidStart&&e.messagingSessionDidStart()}),this.bootstrapResolved(),this.isSessionEstablished=!0;let e=this.preBootstrapMessages.length;for(let t=0;t<e;t++){let e=this.preBootstrapMessages.shift();this.forEachObserver(t=>{this.sendMessageToObserver(t,e)})}}this.forEachObserver(e=>{this.sendMessageToObserver(e,n)})}catch(e){this.logger.error(`Messaging parsing failed: ${e}`)}}sendMessageToObserver(e,t){e.messagingSessionDidReceiveMessage&&e.messagingSessionDidReceiveMessage(t)}retryConnection(){return this.reconnectController.retryWithBackoff(async()=>{await this.startConnecting(!0)},null)}closeEventHandler(e){this.logger.info(`WebSocket close: ${e.code} ${e.reason}`),4999!==e.code&&this.webSocket.destroy(),!this.isClosing&&this.canReconnect(e.code)&&this.retryConnection()||(this.isClosing=!1,this.isSessionEstablished?this.forEachObserver(t=>{t.messagingSessionDidStop&&t.messagingSessionDidStop(e)}):this.bootstrapRejected(e))}canReconnect(e){return 1001===e||1006===e||e>=1011&&e<=1014||e>4e3&&4002!==e&&4003!==e&&4401!==e}}t.default=m},36229:function(e,t,i){"use strict";
17Object.defineProperty(t,"__esModule",{value:!0});let n=i(76477);class r{constructor(e,t,i,n){this.userArn=e,this.messagingSessionId=t,this.endpointUrl=i,this.chimeClient=n,this.reconnectTimeoutMs=1e4,this.reconnectFixedWaitMs=0,this.reconnectShortBackoffMs=1e3,this.reconnectLongBackoffMs=5e3,this.prefetchOn=void 0,this.prefetchSortBy=void 0,this.messagingSessionId||(this.messagingSessionId=this.generateSessionId())}generateSessionId(){let e=new Uint32Array(1);return(0,n.getRandomValues)(e),e[0].toString()}}t.default=r},39653:function(e,t){"use strict";var i;Object.defineProperty(t,"__esModule",{value:!0}),(i||(i={})).Connect="connect",t.default=i},79273:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),(n=i||(i={})).Unread="unread",n.LastMessageTimestamp="last-message-timestamp",t.default=i},67941:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(26519));class s{constructor(e){this._id=e}id(){return this._id}base(){return this._id?this._id.split(s.MODALITY_SEPARATOR)[0]:""}modality(){if(!this._id)return"";let e=this._id.split(s.MODALITY_SEPARATOR);return 2===e.length?e[1]:""}hasModality(e){return""!==e&&this.modality()===e}withModality(e){let t=new s(this.base()+s.MODALITY_SEPARATOR+e);return""===e||""===this.base()||new s(t._id).modality()!==e?new s(this.base()):t}}s.MODALITY_SEPARATOR=r.default.Modality[0],s.MODALITY_CONTENT=r.default.Modality.substring(1),t.default=s},61711:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(16564)),s=n(i(68414)),a=n(i(66485)),o=i(8283),d=i(24670);class l{constructor(e,t,i){this.signalingClient=e,this.intervalMs=t,this.logger=i,this.observerQueue=new Set,this.consecutivePongsUnaccountedFor=0,this.intervalScheduler=new s.default(this.intervalMs),this.pingId=0}addObserver(e){this.logger.info("adding a ping-pong observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing a ping-pong observer"),this.observerQueue.delete(e)}forEachObserver(e){for(let t of this.observerQueue)r.default.nextTick(()=>{this.observerQueue.has(t)&&e(t)})}start(){this.stop(),this.signalingClient.registerObserver(this),this.signalingClient.ready()&&this.startPingInterval()}stop(){this.stopPingInterval(),this.signalingClient.removeObserver(this)}startPingInterval(){this.intervalScheduler.start(()=>{this.ping()}),this.ping()}stopPingInterval(){this.intervalScheduler.stop(),this.pingId=0,this.consecutivePongsUnaccountedFor=0}ping(){this.consecutivePongsUnaccountedFor>0&&(this.logger.warn(`missed pong ${this.consecutivePongsUnaccountedFor} time(s)`),this.forEachObserver(e=>{d.Maybe.of(e.didMissPongs).map(t=>t.bind(e)(this.consecutivePongsUnaccountedFor))})),this.consecutivePongsUnaccountedFor+=1,this.pingId=this.pingId+1&4294967295;let e=o.SdkPingPongFrame.create();e.pingId=this.pingId,e.type=o.SdkPingPongType.PING,this.pingTimestampLocalMs=this.signalingClient.pingPong(e),this.logger.debug(()=>`sent ping ${this.pingId}`)}pong(e){let t=o.SdkPingPongFrame.create();t.pingId=e,t.type=o.SdkPingPongType.PONG,this.signalingClient.pingPong(t)}handleSignalingClientEvent(e){switch(e.type){case a.default.WebSocketOpen:this.startPingInterval();break;case a.default.WebSocketFailed:case a.default.WebSocketError:this.logger.warn(`stopped pinging (${a.default[e.type]})`),this.stopPingInterval();break;case a.default.WebSocketClosing:case a.default.WebSocketClosed:this.logger.info(`stopped pinging (${a.default[e.type]})`),this.stopPingInterval();break;case a.default.ReceivedSignalFrame:if(e.message.type!==o.SdkSignalFrame.Type.PING_PONG)break;if(e.message.pingPong.type===o.SdkPingPongType.PONG){let t;let i=e.message.pingPong.pingId;if(i!==this.pingId){this.logger.warn(`unexpected ping id ${i} (expected ${this.pingId})`);break}if(this.consecutivePongsUnaccountedFor=0,"number"==typeof e.message.timestampMs)t=e.message.timestampMs;else break;this.logger.debug(()=>`received pong ${i} with timestamp ${t}`);let n=e.timestampMs-this.pingTimestampLocalMs,r=Math.round(t-n/2),s=this.pingTimestampLocalMs-r;this.logger.info(`local clock skew estimate=${s}ms from ping-pong time=${n}ms`),this.forEachObserver(e=>{d.Maybe.of(e.didReceivePong).map(t=>t.bind(e)(i,s,n))})}else this.pong(e.message.pingPong.pingId)}}}t.default=l},64446:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
17dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(19893)),s=i(76477),a=n(i(58142)),o=n(i(34605));class d{constructor(e,t){this.mediaStreamBroker=e,this.state=new a.default,this._transcriptionController=t||new r.default(this)}realtimeSetLocalAttendeeId(e,t){this.state.localAttendeeId=e,this.state.localExternalUserId=t}realtimeSetAttendeeIdPresence(e,t,i,n,r){try{for(let s of(t&&(this.state.attendeeIdToExternalUserId[e]=i),this.state.attendeeIdChangesCallbacks))s(e,t,i,n,r)}catch(e){this.onError(e)}}realtimeSubscribeToAttendeeIdPresence(e){try{this.state.attendeeIdChangesCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToAttendeeIdPresence(e){try{let t=this.state.attendeeIdChangesCallbacks.indexOf(e);-1!==t&&this.state.attendeeIdChangesCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSetCanUnmuteLocalAudio(e){try{if(this.state.canUnmute===e)return;for(let t of(this.state.canUnmute=e,this.state.setCanUnmuteLocalAudioCallbacks))t(e)}catch(e){this.onError(e)}}realtimeSubscribeToSetCanUnmuteLocalAudio(e){try{this.state.setCanUnmuteLocalAudioCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToSetCanUnmuteLocalAudio(e){try{let t=this.state.setCanUnmuteLocalAudioCallbacks.indexOf(e);-1!==t&&this.state.setCanUnmuteLocalAudioCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeCanUnmuteLocalAudio(){return this.state.canUnmute}realtimeMuteLocalAudio(){if(!this.state.muted)try{for(let e of(this.setAudioInputEnabled(!1),this.state.muted=!0,this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId,null,null,null,this.state.localExternalUserId),this.state.muteAndUnmuteLocalAudioCallbacks))e(!0)}catch(e){this.onError(e)}}realtimeUnmuteLocalAudio(){if(!this.state.muted)return!0;if(!this.state.canUnmute)return!1;try{for(let e of(this.setAudioInputEnabled(!0),this.state.muted=!1,this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId,null,null,null,this.state.localExternalUserId),this.state.muteAndUnmuteLocalAudioCallbacks))e(!1);return!0}catch(e){return this.onError(e),!1}}realtimeSubscribeToMuteAndUnmuteLocalAudio(e){try{this.state.muteAndUnmuteLocalAudioCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e){try{let t=this.state.muteAndUnmuteLocalAudioCallbacks.indexOf(e);-1!==t&&this.state.muteAndUnmuteLocalAudioCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeIsLocalAudioMuted(){return this.state.muted}realtimeSubscribeToVolumeIndicator(e,t){try{this.state.volumeIndicatorCallbacks.hasOwnProperty(e)||(this.state.volumeIndicatorCallbacks[e]=[]),this.state.volumeIndicatorCallbacks[e].push(t),this.sendVolumeIndicatorChange(e,!0,!0,!0,this.state.attendeeIdToExternalUserId[e])}catch(e){this.onError(e)}}realtimeUnsubscribeFromVolumeIndicator(e,t){if(this.state.volumeIndicatorCallbacks[e]){if(t){let i=this.state.volumeIndicatorCallbacks[e].indexOf(t);i>=0&&this.state.volumeIndicatorCallbacks[e].splice(i,1)}else delete this.state.volumeIndicatorCallbacks[e]}}realtimeUpdateVolumeIndicator(e,t,i,n,r){try{i=this.applyLocalMuteOverride(e,i);let s=this.getVolumeIndicatorState(e),a=!1,o=!1,d=!1;null!==i&&s.muted!==i&&(s.muted=i,o=!0,s.muted&&0!==s.volume&&(s.volume=0,a=!0)),s.muted||null===t||(s.volume!==t&&(s.volume=t,a=!0),null!==s.muted||(s.muted=!1,o=!0)),null!==n&&s.signalStrength!==n&&(s.signalStrength=n,d=!0),this.sendVolumeIndicatorChange(e,a,o,d,r)}catch(e){this.onError(e)}}realtimeSubscribeToLocalSignalStrengthChange(e){try{if(this.state.localSignalStrengthChangeCallbacks.push(e),null===this.state.localAttendeeId)return;this.sendLocalSignalStrengthChange(this.state.localAttendeeId,!0)}catch(e){this.onError(e)}}realtimeUnsubscribeToLocalSignalStrengthChange(e){try{let t=this.state.localSignalStrengthChangeCallbacks.indexOf(e);-1!==t&&this.state.localSignalStrengthChangeCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSubscribeToSendDataMessage(e){try{this.state.sendDataMessageCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeFromSendDataMessage(e){try{let t=this.state.sendDataMessageCallbacks.indexOf(e);-1!==t&&this.state.sendDataMessageCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSendDataMessage(e,t,i){try{for(let n of this.state.sendDataMessageCallbacks)n(e,t,i)}catch(e){this.onError(e)}}realtimeSubscribeToReceiveDataMessage(e,t){try{this.state.receiveDataMessageCallbacks.has(e)?this.state.receiveDataMessageCallbacks.get(e).push(t):this.state.receiveDataMessageCallbacks.set(e,[t])}catch(e){this.onError(e)}}realtimeUnsubscribeFromReceiveDataMessage(e){try{this.state.receiveDataMessageCallbacks.delete(e)}catch(e){this.onError(e)}}realtimeReceiveDataMessage(e){try{(0,s.iterateEvery)(this.state.receiveDataMessageCallbacks.get(e.topic),t=>{t(e)})}catch(e){Promise.reject(e)}}realtimeSubscribeToFatalError(e){try{this.state.fatalErrorCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToFatalError(e){try{let t=this.state.fatalErrorCallbacks.indexOf(e);-1!==t&&this.state.fatalErrorCallbacks.splice(t,1)}catch(e){this.onError(e)}}get transcriptionController(){return this._transcriptionController}setAudioInputEnabled(e){e?this.mediaStreamBroker.unmuteLocalAudioInputStream():this.mediaStreamBroker.muteLocalAudioInputStream()}applyLocalMuteOverride(e,t){let i=this.state.localAttendeeId,n=this.state.muted;return e===i&&"activeDevices"in this.mediaStreamBroker&&this.mediaStreamBroker.activeDevices.audio?n:t}
17sendVolumeIndicatorChange(e,t,i,n,r){if(this.sendLocalSignalStrengthChange(e,n),!this.state.volumeIndicatorCallbacks.hasOwnProperty(e))return;let s=this.getVolumeIndicatorState(e),a=new o.default;if(t&&(a.volume=s.volume),i&&(a.muted=s.muted),n&&(a.signalStrength=s.signalStrength),!this.stateIsEmpty(a))for(let t of this.state.volumeIndicatorCallbacks[e])t(e,a.volume,a.muted,a.signalStrength,r)}sendLocalSignalStrengthChange(e,t){if(!t||e!==this.state.localAttendeeId)return;let i=this.getVolumeIndicatorState(e).signalStrength;if(null!==i)for(let e of this.state.localSignalStrengthChangeCallbacks)e(i)}getVolumeIndicatorState(e){return this.state.volumeIndicatorState.hasOwnProperty(e)||(this.state.volumeIndicatorState[e]=new o.default),this.state.volumeIndicatorState[e]}stateIsEmpty(e){return null===e.volume&&null===e.muted&&null===e.signalStrength}onError(e){try{for(let t of this.state.fatalErrorCallbacks)t(e)}catch(t){try{console.error(e),console.error(t)}catch(e){}}}}t.default=d},69925:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.attendeeIndex=null,this.attendeesInFrame=null}}t.default=i},58142:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.localAttendeeId=null,this.localExternalUserId=null,this.attendeeIdChangesCallbacks=[],this.canUnmute=!0,this.setCanUnmuteLocalAudioCallbacks=[],this.muted=!1,this.muteAndUnmuteLocalAudioCallbacks=[],this.volumeIndicatorState={},this.attendeeIdToExternalUserId={},this.volumeIndicatorCallbacks={},this.localSignalStrengthChangeCallbacks=[],this.fatalErrorCallbacks=[],this.sendDataMessageCallbacks=[],this.receiveDataMessageCallbacks=new Map}}t.default=i},34605:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.volume=null,this.muted=null,this.signalStrength=null}}t.default=i},80409:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(71474));class s{constructor(e,t){this.reconnectTimeoutMs=e,this.backoffPolicy=t,this.shouldReconnect=!0,this.onlyRestartPeerConnection=!1,this.firstConnectionAttempted=!1,this.firstConnectionAttemptTimestampMs=0,this.lastActiveTimestampMs=1/0,this._isFirstConnection=!0,this.backoffTimer=null,this.backoffCancel=null,this.reset()}timeSpentReconnectingMs(){return this.firstConnectionAttempted?Date.now()-this.firstConnectionAttemptTimestampMs:0}hasPastReconnectDeadline(){return Date.now()-this.lastActiveTimestampMs>=this.reconnectTimeoutMs||this.timeSpentReconnectingMs()>=this.reconnectTimeoutMs}reset(){this.cancel(),this.shouldReconnect=!0,this.onlyRestartPeerConnection=!1,this.firstConnectionAttempted=!1,this.firstConnectionAttemptTimestampMs=0,this.lastActiveTimestampMs=1/0,this.backoffPolicy.reset()}startedConnectionAttempt(e){this._isFirstConnection=e,this.firstConnectionAttempted||(this.firstConnectionAttempted=!0,this.firstConnectionAttemptTimestampMs=Date.now())}hasStartedConnectionAttempt(){return this.firstConnectionAttempted}isFirstConnection(){return this._isFirstConnection}disableReconnect(){this.shouldReconnect=!1}enableRestartPeerConnection(){this.onlyRestartPeerConnection=!0}cancel(){this.disableReconnect(),this.backoffTimer&&(this.backoffTimer.stop(),this.backoffCancel&&(this.backoffCancel(),this.backoffCancel=null))}retryWithBackoff(e,t){let i=this.shouldReconnect&&!this.hasPastReconnectDeadline();return i&&(this.backoffCancel=t,this.backoffTimer=new r.default(this.backoffPolicy.nextBackoffAmountMs()),this.backoffTimer.start(()=>{this.backoffCancel=null,e()})),i}shouldOnlyRestartPeerConnection(){return this.onlyRestartPeerConnection}clone(){return new s(this.reconnectTimeoutMs,this.backoffPolicy)}setLastActiveTimestampMs(e){this.lastActiveTimestampMs=e}}t.default=s},27089:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="class RedundantAudioEncoder {\n    constructor() {\n        // Each payload must be less than 1024 bytes to fit the 10 bit block length\n        this.maxRedPacketSizeBytes = 1 << 10;\n        // Limit payload to 1000 bytes to handle small MTU. 1000 is chosen because in Chromium-based browsers, writing audio\n        // payloads larger than 1000 bytes using the WebRTC Insertable Streams API (which is used to enable dynamic audio\n        // redundancy) will cause an error to be thrown and cause audio flow to permanently stop. See\n        // https://crbug.com/1248479.\n        this.maxAudioPayloadSizeBytes = 1000;\n        // Each payload can encode a timestamp delta of 14 bits\n        this.maxRedTimestampOffset = 1 << 14;\n        // 4 byte RED header\n        this.redHeaderSizeBytes = 4;\n        // reduced size for last RED header\n        this.redLastHeaderSizeBytes = 1;\n        // P-Time for Opus 20 msec packets\n        // We do not support other p-times or clock rates\n        this.redPacket
17izationTime = 960;\n        // distance between redundant payloads, Opus FEC handles a distance of 1\n        // TODO(https://issues.amazon.com/issues/ChimeSDKAudio-55):\n        // Consider making this dynamic\n        this.redPacketDistance = 2;\n        // maximum number of redundant payloads per RTP packet\n        this.maxRedEncodings = 2;\n        // Maximum number of encodings that can be recovered with a single RED packet, assuming the primary and redundant\n        // payloads have FEC.\n        this.redMaxRecoveryDistance = this.redPacketDistance * this.maxRedEncodings + 1;\n        // maximum history of prior payloads to keep\n        // generally we will expire old entries based on timestamp\n        // this limit is in place just to make sure the history does not\n        // grow too large in the case of erroneous timestamp inputs\n        this.maxEncodingHistorySize = 10;\n        // Current number of encodings we want to send\n        // to the remote end. This will be dynamically\n        // updated through the setNumEncodingsFromPacketloss API\n        this.numRedundantEncodings = 0;\n        // Used to enable or disable redundancy\n        // in response to very high packet loss events\n        this.redundancyEnabled = true;\n        // Loss stats are reported to the main thread every 5 seconds.\n        // Since timestamp differences between 2 consecutive packets\n        // give us the number of samples in each channel, 1 second\n        // is equivalent to 48000 samples:\n        // P-time * (1000ms/1s)\n        // = (960 samples/20ms) * (1000ms/1s)\n        // = 48000 samples/s\n        this.lossReportInterval = 48000 * 5;\n        // Maximum distance of a packet from the most recent packet timestamp\n        // that we will consider for recovery.\n        this.maxOutOfOrderPacketDistance = 16;\n        /**\n         * Below are Opus helper methods and constants.\n         */\n        this.OPUS_BAD_ARG = -1;\n        this.OPUS_INVALID_PACKET = -4;\n        // Max number of Opus frames in an Opus packet is 48 (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5).\n        this.OPUS_MAX_OPUS_FRAMES = 48;\n        // Max number of bytes that any individual Opus frame can have.\n        this.OPUS_MAX_FRAME_SIZE_BYTES = 1275;\n        this.encodingHistory = new Array();\n        this.opusPayloadType = 0;\n        this.redPayloadType = 0;\n        this.initializePacketLogs();\n    }\n    /**\n     * Creates an instance of RedundantAudioEncoder and sets up callbacks.\n     */\n    static initializeWorker() {\n        RedundantAudioEncoder.log('Initializing RedundantAudioEncoder');\n        const encoder = new RedundantAudioEncoder();\n        // RED encoding is done using WebRTC Encoded Transform\n        // https://github.com/w3c/webrtc-encoded-transform/blob/main/explainer.md\n        // Check the DedicatedWorkerGlobalScope for existence of\n        // RTCRtpScriptTransformer interface. If exists, then\n        // RTCRtpScriptTransform is supported by this browser.\n        // @ts-ignore\n        if (self.RTCRtpScriptTransformer) {\n            // @ts-ignore\n            self.onrtctransform = (event) => {\n                if (event.transformer.options.type === 'SenderTransform') {\n                    encoder.setupSenderTransform(event.transformer.readable, event.transformer.writable);\n                }\n                else if (event.transformer.options.type === 'ReceiverTransform') {\n                    encoder.setupReceiverTransform(event.transformer.readable, event.transformer.writable);\n                }\n                else if (event.transformer.options.type === 'PassthroughTransform') {\n                    encoder.setupPassthroughTransform(event.transformer.readable, event.transformer.writable);\n                }\n            };\n        }\n        self.onmessage = (event) => {\n            if (event.data.msgType === 'StartRedWorker') {\n                encoder.setupSenderTransform(event.data.send.readable, event.data.send.writable);\n                encoder.setupReceiverTransform(event.data.receive.readable, event.data.receive.writable);\n            }\n            else if (event.data.msgType === 'PassthroughTransform') {\n                encoder.setupPassthroughTransform(event.data.send.readable, event.data.send.writable);\n                encoder.setupPassthroughTransform(event.data.receive.readable, event.data.receive.writable);\n            }\n            else if (event.data.msgType === 'RedPayloadType') {\n                encoder.setRedPayloadType(event.data.payloadType);\n            }
17\n            else if (event.data.msgType === 'OpusPayloadType') {\n                encoder.setOpusPayloadType(event.data.payloadType);\n            }\n            else if (event.data.msgType === 'UpdateNumRedundantEncodings') {\n                encoder.setNumRedundantEncodings(event.data.numRedundantEncodings);\n            }\n            else if (event.data.msgType === 'Enable') {\n                encoder.setRedundancyEnabled(true);\n            }\n            else if (event.data.msgType === 'Disable') {\n                encoder.setRedundancyEnabled(false);\n            }\n        };\n    }\n    /**\n     * Post logs to the main thread\n     */\n    static log(msg) {\n        if (RedundantAudioEncoder.shouldLog) {\n            // @ts-ignore\n            self.postMessage({\n                type: 'REDWorkerLog',\n                log: `[AudioRed] ${msg}`,\n            });\n        }\n    }\n    /**\n     * Returns the number of encodings based on packetLoss value. This is used by `DefaultTransceiverController` to\n     * determine when to alert the encoder to update the number of encodings. It also determines if we need to\n     * turn off red in cases of very high packet loss to avoid congestion collapse.\n     */\n    static getNumRedundantEncodingsForPacketLoss(packetLoss) {\n        let recommendedRedundantEncodings = 0;\n        let shouldTurnOffRed = false;\n        if (packetLoss <= 8) {\n            recommendedRedundantEncodings = 0;\n        }\n        else if (packetLoss <= 18) {\n            recommendedRedundantEncodings = 1;\n        }\n        else if (packetLoss <= 75) {\n            recommendedRedundantEncodings = 2;\n        }\n        else {\n            recommendedRedundantEncodings = 0;\n            shouldTurnOffRed = true;\n        }\n        return [recommendedRedundantEncodings, shouldTurnOffRed];\n    }\n    /**\n     * Sets up a passthrough (no-op) transform for the given streams.\n     */\n    setupPassthroughTransform(readable, writable) {\n        RedundantAudioEncoder.log('Setting up passthrough transform');\n        readable.pipeTo(writable);\n    }\n    /**\n     * Sets up the transform stream and pipes the outgoing encoded audio frames through the transform function.\n     */\n    setupSenderTransform(readable, writable) {\n        RedundantAudioEncoder.log('Setting up sender RED transform');\n        const transformStream = new TransformStream({\n            transform: this.senderTransform.bind(this),\n        });\n        readable.pipeThrough(transformStream).pipeTo(writable);\n        return;\n    }\n    /**\n     * Sets up the transform stream and pipes the received encoded audio frames through the transform function.\n     */\n    setupReceiverTransform(readable, writable) {\n        RedundantAudioEncoder.log('Setting up receiver RED transform');\n        const transformStream = new TransformStream({\n            transform: this.receivePacketLogTransform.bind(this),\n        });\n        readable.pipeThrough(transformStream).pipeTo(writable);\n        return;\n    }\n    /**\n     * Set the RED payload type ideally obtained from local offer.\n     */\n    setRedPayloadType(payloadType) {\n        this.redPayloadType = payloadType;\n        RedundantAudioEncoder.log(`red payload type set to ${this.redPayloadType}`);\n    }\n    /**\n     * Set the opus payload type ideally obtained from local offer.\n     */\n    setOpusPayloadType(payloadType) {\n        this.opusPayloadType = payloadType;\n        RedundantAudioEncoder.log(`opus payload type set to ${this.opusPayloadType}`);\n    }\n    /**\n     * Set the number of redundant encodings\n     */\n    setNumRedundantEncodings(numRedundantEncodings) {\n        this.numRedundantEncodings = numRedundantEncodings;\n        if (this.numRedundantEncodings > this.maxRedEncodings) {\n            this.numRedundantEncodings = this.maxRedEncodings;\n        }\n        RedundantAudioEncoder.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`);\n    }\n    /**\n     * Enable or disable redundancy in response to\n     * high packet loss event.\n     */\n    setRedundancyEnabled(enabled) {\n        this.redundancyEnabled = enabled;\n        RedundantAudioEncoder.log(`redundancy ${this.redundancyEnabled ? 'enabled' : 'disabled'}`);\n    }\n    /**\n     * Helper function to only enqueue audio frames if they do not exceed the audio payload byte limit imposed by\n     * Chromium-based browsers. Chromium will throw an error (https://crbug.com/1248479) if an audio payload larger than\n     * 1000 bytes is enqueued. Any controller that attempts to enqueue an audio payload larger than 1000 bytes will\n     * encounter this error and will permanently stop sending or receiving audio.\n     */\n    enqueueAudioFrameIfPayloadSizeIsValid(\n    // @ts-ignore\n    frame, controller) {\n        if (frame.data.byteLength > this.maxAudioPayloadSizeBytes)\n            return;\n        controller.enqueue(frame);\n    }\n    /**\n     * Receives encoded frames and modifies as needed before sending to transport.\n     */\n    senderTransform(\n    // @ts-ignore\n    frame, controller) {\n        const frameMetadata = frame.getMetadata();\n        // @ts-ignore\n        if (frameMetadata.payloadType !== this.redPayloadType) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        const primaryPayloadBuffer = this.getPrimaryPayload(frame.timestamp, frame.data);\n        if (!primaryPayloadBuffer) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        const encodedBuffer = this.encode(frame.timestamp, primaryPayloadBuffer);\n        /* istanbul ignore next */\n        if (!encodedBuffer) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        frame.data = encodedBuffer;\n        this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n        return;\n    }\n    /**\n     * Get the primary payload from encoding\n     */\n    getPrimaryPayload(primaryTimestamp, frame) {\n        const encodings = this.splitEncodings(primaryTimestamp, frame);\n        if (!encodings || encodings.length < 1)\n            return null;\n        return encodings[encodings.length - 1].payload;\n    }\n    /**\n     * Split up the encoding received into primary and redundant encodings\n     * These will be ordered oldest to newest which is the same ordering\n     * in the RTP red payload.\n     */\n    splitEncodings(primaryTimestamp, frame, getFecInfo = false, primarySequenceNumber = undefined) {\n        // process RED headers (according to RFC 2198)\n        //   0                   1                   2                   3\n        //   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n        //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n        //  |F|   block PT  |  timestamp offset         |   block length    |\n        //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n        //\n        // last header\n        //   0 1 2 3 4 5 6 7\n        //  +-+-+-+-+-+-+-+-+\n        //  |0|   Block PT  |\n        //  +-+-+-+-+-+-+-+-+\n        const payload = new DataView(frame);\n        let payloadSizeBytes = payload.byteLength;\n        let totalPayloadSizeBytes = 0;\n        let totalHeaderSizeBytes = 0;\n        let primaryPayloadSizeBytes = 0;\n        let payloadOffset = 0;\n        let gotLastBlock = false;\n        const encodings = new Array();\n        const redundantEncodingBlockLengths = [];\n        const redundantEncodingTimestamps = [];\n        while (payloadSizeBytes > 0) {\n            gotLastBlock = (payload.getUint8(payloadOffset) & 0x80) === 0;\n            if (gotLastBlock) {\n                // Bits 1 through 7 are payload type\n                const payloadType = payload.getUint8(payloadOffset) & 0x7f;\n                // Unexpected payload type. This is a bad packet.\n                if (payloadType !== this.opusPayloadType) {\n                    return null;\n                }\n                totalPayloadSizeBytes += this.redLastHeaderSizeBytes;\n                totalHeaderSizeBytes += this.redLastHeaderSizeBytes;\n                // Accumulated block lengths are equal to or larger than the buffer, which means there is no primary block. This\n                // is a bad packet.\n                if (totalPayloadSizeBytes >= payload.byteLength) {\n                    return null;\n                }\n                primaryPayloadSizeBytes = payload.byteLength - totalPayloadSizeBytes;\n                break;\n            }\n            else {\n                if (payloadSizeBytes < this.redHeaderSizeBytes) {\n                    return null;\n                }\n                // Bits 22 through 31 are payload length\n                const blockLength = ((payload.getUint8(payloadOffset + 2) & 0x03) << 8) + payload.getUint8(payloadOffset + 3);\n                redundantEncodingBlockLengths.push(blockLength);\n                const timestampOffset = payload.getUint16(payloadOffset + 1) >> 2;\n                const timestamp = primaryTimestamp - timestampOffset;\n                redundantEncodingTimestamps.push(timestamp);\n                totalPayloadSizeBytes += blockLength + this.redHeaderSizeBytes;\n                totalHeaderSizeBytes += this.redHeaderSizeBytes;\n                payloadOffset += this.redHeaderSizeBytes;\n                payloadSizeBytes -= this.redHeaderSizeBytes;\n            }\n        }\n        // The last block was never found. The packet we received\n        // does not have a good RED payload.\n        if (!gotLastBlock) {\n            // Note that sequence numbers only exist for\n            // incoming audio frames.\n            if (primarySequenceNumber !== undefined) {\n                // This could be a possible padding packet used\n                // for BWE with a good sequence number.\n                // Create a dummy encoding to make sure loss values\n                // are calculated correctly by consuming sequence number.\n                // Note that for the receive side, we process packets only\n                // for loss/recovery calculations and forward the original\n                // packet without changing it even in the error case.\n                encodings.push({\n                    payload: frame,\n                    isRedundant: false,\n                    seq: primarySequenceNumber,\n                });\n                return encodings;\n            }\n            // This is a bad packet.\n            return null;\n        }\n        let redundantPayloadOffset = totalHeaderSizeBytes;\n        for (let i = 0; i < redundantEncodingTimestamps.length;
17 i++) {\n            const redundantPayloadBuffer = new ArrayBuffer(redundantEncodingBlockLengths[i]);\n            const redundantPayloadArray = new Uint8Array(redundantPayloadBuffer);\n            redundantPayloadArray.set(new Uint8Array(payload.buffer, redundantPayloadOffset, redundantEncodingBlockLengths[i]), 0);\n            const encoding = {\n                timestamp: redundantEncodingTimestamps[i],\n                payload: redundantPayloadBuffer,\n                isRedundant: true,\n            };\n            if (getFecInfo) {\n                encoding.hasFec = this.opusPacketHasFec(new DataView(redundantPayloadBuffer), redundantPayloadBuffer.byteLength);\n            }\n            encodings.push(encoding);\n            redundantPayloadOffset += redundantEncodingBlockLengths[i];\n        }\n        const primaryPayloadOffset = payload.byteLength - primaryPayloadSizeBytes;\n        const primaryPayloadBuffer = new ArrayBuffer(primaryPayloadSizeBytes);\n        const primaryArray = new Uint8Array(primaryPayloadBuffer);\n        primaryArray.set(new Uint8Array(payload.buffer, primaryPayloadOffset, primaryPayloadSizeBytes), 0);\n        const encoding = {\n            timestamp: primaryTimestamp,\n            payload: primaryPayloadBuffer,\n            isRedundant: false,\n            seq: primarySequenceNumber,\n        };\n        if (getFecInfo) {\n            encoding.hasFec = this.opusPacketHasFec(new DataView(primaryPayloadBuffer), primaryPayloadBuffer.byteLength);\n        }\n        encodings.push(encoding);\n        return encodings;\n    }\n    /**\n     * Create a new encoding with current primary payload and the older payloads of choice.\n     */\n    encode(primaryTimestamp, primaryPayload) {\n        const primaryPayloadSize = primaryPayload.byteLength;\n        // Payload size needs to be valid.\n        if (primaryPayloadSize === 0 ||\n            primaryPayloadSize >= this.maxRedPacketSizeBytes ||\n            primaryPayloadSize >= this.maxAudioPayloadSizeBytes) {\n            return null;\n        }\n        const numRedundantEncodings = this.numRedundantEncodings;\n        let headerSizeBytes = this.redLastHeaderSizeBytes;\n        let payloadSizeBytes = primaryPayloadSize;\n        let bytesAvailable = this.maxAudioPayloadSizeBytes - primaryPayloadSize - headerSizeBytes;\n        const redundantEncodingTimestamps = [];\n        const redundantEncodingPayloads = [];\n        // If redundancy is disabled then only send the primary payload\n        if (this.redundancyEnabled) {\n            // Determine how much redundancy we can fit into our packet\n            let redundantTimestamp = this.uint32WrapAround(primaryTimestamp - this.redPacketizationTime * this.redPacketDistance);\n            for (let i = 0; i < numRedundantEncodings; i++) {\n                // Do not add redundant encodings that are beyond the maximum timestamp offset.\n                if (this.uint32WrapAround(primaryTimestamp - redundantTimestamp) >= this.maxRedTimestampOffset) {\n                    break;\n                }\n                let findTimestamp = redundantTimestamp;\n                let encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n                if (!encoding) {\n                    // If not found or not important then look for the previous packet.\n                    // The current packet may have included FEC for the previous, so just\n                    // use the previous packet instead provided that it has voice activity.\n                    findTimestamp = this.uint32WrapAround(redundantTimestamp - this.redPacketizationTime);\n                    encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n                }\n                if (encoding) {\n                    const redundantEncodingSizeBytes = encoding.payload.byteLength;\n                    // Only add redundancy if there are enough bytes available.\n                    if (bytesAvailable < this.redHeaderSizeBytes + redundantEncodingSizeBytes)\n                        break;\n                    bytesAvailable -= this.redHeaderSizeBytes + redundantEncodingSizeBytes;\n                    headerSizeBytes += this.redHeaderSizeBytes;\n                    payloadSizeBytes += redundantEncodingSizeBytes;\n                    redundantEncodingTimestamps.unshift(encoding.timestamp);\n                    redundantEncodingPayloads.unshift(encoding.payload);\n                }
17\n                redundantTimestamp -= this.redPacketizationTime * this.redPacketDistance;\n                redundantTimestamp = this.uint32WrapAround(redundantTimestamp);\n            }\n        }\n        const redPayloadBuffer = new ArrayBuffer(headerSizeBytes + payloadSizeBytes);\n        const redPayloadView = new DataView(redPayloadBuffer);\n        // Add redundant encoding header(s) to new buffer\n        let redPayloadOffset = 0;\n        for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\n            const timestampDelta = primaryTimestamp - redundantEncodingTimestamps[i];\n            redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType | 0x80);\n            redPayloadView.setUint16(redPayloadOffset + 1, (timestampDelta << 2) | (redundantEncodingPayloads[i].byteLength >> 8));\n            redPayloadView.setUint8(redPayloadOffset + 3, redundantEncodingPayloads[i].byteLength & 0xff);\n            redPayloadOffset += this.redHeaderSizeBytes;\n        }\n        // Add primary encoding header to new buffer\n        redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType);\n        redPayloadOffset += this.redLastHeaderSizeBytes;\n        // Add redundant payload(s) to new buffer\n        const redPayloadArray = new Uint8Array(redPayloadBuffer);\n        for (let i = 0; i < redundantEncodingPayloads.length; i++) {\n            redPayloadArray.set(new Uint8Array(redundantEncodingPayloads[i]), redPayloadOffset);\n            redPayloadOffset += redundantEncodingPayloads[i].byteLength;\n        }\n        // Add primary payload to new buffer\n        redPayloadArray.set(new Uint8Array(primaryPayload), redPayloadOffset);\n        redPayloadOffset += primaryPayload.byteLength;\n        /* istanbul ignore next */\n        // Sanity check that we got the expected total payload size.\n        if (redPayloadOffset !== headerSizeBytes + payloadSizeBytes)\n            return null;\n        this.updateEncodingHistory(primaryTimestamp, primaryPayload);\n        return redPayloadBuffer;\n    }\n    /**\n     * Update the encoding history with the latest primary encoding\n     */\n    updateEncodingHistory(primaryTimestamp, primaryPayload) {\n        // Remove encodings from the history if they are too old.\n        for (const encoding of this.encodingHistory) {\n            const maxTimestampDelta = this.redPacketizationTime * this.redMaxRecoveryDistance;\n            if (primaryTimestamp - encoding.timestamp >= maxTimestampDelta) {\n                this.encodingHistory.shift();\n            }\n            else {\n                break;\n            }\n        }\n        // Only add an encoding to the history if the encoding is deemed to be important. An encoding is important if it is\n        // a CELT-only packet or contains voice activity.\n        const packet = new DataView(primaryPayload);\n        if (this.opusPacketIsCeltOnly(packet) ||\n            this.opusPacketHasVoiceActivity(packet, packet.byteLength) > 0) {\n            // Check if adding an encoding will cause the length of the encoding history to exceed the maximum history size.\n            // This is not expected to happen but could occur if we get incorrect timestamps. We want to make sure our memory\n            // usage is bounded. In this case, just clear the history and start over from empty.\n            if (this.encodingHistory.length + 1 > this.maxEncodingHistorySize)\n                this.encodingHistory.length = 0;\n            this.encodingHistory.push({ timestamp: primaryTimestamp, payload: primaryPayload });\n        }\n    }\n    /**\n     * Initialize packet logs and metric values.\n     */\n    initializePacketLogs() {\n        // The extra space from the max RED recovery distance is to ensure that we do not incorrectly count recovery for\n        // packets that have already been received but are outside of the max out-of-order distance.\n        const packetLogSize = this.maxOutOfOrderPacketDistance + this.redMaxRecoveryDistance;\n        this.primaryPacketLog = {\n            window: new Array(packetLogSize),\n            index: 0,\n            windowSize: packetLogSize,\n        };\n        this.redRecoveryLog = {\n            window: new Array(packetLogSize),\n            index: 0,\n            windowSize: packetLogSize,\n        };
17\n        this.fecRecoveryLog = {\n            window: new Array(packetLogSize),\n            index: 0,\n            windowSize: packetLogSize,\n        };\n        this.totalAudioPacketsExpected = 0;\n        this.totalAudioPacketsLost = 0;\n        this.totalAudioPacketsRecoveredRed = 0;\n        this.totalAudioPacketsRecoveredFec = 0;\n    }\n    /**\n     * Receives encoded frames from the server\n     * and adds the timestamps to a packet log\n     * to calculate an approximate recovery metric.\n     */\n    receivePacketLogTransform(\n    // @ts-ignore\n    frame, controller) {\n        const frameMetadata = frame.getMetadata();\n        // @ts-ignore\n        if (frameMetadata.payloadType !== this.redPayloadType) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        // @ts-ignore\n        const encodings = this.splitEncodings(frame.timestamp, frame.data, \n        /*getFecInfo*/ true, frameMetadata.sequenceNumber);\n        if (!encodings) {\n            this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n            return;\n        }\n        for (let i = encodings.length - 1; i >= 0; i--) {\n            if (this.updateLossStats(encodings[i])) {\n                this.updateRedStats(encodings[i]);\n                this.updateFecStats(encodings[i]);\n            }\n        }\n        this.maybeReportLossStats(frameMetadata.synchronizationSource, encodings[encodings.length - 1].timestamp);\n        this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n    }\n    /**\n     * Adds a timestamp to the primary packet log.\n     * This also updates totalAudioPacketsLost and totalAudioPacketsExpected by looking\n     * at the difference between timestamps.\n     *\n     * @param encoding : The encoding to be analyzed\n     * @returns false if sequence number was greater than max out of order distance\n     *          true otherwise\n     */\n    updateLossStats(encoding) {\n        if (encoding.isRedundant)\n            return true;\n        const timestamp = encoding.timestamp;\n        const seq = encoding.seq;\n        if (this.totalAudioPacketsExpected === 0) {\n            this.totalAudioPacketsExpected = 1;\n            this.newestSequenceNumber = seq;\n            this.addTimestamp(this.primaryPacketLog, timestamp);\n            return true;\n        }\n        const diff = this.int16(seq - this.newestSequenceNumber);\n        if (diff < -this.maxOutOfOrderPacketDistance)\n            return false;\n        if (diff < 0) {\n            if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n                if (this.totalAudioPacketsLost > 0)\n                    this.totalAudioPacketsLost--;\n                this.addTimestamp(this.primaryPacketLog, timestamp);\n                this.removeFromRecoveryWindows(timestamp);\n            }\n        }\n        else if (diff > 1) {\n            this.totalAudioPacketsLost += diff - 1;\n        }\n        if (diff > 0) {\n            this.totalAudioPacketsExpected += diff;\n            this.newestSequenceNumber = encoding.seq;\n            this.addTimestamp(this.primaryPacketLog, timestamp);\n        }\n        return true;\n    }\n    /**\n     * Adds a timestamp to the red recovery log if it is not present in\n     * the primary packet log and if it's not too old.\n     *\n     * @param encoding : The encoding to be analyzed\n     */\n    updateRedStats(encoding) {\n        if (!encoding.isRedundant || this.totalAudioPacketsLost === 0)\n            return;\n        const timestamp = encoding.timestamp;\n        if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n            if (!this.hasTimestamp(this.redRecoveryLog, timestamp)) {\n                this.totalAudioPacketsRecoveredRed++;\n                this.addTimestamp(this.redRecoveryLog, timestamp);\n            }\n            if (this.removeTimestamp(this.fecRecoveryLog, timestamp)) {\n                /* istanbul ignore else */\n                if (this.totalAudioPacketsRecoveredFec > 0)\n                    this.totalAudioPacketsRecoveredFec--;\n            }\n        }\n    }\n    /**\n     * Adds a timestamp to the fec recovery log if it is not present in\n     * the primary packet log and red recovery log and if it is not too old.\n     *\n     * @param encoding : The encoding to be analyzed\n     */\n    updateFecStats(encoding) {\n        if (!encoding.hasFec || this.totalAudioPacketsLost === 0)\n            return;\n        const fecTimestamp = encoding.timestamp - this.redPacket
17izationTime;\n        if (this.hasTimestamp(this.primaryPacketLog, fecTimestamp) ||\n            this.hasTimestamp(this.redRecoveryLog, fecTimestamp) ||\n            this.hasTimestamp(this.fecRecoveryLog, fecTimestamp)) {\n            return;\n        }\n        this.totalAudioPacketsRecoveredFec++;\n        this.addTimestamp(this.fecRecoveryLog, fecTimestamp);\n    }\n    /**\n     * Reports loss metrics to DefaultTransceiverController\n     *\n     * @param timestamp : Timestamp of most recent primary packet\n     */\n    maybeReportLossStats(ssrc, timestamp) {\n        if (timestamp === undefined ||\n            timestamp - this.lastLossReportTimestamp < this.lossReportInterval)\n            return;\n        /* istanbul ignore next */\n        if (RedundantAudioEncoder.shouldReportStats) {\n            // @ts-ignore\n            self.postMessage({\n                type: 'RedundantAudioEncoderStats',\n                ssrc,\n                totalAudioPacketsLost: this.totalAudioPacketsLost,\n                totalAudioPacketsExpected: this.totalAudioPacketsExpected,\n                totalAudioPacketsRecoveredRed: this.totalAudioPacketsRecoveredRed,\n                totalAudioPacketsRecoveredFec: this.totalAudioPacketsRecoveredFec,\n            });\n        }\n        this.lastLossReportTimestamp = timestamp;\n    }\n    /**\n     * Adds a timestamp to a packet log\n     *\n     * @param packetLog : The packetlog to add the timestamp to\n     * @param timestamp : The timestamp that should be added\n     */\n    addTimestamp(packetLog, timestamp) {\n        if (timestamp === undefined) {\n            return;\n        }\n        packetLog.window[packetLog.index] = timestamp;\n        packetLog.index = (packetLog.index + 1) % packetLog.windowSize;\n    }\n    /**\n     * Checks if a timestamp is in a packetlog\n     *\n     * @param packetLog : The packetlog to search\n     * @param timestamp : The timestamp to search for\n     * @returns true if timestamp is present, false otherwise\n     */\n    hasTimestamp(packetLog, timestamp) {\n        const element = packetLog.window.find(t => t === timestamp);\n        return !!element;\n    }\n    /**\n     * Removes a timestamp from a packet log\n     *\n     * @param packetLog : The packetlog from which the timestamp should be removed\n     * @param timestamp : The timestamp to be removed\n     * @returns true if timestamp was present in the log and removed, false otherwise\n     */\n    removeTimestamp(packetLog, timestamp) {\n        const index = packetLog.window.indexOf(timestamp);\n        if (index >= 0) {\n            packetLog.window[index] = undefined;\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Removes a timestamp from red and fec recovery windows.\n     *\n     * @param timestamp : The timestamp to be removed\n     */\n    removeFromRecoveryWindows(timestamp) {\n        let removed = this.removeTimestamp(this.redRecoveryLog, timestamp);\n        if (removed) {\n            if (this.totalAudioPacketsRecoveredRed > 0)\n                this.totalAudioPacketsRecoveredRed--;\n        }\n        removed = this.removeTimestamp(this.fecRecoveryLog, timestamp);\n        if (removed) {\n            if (this.totalAudioPacketsRecoveredFec > 0)\n                this.totalAudioPacketsRecoveredFec--;\n        }\n    }\n    /**\n     * Converts the supplied argument to 32-bit unsigned integer\n     */\n    uint32WrapAround(num) {\n        const mod = 4294967296; // 2^32\n        let res = num;\n        if (num >= mod) {\n            res = num - mod;\n        }\n        else if (num < 0) {\n            res = mod + num;\n        }\n        return res;\n    }\n    /**\n     * Converts the supplied argument to 16-bit signed integer\n     */\n    int16(num) {\n        return (num << 16) >> 16;\n    }\n    /**\n     * Determines if an Opus packet is in CELT-only mode.\n     *\n     * @param packet Opus packet.\n     * @returns `true` if the packet is in CELT-only mode.\n     */\n    opusPacketIsCeltOnly(packet) {\n        // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n        //  0\n        //  0 1 2 3 4 5 6 7\n        // +-+-+-+-+-+-+-+-+\n        // | config  |s| c |\n        // +-+-+-+-+-+-+-+-+\n        // Since CELT-only packets are represented using configurations 16 to 31, the highest 'config' bit will always be 1\n        // for CELT-only packets.\n        return !!(packet.getUint8(0) & 0x80);\n    }\n    /**\n     * Gets the number of samples per frame from an Opus packet.\n     *\n     * @param packet Opus packet. This must contain at least one byte of data.\n     * @param sampleRateHz 32-bit integer sampling rate in Hz. This must be a multiple of 400 or inaccurate results will\n     *                     be returned.\n     * @returns Number of samples per frame.\n     */\n    opusPacketGetSamplesPerFrame
17(packet, sampleRateHz) {\n        // Sample rate must be a 32-bit integer.\n        sampleRateHz = Math.round(sampleRateHz);\n        sampleRateHz = Math.min(Math.max(sampleRateHz, -(2 ** 32)), 2 ** 32 - 1);\n        // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n        //  0\n        //  0 1 2 3 4 5 6 7\n        // +-+-+-+-+-+-+-+-+\n        // | config  |s| c |\n        // +-+-+-+-+-+-+-+-+\n        let numSamples;\n        let frameSizeOption;\n        // Case for CELT-only packet.\n        if (this.opusPacketIsCeltOnly(packet)) {\n            // The lower 3 'config' bits indicate the frame size option.\n            frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n            // The frame size options 0, 1, 2, 3 correspond to frame sizes of 2.5, 5, 10, 20 ms. Notice that the frame sizes\n            // can be represented as (2.5 * 2^0), (2.5 * 2^1), (2.5 * 2^2), (2.5 * 2^3) ms. So, the number of samples can be\n            // calculated as follows:\n            // (sample/s) * (1s/1000ms) * (2.5ms) * 2^(frameSizeOption)\n            // = (sample/s) * (1s/400) * 2^(frameSizeOption)\n            // = (sample/s) * 2^(frameSizeOption) * (1s/400)\n            numSamples = (sampleRateHz << frameSizeOption) / 400;\n        }\n        // Case for Hybrid packet. Since Hybrid packets are represented using configurations 12 to 15, bits 1 and 2 in the\n        // above TOC byte diagram will both be 1.\n        else if ((packet.getUint8(0) & 0x60) === 0x60) {\n            // In the case of configuration 13 or 15, bit 4 in the above TOC byte diagram will be 1. Configurations 13 and 15\n            // correspond to a 20ms frame size, so the number of samples is calculated as follows:\n            // (sample/s) * (1s/1000ms) * (20ms)\n            // = (sample/s) * (1s/50)\n            //\n            // In the case of configuration 12 or 14, bit 4 in the above TOC byte diagram will be 0. Configurations 12 and 14\n            // correspond to a 10ms frame size, so the number of samples is calculated as follows:\n            // (sample/s) * (1s/1000ms) * (10ms)\n            // = (sample/s) * (1s/100)\n            numSamples = packet.getUint8(0) & 0x08 ? sampleRateHz / 50 : sampleRateHz / 100;\n        }\n        // Case for SILK-only packet.\n        else {\n            // The lower 3 'config' bits indicate the frame size option for SILK-only packets.\n            frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n            if (frameSizeOption === 3) {\n                // Frame size option 3 corresponds to a frame size of 60ms, so the number of samples is calculated as follows:\n                // (sample/s) * (1s/1000ms) * (60ms)\n                // = (sample/s) * (60ms) * (1s/1000ms)\n                numSamples = (sampleRateHz * 60) / 1000;\n            }\n            else {\n                // The frame size options 0, 1, 2 correspond to frame sizes of 10, 20, 40 ms. Notice that the frame sizes can be\n                // represented as (10 * 2^0), (10 * 2^1), (10 * 2^2) ms. So, the number of samples can be calculated as follows:\n                // (sample/s) * (1s/1000ms) * (10ms) * 2^(frameSizeOption)\n                // = (sample/s) * (1s/100) * 2^(frameSizeOption)\n                // = (sample/s) * 2^(frameSizeOption) * (1s/100)\n                numSamples = (sampleRateHz << frameSizeOption) / 100;\n            }\n        }\n        return numSamples;\n    }\n    /**\n     * Gets the number of SILK frames per Opus frame.\n     *\n     * @param packet Opus packet.\n     * @returns Number of SILK frames per Opus frame.\n     */\n    opusNumSilkFrames(packet) {\n        // For computing the frame length in ms, the sample rate is not important since it cancels out. We use 48 kHz, but\n        // any valid sample rate would work.\n        //\n        // To calculate the length of a frame (with a 48kHz sample rate) in ms:\n        // (samples/frame) * (1s/48000 samples) * (1000ms/s)\n        // = (samples/frame) * (1000ms/48000 samples)\n        // = (samples/frame) * (1ms/48 samples)\n        let frameLengthMs = this.opusPacketGetSamplesPerFrame
17(packet, 48000) / 48;\n        if (frameLengthMs < 10)\n            frameLengthMs = 10;\n        // The number of SILK frames per Opus frame is described in https://www.rfc-editor.org/rfc/rfc6716#section-4.2.2.\n        switch (frameLengthMs) {\n            case 10:\n            case 20:\n                return 1;\n            case 40:\n                return 2;\n            case 60:\n                return 3;\n            // It is not possible to reach the default case since an Opus packet can only encode sizes of 2.5, 5, 10, 20, 40,\n            // or 60 ms, so we ignore the default case for test coverage.\n            /* istanbul ignore next */\n            default:\n                return 0;\n        }\n    }\n    /**\n     * Gets the number of channels from an Opus packet.\n     *\n     * @param packet Opus packet.\n     * @returns Number of channels.\n     */\n    opusPacketGetNumChannels(packet) {\n        // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n        //  0\n        //  0 1 2 3 4 5 6 7\n        // +-+-+-+-+-+-+-+-+\n        // | config  |s| c |\n        // +-+-+-+-+-+-+-+-+\n        // The 's' bit indicates mono or stereo audio, with 0 indicating mono and 1 indicating stereo.\n        return packet.getUint8(0) & 0x4 ? 2 : 1;\n    }\n    /**\n     * Determine the size (in bytes) of an Opus frame.\n     *\n     * @param packet Opus packet.\n     * @param byteOffset Offset (from the start of the packet) to the byte containing the size information.\n     * @param remainingBytes Remaining number of bytes to parse from the Opus packet.\n     * @param sizeBytes Variable to store the parsed frame size (in bytes).\n     * @returns Number of bytes that were parsed to determine the frame size.\n     */\n    opusParseSize(packet, byteOffset, remainingBytes, sizeBytes) {\n        // See https://www.rfc-editor.org/rfc/rfc6716#section-3.2.1 for an explanation of how frame size is represented.\n        // If there are no remaining bytes to parse the size from, then the size cannot be determined.\n        if (remainingBytes < 1) {\n            sizeBytes[0] = -1;\n            return -1;\n        }\n        // If the first byte is in the range 0...251, then this value is the size of the frame.\n        else if (packet.getUint8(byteOffset) < 252) {\n            sizeBytes[0] = packet.getUint8(byteOffset);\n            return 1;\n        }\n        // If the first byte is in the range 252...255, a second byte is needed. If there is no second byte, then the size\n        // cannot be determined.\n        else if (remainingBytes < 2) {\n            sizeBytes[0] = -1;\n            return -1;\n        }\n        // The total size of the frame given two size bytes is:\n        // (4 * secondSizeByte) + firstSizeByte\n        else {\n            sizeBytes[0] = 4 * packet.getUint8(byteOffset + 1) + packet.getUint8(byteOffset);\n            return 2;\n        }\n    }\n    /**\n     * Parse binary data containing an Opus packet into one or more Opus frames.\n     *\n     * @param data Binary data containing an Opus packet to be parsed. The data should begin with the first byte (i.e the\n     *             TOC byte) of an Opus packet. Note that the size of the data does not have to equal the size of the\n     *             contained Opus packet.\n     * @param lenBytes Size of the data (in bytes).\n     * @param selfDelimited Indicates if the Opus packet is self-delimiting\n     *                      (https://www.rfc-editor.org/rfc/rfc6716#appendix-B).\n     * @param tocByte Optional variable to store the TOC (table of contents) byte.\n     * @param frameOffsets Optional variable to store the offsets (from the start of the data) to the first bytes of each\n     *                     Opus frame.\n     * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n     * @param payloadOffset Optional variable to store the offset (from the start of the data) to the first byte of the\n     *                      payload.\n     * @param packetLenBytes Optional variable to store the length of the Opus packet (in bytes).\n     * @returns Number of Opus frames.\n     */\n    opusPacketParseImpl(data, lenBytes, selfDelimited, tocByte, frameOffsets, frameSizes, payloadOffset, packetLenBytes) {\n        if (!frameSizes || lenBytes < 0)\n            return this.OPUS_BAD_ARG;\n        if (lenBytes === 0)\n            return this.OPUS_INVALID_PACKET;\n        // The number of Opus frames in the packet.\n        let numFrames;\n        // Intermediate storage for the number of bytes parsed to determine the size of a frame.\n        let numBytesParsed;\n        // The number of the padding bytes (excluding the padding count bytes) in the packet.\n        let paddingBytes = 0;\n        // Indicates whether CBR (constant bitrate) framing is used.\n        let cbr = false;\n        // The TOC (table of contents) byte (https://www.rfc-editor.org/rfc/rfc6716#section-3.1).\n        const toc = data.getUint8(0);\n        // Store the TOC byte.\n        if (tocByte)\n            tocByte[0] = toc;\n        // The remaining number of bytes to parse from the packet. Note that the TOC byte has already been parsed, hence the\n        // minus 1.\n        let remainingBytes = lenBytes - 1;\n        // This keeps track of where we are in the packet. This starts at 1 since the TOC byte has already been read.\n        let byteOffset = 1;
17\n        // The size of the last Opus frame in bytes.\n        let lastSizeBytes = remainingBytes;\n        // Read the `c` bits (i.e. code bits) from the TOC byte.\n        switch (toc & 0x3) {\n            // A code 0 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.2) has one frame.\n            case 0:\n                numFrames = 1;\n                break;\n            // A code 1 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.3) has two CBR (constant bitrate) frames.\n            case 1:\n                numFrames = 2;\n                cbr = true;\n                if (!selfDelimited) {\n                    // Undelimited code 1 packets must be an even number of data bytes, otherwise the packet is invalid.\n                    if (remainingBytes & 0x1)\n                        return this.OPUS_INVALID_PACKET;\n                    // The sizes of both frames are equal (i.e. half of the number of data bytes).\n                    lastSizeBytes = remainingBytes / 2;\n                    // If `lastSizeBytes` is too large, we will catch it later.\n                    frameSizes[0][0] = lastSizeBytes;\n                }\n                break;\n            // A code 2 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.4) has two VBR (variable bitrate) frames.\n            case 2:\n                numFrames = 2;\n                numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[0]);\n                remainingBytes -= numBytesParsed;\n                // The parsed size of the first frame cannot be larger than the number of remaining bytes in the packet.\n                if (frameSizes[0][0] < 0 || frameSizes[0][0] > remainingBytes) {\n                    return this.OPUS_INVALID_PACKET;\n                }\n                byteOffset += numBytesParsed;\n                // The size of the second frame is the remaining number of bytes after the first frame.\n                lastSizeBytes = remainingBytes - frameSizes[0][0];\n                break;\n            // A code 3 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5) has multiple CBR/VBR frames (from 0 to\n            // 120 ms).\n            default:\n                // Code 3 packets must have at least 2 bytes (i.e. at least 1 byte after the TOC byte).\n                if (remainingBytes < 1)\n                    return this.OPUS_INVALID_PACKET;\n                // Frame count byte format:\n                //  0\n                //  0 1 2 3 4 5 6 7\n                // +-+-+-+-+-+-+-+-+\n                // |v|p|     M     |\n                // +-+-+-+-+-+-+-+-+\n                //\n                // Read the frame count byte, which immediately follows the TOC byte.\n                const frameCountByte = data.getUint8(byteOffset++);\n                --remainingBytes;\n                // Read the 'M' bits of the frame count byte, which encode the number of frames.\n                numFrames = frameCountByte & 0x3f;\n                // The number of frames in a code 3 packet must not be 0.\n                if (numFrames <= 0)\n                    return this.OPUS_INVALID_PACKET;\n                const samplesPerFrame = this.opusPacketGetSamplesPerFrame(data, 48000);\n                // A single frame can have at most 2880 samples, which happens in the case where 60ms of 48kHz audio is encoded\n                // per frame. A code 3 packet cannot contain more than 120ms of audio, so the total number of samples cannot\n                // exceed 2880 * 2 = 5760.\n                if (samplesPerFrame * numFrames > 5760)\n                    return this.OPUS_INVALID_PACKET;\n                // Parse padding bytes if the 'p' bit is 1.\n                if (frameCountByte & 0x40) {\n                    let paddingCountByte;\n                    let numPaddingBytes;\n                    // Remove padding bytes (including padding count bytes) from the remaining byte count.\n                    do {\n                        // Sanity check that there are enough bytes to parse and remove the padding.\n                        if (remainingBytes <= 0)\n                            return this.OPUS_INVALID_PACKET;\n                        // Get the next padding count byte.\n                        paddingCountByte = data.getUint8(byteOffset++);\n                        --remainingBytes;\n                        // If the padding count byte has a value in the range 0...254, then the total size of the padding is the\n                        // value in the padding count byte.\n                        //\n                        // If the padding count byte has value 255, then the total size of the padding is 254 plus the value in the\n                        // next padding count byte. Therefore, keep reading padding count bytes while the value is 255.\n                        numPaddingBytes = paddingCountByte === 25
175 ? 254 : paddingCountByte;\n                        remainingBytes -= numPaddingBytes;\n                        paddingBytes += numPaddingBytes;\n                    } while (paddingCountByte === 255);\n                }\n                // Sanity check that the remaining number of bytes is not negative after removing the padding.\n                if (remainingBytes < 0)\n                    return this.OPUS_INVALID_PACKET;\n                // Read the 'v' bit (i.e. VBR bit).\n                cbr = !(frameCountByte & 0x80);\n                // VBR case\n                if (!cbr) {\n                    lastSizeBytes = remainingBytes;\n                    // Let M be the number of frames. There will be M - 1 frame length indicators (which can be 1 or 2 bytes)\n                    // corresponding to the lengths of frames 0 to M - 2. The size of the last frame (i.e. frame M - 1) is the\n                    // number of data bytes after the end of frame M - 2 and before the start of the padding bytes.\n                    for (let i = 0; i < numFrames - 1; ++i) {\n                        numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[i]);\n                        remainingBytes -= numBytesParsed;\n                        // The remaining number of data bytes must be enough to contain each frame.\n                        if (frameSizes[i][0] < 0 || frameSizes[i][0] > remainingBytes) {\n                            return this.OPUS_INVALID_PACKET;\n                        }\n                        byteOffset += numBytesParsed;\n                        lastSizeBytes -= numBytesParsed + frameSizes[i][0];\n                    }\n                    // Sanity check that the size of the last frame is not negative.\n                    if (lastSizeBytes < 0)\n                        return this.OPUS_INVALID_PACKET;\n                }\n                // CBR case\n                else if (!selfDelimited) {\n                    // The size of each frame is the number of data bytes divided by the number of frames.\n                    lastSizeBytes = Math.trunc(remainingBytes / numFrames);\n                    // The number of data bytes must be a non-negative integer multiple of the number of frames.\n                    if (lastSizeBytes * numFrames !== remainingBytes)\n                        return this.OPUS_INVALID_PACKET;\n                    // All frames have equal size in the undelimited CBR case.\n                    for (let i = 0; i < numFrames - 1; ++i) {\n                        frameSizes[i][0] = lastSizeBytes;\n                    }\n                }\n        }\n        // Self-delimited framing uses an extra 1 or 2 bytes, immediately preceding the data bytes, to indicate either the\n        // size of the last frame (for code 0, code 2, and VBR code 3 packets) or the size of all the frames (for code 1 and\n        // CBR code 3 packets). See https://www.rfc-editor.org/rfc/rfc6716#appendix-B.\n        if (selfDelimited) {\n            // The extra frame size byte(s) will always indicate the size of the last frame.\n            numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[numFrames - 1]);\n            remainingBytes -= numBytesParsed;\n            // There must be enough data bytes for the last frame.\n            if (frameSizes[numFrames - 1][0] < 0 || frameSizes[numFrames - 1][0] > remainingBytes) {\n                return this.OPUS_INVALID_PACKET;\n            }\n            byteOffset += numBytesParsed;\n            // For CBR packets, the sizes of all the frames are equal.\n            if (cbr) {\n                // There must be enough data bytes for all the frames.\n                if (frameSizes[numFrames - 1][0] * numFrames > remainingBytes) {\n                    return this.OPUS_INVALID_PACKET;\n                }\n                for (let i = 0; i < numFrames - 1; ++i) {\n                    frameSizes[i][0] = frameSizes[numFrames - 1][0];\n                }\n            }\n            // At this point, `lastSizeBytes` contains the size of the last frame plus the size of the extra frame size\n            // byte(s), so sanity check that `lastSizeBytes` is the upper bound for the size of the last frame.\n            else if (!(numBytesParsed + frameSizes[numFrames - 1][0] <= lastSizeBytes)) {\n                return this.OPUS_INVALID_PACKET;\n            }\n        }\n        // Undelimited case\n        else {\n            // Because the size of the last packet is not encoded explicitly, it is possible that the size of the last packet\n            // (or of all the packets, for the CBR case) is larger than maximum frame size.\n            if (lastSizeBytes > this.OPUS_MAX_FRAME_SIZE_BYTES)\n                return this.OPUS_INVALID_PACKET;\n            frameSizes[numFrames - 1][0] = lastSizeBytes;\n        }\n        // Store the offset to the start of the payload.\n        if (payloadOffset)\n            payloadOffset[0] = byteOffset;\n        // Store the offsets to the start of each frame.\n        for (let i = 0; i < numFrames; ++i) {\n            if (frameOffsets)\n                frameOffsets[i][0] = byteOffset;\n            byteOffset += frameSizes[i][0];\n        }\n        // Store the length of the Opus packet.\n        if (packetLenBytes)\n            packetLenBytes[0] = byteOffset + paddingBytes;\n        return numFrames;\n    }
17\n    /**\n     * Parse a single undelimited Opus packet into one or more Opus frames.\n     *\n     * @param packet Opus packet to be parsed.\n     * @param lenBytes Size of the packet (in bytes).\n     * @param tocByte Optional variable to store the TOC (table of contents) byte.\n     * @param frameOffsets Optional variable to store the offsets (from the start of the packet) to the first bytes of\n     *                     each Opus frame.\n     * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n     * @param payloadOffset Optional variable to store the offset (from the start of the packet) to the first byte of the\n     *                      payload.\n     * @returns Number of Opus frames.\n     */\n    opusPacketParse(packet, lenBytes, tocByte, frameOffsets, frameSizes, payloadOffset) {\n        return this.opusPacketParseImpl(packet, lenBytes, \n        /* selfDelimited */ false, tocByte, frameOffsets, frameSizes, payloadOffset, null);\n    }\n    /**\n     * This function returns the SILK VAD (voice activity detection) information encoded in the Opus packet. For CELT-only\n     * packets that do not have VAD information, it returns -1.\n     *\n     * @param packet Opus packet.\n     * @param lenBytes Size of the packet (in bytes).\n     * @returns  0: no frame had the VAD flag set.\n     *           1: at least one frame had the VAD flag set.\n     *          -1: VAD status could not be determined.\n     */\n    opusPacketHasVoiceActivity(packet, lenBytes) {\n        if (!packet || lenBytes <= 0)\n            return 0;\n        // In CELT-only mode, we can not determine whether there is VAD.\n        if (this.opusPacketIsCeltOnly(packet))\n            return -1;\n        const numSilkFrames = this.opusNumSilkFrames(packet);\n        // It is not possible for `opusNumSilkFrames()` to return 0, so we ignore the next sanity check for test coverage.\n        /* istanbul ignore next */\n        if (numSilkFrames === 0)\n            return -1;\n        const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n            opusFrameOffsets[i] = [undefined];\n            opusFrameSizes[i] = [undefined];\n        }\n        // Parse packet to get the Opus frames.\n        const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\n        // VAD status cannot be determined for invalid packets.\n        if (numOpusFrames < 0)\n            return -1;\n        // Iterate over all Opus frames, which may contain multiple SILK frames, to determine the VAD status.\n        for (let i = 0; i < numOpusFrames; ++i) {\n            if (opusFrameSizes[i][0] < 1)\n                continue;\n            // LP layer header bits format (https://www.rfc-editor.org/rfc/rfc6716#section-4.2.3):\n            //\n            // Mono case:\n            // +-----------------+----------+\n            // | 1 to 3 VAD bits | LBRR bit |\n            // +-----------------+----------+\n            //\n            // Stereo case:\n            // +---------------------+--------------+----------------------+---------------+\n            // | 1 to 3 mid VAD bits | mid LBRR bit | 1 to 3 side VAD bits | side LBRR bit |\n            // +---------------------+--------------+----------------------+---------------+\n            // The upper 1 to 3 bits (dependent on the number of SILK frames) of the LP layer contain VAD bits. If any of\n            // these VAD bits are 1, then voice activity is present.\n            if (packet.getUint8(opusFrameOffsets[i][0]) >> (8 - numSilkFrames))\n                return 1;\n            // In the stereo case, there is a second set of 1 to 3 VAD bits, so also check these VAD bits.\n            const channels = this.opusPacketGetNumChannels(packet);\n            if (channels === 2 &&\n                (packet.getUint8(opusFrameOffsets[i][0]) << (numSilkFrames + 1)) >> (8 - numSilkFrames)) {\n                return 1;\n            }\n        }\n        // No voice activity was detected.\n        return 0;\n    }\n    /**\n     * This method is based on Definition of the Opus Audio Codec\n     * (https://tools.ietf.org/html/rfc6716). Basically, this method is based on\n     * parsing the LP layer of an Opus packet, particularly the LBRR flag.\n     *\n     * @param packet Opus packet.\n     * @param lenBytes Size of the packet (in bytes).\n     * @returns  true: packet has fec encoding about previous packet.\n     *           false: no fec encoding present.\n     */\n    opusPacketHasFec(packet, lenBytes) {\n        if (!packet || lenBytes <= 0)\n            return false;\n        // In CELT-only mode, packets should not have FEC.\n        if (this.opusPacketIsCeltOnly(packet))\n            return false;\n        const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\n        for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n            opusFrameOffsets[i] = [undefined];\n            opusFrameSizes[i] = [undefined];\n        }\n        // Parse packet to get the Opus frames.\n        const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\n        if (numOpusFrames < 0)\n            return false;\n        /* istanbul ignore next */\n        if (opusFrameSizes[0][0] <= 1)\n            return false;\n        const numSilkFrames = this.opusNumSilkFrames(packet);\n        /* istanbul ignore next */\n        if (numSilkFrames === 0)\n            return false;\n        const channels = this.opusPacketGetNumChannels(packet);\n        /* istanbul ignore next */\n        if (channels !== 1 && channels !== 2)\n            return false;\n        // A frame starts with the LP layer. The LP layer begins with two to eight\n        // header bits.These consist of one VAD bit per SILK frame (up to 3),\n        // followed by a single flag indicating the presence of LBRR frames.\n        // For a stereo packet, these first flags correspond to the mid channel, and\n        // a second set of flags is included for the side channel. Because these are\
17n        // the first symbols decoded by the range coder and because they are coded\n        // as binary values with uniform probability, they can be extracted directly\n        // from the most significant bits of the first byte of compressed data.\n        for (let i = 0; i < channels; i++) {\n            if (packet.getUint8(opusFrameOffsets[0][0]) & (0x80 >> ((i + 1) * (numSilkFrames + 1) - 1)))\n                return true;\n        }\n        return false;\n    }\n}\nRedundantAudioEncoder.shouldLog = true;\nRedundantAudioEncoder.shouldReportStats = true;\nRedundantAudioEncoder.initializeWorker();\n"},16564:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(71474));class s extends r.default{constructor(){super(0)}static nextTick(e){setTimeout(e,0)}}t.default=s},68414:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e){this.intervalMs=e}start(e){this.stop(),this.timer=setInterval(e,this.intervalMs)}stop(){void 0!==this.timer&&(clearInterval(this.timer),this.timer=void 0)}running(){return void 0!==this.timer}}t.default=i},71474:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e){this.timeoutMs=e,this.timer=null}start(e){this.stop(),this.timer=setTimeout(()=>{clearTimeout(this.timer),e()},this.timeoutMs)}stop(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)}}t.default=i},85207:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(5774)),s=n(i(7458)),a=n(i(92220));class o{constructor(e){this.sdp=e}clone(){return new o(this.sdp)}static isRTPCandidate(e){let t=/candidate[:](\S+) (\d+)/g.exec(e);return null!==t&&"1"===t[2]}static linesToSDP(e){return new o(e.join(o.CRLF))}static candidateTypeFromString(e){switch(e){case r.default.Host:return r.default.Host;case r.default.ServerReflexive:return r.default.ServerReflexive;case r.default.PeerReflexive:return r.default.PeerReflexive;case r.default.Relay:return r.default.Relay}return null}static candidateType(e){let t=/a[=]candidate[:].* typ ([a-z]+) /g.exec(e);return null===t?null:o.candidateTypeFromString(t[1])}static mediaType(e){let t=/m=(audio|video)/g.exec(e);if(null!==t)return t[1]}static mid(e){if(e.includes("a=mid:"))return e.replace(/^(a=mid:)/,"")}static direction(e){let t=/a=(sendrecv|sendonly|recvonly|inactive)/g.exec(e);if(null!==t)return t[1]}static splitLines(e){return e.trim().split("\n").map(e=>e.trim())}static splitSections(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+o.CRLF)}static findActiveCameraSection(e){let t=0,i=!1;for(let n of e){if(/^m=video/.test(n)&&(n.indexOf("sendrecv")>-1||-1===n.indexOf("sendonly")&&-1===n.indexOf("recvonly")&&-1===n.indexOf("inactive"))){i=!0;break}t++}return!1===i&&(t=-1),t}static extractSSRCsFromFIDGroupLine(e){return/^a=ssrc-group:FID\s(.+)/.exec(e)[1]}static matchPrefix(e,t){return o.splitLines(e).filter(e=>0===e.indexOf(t))}lines(){return this.sdp.split(o.CRLF)}hasVideo(){return null!==/^m=video/gm.exec(this.sdp)}hasCandidates(){return null!==/a[=]candidate[:]/g.exec(this.sdp)}hasCandidatesForAllMLines(){return!(this.sdp.indexOf("c=IN IP4 0.0.0.0")>-1)}withoutCandidateType(e){return o.linesToSDP(this.lines().filter(t=>o.candidateType(t)!==e))}withoutServerReflexiveCandidates(){return this.withoutCandidateType(r.default.ServerReflexive)}withAudioMaxAverageBitrate(e){if(!e)return this.clone();e=Math.trunc(Math.min(Math.max(e,o.rfc7587LowestBitrate),o.rfc7587HighestBitrate));let t=this.lines(),i=o.findOpusFmtpAttributes(t),n=o.updateOpusFmtpAttributes(t,i,[`maxaveragebitrate=${e}`]);return o.linesToSDP(n)}withStereoAudio(){let e=this.lines(),t=o.findOpusFmtpAttributes(e),i=o.updateOpusFmtpAttributes(e,t,["stereo=1","sprop-stereo=1"]);return o.linesToSDP(i)}static findOpusFmtpAttributes(e){let t=/^a=rtpmap:\s*(\d+)\s+opus\/48000/,i=!1,n=[];for(let r of e)if(r.startsWith("m=audio")&&(n.push(null),i=!0),r.startsWith("m=video")&&(i=!1),i){let e=t.exec(r);null!==e&&(n[n.length-1]=`a=fmtp:${e[1]} `)}return n}static updateOpusFmtpAttributes(e,t,i){let n=[],r=0,s=null;for(let a of e)if(a.startsWith("m=audio")&&(s=t[r],r++),a.startsWith("m=video")&&(s=null),s&&a.startsWith(s)){let e=a.slice(s.length).split(";"),t=[];for(let n of e)0>i.findIndex(e=>
17e.startsWith(n.split("=")[0]))&&t.push(n);for(let e of i)t.push(e);n.push(s+t.join(";"))}else n.push(a);return n}withUnifiedPlanFormat(){let e=this.sdp;return e.includes("mozilla")?this.clone():new o(e=e.replace("o=-","o=mozilla-chrome"))}getUniqueRtpHeaderExtensionId(e){let t=[];for(let i of e)if(/^a=extmap:/.test(i.trim())){let e=+i.split("a=extmap:")[1].split(" ")[0];t.includes(e)||t.push(e)}t.sort((e,t)=>e-t);let i=0;for(let e of t){if(e-i>1)return i+1;i=e}return 14===i?-1:i+1}withVideoLayersAllocationRtpHeaderExtension(e){return this.withRtpHeaderExtension(e,o.videoLayersAllocationRtpHeaderExtensionUrl)}withDependencyDescriptorRtpHeaderExtension(e){return this.withRtpHeaderExtension(e,o.dependencyDescriptorRtpHeaderExtensionUrl)}withoutDependencyDescriptorRtpHeaderExtension(){let e=o.splitLines(this.sdp).filter(e=>!e.includes(o.dependencyDescriptorRtpHeaderExtensionUrl));return new o(e.join(o.CRLF)+o.CRLF)}withRtpHeaderExtension(e,t){let i=e?e.getRtpHeaderExtensionId(t):-1,n=-1===i?this.getUniqueRtpHeaderExtensionId(o.splitLines(this.sdp)):i,r=o.splitSections(this.sdp),s=[];for(let e of r){if(/^m=video/.test(e)&&-1===o.getRtpHeaderExtensionIdInSection(e,t)){let i=o.splitLines(e),r=[];if(-1===n||this.hasRtpHeaderExtensionId(n)){s.push(e);continue}for(let e of i)if(r.push(e),/^a=sendrecv/.test(e.trim())){let e="a=extmap:"+n+" "+t;r.push(e)}e=r.join(o.CRLF)+o.CRLF}else if(-1!==i&&/^m=video/.test(e)&&o.getRtpHeaderExtensionIdInSection(e,t)!==i){let n=o.splitLines(e),r=[];for(let e of n){if(/^a=extmap:/.test(e.trim())&&e.split("a=extmap:")[1].split(" ")[1]===t){if(!this.hasRtpHeaderExtensionId(i)){let e="a=extmap:"+i+" "+t;r.push(e)}continue}r.push(e)}e=r.join(o.CRLF)+o.CRLF}s.push(e)}return new o(s.join(""))}ssrcForVideoSendingSection(){let e=this.sdp,t=o.splitSections(e);if(t.length<2)return"";let i=o.findActiveCameraSection(t);if(-1===i)return"";let n=o.matchPrefix(t[i],"a=ssrc-group:FID ");if(n.length<1)return"";let[r]=o.extractSSRCsFromFIDGroupLine(n[0]).split(" ").map(e=>parseInt(e,10));return r.toString()}videoSendSectionHasDifferentSSRC(e){let t=this.ssrcForVideoSendingSection(),i=e.ssrcForVideoSendingSection();return""!==t&&""!==i&&parseInt(t,10)!==parseInt(i,10)}removeH264SupportFromSendSection(){let e=this.sdp,t=o.splitSections(e),i=o.findActiveCameraSection(t);if(-1===i)return new o(this.sdp);let n=t[i],r=o.splitLines(n),s=[],a=new Map;r.forEach(e=>{if(/^a=rtpmap:/.test(e)){let t=/^a=rtpmap:([0-9]+)\s/.exec(e);t&&e.toLowerCase().includes("h264")&&s.push(parseInt(t[1],10))}if(/^a=fmtp:/.test(e)){let t=/^a=fmtp:([0-9]+) apt=([0-9]+)/.exec(e);if(t&&3===t.length){let e=parseInt(t[1],10),i=parseInt(t[2],10);a.has(i)?a.get(i).push(e):a.set(i,[e])}}});let d=new Set;for(let e of s){d.add(e);let t=a.get(e);if(t)for(let e of t)d.add(e)}if(s.length>0){let e=r[0].split(" ");r[0]=e.filter(e=>!d.has(parseInt(e))).join(" ")}let l=r.filter(e=>{if(!e.includes("rtpmap")&&!e.includes("rtcp-fb")&&!e.includes("fmtp"))return!0;for(let t of d)if(e.includes(t.toString()))return!1;return!0});return t[i]=l.join(o.CRLF)+o.CRLF,new o(t.join(""))}mediaSections(){let e=o.splitSections(this.sdp);if(e.length<2)return[];let t=[];for(let i=1;i<e.length;i++){let n=new s.default;for(let t of o.splitLines(e[i])){let e=o.mediaType(t);if(void 0!==e){n.mediaType=e;continue}let i=o.direction(t);if(void 0!==i){n.direction=i;continue}let r=o.mid(t);if(void 0!==r){n.mid=r;continue}}t.push(n)}return t}static getRtpHeaderExtensionIdInSection(e,t){for(let i of o.splitLines(e))if(/^a=extmap:/.test(i.trim())){let e=i.split("a=extmap:")[1].split(" "),n=+e[0];if(e[1]===t)return n}return -1}getRtpHeaderExtensionId(e){for(let t of o.splitSections(this.sdp))if(/^m=video/.test(t)){let i=o.getRtpHeaderExtensionIdInSection(t,e);if(-1!==i)return i}return -1}hasRtpHeaderExtensionId(e){for(let t of o.splitLines(this.sdp))if(/^a=extmap:/.test(t.trim())&&+t.split("a=extmap:")[1].split(" ")[0]===e)return!0;return!1}withVideoSendCodecPreferences(e){let t=this.sdp,i=o.splitSections(t),n=o.findActiveCameraSection(i);return -1===n?new o(this.sdp):(i[n]=this.sectionWithCodecPreferences(i[n],e),new o(i.join("")))}sectionWithCodecPreferences(e,t){let i=new Map,n=o.splitLines(e);
17n.forEach(e=>{if(!e.startsWith("a=rtpmap:"))return;let r=/^a=rtpmap:(\d+)\s/.exec(e);if(!r)return;let s=r[1];for(let r of t){if(!e.includes(`${r.codecName}/${r.codecCapability.clockRate}`))continue;let t=!1;if(void 0!==r.codecCapability.sdpFmtpLine){let e=!1;for(let i of n){if(r.fmtpLineMatches(i,parseInt(s))){t=!0;break}e||(e=i.startsWith(`a=fmtp:${s} profile-id=`))}r.equals(a.default.vp9Profile0())&&!e&&(t=!0)}else t=!0;if(t){i.set(s,r);break}}});let r=new Set(i.keys()),s=n[0].split(" ").filter(e=>!r.has(e)),d=Array.from(i.entries()).sort(([e,i],[n,r])=>t.indexOf(i)-t.indexOf(r)).map(([e,t])=>e);return s.splice(3,0,...d),n[0]=s.join(" "),n.join(o.CRLF)+o.CRLF}highestPriorityVideoSendCodec(){let e=this.prioritizedSendVideoCodecCapabilities();return e.length>0?e[0]:void 0}prioritizedSendVideoCodecCapabilities(){let e=this.sdp,t=o.splitSections(e),i=o.findActiveCameraSection(t);if(-1===i)return[];let n=o.splitLines(t[i]),r=n[0].split(" ");return r.length<4?[]:r.slice(3).map(e=>this.videoCodecCapabilityForPayloadType(n,e)).filter(e=>void 0!==e&&["VP8","H264","VP9","AV1"].includes(e.codecName))}videoCodecCapabilityForPayloadType(e,t){let i,n,r;for(let s of e){let e=/^a=rtpmap:([0-9]+)\s/.exec(s);if(e&&e[1]===t){let e=s.split(" ")[1].split("/");e.length>=2&&(i=e[0],n=e[1])}s.startsWith(`a=fmtp:${t} `)&&(r=s.split(" ")[1])}if(void 0!==i)return new a.default(i,{clockRate:parseInt(n),mimeType:`video/${i}`,sdpFmtpLine:r})}getAudioPayloadTypes(){let e=new Map,t=this.sdp,i=o.splitSections(t);return e.set("opus",o.findAudioPayloadType("opus",i)),e.set("red",o.findAudioPayloadType("red",i)),e}static findAudioPayloadType(e,t){let i=RegExp(`a=rtpmap:\\s*(\\d+)\\s+${e}\\/48000`);for(let e of t)if(/^m=audio/.test(e)){let t=i.exec(e);if(null!==t)return Number(t[1])}return 0}withStartingVideoSendBitrate(e){let t=o.splitSections(this.sdp);for(let i=0;i<t.length;i++){let n;if(!/^m=video/.test(t[i]))continue;let r=o.splitLines(t[i]),s=[],a=!1;for(let e of r){/^a=fmtp:\d*/.test(e)&&!/apt=/.test(e)&&(a=!0);let t=e.match(/^a=rtpmap:(\d+)/);t&&(n=t[1])}for(let t of r)if(!/^a=fmtp:\d*/.test(t)||/apt=/.test(t)||/x-google-start-bitrate=/.test(t))s.push(t);else{let i=t+`;x-google-start-bitrate=${e}`;s.push(i)}if(!a&&n){let t=s.findIndex(e=>e.match(/^a=rtpmap:\d+/));-1!==t&&s.splice(t+1,0,`a=fmtp:${n} x-google-start-bitrate=${e}`)}t[i]=s.join(o.CRLF)+o.CRLF}return new o(t.join(""))}}o.CRLF="\r\n",o.rfc7587LowestBitrate=6e3,o.rfc7587HighestBitrate=51e4,o.dependencyDescriptorRtpHeaderExtensionUrl="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension",o.videoLayersAllocationRtpHeaderExtensionUrl="http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00",t.default=o},5774:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.SDPCandidateType=void 0,(n=i||(t.SDPCandidateType=i={})).Host="host",n.ServerReflexive="srflx",n.PeerReflexive="prflx",n.Relay="relay",t.default=i},7458:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},92220:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=i(8283);class r{constructor(e,t){this.codecName=e,this.codecCapability=t}equals(e){return void 0!==e&&this.codecName===e.codecName&&this.codecCapability.mimeType===e.codecCapability.mimeType&&this.codecCapability.clockRate===e.codecCapability.clockRate&&(this.codecCapability.sdpFmtpLine?this.cleanupFmtpLine(this.codecCapability.sdpFmtpLine,this.codecName):"")===(e.codecCapability.sdpFmtpLine?this.cleanupFmtpLine(e.codecCapability.sdpFmtpLine,e.codecName):"")}fmtpLineMatches(e,t){let i=this.codecCapability.sdpFmtpLine;if(!i)return!1;let n=`a=fmtp:${t} `;if(!e.startsWith(n))return!1;let r=e.substring(n.length);return this.cleanupFmtpLine(r,this.codecName)===this.cleanupFmtpLine(i,this.codecName)}cleanupFmtpLine(e,t){let i=e.replace(/;x-google-start-bitrate=\d+/g,"");return"H264"===t&&(i=i.replace(/profile-level-id=([0-9a-f]{4})[0-9a-f]{2}/i,"profile-level-id=$1")),i}static vp8(){return new r("VP8",{clockRate:9e4,mimeType:"video/VP8"})}static h264BaselineProfile(){return new r("H264",{clockRate:9e4,mimeType:"video/H264",sdpFmtpLine:"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f"})}static h264ConstrainedBaselineProfile(){return new r("H264",{clockRate:9e4,mimeType:"video/H264",sdpFmtpLine:"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f"})}static h264MainProfile(){return new r("H264",{clockRate:9e4,mimeType:"video/H264",sdpFmtpLine:"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f"})}static h264HighProfile(){return new r("H264",{clockRate:9e4,mimeType:"video/H264",sdpFmtpLine:"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f"})}static h264ConstrainedHighProfile(){return new r("H264",{clockRate:9e4,mimeType:"video/H264",sdpFmtpLine:"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640c1f"})}static h264(){return r.h264ConstrainedBaselineProfile()}static vp9Profile0(){return new r("VP9",{clockRate:9e4,mimeType:"video/VP9",sdpFmtpLine:"profile-id=0"})}static vp9(){return r.vp9Profile0()}static av1Main(){return new r("AV1",{clockRate:9e4,mimeType:"video/AV1"})}static av1(){return r.av1Main()}static fromSignaled(e){switch(e){case n.SdkVideoCodecCapability.VP8:return r.vp8();case n.SdkVideoCodecCapability.H264_BASELINE_PROFILE:return r.h264BaselineProfile();case n.SdkVideoCodecCapability.H264_CONSTRAINED_BASELINE_PROFILE:return r.h264ConstrainedBaselineProfile();case n.SdkVideoCodecCapability.H264_MAIN_PROFILE:return r.h264MainProfile();case n.SdkVideoCodecCapability.H264_HIGH_PROFILE:return r.h264HighProfile();case n.SdkVideoCodecCapability.H264_CONSTRAINED_HIGH_PROFILE:return r.h264ConstrainedHighProfile();case n.SdkVideoCodecCapability.VP9_PROFILE_0:return r.vp9Profile0();case n.SdkVideoCodecCapability.AV1_MAIN_PROFILE:return r.av1Main();default:return}}}t.default=r},17349:function(e,t,i){"use strict";
17Object.defineProperty(t,"__esModule",{value:!0});let n=i(64534);class r{constructor(e){this.logger=e}compress(e,t){if(t.length>0){let e=Math.min(t.length,r.MAX_DICTIONARY_SIZE);t=t.slice(0,e)}let i={memLevel:r.Z_MEM_LEVEL,dictionary:t};return n.deflateRaw(e,i)}decompress(e,t){if(t.length>0){let e=Math.min(t.length,r.MAX_DICTIONARY_SIZE);t=t.slice(0,e)}let i={to:"string",dictionary:t,chunkSize:4096},s="";try{s=n.inflateRaw(e,i)}catch(e){this.logger.error(`failed to decompress the string with error: [${e}]`)}return s}}r.Z_MEM_LEVEL=9,r.MAX_DICTIONARY_SIZE=31744,t.default=r},13382:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=i(1982),r=i(94433),s=i(4754),a=i(49160);class o{constructor(e){this.logger=e,this.currentState=s.SessionStateControllerState.NotConnected,this.deferredAction=null,this.deferredWork=null}perform(e,t){let i=this.currentState;if(i===s.SessionStateControllerState.NotConnected&&e===n.SessionStateControllerAction.Connect)this.transition(s.SessionStateControllerState.Connecting,e);else if(i===s.SessionStateControllerState.Connecting&&e===n.SessionStateControllerAction.Fail)this.transition(s.SessionStateControllerState.Disconnecting,e);else if(i===s.SessionStateControllerState.Connecting&&e===n.SessionStateControllerAction.FinishConnecting)this.transition(s.SessionStateControllerState.Connected,e);else if(i===s.SessionStateControllerState.Connected&&e===n.SessionStateControllerAction.Disconnect)this.transition(s.SessionStateControllerState.Disconnecting,e);else if(i===s.SessionStateControllerState.Connected&&e===n.SessionStateControllerAction.Reconnect)this.transition(s.SessionStateControllerState.Connecting,e);else if(i===s.SessionStateControllerState.Connected&&e===n.SessionStateControllerAction.Fail)this.transition(s.SessionStateControllerState.Disconnecting,e);else if(i===s.SessionStateControllerState.Connected&&e===n.SessionStateControllerAction.Update)this.transition(s.SessionStateControllerState.Updating,e);else if(i===s.SessionStateControllerState.Updating&&e===n.SessionStateControllerAction.Fail)this.transition(s.SessionStateControllerState.Disconnecting,e);else if(i===s.SessionStateControllerState.Updating&&e===n.SessionStateControllerAction.FinishUpdating)this.transition(s.SessionStateControllerState.Connected,e);else if(i===s.SessionStateControllerState.Disconnecting&&e===n.SessionStateControllerAction.FinishDisconnecting)this.transition(s.SessionStateControllerState.NotConnected,e);else if(this.canDefer(e))return this.logger.info(`deferring transition from ${s.SessionStateControllerState[this.currentState]} with ${n.SessionStateControllerAction[e]}`),this.deferAction(e,t),a.SessionStateControllerTransitionResult.DeferredTransition;else return this.logger.warn(`no transition found from ${s.SessionStateControllerState[this.currentState]} with ${n.SessionStateControllerAction[e]}`),a.SessionStateControllerTransitionResult.NoTransitionAvailable;try{t()}catch(t){return this.logger.error(`error during state ${s.SessionStateControllerState[this.currentState]} with action ${n.SessionStateControllerAction[e]}: ${t}`),this.logger.info(`rolling back transition to ${s.SessionStateControllerState[i]}`),this.currentState=i,a.SessionStateControllerTransitionResult.TransitionFailed}return this.performDeferredAction(),a.SessionStateControllerTransitionResult.Transitioned}state(){return this.currentState}transition(e,t){this.logger.info(`transitioning from ${s.SessionStateControllerState[this.currentState]} to ${s.SessionStateControllerState[e]} with ${n.SessionStateControllerAction[t]}`),this.currentState=e}deferPriority(e){switch(e){case n.SessionStateControllerAction.Disconnect:return r.SessionStateControllerDeferPriority.VeryHigh;case n.SessionStateControllerAction.Fail:return r.SessionStateControllerDeferPriority.High;case n.SessionStateControllerAction.Reconnect:return r.SessionStateControllerDeferPriority.Medium;case n.SessionStateControllerAction.Update:return r.SessionStateControllerDeferPriority.Low;default:return r.SessionStateControllerDeferPriority.DoNotDefer}}deferAction(e,t){null!==this.deferredAction&&this.deferPriority(this.deferredAction)>this.deferPriority(e)||(this.deferredAction=e,this.deferredWork=t)}canDefer(e){return this.deferPriority(e)!==r.SessionStateControllerDeferPriority.DoNotDefer&&(this.currentState===s.SessionStateControllerState.Connecting||this.currentState===s.SessionStateControllerState.Updating)}performDeferredAction(){if(!this.deferredAction)return;let e=this.deferredAction,t=this.deferredWork;this.deferredAction=null,this.deferredWork=null,this.logger.info(`performing deferred action ${n.SessionStateControllerAction[e]}`),this.perform(e,t)!==a.SessionStateControllerTransitionResult.Transitioned&&this.logger.info(`unable to perform deferred action ${n.SessionStateControllerAction[e]} in state ${s.SessionStateControllerState[this.currentState]}`)}}t.default=o},1982:function(e,t){"use strict";var i,n;
17Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerAction=void 0,(n=i||(t.SessionStateControllerAction=i={}))[n.Connect=0]="Connect",n[n.FinishConnecting=1]="FinishConnecting",n[n.Update=2]="Update",n[n.FinishUpdating=3]="FinishUpdating",n[n.Reconnect=4]="Reconnect",n[n.Disconnect=5]="Disconnect",n[n.Fail=6]="Fail",n[n.FinishDisconnecting=7]="FinishDisconnecting",t.default=i},94433:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerDeferPriority=void 0,(n=i||(t.SessionStateControllerDeferPriority=i={}))[n.DoNotDefer=0]="DoNotDefer",n[n.Low=1]="Low",n[n.Medium=2]="Medium",n[n.High=3]="High",n[n.VeryHigh=4]="VeryHigh",t.default=i},4754:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerState=void 0,(n=i||(t.SessionStateControllerState=i={}))[n.NotConnected=0]="NotConnected",n[n.Connecting=1]="Connecting",n[n.Connected=2]="Connected",n[n.Updating=3]="Updating",n[n.Disconnecting=4]="Disconnecting",t.default=i},49160:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerTransitionResult=void 0,(n=i||(t.SessionStateControllerTransitionResult=i={}))[n.Transitioned=0]="Transitioned",n[n.NoTransitionAvailable=1]="NoTransitionAvailable",n[n.DeferredTransition=2]="DeferredTransition",n[n.TransitionFailed=3]="TransitionFailed",t.default=i},51774:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(71474)),a=i(8283),o=i(76477),d=n(i(61492)),l=n(i(52612)),c=n(i(84924)),u=i(16802),h=n(i(37308)),f=n(i(66485));class m{constructor(e,t,i){this.webSocket=e,this.logger=t,this.meetingSessionTimingManager=i,this.closeEventHandler=e=>{this.resetConnection(),this.sendEvent(new h.default(this,f.default.WebSocketClosed,null,e.code,e.reason,e.wasClean)),this.serviceConnectionRequestQueue()},this.observerQueue=new Set,this.connectionRequestQueue=[],this.resetConnection(),this.logger.debug(()=>"signaling client init"),this.audioSessionId=this.generateNewAudioSessionId()}registerObserver(e){this.logger.debug(()=>"registering signaling client observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.debug(()=>"removing signaling client observer"),this.observerQueue.delete(e)}openConnection(e){this.logger.info("adding connection request to queue: "+e.url()),this.connectionRequestQueue.push(e),this.closeConnection()}pingPong(e){this.logger.debug(()=>"sending ping");let t=a.SdkSignalFrame.create();return t.type=a.SdkSignalFrame.Type.PING_PONG,t.pingPong=e,this.sendMessage(t),t.timestampMs}join(e){var t,i,n,s;this.logger.info("sending join");let l=a.SdkJoinFrame.create();l.protocolVersion=2,l.flags=a.SdkJoinFlags.HAS_STREAM_UPDATE;let c=e.browserBehavior||new r.default,h={platformName:c.name(),platformVersion:c.version(),clientSource:d.default.sdkName,chimeSdkVersion:d.default.sdkVersion,clientUtcOffset:(0,o.getFormattedOffset)(new Date().getTimezoneOffset())},f=null===(t=c.deviceName)||void 0===t?void 0:t.call(c),p=null===(i=c.osName)||void 0===i?void 0:i.call(c),g=null===(n=c.osVersion)||void 0===n?void 0:n.call(c);if(f&&(h.deviceModel=f),p&&(h.osName=p),g&&(h.osVersion=g),e.applicationMetadata){let{appName:t,appVersion:i}=e.applicationMetadata;h.appName=t,h.appVersion=i}l.clientDetails=a.SdkClientDetails.create(h),l.audioSessionId=this.audioSessionId,l.wantsCompressedSdp=m.CLIENT_SUPPORTS_COMPRESSION,l.disablePeriodicKeyframeRequestOnContentSender=e.disablePeriodicKeyframeRequestOnContentSender,l.serverSideNetworkAdaption=(0,u.convertServerSideNetworkAdaptionEnumToSignaled)(e.serverSideNetworkAdaption),l.supportedServerSideNetworkAdaptions=e.supportedServerSideNetworkAdaptions.map(u.convertServerSideNetworkAdaptionEnumToSignaled),l.wantsAllTemporalLayersInIndex=e.wantsAllTemporalLayersInIndex;let v=a.SdkSignalFrame.create();v.type=a.SdkSignalFrame.Type.JOIN,v.join=l,this.sendMessage(v),null===(s=this.meetingSessionTimingManager)||void 0===s||s.onJoinSent()}subscribe(e){var t;let i=a.SdkSubscribeFrame.create();if(i.sendStreams=[],i.sdpOffer=e.sdpOffer,e.connectionTypeHasVideo&&(i.receiveStreamIds=e.receiveStreamIds),e.audioHost&&(i.audioCheckin=e.audioCheckin,i.audioHost=e.audioHost,i.audioMuted=e.audioMuted,!e.audioCheckin)){let t=a.SdkStreamDescriptor.create();t.mediaType=a.SdkStreamMediaType.AUDIO,t.trackLabel="AmazonChimeExpressAudio",t.attendeeId=e.attendeeId,t.streamId=1,t.groupId=1,t.framerate=15,t.maxBitrateKbps=600,t.avgBitrateBps=4e5,i.sendStreams.push(t)}if(i.compressedSdpOffer=e.compressedSdpOffer,i.duplex=a.SdkStreamServiceType.RX,e.localVideoEnabled){i.duplex=a.SdkStreamServiceType.DUPLEX;for(let t=0;t<e.videoStreamDescriptions.length;t++){let n=e.videoStreamDescriptions[t].clone();n.attendeeId=e.attendeeId,i.sendStreams.push(n.toStreamDescriptor())}}e.videoSubscriptionConfiguration.length>0&&(i.videoSubscriptionConfiguration=e.videoSubscriptionConfiguration.map(this.convertSignalingClientVideoSubscriptionConfiguration));let n=a.SdkSignalFrame.create();n.type=a.SdkSignalFrame.Type.SUBSCRIBE,n.sub=i,this.sendMessage(n),null===(t=this.meetingSessionTimingManager)||void 0===t||t.onSubscribeSent()}remoteVideoUpdate(e,t){let i=a.SdkRemoteVideoUpdateFrame.create();i.addedOrUpdatedVideoSubscriptions=e.map(this.convertSignalingClientVideoSubscriptionConfiguration),i.removedVideoSubscriptionMids=t;let n=a.SdkSignalFrame.create();n.type=a.SdkSignalFrame.Type.REMOTE_VIDEO_UPDATE,n.remoteVideoUpdate=i,this.sendMessage(n)}convertSignalingClientVideoSubscriptionConfiguration(e){let t=new a.SdkVideoSubscriptionConfiguration;switch(t.mid=e.mid,t.attendeeId=e.attendeeId,t.streamId=e.streamId,t.groupId=e.groupId,t.priority=e.priority,t.targetBitrateKbps=e.targetBitrateKbps,e.qualityAdaptationPreference){case l.default.Balanced:t.qualityAdaptationPreference=a.SdkVideoQualityAdaptationPreference.BALANCED;break;case l.default.MaintainFramerate:t.qualityAdaptationPreference=a.SdkVideoQualityAdaptationPreference.MAINTAIN_FRAMERATE;break;case l.default.MaintainResolution:t.qualityAdaptationPreference=a.SdkVideoQualityAdaptationPreference.MAINTAIN_RESOLUTION;break;default:t.qualityAdaptationPreference=a.SdkVideoQualityAdaptationPreference.BALANCED}return t}leave(){let e=a.SdkSignalFrame.create();e.type=a.SdkSignalFrame.Type.LEAVE,e.leave=a.SdkLeaveFrame.create(),this.sendMessage(e),this.logger.debug(()=>"sent leave")}sendClientMetrics(e){let t=a.SdkSignalFrame.create();t.type=a.SdkSignalFrame.Type.CLIENT_METRIC,t.clientMetric=e,this.sendMessage(t)}sendDataMessage(e){let t=a.SdkSignalFrame.create();t.type=a.SdkSignalFrame.Type.DATA_MESSAGE,t.dataMessage=e,this.sendMessage(t)}closeConnection(){var e,t;if(this.webSocket.readyState()!==c.default.None&&this.webSocket.readyState()!==c.default.Closed){this.isClosing=!0,this.sendEvent(new h.default(this,f.default.WebSocketClosing,null));let i=new s.default(m.CLOSE_EVENT_TIMEOUT_MS),n=e=>{var t,r;null===(r=(t=this.webSocket).removeEventListener)||void 0===r||r.call(t,"close",n),i.stop(),this.closeEventHandler(e)};null===(t=(e=this.webSocket).removeEventListener)||void 0===t||t.call(e,"close",this.closeEventHandler),this.webSocket.addEventListener("close",n),i.start(()=>{n(new CloseEvent("close",{wasClean:!1,code:1005,reason:"",bubbles:!1}))}),this.webSocket.close()}else this.logger.info("no existing signaling client connection needs closing"),this.serviceConnectionRequestQueue()}ready(){return this.webSocket.readyState()===c.default.Open&&!this.isClosing&&this.wasOpened}mute(e){let t=a.SdkSignalFrame.create();t.type=a.SdkSignalFrame.Type.AUDIO_CONTROL;let i=a.SdkAudioControlFrame.create();i.muted=e,t.audioControl=i,this.sendMessage(t)}pause(e){let t=a.SdkSignalFrame.create();t.type=a.SdkSignalFrame.Type.PAUSE,t.pause=a.SdkPauseResumeFrame.create(),t.pause.streamIds=e,this.sendMessage(t)}resume(e){let t=a.SdkSignalFrame.create();t.type=a.SdkSignalFrame.Type.RESUME,t.pause=a.SdkPauseResumeFrame.create(),t.pause.streamIds=e,this.sendMessage(t)}resetConnection(){this.webSocket.destroy(),this.wasOpened=!1}sendMessage(e){e.timestampMs=Date.now(),this.logger.debug(()=>`sending: ${JSON.stringify(e)}`);let t=this.prependWithFrameTypeRTC(a.SdkSignalFrame.encode(e).finish());
17if(this.ready()){if(!this.webSocket.send(t)){this.sendEvent(new h.default(this,f.default.WebSocketSendMessageFailure,null));return}this.sendEvent(new h.default(this,f.default.WebSocketSentMessage,null))}else this.sendEvent(new h.default(this,f.default.WebSocketSkippedMessage,null))}receiveMessage(e){let t;try{t=a.SdkSignalFrame.decode(e)}catch(t){this.logger.info(`failed to decode: ${e}`),this.sendEvent(new h.default(this,f.default.ProtocolDecodeFailure,null));return}this.logger.debug(()=>`received: ${JSON.stringify(t)}`),this.webSocket.readyState()===c.default.Open?this.sendEvent(new h.default(this,f.default.ReceivedSignalFrame,t)):this.logger.info(`skipping notification of message since WebSocket is not open: ${JSON.stringify(t)}`)}stripFrameTypeRTC(e){let t=e[0];return t!==m.FRAME_TYPE_RTC&&2!==t&&this.logger.warn(`expected FrameTypeRTC for message but got ${t}`),e.slice(1)}prependWithFrameTypeRTC(e){let t=new Uint8Array(e.length+1);return t[0]=m.FRAME_TYPE_RTC,t.set(e,1),t}serviceConnectionRequestQueue(){if(0===this.connectionRequestQueue.length){this.logger.info("no connection requests to service");return}let e=this.connectionRequestQueue.shift();this.logger.info(`opening connection to ${e.url()}`),this.isClosing=!1,this.webSocket.create(e.url(),e.protocols()),this.setUpEventListeners(),this.sendEvent(new h.default(this,f.default.WebSocketConnecting,null))}sendEvent(e){switch(e.type){case f.default.WebSocketMessage:case f.default.ReceivedSignalFrame:case f.default.WebSocketSentMessage:this.logger.debug(()=>`notifying event: ${f.default[e.type]}`);break;case f.default.WebSocketSkippedMessage:this.logger.debug(()=>`notifying event: ${f.default[e.type]}, websocket state=${c.default[this.webSocket.readyState()]}`);break;case f.default.WebSocketClosed:this.logger.info(`Notifying event: ${f.default[e.type]}, 
18              code: ${e.closeCode} reason: "${e.closeReason}" wasClean ${e.wasClean}`);break;default:this.logger.info(`notifying event: ${f.default[e.type]}`)}for(let t of this.observerQueue)t.handleSignalingClientEvent(e)}setUpEventListeners(){this.webSocket.addEventListener("open",()=>{var e;this.wasOpened=!0,this.sendEvent(new h.default(this,f.default.WebSocketOpen,null)),null===(e=this.meetingSessionTimingManager)||void 0===e||e.onTransportConnected()}),this.webSocket.addEventListener("message",e=>{this.sendEvent(new h.default(this,f.default.WebSocketMessage,null)),this.receiveMessage(this.stripFrameTypeRTC(new Uint8Array(e.data)))}),this.webSocket.addEventListener("close",this.closeEventHandler),this.webSocket.addEventListener("error",()=>{if(this.isClosing&&!this.wasOpened){this.logger.info("Signaling WebSocket ignoring error closing while connecting");return}this.wasOpened?(this.logger.error("Signaling WebSocket received error while connected"),this.sendEvent(new h.default(this,f.default.WebSocketError,null))):(this.logger.error("Signaling WebSocket received error while connecting"),this.sendEvent(new h.default(this,f.default.WebSocketFailed,null)))})}generateNewAudioSessionId(){let e=new Uint32Array(1);return(0,o.getRandomValues)(e),e[0]}sendMeetingSessionTiming(e){let t=a.SdkMeetingSessionTimingFrame.create();t.signaling=e.signaling.map(e=>a.SdkMeetingSessionSignalingTiming.create({startMs:e.startMs,joinSentMs:e.joinSentMs,joinAckReceivedMs:e.j
18oinAckReceivedMs,transportConnectedMs:e.transportConnectedMs,createOfferMs:e.createOfferMs,setLocalDescriptionMs:e.setLocalDescriptionMs,setRemoteDescriptionMs:e.setRemoteDescriptionMs,iceGatheringStartMs:e.iceGatheringStartMs,iceGatheringCompleteMs:e.iceGatheringCompleteMs,iceConnectedMs:e.iceConnectedMs,subscribeSentMs:e.subscribeSentMs,subscribeAckMs:e.subscribeAckMs,timedOut:e.timedOut})),t.remoteAudio=e.remoteAudio.map(e=>a.SdkMeetingSessionRemoteAudioTiming.create({addedMs:e.addedMs,firstPacketReceivedMs:e.firstPacketReceivedMs,firstFrameRenderedMs:e.firstFrameRenderedMs,timedOut:e.timedOut,removed:e.removed})),t.localAudio=e.localAudio.map(e=>a.SdkMeetingSessionLocalAudioTiming.create({addedMs:e.addedMs,firstFrameCapturedMs:e.firstFrameCapturedMs,firstPacketSentMs:e.firstPacketSentMs,timedOut:e.timedOut,removed:e.removed})),t.localVideo=e.localVideo.map(e=>a.SdkMeetingSessionLocalVideoTiming.create({addedMs:e.addedMs,firstFrameCapturedMs:e.firstFrameCapturedMs,firstFrameSentMs:e.firstFrameSentMs,timedOut:e.timedOut,removed:e.removed})),t.remoteVideos=e.remoteVideos.map(e=>a.SdkMeetingSessionRemoteVideoTiming.create({groupId:e.groupId,addedMs:e.addedMs,firstPacketReceivedMs:e.firstPacketReceivedMs,firstFrameRenderedMs:e.firstFrameRenderedMs,timedOut:e.timedOut,removed:e.removed}));let i=a.SdkSignalFrame.create();i.type=a.SdkSignalFrame.Type.MEETING_SESSION_TIMING,i.meetingSessionTiming=t,this.sendMessage(i)}promoteToPrimaryMeeting(e){let t=a.SdkMeetingSessionCredentials.create();t.attendeeId=e.attendeeId,t.externalUserId=e.externalUserId,t.joinToken=e.joinToken;let i=a.SdkPrimaryMeetingJoinFrame.create();i.credentials=t;let n=a.SdkSignalFrame.create();n.type=a.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN,n.primaryMeetingJoin=i,this.sendMessage(n)}demoteFromPrimaryMeeting(){let e=a.SdkPrimaryMeetingLeaveFrame.create(),t=a.SdkSignalFrame.create();t.type=a.SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE,t.primaryMeetingLeave=e,this.sendMessage(t)}}m.FRAME_TYPE_RTC=5,m.CLOSE_EVENT_TIMEOUT_MS=2e3,m.CLIENT_SUPPORTS_COMPRESSION=!0,t.default=m},16802:function(e,t,i){"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.ServerSideNetworkAdaption=void 0,t.serverSideNetworkAdaptionIsNoneOrDefault=function(e){return e===n.None||e===n.Default},t.convertServerSideNetworkAdaptionEnumFromSignaled=function(e){switch(e){case s.SdkServerSideNetworkAdaption.DEFAULT:return n.Default;case s.SdkServerSideNetworkAdaption.NONE:return n.None;case s.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING:return n.BandwidthProbing;case s.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION:return n.BandwidthProbingAndRemoteVideoQualityAdaption}},t.convertServerSideNetworkAdaptionEnumToSignaled=function(e){switch(e){case n.Default:return s.SdkServerSideNetworkAdaption.DEFAULT;case n.None:return s.SdkServerSideNetworkAdaption.NONE;case n.BandwidthProbing:return s.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING;case n.BandwidthProbingAndRemoteVideoQualityAdaption:return s.SdkServerSideNetworkAdaption.BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION}};let s=i(8283);(r=n||(t.ServerSideNetworkAdaption=n={}))[r.Default=0]="Default",r[r.None=1]="None",r[r.BandwidthProbing=2]="BandwidthProbing",r[r.BandwidthProbingAndRemoteVideoQualityAdaption=3]="BandwidthProbingAndRemoteVideoQualityAdaption",t.default=n},35848:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t){this.signalingURL=e,this.joinToken=t}url(){return this.signalingURL+"?X-Chime-Control-Protocol-Version=3&X-Amzn-Chime-Send-Close-On-Error=1"}protocols(){return["_aws_wt_session",this.joinToken]}}t.default=i},37308:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(66485));class s{constructor(e,t,i,n,r,s){this.client=e,this.type=t,this.message=i,this.closeCode=n,this.closeReason=r,this.wasClean=s,this.timestampMs=Date.now()}isConnectionTerminated(){switch(this.type){case r.default.WebSocketFailed:case r.default.WebSocketError:case r.default.WebSocketClosing:case r.default.WebSocketClosed:return!0;default:return!1}}}t.default=s},66485:function(e,t){"use strict";var i,n;
18Object.defineProperty(t,"__esModule",{value:!0}),t.SignalingClientEventType=void 0,(n=i||(t.SignalingClientEventType=i={}))[n.WebSocketConnecting=0]="WebSocketConnecting",n[n.WebSocketOpen=1]="WebSocketOpen",n[n.WebSocketError=2]="WebSocketError",n[n.WebSocketClosing=3]="WebSocketClosing",n[n.WebSocketClosed=4]="WebSocketClosed",n[n.WebSocketFailed=5]="WebSocketFailed",n[n.WebSocketMessage=6]="WebSocketMessage",n[n.WebSocketSendMessageFailure=7]="WebSocketSendMessageFailure",n[n.WebSocketSentMessage=8]="WebSocketSentMessage",n[n.ProtocolDecodeFailure=9]="ProtocolDecodeFailure",n[n.ReceivedSignalFrame=10]="ReceivedSignalFrame",n[n.WebSocketSkippedMessage=11]="WebSocketSkippedMessage",t.default=i},16387:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(16802));class s{constructor(e){this.applicationMetadata=e,this.serverSideNetworkAdaption=r.default.Default,this.supportedServerSideNetworkAdaptions=[],this.wantsAllTemporalLayersInIndex=!1,this.disablePeriodicKeyframeRequestOnContentSender=!1}}t.default=s},37928:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n,r,s,a,o,d,l){this.attendeeId=e,this.sdpOffer=t,this.audioHost=i,this.audioMuted=n,this.audioCheckin=r,this.receiveStreamIds=s,this.localVideoEnabled=a,this.videoStreamDescriptions=o,this.connectionTypeHasVideo=d,this.compressedSdpOffer=l,this.videoSubscriptionConfiguration=[]}}t.default=i},83065:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{equals(e){return void 0!==e&&this.mid===e.mid&&this.attendeeId===e.attendeeId&&this.streamId===e.streamId&&this.groupId===e.groupId&&this.priority===e.priority&&this.targetBitrateKbps===e.targetBitrateKbps&&this.qualityAdaptationPreference===e.qualityAdaptationPreference}}t.default=i},71148:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(64265),s=i(65254),a=n(i(61492));class o{constructor(e){this.chimeClient=e}makeTwoDigits(e){return e>9?e.toString():"0"+e.toString()}hmac(e,t){let i=new r.Sha256(t);return i.update(e),i.digest()}getDateTimeString(){let e=new Date;return e.getUTCFullYear()+this.makeTwoDigits(e.getUTCMonth()+1)+this.makeTwoDigits(e.getUTCDate())+"T"+this.makeTwoDigits(e.getUTCHours())+this.makeTwoDigits(e.getUTCMinutes())+this.makeTwoDigits(e.getUTCSeconds())+"Z"}getDateString(e){return e.substring(0,e.indexOf("T"))}async getSignatureKey(e,t,i,n){let r=await this.hmac(t,"AWS4"+e),s=await this.hmac(i,r),a=await this.hmac(n,s);return await this.hmac("aws4_request",a)}async signURL(e,t,i,n,r,o,d){let l;let c=this.getDateTimeString(),u=this.getDateString(c),h="";h=this.chimeClient.config.region instanceof Function?await this.chimeClient.config.region():this.chimeClient.config.region;let f="host:"+n.toLowerCase()+"\n",m=u+"/"+h+"/"+i+"/aws4_request";l=this.chimeClient.config.credentials instanceof Function?await this.chimeClient.config.credentials():this.chimeClient.config.credentials;let p=new Map;p.set("X-Amz-Algorithm",["AWS4-HMAC-SHA256"]),p.set("X-Amz-Credential",[encodeURIComponent(l.accessKeyId+"/"+m)]),p.set("X-Amz-Date",[c]),p.set("X-Amz-Expires",["10"]),p.set("X-Amz-SignedHeaders",["host"]),l.sessionToken&&p.set("X-Amz-Security-Token",[encodeURIComponent(l.sessionToken)]),p.set(a.default.X_AMZN_VERSION,[encodeURIComponent(a.default.sdkVersion)]),p.set(a.default.X_AMZN_USER_AGENT,[encodeURIComponent(a.default.sdkUserAgentLowResolution)]),null==d||d.forEach((e,t)=>{let i=encodeURIComponent(t);e.sort().forEach(e=>{p.has(i)||p.set(i,[]),p.get(i).push(encodeURIComponent(e))})});let g="";(p=new Map([...p.entries()].sort())).forEach((e,t)=>{e.forEach(e=>{g.length&&(g+="&"),g+=t+"="+e})});let v=e+"\n"+r+"\n"+g+"\n"+f+"\nhost\n"+(0,s.toHex)(await this.hmac(o)),b="AWS4-HMAC-SHA256\n"+c+"\n"+u+"/"+h+"/"+i+"/aws4_request\n"+(0,s.toHex)(await this.hmac(v)),S=await this.get
18SignatureKey(l.secretAccessKey,u,h,i),y=(0,s.toHex)(await this.hmac(b,S));return t+"://"+n+r+"?"+g+"&X-Amz-Signature="+y}}t.default=o},92964:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.SimulcastLayers=void 0,(n=i||(t.SimulcastLayers=i={}))[n.Low=0]="Low",n[n.LowAndMedium=1]="LowAndMedium",n[n.LowAndHigh=2]="LowAndHigh",n[n.Medium=3]="Medium",n[n.MediumAndHigh=4]="MediumAndHigh",n[n.High=5]="High",t.default=i},51417:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.AudioLogEvent=void 0,(n=i||(t.AudioLogEvent=i={}))[n.DeviceChanged=0]="DeviceChanged",n[n.MutedLocal=1]="MutedLocal",n[n.UnmutedLocal=2]="UnmutedLocal",n[n.Connected=3]="Connected",n[n.ConnectFailed=4]="ConnectFailed",n[n.RedmicStartLoss=5]="RedmicStartLoss",n[n.RedmicEndLoss=6]="RedmicEndLoss",t.default=i},96846:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t=i.DEFAULT_SAMPLE_INTERVAL_MS){this.logger=e,this.sampleIntervalMs=t,this.observer=null,this.latestState=null}async start(){if(this.observer)return;let e=this.getPressureObserverCtor();if(!e){this.logger.debug(()=>"PressureObserver is not available; CPU pressure metric disabled");return}try{this.observer=new e(e=>{for(let t of e)"cpu"===t.source&&(this.latestState=t.state)}),await this.observer.observe("cpu",{sampleInterval:this.sampleIntervalMs})}catch(e){this.logger.warn(`Failed to observe CPU pressure: ${e&&e.message}`),this.observer=null}}stop(){if(this.observer){try{this.observer.disconnect()}catch(e){this.logger.warn(`PressureObserver disconnect failed: ${e&&e.message}`)}this.observer=null,this.latestState=null}}currentState(){return this.latestState}getPressureObserverCtor(){if("undefined"==typeof globalThis)return null;let e=globalThis.PressureObserver;return"function"==typeof e?e:null}}i.DEFAULT_SAMPLE_INTERVAL_MS=1e3,t.default=i},14162:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(14388)),s=n(i(87911)),a=n(i(40372)),o=n(i(55728)),d=n(i(11566)),l=n(i(29641)),c=n(i(29951)),u=n(i(68414)),h=i(8283),f=i(24670),m=n(i(51417)),p=n(i(96846)),g=n(i(77769)),v=i(98846);class b{constructor(e,t,i=b.INTERVAL_MS){this.audioVideoController=e,this.logger=t,this.interval=i,this.intervalScheduler=null,this.redRecoveryMetricReport=new o.default,this.lastRedRecoveryMetricReportConsumedTimestampMs=0,this.videoCodecDegradationHighEncodeCpuCount=0,this.videoCodecDegradationEncodeFailureCount=0,this.videoCodecDegradationConcurrentSendersCount=0,this.videoPipelineFrameRate=0,this.videoProcessors=[],this.backgroundSegmentationMetrics=[],this.backgroundSegmentationProcessorMetric=null,this.resolutionMap=new Map,this.remoteRenderFpsMap=new Map,this.encodedTransformMediaMetrics=null,this.encodedTransformMediaMetricsTimestamp=0,this.computePressureMonitor=null,this.metricsAddTime=(e,t,i)=>{},this.metricsLogEvent=(e,t)=>{}}toAttribute(e){return this.toSuffix(e).substring(1)}toSuffix(e){return e.toLowerCase()===e?`_${e}`:e.toUpperCase()===e?`_${e.toLowerCase()}`:e.replace(/([A-Z][a-z]+)/g,function(e){return`_${e}`}).replace(/([A-Z][A-Z]+)/g,function(e){return`_${e}`}).toLowerCase()}logLatency(e,t,i){let n=this.toSuffix(e);this.logEventTime("meeting"+n,t,i)}logStateTimeout(e,t){let i=this.toSuffix(e);this.logEvent("meeting_session_state_timeout",{...t,state:`state${i}`})}logAudioEvent(e,t){let i="audio"+this.toSuffix(m.default[e]);this.logEvent(i,t)}logVideoEvent(e,t){let i="video"+this.toSuffix(g.default[e]);this.logEvent(i,t)}logEventTime(e,t,i={}){let n={...i,call_id:this.audioVideoController.configuration.meetingId,client_type:b.CLIENT_TYPE,metric_type:"latency"};this.logger.debug(()=>`[StatsCollector] ${e}: ${JSON.stringify(n)}`),this.metricsAddTime(e,t,n)}logMeetingSessionStatus(e){let t=`${e.statusCode()}`;this.logEvent(t);let i={status:t,status_code:`${e.statusCode()}`};this.logEvent("meeting_session_status",i),e.isTerminal()&&this.logEvent("meeting_session_stopped",i),e.isAudioConnectionFailure()&&this.logEvent("meeting_session_audio_failed",i),e.isFailure()&&this.logEvent("meeting_session_failed",i)}logLifecycleEvent(e,t){let i={lifecycle_event:`lifecycle${this.toSuffix(l.default[e])}`,lifecycle_event_code:`${e}`,lifecycle_event_condition:`condition${this.toSuffix(c.default[t])}`,lifecycle_event_condition_code:`${t}`};this.logEvent("meeting_session_lifecycle",i)}logEvent(e,t={}){let i={...t,call_id:this.audioVideoController.configuration.meetingId,client_type:b.CLIENT_TYPE};this.logger.debug(()=>`[StatsCollector] ${e}: ${JSON.stringify(i)}`),this.metricsLogEvent(e,i)}start(e,t){return!this.intervalScheduler&&(this.logger.info("Starting StatsCollector"),this.signalingClient=e,this.videoStreamIndex=t,this.clientMetricReport=new r.default(this.logger,this.videoStreamIndex,this.audioVideoController.configuration.credentials.attendeeId),this.intervalScheduler
18=new u.default(this.interval),this.intervalScheduler.start(async()=>{await this.getStatsWrapper()}),this.computePressureMonitor=new p.default(this.logger,this.interval),this.computePressureMonitor.start(),!0)}stop(){this.logger.info("Stopping StatsCollector"),this.intervalScheduler&&this.intervalScheduler.stop(),this.intervalScheduler=null,this.computePressureMonitor&&(this.computePressureMonitor.stop(),this.computePressureMonitor=null)}videoTileResolutionDidChange(e,t,i){this.resolutionMap.set(e,{width:t,height:i})}videoTileUnbound(e,t){this.resolutionMap.delete(e),void 0!==t&&this.remoteRenderFpsMap.delete(t)}videoTileRenderMetricsDidReceive(e,t){0!==e&&this.remoteRenderFpsMap.set(e,t.fps)}updateMetricValues(e,t){let i;let n=t?this.clientMetricReport.streamMetricReports[Number(e.ssrc)]:this.clientMetricReport.globalMetricReport;if(t){let t=n.mediaType,r=n.direction;i=this.clientMetricReport.getMetricMap(t,r),t===a.default.VIDEO&&r===s.default.DOWNSTREAM&&this.addRenderResolutionToVideoDownstreamMetrics(n,e.ssrc)}else i=this.clientMetricReport.getMetricMap();for(let t in e)t in i&&("number"==typeof e[t]?(n.previousMetrics[t]=n.currentMetrics[t],n.currentMetrics[t]=e[t]):"string"==typeof e[t]?n.currentStringMetrics[t]=e[t]:"object"==typeof e[t]?(n.previousObjectMetrics[t]=void 0===n.currentObjectMetrics[t]?e[t]:n.currentObjectMetrics[t],n.currentObjectMetrics[t]=e[t]):this.logger.error(`Unknown metric value type ${typeof e[t]} for metric ${t}`))}processRawMetricReports(e){this.clientMetricReport.currentSsrcs={};let t=Date.now();for(let t of e){if(this.isVideoSourceMetricReport(t))continue;let e=this.isStreamRawMetricReport(t);if(e){let e=this.clientMetricReport.streamMetricReports[Number(t.ssrc)];if(e)e.mediaType===a.default.VIDEO&&e.direction===s.default.UPSTREAM?e.streamId=this.videoStreamIndex.sendVideoStreamIdFromRid(t.rid):e.streamId=this.videoStreamIndex.streamIdForSSRC(Number(t.ssrc));else{let e=new d.default;e.mediaType=this.getMediaType(t),e.direction=this.getDirectionType(t),e.mediaType===a.default.VIDEO&&e.direction===s.default.UPSTREAM?e.streamId=this.videoStreamIndex.sendVideoStreamIdFromRid(t.rid):this.videoStreamIndex.allStreams().empty()||(e.streamId=this.videoStreamIndex.streamIdForSSRC(Number(t.ssrc)),void 0!==this.videoStreamIndex.groupIdForSSRC&&(e.groupId=this.videoStreamIndex.groupIdForSSRC(Number(t.ssrc)))),this.clientMetricReport.streamMetricReports[Number(t.ssrc)]=e}this.clientMetricReport.currentSsrcs[Number(t.ssrc)]=1}this.updateMetricValues(t,e)}this.clientMetricReport.removeDestroyedSsrcs(),this.clientMetricReport.previousTimestampMs=this.clientMetricReport.currentTimestampMs,this.clientMetricReport.currentTimestampMs=t,this.clientMetricReport.print()}addStreamMetricDimensionFrames(e,t){let i=this.clientMetricReport.getStreamDimensionMap();for(let n in t.currentStringMetrics)if(n in i){let r=h.SdkStreamDimension.create();r.type=i[n];let s=h.SdkDimensionValue.create();s.stringValue=t.currentStringMetrics[n],r.value=s,e.dimensions.push(r)}}addMetricFrame(e,t,i,n){let r=i.type,s=i.transform,a=i.source,o=t.streamMetricFrames.length,d=t.streamMetricFrames[o-1];if(r){let i=h.SdkMetric.create();i.type=r,i.value=s(a||e,n),n?d.metrics.push(i):t.globalMetrics.push(i)}}addGlobalMetricsToProtobuf(e){let t=this.clientMetricReport.getMetricMap();for(let i in this.clientMetricReport.globalMetricReport.currentMetrics)this.addMetricFrame(i,e,t[i]);this.maybeAddCpuPressureMetric(e)}maybeAddCpuPressureMetric(e){let t=this.computePressureMonitor.currentState();if(null===t)return;let i=h.SdkMetric.create();i.type=h.SdkMetric.Type.CPU_PRESSURE_STATE,i.value=b.CPU_PRESSURE_STATE_VALUE[t],e.globalMetrics.push(i)}addStreamMetricsToProtobuf(e){for(let t in this.clientMetricReport.streamMetricReports){let i=this.clientMetricReport.streamMetricReports[t],n=h.SdkStreamMetricFrame.create();n.streamId=i.streamId,n.mediaType=i.mediaType===a.default.AUDIO?h.SdkStreamMediaType.AUDIO:h.SdkStreamMediaType.VIDEO,n.metrics=[],this.addStreamMetricDimensionFrames(n,i),e.streamMetricFrames.push(n);let r=this.clientMetricReport.getMetricMap(i.mediaType,i.direction);for(let n in r)this.hasMetricDependenciesInReport(n,i)&&this.addMetricFrame(n,e,r[n],Number(t))}}hasMetricDependenciesInReport(e,t){return"decoderLoss"===e&&void 0!==t.currentMetrics.concealedSamples&&void 0!==t.currentMetrics.totalSamplesReceived||"jitterBufferMs"===e&&void 0!==t.currentMetrics.jitterBufferDelay&&void 0!==t.currentMetrics.jitterBufferEmittedCount||e in t.currentMetrics||e in t.currentStringMetrics||e in t.currentObjectMetrics}makeClientMetricProtobuf(){let e=h.SdkClientMetricFrame.create();return e.globalMetrics=[],e.streamMetricFrames=[],this.addGlobalMetricsToProtobuf(e),this.addStreamMetricsToProtobuf(e),e}addBgSegProcessorMetrics(e,t){if(!this.backgroundSegmentationProcessorMetric)return;let i=this.backgroundSegmentationProcessorMetric,n={kind:"video",type:"outbound-rtp",ssrc:t,timestamp:Date.now(),videoBgSegSegmentationDurationMs:i.segmentationDurationMs,videoBgSegEffectRenderDurationMs:i.effectRenderDurationMs,videoBgSegFramesPerSegmentation:i.framesPerSegmentation,videoBgSegCpuUsagePercent:i.estimatedCPUUsagePercentage,videoBgSegErrorCount:i.errorCount,videoBgSegFramesSubmitted:i.framesSubmitted,videoBgSegFramesSegmented:i.framesSegmented};void 0!==i.initializationDurationMs&&(n.videoBgSegInitializationDurationMs=i.initializationDurationMs),void 0!==i.initializationFailure&&(n.videoBgSegInitializationFailure=i.initializationFailure),void 0!==i.modelType&&(n.videoBgSegModelType=i.modelType),void 0!==i.delegateType&&(n.videoBgSegDelegateType=i.delegateType),e.push(n),this.backgroundSegmentationProcessorMetric=null}sendClientMetricProtobuf(e){this.signalingClient.sendClientMetrics(e)}
18isStreamRawMetricReport(e){return["inbound-rtp","inbound-rtp-red","inbound-rtp-transform","outbound-rtp","outbound-rtp-transform","remote-inbound-rtp","remote-outbound-rtp"].includes(e.type)||this.isVideoSourceMetricReport(e)}getMediaType(e){return"audio"===e.kind?a.default.AUDIO:a.default.VIDEO}getDirectionType(e){let{type:t}=e;return"inbound-rtp"===t||"remote-outbound-rtp"===t||"inbound-rtp-red"===t||"inbound-rtp-transform"===t?s.default.DOWNSTREAM:s.default.UPSTREAM}isValidStandardRawMetric(e){return"inbound-rtp"===e.type||"inbound-rtp-red"===e.type||"outbound-rtp"===e.type||"remote-inbound-rtp"===e.type||"remote-outbound-rtp"===e.type||"candidate-pair"===e.type&&"succeeded"===e.state||"media-source"===e.type}isValidSsrc(e){let t=!0;return this.isStreamRawMetricReport(e)&&this.getDirectionType(e)===s.default.DOWNSTREAM&&this.getMediaType(e)===a.default.VIDEO&&(t=this.videoStreamIndex.streamIdForSSRC(Number(e.ssrc))>0),t}isValidRawMetricReport(e){return this.isValidStandardRawMetric(e)&&this.isValidSsrc(e)}filterRawMetricReports(e){let t=[];for(let i of e)this.isValidRawMetricReport(i)&&t.push(i);return t}handleRawMetricReports(e){let t=this.filterRawMetricReports(e);this.logger.debug(()=>`Filtered raw metrics : ${JSON.stringify(t)}`);let i=[];this.maybeAddRedRecoveryMetrics(i),this.maybeAddTransformMetrics(i);let n=this.getVideoUpstreamSsrcFromRawMetricReports(t);null!==n&&(this.addVideoCodecDegradationMetrics(i,n),this.addVideoProcessorMetrics(i,n),this.addBgSegProcessorMetrics(i,n)),this.clientMetricReport.customStatsReports=i,t.push(...i),this.processRawMetricReports(t),this.updateVideoSourceMetrics(t);let r=this.makeClientMetricProtobuf();this.sendClientMetricProtobuf(r),this.audioVideoController.forEachObserver(e=>{f.Maybe.of(e.metricsDidReceive).map(t=>t.bind(e)(this.clientMetricReport.clone()))})}async getStatsWrapper(){if(!this.audioVideoController.rtcPeerConnection)return;let e=[];try{let t=await this.audioVideoController.rtcPeerConnection.getStats();this.clientMetricReport.rtcStatsReport=t,t.forEach(t=>{e.push(t)}),this.handleRawMetricReports(e)}catch(e){this.logger.error(e.message)}}overrideObservableMetric(e,t){this.clientMetricReport.overrideObservableMetric(e,t)}recoveryMetricsDidReceive(e){this.redRecoveryMetricReport=e}encodedTransformMediaMetricsDidReceive(e){this.encodedTransformMediaMetrics=e,this.encodedTransformMediaMetricsTimestamp=Date.now()}maybeAddRedRecoveryMetrics(e){this.redRecoveryMetricReport.currentTimestampMs!==this.lastRedRecoveryMetricReportConsumedTimestampMs&&(e.push({kind:"audio",type:"inbound-rtp-red",ssrc:this.redRecoveryMetricReport.ssrc,timestamp:this.redRecoveryMetricReport.currentTimestampMs,totalAudioPacketsLost:this.redRecoveryMetricReport.totalAudioPacketsLost,totalAudioPacketsExpected:this.redRecoveryMetricReport.totalAudioPacketsExpected,totalAudioPacketsRecoveredRed:this.redRecoveryMetricReport.totalAudioPacketsRecoveredRed,totalAudioPacketsRecoveredFec:this.redRecoveryMetricReport.totalAudioPacketsRecoveredFec}),this.lastRedRecoveryMetricReportConsumedTimestampMs=this.redRecoveryMetricReport.currentTimestampMs)}maybeAddTransformMetrics(e){if(!this.encodedTransformMediaMetrics)return;let t=this.encodedTransformMediaMetricsTimestamp,i=this.encodedTransformMediaMetrics;for(let{source:n,kind:r,type:s,metricKey:a}of[{source:i.audioSendMetrics,kind:"audio",type:"outbound-rtp-transform",metricKey:"audioSentTransformPps"},{source:i.audioReceiveMetrics,kind:"audio",type:"inbound-rtp-transform",metricKey:"audioReceivedTransformPps"},{source:i.videoSendMetrics,kind:"video",type:"outbound-rtp-transform",metricKey:"videoSentTransformPps"},{source:i.videoReceiveMetrics,kind:"video",type:"inbound-rtp-transform",metricKey:"videoReceivedTransformPps"}])for(let i of Object.values(n))e.push({kind:r,type:s,ssrc:i.ssrc,timestamp:t,[a]:i.packetCount})}videoCodecDegradationHighEncodeCpuDidReceive(){this.videoCodecDegradationHighEncodeCpuCount+=1}videoCodecDegradationEncodeFailureDidReceive(){this.videoCodecDegradationEncodeFailureCount+=1}videoCodecDegradationConcurrentSendersDidReceive(){this.videoCodecDegradationConcurrentSendersCount+=1}videoProcessorMetricsDidReceive(e){this.videoPipelineFrameRate=e.frameRate,this.videoProcessors=e.processors}backgroundSegmentationInitializationMetricsDidReceive(e){this.backgroundSegmentationMetrics.length>=b.MAX_BUFFERED_BG_SEG_METRICS&&this.backgroundSegmentationMetrics.shift(),this.backgroundSegmentationMetrics.push(e)}backgroundSegmentationProcessorMetricsDidReceive(e){this.backgroundSegmentationProcessorMetric=e}addVideoCodecDegradationMetrics(e,t){e.push({kind:"video",type:"outbound-rtp",ssrc:t,timestamp:Date.now(),videoCodecDegradationHighEncodeCpu:this.videoCodecDegradationHighEncodeCpuCount,videoCodecDegradationEncodeFailure:this.videoCodecDegradationEncodeFailureCount,videoCodecDegradationConcurrentSenders:this.videoCodecDegradationConcurrentSendersCount}),this.videoCodecDegradationHighEncodeCpuCount=0,this.videoCodecDegradationEncodeFailureCount=0,this.videoCodecDegradationConcurrentSendersCount=0}
18addVideoProcessorMetrics(e,t){var i;if(this.videoProcessors.length>0){for(let i of(e.push({kind:"video",type:"outbound-rtp",ssrc:t,timestamp:Date.now(),videoPipelineFrameRate:this.videoPipelineFrameRate}),this.videoProcessors))e.push({kind:"video",type:"outbound-rtp",ssrc:t,timestamp:Date.now(),videoProcessorAverageInferenceLatency:i.averageProcessLatency,videoProcessorName:i.processorName});this.videoPipelineFrameRate=0,this.videoProcessors=[]}if(this.backgroundSegmentationMetrics.length>0){for(let n of(this.logger.debug(()=>`[StatsCollector] Adding ${this.backgroundSegmentationMetrics.length} background segmentation metrics to customStatsReports`),this.backgroundSegmentationMetrics)){let r=n.initializationStatus;e.push({kind:"video",type:"outbound-rtp",ssrc:t,timestamp:Date.now(),videoBgSegAssetLoadingFailure:r===v.BackgroundSegmentationInitializationStatus.ASSET_LOADING_FAILURE?1:0,videoBgSegAssetLoadingTimeMs:null!==(i=n.assetLoadingTimeMs)&&void 0!==i?i:0,videoBgSegCompatibilityFailure:r===v.BackgroundSegmentationInitializationStatus.COMPATIBILITY_FAILURE?1:0,videoBgSegProcessorCreationFailure:r===v.BackgroundSegmentationInitializationStatus.PROCESSOR_CREATION_FAILURE?1:0})}this.backgroundSegmentationMetrics=[]}}getVideoUpstreamSsrcFromRawMetricReports(e){for(let t of e)if(this.isStreamRawMetricReport(t)&&this.getMediaType(t)===a.default.VIDEO&&this.getDirectionType(t)===s.default.UPSTREAM)return t.ssrc;return null}isVideoSourceMetricReport(e){return"media-source"===e.type&&"video"===e.kind}addRenderResolutionToVideoDownstreamMetrics(e,t){let i=this.videoStreamIndex.streamIdForSSRC(Number(t)),n=this.videoStreamIndex.attendeeIdForStreamId(i);if(void 0===i||""===n){this.logger.warn(`No attendee found for ssrc ${t}`);return}this.resolutionMap.has(n)&&(e.currentMetrics.videoRenderWidth=this.resolutionMap.get(n).width,e.currentMetrics.videoRenderHeight=this.resolutionMap.get(n).height);let r=e.groupId;void 0!==r&&this.remoteRenderFpsMap.has(r)&&(e.currentMetrics.videoRemoteRenderFps=this.remoteRenderFpsMap.get(r))}updateVideoSourceMetrics(e){for(let t of e)if(this.isVideoSourceMetricReport(t)){let e=this.clientMetricReport.getVideoUpstreamSsrcs();if(0===e.length){this.logger.warn("No video upstream ssrcs found");return}for(let i of e)this.clientMetricReport.streamMetricReports[i].currentMetrics.videoInputWidth=t.width,this.clientMetricReport.streamMetricReports[i].currentMetrics.videoInputHeight=t.height}}}b.INTERVAL_MS=1e3,b.CLIENT_TYPE="amazon-chime-sdk-js",b.MAX_BUFFERED_BG_SEG_METRICS=50,b.CPU_PRESSURE_STATE_VALUE={nominal:0,fair:1,serious:2,critical:3},t.default=b},77769:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.VideoLogEvent=void 0,(n=i||(t.VideoLogEvent=i={}))[n.InputAttached=0]="InputAttached",n[n.SendingFailed=1]="SendingFailed",n[n.SendingSuccess=2]="SendingSuccess",t.default=i},87310:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(77769)),s=n(i(99481));class a extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="AttachMediaInputTask"}async run(){let e=this.context.transceiverController;e.setPeer(this.context.peer),e.setupLocalTransceivers();let t=this.context.activeAudioInput;if(t){let i=t.getAudioTracks();this.context.logger.info("attaching audio track to peer connection"),await e.setAudioInput(i.length?i[0]:null)}else await e.setAudioInput(null),this.context.logger.info("no audio track");this.setAudioCodecPreferences();let i=this.context.activeVideoInput;if(i){let t=i.getVideoTracks(),n=t.length?t[0]:null;if(this.context.logger.info("attaching video track to peer connection"),await e.setVideoInput(n),this.context.enableSimulcast&&this.context.videoUplinkBandwidthPolicy){let t=this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();e.setEncodingParameters(t)}n&&this.context.statsCollector.logVideoEvent(r.default.InputAttached,this.context.videoDeviceInformation)}else await e.setVideoInput(null),this.context.logger.info("no video track");this.context.videoSubscriptions=e.updateVideoTransceivers(this.context.videoStreamIndex,this.context.videosToReceive),this.context.videoStreamIndex.subscribeFrameSent()}setAudioCodecPreferences(){if(!(window.RTCRtpTransceiver&&"setCodecPreferences"in window.RTCRtpTransceiver.prototype)){this.context.logger.warn("Setting codec preferences not supported");return}let e=this.context.transceiverController.localAudioTransceiver(),{codecs:t}=RTCRtpSender.getCapabilities("audio");this.context.logger.debug(`Available audio codecs ${JSON.stringify(t,null,4)}`);let i=t.findIndex(e=>"audio/red"===e.mimeType);if(!e){this.context.logger.error("audio transceiver is null");return}if(i>=0){let n=t[i];t.splice(i,1),this.context.enableAudioRedundancy()?(t.unshift(n),this.context.logger.info("audio/red set as preferred codec")):this.context.logger.info("audio/red removed from preferred codec"),e.setCodecPreferences(t);return}this.context.logger.info("audio/red codec not supported")}}t.default=a},99481:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
18dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(77540)),s=n(i(53364));class a{constructor(e){this.logger=e,this.taskName="BaseTask",this.parentTask=null,this.status=s.default.IDLE,this.run=this.baseRun.bind(this,this.run),this.cancel=this.baseCancel.bind(this,this.cancel)}once(...e){return new r.default(this.logger,this,e)}cancel(){}name(){return this.parentTask?`${this.parentTask.name()}/${this.taskName}`:this.taskName}setParent(e){this.parentTask=e}getStatus(){return this.status}logAndThrow(e){throw this.logger.info(e),Error(e)}async baseRun(e){try{let t=Date.now();switch(this.logger.info(`running task ${this.name()}`),this.status){case s.default.RUNNING:this.logAndThrow(`${this.name()} is already running`);case s.default.CANCELED:this.logAndThrow(`${this.name()} was canceled before running`);case s.default.FINISHED:this.logAndThrow(`${this.name()} was already finished`)}this.status=s.default.RUNNING,await e.call(this),this.logger.info(`${this.name()} took ${Math.round(Date.now()-t)} ms`)}catch(e){throw e}finally{this.status!==s.default.CANCELED&&(this.status=s.default.FINISHED)}}baseCancel(e){if(this.status===s.default.CANCELED||this.status===s.default.FINISHED){this.logger.info(`Not canceling ${this.name()}: state is ${this.status}`);return}this.logger.info(`canceling task ${this.name()}`),this.status=s.default.CANCELED,e.call(this)}}t.default=a},94871:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481));class s extends r.default{constructor(e){super(e.logger),this.context=e,this.taskName="CleanRestartedSessionTask"}async run(){this.context.resetConnectionSpecificState()}}t.default=s},32709:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(66485)),s=n(i(99481));class a extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="CleanStoppedSessionTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}async run(){try{this.context.signalingClient.ready()&&(this.context.signalingClient.closeConnection(),await this.receiveWebSocketClosedEvent())}catch(e){throw e}finally{for(let e of this.context.removableObservers)e.removeObserver();this.context.resetConnectionSpecificState(),this.context.statsCollector.stop(),this.context.statsCollector=null,this.context.connectionMonitor.stop(),this.context.connectionMonitor=null,this.context.videoUplinkBandwidthPolicy.setTransceiverController&&this.context.videoUplinkBandwidthPolicy.setTransceiverController(void 0),this.context.videoDownlinkBandwidthPolicy.bindToTileController&&this.context.videoDownlinkBandwidthPolicy.bindToTileController(void 0);let e=this.context.videoTileController.getLocalVideoTile();e&&e.bindVideoStream("",!0,null,null,null,null),this.context.videoTileController.removeAllVideoTiles()}}receiveWebSocketClosedEvent(){return new Promise((e,t)=>{class i{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(Error("CleanStoppedSessionTask got canceled while waiting for the WebSocket closed event"))}handleSignalingClientEvent(t){t.type===r.default.WebSocketClosed&&(this.signalingClient.removeObserver(this),e())}}let n=new i(this.context.signalingClient);this.taskCanceler=n,this.context.signalingClient.registerObserver(n)})}}t.default=a},84710:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481));class s extends r.default{constructor(e){super(e.logger),this.context=e,this.taskName="CreatePeerConnectionTask",this.removeTrackAddedEventListener=null,this.removeTrackRemovedEventListeners={},this.trackEvents=["ended","mute","unmute","isolationchange","overconstrained"],this.removeVideoTrackEventListeners={},this.trackAddedHandler=e=>{let t=e.track;if(this.context.logger.info(`received track event: kind=${t.kind} id=${t.id} label=${t.label}`),e.transceiver&&"inactive"===e.transceiver.currentDirection)return;if(0===e.streams.length){this.context.logger.warn("Track event but no stream");return}let i=e.streams[0];"audio"===t.kind?this.context.audioMixController.bindAudioStream(i):"video"!==t.kind||this.trackIsVideoInput(t)||this.addRemoteVideoTrack(t,i)}}removeObserver(){for(let e in this.removeTrackAddedEventListener&&this.removeTrackAddedEventListener(),this.removeTrackRemovedEventListeners)this.removeTrackRemovedEventListeners[e]()}addPeerConnectionEventLogger(){let e=this.context.peer;e.addEventListener("connectionstatechange",()=>{this.context.logger.info(`peer connection state changed: ${e.connectionState}`)}),e.addEventListener("negotiationneeded",()=>{this.context.logger.info("peer connection negotiation is needed")}),e.addEventListener("icegatheringstatechange",()=>{this.context.logger.info(`peer connection ice gathering state changed: ${e.iceGatheringState}`)}),e.addEventListener("icecandidate",e=>{this.context.logger.info(`peer connection ice candidate: ${e.candidate?e.candidate.candidate:"(null)"}`)}),e.addEventListener("iceconnectionstatechange",()=>{var t;this.context.logger.info(`peer connection ice connection state changed: ${e.iceConnectionState}`),"connected"===e.iceConnectionState&&(null===(t=this.context.meetingSessionTimingManager)||void 0===t||t.onIceConnected())})}async run(){this.context.removableObservers.push(this);let e=this.context.turnCredentials&&this.context.turnCredentials.uris.length>0?{iceServers:[{urls:this.context.turnCredentials.uris,username:this.context.turnCredentials.username,credential:this.context.turnCredentials.password}],iceTransportPolicy:"relay"}:{};e.bundlePolicy=this.context.browserBehavior.requiresBundlePolicy(),e.sdpSemantics="unified-plan",window.RTCRtpScriptTransform||(e.encodedInsertableStreams=this.context.enableAudioRedundancy()),this.context.peer?this.context.logger.info("reusing peer connection"):(this.context.logger.info("creating new peer connection"),this.context.peer=new RTCPeerConnection(e),this.addPeerConnectionEventLogger()),this.removeTrackAddedEventListener=()=>{this.context.peer&&this.context.peer.removeEventListener("track",this.trackAddedHandler),this.removeTrackAddedEventListener=null},this.context.peer.addEventListener("track",this.trackAddedHandler)}trackIsVideoInput(e){return!!this.context.transceiverController.useTransceivers()&&(this.logger.debug(()=>"getting video track type"),this.context.transceiverController.trackIsVideoInput(e))}addRemoteVideoTrack(e,t){var i;let n,r,s;let a=t.id,o=this.context.videoStreamIndex.attendeeIdForTrack(a);if(this.context.videoTileController.getVideoTileForAttendeeId?!!(null===(i=null==(n=this.context.videoTileController.getVideoTileForAttendeeId(o)
18)?void 0:n.state())||void 0===i?void 0:i.boundVideoStream):this.context.videoTileController.haveVideoTileForAttendeeId(o)){this.context.logger.info(`Not adding remote track. Already have tile for attendeeId:  ${o}`);return}n||(n=this.context.videoTileController.addVideoTile(),this.logger.info(`Created video tile ${n.id()}`));let d=this.context.videoStreamIndex.streamIdForTrack(a);void 0===d&&(this.logger.warn(`stream not found for tile=${n.id()} track=${a}`),d=null);let l=this.context.videoStreamIndex.groupIdForStreamId(d);void 0===l&&(l=null);for(let i=0;i<this.trackEvents.length;i++){let r=this.trackEvents[i],s=t.getVideoTracks();if(s&&s.length){let t=s[0],i=()=>{this.context.logger.info(`received the ${r} event for tile=${n.id()} id=${e.id} streamId=${d}`),"ended"===r&&this.removeRemoteVideoTrack(e,n.state())};t.addEventListener(r,i),this.removeVideoTrackEventListeners[e.id]||(this.removeVideoTrackEventListeners[e.id]=[]),this.removeVideoTrackEventListeners[e.id].push(()=>{t.removeEventListener(r,i)})}}if(e.getSettings){let t=e.getSettings();r=t.width,s=t.height}else{let t=e.getCapabilities();r=t.width,s=t.height}let c=this.context.videoStreamIndex.externalUserIdForTrack(a);n.bindVideoStream(o,!1,t,r,s,d,c,l),this.logger.info(`video track added, use tile=${n.id()} track=${a} streamId=${d} groupId=${l}`);let u="removetrack",h=()=>this.removeRemoteVideoTrack(e,n.state());this.removeTrackRemovedEventListeners[e.id]=()=>{t.removeEventListener(u,h),delete this.removeTrackRemovedEventListeners[e.id]},t.addEventListener(u,h)}removeRemoteVideoTrack(e,t){var i;if(this.removeTrackRemovedEventListeners.hasOwnProperty(e.id)){for(let t of(this.removeTrackRemovedEventListeners[e.id](),this.removeVideoTrackEventListeners[e.id]))t();delete this.removeVideoTrackEventListeners[e.id]}this.logger.info(`video track ended, removing tile=${t.tileId} id=${e.id} stream=${t.streamId}`),t.streamId?this.context.videosPaused.remove(t.streamId):this.logger.warn(`no stream found for tile=${t.tileId}`),null!==t.groupId&&(null===(i=this.context.meetingSessionTimingManager)||void 0===i||i.onRemoteVideoRemoved(t.groupId)),this.context.videoTileController.removeVideoTile(t.tileId)}}s.REMOVE_HANDLER_INTERVAL_MS=1e4,t.default=s},48999:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(69647)),s=n(i(85207)),a=n(i(99481));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="CreateSDPTask"}cancel(){if(this.cancelPromise){let e=Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}sessionUsesAudio(){var e,t;return!!(null===(t=null===(e=this.context.meetingSessionConfiguration)||void 0===e?void 0:e.urls)||void 0===t?void 0:t.audioHostURL)}sessionUsesVideo(){let e;e=this.context.transceiverController.useTransceivers()?this.context.transceiverController.hasVideoInput():this.context.videoTileController.hasStartedLocalVideoTile();let t=!!this.context.videosToReceive&&!this.context.videosToReceive.empty(),i=e||t;return this.context.logger.info(`uses video: ${i} (enabled: true, sending: ${e}, receiving: ${t})`),i}async run(){let e={offerToReceiveAudio:this.sessionUsesAudio(),offerToReceiveVideo:this.sessionUsesVideo()};this.logger.info(`peer connection offerOptions: ${JSON.stringify(e)}`),await new Promise(async(t,i)=>{var n;this.cancelPromise=e=>{i(e)};try{if(this.context.sdpOfferInit=await this.context.peer.createOffer(e),null===(n=this.context.meetingSessionTimingManager)||void 0===n||n.onCreateOfferCalled(),this.context.logger.info("peer connection created offer"),this.context.previousSdpOffer&&new s.default(this.context.sdpOfferInit.s
18dp).videoSendSectionHasDifferentSSRC(this.context.previousSdpOffer)){let e=Error(`canceling ${this.name()} due to the meeting status code: ${r.default.IncompatibleSDP}`);this.context.previousSdpOffer=null,i(e);return}t()}catch(e){i(e)}finally{delete this.cancelPromise}})}}t.default=o},63985:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(69647)),s=n(i(85207)),a=n(i(99481));class o extends a.default{constructor(e,t=o.CHROME_VPN_TIMEOUT_MS){super(e.logger),this.context=e,this.chromeVpnTimeoutMs=t,this.taskName="FinishGatheringICECandidatesTask"}removeEventListener(){this.context.peer&&(this.context.peer.removeEventListener("icecandidate",this.context.iceCandidateHandler),this.context.turnCredentials||this.context.peer.removeEventListener("icegatheringstatechange",this.context.iceGatheringStateEventHandler))}cancel(){let e;this.context.browserBehavior.requiresIceCandidateGatheringTimeoutWorkaround()&&this.chromeVpnTimeoutMs<this.context.meetingSessionConfiguration.connectionTimeoutMs&&Date.now()-this.startTimestampMs>this.chromeVpnTimeoutMs&&(e=Error(`canceling ${this.name()} due to the meeting status code: ${r.default.ICEGatheringTimeoutWorkaround}`)),this.cancelPromise&&(e=e||Error(`canceling ${this.name()}`),this.cancelPromise(e),delete this.cancelPromise)}async run(){var e,t;if(this.context.peer||this.logAndThrow("session does not have peer connection; bypass ice gathering"),this.context.browserBehavior.requiresCheckForSdpConnectionAttributes()){if(new s.default(this.context.peer.localDescription.sdp).hasCandidatesForAllMLines()){this.context.logger.info(`ice gathering already complete; bypass gathering, current local description ${this.context.peer.localDescription.sdp}`);return}}else this.context.logger.info(`iOS device does not require checking for connection attributes in SDP, current local description ${this.context.peer.localDescription.sdp}`);if((this.context.browserBehavior.hasFirefoxWebRTC()||"complete"===this.context.peer.iceGatheringState)&&new s.default(this.context.peer.localDescription.sdp).hasCandidates()){this.context.logger.info("ice gathering state is complete and candidates are in SDP; bypass gathering");return}null===(e=this.context.meetingSessionTimingManager)||void 0===e||e.onIceGatheringStarted();try{await new Promise((e,t)=>{this.cancelPromise=e=>{this.removeEventListener(),t(e)},this.context.turnCredentials||(this.context.iceGatheringStateEventHandler=()=>{if("complete"===this.context.peer.iceGatheringState){this.removeEventListener(),e(),delete this.cancelPromise;return}},this.context.peer.addEventListener("icegatheringstatechange",this.context.iceGatheringStateEventHandler)),this.context.iceCandidateHandler=i=>{if(this.context.logger.info(`ice candidate: ${i.candidate?i.candidate.candidate:"(null)"} state: ${this.context.peer.iceGatheringState}`),i.candidate&&(s.default.isRTPCandidate(i.candidate.candidate)&&this.context.iceCandidates.push(i.candidate),this.context.turnCredentials&&this.context.iceCandidates.length>=1)){this.context.logger.info("gathered at least one relay candidate"),this.removeEventListener(),e(),delete this.cancelPromise;return}"complete"===this.context.peer.iceGatheringState&&(this.context.logger.info("done gathering ice candidates"),this.removeEventListener(),new s.default(this.context.peer.localDescription.sdp).hasCandidates()&&0!==this.context.iceCandidates.length?e():t(Error("no ice candidates were gathered")),delete this.cancelPromise)},this.context.peer.addEventListener("icecandidate",this.context.iceCandidateHandler),this.startTimestampMs=Date.now()})}catch(e){throw e}finally{this.startTimestampMs&&(this.context.iceGatheringDurationMs=Math.round(Date.now()-this.startTimestampMs)),null===(t=this.context.meetingSessionTimingManager)||void 0===t||t.onIceGatheringComplete()}}}o.CHROME_VPN_TIMEOUT_MS=5e3,t.default=o},68092:function(e,t,i){"use strict";var n,r=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);
18(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return(n=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i=n(e),a=0;a<i.length;a++)"default"!==i[a]&&r(t,e,i[a]);return s(t,e),t}),o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let d=o(i(90176)),l=o(i(69647)),c=o(i(68187)),u=a(i(16802)),h=o(i(66485)),f=o(i(16387)),m=i(8283),p=o(i(99481));class g extends p.default{constructor(e){super(e.logger),this.context=e,this.taskName="JoinAndReceiveIndexTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}async run(){var e;let t=await new Promise(async(e,t)=>{let i=this.context;i.turnCredentials=null;class n{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(Error("JoinAndReceiveIndexTask got canceled while waiting for SdkIndexFrame"))}handleSignalingClientEvent(t){var n;if(t.type===h.default.WebSocketClosed){let e=`The signaling connection was closed with code ${t.closeCode} and reason: ${t.closeReason}`;i.logger.warn(e);let n=l.default.SignalingBadRequest;4410===t.closeCode?(e="The meeting already ended.",i.logger.warn(e),n=l.default.MeetingEnded):t.closeCode>=4500&&t.closeCode<4600&&(n=l.default.SignalingInternalServerError),i.audioVideoController.handleMeetingSessionStatus(new d.default(n),Error(e));return}if(t.type===h.default.ReceivedSignalFrame){if(t.message.type===m.SdkSignalFrame.Type.JOIN_ACK){null===(n=i.meetingSessionTimingManager)||void 0===n||n.onJoinAckReceived();let e=t.message.joinack;if(!e){i.audioVideoController.handleMeetingSessionStatus(new d.default(l.default.SignalingRequestFailed),Error("Join ACK message did not include expected frame"));return}if(e.videoSubscriptionLimit&&(i.videoSubscriptionLimit=e.videoSubscriptionLimit),i.serverSupportsCompression=e.wantsCompressedSdp,void 0!==e.defaultServerSideNetworkAdaption&&e.defaultServerSideNetworkAdaption!==u.default.Default&&void 0!==i.videoDownlinkBandwidthPolicy.setServerSideNetworkAdaption){let t=e.defaultServerSideNetworkAdaption;i.logger.info(`Overriding server side network adaption value to ${t}`),i.videoDownlinkBandwidthPolicy.setServerSideNetworkAdaption((0,u.convertServerSideNetworkAdaptionEnumFromSignaled)(t))}e&&e.turnCredentials?(i.turnCredentials=new c.default,i.turnCredentials.username=e.turnCredentials.username,i.turnCredentials.password=e.turnCredentials.password,i.turnCredentials.ttl=e.turnCredentials.ttl,i.turnCredentials.uris=function(e,t){let{urlRewriterMulti:i,urlRewriter:n}=t;return e.flatMap(e=>{if(i)return i(e)||[];let t=n(e);return t?[t]:[]}).filter(e=>!!e)}(e.turnCredentials.uris,i.meetingSessionConfiguration.urls)):i.logger.error("missing TURN credentials in JoinAckFrame");return}t.message.type===m.SdkSignalFrame.Type.INDEX&&(this.signalingClient.removeObserver(this),e(t.message.index))}}}let r=new n(this.context.signalingClient);this.context.signalingClient.registerObserver(r),this.taskCanceler=r,this.context.previousSdpAnswerAsString="",this.context.previousSdpOffer=null,this.context.serverSupportsCompression=!1;let s=new f.default(this.context.meetingSessionConfiguration.applicationMetadata);s.browserBehavior=this.context.browserBehavior,void 0!==this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption&&void 0!==this.context.videoDownlinkBandwidthPolicy.supportedServerSideNetworkAdaptions&&(s.serverSideNetworkAdaption=this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption(),s.supportedServerSideNetworkAdaptions=this.context.videoDownlinkBandwidthPolicy.supportedServerSideNetworkAdaptions()),void 0!==this.context.videoDownlinkBandwidthPolicy.wantsAllTemporalLayersInIndex&&(s.wantsAllTemporalLayersInIndex=this.context.videoDownlinkBandwidthPolicy.wantsAllTemporalLayersInIndex()),s.disablePerio
18dicKeyframeRequestOnContentSender=this.context.meetingSessionConfiguration.disablePeriodicKeyframeRequestOnContentSender,this.context.signalingClient.join(s)});this.context.logger.info(`received first index ${JSON.stringify(t)}`),this.context.indexFrame=t,t.sources&&t.sources.length>0&&(null===(e=this.context.meetingSessionTimingManager)||void 0===e||e.setExpectingRemoteVideo())}}t.default=g},76611:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(66485)),s=i(8283),a=n(i(99481));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="LeaveAndReceiveLeaveAckTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}async run(){this.context.signalingClient.ready()&&(this.context.signalingClient.leave(),this.context.logger.info("sent leave"),await this.receiveLeaveAck())}receiveLeaveAck(){return new Promise((e,t)=>{class i{constructor(e,t){this.signalingClient=e,this.logger=t}cancel(){this.signalingClient.removeObserver(this),t(Error("LeaveAndReceiveLeaveAckTask got canceled while waiting for IndexFrame"))}handleSignalingClientEvent(t){if(t.isConnectionTerminated()){this.signalingClient.removeObserver(this),this.logger.info("LeaveAndReceiveLeaveAckTask connection terminated"),e();return}t.type===r.default.ReceivedSignalFrame&&t.message.type===s.SdkSignalFrame.Type.LEAVE_ACK&&(this.signalingClient.removeObserver(this),this.logger.info("got leave ack"),e())}}let n=new i(this.context.signalingClient,this.context.logger);this.taskCanceler=n,this.context.signalingClient.registerObserver(n)})}}t.default=o},72655:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(66485)),s=i(8283),a=n(i(99481));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="ListenForVolumeIndicatorsTask",this.realtimeMuteAndUnmuteHandler=e=>{this.context.signalingClient.mute(e)}}async run(){this.context.removableObservers.push(this),this.context.signalingClient.registerObserver(this),this.context.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler)}removeObserver(){this.context.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler),this.context.signalingClient.removeObserver(this)}handleSignalingClientEvent(e){if(e.type===r.default.ReceivedSignalFrame){if(e.message.type===s.SdkSignalFrame.Type.AUDIO_STREAM_ID_INFO){let t=e.message.audioStreamIdInfo;this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioStreamIdInfo(t)}else if(e.message.type===s.SdkSignalFrame.Type.AUDIO_METADATA){let t=e.message.audioMetadata;this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioMetadata(t)}}}}t.default=o},74575:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(87911)),s=n(i(40372)),a=n(i(67089)),o=n(i(80279)),d=n(i(355)),l=n(i(74588)),c=i(97937),u=n(i(90176)),h=n(i(69647)),f=n(i(92220)),m=n(i(66485)),p=i(8283),g=n(i(51417)),v=i(24670),b=n(i(99481));class S extends b.default{constructor(e,t,i){for(let n of(super(e.logger),this.context=e,this.initialConnectionHealthData=i,this.taskName="MonitorTask",this.prevSignalStrength=1,this.currentAvailableStreamAvgBitrates=null,this.hasSignalingError=!1,this.presenceHandlerCalled=!1,this.isResubscribeCheckPaused=!1,this.pendingMetricsReport=void 0,this.videoEncodingHealthPolicies=[],this.checkAndSendWeakSignalEvent=e=>{let t=this.prevSignalStrength<1,i=e<1?t?null:g.default.RedmicStartLoss:t?g.default.RedmicEndLoss:null;i&&this.context.statsCollector.logAudioEvent(i),this.prevSignalStrength=e},this.realtimeFatalErrorCallback=e=>{this.logger.error(`realtime error: ${e}: ${e.stack}`),this.context.audioVideoController.handleMeetingSessionStatus(new u.default(h.default.RealtimeApiFailed),e)},this.realtimeAttendeeIdPresenceHandler=(e,t)=>{var i;let n=this.context.meetingSessionConfiguration.credentials.attendeeId;this.logger.info(`attendeePresenceReceived: ${n}`),n===e&&t&&!this.presenceHandlerCalled&&(this.presenceHandlerCalled=!0,this.context.attendeePresenceDurationMs=Date.now()-this.context.startAudioVideoT
18imestamp,null===(i=this.context.eventController)||void 0===i||i.publishEvent("attendeePresenceReceived",{attendeePresenceDurationMs:this.context.attendeePresenceDurationMs,retryCount:this.context.retryCount}))},this.reconnectionHealthPolicy=new a.default(e.logger,{...t},this.initialConnectionHealthData.clone()),this.unusableAudioWarningHealthPolicy=new d.default({...t},this.initialConnectionHealthData.clone()),this.sendingAudioFailureHealthPolicy=new o.default(e.logger,{...t},this.initialConnectionHealthData.clone()),t.videoEncodingHealthPolicies))this.videoEncodingHealthPolicies.push(new n({...t},this.initialConnectionHealthData.clone()))}removeObserver(){this.context.audioVideoController.removeObserver(this),this.context.realtimeController.realtimeUnsubscribeToFatalError(this.realtimeFatalErrorCallback),this.context.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent),this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler),this.context.signalingClient.removeObserver(this)}async run(){this.context.removableObservers.push(this),this.context.audioVideoController.addObserver(this),this.context.realtimeController.realtimeSubscribeToFatalError(this.realtimeFatalErrorCallback),this.context.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent),this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler),this.context.connectionMonitor.start(),this.context.statsCollector.start(this.context.signalingClient,this.context.videoStreamIndex),this.context.signalingClient.registerObserver(this)}pauseResubscribeCheck(){this.isResubscribeCheckPaused=!0}resumeResubscribeCheck(){this.isResubscribeCheckPaused&&(this.isResubscribeCheckPaused=!1,this.pendingMetricsReport&&(this.context.logger.info("Resuming resubscribe check with pending metrics report"),this.checkResubscribe(this.pendingMetricsReport)&&this.context.audioVideoController.update({needsRenegotiation:!1})))}videoTileDidUpdate(e){this.context.maxVideoTileCount=Math.max(this.context.maxVideoTileCount,this.context.videoTileController.getAllVideoTiles().length)}checkResubscribe(e){if(this.isResubscribeCheckPaused){this.context.logger.info("Resubscribe check is paused, setting incoming client metric report as pending"),this.pendingMetricsReport=e;return}this.pendingMetricsReport=void 0;let t=e.getObservableMetrics(),i=t.availableOutgoingBitrate,n=t.nackCountReceivedPerSecond,r=!1;this.context.videoDownlinkBandwidthPolicy.updateMetrics(e);let s=this.context.videoDownlinkBandwidthPolicy.wantsResubscribe();if(r=r||s,s){let e=this.context.videoDownlinkBandwidthPolicy.chooseSubscriptions();this.context.videosToReceive=e.truncate(this.context.videoSubscriptionLimit),e.size()>this.context.videosToReceive.size()&&this.logger.warn(`Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`),this.logger.info(`trigger resubscribe for down=${s}; videosToReceive=[${this.context.videosToReceive.array()}]`)}if(this.context.videoTileController.hasStartedLocalVideoTile()){this.context.videoUplinkBandwidthPolicy.updateConnectionMetric({uplinkKbps:i/1e3,nackCountPerSecond:n});let e=this.context.videoUplinkBandwidthPolicy.wantsResubscribe();r=r||e,e&&(this.logger.info(`trigger resubscribe for up=${e}; videosToReceive=[${this.context.videosToReceive.array()}]`),this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters())}return r}metricsDidReceive(e){if(this.checkResubscribe(e)&&this.context.audioVideoController.update({needsRenegotiation:!1}),!this.currentAvailableStreamAvgBitrates)return;let t=e.streamMetricReports,i=new Map;for(let e in t)t[e].mediaType===s.default.VIDEO&&t[e].direction===r.default.DOWNSTREAM&&i.set(t[e].streamId,t[e])}connectionHealthDidChange(e){for(let t of(0===e.consecutiveMissedPongs&&this.context.reconnectController&&this.context.reconnectController.setLastActiveTimestampMs(Date.now()),this.applyHealthPolicy(this.reconnectionHealthPolicy,e,()=>{this.context.audioVideoController.handleMeetingSessionStatus(new u.default(h.default.ConnectionHealthReconnect),null)}),this.applyHealthPolicy(this.unusableAudioWarningHealthPolicy,e,()=>{var e;this.context.poorConnectionCount+=1,null===(e=this.context.eventController)||void 0===e||e.publishEvent("receivingAudioDropped",(0,c.audioVideoEventAttributesFromState)(this.context)),this.context.videoTileController.haveVideoTilesWithStreams()?this.context.audioVideoController.forEachObserver(e=>{v.Maybe.of(e.connectionDidSuggestStopVideo).map(t=>t.bind(e)())}):this.context.audioVideoController.forEachObserver(e=>{v.Maybe.of(e.connectionDidBecomePoor).map(t=>t.bind(e)())})},()=>{this.context.audioVideoController.forEachObserver(e=>{v.Maybe.of(e.connectionDidBecomeGood).map(t=>t.bind(e)())})}),this.videoEncodingHealthPolicies))this.applyHealthPolicy(t,e,()=>{switch(this.degradeVideoEncoding(t.name),t.name){case l.default.VideoEncodingCpuHealth:this.context.statsCollector.videoCodecDegradationHighEncodeCpuDidReceive();break;case l.default.VideoEncodingFramerateHealth:this.context.statsCollector.videoCodecDegradationEncodeFailureDidReceive();break;case l.default.VideoConcurrentSendersHealth:this.context.statsCollector.videoCodecDegradationConcurrentSendersDidReceive()}});
18if(this.context.isSessionConnected){let t=e=>{var t;let i=(0,c.audioVideoEventAttributesFromState)(this.context);null===(t=this.context.eventController)||void 0===t||t.publishEvent(e,i)};this.applyHealthPolicy(this.sendingAudioFailureHealthPolicy,e,()=>t("sendingAudioFailed"),()=>t("sendingAudioRecovered"))}}applyHealthPolicy(e,t,i,n){e.update(t);let r=e.healthIfChanged();null!==r&&(this.logger.info(`${e.name} value is now ${r}`),r<=e.minimumHealth()?v.Maybe.of(i).map(e=>e.bind(this)()):v.Maybe.of(n).map(e=>e.bind(this)()))}handleBitrateFrame(e){this.currentAvailableStreamAvgBitrates=e,e.serverAvailableOutgoingBitrate>0&&(this.logger.info(`Received server side estimation of available incoming bitrate ${e.serverAvailableOutgoingBitrate}kbps`),this.context.statsCollector.overrideObservableMetric("availableIncomingBitrate",1e3*e.serverAvailableOutgoingBitrate))}handleSignalingClientEvent(e){var t;if(e.type===m.default.WebSocketClosed&&this.isUnexpectedsignalingCloseCode(e.closeCode)||e.type===m.default.WebSocketError||e.type===m.default.WebSocketFailed?(this.hasSignalingError||(null===(t=this.context.eventController)||void 0===t||t.publishEvent("signalingDropped",{...(0,c.audioVideoEventAttributesFromState)(this.context),...void 0!==e.closeCode&&{signalingCloseCode:e.closeCode},...void 0!==e.closeReason&&{signalingCloseReason:e.closeReason},...void 0!==e.wasClean&&{signalingCloseWasClean:e.wasClean}}),this.hasSignalingError=!0),this.context.isSessionConnected&&this.context.audioVideoController.handleMeetingSessionStatus(new u.default(this.isInternalServerFailureCloseCode(e.closeCode)?h.default.SignalingInternalServerError:h.default.SignalingChannelClosedUnexpectedly),null)):e.type===m.default.WebSocketOpen&&(this.hasSignalingError=!1),e.type===m.default.ReceivedSignalFrame){if(e.message.type===p.SdkSignalFrame.Type.NOTIFICATION){switch(e.message.notification.level){case p.SdkNotificationFrame.NotificationLevel.INFO:this.logger.info(`Received notification from server: ${e.message.notification.message}`);break;case p.SdkNotificationFrame.NotificationLevel.WARNING:this.logger.warn(`Received warning from server: ${e.message.notification.message}`);break;case p.SdkNotificationFrame.NotificationLevel.ERROR:this.logger.error(`Received error from server: ${e.message.notification.message}`);break;default:this.logger.error(`Received notification from server with unknown level ${e.message.notification.level}: ${e.message.notification.message}`)}return}if(e.message.bitrates){let t=e.message.bitrates;this.context.videoStreamIndex.integrateBitratesFrame(t),this.context.videoDownlinkBandwidthPolicy.updateIndex(this.context.videoStreamIndex),this.handleBitrateFrame(e.message.bitrates)}let t=u.default.fromSignalFrame(e.message);e.message.type!==p.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK&&t.statusCode()!==h.default.OK&&this.context.audioVideoController.handleMeetingSessionStatus(t,null)}}isUnexpectedsignalingCloseCode(e){return 1006===e||this.isInternalServerFailureCloseCode(e)}isInternalServerFailureCloseCode(e){return e>=4500&&e<4600}degradeVideoEncoding(e){var t;if((null===(t=this.context.videoUplinkBandwidthPolicy)||void 0===t?void 0:t.degradeScalabilityMode)&&this.context.videoUplinkBandwidthPolicy.degradeScalabilityMode()){this.context.audioVideoController.update({needsRenegotiation:!1});return}if(void 0!==this.context.meetingSupportedVideoSendCodecPreferences&&this.context.meetingSupportedVideoSendCodecPreferences.length>1&&!(this.context.meetingSupportedVideoSendCodecPreferences[0].equals(f.default.h264ConstrainedBaselineProfile())||this.context.meetingSupportedVideoSendCodecPreferences[0].equals(f.default.vp8()))){let t=[];for(let e of this.context.videoSendCodecPreferences)e.equals(this.context.meetingSupportedVideoSendCodecPreferences[0])||t.pu
18sh(e);t.length>0?(this.context.logger.info(`Downgrading codec from ${this.context.meetingSupportedVideoSendCodecPreferences[0].codecName} to ${t[0].codecName} due to ${e}`),this.context.degradedVideoSendCodecs.push(this.context.meetingSupportedVideoSendCodecPreferences[0]),this.context.meetingSupportedVideoSendCodecPreferences=t,this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs&&this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs(this.context.meetingSupportedVideoSendCodecPreferences,this.context.videoSendCodecPreferences),this.context.audioVideoController.update({needsRenegotiation:!0})):this.context.logger.warn(`Degrading video codec failed since there is no alternative codec to select. Currently degraded codecs: ${this.context.degradedVideoSendCodecs.map(e=>e.codecName).join(",")}`)}}}t.default=S},36154:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{cancel(){}name(){return"NoOpTask"}run(){return Promise.resolve()}setParent(e){}}t.default=i},77540:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(94618)),s=n(i(16564));class a{constructor(e,t,i){this.logger=e,this.task=t,this.dependencies=i,this.canceled=!1}name(){return`${this.task.name()} (once)`}cancel(){if(!this.canceled){if(this.dependencies)for(let e of this.dependencies)e.cancel();this.logger.info(`Canceling ${this.name()}`),s.default.nextTick(()=>this.task.cancel()),this.canceled=!0,this.cancelPromise&&s.default.nextTick(()=>this.cancelPromise(Error(`canceling ${this.name()}`)))}}logDependencies(){if(this.logger.getLogLevel()>r.default.INFO||!this.dependencies)return;let e=this.dependencies.filter(e=>e).map(e=>e.name()).join(", ");this.logger.info(`${this.task.name()} waiting for dependencies: ${e}`)}run(){if(this.promise)return this.promise;let e=this.dependencies?Promise.all(this.dependencies.map(e=>null==e?void 0:e.run())):Promise.resolve();return this.logDependencies(),this.ongoing=e.then(()=>this.task.run()),this.promise=new Promise((e,t)=>{this.cancelPromise=t,this.ongoing.then(e).catch(t)})}setParent(e){this.task.setParent(e)}}t.default=a},54633:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(35848)),s=n(i(66485)),a=n(i(99481));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="OpenSignalingConnectionTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}async run(){let e=this.context.meetingSessionConfiguration;this.context.signalingClient.openConnection(new r.default(e.urls.signalingURL,e.credentials.joinToken));let t=Date.now();try{await new Promise((e,t)=>{class i{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(Error("OpenSignalingConnectionTask got canceled while waiting to open signaling connection"))}handleSignalingClientEvent(i){switch(i.type){case s.default.WebSocketOpen:this.signalingClient.removeObserver(this),e();break;case s.default.WebSocketFailed:this.signalingClient.removeObserver(this),t(Error("WebSocket connection failed"))}}}let n=new i(this.context.signalingClient);this.context.signalingClient.registerObserver(n),this.taskCanceler=n})}catch(e){throw e}finally{this.context.signalingOpenDurationMs=Math.round(Date.now()-t),this.logger.info(`Opening signaling connection took ${this.context.signalingOpenDurationMs} ms`)}}}t.default=o},59879:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481));class s extends r.default{constructor(e,t,i){for(let n of(super(e),this.taskName=t,this.tasksToRunParallel=i,i))n.setParent(this)}cancel(){for(let e of this.tasksToRunParallel)this.logger.info(`canceling parallel group task ${this.name()} subtask ${e.name()}`),e.cancel()}async run(){let e=[];for(let t of this.tasksToRunParallel)this.logger.info(`parallel group task ${this.name()} running subtask ${t.name()}`),e.push(t.run());let t=[];for(let i=0;i<e.length;i++){try{await e[i]}catch(e){t.push(`task ${this.tasksToRunParallel[i].name()} failed: ${e.message}`)}this.logger.info(`parallel group task ${this.name()} completed subtask ${this.tasksToRunParallel[i].name()}`)}if(t.length>0){let e=t.join(", ");this.logAndThrow(`parallel group task ${this.name()} failed for tasks: ${e}`)}this.logger.info(`parallel group task ${this.name()} completed`)}}t.default=s},67275:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
18dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(26912),s=n(i(66485)),a=i(8283),o=n(i(99481));class d extends o.default{constructor(e,t,i){super(e.logger),this.context=e,this.credentials=t,this.completionCallback=i,this.taskName="PromoteToPrimaryMeetingTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}async run(){this.context.signalingClient.ready()?(this.context.signalingClient.promoteToPrimaryMeeting(this.credentials),this.context.logger.info("Sent request to join primary meeting"),await this.receivePrimaryMeetingJoinAck()):this.completionCallback(new r.MeetingSessionStatus(r.MeetingSessionStatusCode.SignalingRequestFailed))}receivePrimaryMeetingJoinAck(){return new Promise((e,t)=>{class i{constructor(e,t,i){this.signalingClient=e,this.completionCallback=t,this.logger=i}cancel(){this.signalingClient.removeObserver(this),this.completionCallback(new r.MeetingSessionStatus(r.MeetingSessionStatusCode.SignalingRequestFailed)),e()}handleSignalingClientEvent(t){t.isConnectionTerminated()&&(this.signalingClient.removeObserver(this),this.logger.info("PromoteToPrimaryMeetingTask connection terminated"),this.completionCallback(new r.MeetingSessionStatus(r.MeetingSessionStatusCode.SignalingRequestFailed)),e()),t.type===s.default.ReceivedSignalFrame&&t.message.type===a.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK&&(this.signalingClient.removeObserver(this),this.logger.info("Got a primary meeting join ACK"),this.completionCallback(r.MeetingSessionStatus.fromSignalFrame(t.message)),e())}}let n=new i(this.context.signalingClient,this.completionCallback,this.context.logger);this.taskCanceler=n,this.context.signalingClient.registerObserver(n)})}}t.default=d},74638:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481));class s extends r.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveAudioInputTask"}async run(){var e,t;let i;if(!(null===(t=null===(e=this.context.meetingSessionConfiguration)||void 0===e?void 0:e.urls)||void 0===t?void 0:t.audioHostURL)){this.context.logger.info("No audio connection: not acquiring audio input");return}if(this.context.activeAudioInput){this.context.logger.info("an active audio input exists");return}try{i=await this.context.mediaStreamBroker.acquireAudioInputStream()}catch(e){this.context.logger.warn("could not acquire audio input from current device")}i?this.context.activeAudioInput=i:this.context.logger.warn("an audio input is not available")}}t.default=s},69609:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(66485)),s=i(8283),a=n(i(99481));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveRemoteVideoPauseResume",this.serverPausedVideoTileIds=new Set}removeObserver(){this.context.signalingClient.removeObserver(this)}async run(){this.context.signalingClient.registerObserver(this),this.context.removableObservers.push(this)}updateSubscribedGroupdIds(e){let t=new Set;for(let i of e){let e=this.context.videoStreamIndex.attendeeIdForGroupId(i);if(0===e.length){this.logger.warn(`Could not find attendee ID for newly subscribed group ID ${i}`);continue}let n=this.context.videoTileController.getVideoTileForAttendeeId(e);void 0===n&&(this.logger.info(`No existing video tile for attendee ID ${e} with new group ID ${i}. Creating new one.`),(n=this.context.videoTileController.addVideoTile()).bindVideoStream(e,!1,null,0,0,0,null)),t.add(n.id())}this.serverPausedVideoTileIds.forEach(e=>{t.has(e)||this.serverPausedVideoTileIds.delete(e)})}handleSignalingClientEvent(e){if(e.type!==r.default.ReceivedSignalFrame||e.message.type!==s.SdkSignalFrame.Type.PAUSE&&e.message.type!==s.SdkSignalFrame.Type.RESUME)return;let t=e.message.pause,i=e.message.type;if(this.logger.info(`Received new ${i===s.SdkSignalFrame.Type.PAUSE?"pause":"resume"} frame: ${JSON.stringify(t)}`),t&&void 0!==this.context.videoTileController.getVideoTileForAttendeeId&&void 0!==this.context.videoDownlinkBandwidthPolicy.forEachObserver&&void 0!==this.context.videoStreamIndex.attendeeIdForGroupId)for(let e of t.groupIds.map(e=>{let t=this.context.videoStreamIndex.attendeeIdForGroupId(e);if(0===t.length){this.logger.warn(`Could not find attendee ID for paused group ID ${e}`);return}return this.context.videoTileController.getVideoTileForAttendeeId(t)}))void 0!==e&&(i===s.SdkSignalFrame.Type.PAUSE?e.state().paused||(this.serverPausedVideoTileIds.add(e.id()),this.context.videoDownlinkBandwidthPolicy.forEachObserver(t=>{t.tileWillBePausedByDownlinkPolicy(e.id())}),e.pause()):e.state().paused&&this.serverPausedVideoTileIds.has(e.id())&&(this.serverPausedVideoTileIds.delete(e.id()),this.context.videoDownlinkBandwidthPolicy.forEachObserver(t=>{t.tileWillBeUnpausedByDownlinkPolicy(e.id())}),e.unpause()))}}t.default=o},32910:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
18dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(67941)),s=i(8283),a=n(i(99481));class o extends a.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveVideoInputTask"}async checkAndApplyVideoConstraint(e,t,i,n,r){let s=e?this.context.meetingSessionConfiguration.meetingFeatures.contentMaxResolution:this.context.meetingSessionConfiguration.meetingFeatures.videoMaxResolution;if(!e&&i<=s.videoWidth&&n<=s.videoHeight&&r<=s.videoFrameRate)return;let a={resizeMode:{ideal:"none"},width:{max:s.videoWidth},height:{max:s.videoHeight},frameRate:{ideal:r,max:s.videoFrameRate}};try{await t.applyConstraints(a)}catch(t){this.context.logger.info(`Could not apply constraint for video track (content = ${e})`)}}async run(){var e,t;let i;let n=this.context.videoDuplexMode===s.SdkStreamServiceType.RX||this.context.videoDuplexMode===s.SdkStreamServiceType.DUPLEX;if(this.context.videoTileController.hasStartedLocalVideoTile()?this.context.videoDuplexMode=n?s.SdkStreamServiceType.DUPLEX:s.SdkStreamServiceType.TX:this.context.videoDuplexMode=s.SdkStreamServiceType.RX,this.context.videoCaptureAndEncodeParameter=this.context.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters(),!this.context.videoTileController.hasStartedLocalVideoTile()){this.context.logger.info("has not started local video tile"),this.context.activeVideoInput&&(this.context.activeVideoInput=void 0,this.context.videoStreamIndex.integrateUplinkPolicyDecision([]),null===(e=this.context.meetingSessionTimingManager)||void 0===e||e.onLocalVideoRemoved());return}let a=this.context.videoTileController.getLocalVideoTile();try{i=await this.context.mediaStreamBroker.acquireVideoInputStream()}catch(e){this.context.logger.warn("could not acquire video input from current device"),this.context.videoTileController.stopLocalVideoTile()}if(this.context.enableSimulcast){let e=this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();this.context.videoStreamIndex.integrateUplinkPolicyDecision(Array.from(e.values()))}if(this.context.activeVideoInput=i,i){let e=i.getVideoTracks();if(!e||0===e.length)return;let n=this.context.meetingSessionConfiguration.credentials.attendeeId,s=new r.default(n).hasModality(r.default.MODALITY_CONTENT),o=e[0].getSettings();this.checkAndApplyVideoConstraint(s,e[0],o.width,o.height,o.frameRate);let d=this.context.audioVideoController.configuration.credentials.externalUserId;for(let t of(a.bindVideoStream(n,!0,i,o.width,o.height,null,d),e))this.logger.info(`Using video device label=${t.label} id=${t.id}`),this.context.videoDeviceInformation.current_camera_name=t.label,this.context.videoDeviceInformation.current_camera_id=t.id;null===(t=this.context.meetingSessionTimingManager)||void 0===t||t.onLocalVideoAdded()}}}t.default=o},87552:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(14118)),s=n(i(67941)),a=n(i(92220)),o=n(i(66485)),d=i(8283),l=i(24670),c=n(i(99481));class u extends c.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveVideoStreamIndexTask",this.isIngestionPaused=!1,this.pendingIndex=null}removeObserver(){this.context.signalingClient.removeObserver(this)}async run(){this.handleIndexFrame(this.context.indexFrame),this.context.signalingClient.registerObserver(this),this.context.removableObservers.push(this)}handleSignalingClientEvent(e){if(e.type!==o.default.ReceivedSignalFrame||e.message.type!==d.SdkSignalFrame.Type.INDEX)return;let t=e.message.index;this.context.logger.info(`received new index ${JSON.stringify(t)}`),this.handleIndexFrame(t)}pauseIngestion(){this.isIngestionPaused=!0}resumeIngestion(){this.isIngestionPaused&&(this.isIngestionPaused=!1,this.pendingIndex&&(this.context.logger.info("Resuming index ingestion with pending index"),this.handleIndexFrame(this.pendingIndex)))}handleIndexFrame(e){if(!e)return;if(this.isIngestionPaused){this.context.logger.info("Index ingestion is paused, setting most recent index as pending"),this.pendingIndex=e;return}this.pendingIndex=null;let t=this.context.audioVideoController.configuration.credentials.attendeeId;e.sources=e.sources.filter(e=>{let i=new s.default(e.attendeeId);return!(i.base()===t&&i.hasModality(s.default.MODALITY_CONTENT))});let{videoStreamIndex:i,videoDownlinkBandwidthPolicy:n,videoUplinkBandwidthPolicy:r}=this.context,a=i.allVideoSendingSourcesExcludingSelf(t);i.integrateIndexFrame(e),n.updateIndex(i),r.updateIndex(i),this.resubscribe(n,r),this.updateVideoAvailability(e),this.handleIndexVideosPausedAtSource(),e.supportedReceiveCodecIntersection.length>0&&this.handleSupportedVideoReceiveCodecIntersection(e);let o=i.allVideoSendingSourcesExcludingSelf(t);this.areVideoSourcesEqual(a,o)||this.context.audioVideoController.forEachObserver(e=>{l.Maybe.of(e.remoteVideoSourcesDidChange).map(t=>t.bind(e)(o))})}areVideoSourcesEqual(e,t){if(e.length!==t.length)return!1;let i=(e,t)=>e.attendee.attendeeId.localeCompare(t.attendee.attendeeId),n=[...e].sort(i),r=[...t].sort(i);for(let e=0;e<n.length;e++)if(n[e].attendee.attendeeId!==r[e].attendee.attendeeId)return!1;return!0}resubscribe(e,t){var i,n;let r=e.wantsResubscribe(),s=(this.context.videoDuplexMode===d.SdkStreamServiceType.TX||this.context.videoDuplexMode===d.SdkStreamServiceType.DUPLEX)&&t.wantsResubscribe(),a=r||s;if(this.logger.info(`should resubscribe: ${a} (downlink: ${r} uplink: ${s})`),!a)return;let o=e.chooseSubscriptions();this.context.videosToReceive=o.truncate(this.context.videoSubscriptionLimit),o.size()>this.context.videosToReceive.size()&&this.logger.warn(`Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`),this.context.videoCaptureAndEncodeParameter=t.chooseCaptureAndEncodeParameters(),this.logger.info(`trigger resubscribe for up=${s} down=${r}; videosToReceive=[${this.context.videosToReceive.array()}
18] captureParams=${JSON.stringify(this.context.videoCaptureAndEncodeParameter)}`),r&&!this.context.videosToReceive.empty()?this.context.videosToReceive.forEach(e=>{var t;let i=this.context.videoStreamIndex.groupIdForStreamId(e);void 0!==i&&(null===(t=this.context.meetingSessionTimingManager)||void 0===t||t.onRemoteVideoAdded(i))}):null===(i=this.context.meetingSessionTimingManager)||void 0===i||i.clearExpectingRemoteVideo(),null===(n=this.context.meetingSessionTimingManager)||void 0===n||n.onResubscribeStart(),this.context.audioVideoController.update({needsRenegotiation:!1})}updateVideoAvailability(e){if(!this.context.videosToReceive){this.logger.error("videosToReceive must be set in the meeting context.");return}let t=new r.default;t.remoteVideoAvailable=!this.context.videosToReceive.empty(),t.canStartLocalVideo=!e.atCapacity,this.context.lastKnownVideoAvailability&&this.context.lastKnownVideoAvailability.equal(t)||(this.context.lastKnownVideoAvailability=t.clone(),this.context.audioVideoController.forEachObserver(e=>{l.Maybe.of(e.videoAvailabilityDidChange).map(i=>i.bind(e)(t.clone()))}))}handleSupportedVideoReceiveCodecIntersection(e){if(void 0===this.context.videoSendCodecPreferences)return;let t=[],i=!1;for(let i of this.context.videoSendCodecPreferences){if(this.context.degradedVideoSendCodecs.some(e=>i.equals(e))){this.logger.info(`Skipping ${i.codecName} since the codec has been identfied as degraded`);continue}for(let n of e.supportedReceiveCodecIntersection)if(i.equals(a.default.fromSignaled(n))){t.push(i);break}}if(t.length>0){let e=t.find(e=>this.context.prioritizedSendVideoCodecCapabilities.some(t=>e.equals(t)));void 0===this.context.currentVideoSendCodec||void 0!==e&&this.context.currentVideoSendCodec.equals(e)||(i=!0),this.context.meetingSupportedVideoSendCodecPreferences=t}else this.logger.warn("Interesection of meeting receive codec support and send codec preferences has no overlap, falling back to just values provided in `setVideoCodecSendPreferences`"),this.context.meetingSupportedVideoSendCodecPreferences=void 0;this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs&&this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs(this.context.meetingSupportedVideoSendCodecPreferences,this.context.videoSendCodecPreferences),i&&this.context.audioVideoController.update({needsRenegotiation:!0})}handleIndexVideosPausedAtSource(){let e=this.context.videoStreamIndex.streamsPausedAtSource();for(let t of this.context.videoTileController.getAllVideoTiles()){let i=t.state();e.contain(i.streamId)?t.markPoorConnection()&&this.logger.info(`marks the tile ${i.tileId} as having a poor connection`):t.unmarkPoorConnection()&&this.logger.info(`unmarks the tile ${i.tileId} as having a poor connection`)}}}t.default=u},42561:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481));class s extends r.default{constructor(e,t,i="RunnableTask"){super(e),this.fn=t,this.taskName=i}run(){return this.fn().then(()=>{})}}t.default=s},13563:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(93661)),s=n(i(66485)),a=i(8283),o=n(i(99481));class d extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="SendAndReceiveDataMessagesTask",this.sendDataMessageHandler=(e,t,i)=>{if(this.context.signalingClient.ready()){let n;t instanceof Uint8Array?n=t:n="string"==typeof t?new TextEncoder().encode(t):new TextEncoder().encode(JSON.stringify(t)),this.validateDataMessage(e,n,i);let r=a.SdkDataMessagePayload.create();r.topic=e,r.lifetimeMs=i,r.data=n;let s=a.SdkDataMessageFrame.create();s.messages=[r],this.context.signalingClient.sendDataMessage(s)}else this.context.logger.error("Cannot send data message because signaling client is not ready")}}async run(){this.context.removableObservers.push(this),this.context.signalingClient.registerObserver(this),this.context.realtimeController.realtimeSubscribeToSendDataMessage(this.sendDataMessageHandler)}removeObserver(){this.context.realtimeController.realtimeUnsubscribeFromSendDataMessage(this.sendDataMessageHandler),this.context.signalingClient.removeObserver(this)}handleSignalingClientEvent(e){if(e.type===s.default.ReceivedSignalFrame&&e.message.type===a.SdkSignalFrame.Type.DATA_MESSAGE)for(let t of e.message.dataMessage.messages){let e=new r.default(t.ingestTimeNs/1e6,t.topic,t.data,t.senderAttendeeId,t.senderExternalUserId,0===t.ingestTimeNs);this.context.realtimeController.realtimeReceiveDataMessage(e)}}validateDataMessage(e,t,i){if(!d.TOPIC_REGEX.test(e))throw Error("Invalid topic");if(t.length>d.DATA_SIZE)throw Error("Data size has to be less than 2048 bytes");if(i&&i<0)throw Error("The life time of the message has to be non negative")}}d.TOPIC_REGEX=new RegExp(/^[a-zA-Z0-9_-]{1,36}$/),d.DATA_SIZE=2048,t.default=d},72762:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
18dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481)),s=n(i(53364));class a extends r.default{constructor(e,t,i){for(let n of(super(e),this.taskName=t,this.tasksToRunSerially=i,this.currentTask=null,i))n.setParent(this)}cancel(){this.currentTask&&(this.logger.info(`canceling serial group task ${this.name()} subtask ${this.currentTask.name()}`),this.currentTask.cancel())}async run(){for(let e of this.tasksToRunSerially){this.getStatus()===s.default.CANCELED&&this.logAndThrow(`serial group task ${this.name()} was canceled`);try{this.logger.info(`serial group task ${this.name()} running subtask ${e.name()}`),this.currentTask=e,await e.run(),this.logger.info(`serial group task ${this.name()} completed subtask ${e.name()}`)}catch(e){this.logAndThrow(`serial group task ${this.name()} was canceled due to subtask ${this.currentTask.name()} error: ${e.message}`)}finally{this.currentTask=null}}this.logger.info(`serial group task ${this.name()} completed`)}}t.default=a},45065:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(85207)),a=n(i(847)),o=n(i(99481));class d extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="SetLocalDescriptionTask"}cancel(){if(this.cancelPromise){let e=Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}async run(){let e=this.context.peer,t=this.context.sdpOfferInit.s
18dp,i=a.default.canUseHeaderExtensionApi(e);if(!i&&this.context.browserBehavior.supportsVideoLayersAllocationRtpHeaderExtension()&&(t=new s.default(t).withVideoLayersAllocationRtpHeaderExtension(this.context.previousSdpOffer).sdp),!i&&this.context.browserBehavior.supportsDependencyDescriptorRtpHeaderExtension()&&void 0!==this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension&&this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension()&&(t=new s.default(t).withDependencyDescriptorRtpHeaderExtension(this.context.previousSdpOffer).sdp),new r.default().requiresDisablingH264Encoding()&&(t=new s.default(t).removeH264SupportFromSendSection().sdp),t=new s.default(t).withStartingVideoSendBitrate(1e3).sdp,void 0!==this.context.videoSendCodecPreferences&&this.context.videoSendCodecPreferences.length>0&&(t=new s.default(t).withVideoSendCodecPreferences(void 0!==this.context.meetingSupportedVideoSendCodecPreferences?this.context.meetingSupportedVideoSendCodecPreferences:this.context.videoSendCodecPreferences).sdp),this.context.audioProfile&&(t=new s.default(t).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp,this.context.audioProfile.isStereo()&&(t=new s.default(t).withStereoAudio().sdp),this.context.enableAudioRedundancy())){let e=new s.default(t).getAudioPayloadTypes(),i=this.context.encodedTransformWorkerManager.redundantAudioEncodeTransformManager();i&&i.setAudioPayloadTypes(e)}this.logger.debug(()=>`local description is >>>${t}<<<`);let n={type:"offer",sdp:t,toJSON:null};await new Promise(async(t,i)=>{var r;this.cancelPromise=e=>{i(e)};try{await e.setLocalDescription(n),null===(r=this.context.meetingSessionTimingManager)||void 0===r||r.onSetLocalDescription(),t()}catch(e){i(e)}finally{delete this.cancelPromise}}),this.context.logger.info("set local description")}}t.default=d},12450:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(67941)),s=n(i(85207)),a=n(i(92220)),o=n(i(99481));class d extends o.default{constructor(e){super(e.logger),this.context=e,this.taskName="SetRemoteDescriptionTask"}cancel(){this.cancelICEPromise&&this.cancelICEPromise()}async run(){var e;this.context.peer||this.logAndThrow("session does not have peer connection; bypass set remote description");let t=this.context.sdpAnswer;t=new s.default(t).withoutServerReflexiveCandidates().sdp,this.context.audioProfile&&(t=new s.default(t).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp,this.context.audioProfile.isStereo()&&(t=new s.default(t).withStereoAudio().sdp)),void 0!==this.context.videoSendCodecPreferences&&this.context.videoSendCodecPreferences.length>0&&(t=new s.default(t).withVideoSendCodecPreferences(void 0!==this.context.meetingSupportedVideoSendCodecPreferences?this.context.meetingSupportedVideoSendCodecPreferences:this.context.videoSendCodecPreferences).sdp),this.context.prioritizedSendVideoCodecCapabilities=new s.default(t).prioritizedSendVideoCodecCapabilities(),this.context.currentVideoSendCodec=this.context.prioritizedSendVideoCodecCapabilities.length>0?this.context.prioritizedSendVideoCodecCapabilities[0]:void 0;let i=this.context.activeVideoInput;if(void 0!==i){let t=this.context.audioVideoController.configuration.credentials.attendeeId,n=new r.default(t).hasModality(r.default.MODALITY_CONTENT),s=i.getVideoTracks()[0];n&&(null===(e=this.context.currentVideoSendCodec)||void 0===e?void 0:e.codecName)===a.default.av1Main().codecName&&(s.contentHint="text",this.logger.info(`Setting content hint to text for AV1, attendee: ${t}`))}this.logger.info(`processed remote description is >>>${t}<<<`);let n={type:"answer",sdp:t,toJSON:null};try{await this.createICEConnectionCompletedPromise(n)}catch(e){throw e}}createICEConnectionCompletedPromise(e){return new Promise(async(t,i)=>{var n;let r=()=>{("connected"===this.context.peer.iceConnectionState||"completed"===this.context.peer.iceConnectionState)&&(this.context.peer.removeEventListener("iceconnectionstatechange",r),t())};
18this.cancelICEPromise=()=>{this.context.peer&&this.context.peer.removeEventListener("iceconnectionstatechange",r),i(Error(`${this.name()} got canceled while waiting for the ICE connection state`))},this.context.peer.addEventListener("iceconnectionstatechange",r);try{await this.context.peer.setRemoteDescription(e),null===(n=this.context.meetingSessionTimingManager)||void 0===n||n.onSetRemoteDescription(),this.logger.info("set remote description, waiting for ICE connection"),r()}catch(e){i(e)}})}}t.default=d},50949:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(99481));class s extends r.default{constructor(e){super(e.logger),this.context=e,this.taskName="StartEncodedTransformWorkerTask"}async run(){var e,t,i,n;if(!(null===(e=this.context.encodedTransformWorkerManager)||void 0===e?void 0:e.isEnabled())){this.context.logger.info(`${this.name()} is skipped because the worker manager is not enabled`);return}if(await this.context.encodedTransformWorkerManager.start({redundantAudio:!(null===(t=this.context.audioProfile)||void 0===t?void 0:t.hasRedundancyEnabled())}),null===(i=this.context.audioProfile)||void 0===i?void 0:i.hasRedundancyEnabled()){let e=this.context.encodedTransformWorkerManager.redundantAudioEncodeTransformManager();e&&(null===(n=this.context.audioVideoController)||void 0===n||n.addObserver(e))}let r=this.context.encodedTransformWorkerManager.metricsTransformManager();r&&(this.context.statsCollector&&r.addObserver(this.context.statsCollector),this.context.audioVideoController&&r.addObserver(this.context.audioVideoController));let s=this.context.encodedTransformWorkerManager.redundantAudioEncodeTransformManager();s&&this.context.statsCollector&&s.addObserver(this.context.statsCollector)}}t.default=s},99880:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(90176)),s=n(i(69647)),a=n(i(85207)),o=n(i(17349)),d=i(16802),l=n(i(66485)),c=n(i(37928)),u=i(8283),h=i(7472),f=n(i(99481));class m extends f.default{constructor(e){super(e.logger),this.context=e,this.taskName="SubscribeAndReceiveSubscribeAckTask",this.taskCanceler=null,this.textCompressor=new o.default(e.logger)}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}async run(){var e;let t;let i="";if(this.context.peer&&this.context.peer.localDescription&&(i=new a.default(this.context.peer.localDescription.sdp).withUnifiedPlanFormat().sdp),!this.context.enableSimulcast){let e=0,t=0;this.context.videoCaptureAndEncodeParameter&&(e=this.context.videoCaptureAndEncodeParameter.captureFrameRate(),t=this.context.videoCaptureAndEncodeParameter.encodeBitrates()[0]);let i={rid:"hi",maxBitrate:1e3*t,maxFramerate:e,active:!0};this.context.videoStreamIndex.integrateUplinkPolicyDecision([i])}let n=this.fixUpSubscriptionOrder(i,this.context.videoSubscriptions),r=this.context.videoDuplexMode===u.SdkStreamServiceType.TX||this.context.videoDuplexMode===u.SdkStreamServiceType.DUPLEX,s=i;if(void 0!==this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension&&this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension()||(s=new a.default(s).withoutDependencyDescriptorRtpHeaderExtension().sdp),this.context.serverSupportsCompression){let e=this.context.previousSdpOffer?this.context.previousSdpOffer.sdp:"";t=this.textCompressor.compress(s,e),this.context.logger.info(`Compressed the SDP message from ${s.length} to ${t.length} bytes.`),i=""}this.context.previousSdpOffer=new a.default(i);let o=new c.default(this.context.meetingSessionConfiguration.credentials.attendeeId,i,this.context.meetingSessionConfiguration.urls.audioHostURL,this.context.realtimeController.realtimeIsLocalAudioMuted(),!1,n,r,this.context.videoStreamIndex.localStreamDescriptions(),!0,t);void 0===this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption||(0,d.serverSideNetworkAdaptionIsNoneOrDefault)(this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption())||void 0===this.context.videoDownlinkBandwidthPolicy.getVideoPreferences||(o.videoSubscriptionConfiguration=(0,h.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration)(this.context,n.map(e=>0===e?0:this.context.videoStreamIndex.groupIdForStreamId(e)),this.context.videoDownlinkBandwidthPolicy.getVideoPreferences())),this.context.logger.info(`sending subscribe: ${JSON.stringify(o)}`),this.context.signalingClient.subscribe(o);let l=await this.receiveSubscribeAck();null===(e=this.context.meetingSessionTimingManager)||void 0===e||e.onSubscribeAckReceived(),this.context.logger.info(`got subscribe ack: ${JSON.stringify(l)}`);let f="";l.compressedSdpAnswer&&l.compressedSdpAnswer.length?(0===(f=this.textCompressor.decompress(l.compressedSdpAnswer,this.context.previousSdpAnswerAsString)).length&&(this.context.sdpAnswer="",this.context.previousSdpAnswerAsString="",this.logAndThrow("Error occurred while trying to decompress the SDP answer.")),this.context.logger.info(`Decompressed the SDP message from ${l.compressedSdpAnswer.length} to ${f.length} bytes.`),this.context.sdpAnswer=f):this.context.sdpAnswer=l.sdpAnswer,this.context.previousSdpAnswerAsString=this.context.sdpAnswer,this.context.videoStreamIndex.integrateSubscribeAckFrame(l)}fixUpSubscriptionOrder(e,t){if(void 0===this.context.transceiverController.getMidForStreamId)return t;let i=new Map;for(let e of t){let t=this.context.transceiverController.getMidForStreamId(e);if(void 0===t){0!==e&&this.logger.warn(`Could not find MID for stream ID: ${e}`);continue}i.set(t,e)}let n=new a.default(e).mediaSections(),r=[];for(let e of n)if("video"===e.mediaType){if("recvonly"===e.direction){let t=i.get(e.mid);if(void 0===t){this.logger.warn(`Could not find stream ID for MID: ${e.mid}`);continue}r.push(t)}else r.push(0)}return this.logger.info(`Fixed up ${JSON.stringify(t)} to ${JSON.stringify(r)} (may be same))}`),r}receiveSubscribeAck(){return new Promise((e,t)=>
18{let i=this.context;class n{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(Error("SubscribeAndReceiveSubscribeAckTask got canceled while waiting for SdkSubscribeAckFrame"))}handleSignalingClientEvent(t){if(t.isConnectionTerminated()){let e=`SubscribeAndReceiveSubscribeAckTask connection was terminated with code ${t.closeCode} and reason: ${t.closeReason}`;i.logger.warn(e);let n=s.default.TaskFailed;t.closeCode>=4500&&t.closeCode<4600&&(n=s.default.SignalingInternalServerError),i.audioVideoController.handleMeetingSessionStatus(new r.default(n),Error(e));return}t.type===l.default.ReceivedSignalFrame&&t.message.type===u.SdkSignalFrame.Type.SUBSCRIBE_ACK&&(this.signalingClient.removeObserver(this),e(t.message.suback))}}let a=new n(this.context.signalingClient);this.context.signalingClient.registerObserver(a),this.taskCanceler=a})}}t.default=m},53364:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),(n=i||(i={})).IDLE="IDLE",n.RUNNING="RUNNING",n.CANCELED="CANCELED",n.FINISHED="FINISHED",t.default=i},55159:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(71474)),s=n(i(99481));class a extends s.default{constructor(e,t,i){super(e),this.taskToRunBeforeTimeout=t,this.timeoutMs=i,this.taskName=`Timeout${this.timeoutMs}ms`,t.setParent(this)}cancel(){this.logger.info(`canceling timeout task ${this.name()} subtask ${this.taskToRunBeforeTimeout}`),this.taskToRunBeforeTimeout.cancel()}async run(){let e=new r.default(this.timeoutMs);e.start(()=>{this.logger.info(`timeout reached for task ${this.name()}`),this.taskToRunBeforeTimeout.cancel()});try{await this.taskToRunBeforeTimeout.run()}finally{e.stop()}this.logger.info(`timeout task ${this.name()} completed`)}}t.default=a},51112:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(69647)),s=n(i(99481));class a extends s.default{constructor(e){super(e.logger),this.context=e,this.taskName="WaitForAttendeePresenceTask"}cancel(){if(this.cancelPromise){let e=Error(`canceling ${this.name()} due to the meeting status code: ${r.default.NoAttendeePresent}`);this.cancelPromise(e),delete this.cancelPromise}}async run(){let e=this.context.meetingSessionConfiguration.credentials.attendeeId;return new Promise((t,i)=>{let n=(i,r,s,a,o)=>{e===i&&r&&(this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(n),t(),delete this.cancelPromise)};this.cancelPromise=e=>{this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(n),i(e)},this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(n)})}}t.default=a},847:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n){this.logger=e,this.browserBehavior=t,this.meetingSessionContext=i,this.encodedTransformWorkerManager=n,this._localCameraTransceiver=null,this._localAudioTransceiver=null,this.videoSubscriptions=[],this.defaultMediaStream=null,this.peer=null,this.streamIdToTransceiver=new Map,this.groupIdToTransceiver=new Map,this.handleTrack=e=>{var t;!e.receiver.transform&&(this.logger.info(`Applying video receiver transform to track ${e.track.id} not set after addTransceiver`),"video"===e.track.kind&&(null===(t=this.encodedTransformWorkerManager)||void 0===t?void 0:t.isEnabled())&&this.encodedTransformWorkerManager.setupVideoReceiverTransform(e.receiver))}}async setEncodingParameters(e){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;let t=this._localCameraTransceiver.sender;if(!e||0===e.size)return;let i=Array.from(e.values()),n=t.getParameters();if(n.encodings&&0!==n.encodings.length)for(let e of n.encodings)for(let t of i)(e.rid||t.rid)&&e.rid!==t.rid||(void 0!==t.active&&(e.active=t.active),void 0!==t.maxBitrate&&(e.maxBitrate=t.maxBitrate),void 0!==t.maxFramerate&&(e.maxFramerate=t.maxFramerate),void 0!==t.scaleResolutionDownBy&&(e.scaleResolutionDownBy=t.scaleResolutionDownBy),void 0!==t.priority&&(e.priority=t.priority),void 0!==t.networkPriority&&(e.networkPriority=t.networkPriority),void 0===t.scalabilityMode||(e.scalabilityMode=t.scalabilityMode));else n.encodings=i;await t.setParameters(n)}localAudioTransceiver(){return this._localAudioTransceiver}localVideoTransceiver(){return this._localCameraTransceiver}async setVideoSendingBitrateKbps(e){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;let t=this._localCameraTransceiver.sender;if(!t||e<=0)return;let i=t.getParameters();for(let t of(i.encodings||(i.encodings=[{}]),i.encodings))t.maxBitrate=1e3*e;await t.setParameters(i)}setPeer(e){this.peer=e,this.peer.addEventListener("track",this.handleTrack)}reset(){this._localCameraTransceiver=null,this._localAudioTransceiver=null,this.videoSubscriptions=[],this.defaultMediaStream=null,this.peer&&this.peer.removeEventListener("track",this.handleTrack),this.peer=null}useTransceivers(){return!!this.peer&&void 0!==this.peer.getTransceivers}hasVideoInput(){return!!this._localCameraTransceiver&&"sendrecv"===this._localCameraTransceiver.direction}trackIsVideoInput(e){return!!this._localCameraTransceiver&&(e===this._localCameraTransceiver.sender.track||e===this._localCameraTransceiver.receiver.track)}setupLocalTransceivers(){var e,t;this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),!this._localAudioTransceiver&&(this._localAudioTransceiver=this.peer.addTransceiver("audio",{direction:"inactive",streams:[this.defaultMediaStream]}),(null===(e=this.encodedTransformWorkerManager)||void 0===e?void 0:e.isEnabled())&&(this.encodedTransformWorkerManager.setupAudioSenderTransform(this._localAudioTransceiver.sender),this.encodedTransformWorkerManager.setupAudioReceiverTransform(this._localAudioTransceiver.receiver))),!this._localCameraTransceiver&&(this._localCameraTransceiver=this.peer.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream]}),this.configureLocalCameraHeaderExtensions(),(null===(t=this.encodedTransformWorkerManager)||void 0===t?void 0:t.isEnabled())&&this.encodedTransformWorkerManager.setupVideoSenderTransform(this._localCameraTransceiver.sender)))}static canUseHeaderExtensionApi(e){var t;let i=null===(t=e.getTransceivers)||void 0===t?void 0:t.call(e);
18if(!(null==i?void 0:i.length))return!1;let n=i[0];return"function"==typeof n.getHeaderExtensionsToNegotiate&&"function"==typeof n.setHeaderExtensionsToNegotiate}configureLocalCameraHeaderExtensions(){if(!i.canUseHeaderExtensionApi(this.peer))return;let e=this.meetingSessionContext?this.meetingSessionContext.videoUplinkBandwidthPolicy:void 0,t=(null==e?void 0:e.wantsVideoDependencyDescriptorRtpHeaderExtension)!==void 0&&e.wantsVideoDependencyDescriptorRtpHeaderExtension();try{let e=this._localCameraTransceiver,i=e.getHeaderExtensionsToNegotiate(),n=!1;for(let e of i)"stopped"===e.direction&&("http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00"===e.uri||t&&"https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension"===e.uri)&&(e.direction="sendrecv",n=!0);n&&e.setHeaderExtensionsToNegotiate(i)}catch(e){this.logger.warn(`Failed to configure video header extensions: ${e.message}`)}}async replaceAudioTrack(e){return this._localAudioTransceiver&&"sendrecv"===this._localAudioTransceiver.direction?(await this._localAudioTransceiver.sender.replaceTrack(e),!0):(this.logger.info("audio transceiver direction is not set up or not activated"),!1)}async setAudioInput(e){await this.setTransceiverInput(this._localAudioTransceiver,e)}async setVideoInput(e){await this.setTransceiverInput(this._localCameraTransceiver,e)}updateVideoTransceivers(e,t){if(!this.useTransceivers())return t.array();let i=this.peer.getTransceivers();return this.videoSubscriptions=[0],t=t.clone(),this.updateTransceivers(i,e,t),this.logger.debug(()=>this.debugDumpTransceivers()),this.videoSubscriptions}updateTransceivers(e,t,i){let n=i.array();for(let i of(0===e.length||e[0].stop?0!==e.length&&this.updateTransceiverWithStop(e,t,n):(this.logger.info("Updating transceivers without `stop` function"),this.updateTransceiverWithoutStop(e,t,n)),n)){let e=this.peer.addTransceiver("video",{direction:"recvonly",streams:[new MediaStream]});this.streamIdToTransceiver.set(i,e),this.groupIdToTransceiver.set(t.groupIdForStreamId(i),e),this.videoSubscriptions.push(i),this.logger.info(`adding transceiver mid: ${e.mid} subscription: ${i} direction: recvonly`)}}updateTransceiverWithStop(e,t,i){let n=1;for(let r of(this.videoSubscriptions=[0],e)){if(r===this._localCameraTransceiver||!this.transceiverIsVideo(r)||!r.mid)continue;let e=!1,s=t.streamIdForTrack("v_"+r.mid);if("inactive"!==r.direction&&void 0!==s){for(let[a,o]of i.entries())if(t.StreamIdsInSameGroup(s,o)){r.direction="recvonly",this.videoSubscriptions[n]=o,e=!0,this.streamIdToTransceiver.delete(s),this.streamIdToTransceiver.set(o,r),i.splice(a,1);break}}if(!e)for(let[e,i]of(this.videoSubscriptions[n]=0,this.logger.info(`Stopping MID: ${r.mid}, direction: ${r.direction}, current direction: ${r.currentDirection}`),r.stop(),this.streamIdToTransceiver.entries()))r.mid===i.mid&&(this.streamIdToTransceiver.delete(e),this.groupIdToTransceiver.delete(t.groupIdForStreamId(e)));n+=1}}updateTransceiverWithoutStop(e,t,i){let n=1;for(let r of e)if(r!==this._localCameraTransceiver&&this.transceiverIsVideo(r)){if(this.videoSubscriptions[n]=0,"inactive"!==r.direction){let e=t.streamIdForTrack("v_"+r.mid);if(void 0!==e){for(let[s,a]of i.entries())if(t.StreamIdsInSameGroup(e,a)){r.direction="recvonly",this.videoSubscriptions[n]=a,this.streamIdToTransceiver.delete(e),this.streamIdToTransceiver.set(a,r),i.splice(s,1);break}}}n+=1}for(let r of(n=1,e))if(r!==this._localCameraTransceiver&&this.transceiverIsVideo(r)){if("inactive"===r.direction&&i.length>0){r.direction="recvonly";let e=i.shift();this.videoSubscriptions[n]=e,this.streamIdToTransceiver.set(e,r),this.groupIdToTransceiver.set(t.groupIdForStreamId(e),r)}else if(0===this.videoSubscriptions[n])for(let[e,i]of(r.direction="inactive",this.streamIdToTransceiver.entries()))r===i&&(this.streamIdToTransceiver.delete(e),this.groupIdToTransceiver.delete(t.groupIdForStreamId(e)));n+=1}}getMidForStreamId(e){var t;return null===(t=this.streamIdToTransceiver.get(e))||void 0===t?void 0:t.mid}setStreamIdForMid(e,t){for(let[i,n]of this.streamIdToTransceiver.entries())if(n.mid===e){this.streamIdToTransceiver.delete(i),this.streamIdToTransceiver.set(t,n);return}}getMidForGroupId(e){var t,i;return null!==(i=null===(t=this.groupIdToTransceiver.get(e))||void 0===t?void 0:t.mid)&&void 0!==i?i:void 0}transceiverIsVideo(e){return e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind||e.sender&&e.sender.track&&"video"===e.sender.track.kind}debugDumpTransceivers(){let e="",t=0;for(let i of this.peer.getTransceivers())this.transceiverIsVideo(i)&&(e+=`transceiver index=${t} mid=${i.mid} subscription=${this.videoSubscriptions[t]} direction=${i.direction}
19`,t+=1);return e}async setTransceiverInput(e,t){e&&(t?e.direction="sendrecv":e.direction="inactive",await e.sender.replaceTrack(t))}setAudioPayloadTypes(e){this.logger.error("setAudioPayloadTypes is deprecated. Access encodedTransformWorkerManager directly via meeting session context.")}addRedundantAudioRecoveryMetricsObserver(e){this.logger.error("addRedundantAudioRecoveryMetricsObserver is deprecated. Access encodedTransformWorkerManager directly via meeting session context.")}removeRedundantAudioRecoveryMetricsObserver(e){this.logger.error("removeRedundantAudioRecoveryMetricsObserver is deprecated. Access encodedTransformWorkerManager directly via meeting session context.")}}t.default=i},56446:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
19dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(46599));class s extends r.default{constructor(e,t,i,n){super(e,t,i,n);let r=2;this.videoQualityControlParameterMap=new Map;for(let e=0;e<s.NAME_ARR_ASCENDING.length;e++){let t=s.NAME_ARR_ASCENDING[e];this.videoQualityControlParameterMap.set(t,{rid:t,scaleResolutionDownBy:r,maxBitrate:1e3*s.BITRATE_ARR_ASCENDING[e]}),r/=2}}async setEncodingParameters(e){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;let t=this._localCameraTransceiver.sender,i=Array.from(e.values());if(i.length<=0)return;let n=t.getParameters();if(n.encodings)for(let t=0;t<n.encodings.length;t++)n.encodings[t].rid===r.default.LOW_LEVEL_NAME&&this.copyEncodingParams(e.get(r.default.LOW_LEVEL_NAME),n.encodings[t]),n.encodings[t].rid===r.default.HIGH_LEVEL_NAME&&this.copyEncodingParams(e.get(r.default.HIGH_LEVEL_NAME),n.encodings[t]);else n.encodings=i;await t.setParameters(n),this.logVideoTransceiverParameters()}}s.NAME_ARR_ASCENDING=["low","hi"],s.BITRATE_ARR_ASCENDING=[300,1200],t.default=s},46599:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(847));class s extends r.default{constructor(e,t,i,n){super(e,t,i,n),this.videoQualityControlParameterMap=new Map;let r=4;for(let e=0;e<s.NAME_ARR_ASCENDING.length;e++){let t=s.NAME_ARR_ASCENDING[e];this.videoQualityControlParameterMap.set(t,{rid:t,scaleResolutionDownBy:r,maxBitrate:1e3*s.BITRATE_ARR_ASCENDING[e]}),r/=2}}async setEncodingParameters(e){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;let t=this._localCameraTransceiver.sender,i=Array.from(e.values());if(i.length<=0)return;let n=t.getParameters();if(n.encodings)for(let t of n.encodings)t.rid===s.LOW_LEVEL_NAME&&this.copyEncodingParams(e.get(s.LOW_LEVEL_NAME),t),t.rid===s.MID_LEVEL_NAME&&this.copyEncodingParams(e.get(s.MID_LEVEL_NAME),t),t.rid===s.HIGH_LEVEL_NAME&&this.copyEncodingParams(e.get(s.HIGH_LEVEL_NAME),t);else n.encodings=i;await t.setParameters(n),this.logVideoTransceiverParameters()}async setVideoSendingBitrateKbps(e){}setupLocalTransceivers(){var e,t;if(this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),this._localAudioTransceiver||(this._localAudioTransceiver=this.peer.addTransceiver("audio",{direction:"inactive",streams:[this.defaultMediaStream]}),(null===(e=this.encodedTransformWorkerManager)||void 0===e?void 0:e.isEnabled())?(this.encodedTransformWorkerManager.setupAudioSenderTransform(this._localAudioTransceiver.sender),this.encodedTransformWorkerManager.setupAudioReceiverTransform(this._localAudioTransceiver.receiver)):this.logger.warn("Media transforms not supported, skipping audio transform setup")),!this._localCameraTransceiver)){let e=Array.from(this.videoQualityControlParameterMap.values());this._localCameraTransceiver=this.peer.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream],sendEncodings:e}),this.configureLocalCameraHeaderExtensions(),(null===(t=this.encodedTransformWorkerManager)||void 0===t?void 0:t.isEnabled())&&this.encodedTransformWorkerManager.setupVideoSenderTransform(this._localCameraTransceiver.sender)}}logVideoTransceiverParameters(){let e=this._localCameraTransceiver.sender.getParameters().encodings,t="simulcast: current encoding parameters \n";for(let i of e)t+=`rid=${i.rid} maxBitrate=${i.maxBitrate} active=${i.active}
19 scaleDownBy=${i.scaleResolutionDownBy} maxFrameRate = ${i.maxFramerate} 
20`;this.logger.info(t)}copyEncodingParams(e,t){t.active=e.active,t.maxBitrate=e.maxBitrate,t.scaleResolutionDownBy=e.scaleResolutionDownBy,t.maxFramerate=e.maxFramerate}}s.LOW_LEVEL_NAME="low",s.MID_LEVEL_NAME="mid",s.HIGH_LEVEL_NAME="hi",s.NAME_ARR_ASCENDING=["low","mid","hi"],s.BITRATE_ARR_ASCENDING=[200,400,1100],t.default=s},50615:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(847));class s extends r.default{constructor(e,t,i,n){super(e,t,i,n)}setupLocalTransceivers(){this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),this._localCameraTransceiver||(this._localCameraTransceiver=this.peer.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream]}),this.configureLocalCameraHeaderExtensions()))}}t.default=s},19893:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TRANSCRIPTION_DATA_MESSAGE_TOPIC=void 0;let n=i(45809);t.TRANSCRIPTION_DATA_MESSAGE_TOPIC="aws:chime:transcription";class r{constructor(e){this.realtimeController=e,this.transcriptEventCallbacks=new Set}subscribeToTranscriptEvent(e){0===this.transcriptEventCallbacks.size&&this.realtimeController.realtimeSubscribeToReceiveDataMessage(t.TRANSCRIPTION_DATA_MESSAGE_TOPIC,e=>{for(let t of n.TranscriptEventConverter.from(e))for(let e of this.transcriptEventCallbacks)e(t)}),this.transcriptEventCallbacks.add(e)}unsubscribeFromTranscriptEvent(e){this.transcriptEventCallbacks.delete(e),0===this.transcriptEventCallbacks.size&&this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(t.TRANSCRIPTION_DATA_MESSAGE_TOPIC)}}t.default=r},18901:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},2706:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},45053:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},45809:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TranscriptEventConverter=void 0;let r=i(8283),s=n(i(18901)),a=n(i(62620)),o=n(i(78648)),d=n(i(28185)),l={[r.SdkTranscriptionStatus.Type.STARTED]:o.default.STARTED,[r.SdkTranscriptionStatus.Type.INTERRUPTED]:o.default.INTERRUPTED,[r.SdkTranscriptionStatus.Type.RESUMED]:o.default.RESUMED,[r.SdkTranscriptionStatus.Type.STOPPED]:o.default.STOPPED,[r.SdkTranscriptionStatus.Type.FAILED]:o.default.FAILED};class c{static from(e){let t;try{t=r.SdkTranscriptFrame.decode(e.data)}catch(e){throw Error("Cannot decode transcript data message: "+e)}let i=[];for(let e of t.events)if(e.status){let t=l[e.status.type];if(!t)continue;let n=new a.default;n.type=t,n.eventTimeMs=e.status.eventTime,n.transcriptionRegion=e.status.transcriptionRegion,n.transcriptionConfiguration=e.status.transcriptionConfiguration,e.status.message&&(n.message=e.status.message),i.push(n)}else if(e.transcript){let t=new s.default;for(let i of(t.results=[],e.transcript.results)){let e={channelId:i.channelId,isPartial:i.isPartial,resultId:i.resultId,startTimeMs:i.startTime,endTimeMs:i.endTime,alternatives:[]};if(i.languageCode&&(e.languageCode=i.languageCode),i.languageIdentification&&i.languageIdentification.length>0)for(let t of(e.languageIdentification=[],i.languageIdentification)){let i={languageCode:t.languageCode,score:t.score};e.languageIdentification.push(i)}for(let t of i.alternatives){let i={items:[],transcript:t.transcript};for(let e of t.items){let t={content:e.content,attendee:{attendeeId:e.speakerAttendeeId,externalUserId:e.speakerExternalUserId},startTimeMs:e.startTime,endTimeMs:e.endTime,type:null};switch(e.vocabularyFilterMatch&&(t.vocabularyFilterMatch=e.vocabularyFilterMatch),e.hasOwnProperty("stable")&&(t.stable=e.stable),e.hasOwnProperty("confidence")&&(t.confidence=e.confidence),e.type){case r.SdkTranscriptItem.Type.PRONUNCIATION:t.type=d.default.PRONUNCIATION;break;case r.SdkTranscriptItem.Type.PUNCTUATION:t.type=d.default.PUNCTUATION}i.items.push(t)}for(let e of t.entities){i.entities||(i.entities=[]);let t={category:e.category,confidence:e.confidence,content:e.content,startTimeMs:e.startTime,endTimeMs:e.endTime};e.type&&(t.type=e.type),i.entities.push(t)}e.alternatives.push(i)}t.results.push(e)}i.push(t)}return i}}t.TranscriptEventConverter=c},31909:function(e,t){"use strict";
20Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},28185:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),(n=i||(i={})).PRONUNCIATION="pronunciation",n.PUNCTUATION="punctuation",t.default=i},48898:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},45252:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},62620:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},78648:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),(n=i||(i={})).STARTED="started",n.INTERRUPTED="interrupted",n.RESUMED="resumed",n.STOPPED="stopped",n.FAILED="failed",t.default=i},50794:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(22031),s=n(i(61492)),a=i(93002);class o{constructor(e){var t,i,n,s,o,d,l,c,u,h,f,m,p,g;this.logger=e;try{this.parserResult=navigator&&navigator.userAgent?new r.UAParser(navigator.userAgent).getResult():void 0}catch(t){e.error(t.message)}this.browserMajorVersion=(null===(n=null===(i=null===(t=this.parserResult)||void 0===t?void 0:t.browser)||void 0===i?void 0:i.version)||void 0===n?void 0:n.split(".")[0])||a.USER_AGENT_PARSER_UNAVAILABLE,this.browserName=(null===(s=this.parserResult)||void 0===s?void 0:s.browser.name)||a.USER_AGENT_PARSER_UNAVAILABLE,this.browserVersion=(null===(o=this.parserResult)||void 0===o?void 0:o.browser.version)||a.USER_AGENT_PARSER_UNAVAILABLE,this.deviceName=[(null===(d=this.parserResult)||void 0===d?void 0:d.device.vendor)||"",(null===(l=this.parserResult)||void 0===l?void 0:l.device.model)||""].join(" ").trim()||a.USER_AGENT_PARSER_UNAVAILABLE,this.osName=(null===(c=this.parserResult)||void 0===c?void 0:c.os.name)||a.USER_AGENT_PARSER_UNAVAILABLE,this.osVersion=(null===(u=this.parserResult)||void 0===u?void 0:u.os.version)||a.USER_AGENT_PARSER_UNAVAILABLE,this.engineName=(null===(f=null===(h=this.parserResult)||void 0===h?void 0:h.engine)||void 0===f?void 0:f.name)||"",this.engineMajorVersion=parseInt((null===(g=null===(p=null===(m=this.parserResult)||void 0===m?void 0:m.engine)||void 0===p?void 0:p.version)||void 0===g?void 0:g.split(".")[0])||"0")}getParserResult(){return{browserMajorVersion:this.browserMajorVersion,browserName:this.browserName,browserVersion:this.browserVersion,deviceName:this.deviceName,osName:this.osName,osVersion:this.osVersion,sdkVersion:s.default.sdkVersion,sdkName:s.default.sdkName,engineName:this.engineName,engineMajorVersion:String(this.engineMajorVersion)}}getEngineName(){return this.engineName}getEngineMajorVersion(){return this.engineMajorVersion}async updateWithHighEntropyValues(e=!1){var t,i,n,r;if(!(null===(t=null==navigator?void 0:navigator.userAgentData)||void 0===t?void 0:t.getHighEntropyValues)){null===(i=this.logger)||void 0===i||i.debug("User-Agent Client Hints API not available");return}try{let t,i,r;let s=await navigator.userAgentData.getHighEntropyValues(["fullVersionList","model","platform","platformVersion"]);if(s.platform&&(t=this.osName,e||t===a.USER_AGENT_PARSER_UNAVAILABLE)&&(this.osName=s.platform),s.platformVersion&&(i=this.osVersion,e||i===a.USER_AGENT_PARSER_UNAVAILABLE)&&(this.osVersion=s.platformVersion),void 0!==s.model&&(r=this.deviceName,e||r===a.USER_AGENT_PARSER_UNAVAILABLE)&&(this.deviceName=s.model||a.USER_AGENT_PARSER_UNAVAILABLE),null===(n=s.fullVersionList)||void 0===n?void 0:n.length){let t=this.selectPrimaryBrowser(s.fullVersionList);if(t){let i;i=this.browserName,(e||i===a.USER_AGENT_PARSER_UNAVAILABLE)&&(this.browserName=t.brand),this.browserVersion=t.version,this.browserMajorVersion=t.version.split(".")[0]}}}catch(e){null===(r=this.logger)||void 0===r||r.error(`Failed to get high entropy values: ${e}`)}}selectPrimaryBrowser(e){let t=e.filter(e=>!e.brand.startsWith("Not"));for(let e of["Google Chrome","Microsoft Edge","Opera","Brave","Vivaldi"]){let i=t.find(t=>t.brand===e);if(i)return i}return t.find(e=>"Chromium"!==e.brand)||t[0]||null}}t.default=o},93002:function(e,t){"use strict";
20Object.defineProperty(t,"__esModule",{value:!0}),t.USER_AGENT_PARSER_UNAVAILABLE=void 0,t.USER_AGENT_PARSER_UNAVAILABLE="Unavailable"},91973:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.queue=Promise.resolve()}add(e){return new Promise((t,i)=>{this.queue=this.queue.then(e).then(t).catch(i)})}}t.default=i},24670:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.None=t.Some=t.Maybe=void 0;class i{static of(e){return null==e?r.of():n.of(e)}}t.Maybe=i;class n{constructor(e){this.value=e,this.isSome=!0,this.isNone=!1}map(e){return i.of(e(this.value))}flatMap(e){return e(this.value)}get(){return this.value}getOrElse(e){return this.value}defaulting(e){return i.of(this.getOrElse(e))}static of(e){if(null==e)throw Error("value is ${value}");return new n(e)}}t.Some=n;class r{constructor(){this.isSome=!1,this.isNone=!0}get(){throw Error("value is null")}getOrElse(e){return e}map(e){return new r}flatMap(e){return new r}defaulting(e){return i.of(this.getOrElse(e))}static of(){return new r}}t.None=r},76477:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.SuppressedError=void 0,t.wait=function(e){return new Promise(t=>setTimeout(t,e))},t.isIFramed=function(){var e;try{return(null===(e=window.frameElement)||void 0===e?void 0:e.nodeName)==="IFRAME"||parent!==top}catch(e){return!0}},t.toLowerCasePropertyNames=function e(t){return null===t?null:"object"!=typeof t?t:Array.isArray(t)?t.map(e):Object.keys(t).reduce((i,n)=>{let r=t[n],s="object"==typeof r?e(r):r;return i[n.toLowerCase()]=s,i},{})},t.getDefaultAssetSpec=function(){let e=r.default.sdkVersionSemVer;return{assetGroup:`sdk-${e.major}.${e.minor}`}},t.getFormattedOffset=function(e){let t=Math.abs(e),i=Math.floor(t/60).toString().padStart(2,"0"),n=Math.floor(t%60).toString().padStart(2,"0");return`${e<=0?"+":"-"}${i}:${n}`},t.getRandomValues=function(e){try{window.crypto.getRandomValues(e)}catch(t){new DataView(e.buffer).setUint32(0,Math.trunc(4294967296*Math.random()),!0)}},t.iterateEvery=function(e,t){let i;if(e){for(let n of e)try{t(n)}catch(e){i=new s(e,i)}if(i)throw i}};let r=n(i(61492));class s extends Error{constructor(e,t,i){var n;super(null!=i?i:`${null!==(n=null==e?void 0:e.message)&&void 0!==n?n:e}`),this.error=e,this.suppressed=t}}t.SuppressedError=s},61492:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(27572));class a{static get sdkName(){return"amazon-chime-sdk-js"}static get sdkVersion(){return s.default.semverString}static get sdkVersionSemVer(){var e,t,i,n;let r=s.default.semverString.match(/^(?<major>[0-9]+)\.(?<minor>[0-9]+)((?:\.(?<patch>[0-9]+))(?:-(?<preRelease>[a-zA-Z]+(\.[0-9])*))?)?/);return{major:null===(e=null==r?void 0:r.groups)||void 0===e?void 0:e.major,minor:null===(t=null==r?void 0:r.groups)||void 0===t?void 0:t.minor,patch:null===(i=null==r?void 0:r.groups)||void 0===i?void 0:i.patch,preRelease:null===(n=null==r?void 0:r.groups)||void 0===n?void 0:n.preRelease}}static get buildSHA(){return s.default.hash.substring(1)}static get sdkUserAgentLowResolution(){let e=new r.default;return`${e.name()}-${e.majorVersion()}`}static urlWithVersion(e){let t=new URL(e);return t.searchParams.append(a.X_AMZN_VERSION,a.sdkVersion),t.searchParams.append(a.X_AMZN_USER_AGENT,a.sdkUserAgentLowResolution),t.toString()}}a.X_AMZN_VERSION="X-Amzn-Version",a.X_AMZN_USER_AGENT="X-Amzn-User-Agent",t.default=a},27572:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={hash:"c99a725",raw:"v3.32.0",semverString:"3.32.0"}},10512:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n,r,s=1,a=!1){this.cameraWidth=e,this.cameraHeight=t,this.cameraFrameRate=i,this.maxEncodeBitrateKbps=n,this.isSimulcast=r,this.scaleResolutionDownBy=s,this.isSVC=a}equal(e){let t=e.captureWidth()===this.cameraWidth&&e.captureHeight()===this.cameraHeight&&e.captureFrameRate()===this.cameraFrameRate&&e.encodeBitrates().length===this.encodeBitrates().length&&e.encodeScaleResolutionDownBy().length===this.encodeScaleResolutionDownBy().length&&e.encodeWidths().length===this.encodeWidths().length&&e.encodeHeights().length===this.encodeHeights().length&&e.isSVCEncoding()===this.isSVC;
20if(t){for(let i=0;i<e.encodeWidths().length;i++)if(e.encodeWidths()[i]!==this.encodeWidths()[i]||e.encodeHeights()[i]!==this.encodeHeights()[i]||e.encodeBitrates()[i]!==this.encodeBitrates()[i]||e.encodeScaleResolutionDownBy()[i]!==this.encodeScaleResolutionDownBy()[i]){t=!1;break}}return t}clone(){return new i(this.cameraWidth,this.cameraHeight,this.cameraFrameRate,this.maxEncodeBitrateKbps,this.isSimulcast,this.scaleResolutionDownBy,this.isSVC)}captureWidth(){return this.cameraWidth}captureHeight(){return this.cameraHeight}captureFrameRate(){return this.cameraFrameRate}encodeBitrates(){return[this.maxEncodeBitrateKbps]}encodeScaleResolutionDownBy(){return[this.scaleResolutionDownBy]}encodeWidths(){return[this.cameraWidth]}encodeHeights(){return[this.cameraHeight]}isSVCEncoding(){return this.isSVC}}t.default=i},55725:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(27316));class s{constructor(e){this.selfAttendeeId=e,this.reset()}reset(){this.optimalReceiveSet=new r.default,this.subscribedReceiveSet=new r.default,this.videoSources=void 0}updateIndex(e){this.videoIndex=e,this.optimalReceiveSet=this.calculateOptimalReceiveSet(e)}updateMetrics(e){}wantsResubscribe(){return!this.subscribedReceiveSet.equal(this.optimalReceiveSet)}chooseSubscriptions(){return this.subscribedReceiveSet=this.optimalReceiveSet.clone(),this.subscribedReceiveSet.clone()}chooseRemoteVideoSources(e){this.videoSources=e,this.optimalReceiveSet=this.calculateOptimalReceiveSet(this.videoIndex).clone()}calculateOptimalReceiveSet(e){let t=new r.default;if(!this.videoIndex||this.videoIndex.allStreams().empty())return t;let i=e.highestQualityStreamFromEachGroupExcludingSelf(this.selfAttendeeId),n=this.videoSources?this.videoSources:this.videoIndex.allVideoSendingSourcesExcludingSelf(this.selfAttendeeId),a=this.videoIndex.remoteStreamDescriptions(),o=new Map;for(let e of a)i.contain(e.streamId)&&o.set(e.attendeeId,e);let d=0;for(let e of n){let i=e.attendee.attendeeId;if(o.has(i)){let e=o.get(i);if(d+e.maxBitrateKbps<=s.maxReceiveBitrateKbps)t.add(e.streamId),d+=e.maxBitrateKbps;else{console.warn("total bitrate "+(d+e.maxBitrateKbps)+" exceeds maximum limit (15000). Use chooseRemoteVideoSources to select a subset of participants to avoid this.");break}}}return t}}s.maxReceiveBitrateKbps=15e3,t.default=s},10197:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(27316));class s{reset(){}updateIndex(e){}updateMetrics(e){}wantsResubscribe(){return!1}chooseSubscriptions(){return new r.default}}t.default=s},14607:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.TargetDisplaySize=void 0,(n=i||(t.TargetDisplaySize=i={}))[n.Low=0]="Low",n[n.Medium=1]="Medium",n[n.High=2]="High",n[n.Maximum=3]="Maximum",t.default=i},78474:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(26519)),s=n(i(16802)),a=n(i(92056)),o=i(7472),d=n(i(64891)),l=n(i(64336));class c extends d.default{static createConfig(){let e=new l.default;return e.serverSideNetworkAdaption=s.default.None,e}constructor(e){super(e,c.createConfig()),this.logger=e,this.shouldPauseTiles=!1,this.videoPreferences=void 0}reset(){super.reset(),this.shouldPauseTiles=!1,this.videoPreferences=void 0}updateIndex(e){super.updateIndex(e);let t=o.VideoPreferences.prepare(),i=!1;for(let n of e.remoteStreamDescriptions())t.some(e=>e.attendeeId===n.attendeeId)||(n.attendeeId.endsWith(r.default.Modality)?(t.add(new a.default(n.attendeeId,1)),i=!0):t.add(new a.default(n.attendeeId,2)));i?(this.videoPreferences=t.build(),this.videoPreferencesUpdated=!0):this.videoPreferences=void 0}chooseRemoteVideoSources(e){this.logger.error("chooseRemoteVideoSources should not be called by VideoAdaptiveProbePolicy")}}t.default=c},92056:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
20dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(14607)),s=n(i(52612));class a{constructor(e,t,i,n){this.attendeeId=e,this.priority=t,this.targetSize=void 0!==i?i:r.default.Maximum,this.degradationPreference=void 0!==n?n:s.default.Balanced}partialCompare(e){return this.priority-e.priority}equals(e){return this.attendeeId===e.attendeeId&&this.targetSize===e.targetSize&&this.priority===e.priority&&this.degradationPreference===e.degradationPreference}clone(){return new a(this.attendeeId,this.priority,this.targetSize,this.degradationPreference)}targetSizeToBitrateKbps(e){switch(e){case r.default.Maximum:return a.MAXIMUM_BITRATE_KBPS;case r.default.High:return a.HIGH_BITRATE_KBPS;case r.default.Medium:return a.MID_BITRATE_KBPS;case r.default.Low:return a.LOW_BITRATE_KBPS}}}a.LOW_BITRATE_KBPS=300,a.MID_BITRATE_KBPS=600,a.HIGH_BITRATE_KBPS=1500,a.MAXIMUM_BITRATE_KBPS=1e4,t.default=a},7472:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.VideoPreferences=t.MutableVideoPreferences=void 0,t.convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration=function(e,t,i){if(void 0===e.transceiverController.getMidForGroupId||void 0===e.videoStreamIndex.attendeeIdForGroupId||void 0===i)return[];let n=[],s=new Map,a=new Map;for(let i of t){let t=e.transceiverController.getMidForGroupId(i);if(void 0===t)continue;let n=e.videoStreamIndex.attendeeIdForGroupId(i);s.set(n,t),a.set(n,i)}for(let e of i){let t=new r.default,i=s.get(e.attendeeId);void 0!==i&&(t.mid=i,t.attendeeId=e.attendeeId,t.groupId=a.get(e.attendeeId),void 0!==t.groupId&&(t.priority=Number.MAX_SAFE_INTEGER-e.priority,t.targetBitrateKbps=e.targetSizeToBitrateKbps(e.targetSize),t.qualityAdaptationPreference=e.degradationPreference,n.push(t)))}return n};let r=n(i(83065));class s{constructor(e=[]){this.items=e}static default(){return new s([])}[Symbol.iterator](){let e=0,t=this.items;return{next:()=>e<t.length?{done:!1,value:t[e++]}:{done:!0,value:null}}}first(){return this.items[0]}add(e){this.items.push(e)}replaceFirst(e,t){let i=this.items.findIndex(t);-1===i?this.items.push(e):this.has(e)?this.items.splice(i,1):this.items[i]=e}remove(e){this.items=this.items.filter(t=>!t.equals(e))}clear(){this.items=[]}isEmpty(){return 0===this.items.length}equals(e){if(e===this)return!0;if(e.items.length!==this.items.length)return!1;for(let t of this.items)if(!e.items.some(e=>e.equals(t)))return!1;return!0}has(e){return this.items.some(t=>t.equals(e))}some(e){return this.items.some(e)}clone(){return new s([...this.items])}sort(){this.items.sort((e,t)=>e.partialCompare(t))}modify(){return new a(this)}}class a{constructor(e=new s){this.items=e,this.copied=!1}cow(){this.copied||(this.items=this.items.clone(),this.copied=!0)}add(e){this.items.has(e)||(this.cow(),this.items.add(e))}replaceFirst(e,t){(!this.items.has(e)||this.items.some(t))&&(this.cow(),this.items.replaceFirst(e,t))}remove(e){this.items.has(e)&&(this.cow(),this.items.remove(e))}some(e){return this.items.some(e)}clear(){this.items.isEmpty()||(this.cow(),this.items.clear())}build(){return this.copied&&this.items.sort(),this.copied=!1,this.items}}class o{constructor(e){this.builder=e}add(e){this.builder.add(e)}replaceFirst(e,t){this.builder.replaceFirst(e,t)}remove(e){this.builder.remove(e)}some(e){return this.builder.some(e)}clear(){this.builder.clear()}build(){return new d(this.builder.build())}}t.MutableVideoPreferences=o;class d{static prepare(){return new o(new a)}static default(){return new d(s.default())}constructor(e){this.items=e}[Symbol.iterator](){return this.items[Symbol.iterator]()}highestPriority(){var e;return null===(e=this.items.first())||void 0===e?void 0:e.priority}sorted(){return this.items[Symbol.iterator]()}equals(e){return e===this||this.items.equals(e.items)}modify(){return new o(this.items.modify())}some(e){return this.items.some(e)}isEmpty(){return this.items.isEmpty()}clone(){let e=d.prepare();for(let t of this.items)e.add(t.clone());return e.build()}}t.VideoPreferences=d,t.default=d},64891:function(e,t,i){"use strict";var n,r=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);
20(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return(n=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i=n(e),a=0;a<i.length;a++)"default"!==i[a]&&r(t,e,i[a]);return s(t,e),t}),o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let d=o(i(2476)),l=o(i(87911)),c=o(i(40372)),u=o(i(26519)),h=i(94618),f=a(i(16802)),m=o(i(38163)),p=o(i(27316)),g=o(i(55725)),v=o(i(14607)),b=o(i(92056)),S=i(7472),y=o(i(64336)),C=o(i(52612));class w{constructor(){this.bandwidthEstimateKbps=0,this.usedBandwidthKbps=0,this.packetsLost=0,this.nackCount=0,this.rttMs=0}}class T{constructor(e,t=y.default.Default){this.logger=e,this.videoPriorityBasedPolicyConfig=t,this.shouldPauseTiles=!0,this.observerQueue=new Set,this.pausedBwAttendeeIds=new Set,this.wantsResubscribeObserver=void 0,this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption===f.default.Default&&(this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption=f.default.BandwidthProbingAndRemoteVideoQualityAdaption),this.reset()}reset(){this.allHighestPolicy=new g.default(""),this.optimalReceiveSet=new p.default,this.optimalReceiveStreams=[],this.optimalNonPausedReceiveStreams=[],this.subscribedReceiveSet=new p.default,this.subscribedReceiveStreams=[],this.videoPreferences=void 0,this.defaultVideoPreferences=void 0,this.shouldPauseTiles=!0,this.pausedStreamIds=new p.default,this.pausedBwAttendeeIds=new Set,this.videoPreferencesUpdated=!1,this.logCount=0,this.startupPeriod=!0,this.usingPrevTargetRate=!1,this.rateProbeState="Not Probing",this.firstEstimateTimestamp=0,this.lastUpgradeRateKbps=0,this.timeBeforeAllowSubscribeMs=T.MIN_TIME_BETWEEN_SUBSCRIBE_MS,this.lastProbeTimestamp=Date.now(),this.timeBeforeAllowProbeMs=T.MIN_TIME_BETWEEN_PROBE_MS,this.downlinkStats=new w,this.prevDownlinkStats=new w,this.probeFailed=!1,this.serverSideNetworkAdaption=this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption,this.pendingActionAfterUpdatedPreferences=!1}bindToTileController(e){this.tileController=e,this.logger.info("tileController bound")}setWantsResubscribeObserver(e){this.wantsResubscribeObserver=e}chooseRemoteVideoSources(e){var t;if(null===(t=this.videoPreferences)||void 0===t||!t.equals(e)){if(this.videoPreferences=null==e?void 0:e.clone(),!(0,f.serverSideNetworkAdaptionIsNoneOrDefault)(this.serverSideNetworkAdaption)&&(this.pendingActionAfterUpdatedPreferences=!0,void 0!==this.wantsResubscribeObserver&&(this.wantsResubscribeObserver(),this.pendingActionAfterUpdatedPreferences=!1),this.serverSideNetworkAdaption===f.default.BandwidthProbingAndRemoteVideoQualityAdaption)){let e=[];for(let t of this.videoPreferences){let i=new m.default;i.attendee=new d.default,i.attendee.attendeeId=t.attendeeId,e.push(i)}this.allHighestPolicy.chooseRemoteVideoSources(e);return}this.videoPreferencesUpdated=!0,this.logger.info(`bwe: setVideoPreferences bwe: new preferences: ${JSON.stringify(e)}`)}}updateIndex(e){this.videoIndex=e,this.serverSideNetworkAdaption===f.default.BandwidthProbingAndRemoteVideoQualityAdaption&&this.allHighestPolicy.updateIndex(e),this.videoPreferences||this.updateDefaultVideoPreferences()}updateDefaultVideoPreferences(){let e=new Set;for(let t of this.videoIndex.remoteStreamDescriptions())e.add(t.attendeeId);let t=S.VideoPreferences.prepare(),i=e.size,n=v.default.Maximum;for(let r of(i>8?n=v.default.Low:i>4&&(n=v.default.Medium),e))t.add(new b.default(r,1,n));this.defaultVideoPreferences=t.build()}updateMetrics(e){if(!this.videoIndex||this.videoIndex.allStreams().empty())return;this.prevDownlinkStats=this.downlinkStats,this.downlinkStats=new w;let t=e.getObservableMetrics();for(let i in this.downlinkStats.bandwidthEstimateKbps=t.availableIncomingBitrate/1e3,e.streamMetricReports){let t=Number.parseInt(i,10),n=e.streamMetricReports[t];n.direction===l.default.DOWNSTREAM&&n.mediaType===c.default.VIDEO&&(n.currentMetrics.hasOwnProperty("nackCount")&&(this.downlinkStats.nackCount+=e.countPerSecond("nackCount",t)),n.currentMetrics.hasOwnProperty("packetsLost")&&(this.downlinkStats.packetsLost+=e.countPerSecond("packetsLost",t)),n.currentMetrics.hasOwnProperty("bytesReceived")&&(this.downlinkStats.usedBandwidthKbps+=e.bitsPerSecond("bytesReceived",t)/1e3))}}wantsResubscribe(){let e=!1;return(0,f.serverSideNetworkAdaptionIsNoneOrDefault)(this.serverSideNetworkAdaption)||(e||(e=this.pendingActionAfterUpdatedPreferences),this.serverSideNetworkAdaption!==f.default.BandwidthProbingAndRemoteVideoQualityAdaption)?(this.calculateOptimalReceiveSet(),e||(e=!this.subscribedReceiveSet.equal(this.optimalReceiveSet)),e):e||this.allHighestPolicy.wantsResubscribe()}chooseSubscriptions(){return(0,f.serverSideNetworkAdaptionIsNoneOrDefault)(this.serverSideNetworkAdaption)||(this.pendingActionAfterUpdatedPreferences=!1,this.serverSideNetworkAdaption!==f.default.BandwidthProbingAndRemoteVideoQualityAdaption)?(this.subscribedReceiveSet.equal(this.optimalReceiveSet)||(this.lastSubscribeTimestamp=Date.now()),this.subscribedReceiveSet=this.optimalReceiveSet.clone(),this.subscribedReceiveStreams=this.optimalReceiveStreams.slice(),this.subscribedReceiveSet.clone()):this.allHighestPolicy.chooseSubscriptions()}
20addObserver(e){this.observerQueue.add(e)}removeObserver(e){this.observerQueue.delete(e)}forEachObserver(e){for(let t of this.observerQueue)e(t)}setVideoPriorityBasedPolicyConfigs(e){this.videoPriorityBasedPolicyConfig=e}calculateOptimalReceiveStreams(){var e;let t=[],i=this.videoIndex.remoteStreamDescriptions();if(0===i.length||(null===(e=this.videoPreferences)||void 0===e?void 0:e.isEmpty())){this.optimalReceiveStreams=[];return}let n=this.rateProbeState;this.cleanBwPausedTiles(i),this.handleAppPausedStreams(t,i);let r=new Map;for(let e of this.getCurrentVideoPreferences())r.set(e.attendeeId,e);let s=i.filter(e=>r.has(e.attendeeId)),a=!this.streamsWithPreferenceDidChange(s),o=!this.startupPeriod&&a;if(o&&Date.now()-this.lastSubscribeTimestamp<this.timeBeforeAllowSubscribeMs)return;for(let e of(s.sort((e,t)=>e.maxBitrateKbps===t.maxBitrateKbps?e.streamId-t.streamId:e.maxBitrateKbps-t.maxBitrateKbps),s))(0===e.avgBitrateKbps||e.avgBitrateKbps>e.maxBitrateKbps)&&(e.attendeeId.endsWith(u.default.Modality)&&e.maxBitrateKbps<100?e.maxBitrateKbps=e.avgBitrateKbps:e.avgBitrateKbps=e.maxBitrateKbps);let d=new Set;for(let e of this.getCurrentVideoPreferences()){let t;let i=s.filter(t=>t.attendeeId===e.attendeeId);if(i.length<3)continue;let n=15,r=153600;for(let s of(i.forEach(e=>{n=Math.max(n,e.maxFrameRate),r=Math.max(r,e.totalPixels())}),i.sort((t,i)=>{if(e.degradationPreference===C.default.MaintainResolution)return 2>Math.abs(t.maxFrameRate-i.maxFrameRate)?t.totalPixels()-i.totalPixels():t.maxFrameRate-i.maxFrameRate;if(e.degradationPreference===C.default.MaintainFramerate)return t.totalPixels()===i.totalPixels()?t.maxFrameRate-i.maxFrameRate:t.totalPixels()-i.totalPixels();{let e=e=>e.avgBitrateKbps*Math.pow(2,5*e.maxFrameRate/n*Math.pow(4,e.totalPixels()/r));return e(t)-e(i)}}),i)){if(void 0!==t&&(s.maxFrameRate<t.maxFrameRate&&Math.abs(t.maxFrameRate-s.maxFrameRate)>2||s.totalPixels()<t.totalPixels())){d.add(s.streamId);continue}t=s}}let l=s.filter(e=>!d.has(e.streamId));this.logger.info(`Filtered to ${JSON.stringify(l)}`);let c={targetDownlinkBitrate:0,chosenTotalBitrate:0,deltaToNextUpgrade:0};c.targetDownlinkBitrate=this.determineTargetRate();let m=this.subscribedReceiveSet.size(),p=this.downlinkStats.bandwidthEstimateKbps,g=!this.videoPriorityBasedPolicyConfig.allowSubscribe(m,p);if(this.probeFailed&&(this.probeFailed=!1,this.timeBeforeAllowSubscribeMs=T.MIN_TIME_BETWEEN_SUBSCRIBE_MS,o&&g))return;let v=this.priorityPolicy(c,l,t),b=!(0,f.serverSideNetworkAdaptionIsNoneOrDefault)(this.serverSideNetworkAdaption),S=0;if(b||this.startupPeriod||!a?(this.setProbeState("Not Probing"),this.lastUpgradeRateKbps=0):"Probing"===this.rateProbeState?S=this.handleProbe(t,c.targetDownlinkBitrate):0!==c.deltaToNextUpgrade&&(S=this.maybeOverrideOrProbe(t,c,v)),this.previousStreamsWithPreference=s,this.videoPreferencesUpdated=!1,1===S){this.logger.info(`bwe: keepSameSubscriptions stats:${JSON.stringify(this.downlinkStats)}`),this.prevTargetRateKbps=c.targetDownlinkBitrate;return}if(2===S){let e=this.calculateSubscribeRate(this.preProbeNonPausedReceiveStreams);this.optimalReceiveStreams=this.preProbeReceiveStreams.slice(),this.processBwPausedStreams(s,this.preProbeNonPausedReceiveStreams),this.logger.info("bwe: Use Pre-Probe subscription subscribedRate:"+e);return}this.optimalNonPausedReceiveStreams=t.slice();let y=this.pausedBwAttendeeIds.size;this.processBwPausedStreams(s,t),this.logger.getLogLevel()<=h.LogLevel.INFO&&(this.logCount%15==0||this.rateProbeState!==n||this.optimalReceiveStreams.length!==t.length||y!==this.pausedBwAttendeeIds.size)&&(this.logger.info(this.policyStateLogStr(i,c.targetDownlinkBitrate)),this.logCount=0),this.logCount++,this.prevTargetRateKbps=c.targetDownlinkBitrate,this.optimalReceiveStreams=t.slice()}calculateOptimalReceiveSet(){let e=new p.default;for(let t of(this.calculateOptimalReceiveStreams(),this.optimalReceiveStreams))e.add(t.streamId);if(!this.optimalReceiveSet.equal(e)){let t=this.calculateSubscribeRate(this.optimalReceiveStreams);this.logger.info(`bwe: new streamSelection: ${JSON.stringify(e)} subscribedRate:${t}`)}this.optimalReceiveSet=e}determineTargetRate(){let e=0,t=Date.now();return 0!==this.downlinkStats.bandwidthEstimateKbps?(0===this.firstEstimateTimestamp&&(this.firstEstimateTimestamp=t),this.startupPeriod&&(this.downlinkStats.bandwidthEstimateKbps>T.DEFAULT_BANDWIDTH_KBPS||this.downlinkStats.packetsLost>0||t-this.firstEstimateTimestamp>T.STARTUP_PERIOD_MS&&this.downlinkStats.bandwidthEstimateKbps<=this.prevDownlinkStats.bandwidthEstimateKbps)&&(this.startupPeriod=!1,this.prevTargetRateKbps=this.downlinkStats.bandwidthEstimateKbps),this.startupPeriod?e=T.DEFAULT_BANDWIDTH_KBPS:"Probing"===this.rateProbeState&&this.downlinkStats.usedBandwidthKbps>this.downlinkStats.bandwidthEstimateKbps&&this.downlinkStats.packetsLost<T.SPURIOUS_PACKET_LOST_THRESHOLD?(this.logger.info(`bwe: In probe state, overriding estimate ${this.downlinkStats.bandwidthEstimateKbps} with actual receive bitrate ${this.downlinkStats.usedBandwidthKbps}`),e=this.downlinkStats.usedBandwidthKbps+T.USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS):e=this.downlinkStats.bandwidthEstimateKbps):e=0===this.firstEstimateTimestamp?T.DEFAULT_BANDWIDTH_KBPS:this.prevTargetRateKbps,!this.startupPeriod&&(this.usingPrevTargetRate&&this.downlinkStats.bandwidthEstimateKbps<this.prevTargetRateKbps||this.downlinkStats.bandwidthEstimateKbps<this.prevTargetRateKbps*(100-T.LARGE_RATE_CHANGE_TRIGGER_PERCENT)/100||this.downlinkStats.bandwidthEstimateKbps<this.downlinkStats.usedBandwidthKbps*T.LARGE_RATE_CHANGE_TRIGGER_PERCENT/100)&&0===this.downlinkStats.packetsLost?(this.logger.debug(()=>"bwe: ValidateRate: Using Previous rate "+this.prevTargetRateKbps),this.usingPrevTargetRate=!0,e=this.prevTargetRateKbps):this.usingPrevTargetRate=!1,e>15e3&&this.logger.warn("bwe: "+e+" exceeds maximum limit (15000). Limit TargetDisplaySize with VideoPreferences to avoid this."),Math.min(e,15e3)}setProbeState(e){if(this.rateProbeState===e)return!1;let t=Date.now();switch(e){case"Not Probing":this.probePendingStartTimestamp=0;break;case"Probe Pending":if(0!==this.lastProbeTimestamp&&!(t-this.lastProbeTimestamp>T.MIN_TIME_BETWEEN_PROBE_MS))return!1;this.probePendingStartTimestamp=t;break;case"Probing":if(!(t-this.probePendingStartTimestamp>this.timeBeforeAllowProbeMs))return!1;this.lastProbeTimestamp=t,this.preProbeReceiveStreams=this.subscribedReceiveStreams.slice(),this.preProbeNonPausedReceiveStreams=this.optimalNonPau
20sedReceiveStreams,this.timeBeforeAllowProbeMs=Math.min(2*this.timeBeforeAllowProbeMs,T.MAX_HOLD_BEFORE_PROBE_MS)}return this.logger.info("bwe: setProbeState to "+e+" from "+this.rateProbeState),this.rateProbeState=e,!0}upgradeToStream(e,t){for(let i=0;i<e.length;i++)if(e[i].groupId===t.groupId){let n=t.avgBitrateKbps-e[i].avgBitrateKbps;return this.logger.info("bwe: upgradeStream from "+JSON.stringify(e[i])+" to "+t),this.lastUpgradeRateKbps=n,e[i]=t,n}return e.push(t),this.lastUpgradeRateKbps=t.avgBitrateKbps,this.lastUpgradeRateKbps}handleProbe(e,t){if(Date.now()-this.lastProbeTimestamp>T.MAX_ALLOWED_PROBE_TIME_MS)return this.logger.info("bwe: Canceling probe due to timeout"),this.setProbeState("Not Probing"),0;if(this.downlinkStats.packetsLost>0&&(this.logger.info(`bwe: Probe encountering packets lost:${this.downlinkStats.packetsLost}`),this.downlinkStats.packetsLost>T.SPURIOUS_PACKET_LOST_THRESHOLD))return this.setProbeState("Not Probing"),this.logger.info(`bwe: Canceling probe due to packets lost:${this.downlinkStats.packetsLost}`),this.probeFailed=!0,this.timeBeforeAllowSubscribeMs=3*Math.max(T.MIN_TIME_BETWEEN_SUBSCRIBE_MS,this.timeBeforeAllowSubscribeMs),2;let i=this.calculateSubscribeRate(this.optimalReceiveStreams);return this.chosenStreamsSameAsLast(e)||t>i?(this.logger.info("bwe: Probe successful"),this.setProbeState("Not Probing"),this.timeBeforeAllowProbeMs=T.MIN_TIME_BETWEEN_PROBE_MS,0):1}maybeOverrideOrProbe(e,t,i){let n=this.chosenStreamsSameAsLast(e),r=0,s=t.targetDownlinkBitrate>T.LOW_BITRATE_THRESHOLD_KBPS?T.TARGET_RATE_CHANGE_TRIGGER_PERCENT:2*T.TARGET_RATE_CHANGE_TRIGGER_PERCENT,a=t.targetDownlinkBitrate*s/100;if(this.targetRateBaselineForDeltaCheckKbps=void 0!==this.targetRateBaselineForDeltaCheckKbps?this.targetRateBaselineForDeltaCheckKbps:this.prevTargetRateKbps,!n&&Math.abs(t.targetDownlinkBitrate-this.targetRateBaselineForDeltaCheckKbps)<a?(this.logger.info("bwe: MaybeOverrideOrProbe: Reuse last decision based on delta rate. {"+JSON.stringify(this.subscribedReceiveSet)+"}"),r=1):this.targetRateBaselineForDeltaCheckKbps=t.targetDownlinkBitrate,this.downlinkStats.packetsLost>this.prevDownlinkStats.packetsLost)return this.setProbeState("Not Probing"),this.lastUpgradeRateKbps=0,r;if(n||1===r)switch(this.rateProbeState){case"Not Probing":this.setProbeState("Probe Pending");break;case"Probe Pending":this.setProbeState("Probing")&&(this.upgradeToStream(e,i),r=0)}else this.setProbeState("Not Probing");return r}calculateSubscribeRate(e){let t=0;for(let i of e)this.pausedStreamIds.contain(i.streamId)||this.pausedBwAttendeeIds.has(i.attendeeId)||(t+=i.maxBitrateKbps);return t}handleAppPausedStreams(e,t){if(!this.tileController){this.logger.warn("tileController not found!");return}for(let i of(this.pausedStreamIds=new p.default,this.tileController.getAllRemoteVideoTiles())){let n=i.state();if(n.paused&&!this.pausedBwAttendeeIds.has(n.boundAttendeeId)){let i=t.length;for(;i--;)t[i].attendeeId===n.boundAttendeeId&&(this.logger.info("bwe: removed paused attendee "+n.boundAttendeeId+" streamId: "+t[i].streamId),this.pausedStreamIds.add(t[i].streamId),this.subscribedReceiveSet.contain(t[i].streamId)&&e.push(t[i]),t.splice(i,1))}}}processBwPausedStreams(e,t){if(!this.tileController){this.logger.warn("tileController not found!");return}let i=this.getCurrentVideoPreferences();if(i&&this.shouldPauseTiles){let n=this.tileController.getAllVideoTiles();for(let r of i){let i=this.getVideoTileForAttendeeId(r.attendeeId,n),s=(null==i?void 0:i.state().paused)||!1;if(t.some(e=>e.attendeeId===r.attendeeId))s&&this.pausedBwAttendeeIds.has(r.attendeeId)&&(this.logger.info(`bwe: unpausing attendee ${r.attendeeId} due to bandwidth`),this.forEachObserver(e=>{e.tileWillBeUnpausedByDownlinkPolicy(i.id())}),this.tileController.unpauseVideoTile(i.id()),this.pausedBwAttendeeIds.delete(r.attendeeId));else{let n=e.some(e=>e.attendeeId===r.attendeeId);if(i&&n){let e=this.optimalReceiveStreams.find(e=>e.attendeeId===r.attendeeId);void 0!==e&&(s||(this.logger.info(`bwe: pausing streamId ${e.streamId} attendee ${r.attendeeId} due to bandwidth`),this.forEachObserver(e=>{e.tileWillBePausedByDownlinkPolicy(i.id())}),this.tileController.pauseVideoTile(i.id())),t.push(e)),this.pausedBwAttendeeIds.add(r.attendeeId)}else if(n){let e=this.tileController.addVideoTile();e.bindVideoStream(r.attendeeId,!1,null,0,0,0,null),this.forEachObserver(t=>{t.tileWillBePausedByDownlinkPolicy(e.id())}
20),e.pause(),this.logger.info(`bwe: Created video tile ${e.id()} for bw paused attendee ${r.attendeeId}`),this.pausedBwAttendeeIds.add(r.attendeeId)}}}}}cleanBwPausedTiles(e){if(!this.tileController){this.logger.warn("tileController not found!");return}let t=this.tileController.getAllRemoteVideoTiles(),i=this.getCurrentVideoPreferences();for(let n of t){let t=n.state();t.boundVideoStream||(e.some(e=>e.attendeeId===t.boundAttendeeId)?void 0===i||i.some(e=>e.attendeeId===t.boundAttendeeId)||this.tileController.removeVideoTile(t.tileId):(this.tileController.removeVideoTile(t.tileId),this.logger.info(`bwe: Removed video tile ${t.tileId} for bw paused attendee ${t.boundAttendeeId}`)))}}priorityPolicy(e,t,i){let n,r;let s=this.getCurrentVideoPreferences(),a=s.highestPriority(),o=a;for(;-1!==o;){for(let a of(r=-1,s))if(a.priority===o)for(let r of t)r.attendeeId!==a.attendeeId||i.some(e=>e.groupId===r.groupId)||(e.chosenTotalBitrate+r.avgBitrateKbps<=e.targetDownlinkBitrate?(i.push(r),e.chosenTotalBitrate+=r.avgBitrateKbps):0!==e.deltaToNextUpgrade||(e.deltaToNextUpgrade=r.avgBitrateKbps,n=r));else if(a.priority>o){r=a.priority;break}for(let r of s)if(r.priority===o){for(let s of t)if(s.attendeeId===r.attendeeId){let a=i.findIndex(e=>e.groupId===s.groupId&&e.maxBitrateKbps<=s.maxBitrateKbps&&e.avgBitrateKbps<s.avgBitrateKbps);if(-1!==a){let o=s.avgBitrateKbps-i[a].avgBitrateKbps;this.hasSimulcastStreams(t,s.attendeeId,s.groupId)&&this.canUpgrade(s.avgBitrateKbps,r.targetSize,r.targetSizeToBitrateKbps(r.targetSize),s.attendeeId.endsWith(u.default.Modality))?(this.logger.info(`bwe: attendee: ${s.attendeeId} group: ${s.groupId} has simulcast and can upgrade avgBitrate: ${s.avgBitrateKbps} target: ${r.targetSizeToBitrateKbps(r.targetSize)} targetTotalBitrate: ${e.targetDownlinkBitrate}`),e.chosenTotalBitrate+o<=e.targetDownlinkBitrate?(e.chosenTotalBitrate+=o,i[a]=s):0===e.deltaToNextUpgrade&&(e.deltaToNextUpgrade=o,n=s)):this.logger.info("bwe: cannot upgrade stream quality beyond target size")}}}else if(r.priority>o)break;if(o===a&&0!==e.deltaToNextUpgrade)break;o=r}return n}getVideoTileForAttendeeId(e,t){for(let i of t)if(i.state().boundAttendeeId===e)return i;return null}canUpgrade(e,t,i,n){let r=!1;return(t===v.default.High?r=!0:!n&&e<=i?r=!0:n&&t===v.default.Medium&&e<=i&&(r=!0),r)?(this.logger.info(`bwe: canUpgrade: bitrateKbps: ${e} targetBitrateKbps: ${i}`),!0):(this.logger.info(`bwe: cannot Upgrade: bitrateKbps: ${e} targetBitrateKbps: ${i}`),!1)}hasSimulcastStreams(e,t,i){let n=0;for(let r of e)r.attendeeId===t&&r.groupId===i&&n++;return this.logger.info(`bwe: attendeeId: ${t} groupId: ${i} hasSimulcastStreams: streamCount: ${n}`),n>1}streamsWithPreferenceDidChange(e){if(void 0===this.previousStreamsWithPreference||e.length!==this.previousStreamsWithPreference.length||!0===this.videoPreferencesUpdated)return!0;for(let t of e)if(void 0===this.previousStreamsWithPreference.find(e=>e.groupId===t.groupId&&e.streamId===t.streamId&&e.maxBitrateKbps===t.maxBitrateKbps))return!0;return!1}chosenStreamsSameAsLast(e){if(this.optimalNonPausedReceiveStreams.length!==e.length)return!1;for(let t of this.optimalNonPausedReceiveStreams)if(!e.some(e=>e.streamId===t.streamId))return!1;return!0}policyStateLogStr(e,t){let i={targetBitrate:t,subscribedRate:this.calculateSubscribeRate(this.optimalReceiveStreams),probeState:this.rateProbeState,startupPeriod:this.startupPeriod},n="remoteInfos: [";for(let t of e)n+=`{grpId:${t.groupId} strId:${t.streamId} maxBr:${t.maxBitrateKbps} avgBr:${t.avgBitrateKbps}}, `;n+="]";let r=`bwe: optimalReceiveSet ${JSON.stringify(i)}
21bwe:   prev ${JSON.stringify(this.prevDownlinkStats)}
22bwe:   now  ${JSON.stringify(this.downlinkStats)}
23bwe:   ${n}
24`;return(this.pausedStreamIds.size()>0||this.pausedBwAttendeeIds.size>0)&&(r+=`bwe:   paused: app stream ids ${JSON.stringify(this.pausedStreamIds)}  bw attendees { ${Array.from(this.pausedBwAttendeeIds).join(" ")} }
25`),this.videoPreferences?r+=`bwe:   preferences: ${JSON.stringify(this.videoPreferences)}`:r+=`bwe:   default preferences: ${JSON.stringify(this.defaultVideoPreferences)}`,r}getCurrentVideoPreferences(){return this.videoPreferences||this.defaultVideoPreferences}getServerSideNetworkAdaption(){return this.serverSideNetworkAdaption}setServerSideNetworkAdaption(e){this.serverSideNetworkAdaption=e,this.setProbeState("Not Probing")}supportedServerSideNetworkAdaptions(){return[f.default.None,f.default.BandwidthProbing,f.default.BandwidthProbingAndRemoteVideoQualityAdaption]}getVideoPreferences(){let e=this.getCurrentVideoPreferences();return e||(e=S.VideoPreferences.prepare().build()),e}wantsAllTemporalLayersInIndex(){return!0}}T.DEFAULT_BANDWIDTH_KBPS=2800,T.STARTUP_PERIOD_MS=6e3,T.LARGE_RATE_CHANGE_TRIGGER_PERCENT=20,T.TARGET_RATE_CHANGE_TRIGGER_PERCENT=15,T.LOW_BITRATE_THRESHOLD_KBPS=300,T.MIN_TIME_BETWEEN_PROBE_MS=5e3,T.MIN_TIME_BETWEEN_SUBSCRIBE_MS=2e3,T.MAX_HOLD_BEFORE_PROBE_MS=3e4,T.MAX_ALLOWED_PROBE_TIME_MS=6e4,T.SPURIOUS_PACKET_LOST_THRESHOLD=2,T.USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS=100,t.default=T},64336:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
25dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(16802));class s{constructor(e=0,t=0){this.networkIssueResponseDelayFactor=e,this.networkIssueRecoveryDelayFactor=t,this.currentNetworkEvent=0,this.bandwidthDecreaseTimestamp=0,this.referenceBitrate=0,this.serverSideNetworkAdaption=r.default.BandwidthProbingAndRemoteVideoQualityAdaption,e<0?e=0:e>1&&(e=1),this.networkIssueResponseDelayFactor=e,t<0?t=0:t>1&&(t=1),this.networkIssueRecoveryDelayFactor=t}allowSubscribe(e,t){let i=0,n=this.currentNetworkEvent;if(t>this.referenceBitrate)return this.currentNetworkEvent=2,this.referenceBitrate=t,!0;if(!(t<this.referenceBitrate))return this.currentNetworkEvent=0,!1;if(this.currentNetworkEvent=1,i=this.getSubscribeDelay(this.currentNetworkEvent,e),1!==n)this.bandwidthDecreaseTimestamp=Date.now();else if(Date.now()-this.bandwidthDecreaseTimestamp>i)return this.referenceBitrate=t,!0;return!1}getSubscribeDelay(e,t){let i=s.MINIMUM_DELAY_MS,n=s.MAXIMUM_DELAY_MS-s.MINIMUM_DELAY_MS,r=this.networkIssueResponseDelayFactor;return 1===e&&(i+=n*r*(1+t/10),i=Math.min(s.MAXIMUM_DELAY_MS,i)),i}}s.MINIMUM_DELAY_MS=2e3,s.MAXIMUM_DELAY_MS=8e3,s.Default=new s(0,0),s.UnstableNetworkPreset=new s(0,1),s.StableNetworkPreset=new s(1,0),t.default=s},52612:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.VideoQualityAdaptationPreference=void 0,(n=i||(t.VideoQualityAdaptationPreference=i={}))[n.Balanced=0]="Balanced",n[n.MaintainFramerate=1]="MaintainFramerate",n[n.MaintainResolution=2]="MaintainResolution",t.default=i},92796:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{create(){let e={clientWidth:400,clientHeight:300,width:400,height:300,videoWidth:400,videoHeight:300,style:{transform:""},hasAttribute:()=>!1,removeAttribute:()=>{},setAttribute:()=>{},addEventListener:()=>{},removeEventListener:()=>{},requestVideoFrameCallback:e=>0,cancelVideoFrameCallback:()=>{},srcObject:!1,paused:!0,pause:()=>{e.paused=!0},play:()=>(e.paused=!1,Promise.resolve())};return e}}t.default=i},16445:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e){this.canvas=e,this.destroyed=!1}destroy(){this.canvas=null,this.destroyed=!0}async asCanvasImageSource(){return this.destroyed?Promise.reject("canvas buffer is destroyed"):Promise.resolve(this.canvas)}asCanvasElement(){return this.canvas}}t.default=i},2817:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(43781),s=n(i(27956)),a=n(i(40626)),o=n(i(16445)),d=n(i(25426));class l{constructor(e,t,i=new d.default,n){this.logger=e,this.stages=t,this.fr=15,this.outputMediaStream=new MediaStream,this.videoInput=document.createElement("video"),this.canvasOutput=document.createElement("canvas"),this.outputCtx=this.canvasOutput.getContext("2d"),this.canvasInput=document.createElement("canvas"),this.inputCtx=this.canvasInput.getContext("2d"),this.inputVideoStream=null,this.sourceBuffers=[],this.destBuffers=[],this.observers=new Set,this.hasStarted=!1,this.processorLatencies=new Map,this.lastMetricsTime=0,this.process=async e=>{let t;if(!this.inputVideoStream)return;let i=performance.now();this.videoInput.videoWidth&&(this.canvasInput.width!==this.videoInput.videoWidth&&(this.canvasInput.width=this.videoInput.videoWidth,this.canvasInput.height=this.videoInput.videoHeight,this.sourceBuffers[0].height=this.canvasInput.height,this.sourceBuffers[0].width=this.canvasInput.width,this.sourceBuffers[0].framerate=this.framerate),this.inputCtx.drawImage(this.videoInput,0,0));let n=[];n.push(this.sourceBuffers[0]);try{for(let e of this.processors){let t=performance.now();n=await e.process(n);let i=performance.now()-t,r=this.getProcessorName(e);this.processorLatencies.has(r)||this.processorLatencies.set(r,[]),this.processorLatencies.get(r).push(i)}this.checkMetricsReport()}catch(e){this.forEachObserver(e=>{e.processingDidFailToStart&&e.processingDidFailToStart()});return}this.destBuffers=n;try{t=await this.destBuffers[0].asCanvasImageSource()}catch(e){this.inputVideoStream&&(this.logger.info("buffers are destroyed and pipeline could not start"),this.forEachObserver(e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}));return}let r=t.width,s=t.height;0===r||0===s||(this.canvasOutput.width!==r&&this.canvasOutput.height!==s&&(this.canvasOutput.width=r,this.canvasOutput.height=s),this.outputCtx.drawImage(t,0,0,r,s,0,0,r,s),this.hasStarted||(this.hasStarted=!0,this.forEachObserver(e=>{e.processingDidStart&&e.processingDidStart()})));let a=performance.now()-i,o=2e3/this.framerate-a,d=Math.max(0,1e3/this.framerate-a);o<=0&&this.forEachObserver(e=>{e.processingLatencyTooHigh&&e.processingLatencyTooHigh(a)}),await this.timer.start(d,this.process.bind(this))},this.timer=i,this.metricsCallback=n,this.lastMetricsTime=performance.now()}destroy(){if(this.stop(),this.stages)for(let e of this.stages)e.destroy();this.timer.destroy()}checkMetricsReport(){let e=performance.now();e-this.lastMetricsTime>=1e3&&(this.reportMetrics(e),this.lastMetricsTime=e)}reportMetrics(e){if(0===this.processorLatencies.size)return;let t=(e-this.lastMetricsTime)/1e3,i=Math.max(...Array.from(this.processorLatencies.values()).map(e=>e.length)),n=t>0?i/t:0,r=this.processors.map(e=>{let t=this.getProcessorName(e),i=this.processorLatencies.get(t)||[];return{averageProcessLatency:i.length>0?i.reduce((e,t)=>
25e+t,0)/i.length:0,processorName:t}});this.logger.info(`Pipeline metrics - FPS: ${n.toFixed(1)}, Processors: ${r.map(e=>`${e.processorName}: ${e.averageProcessLatency.toFixed(2)}ms`).join(", ")}`),this.metricsCallback&&this.metricsCallback({frameRate:n,processors:r}),this.processorLatencies.clear()}get framerate(){return this.fr}set framerate(e){this.fr=e<0||void 0===e?15:e}stop(){if(this.videoInput.removeEventListener("loadedmetadata",this.process),this.videoInput.srcObject=null,this.destroyInputMediaStreamAndBuffers(),this.outputMediaStream)for(let e of this.outputMediaStream.getVideoTracks())e.stop();this.hasStarted&&(this.hasStarted=!1,this.forEachObserver(e=>{e.processingDidStop&&e.processingDidStop()}))}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}async getInputMediaStream(){return this.inputVideoStream}getActiveOutputMediaStream(){return this.isOutputMediaStreamActive()||(this.outputMediaStream=this.canvasOutput.captureStream(this.framerate),this.cloneInputAudioTracksToOutput()),this.outputMediaStream}async setInputMediaStream(e){if(!e){this.stop();return}if(0===e.getVideoTracks().length){this.logger.error("No video tracks in input media stream, ignoring");return}this.inputVideoStream=e;let t=this.inputVideoStream.getVideoTracks()[0].getSettings();this.logger.info(`processing pipeline input stream settings ${JSON.stringify(t)}`),this.framerate=t.frameRate,this.canvasOutput.width=t.width,this.canvasOutput.height=t.height,this.videoInput.addEventListener("loadedmetadata",this.process),this.videoInput.srcObject=this.inputVideoStream,this.videoInput.setAttribute("playsinline","true");let i=new o.default(this.canvasInput);this.sourceBuffers.push(i),this.videoInput.load();try{await this.videoInput.play()}catch(e){this.logger.warn("Video element play() overrided by another load().")}this.cloneInputAudioTracksToOutput()}cloneInputAudioTracksToOutput(){if(!this.isOutputMediaStreamActive()||null===this.inputVideoStream){this.logger.info("Not cloning input audio tracks to output, do not have media streams ready");return}for(let e of this.outputMediaStream.getAudioTracks())this.logger.info(`Removing audio track ${e.id} from output stream`),this.outputMediaStream.removeTrack(e);for(let e of this.inputVideoStream.getAudioTracks())this.logger.info(`Adding audio track ${e.id} to output stream`),this.outputMediaStream.addTrack(e)}isOutputMediaStreamActive(){return this.outputMediaStream&&this.outputMediaStream.active}set processors(e){this.stages=e}get processors(){return this.stages}setMetricsCallback(e){this.metricsCallback=e}getProcessorName(e){if(!e){if(0===this.stages.length)return"None";e=this.stages[0]}if(e instanceof a.default)return"VideoFxProcessor";if(e instanceof s.default)switch(e.getModelType()){case r.ModelType.SELFIE_MULTICLASS:return"BackgroundSegmentationVideoFrameProcessor_Multiclass";case r.ModelType.SELFIE_GENERAL:return"BackgroundSegmentationVideoFrameProcessor_General";default:return"no-op"}return"other"}forEachObserver(e){for(let t of this.observers)setTimeout(()=>{e(t)},0)}destroyInputMediaStreamAndBuffers(){if(this.inputVideoStream)for(let e of this.inputVideoStream.getTracks())e.stop();for(let e of(this.inputVideoStream=null,this.sourceBuffers))e.destroy();this.sourceBuffers=[]}}t.default=l},25426:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.workerTimer=void 0,this.callback=void 0,this.workerTimer=this.createWorkerTimer()}createWorkerTimer(){try{let e=new Blob([`self.onmessage = async function(e){ 
26            var timerID = null;
27            const awaitTimeout = delay => new Promise( resolve => {
28              timerID = setTimeout(resolve, delay);
29            })
30            await awaitTimeout(e.data);
31            postMessage(timerID);
32          }`],{type:"application/javascript"});return new Worker(window.URL.createObjectURL(e))}catch(e){}}async start(e,t){this.callback=t,this.workerTimer?(this.workerTimer.onmessage=e=>{this.lastTimeout=e.data,this.callback()},this.workerTimer.postMessage(e)):this.lastTimeout=setTimeout(()=>{this.callback()},e)}async destroy(){this.callback=void 0,this.lastTimeout&&(clearTimeout(this.lastTimeout),this.lastTimeout=void 0),this.workerTimer&&(this.workerTimer.terminate(),this.workerTimer=void 0)}}t.default=i},56441:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
32dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(2817));class a{constructor(e,t,i,n=new r.default,a){this.logger=e,this.device=t,this.processors=i,this.browserBehavior=n,this.observers=new Set,this.metricsCallback=e=>{this.statsCollector&&this.statsCollector.videoProcessorMetricsDidReceive(e)},this.statsCollector=a,this.pipe=new s.default(this.logger,this.processors,void 0,this.metricsCallback),this.pipe.addObserver(this)}get outputMediaStream(){return this.pipe.outputMediaStream}passEventControllerToProcessors(e){if(this.pipe.processors)for(let t of this.pipe.processors)"function"==typeof t.setEventController&&t.setEventController(e)}chooseNewInnerDevice(e){let t=new a(this.logger,e,this.processors,this.browserBehavior,this.statsCollector);return t.pipe=this.pipe,t}getInnerDevice(){return this.device}async intrinsicDevice(){return this.device}async transformStream(e){return await this.pipe.setInputMediaStream(e),this.inputMediaStream=e,this.pipe.getActiveOutputMediaStream()}onOutputStreamDisconnect(){this.logger.info("DefaultVideoTransformDevice: detach stopping input media stream");let e=this.device&&this.device.id;if(this.pipe.stop(),!e&&this.inputMediaStream)for(let e of this.inputMediaStream.getVideoTracks())e.stop()}async stop(){if(this.inputMediaStream)for(let e of this.inputMediaStream.getVideoTracks())e.stop();this.pipe.destroy(),this.inputMediaStream=null}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}processingDidStart(){this.logger.info("video transform device processing started"),this.forEachObserver(e=>{e.processingDidStart&&e.processingDidStart()})}processingLatencyTooHigh(e){this.forEachObserver(t=>{t.processingLatencyTooHigh&&t.processingLatencyTooHigh(e)})}processingDidFailToStart(){this.logger.info("video transform device processing failed to start"),this.forEachObserver(e=>{e.processingDidFailToStart&&e.processingDidFailToStart()})}processingDidStop(){this.logger.info("video transform device processing stopped"),this.forEachObserver(e=>{e.processingDidStop&&e.processingDidStop()})}forEachObserver(e){for(let t of this.observers)setTimeout(()=>{e(t)},0)}setStatsCollector(e){if(this.statsCollector=e,this.pipe.setMetricsCallback(e=>{this.statsCollector&&this.statsCollector.videoProcessorMetricsDidReceive(e)}),this.pipe.processors)for(let t of this.pipe.processors)"function"==typeof t.setMetricsCollector&&t.setMetricsCollector(e)}get framerate(){return this.pipe.framerate}set framerate(e){this.pipe.framerate=e}}t.default=a},66642:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{async process(e){return e}async destroy(){}}t.default=i},16971:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeferredPromise=void 0;class i{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}getPromise(){return this.promise}resolvePromise(e){this.resolve(e)}resolveAndReplacePromise(e){this.resolve(e),this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}rejectPromise(e){this.reject(e)}rejectAndReplacePromise(e){this.reject(e),this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}t.DeferredPromise=i},28704:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VideoFxCanvasOpsManager=void 0;let n=i(600);class r{constructor(e,t){this.streamParameters=e,this.outputCanvas=t,this.configureCanvasPipeline()}getInferenceInputData(e){return this.inferenceCtx.save(),this.inferenceCtx.scale(this.horizontalResizeScalar,this.verticalResizeScalar),this.inferenceCtx.drawImage(e,0,0),this.inferenceCtx.restore(),this.inferenceCtx.getImageData(0,0,n.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,n.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS)}async configureForStreamParameters(e){if(this.streamParameters=e,this.outputCanvas.width=this.streamParameters.width,this.outputCanvas.height=this.streamParameters.height,this.backgroundReplacementCanvas){let e=document.createElement("canvas");e.width=this.streamParameters.width,e.height=this.streamParameters.height,e.getContext("2d").drawImage(this.backgroundReplacementCanvas,0,0,this.streamParameters.width,this.streamParameters.height),this.backgroundReplacementCanvas=e}this.configureCanvasPipeline()}configureCanvasPipeline(){this.inferenceCanvas=document.createElement("canvas"),this.inferenceCtx=this.inferenceCanvas.getContext("2d",{willReadFrequently:!0}),this.inferenceCanvas.width=n.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,this.inferenceCanvas.height=n.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS,this.horizontalResizeScalar=n.SEGMENTATION_MODEL.WIDTH_IN_PIXELS/this.streamParameters.width,this.verticalResizeScalar=n.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS/this.streamParameters.height}
32getBackgroundReplacementCanvas(){return this.backgroundReplacementCanvas}async loadReplacementBackground(e){let t=e.backgroundReplacement.backgroundImageURL,i=e.backgroundReplacement.defaultColor;if(t)try{let e=await this.loadImage(t);this.backgroundReplacementImage=e,this.resizeAndSetReplacementImage(this.backgroundReplacementImage)}catch(e){throw this.logger.error(e),Error("Failed to set the replacement image.")}else this.resizeAndSetReplacementColor(i)}resizeAndSetReplacementImage(e){let t=document.createElement("canvas"),i=t.getContext("2d");t.width=this.streamParameters.width,t.height=this.streamParameters.height,i.drawImage(e,0,0,this.streamParameters.width,this.streamParameters.height),this.backgroundReplacementCanvas=t}resizeAndSetReplacementColor(e){let t=document.createElement("canvas"),i=t.getContext("2d");t.width=this.streamParameters.width,t.height=this.streamParameters.height,i.fillStyle=e,i.fillRect(0,0,this.streamParameters.width,this.streamParameters.height),this.backgroundReplacementCanvas=t}async loadImage(e){let t=await fetch(e).catch(e=>{throw this.logger.error(e.toString()),Error("Failed to fetch image.")}),i=await t.blob(),n=new Image;return n.src=URL.createObjectURL(i),new Promise((e,t)=>{n.onload=()=>{e(n)},n.onerror=e=>{t(e)}})}}t.VideoFxCanvasOpsManager=r},600:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_VIDEO_FX_SPEC=t.FXLIB_PATH=t.WORKER_PATH=t.CDN_BASE_PATH=t.RESOURCE_CONSTRAINTS=t.SEGMENTATION_MODEL=t.DEFAULT_STREAM_PARAMETERS=t.WORKER_MSG=void 0,t.WORKER_MSG={BUILD_ENGINE_REQUEST:"BuildEngineRequest",BUILD_ENGINE_RESPONSE:"BuildEngineResponse",PERFORM_SEGMENTATION_REQUEST:"PerformSegmentationRequest",PERFORM_SEGMENTATION_RESPONSE:"PerformSegmentationResponse",PERFORM_SEGMENTATION_SAB_REQUEST:"PerformSegmentationSABRequest",PERFORM_SEGMENTATION_SAB_RESPONSE:"PerformSegmentationSABResponse",DESTROY_ASSETS_REQUEST:"DestroyAssetsRequest",DESTROY_ASSETS_RESPONSE:"DestroyAssetsResponse",CLOSE_WORKER_REQUEST:"CloseWorkerRequest"},t.DEFAULT_STREAM_PARAMETERS={FRAMES_PER_SECOND:15,WIDTH_IN_PIXEL:960,HEIGHT_IN_PIXEL:540,CHANNEL_COUNT:4},t.SEGMENTATION_MODEL={LOAD_SUCCESS:2,WIDTH_IN_PIXELS:176,HEIGHT_IN_PIXELS:160},t.RESOURCE_CONSTRAINTS={DEFAULT_PROCESSING_BUDGET_PER_FRAME:50,SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION:1,SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT:500,BLUR_DEFAULT_CYCLE_PERCENTAGE:10,BLUR_SAMPLING_PERIOD_FRAME_COUNT:1e3,MIN_PROCESSING_BUDGET:0,MAX_PROCESSING_BUDGET:100},t.CDN_BASE_PATH="https://static.sdkassets.chime.aws";let i="/ml_media_fx/otherassets";t.WORKER_PATH=`${i}/worker.js`,t.FXLIB_PATH=`${i}
32/fxlib.js`,t.DEFAULT_VIDEO_FX_SPEC={paths:{cdnBasePath:t.CDN_BASE_PATH,workerPath:t.WORKER_PATH,fxLibPath:t.FXLIB_PATH}}},40626:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(82872),s=i(35908),a=i(30589),o=n(i(12340)),d=n(i(19202)),l=i(76477),c=n(i(61492)),u=n(i(16445)),h=i(16971),f=i(28704),m=i(600),p=i(24642);class g{constructor(e,t=m.RESOURCE_CONSTRAINTS.DEFAULT_PROCESSING_BUDGET_PER_FRAME,i){this.logger=e,this.outputCanvas=document.createElement("canvas"),this.canvasVideoFrameBuffer=new u.default(this.outputCanvas),this.videoFxSpec=m.DEFAULT_VIDEO_FX_SPEC;try{this.validateProcessingBudgetPerFrame(t)}catch(e){throw this.logger.error(e),Error(`Cannot instantiate VideoFxProcessor due to invalid processingBudgetPerFrame of ${t}`)}i&&(this.eventController=i),this.effectConfig={backgroundBlur:{isEnabled:!1,strength:"low"},backgroundReplacement:{isEnabled:!1,backgroundImageURL:null,defaultColor:"black"}},this.segmentationRequestPromise=new h.DeferredPromise,this.segmentationRateManager=new p.VideoFxSegmentationRateManager(this.logger,t),this.streamParameters={framerate:m.DEFAULT_STREAM_PARAMETERS.FRAMES_PER_SECOND,width:m.DEFAULT_STREAM_PARAMETERS.WIDTH_IN_PIXEL,height:m.DEFAULT_STREAM_PARAMETERS.HEIGHT_IN_PIXEL,channels:m.DEFAULT_STREAM_PARAMETERS.CHANNEL_COUNT},g.isSharedArrayBufferSupported&&(this.sharedImageBuffer=new SharedArrayBuffer(m.SEGMENTATION_MODEL.WIDTH_IN_PIXELS*m.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS*this.streamParameters.channels),this.sharedImageData=new Uint8ClampedArray(this.sharedImageBuffer)),this.logger.info(`VideoFx supports Shared Array Buffer: ${g.isSharedArrayBufferSupported}`),this.canvasOpsManager=new f.VideoFxCanvasOpsManager(this.streamParameters,this.outputCanvas),this.outputCanvas.width=this.streamParameters.width,this.outputCanvas.height=this.streamParameters.height,this.segmentationMask=new ImageData(this.streamParameters.width,this.streamParameters.height),this.logger.info(`VideoFxProcessor instantiated with a processingBudgetPerFrame of ${t}`)}async process(e){return e}async fxProcess(e){let t=e[0].asCanvasElement();this.didStreamParametersChange(t)&&await this.adjustProcessorForNewStreamParameters(t);try{await this.manageSegmentationMask(t)}catch(e){throw this.logger.error(e),Error("Video stream could not be processed")}return await this.renderer.render(t,this.segmentationMask),e[0]=this.canvasVideoFrameBuffer,e}async noOpProcess(e){return e}didStreamParametersChange(e){return e.width!==this.streamParameters.width||e.height!==this.streamParameters.height}async adjustProcessorForNewStreamParameters(e){this.streamParameters.width=e.width,this.streamParameters.height=e.height,await this.canvasOpsManager.configureForStreamParameters(this.streamParameters),await this.renderer.configure(this.streamParameters.width,this.streamParameters.height,this.effectConfig)}async destroy(){this.canvasVideoFrameBuffer.destroy(),this.fxLibScript&&this.fxLibScript.parentNode&&this.fxLibScript.parentNode.removeChild(this.fxLibScript),this.engineWorker&&(this.destroyedAssetsPromise=new h.DeferredPromise,this.engineWorker.postMessage({msg:m.WORKER_MSG.DESTROY_ASSETS_REQUEST}),await this.destroyedAssetsPromise.getPromise(),this.engineWorker.postMessage({msg:m.WORKER_MSG.CLOSE_WORKER_REQUEST})),this.logger.info("VideoFxProcessor destroyed.")}async manageSegmentationMask(e){try{if(this.segmentationRateManager.submitFrame(),this.segmentationRateManager.shouldApplySegmentation()){this.segmentationRateManager.startSegmentation();let t=this.canvasOpsManager.getInferenceInputData(e);this.segmentationMask=await this.generateSegmentationMask(t),this.segmentationRateManager.completeSegmentation()}}catch(e){throw this.logger.error(e.toString()),Error("Can not properly manage the returned segmentation mask")}}async generateSegmentationMask(e){g.isSharedArrayBufferSupported?(this.sharedImageData.set(e.data),this.engineWorker.postMessage({msg:m.WORKER_MSG.PERFORM_SEGMENTATION_SAB_REQUEST,payload:this.sharedImageBuffer})):this.engineWorker.postMessage({msg:m.WORKER_MSG.PERFORM_SEGMENTATION_REQUEST,payload:e},[e.data.buffer]);try{return await this.segmentationRequestPromise.getPromise()}catch(e){throw this.logger.error(e.toString()),Error("Segmentation mask could not be generated")}}cloneConfigFrom(e){return{backgroundBlur:{isEnabled:e.backgroundBlur.isEnabled,strength:e.backgroundBlur.strength},backgroundReplacement:{isEnabled:e.backgroundReplacement.isEnabled,backgroundImageURL:e.backgroundReplacement.backgroundImageURL,defaultColor:e.backgroundReplacement.defaultColor}}}setVideoFxSpec(e){e.paths&&(this.videoFxSpec.paths=e.paths)}async setEffectConfig(e){if(this.sameVideoFxConfig(e,this.effectConfig))return;let t=this.cloneConfigFrom(e);try{await this.validateEffectConfig(t)}catch(e){throw this.logger.error(e.toString()),Error("Provided effect config is invali
32d, not updating VideoFxProcessor")}t.backgroundReplacement.isEnabled&&(await this.canvasOpsManager.loadReplacementBackground(t),await this.renderer.setBackgroundReplacementCanvas(this.canvasOpsManager.getBackgroundReplacementCanvas())),await this.renderer.configure(this.streamParameters.width,this.streamParameters.height,t),this.effectConfig=t,this.effectConfig.backgroundBlur.isEnabled||this.effectConfig.backgroundReplacement.isEnabled?this.process=this.fxProcess:this.process=this.noOpProcess,this.logger.info(`VideoFxProcessor effect configuration updated to: ${JSON.stringify(this.effectConfig)}`),this.eventController&&this.publishVideoFxConfigEvent()}async validateEffectConfig(e){if(e.backgroundBlur.isEnabled&&e.backgroundReplacement.isEnabled)throw Error("Invalid VideoFx configuration: Background Blur and Background Replacement can not both be enabled");e.backgroundReplacement.isEnabled&&await this.validateReplacementConfig(e)}async validateReplacementConfig(e){if(e.backgroundReplacement.backgroundImageURL&&e.backgroundReplacement.defaultColor)throw Error("Invalid VideoFx configuration: Background Replacement can not have both an image URL and default color");if(!e.backgroundReplacement.backgroundImageURL&&!e.backgroundReplacement.defaultColor)throw Error("Invalid VideoFx configuration: Background Replacement image URL and default can not both be null/undefined");try{e.backgroundReplacement.backgroundImageURL&&await this.canvasOpsManager.loadImage(e.backgroundReplacement.backgroundImageURL)}catch(e){throw this.logger.error(e.toString()),Error("Invalid VideoFx configuration: backgroundImageURL failed to load")}let t=e.backgroundReplacement.defaultColor;if(t&&"black"!==t&&"#000000"!==t&&"#000"!==t){if(t.includes("#")&&!new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/).test(t))throw Error(`Invalid hexadecimal color code for default replacement background: ${t}`);let e=document.createElement("canvas").getContext("2d"),i=e.fillStyle;if(e.fillStyle=t,e.fillStyle===i)throw Error(`Invalid color for default replacement background: ${t}`)}}validateProcessingBudgetPerFrame(e){if(e<m.RESOURCE_CONSTRAINTS.MIN_PROCESSING_BUDGET||e>m.RESOURCE_CONSTRAINTS.MAX_PROCESSING_BUDGET)throw Error(`Invalid resource constraint: cycle percentage must be within range of ${m.RESOURCE_CONSTRAINTS.MIN_PROCESSING_BUDGET} and ${m.RESOURCE_CONSTRAINTS.MAX_PROCESSING_BUDGET}`)}async loadAssets(){this.logger.info("Loading required assets for the VideoFxProcessor");try{let e=this.getVideoFxAssetParams();await this.loadEngineWorker(e),await this.buildEngine(e),await this.loadFxLib(e),this.renderer=constructRenderer(m.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,m.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS,this.effectConfig,this.outputCanvas)}catch(e){throw this.logger.error(e.toString()),Error("Failed to load necessary assets for the VideoFxProcessor")}this.logger.info("Finished loading of essential VideoFxProcessor assets.")}getVideoFxAssetParams(){let e=(0,l.getDefaultAssetSpec)();return{assetGroup:e.assetGroup,revisionID:e.revisionID,sdk:encodeURIComponent(c.default.sdkVersion),ua:encodeURIComponent(c.default.sdkUserAgentLowResolution)}}getPathFromVideoFxAssetParams(e,t){let i=new URL(e);for(let[e,n]of Object.entries(t))if(void 0!==n){let t=encodeURIComponent(e),r=encodeURIComponent(n);i.searchParams.set(t,r)}return i.toString()}async loadEngineWorker(e){try{let t=this.getPathFromVideoFxAssetParams(this.videoFxSpec.paths.cdnBasePath+this.videoFxSpec.paths.workerPath,e);this.engineWorker=await (0,s.loadWorker)(t,"VideoFxEngineWorker",{},null),this.logger.info("Successfully loaded the VideoFxProcessor's engine worker"),this.engineWorker.addEventListener("message",e=>this.engineWorkerReceiver(e))}catch(e){throw this.logger.error(e.toString()),Error("Failed to load the VideoFxProcessor's engine worker")}}async buildEngine(e){this.buildEnginePromise=new h.DeferredPromise,this.engineWorker.postMessage({msg:m.WORKER_MSG.BUILD_ENGINE_REQUEST,payload:{cdnBasePath:this.videoFxSpec.paths.cdnBasePath,sdkVersioningParams:e}});try{await this.buildEnginePromise.getPromise()}catch(e){throw this.logger.error(e.toString()),Error("Failed to instantiate the VideoFxEngine")}}async loadFxLib(e){let t=this.getPathFromVideoFxAssetParams(this.videoFxSpec.paths.cdnBasePath+this.videoFxSpec.paths.fxLibPath,e);try{let e=await (0,r.fetchWithBehavior)(t,{method:"GET",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"no-referrer"},{});if(!e.ok)throw Error("Fetch failed.");let i=window.URL.createObjectURL(await e.blob());await new Promise((e,t)=>
32{this.fxLibScript=document.createElement("script"),this.fxLibScript.setAttribute("src",i),this.fxLibScript.setAttribute("type","module"),this.fxLibScript.setAttribute("async","false"),this.fxLibScript.addEventListener("load",e),this.fxLibScript.addEventListener("error",t),document.body.appendChild(this.fxLibScript)})}catch(e){throw this.logger.error(e.toString()),Error("Failed to load the fxlib")}}getEffectConfig(){return this.cloneConfigFrom(this.effectConfig)}engineWorkerReceiver(e){let t=e.data;switch(t.msg){case m.WORKER_MSG.BUILD_ENGINE_RESPONSE:this.settleEngineBuildPromise(t.payload);break;case m.WORKER_MSG.PERFORM_SEGMENTATION_RESPONSE:this.settleSegmentationPromise(t.payload.output);break;case m.WORKER_MSG.PERFORM_SEGMENTATION_SAB_RESPONSE:this.settleSegmentationPromiseSAB();break;case m.WORKER_MSG.DESTROY_ASSETS_RESPONSE:this.destroyedAssetsPromise.resolvePromise();break;default:this.logger.info(`VideoFx worker received unknown event msg: ${JSON.stringify(t)}`)}}settleEngineBuildPromise(e){e!==m.SEGMENTATION_MODEL.LOAD_SUCCESS?this.buildEnginePromise.rejectPromise(Error("Failed to build VideoFxProcessor's engine")):(this.logger.info("Successfully built the VideoFxEngine"),this.buildEnginePromise.resolvePromise())}settleSegmentationPromise(e){e?this.segmentationRequestPromise.resolveAndReplacePromise(e):this.segmentationRequestPromise.rejectAndReplacePromise(Error("Failed to perform a segmentation on the input image"))}settleSegmentationPromiseSAB(){try{let e=new ImageData(new Uint8ClampedArray(this.sharedImageData),m.SEGMENTATION_MODEL.WIDTH_IN_PIXELS,m.SEGMENTATION_MODEL.HEIGHT_IN_PIXELS);this.segmentationRequestPromise.resolveAndReplacePromise(e)}catch(e){this.segmentationRequestPromise.rejectAndReplacePromise(Error("Failed to perform a segmentation with a shared array buffer on the input image"))}}setToNoOpProcess(){this.process=this.noOpProcess}static async isSupported(e=new d.default,t=!0){let i=!0,n=(t,n)=>{t&&(e.info(n),i=!1)};n("undefined"==typeof globalThis,"Browser does not have globalThis."),n(!(0,a.supportsWorker)(globalThis,e),"Browser does not support web workers."),n(!(0,a.supportsWASM)(globalThis,e),"Browser does not support wasm."),n(!document.createElement("canvas").getContext("webgl2"),"Browser does not support webgl."),n(!new o.default().isVideoFxSupportedBrowser(),"Browser is unsupported for VideoFxProcessor");let r=async()=>{if(t)try{let t=new g(e);await t.loadAssets(),await t.destroy()}catch(t){return e.info("Browser environment is unable to access the required external assets."),Promise.resolve(!1)}return Promise.resolve(!0)};return Promise.resolve(!!i&&await r())}static async create(e,t,i=m.RESOURCE_CONSTRAINTS.DEFAULT_PROCESSING_BUDGET_PER_FRAME,n){let r=new g(e,i);n&&r.setVideoFxSpec(n);try{return await r.loadAssets(),await r.setEffectConfig(t),r}catch(t){throw e.error(t.toString()),r.setToNoOpProcess(),Error("VideoFxProcessor built with support for only NoOp processing")}}setEventController(e){this.eventController?this.eventController=e:(this.eventController=e,this.publishVideoFxConfigEvent())}publishVideoFxConfigEvent(){let e={backgroundBlurEnabled:this.effectConfig.backgroundBlur.isEnabled.toString(),backgroundBlurStrength:this.effectConfig.backgroundBlur.strength,backgroundReplacementEnabled:this.effectConfig.backgroundReplacement.isEnabled.toString(),backgroundFilterVersion:2};this.eventController.publishEvent("backgroundFilterConfigSelected",e)}sameVideoFxConfig(e,t){return e.backgroundBlur.isEnabled===t.backgroundBlur.isEnabled&&e.backgroundBlur.strength===t.backgroundBlur.strength&&e.backgroundReplacement.backgroundImageURL===t.backgroundReplacement.backgroundImageURL&&e.backgroundReplacement.defaultColor===t.backgroundReplacement.defaultColor&&e.backgroundReplacement.isEnabled===t.backgroundReplacement.isEnabled}}g.isSharedArrayBufferSupported="undefined"!=typeof SharedArrayBuffer,t.default=g},24642:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VideoFxSegmentationRateManager=void 0;let n=i(600);class r{constructor(e,t){this.logger=e,this.targetSegmentationCyclePercentage=t/100,this.frameCountOverSamplingPeriod=0,this.totalSegmentationDurationOverSamplingPeriod=0,this.samplingPeriodStartTime=performance.now(),this.framesPerSegmentation=n.RESOURCE_CONSTRAINTS.SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION}submitFrame(){this.frameCountOverSamplingPeriod++}shouldApplySegmentation(){return this.frameCountOverSamplingPeriod%this.framesPerSegmentation==0}startSegmentation(){this.frameSegmentationStartTime=performance.now()}completeSegmentation(){this.totalSegmentationDurationOverSamplingPeriod+=performance.now()-this.frameSegmentationStartTime,this.frameCountOverSamplingPeriod>=n.RESOURCE_CONSTRAINTS.SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT&&this.adjustFramesPerSegmentation(this.totalSegmentationDurationOverSamplingPeriod/(performance.now()-this.samplingPeriodStartTime))}adjustFramesPerSegmentation(e){e>this.targetSegmentationCyclePercentage?(this.framesPerSegmentation++,this.logger.info(`Segmentation cycle percentage above the configured maximal value. Decreasing segmentation rate to 1 segmentation per ${this.framesPerSegmentation} frames`)):this.framesPerSegmentation>1&&e<this.targetSegmentationCyclePercentage&&(this.framesPerSegmentation--,this.logger.info(`Segmentation cycle percentage below the configured maximal value. Increasing segmentation rate to 1 segmentation per ${this.framesPerSegmentation} frames`)),this.totalSegmentationDurationOverSamplingPeriod=0,this.frameCountOverSamplingPeriod=0,this.samplingPeriodStartTime=performance.now()}}t.VideoFxSegmentationRateManager=r},38163:function(e,t){"use strict";
32Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},27316:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e){this.ids=new Set(e)}add(e){this.ids.add(e)}array(){return Array.from(this.ids.values()).sort((e,t)=>e-t)}contain(e){return this.ids.has(e)}forEach(e){this.ids.forEach(e)}empty(){return 0===this.ids.size}size(){return this.ids.size}equal(e){if(!e)return 0===this.ids.size;let t=this.array(),i=e.array();if(t.length!==i.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==i[e])return!1;return!0}clone(){return new i(this.array())}remove(e){this.ids.delete(e)}toJSON(){return this.array()}truncate(e){return new i(this.array().splice(0,e))}}t.default=i},35341:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(8283),s=n(i(27316)),a=n(i(86196));class o{constructor(e){this.logger=e,this.currentIndex=null,this.indexForSubscribe=null,this.indexForLastRemoteVideoUpdate=null,this.currentSubscribeAck=null,this.subscribeTrackToStreamMap=null,this.subscribeStreamToAttendeeMap=null,this.subscribeStreamToExternalUserIdMap=null,this.subscribeSsrcToStreamMap=null,this.subscribeSsrcToGroupMap=null,this.streamToAttendeeMap=null,this.groupIdToAttendeeMap=null,this.streamToExternalUserIdMap=null,this.videoStreamDescription=new a.default,this.sendVideoStreamId=0,this.videoStreamDescription.trackLabel="AmazonChimeExpressVideo",this.videoStreamDescription.streamId=2,this.videoStreamDescription.groupId=2}localStreamDescriptions(){return[this.videoStreamDescription.clone()]}convertBpsToKbps(e){return e>0&&e<1e3?1:Math.trunc(e/1e3)}remoteStreamDescriptions(){if(!this.currentIndex||!this.currentIndex.sources)return[];let e=[];return this.currentIndex.sources.forEach(t=>{let i=new a.default;i.attendeeId=t.attendeeId,i.groupId=t.groupId,i.streamId=t.streamId,i.maxBitrateKbps=t.maxBitrateKbps,i.avgBitrateKbps=this.convertBpsToKbps(t.avgBitrateBps),i.width=t.width,i.height=t.height,i.maxFrameRate=t.framerate,e.push(i)}),e}integrateUplinkPolicyDecision(e){if(e&&e.length){let t=e[0];this.videoStreamDescription.maxBitrateKbps=t.maxBitrate/1e3,this.videoStreamDescription.maxFrameRate=t.maxFramerate}}integrateIndexFrame(e){if(this.currentIndex=e,!e)return;let t=new Map,i=!1;for(let n of e.sources){if(!t.has(n.attendeeId)){t.set(n.attendeeId,n.groupId);continue}let e=t.get(n.attendeeId);e<n.groupId&&(this.logger.warn(`Old group ID ${e} found for attendee ID ${n.attendeeId}, replacing with newer group ID ${n.groupId}`),t.set(n.attendeeId,n.groupId)),i=!0}i&&(this.currentIndex.sources=this.currentIndex.sources.filter(e=>t.get(e.attendeeId)===e.groupId)),this.streamToAttendeeMap=null,this.groupIdToAttendeeMap=null,this.streamToExternalUserIdMap=null}subscribeFrameSent(){this.indexForSubscribe=this.currentIndex}remoteVideoUpdateSent(){this.indexForLastRemoteVideoUpdate=this.currentIndex}integrateSubscribeAckFrame(e){this.currentSubscribeAck=e,this.subscribeTrackToStreamMap=this.buildTrackToStreamMap(this.currentSubscribeAck),this.subscribeSsrcToStreamMap=this.buildSSRCToStreamMap(this.currentSubscribeAck),this.subscribeSsrcToGroupMap=this.buildSSRCToGroupMap(this.currentSubscribeAck),this.subscribeStreamToAttendeeMap=this.buildStreamToAttendeeMap(this.indexForSubscribe),this.subscribeStreamToExternalUserIdMap=this.buildStreamExternalUserIdMap(this.indexForSubscribe),this.sendVideoStreamId=0,e.allocations&&void 0!==e.allocations&&e.allocations.length>0&&(this.sendVideoStreamId=e.allocations[0].streamId)}integrateBitratesFrame(e){if(this.currentIndex)for(let t of e.bitrates){let e=this.currentIndex.sources.find(e=>e.streamId===t.sourceStreamId);void 0!==e&&(e.avgBitrateBps=t.avgBitrateBps)}}allStreams(){let e=new s.default;if(this.currentIndex)for(let t of this.currentIndex.sources)e.add(t.streamId);return e}allVideoSendingSourcesExcludingSelf(e){let t=[],i=new Set;if(this.currentIndex&&this.currentIndex.sources&&this.currentIndex.sources.length)for(let n of this.currentIndex.sources){let{attendeeId:s,externalUserId:a,mediaType:o}=n;s===e||o!==r.SdkStreamMediaType.VIDEO||i.has(s)||(t.push({attendee:{attendeeId:s,externalUserId:a}}),i.add(s))}return t}streamSelectionUnderBandwidthConstraint(e,t,i,n){let a=new Set;if(this.currentIndex)for(let n of this.currentIndex.sources)n.attendeeId!==e&&n.mediaType===r.SdkStreamMediaType.VIDEO&&(t.has(n.attendeeId)||i.has(n.attendeeId)||a.add(n.attendeeId));let o=this.buildAttendeeToSortedStreamDescriptorMapExcludingSelf(e),d=new Map,l=0;o.forEach((e,t)=>{d.set(t,e[0]),l+=e[0].maxBitrateKbps}),l=this.trySelectHighBitrateForAttendees(o,t,l,n,d),this.trySelectHighBitrateForAttendees(o,a,l,n,d);let c=new s.default;for(let e of d.values())c.add(e.streamId);return c}highestQualityStreamFromEachGroupExcludingSelf(e){let t=new s.default;if(this.currentIndex){let i=new Map;for(let t of this.currentIndex.sources)t.attendeeId!==e&&t.mediaType===r.SdkStreamMediaType.VIDEO&&(!i.has(t.groupId)||t.max
32BitrateKbps>i.get(t.groupId).maxBitrateKbps)&&i.set(t.groupId,t);for(let e of i.values())t.add(e.streamId)}return t}numberOfVideoPublishingParticipantsExcludingSelf(e){return this.highestQualityStreamFromEachGroupExcludingSelf(e).array().length}numberOfParticipants(){return this.currentIndex.numParticipants?this.currentIndex.numParticipants:-1}attendeeIdForTrack(e){let t=this.streamIdForTrack(e);return void 0!==t&&this.subscribeStreamToAttendeeMap?this.subscribeStreamToAttendeeMap.get(t)||(this.logger.info(`track ${e} (stream ${t}) does not correspond to a known attendee`),""):(this.logger.warn(`no attendee found for track ${e}`),"")}externalUserIdForTrack(e){let t=this.streamIdForTrack(e);return void 0!==t&&this.subscribeStreamToExternalUserIdMap?this.subscribeStreamToExternalUserIdMap.get(t)||(this.logger.info(`track ${e} (stream ${t}) does not correspond to a known externalUserId`),""):(this.logger.warn(`no external user id found for track ${e}`),"")}attendeeIdForStreamId(e){if(!this.streamToAttendeeMap){if(!this.currentIndex)return"";this.streamToAttendeeMap=this.buildStreamToAttendeeMap(this.currentIndex)}return this.streamToAttendeeMap.get(e)||(this.logger.info(`stream ID ${e} does not correspond to a known attendee`),"")}attendeeIdForGroupId(e){if(!this.groupIdToAttendeeMap){if(!this.currentIndex)return"";this.groupIdToAttendeeMap=this.buildGroupIdToAttendeeMap(this.currentIndex)}return this.groupIdToAttendeeMap.get(e)||(this.logger.info(`group ID ${e} does not correspond to a known attendee`),"")}groupIdForStreamId(e){if(this.currentIndex&&this.currentIndex.sources){for(let t of this.currentIndex.sources)if(t.streamId===e)return t.groupId;if(this.indexForSubscribe){for(let t of this.indexForSubscribe.sources)if(t.streamId===e)return t.groupId}if(this.indexForLastRemoteVideoUpdate){for(let t of this.indexForLastRemoteVideoUpdate.sources)if(t.streamId===e)return t.groupId}}}StreamIdsInSameGroup(e,t){return this.groupIdForStreamId(e)===this.groupIdForStreamId(t)}streamIdForTrack(e){if(this.subscribeTrackToStreamMap)return this.subscribeTrackToStreamMap.get(e)}streamIdForSSRC(e){if(this.subscribeSsrcToStreamMap)return this.subscribeSsrcToStreamMap.get(e)}overrideStreamIdMappings(e,t){if(this.subscribeTrackToStreamMap){for(let[i,n]of this.subscribeTrackToStreamMap.entries())if(e===n){this.subscribeTrackToStreamMap.set(i,t);break}}if(this.subscribeSsrcToStreamMap){for(let[i,n]of this.subscribeSsrcToStreamMap.entries())if(e===n){this.subscribeSsrcToStreamMap.set(i,t);break}}}groupIdForSSRC(e){if(this.subscribeSsrcToGroupMap)return this.subscribeSsrcToGroupMap.get(e)}streamsPausedAtSource(){let e=new s.default;if(this.currentIndex)for(let t of this.currentIndex.pausedAtSourceIds)e.add(t);return e}sendVideoStreamIdFromRid(e){return this.sendVideoStreamId}buildTrackToStreamMap(e){let t=new Map;for(let i of(this.logger.debug(()=>`trackMap ${JSON.stringify(e.tracks)}`),e.tracks))i.trackLabel.length>0&&i.streamId>0&&t.set(i.trackLabel,i.streamId);return t}buildSSRCToStreamMap(e){let t=new Map;for(let i of(this.logger.debug(()=>`ssrcMap ${JSON.stringify(e.tracks)}`),e.tracks))i.trackLabel.length>0&&i.streamId>0&&t.set(i.ssrc,i.streamId);return t}buildSSRCToGroupMap(e){let t=new Map;for(let i of e.tracks)i.trackLabel.length>0&&i.streamId>0&&t.set(i.ssrc,this.groupIdForStreamId(i.streamId));return t}buildStreamToAttendeeMap(e){let t=new Map;if(e)for(let i of e.sources)t.set(i.streamId,i.attendeeId);return t}buildGroupIdToAttendeeMap(e){let t=new Map;for(let i of e.sources)t.set(i.groupId,i.attendeeId);return t}buildStreamExternalUserIdMap(e){let t=new Map;if(e)for(let i of e.sources)i.externalUserId&&t.set(i.streamId,i.externalUserId);return t}trySelectHighBitrateForAttendees(e,t,i,n,r){for(let s of t){if(i>=n)break;if(e.has(s)){for(let t of e.get(s).reverse())if(i-r.get(s).maxBitrateKbps+t.maxBitrateKbps<n){i=i-r.get(s).maxBitrateKbps+t.maxBitrateKbps,r.set(s,t);break}}}return i}buildAttendeeToSortedStreamDescriptorMapExcludingSelf(e){let t=new Map;if(this.currentIndex)for(let i of this.currentIndex.sources)i.attendeeId!==e&&i.mediaType===r.SdkStreamMediaType.VIDEO&&(t.has(i.attendeeId)?t.get(i.attendeeId).push(i):t.set(i.attendeeId,[i]));return t.forEach((e,t)=>{e.sort((e,t)=>
32e.maxBitrateKbps>t.maxBitrateKbps?1:e.maxBitrateKbps<t.maxBitrateKbps?-1:0)}),t}}t.default=o},30481:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=i(8283),s=n(i(35341)),a=n(i(86196));class o extends s.default{constructor(){super(...arguments),this.streamIdToBitrateKbpsMap=new Map,this._localStreamInfos=[],this._sendRidToVideoStreamIdMap=new Map}localStreamDescriptions(){let e=[];return this._localStreamInfos.forEach(t=>{e.push(t.clone())}),e}integrateUplinkPolicyDecision(e){let t=!0,i=0;for(let n=0;n<e.length;n++){let r=e[n].maxBitrate/1e3,s=e[n].maxFramerate;if(!t||n===this._localStreamInfos.length){t=!1;let o=new a.default;o.maxBitrateKbps=r,o.maxFrameRate=s,o.disabledByUplinkPolicy=0===r,o.rid=e[n].rid,0!==r&&(o.timeEnabled=Date.now()),this._localStreamInfos.push(o),i++;continue}0===this._localStreamInfos[i].maxBitrateKbps&&r>0&&(this._localStreamInfos[i].timeEnabled=Date.now()),this._localStreamInfos[i].maxBitrateKbps=r,this._localStreamInfos[i].maxFrameRate=s,this._localStreamInfos[i].disabledByUplinkPolicy=0===r,i++}t&&this._localStreamInfos.splice(i)}integrateBitratesFrame(e){super.integrateBitratesFrame(e);let t=new Set,i=new Set(this.streamIdToBitrateKbpsMap.keys());for(let i of e.bitrates)t.add(i.sourceStreamId),this.streamIdToBitrateKbpsMap.set(i.sourceStreamId,this.convertBpsToKbps(i.avgBitrateBps));for(let e of i)t.has(e)||(this.streamIdToBitrateKbpsMap.get(e)===o.UNSEEN_STREAM_BITRATE?this.streamIdToBitrateKbpsMap.set(e,o.RECENTLY_INACTIVE_STREAM_BITRATE):this.streamIdToBitrateKbpsMap.set(e,o.NOT_SENDING_STREAM_BITRATE));this.logLocalStreamDescriptions()}logLocalStreamDescriptions(){let e="";for(let t of this._localStreamInfos)e+=`streamId=${t.streamId} maxBitrate=${t.maxBitrateKbps} disabledByUplink=${t.disabledByUplinkPolicy}
33`;this.logger.debug(()=>e)}integrateIndexFrame(e){super.integrateIndexFrame(e);let t=new Set,i=new Set(this.streamIdToBitrateKbpsMap.keys());for(let e of this.currentIndex.sources)e.mediaType===r.SdkStreamMediaType.VIDEO&&(t.add(e.streamId),this.streamIdToBitrateKbpsMap.has(e.streamId)||this.streamIdToBitrateKbpsMap.set(e.streamId,o.UNSEEN_STREAM_BITRATE));for(let e of i)t.has(e)||this.streamIdToBitrateKbpsMap.delete(e)}integrateSubscribeAckFrame(e){if(super.integrateSubscribeAckFrame(e),!e.allocations||void 0===e.allocations)return;let t=0;for(let i of(this._sendRidToVideoStreamIdMap.clear(),e.allocations)){if(this._localStreamInfos.length<t+1){this.logger.info("simulcast: allocation has more than number of local streams");break}this._localStreamInfos[t].groupId=i.groupId,this._localStreamInfos[t].streamId=i.streamId,this.streamIdToBitrateKbpsMap.has(i.streamId)||this.streamIdToBitrateKbpsMap.set(i.streamId,o.UNSEEN_STREAM_BITRATE),this._sendRidToVideoStreamIdMap.set(this._localStreamInfos[t].rid,i.streamId),t++}}sendVideoStreamIdFromRid(e){let t=0;return this._sendRidToVideoStreamIdMap.has(e)&&(t=this._sendRidToVideoStreamIdMap.get(e)),t}}o.UNSEEN_STREAM_BITRATE=-2,o.RECENTLY_INACTIVE_STREAM_BITRATE=-1,o.NOT_SENDING_STREAM_BITRATE=0,o.BitratesMsgFrequencyMs=4e3,t.default=o},86196:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=i(8283);class r{constructor(e,t,i,n,r){this.attendeeId="",this.groupId=0,this.streamId=0,this.ssrc=0,this.trackLabel="",this.maxBitrateKbps=0,this.avgBitrateKbps=0,this.maxFrameRate=0,this.width=0,this.height=0,this.timeEnabled=0,this.disabledByWebRTC=!1,this.disabledByUplinkPolicy=!1,this.rid="",this.attendeeId=e,this.groupId=t,this.streamId=i,this.maxBitrateKbps=n,this.avgBitrateKbps=r}clone(){let e=new r;return e.attendeeId=this.attendeeId,e.groupId=this.groupId,e.streamId=this.streamId,e.ssrc=this.ssrc,e.trackLabel=this.trackLabel,e.maxBitrateKbps=this.maxBitrateKbps,e.avgBitrateKbps=this.avgBitrateKbps,e.maxFrameRate=this.maxFrameRate,e.timeEnabled=this.timeEnabled,e.disabledByUplinkPolicy=this.disabledByUplinkPolicy,e.width=this.width,e.height=this.height,e}toStreamDescriptor(){let e=n.SdkStreamDescriptor.create();return e.mediaType=n.SdkStreamMediaType.VIDEO,e.trackLabel=this.trackLabel,e.attendeeId=this.attendeeId,e.streamId=this.streamId,e.groupId=this.groupId,e.framerate=this.maxFrameRate,e.maxBitrateKbps=this.disabledByU
33plinkPolicy?0:this.maxBitrateKbps,e.avgBitrateBps=this.avgBitrateKbps,e}totalPixels(){return this.width*this.height}}t.default=r},14284:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(88386));class s{constructor(){this.observerQueue=new Set,this.element=null,this.frameMonitor=new r.default,this.resizeObserver=new ResizeObserver(e=>{for(let t of e){let{width:e,height:i}=t.contentRect;for(let t of this.observerQueue)t.videoElementResolutionChanged(e,i)}})}registerObserver(e){this.observerQueue.add(e)}removeObserver(e){this.observerQueue.delete(e)}bindVideoElement(e){this.element!==e&&(this.element&&(this.resizeObserver.unobserve(this.element),this.frameMonitor.stop()),this.element=e,this.element&&(this.resizeObserver.observe(this.element),this.frameMonitor.start(this.element,{firstVideoElementFrameDidRender:e=>{var t;for(let i of this.observerQueue)null===(t=i.videoElementFirstFrameDidRender)||void 0===t||t.call(i,e)},videoElementFrameMetricsDidReceive:e=>{var t;for(let i of this.observerQueue)null===(t=i.videoElementMetricsDidReceive)||void 0===t||t.call(i,e)}})))}}t.default=s},6476:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340)),s=n(i(67941)),a=n(i(81993));class o{static connectVideoStreamToVideoElement(e,t,i){let n=i&&"environment"!==e.getVideoTracks()[0].getSettings().facingMode?"rotateY(180deg)":"";if(o.setVideoElementFlag(t,"disablePictureInPicture",i),o.setVideoElementFlag(t,"disableRemotePlayback",i),t.style.transform!==n&&(t.style.transform=n),t.hasAttribute("controls")&&t.removeAttribute("controls"),t.hasAttribute("autoplay")||t.setAttribute("autoplay","true"),t.hasAttribute("playsinline")||t.setAttribute("playsinline","true"),t.hasAttribute("muted")||(t.setAttribute("muted","true"),t.muted=!0),t.srcObject!==e&&(t.srcObject=e,new r.default().requiresVideoPlayWorkaround()&&t.paused)){let e=t.play();void 0!==e&&e.catch(e=>{console.warn("Error playing video in Safari",e)}).then(()=>{console.debug("Video played successfully in Safari")})}}static disconnectVideoStreamFromVideoElement(e,t,i=!1){if(e){if(t)i||(e.srcObject=null,e.style.transform="");else{if(!e.srcObject)return;e.pause(),e.style.transform="",o.setVideoElementFlag(e,"disablePictureInPicture",!1),o.setVideoElementFlag(e,"disableRemotePlayback",!1),e.srcObject=null}}}constructor(e,t,i,n,r){this.tileController=i,this.devicePixelRatioMonitor=n,this.resolutionMonitor=r,this.tileState=new a.default,this.tileState.tileId=e,this.tileState.localTile=t,this.devicePixelRatioMonitor.registerObserver(this)}destroy(){this.devicePixelRatioMonitor.removeObserver(this),this.tileState.boundVideoElement&&this.tileState.boundVideoElement.srcObject===this.tileState.boundVideoStream&&o.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement,!1),this.tileState=new a.default}devicePixelRatioChanged(e){this.tileState.devicePixelRatio=e,this.sendTileStateUpdate()}id(){return this.tileState.tileId}state(){return this.tileState.clone()}stateRef(){return this.tileState}bindVideoStream(e,t,i,n,r,a,o,d){let l=!1;this.tileState.boundAttendeeId!==e&&(this.tileState.boundAttendeeId=e,new s.default(e).hasModality(s.default.MODALITY_CONTENT)&&(this.tileState.isContent=!0),l=!0),this.tileState.boundExternalUserId!==o&&(this.tileState.boundExternalUserId=o,l=!0),this.tileState.localTile!==t&&(this.tileState.localTile=t,l=!0),this.tileState.boundVideoStream!==i&&(this.tileState.boundVideoStream=i,l=!0),this.tileState.videoStreamContentWidth!==n&&(this.tileState.videoStreamContentWidth=n,l=!0),this.tileState.videoStreamContentHeight!==r&&(this.tileState.videoStreamContentHeight=r,l=!0),this.tileState.streamId!==a&&(this.tileState.streamId=a,l=!0),this.tileState.groupId!==d&&(this.tileState.groupId=d,l=!0),l&&this.sendTileStateUpdate()}bindVideoElement(e){var t;let i=!1;this.tileState.boundVideoElement!==e&&(this.tileState.boundVideoElement=e,null===(t=this.resolutionMonitor)||void 0===t||t.bindVideoElement(this.tileState.boundVideoElement),i=!0),null!==this.tileState.boundVideoElement?(this.tileState.videoElementCSSWidthPixels!==e.clientWidth&&(this.tileState.videoElementCSSWidthPixels=e.clientWidth,i=!0),this.tileState.videoElementCSSHeightPixels!==e.clientHeight&&(this.tileState.videoElementCSSHeightPixels=e.clientHeight,i=!0)):(this.tileState.videoElementCSSWidthPixels=null,this.tileState.videoElementCSSHeightPixels=null),i&&this.sendTileStateUpdate()}pause(){this.tileState.paused||(this.tileState.paused=!0,this.sendTileStateUpdate())}unpause(){this.tileState.paused&&(this.tileState.paused=!1,this.sendTileStateUpdate())}markPoorConnection(){return!this.tileState.poorConnection&&(this.tileState.poorConnection=!0,this.sendTileStateUpdate(),!0)}unmarkPoorConnection(){return!!this.tileState.poorConnection&&(this.tileState.poorConnection=!1,this.sendTileStateUpdate(),!0)}capture(){if(!this.tileState.active)return null;let e=document.createElement("canvas"),t=this.tileState.boundVideoElement;e.width=t.videoWidth||t.width,e.height=t.videoHeight||t.height;let i=e.getContext("2d");return i.drawImage(t,0,0,e.width,e.height),i.getImageData(0,0,e.width,e.height)}setStreamId(e){this.tileState.streamId=e,this.tileController.sendTileStateUpdate(this.state())}sendTileStateUpdate(){this.updateActiveState(),this.updateVideoStreamOnVideoElement(),this.updateVideoElementPhysicalPixels(),this.tileController.sendTileStateUpdate(this.state())}updateActiveState(){this.tileState.active=!!(!this.tileState.paused&&!this.tileState.poorConnection&&this.tileState.boundAttendeeId&&this.tileState.boundVideoElement&&this.tileState.boundVideoStream)}updateVideoElementPhysicalPixels(){"number"==typeof this.tileState.videoElementCSSWidthPixels&&"number"==typeof this.tileState.videoElementCSSHeightPixels?(this.tileState.videoElementPhysicalWidthPixels=this.tileState.devicePixelRatio*this.tileState.videoElementCSSWidthPixels,this.tileState.videoElementPhysicalHeightPixels=this.tileState.devicePixelRatio*this.tileState.videoElementCSSHeightPixels):(this.tileState.videoElementPhysicalWidthPixels=null,this.tileState.videoElementPhysicalHeightPixels=null)}updateVideoStreamOnVideoElement(){this.tileState.active?o.connectVideoStreamToVideoElement(this.tileState.boundVideoStream,this.tileState.boundVideoElement,this.tileState.localTile):o.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement,this.tileState.paused,this.tileController.keepLastFrameWhenPaused)}static setVideoElementFlag(e,t,i){t in e&&(e[t]=i)}}t.default=o},88386:function(e,t){"use strict";
33Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.element=null,this.observer=null,this.firstFrameRendered=!1,this.videoFrameCallbackId=null,this.metricsCallbackId=null,this.frameCount=0,this.metricsWindowStartMs=0,this.resizeListener=null}get supportsVideoFrameCallback(){return null!==this.element&&"requestVideoFrameCallback"in this.element}start(e,t){this.stop(),this.element=e,this.observer=t,this.firstFrameRendered=!1,this.startFirstFrameDetection()}stop(){this.element&&(this.stopMetricsTracking(),null!==this.videoFrameCallbackId&&(this.element.cancelVideoFrameCallback(this.videoFrameCallbackId),this.videoFrameCallbackId=null),this.resizeListener&&(this.element.removeEventListener("resize",this.resizeListener),this.resizeListener=null),this.element=null,this.observer=null)}startFirstFrameDetection(){this.supportsVideoFrameCallback?this.videoFrameCallbackId=this.element.requestVideoFrameCallback((e,t)=>{this.videoFrameCallbackId=null,this.onFirstFrame(t)}):(this.resizeListener=()=>{this.element.videoWidth>0&&this.element.videoHeight>0&&(this.element.removeEventListener("resize",this.resizeListener),this.resizeListener=null,this.onFirstFrame())},this.element.addEventListener("resize",this.resizeListener))}onFirstFrame(e){var t,i;!this.firstFrameRendered&&(this.firstFrameRendered=!0,null===(i=null===(t=this.observer)||void 0===t?void 0:t.firstVideoElementFrameDidRender)||void 0===i||i.call(t,e),this.supportsVideoFrameCallback&&this.startMetricsTracking())}startMetricsTracking(){this.frameCount=0,this.metricsWindowStartMs=Date.now(),this.scheduleMetricsCallback()}scheduleMetricsCallback(){this.element&&(this.metricsCallbackId=this.element.requestVideoFrameCallback(()=>{var e,t;this.frameCount++;let n=Date.now(),r=n-this.metricsWindowStartMs;if(r>=i.METRICS_INTERVAL_MS){let i=Math.round(1e3*this.frameCount/r);null===(t=null===(e=this.observer)||void 0===e?void 0:e.videoElementFrameMetricsDidReceive)||void 0===t||t.call(e,{fps:i,timestampMs:n}),this.frameCount=0,this.metricsWindowStartMs=n}this.scheduleMetricsCallback()}))}stopMetricsTracking(){null!==this.metricsCallbackId&&this.element&&"cancelVideoFrameCallback"in this.element&&(this.element.cancelVideoFrameCallback(this.metricsCallbackId),this.metricsCallbackId=null),this.frameCount=0,this.metricsWindowStartMs=0}}i.METRICS_INTERVAL_MS=1e3,t.default=i},81993:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.tileId=null,this.localTile=!1,this.localTileStarted=!1,this.isContent=!1,this.active=!1,this.paused=!1,this.poorConnection=!1,this.boundAttendeeId=null,this.boundExternalUserId=null,this.boundVideoStream=null,this.boundVideoElement=null,this.nameplate=null,this.videoStreamContentWidth=null,this.videoStreamContentHeight=null,this.videoElementCSSWidthPixels=null,this.videoElementCSSHeightPixels=null,this.devicePixelRatio=0,this.videoElementPhysicalWidthPixels=null,this.videoElementPhysicalHeightPixels=null,this.streamId=null,this.groupId=null}clone(){let e=new i;return e.tileId=this.tileId,e.localTile=this.localTile,e.isContent=this.isContent,e.active=this.active,e.paused=this.paused,e.poorConnection=this.poorConnection,e.boundAttendeeId=this.boundAttendeeId,e.boundExternalUserId=this.boundExternalUserId,e.boundVideoStream=this.boundVideoStream,e.boundVideoElement=this.boundVideoElement,e.nameplate=this.nameplate,e.videoStreamContentWidth=this.videoStreamContentWidth,e.videoStreamContentHeight=this.videoStreamContentHeight,e.videoElementCSSWidthPixels=this.videoElementCSSWidthPixels,e.videoElementCSSHeightPixels=this.videoElementCSSHeightPixels,e.devicePixelRatio=this.devicePixelRatio,e.videoElementPhysicalWidthPixels=this.videoElementPhysicalWidthPixels,e.videoElementPhysicalHeightPixels=this.videoElementPhysicalHeightPixels,e.streamId=this.streamId,e.groupId=this.groupId,e}}t.default=i},53027:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(31278)),s=n(i(32681)),a=n(i(70615)),o=i(24670),d=n(i(14284)),l=n(i(6476));class c{constructor(e,t,i){this.tileFactory=e,this.audioVideoController=t,this.logger=i,this.tileMap=new Map,this.nextTileId=1,this.currentLocalTile=null,this.currentPausedTilesByIds=new Set,this.resolutionObservers=new Set,this.keepLastFrameWhenPaused=!1,this.keepLastFrameWhenPaused=t.configuration.keepLastFrameWhenPaused}createDevicePixelRatioMonitorIfNeeded(){this.devicePixelRatioMonitor||(this.devicePixelRatioMonitor=new s.default(new a.default,this.logger))}async discardDevicePixelRatioMonitorIfNotNeeded(){if(this.tileMap.size||!this.devicePixelRatioMonitor)return;let e=this.devicePixelRatioMonitor;return this.devicePixelRatioMonitor=void 0,e.destroy()}bindVideoElement(e,t){var i,n;let r=this.getVideoTile(e);
33if(null===r){this.logger.warn(`Ignoring video element binding for unknown tile id ${e}`);return}if(r.bindVideoElement(t),t&&!r.state().localTile){let e=null!==(i=r.state().groupId)&&void 0!==i?i:null;if(null!==e)for(let t of this.resolutionObservers)null===(n=t.videoTileBound)||void 0===n||n.call(t,e)}}unbindVideoElement(e,t=!0){let i=this.getVideoTile(e);if(null===i){this.logger.warn(`Ignoring video element unbinding for unknown tile id ${e}`);return}for(let e of(this.logger.info("Unbinding the video element"),this.resolutionObservers))e.videoTileUnbound(i.state().boundAttendeeId,i.state().groupId);let n=i.stateRef().boundVideoElement;i.bindVideoElement(null),t&&(this.logger.info("Cleaning up the video element"),l.default.disconnectVideoStreamFromVideoElement(n,!1))}startLocalVideoTile(){if(this.audioVideoController.configuration.meetingFeatures.videoMaxResolution===r.default.VideoDisabled)return this.logger.warn("Could not start camera video because max video resolution was set to None"),-1;let e=this.findOrCreateLocalVideoTile();return this.currentLocalTile.stateRef().localTileStarted=!0,this.audioVideoController.update({needsRenegotiation:!0}),e.id()}stopLocalVideoTile(){this.currentLocalTile&&(this.currentLocalTile.stateRef().localTileStarted=!1,this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId,!0,null,null,null,null,this.audioVideoController.configuration.credentials.externalUserId),this.audioVideoController.update({needsRenegotiation:!0}))}hasStartedLocalVideoTile(){return!!(this.currentLocalTile&&this.currentLocalTile.stateRef().localTileStarted)}removeLocalVideoTile(){this.currentLocalTile&&this.removeVideoTile(this.currentLocalTile.id())}getLocalVideoTile(){return this.currentLocalTile}pauseVideoTile(e){let t=this.getVideoTile(e);t&&(this.currentPausedTilesByIds.has(e)||(this.audioVideoController.pauseReceivingStream(t.stateRef().streamId),this.currentPausedTilesByIds.add(e)),t.pause())}unpauseVideoTile(e){let t=this.getVideoTile(e);t&&(this.currentPausedTilesByIds.has(e)&&(this.audioVideoController.resumeReceivingStream(t.stateRef().streamId),this.currentPausedTilesByIds.delete(e)),t.unpause())}getVideoTile(e){return this.tileMap.has(e)?this.tileMap.get(e):null}getVideoTileArea(e){let t=e.state(),i=0,n=0;return t.boundVideoElement&&(i=t.boundVideoElement.clientHeight*t.devicePixelRatio,n=t.boundVideoElement.clientWidth*t.devicePixelRatio),i*n}getAllRemoteVideoTiles(){let e=[];return this.tileMap.forEach((t,i)=>{this.currentLocalTile&&i===this.currentLocalTile.id()||e.push(t)}),e}getAllVideoTiles(){return Array.from(this.tileMap.values())}addVideoTile(e=!1){let t=this.nextTileId;this.nextTileId+=1,this.createDevicePixelRatioMonitorIfNeeded();let i=this.tileFactory.makeTile(t,e,this,this.devicePixelRatioMonitor,this.createResolutionMonitor(t));return this.tileMap.set(t,i),i}removeVideoTile(e){if(!this.tileMap.has(e))return;let t=this.tileMap.get(e);this.currentLocalTile===t&&(this.currentLocalTile=null),t.destroy(),this.tileMap.delete(e),this.audioVideoController.forEachObserver(t=>{o.Maybe.of(t.videoTileWasRemoved).map(i=>i.bind(t)(e))}),this.discardDevicePixelRatioMonitorIfNotNeeded()}removeVideoTilesByAttendeeId(e){let t=[];for(let i of this.getAllVideoTiles()){let n=i.state();n.boundAttendeeId===e&&(this.removeVideoTile(n.tileId),t.push(n.tileId))}return t}removeAllVideoTiles(){for(let e of Array.from(this.tileMap.keys()))this.removeVideoTile(e)}sendTileStateUpdate(e){this.audioVideoController.forEachObserver(t=>{o.Maybe.of(t.videoTileDidUpdate).map(i=>i.bind(t)(e))})}haveVideoTilesWithStreams(){for(let e of this.getAllVideoTiles())if(e.state().boundVideoStream)return!0;return!1}haveVideoTileForAttendeeId(e){return!!this.getVideoTileForAttendeeId(e)}getVideoTileForAttendeeId(e){for(let t of this.getAllVideoTiles())if(t.state().boundAttendeeId===e)return t}captureVideoTile(e){let t=this.getVideoTile(e);return t?t.capture():null}registerVideoTileResolutionObserver(e){this.resolutionObservers.add(e)}removeVideoTileResolutionObserver(e){this.resolutionObservers.delete(e)}createResolutionMonitor(e){let t=new class{constructor(e,t){this.controller=e,this.tileId=t}videoElementResolutionChanged(e,t){this.controller.handleVideoElementResolutionChanged(this.tileId,e,t)}videoElementFirstFrameDidRender(e){this.controller.handleVideoFirstFrameDidRender(this.tileId,e)}videoElementMetricsDidReceive(e){this.controller.handleVideoElementFrameMetrics(this.tileId,e)}}(this,e),i=new d.default;return i.registerObserver(t),i}handleVideoElementResolutionChanged(e,t,i){let n=this.getVideoTile(e);
33if(n){let e=n.state().boundAttendeeId;for(let n of this.resolutionObservers)n.videoTileResolutionDidChange(e,t,i)}}handleVideoFirstFrameDidRender(e,t){var i,n;let r=this.getVideoTile(e);if(!r||r.state().localTile)return;let s=null!==(i=r.state().groupId)&&void 0!==i?i:null;if(null!==s)for(let e of this.resolutionObservers)null===(n=e.videoTileFirstFrameDidRender)||void 0===n||n.call(e,s,t)}handleVideoElementFrameMetrics(e,t){var i,n;let r=this.getVideoTile(e);if(!r||r.state().localTile)return;let s=null!==(i=r.state().groupId)&&void 0!==i?i:null;if(null!==s)for(let e of this.resolutionObservers)null===(n=e.videoTileRenderMetricsDidReceive)||void 0===n||n.call(e,s,t)}findOrCreateLocalVideoTile(){return this.currentLocalTile||(this.currentLocalTile=this.addVideoTile(!0),this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId,!0,null,null,null,null,this.audioVideoController.configuration.credentials.externalUserId)),this.currentLocalTile}}t.default=c},48569:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(6476));class s{makeTile(e,t,i,n,s){return new r.default(e,t,i,n,s)}}t.default=s},11079:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{}t.default=i},8459:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(92964)),s=n(i(46599)),a=i(24670),o=n(i(10512)),d=n(i(11079));class l{constructor(e,t){this.selfAttendeeId=e,this.logger=t,this.numSenders=0,this.shouldDisableSimulcast=!1,this.newQualityMap=new Map,this.currentQualityMap=new Map,this.newActiveStreams=1,this.videoIndex=null,this.observerQueue=new Set,this.hiTargetBitrateKbps=l.kHiTargetBitrateKbpsHd,this.midTargetBitrateKbps=l.kMidTargetBitrateKbpsHd,this.lowTargetBitrateKbps=l.kLowTargetBitrateKbpsHd,this.enableFhdVideo=!1,this.optimalParameters=new o.default(0,0,0,0,!0),this.parametersInEffect=new o.default(0,0,0,0,!0),this.currentQualityMap=this.fillEncodingParamWithBitrates([this.lowTargetBitrateKbps,0,this.hiTargetBitrateKbps]),this.newQualityMap=this.fillEncodingParamWithBitrates([this.lowTargetBitrateKbps,0,this.hiTargetBitrateKbps])}updateConnectionMetric(e){}calculateEncodingParameters(){let e=[new d.default,new d.default,new d.default];this.shouldDisableSimulcast?(this.newActiveStreams=0,e[0].maxBitrateKbps=0,e[1].maxBitrateKbps=this.hiTargetBitrateKbps,e[2].maxBitrateKbps=0):this.numSenders<=4?(this.newActiveStreams=1,e[0].maxBitrateKbps=this.lowTargetBitrateKbps,e[1].maxBitrateKbps=0,e[2].maxBitrateKbps=this.hiTargetBitrateKbps):(this.newActiveStreams=2,e[0].maxBitrateKbps=2*this.lowTargetBitrateKbps/3,e[1].maxBitrateKbps=this.numSenders<=6?this.midTargetBitrateKbps:.6*this.midTargetBitrateKbps,e[2].maxBitrateKbps=0);let t=e.map((e,t,i)=>e.maxBitrateKbps);return this.newQualityMap=this.fillEncodingParamWithBitrates(t),this.encodingParametersEqual()||this.logger.info(`simulcast: policy:calculateEncodingParameters numSources:${this.numSenders} shouldDisableSimulcast:${this.shouldDisableSimulcast} newQualityMap: ${this.getQualityMapString(this.newQualityMap)}`),this.newQualityMap}chooseMediaTrackConstraints(){}chooseEncodingParameters(){return this.currentQualityMap=this.newQualityMap,this.activeStreamsToPublish!==this.newActiveStreams&&(this.activeStreamsToPublish=this.newActiveStreams,this.publishEncodingSimulcastLayer()),this.currentQualityMap}updateIndex(e){let t=e.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId)+1,i=t!==this.numSenders,n=e.numberOfParticipants(),r=n>=0&&n<=2,s=this.shouldDisableSimulcast!==r;this.numSenders=t,this.shouldDisableSimulcast=r,this.optimalParameters=new o.default(this.captureWidth(),this.captureHeight(),this.captureFrameRate(),this.maxBandwidthKbps(),!1),this.videoIndex=e,(i||s)&&(this.newQualityMap=this.calculateEncodingParameters())}wantsResubscribe(){return!this.encodingParametersEqual()}compareEncodingParameter(e,t){return JSON.stringify(e)===JSON.stringify(t)}encodingParametersEqual(){let e=!1;for(let t of s.default.NAME_ARR_ASCENDING)if(e=e||!this.compareEncodingParameter(this.newQualityMap.get(t),this.currentQualityMap.get(t)))break;return!e}chooseCaptureAndEncodeParameters(){return this.parametersInEffect=this.optimalParameters.clone(),this.parametersInEffect.clone()}captureWidth(){return this.enableFhdVideo?1920:1280}captureHeight(){return this.enableFhdVideo?1080:768}captureFrameRate(){return 15}maxBandwidthKbps(){return this.enableFhdVideo?2500:1400}
33setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}setHighResolutionFeatureEnabled(e){this.enableFhdVideo=e,this.hiTargetBitrateKbps=e?l.kHiTargetBitrateKbpsFhd:l.kHiTargetBitrateKbpsHd,this.midTargetBitrateKbps=e?l.kMidTargetBitrateKbpsFhd:l.kMidTargetBitrateKbpsHd,this.lowTargetBitrateKbps=e?l.kLowTargetBitrateKbpsFhd:l.kLowTargetBitrateKbpsHd}wantsVideoDependencyDescriptorRtpHeaderExtension(){return!0}fillEncodingParamWithBitrates(e){let t=new Map,i=s.default.NAME_ARR_ASCENDING,n=this.shouldDisableSimulcast?1:4;for(let r=0;r<i.length;r++){let s=i[r];t.set(s,{rid:s,active:e[r]>0,scaleResolutionDownBy:Math.max(n,1),maxBitrate:1e3*e[r]}),n/=2}return t}getQualityMapString(e){let t="";return 3===this.videoIndex.localStreamDescriptions().length&&e.forEach(e=>{t+=`{ rid: ${e.rid} active:${e.active} maxBitrate:${e.maxBitrate}}`}),t}getEncodingSimulcastLayer(e){switch(e){case 0:return r.default.High;case 1:return r.default.LowAndHigh;case 2:return r.default.LowAndMedium}}publishEncodingSimulcastLayer(){let e=this.getEncodingSimulcastLayer(this.activeStreamsToPublish);this.forEachObserver(t=>{a.Maybe.of(t.encodingSimulcastLayersDidChange).map(i=>i.bind(t)(e))})}addObserver(e){this.logger.info("adding simulcast uplink observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing simulcast uplink observer"),this.observerQueue.delete(e)}forEachObserver(e){for(let t of this.observerQueue)e(t)}}l.kHiTargetBitrateKbpsHd=1200,l.kMidTargetBitrateKbpsHd=600,l.kLowTargetBitrateKbpsHd=300,l.kHiTargetBitrateKbpsFhd=2e3,l.kMidTargetBitrateKbpsFhd=1e3,l.kLowTargetBitrateKbpsFhd=500,t.default=l},6354:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(56446));class s{constructor(e,t){this.encodingParams=t,this.enableUhdContent=!1,this.defaultHiTargetBitrateKbps=1200,this.defaultLowTargetBitrateKbps=300}updateConnectionMetric(e){}chooseMediaTrackConstraints(){}chooseEncodingParameters(){var e,t,i,n,s,a,o,d,l,c,u,h;let f=new Map,m=r.default.NAME_ARR_ASCENDING;return f.set(m[0],{rid:m[0],active:!0,scaleResolutionDownBy:(null===(t=null===(e=this.encodingParams)||void 0===e?void 0:e.low)||void 0===t?void 0:t.scaleResolutionDownBy)||2,maxBitrate:1e3*((null===(n=null===(i=this.encodingParams)||void 0===i?void 0:i.low)||void 0===n?void 0:n.maxBitrateKbps)||this.defaultLowTargetBitrateKbps),maxFramerate:(null===(a=null===(s=this.encodingParams)||void 0===s?void 0:s.low)||void 0===a?void 0:a.maxFramerate)||5}),f.set(m[1],{rid:m[1],active:!0,scaleResolutionDownBy:(null===(d=null===(o=this.encodingParams)||void 0===o?void 0:o.high)||void 0===d?void 0:d.scaleResolutionDownBy)||1,maxBitrate:1e3*((null===(c=null===(l=this.encodingParams)||void 0===l?void 0:l.high)||void 0===c?void 0:c.maxBitrateKbps)||this.defaultHiTargetBitrateKbps),maxFramerate:null===(h=null===(u=this.encodingParams)||void 0===u?void 0:u.high)||void 0===h?void 0:h.maxFramerate}),f}updateIndex(e){}wantsResubscribe(){return!1}chooseCaptureAndEncodeParameters(){}maxBandwidthKbps(){return this.enableUhdContent?2e3:1200}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}setHighResolutionFeatureEnabled(e){this.enableUhdContent=e,this.defaultHiTargetBitrateKbps=e?2e3:1200,this.defaultLowTargetBitrateKbps=e?500:300}addObserver(e){}removeObserver(e){}forEachObserver(e){}}t.default=s},95876:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(67941)),s=n(i(10512));class a{constructor(e,t=!0,i,n){this.selfAttendeeId=e,this.scaleResolution=t,this.logger=i,this.browserBehavior=n,this.numberOfPublishedVideoSources=void 0,this.idealMaxBandwidthKbps=1500,this.hasBandwidthPriority=!1,this.encodingParamMap=new Map,this.enableHighResolutionFeature=!1,this.enableSVC=!1,this.isUsingSVCCodec=!0,this.currentScalabilityModeIndex=0,this.numParticipants=0,this.isContentShare()?this.scalabilityModePreferences=["L1T3","L1T1"]:this.scalabilityModePreferences=["L3T3","L1T3","L1T1"],this.reset()}reset(){this.numberOfPublishedVideoSources=void 0,this.optimalParameters=new s.default(0,0,0,0,!1),this.parametersInEffect=new s.default(0,0,0,0,!1),this.encodingParamMap.set(a.encodingMapKey,{maxBitrate:0}),this.currentScalabilityModeIndex=0}updateConnectionMetric(e){}chooseMediaTrackConstraints(){return{}}chooseEncodingParameters(){return new Map}updateIndex(e){var t;let i=!0;this.transceiverController&&(i=this.transceiverController.hasVideoInput());let n=e.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId)+(i?1:0),r=e.numberOfParticipants();if(this.numParticipants===r&&this.numberOfPublishedVideoSources===n){null===(t=this.logger)||void 0===t||t.debug("Skipping update index; Number of participants has not changed");return}this.numberOfPublishedVideoSources=n,this.numParticipants=r,this.updateOptimalParameters()}wantsResubscribe(){return!this.parametersInEffect.equal(this.optimalParameters)}chooseCaptureAndEncodeParameters(){return this.parametersInEffect=this.optimalParameters.clone(),this.parametersInEffect.clone()}updateOptimalParameters(){let e=1;if(this.transceiverController){let t=this.getStreamCaptureSetting();t&&(e=this.calculateEncodingParameters(t).scaleResolutionDownBy)}this.optimalParameters=new s.default(this.captureWidth(),this.captureHeight(),this.captureFrameRate(),this.maxBandwidthKbps(),!1,e,this.enableSVC&&this.numParticipants>2&&this.isUsingSVCCodec&&"L1T1"!==this.scalabilityModePreferences[this.currentScalabilityModeIndex])}captureWidth(){let e=640;return this.getNumberOfPublishedVideoSources()>4&&(e=320),e}captureHeight(){let e=384;return this.getNumberOfPublishedVideoSources()>4&&(e=192),e}captureFrameRate(){return 15}maxBandwidthKbps(){return this.hasBandwidthPriority?Math.trunc(this.idealMaxB
33andwidthKbps):Math.trunc(2>=this.getNumberOfPublishedVideoSources()?this.idealMaxBandwidthKbps:4>=this.getNumberOfPublishedVideoSources()?2*this.idealMaxBandwidthKbps/3:(544/11+14880/(11*this.getNumberOfPublishedVideoSources()))/600*this.idealMaxBandwidthKbps)}setIdealMaxBandwidthKbps(e){this.idealMaxBandwidthKbps=e}setHasBandwidthPriority(e){this.hasBandwidthPriority=e}setTransceiverController(e){this.transceiverController=e}setSVCEnabled(e){var t;this.enableSVC=e,null===(t=this.logger)||void 0===t||t.info(`setSVCEnabled, enable: ${e}}`)}setHighResolutionFeatureEnabled(e){this.enableHighResolutionFeature=e}async updateTransceiverController(){let e=this.getStreamCaptureSetting();if(!e)return;let t=this.calculateEncodingParameters(e);this.shouldUpdateEndcodingParameters(t)&&(this.encodingParamMap.set(a.encodingMapKey,t),this.transceiverController.setEncodingParameters(this.encodingParamMap))}shouldUpdateEndcodingParameters(e){var t,i;let n=null===(i=null===(t=this.transceiverController.localVideoTransceiver().sender.getParameters())||void 0===t?void 0:t.encodings)||void 0===i?void 0:i[0];return e.maxBitrate!==(null==n?void 0:n.maxBitrate)||e.scaleResolutionDownBy!==(null==n?void 0:n.scaleResolutionDownBy)||(null==e?void 0:e.scalabilityMode)!==(null==n?void 0:n.scalabilityMode)}calculateEncodingParameters(e){var t,i,n;let r=1e3*this.maxBandwidthKbps(),s=1,o=720;if(void 0!==e.height&&void 0!==e.width&&this.scaleResolution&&!this.hasBandwidthPriority&&this.getNumberOfPublishedVideoSources()>2&&(480===(o=a.targetHeightArray[Math.min(this.getNumberOfPublishedVideoSources(),a.targetHeightArray.length-1)][this.enableHighResolutionFeature?1:0])&&(null===(t=this.browserBehavior)||void 0===t?void 0:t.disable480pResolutionScaleDown())&&(o=360),s=Math.max(Math.min(e.height,e.width)/o,1),null===(i=this.logger)||void 0===i||i.info(`Resolution scale factor is ${s} for capture resolution ${e.width}x${e.height}. New dimension is ${e.width/s}x${e.height/s}`)),!this.enableSVC)return{scaleResolutionDownBy:s,maxBitrate:r};{let e;return e=this.numParticipants>=0&&this.numParticipants<3||!this.isUsingSVCCodec?"L1T1":this.scalabilityModePreferences[this.currentScalabilityModeIndex],null===(n=this.logger)||void 0===n||n.info(`calculateEncodingParameters: SVC: ${this.enableSVC}    participants: ${this.numParticipants}     publishers: ${this.getNumberOfPublishedVideoSources()}     bitrate: ${r}  targetHeight: ${o}  scalabilityMode: ${e}   isUsingSVCCodec: ${this.isUsingSVCCodec}`),{scaleResolutionDownBy:s,maxBitrate:r,scalabilityMode:e}}}getStreamCaptureSetting(){var e,t,i,n;return null===(n=null===(i=null===(t=null===(e=this.transceiverController)||void 0===e?void 0:e.localVideoTransceiver())||void 0===t?void 0:t.sender)||void 0===i?void 0:i.track)||void 0===n?void 0:n.getSettings()}getNumberOfPublishedVideoSources(){var e;return null!==(e=this.numberOfPublishedVideoSources)&&void 0!==e?e:0}isContentShare(){return new r.default(this.selfAttendeeId).hasModality(r.default.MODALITY_CONTENT)}wantsVideoDependencyDescriptorRtpHeaderExtension(){return this.enableSVC}setMeetingSupportedVideoSendCodecs(e,t){let i=null!=e?e:t,n=i.length>0&&this.isContentShare()?a.contentSVCCodecNames.includes(i[0].codecName):a.videoSVCCodecNames.includes(i[0].codecName);n!==this.isUsingSVCCodec&&(this.isUsingSVCCodec=n,this.updateOptimalParameters())}degradeScalabilityMode(){var e;return!!this.isUsingSVCCodec&&this.numParticipants>=3&&this.currentScalabilityModeIndex+1<this.scalabilityModePreferences.length&&(null===(e=this.logger)||void 0===e||e.info(`Degrading scalability mode from ${this.scalabilityModePreferences[this.currentScalabilityModeIndex]} to ${this.scalabilityModePreferences[this.currentScalabilityModeIndex+1]}`),this.currentScalabilityModeIndex++,this.updateOptimalParameters(),!0)}}a.encodingMapKey="video",a.targetHeightArray=[[0,0],[0,0],[0,0],[540,720],[540,720],[480,540],[480,540],[480,540],[480,540],[360,480],[360,480],[360,480],[360,480],[270,360],[270,360],[270,360],[270,360],[180,270],[180,270],[180,270],[180,270],[180,270],[180,270],[180,270],[180,270],[180,270]],a.videoSVCCodecNames=["VP9"],a.contentSVCCodecNames=["AV1"],t.default=a},73967:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esMo
33dule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(10512));class s{constructor(){}updateConnectionMetric(e){}chooseMediaTrackConstraints(){return{}}chooseEncodingParameters(){return new Map}updateIndex(e){}wantsResubscribe(){return!1}chooseCaptureAndEncodeParameters(){return new r.default(0,0,0,0,!1)}maxBandwidthKbps(){return 0}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}setHighResolutionFeatureEnabled(e){}wantsVideoDependencyDescriptorRtpHeaderExtension(){return!1}}t.default=s},23902:function(e,t){"use strict";function i(e){return e.map(e=>"object"==typeof e?JSON.stringify(e):`${e}`).join(" ")}Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e){this.base=e}debug(...e){this.base.debug(i(e))}info(...e){this.base.info(i(e))}warn(...e){this.base.warn(i(e))}error(...e){this.base.error(i(e))}}t.default=n},8917:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.VoiceFocusDeviceTransformer=void 0;let r=i(25710),s=i(76477),a=n(i(61492)),o=n(i(23902)),d=n(i(50105)),l=n(i(63393));class c{static isSupported(e,t){var i,n;let a=c.defaultFetchBehavior(),d=(null==t?void 0:t.logger)?new o.default(t.logger):void 0;if((0,s.isIFramed)()){if((null==t?void 0:t.allowIFrame)===!1)return null===(i=null==t?void 0:t.logger)||void 0===i||i.error("Amazon Voice Focus support check inside iframe: not supported."),Promise.resolve(!1);null===(n=null==t?void 0:t.logger)||void 0===n||n.warn("Amazon Voice Focus support check inside iframe: not recommended.")}return r.VoiceFocus.isSupported(c.augmentSpec(e),{fetchBehavior:a,logger:d})}static async create(e={},t={},i,n,r){var s,a,o;n&&n.Meeting.Meeting&&(n=n.Meeting);let d=(null===(o=null===(a=null===(s=null==n?void 0:n.Meeting)||void 0===s?void 0:s.MeetingFeatures)||void 0===a?void 0:a.Audio)||void 0===o?void 0:o.EchoReduction)==="AVAILABLE",l=i&&!0===i.supported&&"ns_es"===i.model.name&&!d,u="ns_es"===e.name&&!d;if(l||u)throw Error("Echo Reduction requested but not enabled.");let h=new c(e,t,i);return await h.init(),h}static async configure(e={},t={}){return new c(e,t,void 0).configure(!0)}getConfiguration(){return this.configuration}isSupported(){return this.supported}async createTransformDevice(e,t){if(this.supported)try{let[i,n]=await this.allocateVoiceFocus(!0),r={...t,es:"ns_es"===this.spec.name};return new d.default(e,i,n,r)}catch(e){return}}static async destroyVoiceFocus(e){var t;null===(t=null==e?void 0:e.vf)||void 0===t||t.destroy()}constructor(e,{preload:t=!0,logger:i,fetchBehavior:n=c.defaultFetchBehavior()},r){this.spec=e,this.supported=!0,this.logger=i,this.vfLogger=i?new o.default(i):void 0,this.preload=t,this.fetchBehavior=n,this.spec=c.augmentSpec(this.spec),r&&(this.configuration=Promise.resolve(r))}static augmentSpec(e){return e&&(e.assetGroup||e.revisionID)?e:{...e,assetGroup:c.currentSDKAssetGroup()}}async configure(e=!1){let t={fetchBehavior:this.fetchBehavior,preResolve:e,logger:this.vfLogger};return r.VoiceFocus.configure(this.spec,t)}
33async init(){var e;this.configuration||(this.configuration=this.configure());let t=await this.configuration;if(!t.supported){this.supported=!1;return}this.pendingVoiceFocus=this.createVoiceFocus(t,this.preload);try{await this.pendingVoiceFocus}catch(t){null===(e=this.logger)||void 0===e||e.error(`Unable to initialize Amazon Voice Focus: ${t}`),this.supported=!1}}async createVoiceFocus(e,t){let i=new l.default;return this.vf=await r.VoiceFocus.init(e,{delegate:i,preload:t,logger:this.vfLogger}),[this.vf,i]}async allocateVoiceFocus(e){if(!this.supported)throw Error("Not supported.");if(this.pendingVoiceFocus){let e=this.pendingVoiceFocus;return this.pendingVoiceFocus=void 0,e}return this.createVoiceFocus(await this.configuration,e)}static majorVersion(){return a.default.sdkVersion.match(/^[1-9][0-9]*\.(?:0|[1-9][0-9]*)/)[0]}static majorMinorVersion(){return a.default.sdkVersion.match(/^[1-9][0-9]*\.(?:0|(?:[1-9][0-9]*))\.(?:0|[1-9][0-9]*)/)[0]}static currentSDKAssetGroup(){let e=this.majorVersion();return e?`sdk-${e}`:"stable-v1"}static defaultFetchBehavior(){let e=c.majorMinorVersion()||"unknown",t=a.default.sdkUserAgentLowResolution;return{escapedQueryString:`sdk=${encodeURIComponent(e)}&ua=${encodeURIComponent(t)}`}}}t.VoiceFocusDeviceTransformer=c,t.default=c},50105:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(12340));class s{constructor(e,t,i,n,s=!1,a,o=new r.default,d=new Map,l,c){this.device=e,this.voiceFocus=t,this.delegate=i,this.nodeOptions=n,this.failed=s,this.node=a,this.browserBehavior=o,this.farEndStreamToAudioSourceNode=d,this.mixDestNode=l,this.mixSourceNode=c}getInnerDevice(){return this.device}async mute(e){this.node&&(e?await this.node.disable():await this.node.enable())}async stop(){this.node&&(this.node.disconnect(),await this.node.stop())}async chooseNewInnerDevice(e){return this.device!==e||"default"===e||e&&"object"==typeof e&&("deviceId"in e&&"default"===e.deviceId||"id"in e&&"default"===e.id)?new s(e,this.voiceFocus,this.delegate,this.nodeOptions,this.failed,this.node,this.browserBehavior,this.farEndStreamToAudioSourceNode,this.mixDestNode,this.mixSourceNode):this}async intrinsicDevice(){let e;if(this.failed)return this.device;let t=this.nodeOptions.es,i={echoCancellation:!t,googEchoCancellation:!t,googEchoCancellation2:!t,
33noiseSuppression:!1,googNoiseSuppression:!1,googHighpassFilter:!1,googNoiseSuppression2:!1};return(e=!this.nodeOptions||void 0===this.nodeOptions.agc||this.nodeOptions.agc.useBuiltInAGC,i.autoGainControl=e,i.googAutoGainControl=e,i.googAutoGainControl2=e,this.device)?"string"==typeof this.device?(this.browserBehavior.requiresNoExactMediaStreamConstraints()?i.deviceId=this.device:i.deviceId={exact:this.device},i):this.device.id?this.device:{...this.device,...i}:i}async createAudioNode(e){var t,i;if((null===(t=this.node)||void 0===t?void 0:t.context)===e)return{start:this.node,end:this.node};let n={enabled:!0,agc:{useVoiceFocusAGC:!1},...this.nodeOptions};try{if(null===(i=this.node)||void 0===i||i.disconnect(),this.node=await this.voiceFocus.createNode(e,n),this.nodeOptions.es){for(let t of(this.mixDestNode=new MediaStreamAudioDestinationNode(e,{channelCount:1,channelCountMode:"explicit"}),this.farEndStreamToAudioSourceNode.keys()))this.assignFarEndStreamToAudioSourceNode(t);this.createMixSourceNode()}let t=this.node,r=this.node;return{start:t,end:r}}catch(e){throw this.failed=!0,this.delegate.onFallback(this,e),e}}async observeMeetingAudio(e){if(!this.nodeOptions.es)return;e.addAudioMixObserver(this);let t=await e.getCurrentMeetingAudioStream();t&&this.addFarEndStream(t)}async unObserveMeetingAudio(e){if(!this.nodeOptions.es)return;e.removeAudioMixObserver(this);let t=await e.getCurrentMeetingAudioStream();t&&this.removeFarendStream(t)}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}async addFarEndStream(e){!this.nodeOptions.es||!e||this.farEndStreamToAudioSourceNode.has(e)||(this.node?this.assignFarEndStreamToAudioSourceNode(e):this.farEndStreamToAudioSourceNode.set(e,null))}async removeFarendStream(e){var t;null===(t=this.farEndStreamToAudioSourceNode.get(e))||void 0===t||t.disconnect(),this.farEndStreamToAudioSourceNode.delete(e)}async meetingAudioStreamBecameActive(e){this.addFarEndStream(e)}async meetingAudioStreamBecameInactive(e){this.removeFarendStream(e)}assignFarEndStreamToAudioSourceNode(e){let t=this.node.context.createMediaStreamSource(e);t.channelCount=1,t.channelCountMode="explicit",this.farEndStreamToAudioSourceNode.set(e,t),t.connect(this.mixDestNode,0)}createMixSourceNode(){this.mixSourceNode=this.node.context.createMediaStreamSource(this.mixDestNode.stream),this.mixSourceNode.channelCount=1,this.mixSourceNode.channelCountMode="explicit",this.mixSourceNode.connect(this.node,0,1)}}t.default=s},63393:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(){this.observers=new Set}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}onFallback(e,t){var i;for(let n of this.observers)null===(i=n.voiceFocusFellBackToInnerStream)||void 0===i||i.call(n,e,t)}onCPUWarning(){var e;for(let t of this.observers)null===(e=t.voiceFocusInsufficientResources)||void 0===e||e.call(t)}}t.default=i},84395:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class i{constructor(e,t,i,n,r){this.logger=e,this.realtimeController=t,this.minVolumeDecibels=i,this.maxVolumeDecibels=n,this.selfAttendeeId=r,this.streamIdToAttendeeId={},this.streamIdToExternalUserId={},this.warnedAboutMissingStreamIdMapping={},this.attendeeIdToStreamId={},this.sessionReconnected=!1}onReconnect(){this.sessionReconnected=!0}sendRealtimeUpdatesForAudioStreamIdInfo(e){let t=0;for(let i of e.streams){let n=!!i.attendeeId,r=!!i.externalUserId,s=i.hasOwnProperty("muted"),a=!!i.dropped;
33if(n){this.attendeeIdToStreamId[i.attendeeId]&&this.attendeeIdToStreamId[i.attendeeId]<i.audioStreamId&&delete this.attendeeIdToStreamId[i.attendeeId],this.streamIdToAttendeeId[i.audioStreamId]=i.attendeeId;let n=r?i.externalUserId:i.attendeeId;this.streamIdToExternalUserId[i.audioStreamId]=n,this.attendeeIdToStreamId[i.attendeeId]=i.audioStreamId,this.realtimeController.realtimeSetAttendeeIdPresence(i.attendeeId,!0,n,!1,{attendeeIndex:t++,attendeesInFrame:e.streams.length})}if(s){let e=this.streamIdToAttendeeId[i.audioStreamId],t=this.streamIdToExternalUserId[i.audioStreamId];this.realtimeController.realtimeUpdateVolumeIndicator(e,null,i.muted,null,t)}if(!n&&!s){let n=this.streamIdToAttendeeId[i.audioStreamId];if(n){let r=this.streamIdToExternalUserId[i.audioStreamId];delete this.streamIdToAttendeeId[i.audioStreamId],delete this.streamIdToExternalUserId[i.audioStreamId],delete this.warnedAboutMissingStreamIdMapping[i.audioStreamId],this.attendeeIdToStreamId[n]===i.audioStreamId&&delete this.attendeeIdToStreamId[n];let s=!1;for(let e of Object.keys(this.streamIdToAttendeeId)){let t=parseInt(e);if(t>i.audioStreamId&&this.streamIdToAttendeeId[t]===n){s=!0;break}}s||this.realtimeController.realtimeSetAttendeeIdPresence(n,!1,r,a,{attendeeIndex:t++,attendeesInFrame:e.streams.length})}}}this.sessionReconnected&&(this.cleanUpState(e),this.sessionReconnected=!1)}cleanUpState(e){let t=Object.values(this.streamIdToAttendeeId),i=e.streams.map(e=>e.attendeeId);for(let[e,n]of t.filter(e=>!i.includes(e)).entries()){let t=this.attendeeIdToStreamId[n],i=this.streamIdToExternalUserId[t];if(delete this.streamIdToAttendeeId[t],delete this.streamIdToExternalUserId[t],delete this.warnedAboutMissingStreamIdMapping[t],delete this.attendeeIdToStreamId[n],n===this.selfAttendeeId){this.logger.warn("the volume indicator adapter cleans up the current attendee (presence = false) after reconnection");continue}this.realtimeController.realtimeSetAttendeeIdPresence(n,!1,i,!1,{attendeeIndex:e,attendeesInFrame:n.length})}}sendRealtimeUpdatesForAudioMetadata(e){let t=null,i=null;for(let n of e.attendeeStates){let e=this.attendeeIdForStreamId(n.audioStreamId);n.hasOwnProperty("volume")&&(null===t&&(t={}),null!==e&&(t[e]=this.normalizedVolume(n))),n.hasOwnProperty("signalStrength")&&(null===i&&(i={}),null!==e&&(i[e]=this.normalizedSignalStrength(n)))}this.applyRealtimeUpdatesForAudioMetadata(t,i)}normalizedVolume(e){return Math.min(Math.max(1-(-e.volume-this.maxVolumeDecibels)/(this.minVolumeDecibels-this.maxVolumeDecibels),0),1)}normalizedSignalStrength(e){return Math.min(Math.max(e.signalStrength/i.MAX_SIGNAL_STRENGTH_LEVELS,0),1)}applyRealtimeUpdatesForAudioMetadata(e,t){for(let n in this.streamIdToAttendeeId){let r=this.streamIdToAttendeeId[n],s=this.streamIdToExternalUserId[n],a=null,o=null;null!==e&&(a=e.hasOwnProperty(r)?e[r]:i.IMPLICIT_VOLUME),null!==t&&(o=t.hasOwnProperty(r)?t[r]:i.IMPLICIT_SIGNAL_STRENGTH),(null!==a||null!==o)&&this.realtimeController.realtimeUpdateVolumeIndicator(r,a,null,o,s)}}attendeeIdForStreamId(e){return 0===e?null:this.streamIdToAttendeeId[e]||(this.warnedAboutMissingStreamIdMapping[e]||(this.warnedAboutMissingStreamIdMapping[e]=!0,this.logger.warn(`volume indicator stream id ${e} seen before being defined`)),null)}}i.MAX_SIGNAL_STRENGTH_LEVELS=2,i.IMPLICIT_VOLUME=0,i.IMPLICIT_SIGNAL_STRENGTH=1,t.default=i},92979:function(e,t,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let r=n(i(61492)),s=n(i(84924));class a{constructor(e){this.logger=e}create(e,t,i){this.connection=new WebSocket(i?e:r.default.urlWithVersion(e),t),this.connection.binaryType="arraybuffer"}send(e){if(!this.connection)return this.logger.error("WebSocket not yet created or already destroyed."),!1;try{return e instanceof Uint8Array?this.connection.send(e.buffer):this.connection.send(e),!0}catch(e){return this.logger.debug(()=>`send error: ${e.message}, websocket state=${s.default[this.readyState()]}`),!1}}close(e,t){var i;null===(i=this.connection)||void 0===i||i.close(e,t)}destroy(){this.connection=void 0}
33addEventListener(e,t){if(!this.connection){this.logger.warn("Cannot add event listener with no WebSocket connection.");return}this.connection.addEventListener(e,t)}removeEventListener(e,t){var i;null===(i=this.connection)||void 0===i||i.removeEventListener(e,t)}readyState(){if(!this.connection)return s.default.None;switch(this.connection.readyState){case WebSocket.CONNECTING:return s.default.Connecting;case WebSocket.OPEN:return s.default.Open;case WebSocket.CLOSING:return s.default.Closing;case WebSocket.CLOSED:return s.default.Closed}}}t.default=a},84924:function(e,t){"use strict";var i,n;Object.defineProperty(t,"__esModule",{value:!0}),t.WebSocketReadyState=void 0,(n=i||(t.WebSocketReadyState=i={}))[n.None=0]="None",n[n.Connecting=1]="Connecting",n[n.Open=2]="Open",n[n.Closing=3]="Closing",n[n.Closed=4]="Closed",t.default=i},41738:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0}),t.decideModel=t.measureAndDecideExecutionApproach=void 0;let r=i(35908),s=i(30589),a=3,o={wasm:{noSupport:.07,inline:{c100:1,c50:.36,c20:.16,c10:.07},worker:{c100:.5,c50:.18,c20:.08,c10:.06}},simd:{noSupport:.1,inline:{c100:1,c50:.43,c20:.3,c10:.2},worker:{c100:.5,c50:.21,c20:.15,c10:.1}}};class d{constructor(e,t){this.fetchConfig=e,this.logger=t;let i=`${e.paths.workers}estimator-v1.js`;this.fetchBehavior={headers:e.headers,escapedQueryString:e.escapedQueryString},this.worker=(0,r.loadWorker)(i,"VoiceFocusEstimator",this.fetchBehavior,t)}roundtrip(e,t,i){return new Promise((n,r)=>{this.worker.then(r=>{let s;s=e=>{let{message:a,key:o}=e.data;a===t&&o===i&&(r.removeEventListener("message",s),n(e.data))},r.addEventListener("message",s),r.postMessage(e)}).catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error("Failed to load worker.",e),r(e)})})}supportsSIMD(e){let t="simd",i=e||`${this.fetchConfig.paths.wasm}simd-v1.wasm`,n={message:"supports-simd",fetchBehavior:this.fetchBehavior,path:i,key:t};return this.roundtrip(n,"simd-support",t).then(e=>e.supports)}measure(e,t){let i=`${this.fetchConfig.paths.wasm}bench-v1.wasm`,n=`${this.fetchConfig.paths.wasm}bench-v1_simd.wasm`,r=`bench:${e}`,s={message:"measure",fetchBehavior:this.fetchBehavior,budget:t,path:e?n:i,key:r};return this.roundtrip(s,"measurement",r).then(e=>{if(e.measurement)return e.measurement;throw Error("Failed to measure.")})}stop(){this.worker.then(e=>{var t;null===(t=this.logger)||void 0===t||t.debug("Stopping estimator worker."),e.terminate()}).catch(e=>{})}}let l=(e,t)=>1===e?.6:"quality"===t?.65*e:.5*e,c=({supportsSIMD:e,supportsSAB:t,duration:i,executionPreference:n="auto",simdPreference:r,variantPreference:d="auto",namePreference:c="default",usagePreference:u,executionQuantaPreference:h=a},f=o,m)=>{let p="force"===r||"disable"!==r&&e,g=-1!==i,v=g?(p?2.5:2.63)/i:0,b=p?f.simd:f.wasm,S=g?l(h,u)*v:0,y=g?.7*v:0,C=e=>({supported:!1,reason:e});if(g){if(v<b.noSupport)return C(`Performance score ${v} worse than threshold ${b.noSupport}.`)}else if("auto"===n||"auto"===d)return C(`Missing explicit execution (${n}) or variant (${d}) preference, but no scoring performed.`);null==m||m.debug(`Bench duration ${i} yields inline score ${S} and worker score ${y}.`);let w=(e,t,i)=>({supported:!0,useSIMD:p,processor:e,executionApproach:t,variant:i,executionQuanta:"inline"===t?h:void 0,name:c}),T=(e,t,i)=>"auto"!==t?!g||e>i[t]?t:"failed":e>i.c100?"c100":e>i.c50?"c50":e>i.c20?"c20":e>i.c10?"c10":"failed",M=e=>{switch(e||"auto"){case"auto":{let e=M("inline"),t=M("worker");if(null==m||m.debug(`Reducing auto preference: ${JSON.stringify(e)} vs ${JSON.stringify(t)}`),!1===e.supported||!1===t.supported)return t;if(e.variant===t.variant||"c50"===e.variant)return e;return t}case"worker":if((0,s.supportsSharedArrayBuffer)(globalThis,window,m))return M("worker-sab");return M("worker-postMessage");case"inline":{let e=T(S,d,b.inline);if("failed"===e)return C(`Performance score ${S} not sufficient for inline use with variant preference ${d}.`);return w("voicefocus-inline-processor","inline",e)}case"worker-sab":{if(!t){let e="Requested worker-sab but no SharedArrayBuffer support.";return null==m||m.warn(e),{supported:!1,reason:e}}let e=T(y,d,b.worker);if("failed"===e)return C(`Performance score ${y} not sufficient for worker use with variant preference ${d}.`);return w("voicefocus-worker-sab-processor","worker-sab",e)}
33case"worker-postMessage":{let e=T(y,d,b.worker);if("failed"===e)return C(`Performance score ${y} not sufficient for worker use.`);if("ns_es"===c){let e="Requested echo suppression but postMessage executor does not support it.";return null==m||m.warn(e),{supported:!1,reason:e}}return w("voicefocus-worker-postMessage-processor","worker-postMessage",e)}}};return M(n)},u=(e,t,i,r)=>n(void 0,void 0,void 0,function*(){let n={supportsSIMD:e,supportsSAB:(0,s.supportsSharedArrayBuffer)(globalThis,window,i),duration:-1};if(e)return null==i||i.info("Supports SIMD: true (force)"),n;let a=r||new d(t,i);try{let t=!(0,s.isOldChrome)(window,i)&&(yield a.supportsSIMD());return null==i||i.info(`Supports SIMD: ${t} (force: ${e})`),n.supportsSIMD=t,n}finally{r||a.stop()}}),h=(e,t,i,r)=>n(void 0,void 0,void 0,function*(){let n=new d(t,r);try{let s=yield u(e,t,r,n);if(s.supportsSIMD)try{return s.duration=yield n.measure(!0,i),null==r||r.info("SIMD timing:",s.duration),s}catch(e){null==r||r.warn("Failed SIMD estimation; falling back to non-SIMD."),s.supportsSIMD=!1}return s.duration=yield n.measure(!1,i),null==r||r.info("No-SIMD timing:",s.duration),s}catch(e){throw null==r||r.error("Could not feature check.",e),e}finally{n.stop()}});t.measureAndDecideExecutionApproach=(e,t,i,r=o)=>n(void 0,void 0,void 0,function*(){let n,s=e.executionPreference,{usagePreference:a,variantPreference:o,namePreference:d,simdPreference:l,estimatorBudget:f,executionQuantaPreference:m}=e;"interactivity"===a&&"inline"!==s&&(null==i||i.debug(`Overriding execution preference ${s} to reflect interactivity preference.`),s="inline");let p="force"===l,g="auto"!==s;try{n="auto"!==o&&g?yield u(p,t,i):yield h(p,t,f,i)}catch(e){throw null==i||i.error("Could not load estimator.",e),Error("Could not load Voice Focus estimator.")}return c(Object.assign(Object.assign({},n),{simdPreference:l,executionPreference:s,variantPreference:o,namePreference:d,usagePreference:a,executionQuantaPreference:m}),r,i)}),t.decideModel=({category:e,name:t,variant:i,simd:n,url:r})=>`${e}-${t}-${i}-v1${n?"_simd":""}`},82872:function(e,t){"use strict";function i(e,t,i){return i?fetch(r(e,i),n(t,i)):fetch(e,t)}function n(e,t){return(null==t?void 0:t.headers)?e?Object.assign(Object.assign({},e),{headers:Object.assign(Object.assign({},e.headers||{}),t.headers)}):{headers:t.headers}:e}function r(e,t){if(!(null==t?void 0:t.escapedQueryString))return e;let i=-1!==e.lastIndexOf("?");return`${e}${i?"&":"?"}${t.escapedQueryString}`}Object.defineProperty(t,"__esModule",{value:!0}),t.isValidRevisionID=t.isValidAssetGroup=t.resolveURL=t.addQueryParams=t.withQueryString=t.withRequestHeaders=t.fetchWithBehavior=void 0,t.fetchWithBehavior=i,t.withRequestHeaders=n,t.withQueryString=r,t.addQueryParams=function(e,t){let i=Object.keys(t);if(!i.length)return e;let n=new URLSearchParams(null==e?void 0:e.escapedQueryString);for(let e of i)n.append(e,t[e]);return Object.assign(Object.assign({},e),{escapedQueryString:n.toString()})};let s={method:"HEAD",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"origin"};t.resolveURL=function(e,t){return i(e,s,t).then(t=>t.redirected?t.url:e)},t.isValidAssetGroup=function(e){return!!e&&/^[-.a-zA-Z0-9]+$/.test(e)},t.isValidRevisionID=function(e){return!!e&&/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]{22}$/.test(e)}},35908:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.loadWorker=void 0;let n=i(82872),r={method:"GET",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"no-referrer"};t.loadWorker=(e,t,i,s)=>{null==s||s.debug(`Loading ${t} worker from ${e}.`);let a=!1;try{a=self.origin===new URL(e).origin}catch(e){null==s||s.error("Could not compare origins.",e)}return a?Promise.resolve(new Worker((0,n.withQueryString)(e,i),{name:t})):(0,n.fetchWithBehavior)(e,r,i).then(e=>{if(e.ok)return e.blob().then(e=>new Worker(window.URL.createObjectURL(e)));throw Error("Fetch failed.")})}},30589:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})};
33Object.defineProperty(t,"__esModule",{value:!0}),t.isOldChrome=t.supportsWASMStreaming=t.supportsSharedArrayBuffer=t.supportsWASM=t.supportsAudioWorklet=t.supportsWorker=t.supportsVoiceFocusWorker=t.supportsWASMPostMessage=t.isSafari=void 0;let r=i(35908),s=(e=globalThis)=>!!e.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)/);t.isSafari=(e=globalThis)=>{let t=e.navigator.userAgent,i=t.match(/Safari\//),n=t.match(/Chrom(?:e|ium)\//);return!!(i&&!n)},t.supportsWASMPostMessage=(e=globalThis)=>!(0,t.isSafari)(e)&&(!s(e)||95>(a(e)||0)),t.supportsVoiceFocusWorker=(e=globalThis,i,s)=>n(void 0,void 0,void 0,function*(){if(!(0,t.supportsWorker)(e,s))return!1;let n=`${i.paths.workers}worker-v1.js`;try{let e=yield(0,r.loadWorker)(n,"VoiceFocusTestWorker",i,s);try{e.terminate()}catch(e){null==s||s.debug("Failed to terminate worker.",e)}return!0}catch(e){return null==s||s.info("Failed to fetch and instantiate test worker",e),!1}}),t.supportsWorker=(e=globalThis,t)=>{try{return!!e.Worker}catch(e){return null==t||t.info("Does not support Worker",e),!1}},t.supportsAudioWorklet=(e=globalThis,t)=>{try{return!!e.AudioWorklet&&!!e.AudioWorkletNode}catch(e){return null==t||t.info("Does not support Audio Worklet",e),!1}},t.supportsWASM=(e=globalThis,t)=>{try{return!!e.WebAssembly&&(!!e.WebAssembly.compile||!!e.WebAssembly.compileStreaming)}catch(e){return null==t||t.info("Does not support WASM",e),!1}},t.supportsSharedArrayBuffer=(e=globalThis,t=globalThis,i)=>{try{return!!e.SharedArrayBuffer&&(!!t.chrome||!!e.crossOriginIsolated)}catch(e){return null==i||i.info("Does not support SharedArrayBuffer."),!1}},t.supportsWASMStreaming=(e=globalThis,t)=>{var i;try{return!!(null===(i=e.WebAssembly)||void 0===i?void 0:i.compileStreaming)}catch(e){return null==t||t.info("Does not support WASM streaming compilation",e),!1}};let a=(e=globalThis)=>{try{if(!e.chrome)return}catch(e){}let t=e.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)/);if(t)return parseInt(t[1],10)};t.isOldChrome=(e=globalThis,t)=>{let i=a(e);return!!i&&i<90&&(null==t||t.debug(`Chrome ${i} has incomplete SIMD support.`),!0)}},99452:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VoiceFocusAudioWorkletNode=void 0;class i extends("undefined"!=typeof globalThis&&globalThis.AudioWorkletNode||class{}){}t.VoiceFocusAudioWorkletNode=i},25710:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0}),t.getAudioInput=t.createAudioContext=t.VoiceFocus=void 0;let r=i(41738),s=i(82872),a=i(35908),o=i(30589),d=i(13579),l=i(200),c=i(42312),u={useVoiceFocusAGC:!1,useBuiltInAGC:!0},h="stable-v1",f="https://static.sdkassets.chime.aws",m={processors:`${f}/processors/`,workers:`${f}/workers/`,wasm:`${f}/wasm/`,models:`${f}/wasm/`},p={latencyHint:0},g={channelCount:1,echoCancellation:!0,googEchoCancellation:!0,noiseSuppression:!1,googNoiseSuppression:!1,googHighpassFilter:!1,googTypingNoiseDetection:!1},v=Object.assign(Object.assign({},g),{autoGainControl:!0,googAutoGainControl:!0,googAutoGainControl2:!0}),b=Object.assign(Object.assign({},g),{autoGainControl:!1,googAutoGainControl:!1,googAutoGainControl2:!1}),S={"voicefocus-worker-sab-processor":{file:"worklet-worker-sab-processor-v1.js",node:l.default},"voicefocus-worker-postMessage-processor":{file:"worklet-worker-postMessage-processor-v1.js",node:c.default},"voicefocus-inline-processor":{file:"worklet-inline-processor-v1.js",node:d.default}},y=(e,t)=>{if(void 0!==e&&!(0,s.isValidAssetGroup)(e))throw Error(`Invalid asset group ${e}`);if(void 0!==t&&!(0,s.isValidRevisionID)(t))throw Error(`Invalid revision ID ${t}`)},C=(e,t)=>{let i;if(i=t.useBuiltInAGC?v:b,!e)return{audio:i};if(!e.audio)return e;if(e.video)throw Error("Not adding Voice Focus to multi-device getUserMedia call.");return Object.assign(Object.assign({},e),{audio:!0===e.audio?i:Object.assign(Object.assign({},e.audio),i)})},w=(e,t)=>`${t.models}${(0,r.decideModel)(e)}.wasm`;class T{constructor(e,t,i,n,r,s){this.processorURL=t,this.nodeConstructor=i,this.nodeOptions=n,this.executionQuanta=r,this.logger=s,this.internal={worker:e,isDestroyed:!1}}getModelMetrics(){var e;return null===(e=this.internal.voiceFocusNode)||void 0===e?void 0:e.getModelMetrics()}reset(){var e,t,i;null===(e=this.internal.voiceFocusNode)||void 0===e||e.reset(),null===(t=this.internal.sourceNode)||void 0===t||t.disconnect(),null===(i=this.internal.destinationNode)||void 0===i||i.disconnect()}enable(){var e;null===(e=this.internal.voiceFocusNode)||void 0===e||e.enable()}disable(){var e;null===(e=this.internal.voiceFocusNode)||void 0===e||e.disable()}setMode(e){var t;null===(t=this.internal.voiceFocusNode)||void 0===t||t.setMode(e)}destroy(){var e,t,i,r,s;return n(this,void 0,void 0,function*(){let{worker:n,isDestroyed:a,voiceFocusNode:o,destinationNode:d,sourceNode:l,audioContext:c}=this.internal;if(a){null===(e=this.logger)||void 0===e||e.debug("Voice Focus is already destroyed");return}try{null==n||n.terminate(),null==l||l.disconnect(),null==d||d.disconnect(),yield Promise.all([null!==(t=null==c?void 0:c.close().catch(e=>e))&&void 0!==t?t:yield Promise.resolve(),null!==(i=null==o?void 0:o.stop().catch(e=>e))&&void 0!==i?i:yield Promise.resolve()]),this.internal.audioContext=void 0,this.internal.voiceFocusNode=void 0,this.internal.sourceNode=void 0,this.internal.destinationNode=void 0,null===(r=this.logger)||void 0===r||r.debug("Voice Focus destroyed successfully")}catch(e){throw null===(s=this.logger)||void 0===s||s.error("Error while destroying the Voice Focus instance: ",e),e}finally{this.internal.isDestroyed=!0}})}static isSupported(e,t){let{fetchBehavior:i,logger:n}=t||{};if("undefined"==typeof globalThis)return null==n||n.debug("Browser does not have globalThis."),Promise.resolve(!1);if(!(0,o.supportsAudioWorklet)(globalThis,n))return null==n||n.debug("Browser does not support Audio Worklet."),Promise.resolve(!1);if(!(0,o.supportsWASM)(globalThis,n))return null==n||n.debug("Browser does not support WASM."),Promise.resolve(!1);(0,o.supportsWASMStreaming)(globalThis,n)||null==n||n.debug("Browser does not support streaming WASM compilation.");let{assetGroup:r=h,revisionID:a,paths:d=m}=e||{};y(r,a);let l=Object.assign(Object.assign({},(0,s.addQueryParams)(i,a?{revisionID:a}:{assetGroup:r})),{paths:d});return(0,o.supportsVoiceFocusWorker)(globalThis,l,n)}static mungeExecutionPreference(e,t){let i=void 0===e||"auto"===e;if((0,o.isSafari)(globalThis)){if(i||"inline"===e)return"inline";if(!i)throw Error(`Unsupported execution preference ${e}`)}if("worker-sab"===e&&!(0,o.supportsSharedArrayBuffer)(globalThis,globalThis,t))throw Error(`Unsupported execution preference ${e}`);return e||"auto"}static configure(e,t){return n(this,void 0,void 0,function*(){let{fetchBehavior:i,preResolve:n,logger:a}=t||{},{category:o="voicefocus",name:d="default",variant:l="auto",assetGroup:c=h,revisionID:u,simd:f="detect",mode:p="ns",executionPreference:g="auto",executionQuantaPreference:v,usagePreference:b="interactivity",estimatorBudget:S=100,paths:C=m,thresholds:T}=e||{};if(null==a||a.debug("Configuring Voice Focus with spec",e),void 0!==o&&"voicefocus"!==o)throw Error(`Unrecognized category ${o}`);if(void 0!==d&&"default"!==d&&"ns_es"!==d)throw Error(`Unrecognized feature name ${d}`);if(void 0!==l&&!["auto","c100","c50","c20","c10"].includes(l))throw Error(`Unrecognized feature variant ${l}`);if(void 0!==v&&![1,2,3].includes(v))throw Error(`Unrecognized execution quanta preference ${v}`);if(y(c,u),void 0!==f&&!["detect","force","disable"].includes(f))throw Error(`Unrecognized SIMD option ${f}`);if(void 0!==g&&!["auto","inline","worker","worker-sab","worker-postMessage"].includes(g))throw Error(`Unrecognized execution preference ${g}`);if(void 0!==b&&!["quality","interactivity"].includes(b))throw Error(`Unrecognized usage preference ${b}`);let M={executionPreference:this.mungeExecutionPreference(g,a),usagePreference:b,executionQuantaPreference:v,variantPreference:l,namePreference:d,simdPreference:f,estimatorBudget:S},E=(0,s.addQueryParams)(i,u?{revisionID:u}:{assetGroup:c}),A=Object.assign({paths:C},E),k=yield(0,r.measureAndDecideExecutionApproach)(M,A,a,T);
33if(!1===k.supported)return{supported:!1,reason:k.reason};null==a||a.info("Decided execution approach",k);let{useSIMD:_,processor:P,variant:R,executionQuanta:I}=k,O={category:o||"voicefocus",name:d||"default",mode:p,variant:R,simd:_};if(n){let e=w(O,C);O.url=yield(0,s.resolveURL)(e,E)}return{fetchConfig:A,model:O,processor:P,executionQuanta:I,supported:!0}})}static init(e,{delegate:t,preload:i=!0,logger:r}){return n(this,void 0,void 0,function*(){if(!1===e.supported)throw Error("Voice Focus not supported. Reason: "+e.reason);let{model:n,processor:s,fetchConfig:d,executionQuanta:l}=e,{simd:c,name:u,mode:h}=n,{paths:f}=d;if("voicefocus-inline-processor"!==s&&"voicefocus-worker-postMessage-processor"!==s&&"voicefocus-worker-sab-processor"!==s)throw Error(`Unknown processor ${s}`);let m=n.url||w(n,f);null==r||r.debug(`Using model URL ${m}.`);let p=`${f.wasm}audio_buffer-v1${c?"_simd":""}.wasm`,g=`${f.wasm}resampler-v1${c?"_simd":""}.wasm`,v=`${f.workers}worker-v1.js`,{file:b,node:y}=S[s],C=`${f.processors}${b}`,M=yield(0,a.loadWorker)(v,"VoiceFocusWorker",d,r);if(i){null==r||r.debug("Preloading",m);let e=(0,o.supportsWASMPostMessage)(globalThis)?"get-module":"get-module-buffer";M.postMessage({message:e,preload:!0,key:"model",fetchBehavior:d,path:m})}return Promise.resolve(new T(M,C,y,{processor:s,worker:M,audioBufferURL:p,resamplerURL:g,fetchBehavior:d,modelURL:m,delegate:t,logger:r,numberOfInputs:"ns_es"===u?2:1,mode:h},l,r))})}createNode(e,t){var i;if(this.internal.isDestroyed)throw Error("Unable to create node because VoiceFocus worker has been destroyed.");let{voiceFocusSampleRate:n=16e3===e.sampleRate?16e3:48e3,enabled:r=!0,agc:a=u}=t||{},o=null==t?void 0:t.es,d={voiceFocusSampleRate:n,enabled:r,sendBufferCount:10,prefill:6,agc:a,executionQuanta:this.executionQuanta,supportFarendStream:o,mode:this.nodeOptions.mode},l=(0,s.withQueryString)(this.processorURL,null===(i=this.nodeOptions)||void 0===i?void 0:i.fetchBehavior);return e.audioWorklet.addModule(l).then(()=>new this.nodeConstructor(e,Object.assign(Object.assign({},this.nodeOptions),{processorOptions:d})))}applyToStream(e,t,i,r=!1){var s,a,o;return n(this,void 0,void 0,function*(){let n;if(this.internal.isDestroyed)throw Error("Unable to apply stream because VoiceFocus worker has been destroyed");null===(s=this.internal.sourceNode)||void 0===s||s.disconnect(),null===(a=this.internal.destinationNode)||void 0===a||a.disconnect(),r&&this.internal.voiceFocusNode&&this.internal.voiceFocusNode.isEnabled()?(null===(o=this.logger)||void 0===o||o.info("Re-using existing voice focus node"),n=this.internal.voiceFocusNode):n=yield this.createNode(t,i);let d=t.createMediaStreamSource(e);d.connect(n);let l=t.createMediaStreamDestination();return n.connect(l),this.internal=Object.assign(Object.assign({},this.internal),{voiceFocusNode:n,sourceNode:d,destinationNode:l,audioContext:t}),{node:n,source:d,destination:l,stream:l.stream}})}applyToSourceNode(e,t,i){return n(this,void 0,void 0,function*(){let n=yield this.createNode(t,i);return e.connect(n),n})}}t.VoiceFocus=T,t.createAudioContext=(e=p)=>new(window.AudioContext||window.webkitAudioContext)(e),t.getAudioInput=(e,t,i)=>n(void 0,void 0,void 0,function*(){var n,r;let{constraints:s,spec:a,delegate:o,preload:d=!0,options:l}=t,{logger:c}=i,h=yield T.configure(a,i);if(!h.supported)return null===(n=i.logger)||void 0===n||n.warn("Voice Focus not supported; returning standard stream."),window.navigator.mediaDevices.getUserMedia(s);let f=yield T.init(h,{delegate:o,preload:d,logger:c}),m=(null===(r=t.options)||void 0===r?void 0:r.agc)||u,p=yield window.navigator.mediaDevices.getUserMedia(C(s,m));return f.applyToStream(p,e,l).then(e=>e.stream)})},13579:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});let r=i(30589),s=i(99452);class a extends s.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.cpuWarningCount=0,this.metrics={latencyMillisAverage:0,snr:{average:0,averageActive:0,variance:0,varianceActive:0},drr:{average:0,variance:0,averageActive:0,varianceActive:0},vad:{average:0},cpu:{lateInvoke:0,longInvoke:0}},this.enabled=!1,this.channelCountMode="explicit",this.channelCount=1;let{modelURL:i,worker:n,fetchBehavior:s,logger:a,delegate:o}=t;this.logger=a,this.port.onmessage=this.onProcessorMessage.bind(this),this.delegate=o,a&&a.debug("VoiceFocusInlineNode:",i),this.worker=n,this.worker.onmessage=this.onWorkerMessage.bind(this);let d=(0,r.supportsWASMPostMessage)(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:d,key:"model",fetchBehavior:s,path:i}),this.enabled=!0}onModuleBufferLoaded(e,t){this.port.postMessage({message:"module-buffer",buffer:e,key:t})}onModuleLoaded(e,t){this.port.postMessage({message:"module",module:e,key:t})}enable(){return n(this,void 0,void 0,function*(){this.port.postMessage({message:"enable"}),this.enabled=!0})}disable(){return n(this,void 0,void 0,function*(){this.port.postMessage({message:"disable"}),this.enabled=!1})}setMode(e){return n(this,void 0,void 0,function*(){this.port.postMessage({message:"set-mode",mode:e})})}stop(){var e;return n(this,void 0,void 0,function*(){this.port.postMessage({message:"stop"});try{null===(e=this.worker)||void 0===e||e.terminate()}catch(e){console.error("failed to terminate worker:",e)}this.disconnect(),this.enabled=!1})}reset(){this.metrics={latencyMillisAverage:0,snr:{average:0,averageActive:0,variance:0,varianceActive:0},drr:{average:0,variance:0,averageActive:0,varianceActive:0},vad:{average:0},cpu:{lateInvoke:0,longInvoke:0}},this.port.postMessage({message:"reset"})}isEnabled(){return this.enabled}onProcessorMessage(e){var t,i,n,r,s,a;let{data:o}=e,{message:d}=o;switch(d){case"cpu":let{reason:l,count:c}=o;l&&c&&(this.metrics.cpu=Object.assign(Object.assign({},this.metrics.cpu),{[l]:c+this.metrics.cpu[l]})),this.cpuWarningCount++;let u=Date.now(),h=this.cpuWarningLastTriggered||u;(!this.cpuWarningLastTriggered||Math.abs(u-h)>5e3)&&(null===(t=this.logger)||void 0===t||t.warn(`CPU warning (count: ${this.cpuWarningCount}):`,d),this.cpuWarningCount=0,this.cpuWarningLastTriggered=u),null===(i=this.delegate)||void 0===i||i.onCPUWarning();break;case"metrics":let{metrics:f}=o;if(!f){null===(n=this.logger)||void 0===n||n.warn("Got metrics message but no metrics payload");break}if(this.metrics=Object.assign(Object.assign({},this.metrics),f),this.logger){let e=Date.now();e-(null!==(r=this.metricsLastRecorded)&&void 0!==r?r:0)>5e3&&(null===(s=this.logger)||void 0===s||s.debug("Contact metrics:",this.metrics),this.metricsLastRecorded=e)}break;default:null===(a=this.logger)||void 0===a||a.debug("Ignoring processor message.")}}getModelMetrics(){return this.metrics}onWorkerMessage(e){let t=e.data;switch(t.message){case"module-buffer":if(!t.buffer||!t.key)return;this.onModuleBufferLoaded(t.buffer,t.key);break;case"module":if(!t.module||!t.key)return;this.onModuleLoaded(t.module,t.key);break;case"stopped":this.worker&&this.worker.terminate();break;default:return}}}t.default=a},42312:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Prom
33ise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});let r=i(30589),s=i(99452);class a extends s.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.enabled=!1,this.channelCountMode="explicit",this.channelCount=1;let{modelURL:i,audioBufferURL:n,worker:s,fetchBehavior:a,delegate:o}=t;this.delegate=o,this.worker=s,this.worker.onmessage=this.onWorkerMessage.bind(this),this.port.onmessage=this.onProcessorMessage.bind(this);let{enabled:d,agc:l,supportFarendStream:c}=t.processorOptions;this.worker.postMessage({message:"init",approach:"postMessage",frames:16e3===e.sampleRate?160:480,enabled:d,agc:l,fetchBehavior:a,model:i,supportFarendStream:c});let u=(0,r.supportsWASMPostMessage)(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:u,key:"buffer",fetchBehavior:a,path:n}),this.enabled=!0}enable(){return n(this,void 0,void 0,function*(){this.worker.postMessage({message:"enable"}),this.enabled=!0})}disable(){return n(this,void 0,void 0,function*(){this.worker.postMessage({message:"disable"}),this.enabled=!1})}setMode(e){return n(this,void 0,void 0,function*(){this.port.postMessage({message:"set-mode",mode:e})})}stop(){return n(this,void 0,void 0,function*(){try{this.worker.postMessage({message:"stop"})}catch(e){}this.disconnect(),this.enabled=!1})}getModelMetrics(){}reset(){}isEnabled(){return this.enabled}onWorkerMessage(e){var t;let i=e.data;switch(i.message){case"ready":this.port.postMessage({message:"ready",shared:i.shared},i.shared?Object.values(i.shared):[]);break;case"data":if(!i.buffer)return;this.port.postMessage({message:"data",buffer:i.buffer},[i.buffer]);break;case"stopped":this.worker.terminate();break;case"module-buffer":case"module":case"processing":this.port.postMessage(i);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;default:return}}onProcessorMessage(e){var t;let i=e.data;switch(i.message){case"data":if(!i.buffer)return;this.worker.postMessage({message:"data",buffer:i.buffer},[i.buffer]);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;case"prepare-for-frames":this.worker.postMessage(i);break;default:return}}}t.default=a},200:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});let r=i(30589),s=i(99452),a={ready:0,enabled:1},o={disabled:0,enabled:1,stopped:2};class d extends s.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.enabled=!1,this.channelCountMode="explicit",this.channelCount=1;let{modelURL:i,resamplerURL:n,worker:s,fetchBehavior:a,delegate:o}=t;this.delegate=o,this.worker=s,this.worker.onmessage=this.onWorkerMessage.bind(this),this.port.onmessage=this.onProcessorMessage.bind(this);let{enabled:d,supportFarendStream:l}=t.processorOptions;this.worker.postMessage({message:"init",approach:"sab",frames:16e3===e.sampleRate?160:480,enabled:d,model:i,supportFarendStream:l});let c=(0,r.supportsWASMPostMessage)(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:c,key:"resampler",fetchBehavior:a,path:n}),this.enabled=!0}enable(){return n(this,void 0,void 0,function*(){this.state?(Atomics.store(this.state,a.enabled,o.enabled),Atomics.notify(this.state,a.ready,1)):this.worker.postMessage({message:"enable"}),this.enabled=!0})}disable(){return n(this,void 0,void 0,function*(){this.state?(Atomics.store(this.state,a.enabled,o.disabled),Atomics.notify(this.state,a.ready,1)):this.worker.postMessage({message:"disable"}),this.enabled=!1})}setMode(e){return n(this,void 0,void 0,function*(){this.port.postMessage({message:"set-mode",mode:e})})}stop(){return n(this,void 0,void 0,function*(){if(this.state)Atomics.store(this.state,a.enabled,o.stopped),Atomics.notify(this.state,a.ready,1);else try{this.worker.postMessage({message:"stop"})}catch(e){}this.disconnect(),this.enabled=!1})}getModelMetrics(){}reset(){}isEnabled(){return this.enabled}onWorkerMessage(e){var t;let i=e.data;switch(i.message){case"ready":if(!i.shared)throw Error("No shared state.");this.state=new Int32Array(i.shared.state),this.port.postMessage(i);break;case"stopped":this.worker.terminate();break;case"module-buffer":case"module":case"processing":this.port.postMessage(i);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;default:return}}onProcessorMessage(e){var t;let i=e.data;switch(i.message){case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;case"prepare-for-frames":this.worker.postMessage(i)}}}t.default=d},48865:function(e,t,i){"use strict";
33Object.defineProperty(t,"__esModule",{value:!0}),t.RawSha256=void 0;var n=i(37209),r=function(){function e(){this.state=Int32Array.from(n.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}return e.prototype.update=function(e){if(this.finished)throw Error("Attempted to update an already finished hash.");var t=0,i=e.byteLength;if(this.bytesHashed+=i,8*this.bytesHashed>n.MAX_HASHABLE_LENGTH)throw Error("Cannot hash more than 2^53 - 1 bits");for(;i>0;)this.buffer[this.bufferLength++]=e[t++],i--,this.bufferLength===n.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),i=this.bufferLength;if(t.setUint8(this.bufferLength++,128),i%n.BLOCK_SIZE>=n.BLOCK_SIZE-8){for(var r=this.bufferLength;r<n.BLOCK_SIZE;r++)t.setUint8(r,0);this.hashBuffer(),this.bufferLength=0}for(var r=this.bufferLength;r<n.BLOCK_SIZE-8;r++)t.setUint8(r,0);t.setUint32(n.BLOCK_SIZE-8,Math.floor(e/4294967296),!0),t.setUint32(n.BLOCK_SIZE-4,e),this.hashBuffer(),this.finished=!0}for(var s=new Uint8Array(n.DIGEST_LENGTH),r=0;r<8;r++)s[4*r]=this.state[r]>>>24&255,s[4*r+1]=this.state[r]>>>16&255,s[4*r+2]=this.state[r]>>>8&255,s[4*r+3]=this.state[r]>>>0&255;return s},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,i=t[0],r=t[1],s=t[2],a=t[3],o=t[4],d=t[5],l=t[6],c=t[7],u=0;u<n.BLOCK_SIZE;u++){if(u<16)this.temp[u]=(255&e[4*u])<<24|(255&e[4*u+1])<<16|(255&e[4*u+2])<<8|255&e[4*u+3];else{var h=this.temp[u-2],f=(h>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,m=((h=this.temp[u-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3;this.temp[u]=(f+this.temp[u-7]|0)+(m+this.temp[u-16]|0)}var p=(((o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7))+(o&d^~o&l)|0)+(c+(n.KEY[u]+this.temp[u]|0)|0)|0,g=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&r^i&s^r&s)|0;c=l,l=d,d=o,o=a+p|0,a=s,s=r,r=i,i=p+g|0}t[0]+=i,t[1]+=r,t[2]+=s,t[3]+=a,t[4]+=o,t[5]+=d,t[6]+=l,t[7]+=c},e}();t.RawSha256=r},37209:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAX_HASHABLE_LENGTH=t.INIT=t.KEY=t.DIGEST_LENGTH=t.BLOCK_SIZE=void 0,t.BLOCK_SIZE=64,t.DIGEST_LENGTH=32,t.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),t.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],t.MAX_HASHABLE_LENGTH=9007199254740991},64265:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),i(45609).__exportStar(i(77987),t)},77987:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var n=i(45609),r=i(37209),s=i(48865),a=i(23032),o=function(){function e(e){if(this.hash=new s.RawSha256,e){this.outer=new s.RawSha256;var t=function(e){var t=(0,a.convertToBuffer)(e);if(t.byteLength>r.BLOCK_SIZE){var i=new s.RawSha256;i.update(t),t=i.digest()}var n=new Uint8Array(r.BLOCK_SIZE);return n.set(t),n}(e),i=new Uint8Array(r.BLOCK_SIZE);i.set(t);for(var n=0;n<r.BLOCK_SIZE;n++)t[n]^=54,i[n]^=92;this.hash.update(t),this.outer.update(i);for(var n=0;n<t.byteLength;n++)t[n]=0}}return e.prototype.update=function(e){if(!(0,a.isEmptyData)(e)&&!this.error)try{this.hash.update((0,a.convertToBuffer)(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return n.__awaiter(this,void 0,void 0,function(){return n.__generator(this,function(e){return[2,this.digestSync()]})})},e}();t.Sha256=o},71642:function(e,t,i){"use strict";var n=i(48834).Buffer;
33Object.defineProperty(t,"__esModule",{value:!0}),t.convertToBuffer=void 0;var r=i(66631),s=void 0!==n&&n.from?function(e){return n.from(e,"utf8")}:r.fromUtf8;t.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?s(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}},23032:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=t.numToUint8=t.isEmptyData=t.convertToBuffer=void 0;var n=i(71642);Object.defineProperty(t,"convertToBuffer",{enumerable:!0,get:function(){return n.convertToBuffer}});var r=i(87343);Object.defineProperty(t,"isEmptyData",{enumerable:!0,get:function(){return r.isEmptyData}});var s=i(81090);Object.defineProperty(t,"numToUint8",{enumerable:!0,get:function(){return s.numToUint8}});var a=i(44559);Object.defineProperty(t,"uint32ArrayFrom",{enumerable:!0,get:function(){return a.uint32ArrayFrom}})},87343:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},81090:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numToUint8=void 0,t.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}},44559:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=void 0,t.uint32ArrayFrom=function(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),i=0;i<e.length;)t[i]=e[i],i+=1;return t}return Uint32Array.from(e)}},64534:function(e,t,i){"use strict";let{Deflate:n,deflate:r,deflateRaw:s,gzip:a}=i(1807),{Inflate:o,inflate:d,inflateRaw:l,ungzip:c}=i(11665),u=i(20691);e.exports.Deflate=n,e.exports.deflate=r,e.exports.deflateRaw=s,e.exports.gzip=a,e.exports.Inflate=o,e.exports.inflate=d,e.exports.inflateRaw=l,e.exports.ungzip=c,e.exports.constants=u},1807:function(e,t,i){"use strict";let n=i(61188),r=i(52439),s=i(5205),a=i(75147),o=i(44200),d=Object.prototype.toString,{Z_NO_FLUSH:l,Z_SYNC_FLUSH:c,Z_FULL_FLUSH:u,Z_FINISH:h,Z_OK:f,Z_STREAM_END:m,Z_DEFAULT_COMPRESSION:p,Z_DEFAULT_STRATEGY:g,Z_DEFLATED:v}=i(20691);function b(e){this.options=r.assign({level:p,method:v,chunkSize:16384,windowBits:15,memLevel:8,strategy:g},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;let i=n.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==f)throw Error(a[i]);if(t.header&&n.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?s.string2buf(t.dictionary):"[object ArrayBuffer]"===d.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(i=n.deflateSetDictionary(this.strm,e))!==f)throw Error(a[i]);this._dict_set=!0}}function S(e,t){let i=new b(t);if(i.push(e,!0),i.err)throw i.msg||a[i.err];return i.result}b.prototype.push=function(e,t){let i,r;let a=this.strm,o=this.options.chunkSize;if(this.ended)return!1;for(r=t===~~t?t:!0===t?h:l,"string"==typeof e?a.input=s.string2buf(e):"[object ArrayBuffer]"===d.call(e)?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;;){if(0===a.avail_out&&(a.output=new Uint8Array(o),a.next_out=0,a.avail_out=o),(r===c||r===u)&&a.avail_out<=6){this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;continue}if((i=n.deflate(a,r))===m)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),i=n.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===f;if(0===a.avail_out){this.onData(a.output);continue}if(r>0&&a.next_out>0){this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;continue}if(0===a.avail_in)break}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===f&&(this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Deflate=b,e.exports.deflate=S,e.exports.deflateRaw=function(e,t){return(t=t||{}).raw=!0,S(e,t)},e.exports.gzip=function(e,t){return(t=t||{}).gzip=!0,S(e,t)},e.exports.constants=i(20691)},11665:function(e,t,i){"use strict";let n=i(90658),r=i(52439),s=i(5205),a=i(75147),o=i(44200),d=i(90208),l=Object.prototype.toString,{Z_NO_FLUSH:c,Z_FINISH:u,Z_OK:h,Z_STREAM_END:f,Z_NEED_DICT:m,Z_STREAM_ERROR:p,Z_DATA_ERROR:g,Z_MEM_ERROR:v}=i(20691);function b(e){this.options=r.assign({chunkSize:65536,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits)==0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;let i=n.inflateInit2(this.strm,t.windowBits);if(i!==h||(this.header=new d,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=s.string2buf(t.dictionary):"[object ArrayBuffer]"===l.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=n.inflateSetDictionary(this.strm,t.dictionary))!==h)))throw Error(a[i])}function S(e,t){let i=new b(t);if(i.push(e),i.err)throw i.msg||a[i.err];return i.result}b.prototype.push=function(e,t){let i,r,a;let o=this.strm,d=this.options.chunkSize,b=this.options.dictionary;if(this.ended)return!1;for(r=t===~~t?t:!0===t?u:c,"[object ArrayBuffer]"===l.call(e)?o.input=new 
33Uint8Array(e):o.input=e,o.next_in=0,o.avail_in=o.input.length;;){for(0===o.avail_out&&(o.output=new Uint8Array(d),o.next_out=0,o.avail_out=d),(i=n.inflate(o,r))===m&&b&&((i=n.inflateSetDictionary(o,b))===h?i=n.inflate(o,r):i===g&&(i=m));o.avail_in>0&&i===f&&o.state.wrap>0&&0!==e[o.next_in];)n.inflateReset(o),i=n.inflate(o,r);switch(i){case p:case g:case m:case v:return this.onEnd(i),this.ended=!0,!1}if(a=o.avail_out,o.next_out&&(0===o.avail_out||i===f)){if("string"===this.options.to){let e=s.utf8border(o.output,o.next_out),t=o.next_out-e,i=s.buf2string(o.output,e);o.next_out=t,o.avail_out=d-t,t&&o.output.set(o.output.subarray(e,e+t),0),this.onData(i)}else this.onData(o.output.length===o.next_out?o.output:o.output.subarray(0,o.next_out))}if(i!==h||0!==a){if(i===f)return i=n.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===o.avail_in)break}}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===h&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Inflate=b,e.exports.inflate=S,e.exports.inflateRaw=function(e,t){return(t=t||{}).raw=!0,S(e,t)},e.exports.ungzip=S,e.exports.constants=i(20691)},52439:function(e){"use strict";let t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){let i=Array.prototype.slice.call(arguments,1);for(;i.length;){let n=i.shift();if(n){if("object"!=typeof n)throw TypeError(n+"must be non-object");for(let i in n)t(n,i)&&(e[i]=n[i])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;let i=new Uint8Array(t);for(let t=0,n=0,r=e.length;t<r;t++){let r=e[t];i.set(r,n),n+=r.length}return i}},5205:function(e){"use strict";let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}let i=new Uint8Array(256);for(let e=0;e<256;e++)i[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;i[254]=i[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,i,n,r,s,a=e.length,o=0;for(r=0;r<a;r++)(64512&(i=e.charCodeAt(r)))==55296&&r+1<a&&(64512&(n=e.charCodeAt(r+1)))==56320&&(i=65536+(i-55296<<10)+(n-56320),r++),o+=i<128?1:i<2048?2:i<65536?3:4;for(s=0,t=new Uint8Array(o),r=0;s<o;r++)(64512&(i=e.charCodeAt(r)))==55296&&r+1<a&&(64512&(n=e.charCodeAt(r+1)))==56320&&(i=65536+(i-55296<<10)+(n-56320),r++),i<128?t[s++]=i:(i<2048?t[s++]=192|i>>>6:(i<65536?t[s++]=224|i>>>12:(t[s++]=240|i>>>18,t[s++]=128|i>>>12&63),t[s++]=128|i>>>6&63),t[s++]=128|63&i);return t};let n=(e,i)=>{if(i<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===i?e:e.subarray(0,i));let n="";for(let t=0;t<i;t++)n+=String.fromCharCode(e[t]);return n};e.exports.buf2string=(e,t)=>{let r,s;let a=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let o=Array(2*a);for(s=0,r=0;r<a;){let t=e[r++];if(t<128){o[s++]=t;continue}let n=i[t];if(n>4){o[s++]=65533,r+=n-1;continue}for(t&=2===n?31:3===n?15:7;n>1&&r<a;)t=t<<6|63&e[r++],n--;if(n>1){o[s++]=65533;continue}t<65536?o[s++]=t:(t-=65536,o[s++]=55296|t>>10&1023,o[s++]=56320|1023&t)}return n(o,s)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(192&e[n])==128;)n--;return n<0||0===n?t:n+i[e[n]]>t?n:t}},92432:function(e){"use strict";e.exports=(e,t,i,n)=>{let r=65535&e|0,s=e>>>16&65535|0,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do s=s+(r=r+t[n++]|0)|0;while(--a);r%=65521,s%=65521}return r|s<<16|0}},20691:function(e){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},72473:function(e){"use strict";let t=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());e.exports=(e,i,n,r)=>{let s=r+n;e^=-1;for(let n=r;n<s;n++)e=e>>>8^t[(e^i[n])&255];return -1^e}},61188:function(e,t,i){"use strict";let{_tr_init:n,_tr_stored_block:r,_tr_flush_block:s,_tr_tally:a,_tr_align:o}=i(76465),d=i(92432),l=i(72473),c=i(75147),{Z_NO_FLUSH:u,Z_PARTIAL_FLUSH:h,Z_FULL_FLUSH:f,Z_FINISH:m,Z_BLOCK:p,Z_OK:g,Z_STREAM_END:v,Z_STREAM_ERROR:b,Z_DATA_ERROR:S,Z_BUF_ER
33ROR:y,Z_DEFAULT_COMPRESSION:C,Z_FILTERED:w,Z_HUFFMAN_ONLY:T,Z_RLE:M,Z_FIXED:E,Z_DEFAULT_STRATEGY:A,Z_UNKNOWN:k,Z_DEFLATED:_}=i(20691),P=(e,t)=>(e.msg=c[t],t),R=e=>2*e-(e>4?9:0),I=e=>{let t=e.length;for(;--t>=0;)e[t]=0},O=e=>{let t,i,n;let r=e.w_size;n=t=e.hash_size;do i=e.head[--n],e.head[n]=i>=r?i-r:0;while(--t);n=t=r;do i=e.prev[--n],e.prev[n]=i>=r?i-r:0;while(--t)},x=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask,D=e=>{let t=e.state,i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},B=(e,t)=>{s(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,D(e.strm)},N=(e,t)=>{e.pending_buf[e.pending++]=t},L=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},F=(e,t,i,n)=>{let r=e.avail_in;return(r>n&&(r=n),0===r)?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=d(e.adler,t,r,i):2===e.state.wrap&&(e.adler=l(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},V=(e,t)=>{let i,n,r=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,d=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,l=e.window,c=e.w_mask,u=e.prev,h=e.strstart+258,f=l[s+a-1],m=l[s+a];e.prev_length>=e.good_match&&(r>>=2),o>e.lookahead&&(o=e.lookahead);do{if(l[(i=t)+a]!==m||l[i+a-1]!==f||l[i]!==l[s]||l[++i]!==l[s+1])continue;s+=2,i++;do;while(l[++s]===l[++i]&&l[++s]===l[++i]&&l[++s]===l[++i]&&l[++s]===l[++i]&&l[++s]===l[++i]&&l[++s]===l[++i]&&l[++s]===l[++i]&&l[++s]===l[++i]&&s<h);if(n=258-(h-s),s=h-258,n>a){if(e.match_start=t,a=n,n>=o)break;f=l[s+a-1],m=l[s+a]}}while((t=u[t&c])>d&&0!=--r);return a<=e.lookahead?a:e.lookahead},U=e=>{let t,i,n;let r=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=r+(r-262)&&(e.window.set(e.window.subarray(r,r+r-i),0),e.match_start-=r,e.strstart-=r,e.block_start-=r,e.insert>e.strstart&&(e.insert=e.strstart),O(e),i+=r),0===e.strm.avail_in)break;if(t=F(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=t,e.lookahead+e.insert>=3)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=x(e,e.ins_h,e.window[n+1]);e.insert&&(e.ins_h=x(e,e.ins_h,e.window[n+3-1]),e.prev[n&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=n,n++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)},z=(e,t)=>{let i=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n,s,a,o=0,d=e.strm.avail_in;do{if(n=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,n>(s=e.strstart-e.block_start)+e.strm.avail_in&&(n=s+e.strm.avail_in),n>a&&(n=a),n<i&&(0===n&&t!==m||t===u||n!==s+e.strm.avail_in)))break;o=t===m&&n===s+e.strm.avail_in?1:0,r(e,0,0,o),e.pending_buf[e.pending-4]=n,e.pending_buf[e.pending-3]=n>>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,D(e.strm),s&&(s>n&&(s=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,n-=s),n&&(F(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return((d-=e.strm.avail_in)&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),o)?4:t!==u&&t!==m&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(F(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,i=(a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a)>
33e.w_size?e.w_size:a,((s=e.strstart-e.block_start)>=i||(s||t===m)&&t!==u&&0===e.strm.avail_in&&s<=a)&&(n=s>a?a:s,o=t===m&&0===e.strm.avail_in&&n===s?1:0,r(e,e.block_start,n,o),e.block_start+=n,D(e.strm)),o?3:1)},$=(e,t)=>{let i,n;for(;;){if(e.lookahead<262){if(U(e),e.lookahead<262&&t===u)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=x(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-262&&(e.match_length=V(e,i)),e.match_length>=3){if(n=a(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=x(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=x(e,e.ins_h,e.window[e.strstart+1])}else n=a(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(B(e,!1),0===e.strm.avail_out))return 1}return(e.insert=e.strstart<2?e.strstart:2,t===m)?(B(e,!0),0===e.strm.avail_out)?3:4:e.sym_next&&(B(e,!1),0===e.strm.avail_out)?1:2},H=(e,t)=>{let i,n,r;for(;;){if(e.lookahead<262){if(U(e),e.lookahead<262&&t===u)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=x(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-262&&(e.match_length=V(e,i),e.match_length<=5&&(e.strategy===w||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,n=a(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=x(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(B(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((n=a(e,0,e.window[e.strstart-1]))&&B(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return(e.match_available&&(n=a(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===m)?(B(e,!0),0===e.strm.avail_out)?3:4:e.sym_next&&(B(e,!1),0===e.strm.avail_out)?1:2},j=(e,t)=>{let i,n,r,s;let o=e.window;for(;;){if(e.lookahead<=258){if(U(e),e.lookahead<=258&&t===u)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=o[r=e.strstart-1])===o[++r]&&n===o[++r]&&n===o[++r]){s=e.strstart+258;do;while(n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&r<s);e.match_length=258-(s-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=a(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=a(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(B(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===m)?(B(e,!0),0===e.strm.avail_out)?3:4:e.sym_next&&(B(e,!1),0===e.strm.avail_out)?1:2},W=(e,t)=>{let i;for(;;){if(0===e.lookahead&&(U(e),0===e.lookahead)){if(t===u)return 1;break}
33if(e.match_length=0,i=a(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(B(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===m)?(B(e,!0),0===e.strm.avail_out)?3:4:e.sym_next&&(B(e,!1),0===e.strm.avail_out)?1:2};function G(e,t,i,n,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=r}let K=[new G(0,0,0,0,z),new G(4,4,8,4,$),new G(4,5,16,8,$),new G(4,6,32,32,$),new G(4,4,16,16,H),new G(8,16,32,32,H),new G(8,16,128,128,H),new G(8,32,128,256,H),new G(32,128,258,1024,H),new G(32,258,258,4096,H)],q=e=>{e.window_size=2*e.w_size,I(e.head),e.max_lazy_match=K[e.level].max_lazy,e.good_match=K[e.level].good_length,e.nice_match=K[e.level].nice_length,e.max_chain_length=K[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0};function Q(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),I(this.dyn_ltree),I(this.dyn_dtree),I(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),I(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),I(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}let J=e=>{if(!e)return 1;let t=e.state;return t&&t.strm===e&&(42===t.status||57===t.status||69===t.status||73===t.status||91===t.status||103===t.status||113===t.status||666===t.status)?0:1},Y=e=>{if(J(e))return P(e,b);e.total_in=e.total_out=0,e.data_type=k;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?42:113,e.adler=2===t.wrap?0:1,t.last_flush=-2,n(t),g},X=e=>{let t=Y(e);return t===g&&q(e.state),t},Z=(e,t,i,n,r,s)=>{if(!e)return b;let a=1;if(t===C&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),r<1||r>9||i!==_||n<8||n>15||t<0||t>9||s<0||s>E||8===n&&1!==a)return P(e,b);8===n&&(n=9);let o=new Q;return e.state=o,o.strm=e,o.status=42,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=s,o.method=i,X(e)};e.exports.deflateInit=(e,t)=>Z(e,t,_,15,8,A),e.exports.deflateInit2=Z,e.exports.deflateReset=X,e.exports.deflateResetKeep=Y,e.exports.deflateSetHeader=(e,t)=>J(e)||2!==e.state.wrap?b:(e.state.gzhead=t,g),e.exports.deflate=(e,t)=>{if(J(e)||t>p||t<0)return e?P(e,b):b;let i=e.state;if(!e.output||0!==e.avail_in&&!e.input||666===i.status&&t!==m)return P(e,0===e.avail_out?y:b);let n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(D(e),0===e.avail_out)return i.last_flush=-1,g}else if(0===e.avail_in&&R(t)<=R(n)&&t!==m)return P(e,y);if(666===i.status&&0!==e.avail_in)return P(e,y);if(42===i.status&&0===i.wrap&&(i.status=113),42===i.status){let t=_+(i.w_bits-8<<4)<<8;if(t|=(i.strategy>=T||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(t|=32),L(i,t+=31-t%31),0!==i.strstart&&(L(i,e.adler>>>16),L(i,65535&e.adler)),e.adler=1,i.status=113,D(e),0!==i.pending)return i.last_flush=-1,g}if(57===i.status){if(e.adler=0,N(i,31),N(i,139),N(i,8),i.gzhead)N(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),N(i,255&i.gzhead.time),N(i,i.gzhead.time>>8&255),N(i,i.gzhead.time>>16&255),N(i,i.gzhead.time>>24&255),N(i,9===i.level?2:i.strategy>=T||i.level<2?4:0),N(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(N(i,255&i.gzhead.extra.length),N(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=l(e.adler,i.pending_buf,i.pending,0)),i.gz
33index=0,i.status=69;else if(N(i,0),N(i,0),N(i,0),N(i,0),N(i,0),N(i,9===i.level?2:i.strategy>=T||i.level<2?4:0),N(i,3),i.status=113,D(e),0!==i.pending)return i.last_flush=-1,g}if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=l(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,D(e),0!==i.pending)return i.last_flush=-1,g;t=0,n-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=l(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=l(e.adler,i.pending_buf,i.pending-n,n)),D(e),0!==i.pending)return i.last_flush=-1,g;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,N(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=l(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=l(e.adler,i.pending_buf,i.pending-n,n)),D(e),0!==i.pending)return i.last_flush=-1,g;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,N(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=l(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(D(e),0!==i.pending))return i.last_flush=-1,g;N(i,255&e.adler),N(i,e.adler>>8&255),e.adler=0}if(i.status=113,D(e),0!==i.pending)return i.last_flush=-1,g}if(0!==e.avail_in||0!==i.lookahead||t!==u&&666!==i.status){let n=0===i.level?z(i,t):i.strategy===T?W(i,t):i.strategy===M?j(i,t):K[i.level].func(i,t);if((3===n||4===n)&&(i.status=666),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),g;if(2===n&&(t===h?o(i):t!==p&&(r(i,0,0,!1),t===f&&(I(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),D(e),0===e.avail_out))return i.last_flush=-1,g}return t!==m?g:i.wrap<=0?v:(2===i.wrap?(N(i,255&e.adler),N(i,e.adler>>8&255),N(i,e.adler>>16&255),N(i,e.adler>>24&255),N(i,255&e.total_in),N(i,e.total_in>>8&255),N(i,e.total_in>>16&255),N(i,e.total_in>>24&255)):(L(i,e.adler>>>16),L(i,65535&e.adler)),D(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?g:v)},e.exports.deflateEnd=e=>{if(J(e))return b;let t=e.state.status;return e.state=null,113===t?P(e,S):g},e.exports.deflateSetDictionary=(e,t)=>{let i=t.length;if(J(e))return b;let n=e.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return b;if(1===r&&(e.adler=d(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===r&&(I(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}let s=e.avail_in,a=e.next_in,o=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,U(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do n.ins_h=x(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++;while(--t);n.strstart=e,n.lookahead=2,U(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=o,e.avail_in=s,n.wrap=r,g},e.exports.deflateInfo="pako deflate (from Nodeca project)"},90208:function(e){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},68030:function(e){"use strict";e.exports=function(e,t){let i,n,r,s,a,o,d,l,c,u,h,f,m,p,g,v,b,S,y,C,w,T,M,E;let A=e.state;i=e.next_in,M=e.input,n=i+(e.avail_in-5),r=e.next_out,E=e.output,s=r-(t-e.avail_out),a=r+(e.avail_out-257),o=A.dmax,d=A.wsize,l=A.whave,c=A.wnext,u=A.window,h=A.hold,f=A.bits,m=A.lencode,p=A.distcode,g=(1<<A.lenbits)-1,v=(1<<A.distbits)-1;e:do for(f<15&&(h+=M[i++]<<f,f+=8,h+=M[i++]<<f,f+=8),b=m[h&g];;){if(h>>>=S=b>>>24,f-=S,0==(S=b>>>16&255))E[r++]=65535&b;else if(16&S)for(y=65535&b,(S&=15)&&(f<S&&(h+=M[i++]<<f,f+=8),y+=h&(1<<S)-1,h>>>=S,f-=S),f<15&&(h+=M[i++]<<f,f+=8,h+=M[i++]<<f,f+=8),b=p[h&v];;){if(h>>>=S=b>>>24,f-=S,16&(S=b>>
33>16&255)){if(C=65535&b,f<(S&=15)&&(h+=M[i++]<<f,(f+=8)<S&&(h+=M[i++]<<f,f+=8)),(C+=h&(1<<S)-1)>o){e.msg="invalid distance too far back",A.mode=16209;break e}if(h>>>=S,f-=S,C>(S=r-s)){if((S=C-S)>l&&A.sane){e.msg="invalid distance too far back",A.mode=16209;break e}if(w=0,T=u,0===c){if(w+=d-S,S<y){y-=S;do E[r++]=u[w++];while(--S);w=r-C,T=E}}else if(c<S){if(w+=d+c-S,(S-=c)<y){y-=S;do E[r++]=u[w++];while(--S);if(w=0,c<y){y-=S=c;do E[r++]=u[w++];while(--S);w=r-C,T=E}}}else if(w+=c-S,S<y){y-=S;do E[r++]=u[w++];while(--S);w=r-C,T=E}for(;y>2;)E[r++]=T[w++],E[r++]=T[w++],E[r++]=T[w++],y-=3;y&&(E[r++]=T[w++],y>1&&(E[r++]=T[w++]))}else{w=r-C;do E[r++]=E[w++],E[r++]=E[w++],E[r++]=E[w++],y-=3;while(y>2);y&&(E[r++]=E[w++],y>1&&(E[r++]=E[w++]))}}else if((64&S)==0){b=p[(65535&b)+(h&(1<<S)-1)];continue}else{e.msg="invalid distance code",A.mode=16209;break e}break}else if((64&S)==0){b=m[(65535&b)+(h&(1<<S)-1)];continue}else if(32&S){A.mode=16191;break e}else{e.msg="invalid literal/length code",A.mode=16209;break e}break}while(i<n&&r<a);i-=y=f>>3,f-=y<<3,h&=(1<<f)-1,e.next_in=i,e.next_out=r,e.avail_in=i<n?5+(n-i):5-(i-n),e.avail_out=r<a?257+(a-r):257-(r-a),A.hold=h,A.bits=f}},90658:function(e,t,i){"use strict";let n,r;let s=i(92432),a=i(72473),o=i(68030),d=i(94578),{Z_FINISH:l,Z_BLOCK:c,Z_TREES:u,Z_OK:h,Z_STREAM_END:f,Z_NEED_DICT:m,Z_STREAM_ERROR:p,Z_DATA_ERROR:g,Z_MEM_ERROR:v,Z_BUF_ERROR:b,Z_DEFLATED:S}=i(20691),y=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function C(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}let w=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<16180||t.mode>16211?1:0},T=e=>{if(w(e))return p;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=16180,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,h},M=e=>{if(w(e))return p;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,T(e)},E=(e,t)=>{let i;if(w(e))return p;let n=e.state;return(t<0?(i=0,t=-t):(i=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15))?p:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,M(e))},A=(e,t)=>{if(!e)return p;let i=new C;e.state=i,i.strm=e,i.window=null,i.mode=16180;let n=E(e,t);return n!==h&&(e.state=null),n},k=!0,_=e=>{if(k){n=new Int32Array(512),r=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(d(1,e.lens,0,288,n,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;d(2,e.lens,0,32,r,0,e.work,{bits:5}),k=!1}e.lencode=n,e.lenbits=9,e.distcode=r,e.distbits=5},P=(e,t,i,n)=>{let r;let s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),n>=s.wsize?(s.window.set(t.subarray(i-s.wsize,i),0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>n&&(r=n),s.window.set(t.subarray(i-n,i-n+r),s.wnext),(n-=r)?(s.window.set(t.subarray(i-n,i),0),s.wnext=n,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=r))),0};e.exports.inflateReset=M,e.exports.inflateReset2=E,e.exports.inflateResetKeep=T,e.exports.inflateInit=e=>A(e,15),e.exports.inflateInit2=A,e.exports.inflate=(e,t)=>{let i,n,r,C,T,M,E,A,k,R,I,O,x,D,B,N,L,F,V,U,z,$,H,j;let W=0,G=new Uint8Array(4),K=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(w(e)||!e.output||!e.input&&0!==e.avail_in)return p;16191===(i=e.state).mode&&(i.mode=16192),T=e.next_out,r=e.output,E=e.avail_out,C=e.next_in,n=e.input,M=e.avail_in,A=i.hold,k=i.bits,R=M,I=E,$=h;t:for(;;)switch(i.mode){case 16180:if(0===i.wrap){i.mode=16192;break}for(;k<16;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(2&i.wrap&&35615===A){0===i.wbits&&(i.wbits=15),i.check=0,G[0]=255&A,G[1]=A>>>8&255,i.check=a(i.check,G,2,0),A=0,k=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=16209;break}if((15&A)!==S){e.msg="unknown compression method",i.mode=16209;break}if(A>>>=4,k-=4,z=(15&A)+8,0===i.wbits&&(i.wbits=z),z>15||z>i.wbits){e.msg="invalid window size",i.mode=16209;break}i.dmax=1<<i.wbits,i.flags=0,e.adler=i.check=1,i.mode=512&A?16189:16191,A=0,k=0;break;case 16181:for(;k<16;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(i.flags=A,(255&i.flags)!==S){e.msg="unknown compression method",i.mode=16209;break}if(57344&i.flags){e.msg="unknown header flags set",i.mode=16209;break}i.head&&(i.head.text=A>>8&1),512&i.flags&&4&i.wrap&&(G[0]=255&A,G[1]=A>>>8&255,i.check=a(i.check,G,2,0)),A=0,k=0,i.mode=16182;case 16182:for(;k<32;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}i.head&&(i.head.time=A),512&i.flags&&4&i.wrap&&(G[0]=255&A,G[1]=A>>>8&255,G[2]=A>>>16&255,G[3]=A>>>24&255,i.check=a(i.check,G,4,0)),A=0,k=0,i.mode=16183;case 16183:for(;k<16;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}i.head&&(i.head.xflags=255&A,i.head.os=A>>8),512&i.flags&&4&i.wrap&&(G[0]=255&A,G[1]=A>>>8&255,i.check=a(i.check,G,2,0)),A=0,k=0,i.mode=16184;case 16184:if(1024&i.flags){for(;k<16;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}i.length=A,i.head&&(i.head.extra_len=A),512&i.flags&&4&i.wrap&&(G[0]=255&A,G[1]=A>>>8&255,i.check=a(i.check,G,2,0)),A=0,k=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&((O=i.length)>M&&(O=M),O&&(i.head&&(z=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(n.subarray(C,C+O),z)),512&i.flags&&4&i.wrap&&(i.check=a(i.check,n,O,C)),M-=O,C+=O,i.length-=O),i.length))break t;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===M)break t;O=0;do z=n[C+O++],i.head&&z&&i.length<65536&&(i.head.name+=String.fromCharCode(z));while(z&&O<M);if(512&i.flags&&4&i.wrap&&(i.check=a(i.check,n,O,C)),M-=O,C+=O,z)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=16187;case 16187:if(4096&i.flags){if(0===M)break t;O=0;do z=n[C+O++],i.head&&z&&i.length<65536&&(i.head.comment+=String.fromCharCode(z));while(z&&O<M);if(512&i.flags&&4&i.wrap&&(i.check=a(i.check,n,O,C)),M-=O,C+=O,z)break t}else i.head&&(i.head.comment=null);i.mode=16188;case 16188:if(512&i.flags){for(;k<16;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(4&i.wrap&&A!==(65535&i.check)){e.msg="header crc mismatch",i.mode=16209;break}A=0,k=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=16191;break;case 16189:for(;k<32;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}e.adler=i.check=y(A),A=0,k=0,i.mode=16190;case 16190:if(0===i.havedict)return e.next_out=T,e.avail_out=E,e.next_in=C,e.avail_in=M,i.hold=A,i.bits=k,m;e.adler=i.check=1,i.mode=16191;case 16191:if(t===c||t===u)break t;case 16192:if(i.last){A>>>=7&k,k-=7&k,i.mode=16206;break}for(;k<3;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}switch(i.last=1&A,k-=1,3&(A>>>=1)){case 0:i.mode=16193;break;case 1:if(_(i),i.mode=16199,t===u){A>>>=2,k-=2;break t}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=16209}A>>>=2,k-=2;break;case 16193:for(A>>>=7&k,k-=7&k;k<32;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if((65535&A)!=(A>>>16^65535)){e.msg="invalid stored block lengths",i.mode=16209;break}if(i.length=65535&A,A=0,k=0,i.mode=16194,t===u)break t;case 16194:i.mode=16195;case 16195:if(O=i.length){if(O>M&&(O=M),O>E&&(O=E),0===O)break t;r.set(n.subarray(C,C+O),T),M-=O,C+=O,E-=O,T+=O,i.length-=O;break}i.mode=16191;break;case 16196:for(;k<14;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(i.nlen=(31&A)+257,A>>>=5,k-=5,i.ndist=(31&A)+1,A>>>=5,k-=5,i.ncode=(15&A)+4,A>>>=4,k-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=16209;break}i.have=0,i.mode=16197;case 16197:for(;i.have<i.ncode;){for(;k<3;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}i.lens[K[i.have++]]=7&A,A>>>=3,k-=3}for(;i.have<19;)i.lens[K[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,H={bits:i.lenbits},$=d(0,i.lens,0,19,i.lencode,0,i.work,H),i.lenbits=H.bits,$){e.msg="invalid code lengths set",i.mode=16209;break}i.have=0,i.mode=16198;case 16198:for(;i.have<i.nlen+i.ndist;){for(;B=(W=i.lencode[A&(1<<i.lenbits)-1])>>>24,N=W>>>16&255,L=65535&W,!(B<=k);){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(L<16)A>>>=B,k-=B,i.lens[i.have++]=L;else{if(16===L){for(j=B+2;k<j;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(A>>>=B,k-=B,0===i.have){e.msg="invalid bit length repeat",i.mode=16209;break}z=i.lens[i.have-1],O=3+(3&A),A>>>=2,k-=2}else if(17===L){for(j=B+3;k<j;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}A>>>=B,k-=B,z=0,O=3+(7&A),A>>>=3,k-=3}else{for(j=B+7;k<j;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}A>>>=B,k-=B,z=0,O=11+(127&A),A>>>=7,k-=7}if(i.have+O>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=16209;break}for(;O--;)i.lens[i.have++]=z}}if(16209===i.mode)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=16209;break}if(i.lenbits=9,H={bits:i.lenbits},$=d(1,i.lens,0,i.nlen,i.lencode,0,i.work,H),i.lenbits=H.bits,$){e.msg="invalid literal/lengths set",i.mode=16209;break}if(i.distbits=6,i.distcode=i.distdyn,H={bits:i.distbits},$=d(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,H),i.distbits=H.bits,$){e.msg="invalid distances set",i.mode=16209;break}if(i.mode=16199,t===u)break t;case 16199:i.mode=16200;case 16200:if(M>=6&&E>=258){e.next_out=T,e.avail_out=E,e.next_in=C,e.avail_in=M,i.hold=A,i.bits=k,o(e,I),T=e.next_out,r=e.output,E=e.avail_out,C=e.next_in,n=e.input,M=e.avail_in,A=i.hold,k=i.bits,16191===i.mode&&(i.back=-1);break}for(i.back=0;B=(W=i.lencode[A&(1<<i.lenbits)-1])>>>24,N=W>>>16&255,L=65535&W,!(B<=k);){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(N&&(240&N)==0){for(F=B,V=N,U=L;B=(W=i.lencode[U+((A&(1<<F+V)-1)>>F)])>>>24,N=W>>>16&255,L=65535&W,!(F+B<=k);){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}A>>>=F,k-=F,i.back+=F}if(A>>>=B,k-=B,i.back+=B,i.length=L,0===N){i.mode=16205;break}if(32&N){i.back=-1,i.mode=16191;break}if(64&N){e.msg="invalid literal/length code",i.mode=16209;break}i.extra=15&N,i.mode=16201;case 16201:if(i.extra){for(j=i.extra;k<j;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}i.length+=A&(1<<i.extra)-1,A>>>=i.extra,k-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;B=(W=i.distcode[A&(1<<i.distbits)-1])>>>24,N=W>>>16&255,L=65535&W,!(B<=k);){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if((240&N)==0){for(F=B,V=N,U=L;B=(W=i.distcode[U+((A&(1<<F+V)-1)>>F)])>>>24,N=W>>>16&255,L=65535&W,!(F+B<=k);){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}A>>>=F,k-=F,i.back+=F}if(A>>>=B,k-=B,i.back+=B,64&N){e.msg="invalid distance code",i.mode=16209;break}i.offset=L,i.extra=15&N,i.mode=16203;case 16203:if(i.extra){for(j=i.extra;k<j;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}i.offset+=A&(1<<i.extra)-1,A>>>=i.extra,k-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=16209;break}i.mode=16204;case 16204:if(0===E)break t;if(O=I-E,i.offset>O){if((O=i.offset-O)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=16209;break}O>i.wnext?(O-=i.wnext,x=i.wsize-O):x=i.wnext-O,O>i.length&&(O=i.length),D=i.window}else D=r,x=T-i.offset,O=i.length;O>E&&(O=E),E-=O,i.length-=O;do r[T++]=D[x++];while(--O);0===i.length&&(i.mode=16200);break;case 16205:if(0===E)break t;r[T++]=i.length,E--,i.mode=16200;break;case 16206:if(i.wrap){for(;k<32;){if(0===M)break t;M--,A|=n[C++]<<k,k+=8}if(I-=E,e.total_out+=I,i.total+=I,4&i.wrap&&I&&(e.adler=i.check=i.flags?a(i.check,r,I,T-I):s(i.check,r,I,T-I)),I=E,4&i.wrap&&(i.flags?A:y(A))!==i.check){e.msg="incorrect data check",i.mode=16209;break}A=0,k=0}i.mode=16207;case 16207:if(i.wrap&&i.flags){for(;k<32;){if(0===M)break t;M--,A+=n[C++]<<k,k+=8}if(4&i.wrap&&A!==(4294967295&i.total)){e.msg="incorrect length check",i.mode=16209;break}A=0,k=0}i.mode=16208;case 16208:$=f;break t;case 16209:$=g;break t;case 16210:return v;default:return p}return(e.next_out=T,e.avail_out=E,e.next_in=C,e.avail_in=M,i.hold=A,i.bits=k,(i.wsize||I!==e.avail_out&&i.mode<16209&&(i.mode<16206||t!==l))&&P(e,e.output,e.next_out,I-e.avail_out))?(i.mode=16210,v):(R-=e.avail_in,I-=e.avail_out,e.total_in+=R,e.total_out+=I,i.total+=I,4&i.wrap&&I&&(e.adler=i.check=i.flags?a(i.check,r,I,e.next_out-I):s(i.check,r,I,e.next_out-I)),e.data_type=i.bits+(i.last?64:0)+(16191===i.mode?128:0)+(16199===i.mode||16194===i.mode?256:0),(0===R&&0===I||t===l)&&$===h&&($=b),$)},e.exports.inflateEnd=e=>{if(w(e))return p;let t=e.state;return t.window&&(t.window=null),e.state=null,h},e.exports.inflateGetHeader=(e,t)=>{if(w(e))return p;let i=e.state;return(2&i.wrap)==0?p:(i.head=t,t.done=!1,h)},e.exports.inflateSetDictionary=(e,t)=>{let i;let n=t.length;return w(e)||0!==(i=e.state).wrap&&16190!==i.mode?p:16190===i.mode&&s(1,t,n,0)!==i.check?g:P(e,t,n,n)?(i.mode=16210,v):(i.havedict=1,h)},e.exports.inflateInfo="pako inflate (from Nodeca project)"},94578:function(e){"use strict";let t=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),i=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),n=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),r=new 
33Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,s,a,o,d,l,c,u)=>{let h,f,m,p,g,v,b,S,y;let C=u.bits,w=0,T=0,M=0,E=0,A=0,k=0,_=0,P=0,R=0,I=0,O=null,x=new Uint16Array(16),D=new Uint16Array(16),B=null;for(w=0;w<=15;w++)x[w]=0;for(T=0;T<o;T++)x[s[a+T]]++;for(E=15,A=C;E>=1&&0===x[E];E--);if(A>E&&(A=E),0===E)return d[l++]=20971520,d[l++]=20971520,u.bits=1,0;for(M=1;M<E&&0===x[M];M++);for(A<M&&(A=M),P=1,w=1;w<=15;w++)if(P<<=1,(P-=x[w])<0)return -1;if(P>0&&(0===e||1!==E))return -1;for(w=1,D[1]=0;w<15;w++)D[w+1]=D[w]+x[w];for(T=0;T<o;T++)0!==s[a+T]&&(c[D[s[a+T]]++]=T);if(0===e?(O=B=c,v=20):1===e?(O=t,B=i,v=257):(O=n,B=r,v=0),I=0,T=0,w=M,g=l,k=A,_=0,m=-1,p=(R=1<<A)-1,1===e&&R>852||2===e&&R>592)return 1;for(;;){b=w-_,c[T]+1<v?(S=0,y=c[T]):c[T]>=v?(S=B[c[T]-v],y=O[c[T]-v]):(S=96,y=0),h=1<<w-_,M=f=1<<k;do d[g+(I>>_)+(f-=h)]=b<<24|S<<16|y|0;while(0!==f);for(h=1<<w-1;I&h;)h>>=1;if(0!==h?(I&=h-1,I+=h):I=0,T++,0==--x[w]){if(w===E)break;w=s[a+c[T]]}if(w>A&&(I&p)!==m){for(0===_&&(_=A),g+=M,P=1<<(k=w-_);k+_<E&&!((P-=x[k+_])<=0);)k++,P<<=1;if(R+=1<<k,1===e&&R>852||2===e&&R>592)return 1;d[m=I&p]=A<<24|k<<16|g-l|0}}return 0!==I&&(d[g+I]=w-_<<24|4194304),u.bits=A,0}},75147:function(e){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},76465:function(e){"use strict";let t,i,n;function r(e){let t=e.length;for(;--t>=0;)e[t]=0}let s=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),o=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),d=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),l=Array(576);r(l);let c=Array(60);r(c);let u=Array(512);r(u);let h=Array(256);r(h);let f=Array(29);r(f);let m=Array(30);function p(e,t,i,n,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=r,this.has_stree=e&&e.length}function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}r(m);let v=e=>e<256?u[e]:u[256+(e>>>7)],b=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},S=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,b(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},y=(e,t,i)=>{S(e,i[2*t],i[2*t+1])},C=(e,t)=>{let i=0;do i|=1&e,e>>>=1,i<<=1;while(--t>0);return i>>>1},w=e=>{16===e.bi_valid?(b(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)},T=(e,t)=>{let i,n,r,s,a,o;let d=t.dyn_tree,l=t.max_code,c=t.stat_desc.static_tree,u=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,f=t.stat_desc.extra_base,m=t.stat_desc.max_length,p=0;for(s=0;s<=15;s++)e.bl_count[s]=0;for(d[2*e.heap[e.heap_max]+1]=0,i=e.heap_max+1;i<573;i++)(s=d[2*d[2*(n=e.heap[i])+1]+1]+1)>m&&(s=m,p++),d[2*n+1]=s,!(n>l)&&(e.bl_count[s]++,a=0,n>=f&&(a=h[n-f]),o=d[2*n],e.opt_len+=o*(s+a),u&&(e.static_len+=o*(c[2*n+1]+a)));if(0!==p){do{for(s=m-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[m]--,p-=2}while(p>0);for(s=m;0!==s;s--)for(n=e.bl_count[s];0!==n;)!((r=e.heap[--i])>l)&&(d[2*r+1]!==s&&(e.opt_len+=(s-d[2*r+1])*d[2*r],d[2*r+1]=s),n--)}},M=(e,t,i)=>{let n,r;let s=Array(16),a=0;for(n=1;n<=15;n++)a=a+i[n-1]<<1,s[n]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=C(s[t]++,t))}},E=()=>{let e,r,d,g,v;let b=Array(16);for(g=0,d=0;g<28;g++)for(e=0,f[g]=d;e<1<<s[g];e++)h[d++]=g;for(h[d-1]=g,v=0,g=0;g<16;g++)for(e=0,m[g]=v;e<1<<a[g];e++)u[v++]=g;for(v>>=7;g<30;g++)for(e=0,m[g]=v<<7;e<1<<a[g]-7;e++)u[256+v++]=g;for(r=0;r<=15;r++)b[r]=0;for(e=0;e<=143;)l[2*e+1]=8,e++,b[8]++;for(;e<=255;)l[2*e+1]=9,e++,b[9]++;for(;e<=279;)l[2*e+1]=7,e++,b[7]++;for(;e<=287;)l[2*e+1]=8,e++,b[8]++;for(M(l,287,b),e=0;e<30;e++)c[2*e+1]=5,c[2*e]=C(e,5);
33t=new p(l,s,257,286,15),i=new p(c,a,0,30,15),n=new p([],o,0,19,7)},A=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},k=e=>{e.bi_valid>8?b(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},_=(e,t,i,n)=>{let r=2*t,s=2*i;return e[r]<e[s]||e[r]===e[s]&&n[t]<=n[i]},P=(e,t,i)=>{let n=e.heap[i],r=i<<1;for(;r<=e.heap_len&&(r<e.heap_len&&_(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!_(t,n,e.heap[r],e.depth));)e.heap[i]=e.heap[r],i=r,r<<=1;e.heap[i]=n},R=(e,t,i)=>{let n,r,o,d;let l=0;if(0!==e.sym_next)do n=(255&e.pending_buf[e.sym_buf+l++])+((255&e.pending_buf[e.sym_buf+l++])<<8),r=e.pending_buf[e.sym_buf+l++],0===n?y(e,r,t):(y(e,(o=h[r])+256+1,t),0!==(d=s[o])&&S(e,r-=f[o],d),y(e,o=v(--n),i),0!==(d=a[o])&&S(e,n-=m[o],d));while(l<e.sym_next);y(e,256,t)},I=(e,t)=>{let i,n,r;let s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,d=t.stat_desc.elems,l=-1;for(i=0,e.heap_len=0,e.heap_max=573;i<d;i++)0!==s[2*i]?(e.heap[++e.heap_len]=l=i,e.depth[i]=0):s[2*i+1]=0;for(;e.heap_len<2;)s[2*(r=e.heap[++e.heap_len]=l<2?++l:0)]=1,e.depth[r]=0,e.opt_len--,o&&(e.static_len-=a[2*r+1]);for(t.max_code=l,i=e.heap_len>>1;i>=1;i--)P(e,s,i);r=d;do i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],P(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=n,s[2*r]=s[2*i]+s[2*n],e.depth[r]=(e.depth[i]>
33=e.depth[n]?e.depth[i]:e.depth[n])+1,s[2*i+1]=s[2*n+1]=r,e.heap[1]=r++,P(e,s,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],T(e,t),M(s,l,e.bl_count)},O=(e,t,i)=>{let n,r;let s=-1,a=t[1],o=0,d=7,l=4;for(0===a&&(d=138,l=3),t[(i+1)*2+1]=65535,n=0;n<=i;n++)r=a,a=t[(n+1)*2+1],++o<d&&r===a||(o<l?e.bl_tree[2*r]+=o:0!==r?(r!==s&&e.bl_tree[2*r]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,o=0,s=r,0===a?(d=138,l=3):r===a?(d=6,l=3):(d=7,l=4))},x=(e,t,i)=>{let n,r;let s=-1,a=t[1],o=0,d=7,l=4;for(0===a&&(d=138,l=3),n=0;n<=i;n++)if(r=a,a=t[(n+1)*2+1],!(++o<d)||r!==a){if(o<l)do y(e,r,e.bl_tree);while(0!=--o);else 0!==r?(r!==s&&(y(e,r,e.bl_tree),o--),y(e,16,e.bl_tree),S(e,o-3,2)):o<=10?(y(e,17,e.bl_tree),S(e,o-3,3)):(y(e,18,e.bl_tree),S(e,o-11,7));o=0,s=r,0===a?(d=138,l=3):r===a?(d=6,l=3):(d=7,l=4)}},D=e=>{let t;for(O(e,e.dyn_ltree,e.l_desc.max_code),O(e,e.dyn_dtree,e.d_desc.max_code),I(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*d[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t},B=(e,t,i,n)=>{let r;for(S(e,t-257,5),S(e,i-1,5),S(e,n-4,4),r=0;r<n;r++)S(e,e.bl_tree[2*d[r]+1],3);x(e,e.dyn_ltree,t-1),x(e,e.dyn_dtree,i-1)},N=e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0},L=!1,F=(e,t,i,n)=>{S(e,0+(n?1:0),3),k(e),b(e,i),b(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};e.exports._tr_init=e=>{L||(E(),L=!0),e.l_desc=new g(e.dyn_ltree,t),e.d_desc=new g(e.dyn_dtree,i),e.bl_desc=new g(e.bl_tree,n),e.bi_buf=0,e.bi_valid=0,A(e)},e.exports._tr_stored_block=F,e.exports._tr_flush_block=(e,t,i,n)=>{let r,s;let a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=N(e)),I(e,e.l_desc),I(e,e.d_desc),a=D(e),r=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=r&&(r=s)):r=s=i+5,i+4<=r&&-1!==t?F(e,t,i,n):4===e.strategy||s===r?(S(e,2+(n?1:0),3),R(e,l,c)):(S(e,4+(n?1:0),3),B(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),R(e,e.dyn_ltree,e.dyn_dtree)),A(e),n&&k(e)},e.exports._tr_tally=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[(h[i]+256+1)*2]++,e.dyn_dtree[2*v(t)]++),e.sym_next===e.sym_end),e.exports._tr_align=e=>{S(e,2,3),y(e,256,l),w(e)}},44200:function(e){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},45609:function(e,t,i){"use strict";i.r(t),i.d(t,{__assign:function(){return s},__asyncDelegator:function(){return y},__asyncGenerator:function(){return S},__asyncValues:function(){return C},__await:function(){return b},__awaiter:function(){return c},__classPrivateFieldGet:function(){return E},__classPrivateFieldSet:function(){return A},__createBinding:function(){return h},__decorate:function(){return o},__exportStar:function(){return f},__extends:function(){return r},__generator:function(){return u},__importDefault:function(){return M},__importStar:function(){return T}
vendor: 5,306 bytes, line 33
33,__makeTemplateObject:function(){return w},__metadata:function(){return l},__param:function(){return d},__read:function(){return p},__rest:function(){return a},__spread:function(){return g},__spreadArrays:function(){return v},__values:function(){return m}});var n=function(e,t){return(n=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)};function r(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var s=function(){return(s=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++)for(var r in t=arguments[i])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};function a(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)0>t.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(i[n[r]]=e[n[r]]);return i}function o(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a}function d(e,t){return function(i,n){t(i,n,e)}}function l(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t,i,n){return new(i||(i=Promise))(function(r,s){function a(e){try{d(n.next(e))}catch(e){s(e)}}function o(e){try{d(n.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(a,o)}d((n=n.apply(e,t||[])).next())})}function u(e,t){var i,n,r,s,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return s={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function o(s){return function(o){return function(s){if(i)throw TypeError("Generator is already executing.");for(;a;)try{if(i=1,n&&(r=2&s[0]?n.return:s[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,s[1])).done)return r;switch(n=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]<r[3])){a.label=s[1];break}if(6===s[0]&&a.label<r[1]){a.label=r[1],r=s;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(s);break}r[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{i=r=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,o])}}}function h(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}function f(e,t){for(var i in e)"default"===i||t.hasOwnProperty(i)||(t[i]=e[i])}function m(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function p(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a}function g(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(p(arguments[t]));return e}function v(){for(var e=0,t=0,i=arguments.length;t<i;t++)e+=arguments[t].length;for(var n=Array(e),r=0,t=0;t<i;t++)for(var s=arguments[t],a=0,o=s.length;a<o;a++,r++)n[r]=s[a];return n}function b(e){return this instanceof b?(this.v=e,this):new b(e)}function S(e,t,i){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var n,r=i.apply(e,t||[]),s=[];return n={},a("next"),a("throw"),a("return"),n[Symbol.asyncIterator]=function(){return this},n;function a(e){r[e]&&(n[e]=function(t){return new Promise(function(i,n){s.push([e,t,i,n])>1||o(e,t)})})}function o(e,t){try{var i;(i=r[e](t)).value instanceof b?Promise.resolve(i.value.v).then(d,l):c(s[0][2],i)}catch(e){c(s[0][3],e)}}function d(e){o("next",e)}function l(e){o("throw",e)}function c(e,t){e(t),s.shift(),s.length&&o(s[0][0],s[0][1])}}function y(e){var t,i;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,r){t[n]=e[n]?function(t){return(i=!i)?{value:b(e[n](t)),done:"return"===n}:r?r(t):t}:r}}function C(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,i=e[Symbol.asyncIterator];return i?i.call(e):(e=m(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=e[i]&&function(t){return new Promise(function(n,r){!function(e,t,i,n){Promise.resolve(n).then(function(t){e({value:t,done:i})},t)}(n,r,(t=e[i](t)).done,t.value)})}}}function w(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}
33function T(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}function M(e){return e&&e.__esModule?e:{default:e}}function E(e,t){if(!t.has(e))throw TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,i){if(!t.has(e))throw TypeError("attempted to set private field on non-instance");return t.set(e,i),i}},22031:function(e,t,i){var n;!function(r,s){"use strict";var a="function",o="undefined",d="object",l="string",c="major",u="model",h="name",f="type",m="vendor",p="version",g="architecture",v="console",b="mobile",S="tablet",y="smarttv",C="wearable",w="embedded",T="Amazon",M="Apple",E="ASUS",A="BlackBerry",k="Browser",_="Chrome",P="Firefox",R="Google",I="Honor",O="Huawei",x="Microsoft",D="Motorola",B="Nvidia",N="OnePlus",L="Opera",F="OPPO",V="Samsung",U="Sharp",z="Sony",$="Xiaomi",H="Zebra",j="Facebook",W="Chromium OS",G="Mac OS",K=" Browser",q=function(e,t){var i={};for(var n in e)t[n]&&t[n].length%2==0?i[n]=t[n].concat(e[n]):i[n]=e[n];return i},Q=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},J=function(e,t){return typeof e===l&&-1!==Y(t).indexOf(Y(e))},Y=function(e){return e.toLowerCase()},X=function(e,t){if(typeof e===l)return e=e.replace(/^\s\s*/,""),typeof t===o?e:e.substring(0,500)},Z=function(e,t){for(var i,n,r,o,l,c,u=0;u<t.length&&!l;){var h=t[u],f=t[u+1];for(i=n=0;i<h.length&&!l&&h[i];)if(l=h[i++].exec(e))for(r=0;r<f.length;r++)c=l[++n],typeof(o=f[r])===d&&o.length>0?2===o.length?typeof o[1]==a?this[o[0]]=o[1].call(this,c):this[o[0]]=o[1]:3===o.length?typeof o[1]!==a||o[1].exec&&o[1].test?this[o[0]]=c?c.replace(o[1],o[2]):void 0:this[o[0]]=c?o[1].call(this,c,o[2]):void 0:4===o.length&&(this[o[0]]=c?o[3].call(this,c.replace(o[1],o[2])):void 0):this[o]=c||s;u+=2}},ee=function(e,t){for(var i in t)if(typeof t[i]===d&&t[i].length>0){for(var n=0;n<t[i].length;n++)if(J(t[i][n],e))return"?"===i?s:i}else if(J(t[i],e))return"?"===i?s:i;return t.hasOwnProperty("*")?t["*"]:e},et={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},ei={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[h,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[h,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[h,p],[/opios[\/ ]+([\w\.]+)/i],[p,[h,L+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[p,[h,L+" GX"]],[/\bopr\/([\w\.]+)/i],[p,[h,L]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[p,[h,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[p,[h,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[h,p],[/quark(?:pc)?\/([-\w\.]+)/i],[p,[h,"Quark"]],[/\bddg\/([\w\.]+)/i],[p,[h,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[h,"UC"+k]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[p,[h,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[h,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[h,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[p,[h,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[p,[h,"Smart Lenovo "+k]],[/(avast|avg)\/([\w\.]+)/i],[[h,/(.+)/,"$1 Secure "+k],p],[/\bfocus\/([\w\.]+)/i],[p,[h,P+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[h,L+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[h,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[h,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[h,L+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[h,"MIUI"+K]],[/fxios\/([\w\.-]+)/i],[p,[h,P]],[/\bqihoobrowser\/?([\w\.]*)/i],[p,[h,"360"]],[/\b(qq)\/([\w\.]+)/i],[[h,/(.+)/,"$1Browser"],p],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[h,/(.+)/,"$1"+K],p],[/samsungbrowser\/([\w\.]+)/i],[p,[h,V+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[p,[h,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[h,"Sogou Mobile"],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[h,p],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[h],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[p,h],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[h,j],p],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[h,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[h,"GSA"]],[/musical_ly(?:.
33+app_?version\/|_)([\w\.]+)/i],[p,[h,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[h,_+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[h,_+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[h,"Android "+k]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[h,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[h,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,h],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[h,[p,ee,{"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[h,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[h,"Netscape"],p],[/(wolvic|librewolf)\/([\w\.]+)/i],[h,p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[h,P+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[h,[p,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[h,[p,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[g,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[g,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[g,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[g,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[g,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[g,/ower/,"",Y]],[/ sun4\w[;\)]/i],[[g,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[g,Y]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[u,[m,V],[f,S]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[u,[m,V],[f,b]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[u,[m,M],[f,b]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[u,[m,M],[f,S]],[/(macintosh);/i],[u,[m,M]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[u,[m,U],[f,b]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[u,[m,I],[f,S]],[/honor([-\w ]+)[;\)]/i],[u,[m,I],[f,b]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[u,[m,O],[f,S]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[u,[m,O],[f,b]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[u,/_/g," "],[m,$],[f,S]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[u,/_/g," "],[m,$],[f,b]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[u,[m,F],[f,b]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[u,[m,ee,{OnePlus:["304","403","203"],"*":F}],[f,S]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[u,[m,"Vivo"],[f,b]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[u,[m,"Realme"],[f,b]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[u,[m,D],[f,b]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[u,[m,D],[f,S]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[u,[m,"LG"],[f,S]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[u,[m,"LG"],[f,b]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}
33(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[u,[m,"Lenovo"],[f,S]],[/(nokia) (t[12][01])/i],[m,u,[f,S]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[u,/_/g," "],[f,b],[m,"Nokia"]],[/(pixel (c|tablet))\b/i],[u,[m,R],[f,S]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[u,[m,R],[f,b]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[u,[m,z],[f,b]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[u,"Xperia Tablet"],[m,z],[f,S]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[u,[m,N],[f,b]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[u,[m,T],[f,S]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[u,/(.+)/g,"Fire Phone $1"],[m,T],[f,b]],[/(playbook);[-\w\),; ]+(rim)/i],[u,m,[f,S]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[u,[m,A],[f,b]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[u,[m,E],[f,S]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[u,[m,E],[f,b]],[/(nexus 9)/i],[u,[m,"HTC"],[f,S]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[m,[u,/_/g," "],[f,b]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[u,[m,"TCL"],[f,S]],[/(itel) ((\w+))/i],[[m,Y],u,[f,ee,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[u,[m,"Acer"],[f,S]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[u,[m,"Meizu"],[f,b]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[u,[m,"Ulefone"],[f,b]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[u,[m,"Energizer"],[f,b]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[u,[m,"Cat"],[f,b]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[u,[m,"Smartfren"],[f,b]],[/droid.+; (a(?:015|06[35]|142p?))/i],[u,[m,"Nothing"],[f,b]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[u,[m,"Archos"],[f,S]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[u,[m,"Archos"],[f,b]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[m,u,[f,S]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,/(oppo) ?([\w ]+) bui/i],[m,u,[f,b]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[m,u,[f,S]],[/(surface duo)/i],[u,[m,x],[f,S]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[u,[m,"Fairphone"],[f,b]],[/(u304aa)/i],[u,[m,"AT&T"],[f,b]],[/\bsie-(\w*)/i],[u,[m,"Siemens"],[f,b]],[/\b(rct\w+) b/i],[u,[m,"RCA"],[f,S]],[/\b(venue[\d ]{2,7}) b/i],[u,[m,"Dell"],[f,S]],[/\b(q(?:mv|ta)\w+) b/i],[u,[m,"Verizon"],[f,S]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[u,[m,"Barnes & Noble"],[f,S]],[/\b(tm\d{3}\w+) b/i],[u,[m,"NuVision"],[f,S]],[/\b(k88) b/i],[u,[m,"ZTE"],[f,S]],[/\b(nx\d{3}j) b/i],[u,[m,"ZTE"],[f,b]],[/\b(gen\d{3}) b.+49h/i],[u,[m,"Swiss"],[f,b]],[/\b(zur\d{3}) b/i],[u,[m,"Swiss"],[f,S]],[/\b((zeki)?tb.*\b) b/i],[u,[m,"Zeki"],[f,S]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[m,"Dragon Touch"],u,[f,S]],[/\b(ns-?\w{0,9}) b/i],[u,[m,"Insignia"],[f,S]],[/\b((nxa|next)-?\w{0,9}) b/i],[u,[m,"NextBook"],[f,S]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[m,"Voice"],u,[f,b]],[/\b(lvtel\-)?(v1[12]) b/i],[[m,"LvTel"],u,[f,b]],[/\b(ph-1) /i],[u,[m,"Essential"],[f,b]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[u,[m,"Envizen"],[f,S]],[/\b(trio[-\w\. ]+) b/i],[u,[m,"MachSpeed"],[f,S]],[/\btu_(1491) b/i],[u,[m,"Rotor"],[f,S]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[u,[m,B
vendor: 6,632 bytes, line 33
33],[f,S]],[/(sprint) (\w+)/i],[m,u,[f,b]],[/(kin\.[onetw]{3})/i],[[u,/\./g," "],[m,x],[f,b]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[u,[m,H],[f,S]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[u,[m,H],[f,b]],[/smart-tv.+(samsung)/i],[m,[f,y]],[/hbbtv.+maple;(\d+)/i],[[u,/^/,"SmartTV"],[m,V],[f,y]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[m,"LG"],[f,y]],[/(apple) ?tv/i],[m,[u,M+" TV"],[f,y]],[/crkey/i],[[u,_+"cast"],[m,R],[f,y]],[/droid.+aft(\w+)( bui|\))/i],[u,[m,T],[f,y]],[/(shield \w+ tv)/i],[u,[m,B],[f,y]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[u,[m,U],[f,y]],[/(bravia[\w ]+)( bui|\))/i],[u,[m,z],[f,y]],[/(mi(tv|box)-?\w+) bui/i],[u,[m,$],[f,y]],[/Hbbtv.*(technisat) (.*);/i],[m,u,[f,y]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[m,X],[u,X],[f,y]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[u,[f,y]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[f,y]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[m,u,[f,v]],[/droid.+; (shield)( bui|\))/i],[u,[m,B],[f,v]],[/(playstation \w+)/i],[u,[m,z],[f,v]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[u,[m,x],[f,v]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[u,[m,V],[f,C]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[m,u,[f,C]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[u,[m,F],[f,C]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[u,[m,M],[f,C]],[/(opwwe\d{3})/i],[u,[m,N],[f,C]],[/(moto 360)/i],[u,[m,D],[f,C]],[/(smartwatch 3)/i],[u,[m,z],[f,C]],[/(g watch r)/i],[u,[m,"LG"],[f,C]],[/droid.+; (wt63?0{2,3})\)/i],[u,[m,H],[f,C]],[/droid.+; (glass) \d/i],[u,[m,R],[f,C]],[/(pico) (4|neo3(?: link|pro)?)/i],[m,u,[f,C]],[/; (quest( \d| pro)?)/i],[u,[m,j],[f,C]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[m,[f,w]],[/(aeobc)\b/i],[u,[m,T],[f,w]],[/(homepod).+mac os/i],[u,[m,M],[f,w]],[/windows iot/i],[[f,w]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[u,[f,b]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[u,[f,S]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[f,S]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[f,b]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[u,[m,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[h,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[h,p],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[h,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[h,p],[/ladybird\//i],[[h,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,h]],os:[[/microsoft (windows) (vista|xp)/i],[h,p],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[h,[p,ee,et]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,ee,et],[h,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[h,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[h,G],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,h],[/(ubuntu) ([\w\.]+) like android/i],[[h,/(.+)/,"$1 Touch"],p],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[h,p],[/\(bb(10);/i],[p,[h,A]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[p,[h,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[h,P+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[h,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[p,[h,"watchOS"]],[/crkey\/([\d\.]+)/i],[p,[h,_+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[h,W],p],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[h,p],[/(sunos) ?([\w\.\d]*)/i],[[h,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[h,p]]},en=function(e,t){if(typeof e===d&&(t=e,e=s),!(this instanceof en))return new en(e,t).getResult();var i=typeof r!==o&&r.navigator?r.navigator:s,n=e||(i&&i.userAgent?i.userAgent:""),v=i&&i.userAgentData?i.userAgentData:s,y=t?q(ei,t):ei,C=i&&i.userAgent==n;return this.getBrowser=function(){var e,t={};return t[h]=s,t[p]=s,Z.call(t,n,y.browser),t[c]=typeof(e=t[p])===l?e.replace(/[^\d\.]/g,"").split(".")[0]:s,C&&i&&i.brave&&typeof i.brave.isBrave==a&&(t[h]="Brave"),t},this.getCPU=function(){var e={};return e[g]=s,Z.call(e,n,y.cpu),e},this.getDevice=function(){var e={};return e[m]=s,e[u]=s,e[f]=s,Z.call(e,n,y.device),C&&!e[f]&&v&&v.mobile&&(e[f]=b),C&&"Macintosh"==e[u]&&i&&typeof i.standalone!==o&&i.maxTouchPoints&&i.maxTouchPoints>2&&(e[u]="iPad",e[f]=S),e},this.getEngine=function(){var e={};return e[h]=s,e[p]=s,Z.call(e,n,y.engine),e},this.getOS=function(){var e={};return e[h]=s,e[p]=s,Z.call(e,n,y.os),C&&!e[h]&&v&&v.platform&&"Unknown"!=v.platform&&(e[h]=v.platform.replace(/chrome os/i,W).replace(/macos/i,G)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return n},this.setUA=function(e){return n=typeof e===l&&e.length>500?X(e,500):e,this},this.setUA(n),this};en.VERSION="1.0.41",en.BROWSER=Q([h,p,c]),en.CPU=Q([g]),en.DEVICE=Q([u,m,f,v,b,y,S,C,w]),en.ENGINE=en.OS=Q([h,p]),typeof t!==o?(e.exports&&(t=e.exports=en),t.UAParser=en):i.amdO?s!==(n=(function(){return en}).call(t,i,t,e))&&(e.exports=n):typeof r!==o&&(r.UAParser=en);var er=typeof r!==o&&(r.jQuery||r.Zepto);if(er&&!er.ua){var es=new en;er.ua=es.getResult(),er.ua.get=function(){return es.getUA()},er.ua.set=function(e){es.setUA(e);var t=es.getResult();for(var i in t)er.ua[i]=t[i]}}}("object"==typeof window?window:this)}
33,77160:function(e){var t;t=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t||4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,(function(t){return e[t]}).bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=90)}({17:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n=i(18),r=function(){function e(){}return e.getFirstMatch=function(e,t){var i=t.match(e);return i&&i.length>0&&i[1]||""},e.getSecondMatch=function(e,t){var i=t.match(e);return i&&i.length>1&&i[2]||""},e.matchAndReturnConst=function(e,t,i){if(e.test(t))return i},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,i,n){void 0===n&&(n=!1);var r=e.getVersionPrecision(t),s=e.getVersionPrecision(i),a=Math.max(r,s),o=0,d=e.map([t,i],function(t){var i=a-e.getVersionPrecision(t),n=t+Array(i+1).join(".0");return e.map(n.split("."),function(e){return Array(20-e.length).join("0")+e}).reverse()});for(n&&(o=a-Math.min(r,s)),a-=1;a>=o;){if(d[0][a]>d[1][a])return 1;if(d[0][a]===d[1][a]){if(a===o)return 0;a-=1}else if(d[0][a]<d[1][a])return -1}},e.map=function(e,t){var i,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(i=0;i<e.length;i+=1)n.push(t(e[i]));return n},e.find=function(e,t){var i,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(i=0,n=e.length;i<n;i+=1){var r=e[i];if(t(r,i))return r}},e.assign=function(e){for(var t,i,n=arguments.length,r=Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];if(Object.assign)return Object.assign.apply(Object,[e].concat(r));for(t=0,i=r.length;t<i;t+=1)(function(){var i=r[t];
33"object"==typeof i&&null!==i&&Object.keys(i).forEach(function(t){e[t]=i[t]})})();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=r,e.exports=t.default},18:function(e,t,i){"use strict";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n,r=(n=i(91))&&n.__esModule?n:{default:n},s=i(18),a=function(){function e(){}return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw Error("UserAgent should be a string");return new r.default(e,t)},e.parse=function(e){return new r.default(e).getResult()},function(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(e,[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}]),e}();t.default=a,e.exports=t.default},91:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n=d(i(92)),r=d(i(93)),s=d(i(94)),a=d(i(95)),o=d(i(17));function d(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(r.default,function(t){if("function"==typeof t.test)return t.test(e);
vendor: 5,744 bytes, line 33
33if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,i={},n=0,r={},s=0;if(Object.keys(e).forEach(function(t){var a=e[t];"string"==typeof a?(r[t]=a,s+=1):"object"==typeof a&&(i[t]=a,n+=1)}),n>0){var a=Object.keys(i),d=o.default.find(a,function(e){return t.isOS(e)});if(d){var l=this.satisfies(i[d]);if(void 0!==l)return l}var c=o.default.find(a,function(e){return t.isPlatform(e)});if(c){var u=this.satisfies(i[c]);if(void 0!==u)return u}}if(s>0){var h=Object.keys(r),f=o.default.find(h,function(e){return t.isBrowser(e,!0)});if(void 0!==f)return this.compareVersion(r[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var i=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),r=o.default.getBrowserTypeByAlias(n);return t&&r&&(n=r.toLowerCase()),n===i},t.compareVersion=function(e){var t=[0],i=e,n=!1,r=this.getBrowserVersion();if("string"==typeof r)return">"===e[0]||"<"===e[0]?(i=e.substr(1),"="===e[1]?(n=!0,i=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?i=e.substr(1):"~"===e[0]&&(n=!0,i=e.substr(1)),t.indexOf(o.default.compareVersions(r,i,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some(function(e){return t.is(e)})},e}();t.default=l,e.exports=t.default},92:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n,r=(n=i(17))&&n.__esModule?n:{default:n},s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},i=r.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},i=r.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},i=r.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},i=r.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},i=r.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},i=r.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},i=r.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"}
vendor: 6,960 bytes, line 33
33,i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},i=r.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},i=r.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},i=r.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},i=r.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},i=r.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},i=r.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},i=r.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},i=r.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return i&&(t.version=i),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},i=r.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},i=r.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},i=r.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},i=r.default.getFirstMatch(s,e)||r.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},i=r.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},i=r.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},i=r.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},i=r.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},i=r.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},i=r.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},i=r.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},i=r.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},i=r.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:function(e){var t=!e.test(/like android/i),i=e.test(/android/i);return t&&i},describe:function(e){var t={name:"Android Browser"},i=r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},i=r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},i=r.default.getFirstMatch(s,e);return i&&(t.version=i),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:r.default.getFirstMatch(t,e),version:r.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n,r=(n=i(17))&&n.__esModule?n:{default:n},s=i(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=r.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=r.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=r.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),i=r.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:i}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},i=r.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return i&&(t.version=i),t}},{test:[/macintosh/i],describe:function(e){var t=r.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),i=r.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return i&&(n.versionName=i),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=r.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),i=e.test(/android/i);return t&&i},describe:function(e){var t=r.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),i=r.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return i&&(n.versionName=i),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=r.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),i={n
33ame:s.OS_MAP.WebOS};return t&&t.length&&(i.version=t),i}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=r.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||r.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||r.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=r.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=r.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=r.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n,r=(n=i(17))&&n.__esModule?n:{default:n},s=i(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=r.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",i={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(i.model=t),i}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),i=e.test(/like (ipod|iphone)/i);return t&&!i},describe:function(e){var t=r.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,i){"use strict";t.__esModule=!0,t.default=void 0;var n,r=(n=i(17))&&n.__esModule?n:{default:n},s=i(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=r.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},i=r.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},i=r.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:function(e){var t=e.test(/gecko/i),i=e.test(/like gecko/i);return t&&!i},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},i=r.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},i=r.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return i&&(t.version=i),t}}];t.default=a,e.exports=t.default}})},e.exports=t()},54924:function(e,t,i){"use strict";i.r(t),i.d(t,{BotInfo:function(){return d},BrowserInfo:function(){return s},NodeInfo:function(){return a},ReactNativeInfo:function(){return l},SearchBotDeviceInfo:function(){return o},browserName:function(){return p},detect:function(){return f},detectOS:function(){return v},getNodeVersion:function(){return b},parseUserAgent:function(){return g}});var n=i(34406),r=function(e,t,i){if(i||2==arguments.length)for(var n,r=0,s=t.length;r<s;r++)!n&&r in t||(n||(n=Array.prototype.slice.call(t,0,r)),n[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))},s=function(e,t,i){this.name=e,this.version=t,this.os=i,this.type="browser"},a=function(e){this.version=e,this.type="node",this.name="node",this.os=n.platform},o=function(e,t,i,n){this.name=e,this.version=t,this.os=i,this.bot=n,this.type="bot-device"},d=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},l=function(){this.type="react-native",this.name="react-native",this.version=null,this.os=null},c=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,u=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;
33\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],h=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function f(e){return e?g(e):"undefined"==typeof document&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product?new l:"undefined"!=typeof navigator?g(navigator.userAgent):b()}function m(e){return""!==e&&u.reduce(function(t,i){var n=i[0],r=i[1];if(t)return t;var s=r.exec(e);return!!s&&[n,s]},!1)}function p(e){var t=m(e);return t?t[0]:null}function g(e){var t=m(e);if(!t)return null;var i=t[0],n=t[1];if("searchbot"===i)return new d;var a=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);a?a.length<3&&(a=r(r([],a,!0),function(e){for(var t=[],i=0;i<e;i++)t.push("0");return t}(3-a.length),!0)):a=[];var l=a.join("."),u=v(e),h=c.exec(e);return h&&h[1]?new o(i,l,u,h[1]):new s(i,l,u)}function v(e){for(var t=0,i=h.length;t<i;t++){var n=h[t],r=n[0];if(n[1].exec(e))return r}return null}function b(){return void 0!==n&&n.version?new a(n.version.slice(1)):null}},33958:function(e,t,i){e=i.nmd(e);var n,r,s,a="__lodash_hash_undefined__",o="[object Arguments]",d="[object Array]",l="[object Boolean]",c="[object Date]",u="[object Error]",h="[object Function]",f="[object Map]",m="[object Number]",p="[object Object]",g="[object Promise]",v="[object RegExp]",b="[object Set]",S="[object String]",y="[object WeakMap]",C="[object ArrayBuffer]",w="[object DataView]",T=/^\[object .+?Constructor\]$/,M=/^(?:0|[1-9]\d*)$/,E={};E["[object Float32Array]"]=E["[object Float64Array]"]=E["[object Int8Array]"]=E["[object Int16Array]"]=E["[object Int32Array]"]=E["[object Uint8Array]"]=E["[object Uint8ClampedArray]"]=E["[object Uint16Array]"]=E["[object Uint32Array]"]=!0,E[o]=E[d]=E[C]=E[l]=E[w]=E[c]=E[u]=E[h]=E[f]=E[m]=E[p]=E[v]=E[b]=E[S]=E[y]=!1;var A="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,k="object"==typeof self&&self&&self.Object===Object&&self,_=A||k||Function("return this")(),P=t&&!t.nodeType&&t,R=P&&e&&!e.nodeType&&e,I=R&&R.exports===P,O=I&&A.process,x=function(){try{return O&&O.binding&&O.binding("util")}catch(e){}}(),D=x&&x.isTypedArray;function B(e){var t=-1,i=Array(e.size);return e.forEach(function(e,n){i[++t]=[n,e]}),i}function N(e){var t=-1,i=Array(e.size);return e.forEach(function(e){i[++t]=e}),i}var L=Array.prototype,F=Function.prototype,V=Object.prototype,U=_["__core-js_shared__"],z=F.toString,$=V.hasOwnProperty,H=(n=/[^.]+$/.exec(U&&U.keys&&U.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",j=V.toString,W=RegExp("^"+z.call($).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),G=I?_.Buffer:void 0,K=_.Symbol,q=_.Uint8Array,Q=V.propertyIsEnumerable,J=L.splice,Y=K?K.toStringTag:void 0,X=Object.getOwnPropertySymbols,Z=G?G.isBuffer:void 0,ee=(r=Object.keys,s=Object,function(e){return r(s(e))}
33),et=eE(_,"DataView"),ei=eE(_,"Map"),en=eE(_,"Promise"),er=eE(_,"Set"),es=eE(_,"WeakMap"),ea=eE(Object,"create"),eo=e_(et),ed=e_(ei),el=e_(en),ec=e_(er),eu=e_(es),eh=K?K.prototype:void 0,ef=eh?eh.valueOf:void 0;function em(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}function ep(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}function eg(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}function ev(e){var t=-1,i=null==e?0:e.length;for(this.__data__=new eg;++t<i;)this.add(e[t])}function eb(e){var t=this.__data__=new ep(e);this.size=t.size}function eS(e,t){for(var i=e.length;i--;)if(eP(e[i][0],t))return i;return -1}function ey(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Y&&Y in Object(e)?function(e){var t=$.call(e,Y),i=e[Y];try{e[Y]=void 0;var n=!0}catch(e){}var r=j.call(e);return n&&(t?e[Y]=i:delete e[Y]),r}(e):j.call(e)}function eC(e){return eN(e)&&ey(e)==o}function ew(e,t,i,n,r,s){var a=1&i,o=e.length,d=t.length;if(o!=d&&!(a&&d>o))return!1;var l=s.get(e);if(l&&s.get(t))return l==t;var c=-1,u=!0,h=2&i?new ev:void 0;for(s.set(e,t),s.set(t,e);++c<o;){var f=e[c],m=t[c];if(n)var p=a?n(m,f,c,t,e,s):n(f,m,c,e,t,s);if(void 0!==p){if(p)continue;u=!1;break}if(h){if(!function(e,t){for(var i=-1,n=null==e?0:e.length;++i<n;)if(t(e[i],i,e))return!0;return!1}(t,function(e,t){if(!h.has(t)&&(f===e||r(f,e,i,n,s)))return h.push(t)})){u=!1;break}}else if(!(f===m||r(f,m,i,n,s))){u=!1;break}}return s.delete(e),s.delete(t),u}function eT(e){var t;return t=function(e){return null!=e&&eD(e.length)&&!ex(e)?function(e,t){var i,n=eI(e),r=!n&&eR(e),s=!n&&!r&&eO(e),a=!n&&!r&&!s&&eL(e),o=n||r||s||a,d=o?function(e,t){for(var i=-1,n=Array(e);++i<e;)n[i]=t(i);return n}(e.length,String):[],l=d.length;for(var c in e)$.call(e,c)&&!(o&&("length"==c||s&&("offset"==c||"parent"==c)||a&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||(i=null==(i=l)?9007199254740991:i)&&("number"==typeof c||M.test(c))&&c>-1&&c%1==0&&c<i))&&d.push(c);return d}(e):function(e){if(t=e&&e.constructor,e!==("function"==typeof t&&t.prototype||V))return ee(e);var t,i=[];for(var n in Object(e))$.call(e,n)&&"constructor"!=n&&i.push(n);return i}(e)}(e),eI(e)?t:function(e,t){for(var i=-1,n=t.length,r=e.length;++i<n;)e[r+i]=t[i];return e}(t,eA(e))}function eM(e,t){var i,n=e.__data__;return("string"==(i=typeof t)||"number"==i||"symbol"==i||"boolean"==i?"__proto__"!==t:null===t)?n["string"==typeof t?"string":"hash"]:n.map}function eE(e,t){var i=null==e?void 0:e[t];return!(!eB(i)||H&&H in i)&&(ex(i)?W:T).test(e_(i))?i:void 0}em.prototype.clear=function(){this.__data__=ea?ea(null):{},this.size=0},em.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},em.prototype.get=function(e){var t=this.__data__;if(ea){var i=t[e];return i===a?void 0:i}return $.call(t,e)?t[e]:void 0},em.prototype.has=function(e){var t=this.__data__;return ea?void 0!==t[e]:$.call(t,e)},em.prototype.set=function(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=ea&&void 0===t?a:t,this},ep.prototype.clear=function(){this.__data__=[],this.size=0},ep.prototype.delete=function(e){var t=this.__data__,i=eS(t,e);return!(i<0)&&(i==t.length-1?t.pop():J.call(t,i,1),--this.size,!0)},ep.prototype.get=function(e){var t=this.__data__,i=eS(t,e);return i<0?void 0:t[i][1]},ep.prototype.has=function(e){return eS(this.__data__,e)>-1},ep.prototype.set=function(e,t){var i=this.__data__,n=eS(i,e);return n<0?(++this.size,i.push([e,t])):i[n][1]=t,this},eg.prototype.clear=function(){this.size=0,this.__data__={hash:new em,map:new(ei||ep),string:new em}},eg.prototype.delete=function(e){var t=eM(this,e).delete(e);return this.size-=t?1:0,t},eg.prototype.get=function(e){return eM(this,e).get(e)},eg.prototype.has=function(e){return eM(this,e).has(e)},eg.prototype.set=function(e,t){var i=eM(this,e),n=i.size;return i.set(e,t),this.size+=i.size==n?0:1,this},ev.prototype.add=ev.prototype.push=function(e){return this.__data__.set(e,a),this},ev.prototype.has=function(e){return this.__data__.has(e)},eb.prototype.clear=function(){this.__data__=new ep,this.size=0},eb.prototype.delete=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i},eb.prototype.get=function(e){return this.__data__.get(e)},eb.prototype.has=function(e){return this.__data__.has(e)},eb.prototype.set=function(e,t){var i=this.__data__;if(i instanceof ep){var n=i.__data__;if(!ei||n.length<199)return n.push([e,t]),this.size=++i.size,this;i=this.__data__=new eg(n)}return i.set(e,t),this.size=i.size,this};var eA=X?function(e){return null==e?[]:function(e,t){for(var i=-1,n=null==e?0:e.length,r=0,s=[];++i<n;){var a=e[i];t(a,i,e)&&(s[r++]=a)}return s}(X(e=Object(e)),function(t){return Q.call(e,t)})}:function(){return[]},ek=ey;function e_(e){if(null!=e){try{return z.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function eP(e,t){return e===t||e!=e&&t!=t}(et&&ek(new et(new ArrayBuffer(1)))!=w||ei&&ek(new ei)!=f||en&&ek(en.resolve())!=g||er&&ek(new er)!=b||es&&ek(new es)!=y)&&(ek=function(e){var t=ey(e),i=t==p?e.constructor:void 0,n=i?e_(i):"";if(n)switch(n){case eo:return w;case ed:return f;case el:return g;case ec:return b;case eu:return y}return t});var eR=eC(function(){return arguments}())?eC:function(e){return eN(e)&&$.call(e,"callee")&&!Q.call(e,"callee")},eI=Array.isArray,eO=Z||function(){return!1};function ex(e){if(!eB(e))return!1;var t=ey(e);return t==h||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function eD(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function eB(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function eN(e){return null!=e&&"object"==typeof e}var eL=D?function(e){return D(e)}:function(e){return eN(e)&&eD(e.length)&&!!E[ey(e)]};e.exports=function(e,t){return function e(t,i,n,r,s){return t===i||(null!=t&&null!=i&&(eN(t)||eN(i))?function(e,t,i,n,r,s){var a=eI(e),h=eI(t),g=a?d:ek(e),y=h?d:ek(t);g=g==o?p:g,y=y==o?p:y;var T=g==p,M=y==p,E=g==y;if(E&&eO(e)){if(!eO(t))return!1;a=!0,T=!1}if(E&&!T)return s||(s=new eb),a||eL(e)?ew(e,t,i,n,r,s):function(e,t,i,n,r,s,a){switch(i){case w:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)break;e=e.buffer,t=t.buffer;case C:if(e.byteLength!=t.byteLength||!s(new q(e),new q(t)))break;return!0;case l:case c:case m:return eP(+e,+t);case u:return e.name==t.name&&e.message==t.message;case v:case S:return e==t+"";case f:var o=B;case b:var d=1&n;if(o||(o=N),e.size!=t.size&&!d)break;var h=a.get(e);if(h)return h==t;n|=2,a.set(e,t);var p=ew(o(e),o(t),n,r,s,a);return a.delete(e),p;case"[object Symbol]":if(ef)return ef.call(e)==ef.call(t)}return!1}(e,t,g,i,n,r,s);if(!(1&i)){var A=T&&$.call(e,"__wrapped__"),k=M&&$.call(t,"__wrapped__");
33if(A||k){var _=A?e.value():e,P=k?t.value():t;return s||(s=new eb),r(_,P,i,n,s)}}return!!E&&(s||(s=new eb),function(e,t,i,n,r,s){var a=1&i,o=eT(e),d=o.length;if(d!=eT(t).length&&!a)return!1;for(var l=d;l--;){var c=o[l];if(!(a?c in t:$.call(t,c)))return!1}var u=s.get(e);if(u&&s.get(t))return u==t;var h=!0;s.set(e,t),s.set(t,e);for(var f=a;++l<d;){var m=e[c=o[l]],p=t[c];if(n)var g=a?n(p,m,c,t,e,s):n(m,p,c,e,t,s);if(!(void 0===g?m===p||r(m,p,i,n,s):g)){h=!1;break}f||(f="constructor"==c)}if(h&&!f){var v=e.constructor,b=t.constructor;v!=b&&"constructor"in e&&"constructor"in t&&!("function"==typeof v&&v instanceof v&&"function"==typeof b&&b instanceof b)&&(h=!1)}return s.delete(e),s.delete(t),h}(e,t,i,n,r,s))}(t,i,n,r,e,s):t!=t&&i!=i)}(e,t)}},4079:function(e){"use strict";var t=Object.assign.bind(Object);e.exports=t,e.exports.default=e.exports},88555:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M12 9c-1.6 0-3.15.25-4.6.72v3.1c0 .39-.23.74-.56.9-.98.49-1.87 1.12-2.66 1.85-.18.18-.43.28-.7.28-.28 0-.53-.11-.71-.29L.29 13.08c-.18-.17-.29-.42-.29-.7 0-.28.11-.53.29-.71C3.34 8.78 7.46 7 12 7s8.66 1.78 11.71 4.67c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2.48 2.48c-.18.18-.43.29-.71.29-.27 0-.52-.11-.7-.28-.79-.74-1.69-1.36-2.67-1.85-.33-.16-.56-.5-.56-.9v-3.1C15.15 9.25 13.6 9 12 9"}),"CallEnd")},46803:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M6 9h12v2H6zm8 5H6v-2h8zm4-6H6V6h12z"}),"Chat")},96633:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm-1 4H8c-1.1 0-1.99.9-1.99 2L6 21c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V11zM8 21V7h6v5h5v9z"}),"FileCopyOutlined")},11969:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M19 14v3c0 .55-.45 1-1 1h-1v-4zM7 14v4H6c-.55 0-1-.45-1-1v-3zm5-13c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h3c1.66 0 3-1.34 3-3v-7c0-4.97-4.03-9-9-9"}),"HeadsetOutlined")},13600:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"}),"Mic")},16940:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M19 11h-1.7c0 .74-.16 1.43-.43 2.05l1.23 1.23c.56-.98.9-2.09.9-3.28m-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9 3.34 9 5v.18zM4.27 3 3 4.27l6.01 6.01V11c0 1.66 1.33 3 2.99 3 .22 0 .44-.03.65-.08l1.66 1.66c-.71.33-1.5.52-2.31.52-2.76 0-5.3-2.1-5.3-5.1H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c.91-.13 1.77-.45 2.54-.9L19.73 21 21 19.73z"}),"MicOff")},1809:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"m3.4 20.4 17.45-7.48c.81-.35.81-1.49 0-1.84L3.4 3.6c-.66-.29-1.39.2-1.39.91L2 9.12c0 .5.37.93.87.99L17 12 2.87 13.88c-.5.07-.87.5-.87 1l.01 4.61c0 .71.73 1.2 1.39.91"}),"SendRounded")},16223:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11z"}),"Videocam")},6126:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"m21 6.5-4 4V7c0-.55-.45-1-1-1H9.82L21 17.18zM3.27 2 2 3.27 4.73 6H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.21 0 .39-.08.54-.18L19.73 21 21 19.73z"}),"VideocamOff")},11915:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M15 8v8H5V8zm1-2H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4V7c0-.55-.45-1-1-1"}),"VideocamOutlined")},11585:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63m2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71M4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9zM12 4 9.91 6.09 12 8.18z"}),"VolumeOff")},62951:function(e,t,i){"use strict";var n=i(71600);t.Z=void 0;var r=n(i(94834)),s=i(52322);t.Z=(0,r.default)((0,s.jsx)("path",{d:"M3 9v6h4l5 5V4L7 9zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77"}),"VolumeUp")},73737:function(e,t,i){"use strict";e.exports=i(50536)},8421:function(e){"use strict";function t(){this._listeners=Object.create(null)}e.exports=t,t.prototype.on=function(e,t,i){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:i||this}),this},t.prototype.off=function(e,t){if(void 0===e)this._listeners=Object.create(null);else if(void 0===t)this._listeners[e]=[];else{var i=this._listeners[e];if(!i)return this;for(var n=0;n<i.length;)i[n].fn===t?i.splice(n,1):++n}return this},t.prototype.emit=function(e){var t=this._listeners[e];if(t){for(var i=[],n=1;n<arguments.length;)i.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,i)}return this}},78574:function(e,t){"use strict";t.length=function(e){for(var t=0,i=0,n=0;n<e.length;
33++n)(i=e.charCodeAt(n))<128?t+=1:i<2048?t+=2:(64512&i)==55296&&(64512&e.charCodeAt(n+1))==56320?(++n,t+=4):t+=3;return t},t.read=function(e,t,i){if(i-t<1)return"";for(var n,r,s,a,o=null,d=[],l=0;t<i;)(n=e[t++])<=127?d[l++]=n:n>=192&&n<224?(s=(31&n)<<6|63&e[t++],d[l++]=s>=128?s:65533):n>=224&&n<240?(a=(15&n)<<12|(63&e[t++])<<6|63&e[t++],d[l++]=a>=2048?a:65533):n>=240&&((r=(7&n)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])<65536||r>1114111?d[l++]=65533:(r-=65536,d[l++]=55296+(r>>10),d[l++]=56320+(1023&r))),l>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,d.slice(0,l))),l=0);return o?(l&&o.push(String.fromCharCode.apply(String,d.slice(0,l))),o.join("")):String.fromCharCode.apply(String,d.slice(0,l))},t.write=function(e,t,i){for(var n,r,s=i,a=0;a<e.length;++a)(n=e.charCodeAt(a))<128?t[i++]=n:(n<2048?t[i++]=n>>6|192:((64512&n)==55296&&(64512&(r=e.charCodeAt(a+1)))==56320?(n=65536+((1023&n)<<10)+(1023&r),++a,t[i++]=n>>18|240,t[i++]=n>>12&63|128):t[i++]=n>>12|224,t[i++]=n>>6&63|128),t[i++]=63&n|128);return i-s}},50536:function(e,t,i){"use strict";function n(){t.util._configure(),t.Writer._configure(t.BufferWriter),t.Reader._configure(t.BufferReader)}t.build="minimal",t.Writer=i(60123),t.BufferWriter=i(76673),t.Reader=i(39799),t.BufferReader=i(87038),t.util=i(34165),t.rpc=i(34963),t.roots=i(29009),t.configure=n,n()},39799:function(e,t,i){"use strict";e.exports=l;var n,r,s=i(34165),a=s.LongBits,o=s.utf8;function d(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function l(e){this.buf=e,this.pos=0,this.len=e.length}var c="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new l(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new l(e);throw Error("illegal buffer")},u=function(){return s.Buffer?function(e){return(l.create=function(e){return s.Buffer.isBuffer(e)?new r(e):c(e)})(e)}:c};function h(){var e=new a(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw d(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw d(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function f(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function m(){if(this.pos+8>this.len)throw d(this,8);return new a(f(this.buf,this.pos+=4),f(this.buf,this.pos+=4))}l.create=u(),l.prototype._slice=s.Array.prototype.subarray||s.Array.prototype.slice,l.prototype.uint32=(n=4294967295,function(){if(this.len-this.pos<5){if(this.pos>=this.len)throw d(this);if(this.buf[this.pos]>=128)return function(e){for(var t=0,i=0;i<4&&!(e.pos>=e.len);++i){var n=e.buf[e.pos++];if(t=(t|(127&n)<<7*i)>>>0,n<128)return t}throw d(e)}(this)}if(n=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128||(n=(n|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)||(n=(n|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)||(n=(n|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)||(n=(n|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128))return n;if((this.pos+=5)>this.len)throw this.pos=this.len,d(this,10);return n}),l.prototype.int32=function(){return 0|this.uint32()},l.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},l.prototype.bool=function(){return 0!==this.uint32()},l.prototype.fixed32=function(){if(this.pos+4>this.len)throw d(this,4);return f(this.buf,this.pos+=4)},l.prototype.sfixed32=function(){if(this.pos+4>this.len)throw d(this,4);return 0|f(this.buf,this.pos+=4)},l.prototype.float=function(){if(this.pos+4>this.len)throw d(this,4);var e=s.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},l.prototype.double=function(){if(this.pos+8>this.len)throw d(this,4);var e=s.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},l.prototype.bytes=function(){var e=this.uint32(),t=this.pos,i=this.pos+e;if(i>this.len)throw d(this,e);if(this.pos+=e,Array.isArray(this.buf))return this.buf.slice(t,i);if(t===i){var n=s.Buffer;return n?n.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,i)},l.prototype.string=function(){var e=this.bytes();return o.read(e,0,e.length)},l.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw d(this,e);this.pos+=e}else do if(this.pos>=this.len)throw d(this);while(128&this.buf[this.pos++]);return this},l.recursionLimit=s.recursionLimit,l.prototype.skipType=function(e,t){if(void 0===t&&(t=0),t>l.recursionLimit)throw Error("maximum nesting depth exceeded");switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e,t+1);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},l._configure=function(e){r=e,l.create=u(),r._configure();var t=s.Long?"toLong":"toNumber";s.merge(l.prototype,{int64:function(){return h.call(this)[t](!1)},uint64:function(){return h.call(this)[t](!0)},sint64:function(){return h.call(this).zzDecode()[t](!1)},fixed64:function(){return m.call(this)[t](!0)},sfixed64:function(){return m.call(this)[t](!1)}})}},87038:function(e,t,i){"use strict";e.exports=s;var n=i(39799);(s.prototype=Object.create(n.prototype)).constructor=s;var r=i(34165);function s(e){n.call(this,e)}s._configure=function(){r.Buffer&&(s.prototype._slice=r.Buffer.prototype.slice)},s.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))},s._configure()},29009:function(e){"use strict";e.exports=Object.create(null)},34963:function(e,t,i){"use strict";t.Service=i(29548)},29548:function(e,t,i){"use strict";e.exports=r;var n=i(34165);function r(e,t,i){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");n.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=!!t,this.responseDelimited=!!i}(r.prototype=Object.create(n.EventEmitter.prototype)).constructor=r,r.prototype.rpcCall=function e(t,i,r,s,a){if(!s)throw TypeError("request must be specified");var o=this;
33if(!a)return n.asPromise(e,o,t,i,r,s);if(!o.rpcImpl){setTimeout(function(){a(Error("already ended"))},0);return}try{return o.rpcImpl(t,i[o.requestDelimited?"encodeDelimited":"encode"](s).finish(),function(e,i){if(e)return o.emit("error",e,t),a(e);if(null===i){o.end(!0);return}if(!(i instanceof r))try{i=r[o.responseDelimited?"decodeDelimited":"decode"](i)}catch(e){return o.emit("error",e,t),a(e)}return o.emit("data",i,t),a(null,i)})}catch(e){o.emit("error",e,t),setTimeout(function(){a(e)},0);return}},r.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},61697:function(e,t,i){"use strict";e.exports=r;var n=i(34165);function r(e,t){this.lo=e>>>0,this.hi=t>>>0}var s=r.zero=new r(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var a=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(e){if(0===e)return s;var t=e<0;t&&(e=-e);var i=e>>>0,n=(e-i)/4294967296>>>0;return t&&(n=~n>>>0,i=~i>>>0,++i>4294967295&&(i=0,++n>4294967295&&(n=0))),new r(i,n)},r.from=function(e){if("number"==typeof e)return r.fromNumber(e);if(n.isString(e)){if(!n.Long)return r.fromNumber(parseInt(e,10));e=n.Long.fromString(e)}return e.low||e.high?new r(e.low>>>0,e.high>>>0):s},r.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=~this.lo+1>>>0,i=~this.hi>>>0;return t||(i=i+1>>>0),-(t+4294967296*i)}return this.lo+4294967296*this.hi},r.prototype.toLong=function(e){return n.Long?new n.Long(0|this.lo,0|this.hi,!!e):{low:0|this.lo,high:0|this.hi,unsigned:!!e}};var o=String.prototype.charCodeAt;r.fromHash=function(e){return e===a?s:new r((o.call(e,0)|o.call(e,1)<<8|o.call(e,2)<<16|o.call(e,3)<<24)>>>0,(o.call(e,4)|o.call(e,5)<<8|o.call(e,6)<<16|o.call(e,7)<<24)>>>0)},r.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},r.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},r.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},r.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:i<128?9:10}},34165:function(e,t,i){"use strict";function n(e){return"__proto__"===e||"prototype"===e||"constructor"===e}function r(e){var t="boolean"==typeof arguments[arguments.length-1],i=t?arguments.length-1:arguments.length;t=t&&arguments[arguments.length-1];for(var r=1;r<i;++r){var s=arguments[r];if(s)for(var a=Object.keys(s),o=0;o<a.length;++o)n(a[o])||void 0!==e[a[o]]&&t||(e[a[o]]=s[a[o]])}return e}function s(e){function t(e,i){if(!(this instanceof t))return new t(e,i);Object.defineProperty(this,"message",{get:function(){return e}}),Error.captureStackTrace?Error.captureStackTrace(this,t):Object.defineProperty(this,"stack",{value:Error().stack||""}),i&&r(this,i)}return t.prototype=Object.create(Error.prototype,{constructor:{value:t,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return e},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),t}t.asPromise=i(46781),t.base64=i(87026),t.EventEmitter=i(8421),t.float=i(5298),t.utf8=i(78574),t.pool=i(90804),t.LongBits=i(61697),t.isUnsafeProperty=n,t.isNode=!!(void 0!==i.g&&i.g&&i.g.process&&i.g.process.versions&&i.g.process.versions.node),t.global=t.isNode&&i.g||"undefined"!=typeof window&&window||"undefined"!=typeof self&&self||this,t.emptyArray=Object.freeze?Object.freeze([]):[],t.emptyObject=Object.freeze?Object.freeze({}):{},t.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isObject=function(e){return e&&"object"==typeof e},t.isset=t.isSet=function(e,t){var i=e[t];return!!(null!=i&&Object.hasOwnProperty.call(e,t))&&("object"!=typeof i||(Array.isArray(i)?i.length:Object.keys(i).length)>0)},t.Buffer=function(){try{var e=t.global.Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),t._Buffer_from=null,t._Buffer_allocUnsafe=null,t.newBuffer=function(e){return"number"==typeof e?t.Buffer?t._Buffer_allocUnsafe(e):new t.Array(e):t.Buffer?t._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},t.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,t.Long=t.global.dcodeIO&&t.global.dcodeIO.Long||t.global.Long||function(){try{var e=i(44);return e&&e.isLong?e:null}catch(e){return null}}(),t.key2Re=/^true|false|0|1$/,t.key32Re=/^-?(?:0|[1-9][0-9]*)$/,t.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,t.longToHash=function(e){return e?t.LongBits.from(e).toHash():t.LongBits.zeroHash},t.longFromHash=function(e,i){var n=t.LongBits.fromHash(e);return t.Long?t.Long.fromBits(n.lo,n.hi,i):n.toNumber(!!i)},t.merge=r,t.nestingLimit=32,t.recursionLimit=100,t.makeProp=function(e,t){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,writable:!0})},t.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},t.newError=s,t.ProtocolError=s("ProtocolError"),t.oneOfGetter=function(e){for(var t={},i=0;i<e.length;++i)t[e[i]]=1;return function(){for(var e=Object.keys(this),i=e.length-1;i>-1;--i)if(1===t[e[i]]&&void 0!==this[e[i]]&&null!==this[e[i]])return e[i]}},t.oneOfSetter=function(e){return function(t){for(var i=0;i<e.length;++i)e[i]!==t&&delete this[e[i]]}},t.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},t._configure=function(){var e=t.Buffer;if(!e){t._Buffer_from=t._Buffer_allocUnsafe=null;return}t._Buffer_from=e.from!==Uint8Array.from&&e.from||function(t,i){return new e(t,i)},t._Buffer_allocUnsafe=e.allocUnsafe||function(t){return new e(t)}}},60123:function(e,t,i){"use strict";e.exports=u;var n,r=i(34165),s=r.LongBits,a=r.base64,o=r.utf8;function d(e,t,i){this.fn=e,this.len=t,this.next=void 0,this.val=i}function l(){}function c(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function u(){this.len=0,this.head=new d(l,0,0),this.tail=this.head,this.states=null}var h=function(){return r.Buffer?function(){return(u.create=function(){return new n})()}:function(){return new u}};function f(e,t,i){t[i]=255&e}function m(e,t){this.len=e,this.next=void 0,this.val=t}function p(e,t,i){for(var n=e.lo,r=e.hi;r;)t[i++]=127&n|128,n=(n>>>7|r<<25)>>>0,r>>>=7;for(;n>127;)t[i++]=127&n|128,n>>>=7;t[i++]=n}function g(e,t,i){t[i]=255&e,t[i+1]=e>>>8&255,t[i+2]=e>>>16&255,t[i+3]=e>>>24}u.create=h(),u.alloc=function(e){return new r.Array(e)},r.Array!==Array&&(u.alloc=r.pool(u.alloc,r.Array.prototype.subarray)),u.prototype._push=function(e,t,i){return this.tail=this.tail.next=new d(e,t,i),this.len+=t,this},m.prototype=Object.create(d.prototype),m.prototype.fn=function(e,t,i){for(;e>127;)t[i++]=127&e|128,e>>>=7;t[i]=e},u.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new m((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},u.prototype.int32=function(e){return(e|=0)<0?this._push(p,10,s.fromNumber(e)):this.uint32(e)},u.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},u.prototype.uint64=function(e){var t=s.from(e);return this._push(p,t.length(),t)},u.prototype.int64=u.prototype.uint64,u.prototype.sint64=function(e){var t=s.from(e).zzEncode();return this._push(p,t.length(),t)},u.prototype.bool=function(e){return this._push(f,1,e?1:0)},u.prototype.fixed32=function(e){return this._push(g,4,e>>>0)},u.prototype.sfixed32=u.prototype.fixed32,u.prototype.fixed64=function(e){var t=s.from(e);return this._push(g,4,t.lo)._push(g,4,t.hi)},u.prototype.sfixed64=u.prototype.fixed64,u.prototype.float=function(e){return this._push(r.float.writeFloatLE,4,e)},u.prototype.double=function(e){return this._push(r.float.writeDoubleLE,8,e)};var v=r.Array.prototype.set?function(e,t,i){t.set(e,i)}:function(e,t,i){for(var n=0;n<e.length;++n)t[i+n]=e[n]};u.prototype.bytes=function(e){var t=e.length>>>0;if(!t)return this._push(f,1,0);if(r.isString(e)){var i=u.alloc(t=a.length(e));a.decode(e,i,0),e=i}return this.uint32(t)._push(v,t,e)},u.prototype.string=function(e){var t=o.length(e);return t?this.uint32(t)._push(o.write,t,e):this._push(f,1,0)},u.prototype.fork=function(){return this.states=new c(this),this.head=this.tail=new d(l,0,0),this.len=0,this},u.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new d(l,0,0),this.len=0),this},u.prototype.ldelim=function(){var e=this.head,t=this.tail,i=this.len;return this.reset().uint32(i),i&&(this.tail.next=e.next,this.tail=t,this.len+=i),this},u.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),i=0;e;)e.fn(e.val,t,i),i+=e.len,e=e.next;return t},u._configure=function(e){n=e,u.create=h(),n._configure()}},76673:function(e,t,i){"use strict";e.exports=s;var n=i(60123);(s.prototype=Object.create(n.prototype)).constructor=s;var r=i(34165);function s(){n.call(this)}function a(e,t,i){e.length<40?r.utf8.write(e,t,i):t.utf8Write?t.utf8Write(e,i):t.write(e,i)}s._configure=function(){s.alloc=r._Buffer_allocUnsafe,s.writeBytesBuffer=r.Buffer&&r.Buffer.prototype instanceof Uint8Array&&"set"===r.Buffer.prototype.set.name?function(e,t,i){t.set(e,i)}:function(e,t,i){if(e.copy)e.copy(t,i,0,e.length);else for(var n=0;n<e.length;)t[i++]=e[n++]}},s.prototype.bytes=function(e){r.isString(e)&&(e=r._Buffer_from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this._push(s.writeBytesBuffer,t,e),this},s.prototype.string=function(e){var t=r.Buffer.byteLength(e);return this.uint32(t),t&&this._push(a,t,e),this},s._configure()},66866:function(e,t){"use strict";var i=60103,n=60106,r=60107,s=60108,a=60114,o=60109,d=60110,l=60112,c=60113,u=60120,h=60115,f=60116,m=60121,p=60122,g=60117,v=60129,b=60131;if("function"==typeof Symbol&&Symbol.for){var S=Symbol.for;i=S("react.element"),n=S("react.portal"),r=S("react.fragment"),s=S("react.strict_mode"),a=S("react.profiler"),o=S("react.provider"),d=S("react.context"),l=S("react.forward_ref"),c=S("react.suspense"),u=S("react.suspense_list"),h=S("react.memo"),f=S("react.lazy"),m=S("react.block"),p=S("react.server.block"),g=S("react.fundamental"),v=S("react.debug_trace_mode"),b=S("react.legacy_hidden")}t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===r||e===a||e===v||e===s||e===c||e===u||e===b||"object"==typeof e&&null!==e&&(e.$$typeof===f||e.$$typeof===h||e.$$typeof===o||e.$$typeof===d||e.$$typeof===l||e.$$typeof===g||e.$$typeof===m||e[0]===p)},t.typeOf=function(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case i:switch(e=e.type){case r:case a:case s:case c:case u:return e;default:switch(e=e&&e.$$typeof){case d:case l:case f:case h:case o:return e;default:return t}}case n:return t}}}},48570:function(e,t,i){"use strict";e.exports=i(66866)},62515:function(e,t,i){"use strict";i.d(t,{NB:function(){return z}});
33var n=i(2784),r=i(28316),s=function(e,t){return(s=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(e,t)},a=function(){return(a=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++)for(var r in t=arguments[i])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==i.g?i.g:"undefined"!=typeof self?self:{},d=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},l="object"==typeof o&&o&&o.Object===Object&&o,c="object"==typeof self&&self&&self.Object===Object&&self,u=l||c||Function("return this")(),h=/\s/,f=function(e){for(var t=e.length;t--&&h.test(e.charAt(t)););return t},m=/^\s+/,p=u.Symbol,g=Object.prototype,v=g.hasOwnProperty,b=g.toString,S=p?p.toStringTag:void 0,y=Object.prototype.toString,C=function(e){var t=v.call(e,S),i=e[S];try{e[S]=void 0;var n=!0}catch(e){}var r=b.call(e);return n&&(t?e[S]=i:delete e[S]),r},w=p?p.toStringTag:void 0,T=function(e){var t;return"symbol"==typeof e||null!=e&&"object"==typeof e&&"[object Symbol]"==(null==(t=e)?void 0===t?"[object Undefined]":"[object Null]":w&&w in Object(t)?C(t):y.call(t))},M=0/0,E=/^[-+]0x[0-9a-f]+$/i,A=/^0b[01]+$/i,k=/^0o[0-7]+$/i,_=parseInt,P=function(){return u.Date.now()},R=function(e){if("number"==typeof e)return e;if(T(e))return M;if(d(e)){var t,i="function"==typeof e.valueOf?e.valueOf():e;e=d(i)?i+"":i}if("string"!=typeof e)return 0===e?e:+e;e=(t=e)?t.slice(0,f(t)+1).replace(m,""):t;var n=A.test(e);return n||k.test(e)?_(e.slice(2),n?2:8):E.test(e)?M:+e},I=Math.max,O=Math.min,x=function(e,t,i){var n,r,s,a,o,l,c=0,u=!1,h=!1,f=!0;if("function"!=typeof e)throw TypeError("Expected a function");function m(t){var i=n,s=r;return n=r=void 0,c=t,a=e.apply(s,i)}function p(e){var i=e-l,n=e-c;return void 0===l||i>=t||i<0||h&&n>=s}function g(){var e,i,n,r=P();if(p(r))return v(r);o=setTimeout(g,(e=r-l,i=r-c,n=t-e,h?O(n,s-i):n))}function v(e){return(o=void 0,f&&n)?m(e):(n=r=void 0,a)}function b(){var e,i=P(),s=p(i);if(n=arguments,r=this,l=i,s){if(void 0===o)return c=e=l,o=setTimeout(g,t),u?m(e):a;if(h)return clearTimeout(o),o=setTimeout(g,t),m(l)}return void 0===o&&(o=setTimeout(g,t)),a}return t=R(t)||0,d(i)&&(u=!!i.leading,s=(h="maxWait"in i)?I(R(i.maxWait)||0,t):s,f="trailing"in i?!!i.trailing:f),b.cancel=function(){void 0!==o&&clearTimeout(o),c=0,n=l=r=o=void 0},b.flush=function(){return void 0===o?a:v(P())},b},D=function(e,t,i){var n=!0,r=!0;if("function"!=typeof e)throw TypeError("Expected a function");return d(i)&&(n="leading"in i?!!i.leading:n,r="trailing"in i?!!i.trailing:r),x(e,t,{leading:n,maxWait:t,trailing:r})},B=function(e,t,i,n){switch(t){case"debounce":return x(e,i,n);case"throttle":return D(e,i,n);default:return e}},N=function(e){return"function"==typeof e},L=function(){return"undefined"==typeof window},F=function(e){return e instanceof Element||e instanceof HTMLDocument},V=function(e,t,i,n){return function(r){var s=r.width,a=r.height;t(function(t){return(t.width!==s||t.height!==a)&&(t.width!==s||n)&&(t.height!==a||i)?(e&&N(e)&&e(s,a),{width:s,height:a}):t})}};!function(e){function t(t){var i=e.call(this,t)||this;i.cancelHandler=function(){i.resizeHandler&&i.resizeHandler.cancel&&(i.resizeHandler.cancel(),i.resizeHandler=null)},i.attachObserver=function(){var e=i.props,t=e.targetRef,n=e.observerOptions;if(!L()){t&&t.current&&(i.targetRef.current=t.current);var r=i.getElement();r&&(!i.observableElement||i.observableElement!==r)&&(i.observableElement=r,i.resizeObserver.observe(r,n))}},i.getElement=function(){var e=i.props,t=e.querySelector,n=e.targetDomEl;if(L())return null;if(t)return document.querySelector(t);if(n&&F(n))return n;if(i.targetRef&&F(i.targetRef.current))return i.targetRef.current;var s=(0,r.findDOMNode)(i);if(!s)return null;switch(i.getRenderType()){case"renderProp":case"childFunction":case"child":case"childArray":return s;default:return s.parentElement}},i.createResizeHandler=function(e){var t=i.props,n=t.handleWidth,r=void 0===n||n,s=t.handleHeight,a=void 0===s||s,o=t.onResize;if(r||a){var d=V(o,i.setState.bind(i),r,a);e.forEach(function(e){var t=e&&e.contentRect||{},n=t.width,r=t.height;i.skipOnMount||L()||d({width:n,height:r}),i.skipOnMount=!1})}},i.getRenderType=function(){var e=i.props,t=e.render,r=e.children;return N(t)?"renderProp":N(r)?"childFunction":(0,n.isValidElement)(r)?"child":Array.isArray(r)?"childArray":"parent"};var s=t.skipOnMount,a=t.refreshMode,o=t.refreshRate,d=t.refreshOptions;return i.state={width:void 0,height:void 0},i.skipOnMount=s,i.targetRef=(0,n.createRef)(),i.observableElement=null,L()||(i.resizeHandler=B(i.createResizeHandler,a,void 0===o?1e3:o,d),i.resizeObserver=new window.ResizeObserver(i.resizeHandler)),i}!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}(t,e),t.prototype.componentDidMount=function(){this.attachObserver()},t.prototype.componentDidUpdate=function(){this.attachObserver()},t.prototype.componentWillUnmount=function(){L()||(this.observableElement=null,this.resizeObserver.disconnect(),this.cancelHandler())},t.prototype.render=function(){var e,t=this.props,i=t.render,r=t.children,s=t.nodeType,a=this.state,o={width:a.width,height:a.height,targetRef
33:this.targetRef};switch(this.getRenderType()){case"renderProp":return i&&i(o);case"childFunction":return(e=r)(o);case"child":if((e=r).type&&"string"==typeof e.type){o.targetRef;var d=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)0>t.indexOf(n[r])&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(i[n[r]]=e[n[r]]);return i}(o,["targetRef"]);return(0,n.cloneElement)(e,d)}return(0,n.cloneElement)(e,o);case"childArray":return(e=r).map(function(e){return!!e&&(0,n.cloneElement)(e,o)});default:return n.createElement(void 0===s?"div":s,null)}}}(n.PureComponent);var U=L()?n.useEffect:n.useLayoutEffect;function z(e){void 0===e&&(e={});var t=e.skipOnMount,i=e.refreshMode,r=e.refreshRate,s=void 0===r?1e3:r,o=e.refreshOptions,d=e.handleWidth,l=void 0===d||d,c=e.handleHeight,u=void 0===c||c,h=e.targetRef,f=e.observerOptions,m=e.onResize,p=(0,n.useRef)(void 0!==t&&t),g=(0,n.useRef)(null),v=null!=h?h:g,b=(0,n.useRef)(),S=(0,n.useState)({width:void 0,height:void 0}),y=S[0],C=S[1];return U(function(){if(!L()){var e=V(m,C,l,u);b.current=B(function(t){(l||u)&&t.forEach(function(t){var i=t&&t.contentRect||{},n=i.width,r=i.height;p.current||L()||e({width:n,height:r}),p.current=!1})},i,s,o);var t=new window.ResizeObserver(b.current);return v.current&&t.observe(v.current,f),function(){t.disconnect();var e=b.current;e&&e.cancel&&e.cancel()}}},[i,s,o,l,u,m,f,v.current]),a({ref:v},y)}},88665:function(e){e.exports=function(e,t,i,n){var r=i?i.call(n,e,t):void 0;if(void 0!==r)return!!r;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var s=Object.keys(e),a=Object.keys(t);if(s.length!==a.length)return!1;for(var o=Object.prototype.hasOwnProperty.bind(t),d=0;d<s.length;d++){var l=s[d];if(!o(l))return!1;var c=e[l],u=t[l];if(!1===(r=i?i.call(n,c,u,l):void 0)||void 0===r&&c!==u)return!1}return!0}},58694:function(e,t,i){"use strict";i.d(t,{f6:function(){return ek},vJ:function(){return eI},iv:function(){return eb},ZP:function(){return ex},F4:function(){return eO}});var n,r=i(48570),s=i(2784),a=i(88665),o=i.n(a),d=function(e){function t(e,t,n){var r=t.trim().split(m);t=r;var s=r.length,a=e.length;switch(a){case 0:case 1:var o=0;for(e=0===a?"":e[0]+" ";o<s;++o)t[o]=i(e,t[o],n).trim();break;default:var d=o=0;for(t=[];o<s;++o)for(var l=0;l<a;++l)t[d++]=i(e[l]+" ",r[o],n).trim()}return t}function i(e,t,i){var n=t.charCodeAt(0);switch(33>n&&(n=(t=t.trim()).charCodeAt(0)),n){case 38:return t.replace(p,"$1"+e.trim());case 58:return e.trim()+t.replace(p,"$1"+e.trim());default:if(0<1*i&&0<t.indexOf("\f"))return t.replace(p,(58===e.charCodeAt(0)?"":"$1")+e.trim())}return e+t}function n(e,t,i,s){var a=e+";",o=2*t+3*i+4*s;if(944===o){e=a.indexOf(":",9)+1;var d=a.substring(e,a.length-1).trim();return d=a.substring(0,e).trim()+d+";",1===P||2===P&&r(d,1)?"-webkit-"+d+d:d}if(0===P||2===P&&!r(a,1))return a;switch(o){case 1015:return 97===a.charCodeAt(10)?"-webkit-"+a+a:a;case 951:return 116===a.charCodeAt(3)?"-webkit-"+a+a:a;case 963:return 110===a.charCodeAt(5)?"-webkit-"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return"-webkit-"+a+a;case 978:return"-webkit-"+a+"-moz-"+a+a;case 1019:case 983:return"-webkit-"+a+"-moz-"+a+"-ms-"+a+a;case 883:if(45===a.charCodeAt(8))return"-webkit-"+a+a;if(0<a.indexOf("image-set(",11))return a.replace(E,"$1-webkit-$2")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return"-webkit-box-"+a.replace("-grow","")+"-webkit-"+a+"-ms-"+a.replace("grow","positive")+a;case 115:return"-webkit-"+a+"-ms-"+a.replace("shrink","negative")+a;case 98:return"-webkit-"+a+"-ms-"+a.replace("basis","preferred-size")+a}return"-webkit-"+a+"-ms-"+a+a;case 964:return"-webkit-"+a+"-ms-flex-"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return"-webkit-box-pack"+(d=a.substring(a.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+a+"-ms-flex-pack"+d+a;case 1005:return h.test(a)?a.replace(u,":-webkit-")+a.replace(u,":-moz-")+a:a;case 1e3:switch(t=(d=a.substring(13).trim()).indexOf("-")+1,d.charCodeAt(0)+d.charCo
vendor: 2,274 bytes, line 33
33deAt(t)){case 226:d=a.replace(S,"tb");break;case 232:d=a.replace(S,"tb-rl");break;case 220:d=a.replace(S,"lr");break;default:return a}return"-webkit-"+a+"-ms-"+d+a;case 1017:if(-1===a.indexOf("sticky",9))break;case 975:switch(t=(a=e).length-10,o=(d=(33===a.charCodeAt(t)?a.substring(0,t):a).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|d.charCodeAt(7))){case 203:if(111>d.charCodeAt(8))break;case 115:a=a.replace(d,"-webkit-"+d)+";"+a;break;case 207:case 102:a=a.replace(d,"-webkit-"+(102<o?"inline-":"")+"box")+";"+a.replace(d,"-webkit-"+d)+";"+a.replace(d,"-ms-"+d+"box")+";"+a}return a+";";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return d=a.replace("-items",""),"-webkit-"+a+"-webkit-box-"+d+"-ms-flex-"+d+a;case 115:return"-webkit-"+a+"-ms-flex-item-"+a.replace(w,"")+a;default:return"-webkit-"+a+"-ms-flex-line-pack"+a.replace("align-content","").replace(w,"")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===M.test(e))return 115===(d=e.substring(e.indexOf(":")+1)).charCodeAt(0)?n(e.replace("stretch","fill-available"),t,i,s).replace(":fill-available",":stretch"):a.replace(d,"-webkit-"+d)+a.replace(d,"-moz-"+d.replace("fill-",""))+a;break;case 962:if(a="-webkit-"+a+(102===a.charCodeAt(5)?"-ms-"+a:"")+a,211===i+s&&105===a.charCodeAt(13)&&0<a.indexOf("transform",10))return a.substring(0,a.indexOf(";",27)+1).replace(f,"$1-webkit-$2")+a}return a}function r(e,t){var i=e.indexOf(1===t?":":"{"),n=e.substring(0,3!==t?i:10);return i=e.substring(i+1,e.length-1),x(2!==t?n:n.replace(T,"$1"),i,t)}function s(e,t){var i=n(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return i!==t+";"?i.replace(C," or ($1)").substring(4):"("+t+")"}function a(e,t,i,n,r,s,a,o,l,c){for(var u,h=0,f=t;h<O;++h)switch(u=I[h].call(d,e,f,i,n,r,s,a,o,l,c)){case void 0:case!1:case!0:case null:break;default:f=u}if(f!==t)return f}function o(e){return void 0!==(e=e.prefix)&&(x=null,e?"function"!=typeof e?P=1:(P=2,x=e):P=0),o}function d(e,i){var o=e;if(33>o.charCodeAt(0)&&(o=o.trim()),o=[o],0<O){var d=a(-1,i,o,o,k,A,0,0,0,0);void 0!==d&&"string"==typeof d&&(i=d)}var u=function e(i,o,d,u,h){for(var f,m,p,S,C,w=0,T=0,M=0,E=0,I=0,x=0,B=p=f=0,N=0,L=0,F=0,V=0,U=d.length,z=U-1,$="",H="",j="",W="";N<U;
vendor: 10,326 bytes, line 33
33){if(m=d.charCodeAt(N),N===z&&0!==T+E+M+w&&(0!==T&&(m=47===T?10:47),E=M=w=0,U++,z++),0===T+E+M+w){if(N===z&&(0<L&&($=$.replace(c,"")),0<$.trim().length)){switch(m){case 32:case 9:case 59:case 13:case 10:break;default:$+=d.charAt(N)}m=59}switch(m){case 123:for(f=($=$.trim()).charCodeAt(0),p=1,V=++N;N<U;){switch(m=d.charCodeAt(N)){case 123:p++;break;case 125:p--;break;case 47:switch(m=d.charCodeAt(N+1)){case 42:case 47:i:{for(B=N+1;B<z;++B)switch(d.charCodeAt(B)){case 47:if(42===m&&42===d.charCodeAt(B-1)&&N+2!==B){N=B+1;break i}break;case 10:if(47===m){N=B+1;break i}}N=B}}break;case 91:m++;case 40:m++;case 34:case 39:for(;N++<z&&d.charCodeAt(N)!==m;);}if(0===p)break;N++}if(p=d.substring(V,N),0===f&&(f=($=$.replace(l,"").trim()).charCodeAt(0)),64===f){switch(0<L&&($=$.replace(c,"")),m=$.charCodeAt(1)){case 100:case 109:case 115:case 45:L=o;break;default:L=R}if(V=(p=e(o,L,p,m,h+1)).length,0<O&&(C=a(3,p,L=t(R,$,F),o,k,A,V,m,h,u),$=L.join(""),void 0!==C&&0===(V=(p=C.trim()).length)&&(m=0,p="")),0<V)switch(m){case 115:$=$.replace(y,s);case 100:case 109:case 45:p=$+"{"+p+"}";break;case 107:p=($=$.replace(g,"$1 $2"))+"{"+p+"}",p=1===P||2===P&&r("@"+p,3)?"@-webkit-"+p+"@"+p:"@"+p;break;default:p=$+p,112===u&&(H+=p,p="")}else p=""}else p=e(o,t(o,$,F),p,u,h+1);j+=p,p=F=L=B=f=0,$="",m=d.charCodeAt(++N);break;case 125:case 59:if(1<(V=($=(0<L?$.replace(c,""):$).trim()).length))switch(0===B&&(45===(f=$.charCodeAt(0))||96<f&&123>f)&&(V=($=$.replace(" ",":")).length),0<O&&void 0!==(C=a(1,$,o,i,k,A,H.length,u,h,u))&&0===(V=($=C.trim()).length)&&($="\0\0"),f=$.charCodeAt(0),m=$.charCodeAt(1),f){case 0:break;case 64:if(105===m||99===m){W+=$+d.charAt(N);break}default:58!==$.charCodeAt(V-1)&&(H+=n($,f,m,$.charCodeAt(2)))}F=L=B=f=0,$="",m=d.charCodeAt(++N)}}switch(m){case 13:case 10:47===T?T=0:0===1+f&&107!==u&&0<$.length&&(L=1,$+="\0"),0<O*D&&a(0,$,o,i,k,A,H.length,u,h,u),A=1,k++;break;case 59:case 125:if(0===T+E+M+w){A++;break}default:switch(A++,S=d.charAt(N),m){case 9:case 32:if(0===E+w+T)switch(I){case 44:case 58:case 9:case 32:S="";break;default:32!==m&&(S=" ")}break;case 0:S="\\0";break;case 12:S="\\f";break;case 11:S="\\v";break;case 38:0===E+T+w&&(L=F=1,S="\f"+S);break;case 108:if(0===E+T+w+_&&0<B)switch(N-B){case 2:112===I&&58===d.charCodeAt(N-3)&&(_=I);case 8:111===x&&(_=x)}break;case 58:0===E+T+w&&(B=N);break;case 44:0===T+M+E+w&&(L=1,S+="\r");break;case 34:case 39:0===T&&(E=E===m?0:0===E?m:E);break;case 91:0===E+T+M&&w++;break;case 93:0===E+T+M&&w--;break;case 41:0===E+T+w&&M--;break;case 40:0===E+T+w&&(0===f&&(2*I+3*x==533||(f=1)),M++);break;case 64:0===T+M+E+w+B+p&&(p=1);break;case 42:case 47:if(!(0<E+w+M))switch(T){case 0:switch(2*m+3*d.charCodeAt(N+1)){case 235:T=47;break;case 220:V=N,T=42}break;case 42:47===m&&42===I&&V+2!==N&&(33===d.charCodeAt(V+2)&&(H+=d.substring(V,N+1)),S="",T=0)}}0===T&&($+=S)}x=I,I=m,N++}if(0<(V=H.length)){if(L=o,0<O&&void 0!==(C=a(2,H,L,i,k,A,V,u,h,u))&&0===(H=C).length)return W+H+j;if(H=L.join(",")+"{"+H+"}",0!=P*_){switch(2!==P||r(H,2)||(_=0),_){case 111:H=H.replace(b,":-moz-$1")+H;break;case 112:H=H.replace(v,"::-webkit-input-$1")+H.replace(v,"::-moz-$1")+H.replace(v,":-ms-input-$1")+H}_=0}}return W+H+j}(R,o,i,0,0);return 0<O&&void 0!==(d=a(-2,u,o,o,k,A,u.length,0,0,0))&&(u=d),_=0,A=k=1,u}var l=/^\0+/g,c=/[\0\r\f]/g,u=/: */g,h=/zoo|gra/,f=/([,: ])(transform)/g,m=/,\r+?/g,p=/([\t\r\n ])*\f?&/g,g=/@(k\w+)\s*(\S*)\s*/,v=/::(place)/g,b=/:(read-only)/g,S=/[svh]\w+-[tblr]{2}/,y=/\(\s*(.*)\s*\)/g,C=/([\s\S]*?);/g,w=/-self|flex-/g,T=/[^]*?(:[rp][el]a[\w-]+)[^]*/,M=/stretch|:\s*\w+\-(?:conte|avail)/,E=/([^-])(image-set\()/,A=1,k=1,_=0,P=1,R=[],I=[],O=0,x=null,D=0;return d.use=function e(t){switch(t){case void 0:case null:O=I.length=0;break;default:if("function"==typeof t)I[O++]=t;else if("object"==typeof t)for(var i=0,n=t.length;i<n;++i)e(t[i]);else D=0|!!t}return e},d.set=o,void 0!==e&&o(e),d},l={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},c=i(86015),u=i(73463),h=i.n(u),f=i(34406);function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}var p=function(e,t){for(var i=[e[0]],n=0,r=t.length;n<r;n+=1)i.push(t[n],e[n+1]);return i},g=function(e){return null!==e&&"object"==typeof e&&"[object Object]"===(e.toString?e.toString():Object.prototype.toString.call(e))&&!(0,r.typeOf)(e)},v=Object.freeze([]),b=Object.freeze({});function S(e){return"function"==typeof e}function y(e){return e.displayName||e.name||"Component"}function C(e){return e&&"string"==typeof e.styledComponentId}var w=void 0!==f&&(f.env.REACT_APP_SC_ATTR||f.env.SC_ATTR)||"data-styled",T="undefined"!=typeof window&&"HTMLElement"in window,M=!!("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:void 0!==f&&void 0!==f.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==f.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==f.env.REACT_APP_SC_DISABLE_SPEEDY&&f.env.REACT_APP_SC_DISABLE_SPEEDY:void 0!==f&&void 0!==f.env.SC_DISABLE_SPEEDY&&""!==f.env.SC_DISABLE_SPEEDY&&"false"!==f.env.SC_DISABLE_SPEEDY&&f.env.SC_DISABLE_SPEEDY),E={};function A(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];throw Error("An error occurred. See https://git.io/JUIaE#"+e+" for more information."+(i.length>0?" Args: "+i.join(", "):""))}var k=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,i=0;i<e;i++)t+=this.groupSizes[i];return t},t.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var i=this.groupSizes,n=i.length,r=n;e>=r;)(r<<=1)<0&&A(16,""+e);this.groupSizes=new Uint32Array(r),this.groupSizes.set(i),this.length=r;for(var s=n;s<r;s++)this.groupSizes[s]=0}for(var a=this.indexOfGroup(e+1),o=0,d=t.length;o<d;o++)this.tag.insertRule(a,t[o])&&(this.groupSizes[e]++,a++)},t.clearGroup=function(e){if(e<this.length){var t=this.groupSizes[e],i=this.indexOfGroup(e),n=i+t;this.groupSizes[e]=0;for(var r=i;r<n;r++)this.tag.deleteRule(i)}},t.getGroup=function(e){var t="";if(e>=this.length||0===this.groupSizes[e])return t;for(var i=this.groupSizes[e],n=this.indexOfGroup(e),r=n+i,s=n;s<r;s++)t+=this.tag.getRule(s)+"/*!sc*/\n";return t},e}(),_=new Map,P=new Map,R=1,I=function(e){if(_.has(e))return _.get(e);for(;P.has(R);)R++;var t=R++;return _.set(e,t),P.set(t,e),t},O=function(e,t){t>=R&&(R=t+1),_.set(e,t),P.set(t,e)},x="style["+w+'][data-styled-version="5.3.6"]',D=RegExp("^"+w+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),B=function(e,t,i){for(var n,r=i.split(","),s=0,a=r.length;s<a;s++)(n=r[s])&&e.registerName(t,n)},N=function(e,t){for(var i=(t.textContent||"").split("/*!sc*/\n"),n=[],r=0,s=i.length;r<s;r++){var a=i[r].trim();if(a){var o=a.match(D);if(o){var d=0|parseInt(o[1],10),l=o[2];0!==d&&(O(l,d),B(e,l,o[3]),e.getTag().insertRules(d,n)),n.length=0}else n.push(a)}}},L=function(){return i.nc},F=function(e){var t=document.head,i=e||t,n=document.createElement("style"),r=function(e){for(var t=e.childNodes,i=t.length;i>=0;i--){var n=t[i];if(n&&1===n.nodeType&&n.hasAttribute(w))return n}}(i),s=void 0!==r?r.nextSibling:null;n.setAttribute(w,"active"),n.setAttribute("data-styled-version","5.3.6");var a=L();return a&&n.setAttribute("nonce",a),i.insertBefore(n,s),n},V=function(){function e(e){var t=this.element=F(e);t.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,i=0,n=t.length;i<n;i++){var r=t[i];if(r.ownerNode===e)return r}A(17)}(t),this.length=0}var t=e.prototype;return t.insertRule=function(e,t){try{return this.sheet.insertRule(t,e),this.length++,!0}catch(e){return!1}},t.deleteRule=function(e){this.sheet.deleteRule(e),this.length--},t.getRule=function(e){var t=this.sheet.cssRules[e];return void 0!==t&&"string"==typeof t.cssText?t.cssText:""},e}(),U=function(){function e(e){var t=this.element=F(e);this.nodes=t.childNodes,this.length=0}var t=e.prototype;return t.insertRule=function(e,t){if(e<=this.length&&e>=0){var i=document.createTextNode(t),n=this.nodes[e];return this.element.insertBefore(i,n||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e<this.length?this.nodes[e].textContent:""},e}(),z=function(){function e(e){this.rules=[],this.length=0}var t=e.prototype;return t.insertRule=function(e,t){return e<=this.length&&(this.rules.splice(e,0,t),this.length++,!0)},t.deleteRule=function(e){this.rules.splice(e,1),this.length--},t.getRule=function(e){return e<this.length?this.rules[e]:""},e}(),$=T,H={isServer:!T,useCSSOMInjection:!M},j=function(){function e(e,t,i){void 0===e&&(e=b),void 0===t&&(t={}),this.options=m({},H,{},e),this.gs=t,this.names=new Map(i),this.server=!!e.isServer,!this.server&&T&&$&&($=!1,function(e){for(var t=document.querySelectorAll(x),i=0,n=t.length;i<n;i++){var r=t[i];r&&"active"!==r.getAttribute(w)&&(N(e,r),r.parentNode&&r.parentNode.removeChild(r))}}(this))}e.registerId=function(e){return I(e)};var t=e.prototype;return t.reconstructWithOptions=function(t,i){return void 0===i&&(i=!0),new e(m({},this.options,{},t),this.gs,i&&this.names||void 0)},t.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},t.getTag=function(){var e,t,i,n;return this.tag||(this.tag=(t=(e=this.options).isServer,i=e.useCSSOMInjection,n=e.target,new k(t?new z(n):i?new V(n):new U(n))))},t.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},t.registerName=function(e,t){if(I(e),this.names.has(e))this.names.get(e).add(t);else{var i=new Set;i.add(t),this.names.set(e,i)}},t.insertRules=function(e,t,i){this.registerName(e,t),this.getTag().insertRules(I(e),i)}
33,t.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},t.clearRules=function(e){this.getTag().clearGroup(I(e)),this.clearNames(e)},t.clearTag=function(){this.tag=void 0},t.toString=function(){return function(e){for(var t=e.getTag(),i=t.length,n="",r=0;r<i;r++){var s,a=(s=r,P.get(s));if(void 0!==a){var o=e.names.get(a),d=t.getGroup(r);if(o&&d&&o.size){var l=w+".g"+r+'[id="'+a+'"]',c="";void 0!==o&&o.forEach(function(e){e.length>0&&(c+=e+",")}),n+=""+d+l+'{content:"'+c+'"}/*!sc*/\n'}}}return n}(this)},e}(),W=/(a)(d)/gi,G=function(e){return String.fromCharCode(e+(e>25?39:97))};function K(e){var t,i="";for(t=Math.abs(e);t>52;t=t/52|0)i=G(t%52)+i;return(G(t%52)+i).replace(W,"$1-$2")}var q=function(e,t){for(var i=t.length;i;)e=33*e^t.charCodeAt(--i);return e},Q=function(e){return q(5381,e)};function J(e){for(var t=0;t<e.length;t+=1){var i=e[t];if(S(i)&&!C(i))return!1}return!0}var Y=Q("5.3.6"),X=function(){function e(e,t,i){this.rules=e,this.staticRulesId="",this.isStatic=(void 0===i||i.isStatic)&&J(e),this.componentId=t,this.baseHash=q(Y,t),this.baseStyle=i,j.registerId(t)}return e.prototype.generateAndInjectStyles=function(e,t,i){var n=this.componentId,r=[];if(this.baseStyle&&r.push(this.baseStyle.generateAndInjectStyles(e,t,i)),this.isStatic&&!i.hash){if(this.staticRulesId&&t.hasNameForId(n,this.staticRulesId))r.push(this.staticRulesId);else{var s=eg(this.rules,e,t,i).join(""),a=K(q(this.baseHash,s)>>>0);if(!t.hasNameForId(n,a)){var o=i(s,"."+a,void 0,n);t.insertRules(n,a,o)}r.push(a),this.staticRulesId=a}}else{for(var d=this.rules.length,l=q(this.baseHash,i.hash),c="",u=0;u<d;u++){var h=this.rules[u];if("string"==typeof h)c+=h;else if(h){var f=eg(h,e,t,i),m=Array.isArray(f)?f.join(""):f;l=q(l,m+u),c+=m}}if(c){var p=K(l>>>0);if(!t.hasNameForId(n,p)){var g=i(c,"."+p,void 0,n);t.insertRules(n,p,g)}r.push(p)}}return r.join(" ")},e}(),Z=/^\s*\/\/.*$/gm,ee=[":","[",".","#"];function et(e){var t,i,n,r,s=void 0===e?b:e,a=s.options,o=void 0===a?b:a,l=s.plugins,c=void 0===l?v:l,u=new d(o),h=[],f=function(e){function t(t){if(t)try{e(t+"}")}catch(e){}}return function(i,n,r,s,a,o,d,l,c,u){switch(i){case 1:if(0===c&&64===n.charCodeAt(0))return e(n+";"),"";break;case 2:if(0===l)return n+"/*|*/";break;case 3:switch(l){case 102:case 112:return e(r[0]+n),"";default:return n+(0===u?"/*|*/":"")}case -2:n.split("/*|*/}").forEach(t)}}}(function(e){h.push(e)}),m=function(e,n,s){return 0===n&&-1!==ee.indexOf(s[i.length])||s.match(r)?e:"."+t};function p(e,s,a,o){void 0===o&&(o="&");var d=e.replace(Z,""),l=s&&a?a+" "+s+" { "+d+" }":d;return t=o,n=RegExp("\\"+(i=s)+"\\b","g"),r=RegExp("(\\"+i+"\\b){2,}"),u(a||!s?"":s,l)}return u.use([].concat(c,[function(e,t,r){2===e&&r.length&&r[0].lastIndexOf(i)>0&&(r[0]=r[0].replace(n,m))},f,function(e){if(-2===e){var t=h;return h=[],t}}])),p.hash=c.length?c.reduce(function(e,t){return t.name||A(15),q(e,t.name)},5381).toString():"",p}var ei=s.createContext(),en=(ei.Consumer,s.createContext()),er=(en.Consumer,new j),es=et();function ea(){return(0,s.useContext)(ei)||er}function eo(){return(0,s.useContext)(en)||es}function ed(e){var t=(0,s.useState)(e.stylisPlugins),i=t[0],n=t[1],r=ea(),a=(0,s.useMemo)(function(){var t=r;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t},[e.disableCSSOMInjection,e.sheet,e.target]),d=(0,s.useMemo)(function(){return et({options:{prefix:!e.disableVendorPrefixes},plugins:i})},[e.disableVendorPrefixes,i]);return(0,s.useEffect)(function(){o()(i,e.stylisPlugins)||n(e.stylisPlugins)},[e.stylisPlugins]),s.createElement(ei.Provider,{value:a},s.createElement(en.Provider,{value:d},e.children))}var el=function(){function e(e,t){var i=this;this.inject=function(e,t){void 0===t&&(t=es);var n=i.name+t.hash;e.hasNameForId(i.id,n)||e.insertRules(i.id,n,t(i.rules,n,"@keyframes"))},this.toString=function(){return A(12,String(i.name))},this.name=e,this.id="sc-keyframes-"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=es),this.name+e.hash},e}(),ec=/([A-Z])/,eu=/([A-Z])/g,eh=/^ms-/,ef=function(e){return"-"+e.toLowerCase()};function em(e){return ec.test(e)?e.replace(eu,ef).replace(eh,"-ms-"):e}var ep=function(e){return null==e||!1===e||""===e};function eg(e,t,i,n){if(Array.isArray(e)){for(var r,s=[],a=0,o=e.length;a<o;a+=1)""!==(r=eg(e[a],t,i,n))&&(Array.isArray(r)?s.push.apply(s,r):s.push(r));return s}return ep(e)?"":C(e)?"."+e.styledComponentId:S(e)?"function"!=typeof e||e.prototype&&e.prototype.isReactComponent||!t?e:eg(e(t),t,i,n):e instanceof el?i?(e.inject(i,n),e.getName(n)):e:g(e)?function e(t,i){var n,r=[];for(var s in t)t.hasOwnProperty(s)&&!ep(t[s])&&(Array.isArray(t[s])&&t[s].isCss||S(t[s])?r.push(em(s)+":",t[s],";"):g(t[s])?r.push.apply(r,e(t[s],s)):r.push(em(s)+": "+(null==(n=t[s])||"boolean"==typeof n||""===n?"":"number"!=typeof n||0===n||s in l?String(n).trim():n+"px")+";"));return i?[i+" {"].concat(r,["}"]):r}(e):e.toString()}var ev=function(e){return Array.isArray(e)&&(e.isCss=!0),e};function eb(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return S(e)||g(e)?ev(eg(p(v,[e].concat(i)))):0===i.length&&1===e.length&&"string"==typeof e[0]?e:ev(eg(p(e,i)))}var eS=function(e,t,i){return void 0===i&&(i=b),e.theme!==i.theme&&e.theme||t||i.theme},ey=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,eC=/(^-|-$)/g;function ew(e){return e.replace(ey,"-").replace(eC,"")}var eT=function(e){return K(Q(e)>>>0)};function eM(e){return"string"==typeof e}var eE=function(e){return"function"==typeof e||"object"==typeof e&&null!==e&&!Array.isArray(e)},eA=s.createContext();function ek(e){var t=(0,s.useContext)(eA),i=(0,s.useMemo)(function(){var i;return(i=e.theme)?S(i)?i(t):Array.isArray(i)||"object"!=typeof i?A(8):t?m({},t,{},i):i:A(14)},[e.theme,t]);return e.children?s.createElement(eA.Provider,{value:i},e.children):null}eA.Consumer;var e_={},eP=function(e){return function e(t,i,n){if(void 0===n&&(n=b),!(0,r.isValidElementType)(i))return A(1,String(i));var s=function(){return t(i,n,eb.apply(void 0,arguments))};return s.withConfig=function(r){return e(t,i,m({},n,{},r))},s.attrs=function(r){return e(t,i,m({}
33,n,{attrs:Array.prototype.concat(n.attrs,r).filter(Boolean)}))},s}(function e(t,i,n){var r=C(t),a=!eM(t),o=i.attrs,d=void 0===o?v:o,l=i.componentId,u=void 0===l?(M=i.displayName,E=i.parentComponentId,e_[A="string"!=typeof M?"sc":ew(M)]=(e_[A]||0)+1,k=A+"-"+eT("5.3.6"+A+e_[A]),E?E+"-"+k:k):l,f=i.displayName,p=void 0===f?eM(t)?"styled."+t:"Styled("+y(t)+")":f,g=i.displayName&&i.componentId?ew(i.displayName)+"-"+i.componentId:i.componentId||u,w=r&&t.attrs?Array.prototype.concat(t.attrs,d).filter(Boolean):d,T=i.shouldForwardProp;r&&t.shouldForwardProp&&(T=i.shouldForwardProp?function(e,n,r){return t.shouldForwardProp(e,n,r)&&i.shouldForwardProp(e,n,r)}:t.shouldForwardProp);var M,E,A,k,_,P=new X(n,g,r?t.componentStyle:void 0),R=P.isStatic&&0===d.length,I=function(e,t){return function(e,t,i,n){var r,a,o,d,l,u=e.attrs,h=e.componentStyle,f=e.defaultProps,p=e.foldedComponentIds,g=e.shouldForwardProp,v=e.styledComponentId,y=e.target,C=(void 0===(r=eS(t,(0,s.useContext)(eA),f)||b)&&(r=b),a=m({},t,{theme:r}),o={},u.forEach(function(e){var t,i,n,r=e;for(t in S(r)&&(r=r(a)),r)a[t]=o[t]="className"===t?(i=o[t],n=r[t],i&&n?i+" "+n:i||n):r[t]}),[a,o]),w=C[0],T=C[1],M=(d=ea(),l=eo(),n?h.generateAndInjectStyles(b,d,l):h.generateAndInjectStyles(w,d,l)),E=T.$as||t.$as||T.as||t.as||y,A=eM(E),k=T!==t?m({},t,{},T):t,_={};for(var P in k)"$"!==P[0]&&"as"!==P&&("forwardedAs"===P?_.as=k[P]:(g?g(P,c.Z,E):!A||(0,c.Z)(P))&&(_[P]=k[P]));return t.style&&T.style!==t.style&&(_.style=m({},t.style,{},T.style)),_.className=Array.prototype.concat(p,v,M!==v?M:null,t.className,T.className).filter(Boolean).join(" "),_.ref=i,(0,s.createElement)(E,_)}(_,e,t,R)};return I.displayName=p,(_=s.forwardRef(I)).attrs=w,_.componentStyle=P,_.displayName=p,_.shouldForwardProp=T,_.foldedComponentIds=r?Array.prototype.concat(t.foldedComponentIds,t.styledComponentId):v,_.styledComponentId=g,_.target=r?t.target:t,_.withComponent=function(t){var r=i.componentId,s=function(e,t){if(null==e)return{};var i,n,r={},s=Object.keys(e);for(n=0;n<s.length;n++)t.indexOf(i=s[n])>=0||(r[i]=e[i]);return r}(i,["componentId"]),a=r&&r+"-"+(eM(t)?t:ew(y(t)));return e(t,m({},s,{attrs:w,componentId:a}),n)},Object.defineProperty(_,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(e){this._foldedDefaultProps=r?function e(t){for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];for(var s=0;s<n.length;s++){var a=n[s];if(eE(a))for(var o in a)"__proto__"!==o&&"constructor"!==o&&"prototype"!==o&&function(t,i,n){var r=t[n];eE(i)&&eE(r)?e(r,i):t[n]=i}(t,a[o],o)}return t}({},t.defaultProps,e):e}}),_.toString=function(){return"."+_.styledComponentId},a&&h()(_,t,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),_},e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach(function(e){eP[e]=eP(e)});var eR=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=J(e),j.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,i,n){var r=n(eg(this.rules,t,i,n).join(""),""),s=this.componentId+e;i.insertRules(s,s,r)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,i,n){e>2&&j.registerId(this.componentId+e),this.removeStyles(e,i),this.createStyles(e,t,i,n)},e}();function eI(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];var r=eb.apply(void 0,[e].concat(i)),a="sc-global-"+eT(JSON.stringify(r)),o=new eR(r,a);function d(e){var t=ea(),i=eo(),n=(0,s.useContext)(eA),r=(0,s.useRef)(t.allocateGSInstance(a)).current;return t.server&&l(r,e,t,n,i),(0,s.useLayoutEffect)(function(){if(!t.server)return l(r,e,t,n,i),function(){return o.removeStyles(r,t)}},[r,e,t,n,i]),null}function l(e,t,i,n,r){if(o.isStatic)o.renderStyles(e,E,i,r);else{var s=m({},t,{theme:eS(t,n,d.defaultProps)});o.renderStyles(e,s,i,r)}}return s.memo(d)}function eO(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];var r=eb.apply(void 0,[e].concat(i)).join("");return new el(eT(r),r)}(n=(function(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString();if(!t)return"";var i=L();return"<style "+[i&&'nonce="'+i+'"',w+'="true"','data-styled-version="5.3.6"'].filter(
33Boolean).join(" ")+">"+t+"</style>"},this.getStyleTags=function(){return e.sealed?A(2):e._emitSheetCSS()},this.getStyleElement=function(){if(e.sealed)return A(2);var t,i=((t={})[w]="",t["data-styled-version"]="5.3.6",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),n=L();return n&&(i.nonce=n),[s.createElement("style",m({},i,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new j({isServer:!0}),this.sealed=!1}).prototype).collectStyles=function(e){return this.sealed?A(2):s.createElement(ed,{sheet:this.instance},e)},n.interleaveWithNodeStream=function(e){return A(3)};var ex=eP},78545:function(e,t,i){"use strict";i.d(t,{eC:function(){return w},Dh:function(){return x}});var n=i(4079),r=i.n(n),s=function(e,t){var i,n=r()({},e,t);for(var s in e)e[s]&&"object"==typeof t[s]&&r()(n,((i={})[s]=r()(e[s],t[s]),i));return n},a=function(e){var t={};return Object.keys(e).sort(function(e,t){return e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})}).forEach(function(i){t[i]=e[i]}),t},o={breakpoints:[40,52,64].map(function(e){return e+"em"})},d=function(e){return"@media screen and (min-width: "+e+")"},l=function(e,t){return c(t,e,e)},c=function(e,t,i,n,r){for(n=0,t=t&&t.split?t.split("."):[t];n<t.length;n++)e=e?e[t[n]]:r;return e===r?i:e},u=function e(t){var i={},n=function(e){var n={},l=!1,u=e.theme&&e.theme.disableStyledSystemCache;for(var m in e)if(t[m]){var p=t[m],g=e[m],v=c(e.theme,p.scale,p.defaults);if("object"==typeof g){if(i.breakpoints=!u&&i.breakpoints||c(e.theme,"breakpoints",o.breakpoints),Array.isArray(g)){i.media=!u&&i.media||[null].concat(i.breakpoints.map(d)),n=s(n,h(i.media,p,v,g,e));continue}null!==g&&(n=s(n,f(i.breakpoints,p,v,g,e)),l=!0);continue}r()(n,p(g,v,e))}return l&&(n=a(n)),n};n.config=t,n.propNames=Object.keys(t),n.cache=i;var l=Object.keys(t).filter(function(e){return"config"!==e});return l.length>1&&l.forEach(function(i){var r;n[i]=e(((r={})[i]=t[i],r))}),n},h=function(e,t,i,n,s){var a={};return n.slice(0,e.length).forEach(function(n,o){var d,l=e[o],c=t(n,i,s);l?r()(a,((d={})[l]=r()({},a[l],c),d)):r()(a,c)}),a},f=function(e,t,i,n,s){var a={};for(var o in n){var l=e[o],c=t(n[o],i,s);if(l){var u,h=d(l);r()(a,((u={})[h]=r()({},a[h],c),u))}else r()(a,c)}return a},m=function(e){var t=e.properties,i=e.property,n=e.scale,r=e.transform,s=void 0===r?l:r,a=e.defaultScale;t=t||[i];var o=function(e,i,n){var r={},a=s(e,i,n);if(null!==a)return t.forEach(function(e){r[e]=a}),r};return o.scale=n,o.defaults=a,o},p=function(e){void 0===e&&(e={});var t={};return Object.keys(e).forEach(function(i){var n=e[i];if(!0===n){t[i]=m({property:i,scale:i});return}if("function"==typeof n){t[i]=n;return}t[i]=m(n)}),u(t)},g=p({width:{property:"width",scale:"sizes",transform:function(e,t){return c(t,e,!("number"==typeof e&&!isNaN(e))||e>1?e:100*e+"%")}},height:{property:"height",scale:"sizes"},minWidth:{property:"minWidth",scale:"sizes"},minHeight:{property:"minHeight",scale:"sizes"},maxWidth:{property:"maxWidth",scale:"sizes"},maxHeight:{property:"maxHeight",scale:"sizes"},size:{properties:["width","height"],scale:"sizes"},overflow:!0,overflowX:!0,overflowY:!0,display:!0,verticalAlign:!0}),v={color:{property:"color",scale:"colors"},backgroundColor:{property:"backgroundColor",scale:"colors"},opacity:!0};v.bg=v.backgroundColor;var b=p(v),S=p({fontFamily:{property:"fontFamily",scale:"fonts"},fontSize:{property:"fontSize",scale:"fontSizes",defaultScale:[12,14,16,20,24,32,48,64,72]},fontWeight:{property:"fontWeight",scale:"fontWeights"},lineHeight:{property:"lineHeight",scale:"lineHeights"},letterSpacing:{property:"letterSpacing",scale:"letterSpacings"},textAlign:!0,fontStyle:!0}),y=p({alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:!0,flex:!0,flexGrow:!0,flexShrink:!0,flexBasis:!0,justifySelf:!0,alignSelf:!0,order:!0}),C=[0,4,8,16,32,64,128,256,512],w=p({gridGap:{property:"gridGap",scale:"space",defaultScale:C},gridColumnGap:{property:"gridColumnGap",scale:"space",defaultScale:C},gridRowGap:{property:"gridRowGap",scale:"space",defaultScale:C},gridColumn:!0,gridRow:!0,gridAutoFlow:!0,gridAutoColumns:!0,gridAutoRows:!0,gridTemplateColumns:!0,gridTemplateRows:!0,gridTemplateAreas:!0,gridArea:!0}),T={border:{property:"border",scale:"borders"},borderWidth:{property:"borderWidth",scale:"borderWidths"},borderStyle:{property:"borderStyle",scale:"borderStyles"},borderColor:{property:"borderColor",scale:"colors"},borderRadius:{property:"borderRadius",scale:"radii"},borderTop:{property:"borderTop",scale:"borders"},borderTopLeftRadius:{property:"borderTopLeftRadius",scale:"radii"},borderTopRightRadius:{property:"borderTopRightRadius",scale:"radii"},borderRight:{property:"borderRight",scale:"borders"},borderBottom:{property:"borderBottom",scale:"borders"},borderBottomLeftRadius:{property:"borderBottomLeftRadius",scale:"radii"},borderBottomRightRadius:{property:"borderBottomRightRadius",scale:"radii"},borderLeft:{property:"borderLeft",scale:"borders"},borderX:{properties:["borderLeft","borderRight"],scale:"borders"},borderY:{properties:["borderTop","borderBottom"],scale:"borders"}};T.borderTopWidth={property:"borderTopWidth",scale:"borderWidths"},T.borderTopColor={property:"borderTopColor",scale:"colors"},T.borderTopStyle={property:"borderTopStyle",scale:"borderStyles"},T.borderTopLeftRadius={property:"borderTopLeftRadius",scale:"radii"},T.borderTopRightRadius={property:"borderTopRightRadius",scale:"radii"},T.borderBottomWidth={property:"borderBottomWidth",scale:"borderWidths"},T.borderBottomColor={property:"borderBottomColor",scale:"colors"},T.borderBottomStyle={property:"borderBottomStyle",scale:"borderStyles"},T.borderBottomLeftRadius={property:"borderBottomLeftRadius",scale:"radii"},T.borderBottomRightRadius={property:"borderBottomRightRadius",scale:"radii"},T.borderLeftWidth={property:"borderLeftWidth",scale:"borderWidths"},T.borderLeftColor={property:"borderLeftColor",scale:"colors"},T.borderLeftStyle={property:"borderLeftStyle",scale:"borderStyles"},T.borderRightWidth={property:"borderRightWidth",scale:"borderWidths"},T.borderRightColor={property:"borderRightColor",scale:"colors"},T.borderRightStyle={property:"borderRightStyle",scale:"borderStyles"};var M=p(T),E={background:!0,backgroundImage:!0,backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0};E.bgImage=E.backgroundImage,E.bgSize=E.backgroundSize,E.bgPosition=E.backgroundPosition,E.bgRepeat=E.backgroundRepeat;var A=p(E),k=[0,4,8,16,32,64,128,256,512],_=p({position:!0,zIndex:{property:"zIndex",scale:"zIndices"},top:{property:"top",scale:"space",defaultScale:k},right:{property:"right",scale:"space",defaultScale:k},bottom:{property:"bottom",scale:"space",defaultScale:k},left:{property:"left",scale:"space",defaultScale:k}}),P=[0,4,8,16,32,64,128,256,512],R=function(e){return"number"==typeof e&&!isNaN(e)},I=function(e,t){if(!R(e))return c(t,e,e);var i=e<0,n=Math.abs(e),r=c(t,n,n);return R(r)?r*(i?-1:1):i?"-"+r:r},O={};O.margin={margin:{property:"margin",scale:"space",transform:I,defaultScale:P},marginTop:{property:"marginTop",scale:"space",transform:I,defaultScale:P},marginRight:{property:"marginRight",scale:"space",transform:I,defaultScale:P},marginBottom:{property:"marginBottom",scale:"space",transform:I,defaultScale:P},marginLeft:{property:"marginLeft",scale:"space",transform:I,defaultScale:P},marginX:{properties:["marginLeft","marginRight"],scale:"space",transform:I,defaultScale:P},marginY:{properties:["marginTop","marginBottom"],scale:"space",transform:I,defaultScale:P}},O.margin.m=O.margin.margin,O.margin.mt=O.margin.marginTop,O.margin.mr=O.margin.marginRight,O.margin.mb=O.margin.marginBottom,O.margin.ml=O.margin.marginLeft,O.margin.mx=O.margin.marginX,O.margin.my=O.margin.marginY,O.padding={padding:{property:"padding",scale:"space",defaultScale:P},paddingTop:{property:"paddingTop",scale:"space",defaultScale:P},paddingRight:{property:"paddingRight",scale:"space",defaultScale:P},paddingBottom:{property:"paddingBottom",scale:"space",defaultScale:P},paddingLeft:{property:"paddingLeft",scale:"space",defaultScale:P},paddingX:{properties:["paddingLeft","paddingRight"],scale:"space",defaultScale:P},paddingY:{properties:["paddingTop","paddingBottom"],scale:"space",defaultScale:P}},O.padding.p=O.padding.padding,O.padding.pt=O.padding.paddingTop,O.padding.pr=O.padding.paddingRight,O.padding.pb=O.padding.paddingBottom,O.padding.pl=O.padding.paddingLeft,O.padding.px=O.padding.paddingX,O.padding.py=O.padding.paddingY;var x=function(){for(var e={},t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];
33return i.forEach(function(t){t&&t.config&&r()(e,t.config)}),u(e)}(p(O.margin),p(O.padding));function D(){return(D=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}p({boxShadow:{property:"boxShadow",scale:"shadows"},textShadow:{property:"textShadow",scale:"shadows"}});var B=function(e,t,i,n,r){for(n=0,t=t&&t.split?t.split("."):[t];n<t.length;n++)e=e?e[t[n]]:r;return e===r?i:e},N=[40,52,64].map(function(e){return e+"em"}),L={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},F={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},V={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},U={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},z=function(e,t){if("number"!=typeof t||t>=0)return B(e,t,t);var i=Math.abs(t),n=B(e,i,i);return"string"==typeof n?"-"+n:-1*n},$=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce(function(e,t){var i;return D({},e,((i={})[t]=z,i))},{}),H=function(e){var t,i,n=e.scale,r=e.prop,s=e.variants,a=void 0===s?{}:s,o=e.key;return(i=Object.keys(a).length?function(e,t,i){return(function e(t){return function(i){void 0===i&&(i={});var n,r=D({},L,{},i.theme||i),s={},a=(n="function"==typeof t?t(r):t,function(e){var t={},i=[null].concat(B(e,"breakpoints",N).map(function(e){return"@media screen and (min-width: "+e+")"}));for(var r in n){var s="function"==typeof n[r]?n[r](e):n[r];if(null!=s){if(!Array.isArray(s)){t[r]=s;continue}for(var a=0;a<s.slice(0,i.length).length;a++){var o=i[a];if(!o){t[r]=s[a];continue}t[o]=t[o]||{},null!=s[a]&&(t[o][r]=s[a])}}}return t})(r);for(var o in a){var d=a[o],l="function"==typeof d?d(r):d;if("variant"===o){var c=e(B(r,l))(r);s=D({},s,{},c);continue}if(l&&"object"==typeof l){s[o]=e(l)(r);continue}var u=B(F,o,o),h=B(U,u),f=B(r,h,B(r,u,{})),m=B($,u,B)(f,l,l);if(V[u])for(var p=V[u],g=0;g<p.length;g++)s[p[g]]=m;else s[u]=m}return s}})(c(t,e,null))(i.theme)}:function(e,t){return c(t,e,null)}).scale=n||o,i.defaults=a,u(((t={})[void 0===r?"variant":r]=i,t))};H({key:"buttons"}),H({key:"textStyles",prop:"textStyle"}),H({key:"colorStyles",prop:"colors"}),g.width,g.height,g.minWidth,g.minHeight,g.maxWidth,g.maxHeight,g.size,g.verticalAlign,g.display,g.overflow,g.overflowX,g.overflowY,b.opacity,S.fontSize,S.fontFamily,S.fontWeight,S.lineHeight,S.textAlign,S.fontStyle,S.letterSpacing,y.alignItems,y.alignContent,y.justifyItems,y.justifyContent,y.flexWrap,y.flexDirection,y.flex,y.flexGrow,y.flexShrink,y.flexBasis,y.justifySelf,y.alignSelf,y.order,w.gridGap,w.gridColumnGap,w.gridRowGap,w.gridColumn,w.gridRow,w.gridAutoFlow,w.gridAutoColumns,w.gridAutoRows,w.gridTemplateColumns,w.gridTemplateRows,w.gridTemplateAreas,w.gridArea,M.borderWidth,M.borderStyle,M.borderColor,M.borderTop,M.borderRight,M.borderBottom,M.borderLeft,M.borderRadius,A.backgroundImage,A.backgroundSize,A.backgroundPosition,A.backgroundRepeat,_.zIndex,_.top,_.right,_.bottom,_.left},44:function(e,t){var i,n;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,n=function(e){"use strict";
33Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function i(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function n(e){return!0===(e&&e.__isLong__)}function r(e){var t=Math.clz32(e&-e);return e?31-t:t}i.prototype.__isLong__,Object.defineProperty(i.prototype,"__isLong__",{value:!0}),i.isLong=n;var s={},a={};function o(e,t){var i,n,r;return t?(e>>>=0,(r=0<=e&&e<256)&&(n=a[e]))?n:(i=l(e,0,!0),r&&(a[e]=i),i):(e|=0,(r=-128<=e&&e<128)&&(n=s[e]))?n:(i=l(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function d(e,t){if(isNaN(e))return t?b:v;if(t){if(e<0)return b;if(e>=m)return T}else{if(e<=-p)return M;if(e+1>=p)return w}return e<0?d(-e,t).neg():l(e%f|0,e/f|0,t)}function l(e,t,n){return new i(e,t,n)}i.fromInt=o,i.fromNumber=d,i.fromBits=l;var c=Math.pow;function u(e,t,i){if(0===e.length)throw Error("empty string");if("number"==typeof t?(i=t,t=!1):t=!!t,"NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return t?b:v;if((i=i||10)<2||36<i)throw RangeError("radix");if((n=e.indexOf("-"))>0)throw Error("interior hyphen");if(0===n)return u(e.substring(1),t,i).neg();for(var n,r=d(c(i,8)),s=v,a=0;a<e.length;a+=8){var o=Math.min(8,e.length-a),l=parseInt(e.substring(a,a+o),i);if(o<8){var h=d(c(i,o));s=s.mul(h).add(d(l))}else s=(s=s.mul(r)).add(d(l))}return s.unsigned=t,s}function h(e,t){return"number"==typeof e?d(e,t):"string"==typeof e?u(e,t):l(e.low,e.high,"boolean"==typeof t?t:e.unsigned)}i.fromString=u,i.fromValue=h;var f=4294967296,m=18446744073709552e3,p=0x7fffffffffffffff,g=o(16777216),v=o(0);i.ZERO=v;var b=o(0,!0);i.UZERO=b;var S=o(1);i.ONE=S;var y=o(1,!0);i.UONE=y;var C=o(-1);i.NEG_ONE=C;var w=l(-1,2147483647,!1);i.MAX_VALUE=w;var T=l(-1,-1,!0);i.MAX_UNSIGNED_VALUE=T;var M=l(0,-2147483648,!1);i.MIN_VALUE=M;var E=i.prototype;E.toInt=function(){return this.unsigned?this.low>>>0:this.low},E.toNumber=function(){return this.unsigned?(this.high>>>0)*f+(this.low>>>0):this.high*f+(this.low>>>0)},E.toString=function(e){if((e=e||10)<2||36<e)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(!this.eq(M))return"-"+this.neg().toString(e);var t=d(e),i=this.div(t),n=i.mul(t).sub(this);return i.toString(e)+n.toInt().toString(e)}for(var r=d(c(e,6),this.unsigned),s=this,a="";;){var o=s.div(r),l=(s.sub(o.mul(r)).toInt()>>>0).toString(e);if((s=o).isZero())return l+a;for(;l.length<6;)l="0"+l;a=""+l+a}},E.getHighBits=function(){return this.high},E.getHighBitsUnsigned=function(){return this.high>>>0},E.getLowBits=function(){return this.low},E.getLowBitsUnsigned=function(){return this.low>>>0},E.getNumBitsAbs=function(){if(this.isNegative())return this.eq(M)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&(e&1<<t)==0;t--);return 0!=this.high?t+33:t+1},E.isSafeInteger=function(){var e=this.high>>21;return!e||!this.unsigned&&-1===e&&!(0===this.low&&-2097152===this.high)},E.isZero=function(){return 0===this.high&&0===this.low},E.eqz=E.isZero,E.isNegative=function(){return!this.unsigned&&this.high<0},E.isPositive=function(){return this.unsigned||this.high>=0},E.isOdd=function(){return(1&this.low)==1},E.isEven=function(){return(1&this.low)==0},E.equals=function(e){return n(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},E.eq=E.equals,E.notEquals=function(e){return!this.eq(e)},E.neq=E.notEquals,E.ne=E.notEquals,E.lessThan=function(e){return 0>this.comp(e)},E.lt=E.lessThan,E.lessThanOrEqual=function(e){return 0>=this.comp(e)},E.lte=E.lessThanOrEqual,E.le=E.lessThanOrEqual,E.greaterThan=function(e){return this.comp(e)>0},E.gt=E.greaterThan,E.greaterThanOrEqual=function(e){return this.comp(e)>=0},E.gte=E.greaterThanOrEqual,E.ge=E.greaterThanOrEqual,E.compare=function(e){if(n(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},E.comp=E.compare,E.negate=function(){return!this.unsigned&&this.eq(M)?M:this.not().add(S)},E.neg=E.negate,E.add=function(e){n(e)||(e=h(e));var t,i,r=this.high>>>16,s=65535&this.high,a=this.low>>>16,o=65535&this.low,d=e.high>>>16,c=65535&e.high,u=e.low>>>16,f=65535&e.low,m=0,p=0;return t=0+((i=0+(o+f))>>>16),i&=65535,t+=a+u,p+=t>>>16,t&=65535,p+=s+c,m+=p>>>16,p&=65535,m+=r+d,l(t<<16|i,(m&=65535)<<16|p,this.unsigned)},E.subtract=function(e){return n(e)||(e=h(e)),this.add(e.neg())},E.sub=E.subtract,E.multiply=function(e){if(this.isZero())return this;if(n(e)||(e=h(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return this.unsigned?b:v;if(this.eq(M))return e.isOdd()?M:v;if(e.eq(M))return this.isOdd()?M:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(g)&&e.lt(g))return d(this.toNumber()*e.toNumber(),this.unsigned);var i,r,s=this.high>>>16,a=65535&this.high,o=this.low>>>16,c=65535&this.low,u=e.high>>>16,f=65535&e.high,m=e.low>>>16,p=65535&e.low,S=0,y=0;return i=0+((r=0+c*p)>>>16),r&=65535,i+=o*p,y+=i>>>16,i&=65535,i+=c*m,y+=i>>>16,i&=65535,y+=a*p,S+=y>>>16,y&=65535,y+=o*m,S+=y>>>16,y&=65535,y+=c*f,S+=y>>>16,y&=65535,S+=s*p+a*m+o*f+c*u,l(i<<16|r,(S&=65535)<<16|y,this.unsigned)},E.mul=E.multiply,E.divide=function(e){if(n(e)||(e=h(e)),e.isZero())throw Error("division by zero");if(t){var i,r,s;return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this}if(this.isZero())return this.unsigned?b:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return b;if(e.gt(this.shru(1)))return y;s=b}else{if(this.eq(M))return e.eq(S)||e.eq(C)?M:e.eq(M)?S:(i=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?S:C:(r=this.sub(e.mul(i)),s=i.add(r.div(e)));if(e.eq(M))return this.unsigned?b:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=v}for(r=this;r.gte(e);){for(var a=Math.ceil(Math.log(i=Math.max(1,Math.floor(r.toNumber()/e.toNumber())))/Math.LN2),o=a<=48?1:c(2,a-48),u=d(i),f=u.mul(e);f.isNegative()||f.gt(r);)i-=o,f=(u=d(i,this.unsigned)).mul(e);u.isZero()&&(u=S),s=s.add(u),r=r.sub(f)}return s},E.div=E.divide,E.modulo=function(e){return(n(e)||(e=h(e)),t)?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},E.mod=E.modulo,E.rem=E.modulo,E.not=function(){return l(~this.low,~this.high,this.unsigned)},E.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},E.clz=E.countLeadingZeros,E.countTrailingZeros=function(){return this.low?r(this.low):r(this.high)+32},E.ctz=E.countTrailingZeros,E.and=function(e){return n(e)||(e=h(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},E.or=function(e){return n(e)||(e=h(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},E.xor=function(e){return n(e)||(e=h(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},E.shiftLeft=function(e){return(n(e)&&(e=e.toInt()),0==(e&=63))?this:e<32?l(this.low<<e,this.high<<e|this.low>>>32-e,this.unsigned):l(0,this.low<<e-32,this.unsigned)},E.shl=E.shiftLeft,E.shiftRight=function(e){return(n(e)&&(e=e.toInt()),0==(e&=63))?this:e<32?l(this.low>>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},E.shr=E.shiftRight,E.shiftRightUnsigned=function(e){return(n(e)&&(e=e.toInt()),0==(e&=63))?this:e<32?l(this.low>>>e|this.high<<32-e,this.high>>>e,this.unsigned):32===e?l(this.high,0,this.unsigned):l(this.high>>>e-32,0,this.unsigned)},E.shru=E.shiftRightUnsigned,E.shr_u=E.shiftRightUnsigned,E.rotateLeft=function(e){var t;return(n(e)&&(e=e.toInt()),0==(e&=63))?this:32===e?l(this.high,this.low,this.unsigned):e<32?(t=32-e,l(this.low<<e|this.high>>>t,this.high<<e|this.low>>>t,this.unsigned)):(e-=32,t=32-e,l(this.high<<e|this.low>>>t,this.low<<e|this.high>>>t,this.unsigned))},E.rotl=E.rotateLeft,E.rotateRight=function(e){var t;return(n(e)&&(e=e.toInt()),0==(e&=63))?this:32===e?l(this.high,this.low,this.unsigned):e<32?(t=32-e,l(this.high<<t|this.low>>>e,this.low<<t|this.high>>>e,this.unsigned)):(e-=32,t=32-e,l(this.low<<t|this.high>>>e,this.high<<t|this.low>>>e,this.unsigned))},E.rotr=E.rotateRight,E.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},E.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},E.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},E.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},E.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},i.fromBytes=function(e,t,n){return n?i.fromBytesLE(e,t):i.fromBytesBE(e,t)},i.fromBytesLE=function(e,t){return new i(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},i.fromBytesBE=function(e,t){return new i(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)},"function"==typeof BigInt&&(i.fromBigInt=function(e,t){return l(Number(BigInt.asIntN(32,e)),Number(BigInt.asIntN(32,e>>BigInt(32))),t)},i.fromValue=function(e,t){return"bigint"==typeof e?i.fromBigInt(e,t):h(e,t)},E.toBigInt=function(){var e=BigInt(this.low>>>0);return BigInt(this.unsigned?this.high>>>0:this.high)<<BigInt(32)|e}),e.default=i},void 0!==(i=(function(){var e={};return n(e),e.default||e}).apply(t,[]))&&(e.exports=i)}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.