{"version":3,"sources":["webpack:///./node_modules/@microsoft/signalr/dist/esm/ILogger.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","webpack:///./node_modules/@u-rogel/vue-emotion/dist/bundle.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Utils.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Loggers.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Errors.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Subject.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HubConnection.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/ITransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/AbortController.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js"],"names":["LogLevel","TextMessageFormat","write","output","RecordSeparator","parse","input","length","Error","messages","split","pop","RecordSeparatorCode","String","fromCharCode","HandshakeProtocol","prototype","writeHandshakeRequest","handshakeRequest","JSON","stringify","parseHandshakeResponse","data","responseMessage","messageData","remainingData","Buffer","binaryData","Uint8Array","separatorIndex","indexOf","responseLength","apply","slice","byteLength","buffer","textData","substring","response","type","classResolver","theme","stylesTemplates","props","staticClass","classes","map","stylesTemplate","strings","tags","flatTags","item","genClass","join","compGen","htmlTag","propTypes","component","className","value","Number","Date","Boolean","computed","localValue","this","newVal","$emit","createElement","_this$$slots","class","$veTheme","get","resolvedClasses","$props","$vnode","on","$listeners","target","domProps","$slots","default","styledComponent","styledComp","funcGen","functional","context","children","parent","attrs","styledFunc","domElements","inputElements","styled","styledInstance","formerStyles","formerPropTypes","extendOptions","forEach","elem","Object","required","watch","calcTheme","$root","$el","id","rootId","methods","themeObj","set","themeKeys","keys","styleString","reduce","acc","key","res","document","querySelector","stylesId","innerHTML","styleElem","setAttribute","head","appendChild","style","__assign","assign","t","s","i","n","arguments","p","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","push","VERSION","Arg","isRequired","val","name","undefined","isNotEmpty","match","isIn","values","Platform","defineProperty","window","enumerable","configurable","self","isBrowser","isWebWorker","getDataDetail","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","str","num","pad","toString","substr","ArrayBuffer","constructor","sendMessage","logger","transportName","httpClient","url","accessTokenFactory","content","logMessageContent","withCredentials","defaultHeaders","_a","headers","token","_b","responseType","_c","getUserAgentHeader","log","Trace","post","statusCode","createLogger","ConsoleLogger","Information","instance","SubjectSubscription","subject","observer","dispose","index","observers","splice","cancelCallback","catch","minimumLogLevel","outputConsole","console","logLevel","message","Critical","error","toISOString","Warning","warn","info","userAgentHeaderName","isNode","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","version","os","runtime","runtimeVersion","userAgent","majorAndMinor","process","platform","versions","node","NullLogger","_logLevel","_message","__extends","extendStatics","setPrototypeOf","__proto__","Array","d","b","__","create","HttpError","_super","errorMessage","_newTarget","_this","trueProto","TimeoutError","AbortError","HttpResponse","statusText","HttpClient","options","send","method","delete","getCookieString","FetchHttpClient","fetch","requireFunc","jar","CookieJar","fetchType","abortControllerType","bind","AbortController","request","abortController","timeoutId","msTimeout","e_1","payload","abortSignal","aborted","onabort","abort","timeout","setTimeout","cache","credentials","mode","redirect","signal","clearTimeout","ok","status","deserializeContent","cookies","getCookies","c","arrayBuffer","text","MessageType","XhrHttpClient","xhr","XMLHttpRequest","open","setRequestHeader","header","onload","responseText","onerror","ontimeout","DefaultHttpClient","HubConnectionState","Subject","_i","err","complete","subscribe","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HttpTransportType","TransferFormat","HubConnection","connection","protocol","reconnectPolicy","nextKeepAlive","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","handshakeProtocol","onreceive","processIncomingData","onclose","connectionClosed","callbacks","closedCallbacks","reconnectingCallbacks","reconnectedCallbacks","invocationId","receivedHandshakeResponse","connectionState","Disconnected","connectionStarted","cachedPingMessage","writeMessage","Ping","connectionId","baseUrl","Reconnecting","start","startPromise","startWithStateTransitions","Connecting","Debug","startInternal","Connected","handshakePromise","e_2","stopDuringStartError","handshakeResolver","handshakeRejecter","transferFormat","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","cleanupPingTimer","stop","stopPromise","stopInternal","Disconnecting","reconnectDelayHandle","completeClose","stream","methodName","args","promiseQueue","replaceStreamingParams","streams","streamIds","invocationDescriptor","createStreamInvocation","cancelInvocation","createCancelInvocation","sendWithProtocol","invocationEvent","Completion","launchStreams","sendPromise","createInvocation","invoke","newMethod","toLowerCase","off","handlers","removeIdx","callback","onreconnecting","onreconnected","processHandshakeResponse","parseMessages","messages_1","Invocation","invokeClientMethod","StreamItem","Close","allowReconnect","features","inherentKeepAlive","getTime","timeoutHandle","serverTimeout","pingServerHandle","nextPing","invocationMessage","m","cancelCallbacksWithError","reconnect","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","e_4","now","getNextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","nextRetryDelayInMilliseconds","nonblocking","_loop_1","streamId","createCompletionMessage","createStreamItemMessage","argument","isObservable","arg","StreamInvocation","CancelInvocation","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","concat","retryContext","isAborted","LongPollingTransport","pollAbort","running","connect","pollOptions","pollUrl","Binary","getAccessToken","updateHeaderToken","closeError","receiving","poll","pollAborted","raiseOnClose","name_1","deleteOptions","logMessage","ServerSentEventsTransport","eventSourceConstructor","encodeURIComponent","opened","Text","eventSource","Cookie","onmessage","close","onopen","WebSocketTransport","webSocketConstructor","webSocket","replace","binaryType","_event","event","ErrorEvent","readyState","OPEN","isCloseEvent","wasClean","code","reason","MAX_REDIRECTS","HttpConnection","stopPromiseResolver","negotiateVersion","resolveUrl","webSocketModule","eventSourceModule","WebSocket","EventSource","startInternalPromise","sendQueue","TransportSendQueue","transport","stopError","stopConnection","negotiateResponse","redirects","this_1","e_3","skipNegotiation","WebSockets","constructTransport","startTransport","accessToken_1","getNegotiationResponse","ProtocolVersion","accessToken","createTransport","negotiateUrl","resolveNegotiateUrl","connectionToken","createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","transportExceptions","transports","negotiate","transports_1","endpoint","transportOrError","ex_1","ex_2","isITransport","availableTransports","resolveTransportOrError","ServerSentEvents","LongPolling","transportMatches","transferFormats","ex","lastIndexOf","aTag","href","actualTransport","executing","sendBufferedData","PromiseSource","transportResult","sendLoopPromise","sendLoop","bufferData","promise","error_1","concatBuffers","arrayBuffers","totalLength","a","offset","arrayBuffers_1","resolver","rejecter","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","LogLevelNameMapping","trace","debug","information","warning","critical","none","None","parseLogLevel","mapping","HubConnectionBuilder","configureLogging","logging","isLogger","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","isArray","build"],"mappings":"oHAOO,IAAIA,EAPX,kCAQA,SAAWA,GAEPA,EAASA,EAAS,SAAW,GAAK,QAElCA,EAASA,EAAS,SAAW,GAAK,QAElCA,EAASA,EAAS,eAAiB,GAAK,cAExCA,EAASA,EAAS,WAAa,GAAK,UAEpCA,EAASA,EAAS,SAAW,GAAK,QAElCA,EAASA,EAAS,YAAc,GAAK,WAErCA,EAASA,EAAS,QAAU,GAAK,OAdrC,CAeGA,IAAaA,EAAW,M,oCCvB3B,kCAIA,IAAIC,EAAmC,WACnC,SAASA,KAeT,OAbAA,EAAkBC,MAAQ,SAAUC,GAChC,MAAO,GAAKA,EAASF,EAAkBG,iBAE3CH,EAAkBI,MAAQ,SAAUC,GAChC,GAAIA,EAAMA,EAAMC,OAAS,KAAON,EAAkBG,gBAC9C,MAAM,IAAII,MAAM,0BAEpB,IAAIC,EAAWH,EAAMI,MAAMT,EAAkBG,iBAE7C,OADAK,EAASE,MACFF,GAEXR,EAAkBW,oBAAsB,GACxCX,EAAkBG,gBAAkBS,OAAOC,aAAab,EAAkBW,qBACnEX,EAhB2B,I,qCCJtC,0EAKIc,EAAmC,WACnC,SAASA,KA8CT,OA3CAA,EAAkBC,UAAUC,sBAAwB,SAAUC,GAC1D,OAAO,OAAkBhB,MAAMiB,KAAKC,UAAUF,KAElDH,EAAkBC,UAAUK,uBAAyB,SAAUC,GAC3D,IAAIC,EACAC,EACAC,EACJ,GAAI,eAAcH,IAA4B,qBAAXI,GAA0BJ,aAAgBI,EAAS,CAElF,IAAIC,EAAa,IAAIC,WAAWN,GAC5BO,EAAiBF,EAAWG,QAAQ,OAAkBlB,qBAC1D,IAAwB,IAApBiB,EACA,MAAM,IAAIrB,MAAM,0BAIpB,IAAIuB,EAAiBF,EAAiB,EACtCL,EAAcX,OAAOC,aAAakB,MAAM,KAAML,EAAWM,MAAM,EAAGF,IAClEN,EAAiBE,EAAWO,WAAaH,EAAkBJ,EAAWM,MAAMF,GAAgBI,OAAS,SAEpG,CACD,IAAIC,EAAWd,EACXO,EAAiBO,EAASN,QAAQ,OAAkB1B,iBACxD,IAAwB,IAApByB,EACA,MAAM,IAAIrB,MAAM,0BAIhBuB,EAAiBF,EAAiB,EACtCL,EAAcY,EAASC,UAAU,EAAGN,GACpCN,EAAiBW,EAAS7B,OAASwB,EAAkBK,EAASC,UAAUN,GAAkB,KAG9F,IAAItB,EAAW,OAAkBJ,MAAMmB,GACnCc,EAAWnB,KAAKd,MAAMI,EAAS,IACnC,GAAI6B,EAASC,KACT,MAAM,IAAI/B,MAAM,kDAKpB,OAHAe,EAAkBe,EAGX,CAACb,EAAeF,IAEpBR,EA/C2B,K,+DCLtC,0GAIA,MAAMyB,EAAgB,EACpBC,QACAC,kBACAC,QACAC,kBAEA,MAAMC,EAAUH,EAAgBI,IAAIC,IAClC,MAAOC,EAASC,GAAQF,EACxB,IAAIG,EAAW,GAYf,OAVa,OAATD,QAA0B,IAATA,GAAmBA,EAAK1C,SAC3C2C,EAAWD,EAAKH,IAAIK,GACE,oBAATA,EACFA,EAAKR,EAAOF,GAGdU,IAIJ,eAAIH,KAAYE,KAEnBE,EAAW,GAAGP,EAAQQ,KAAK,OAAOT,EAAc,IAAIA,EAAgB,KAC1E,OAAOQ,GAGHE,EAAU,CAACC,EAASb,EAAiBc,EAAY,KAAO,aAAIC,UAAU,kBAAmB,CAC7Fd,MAAO,CACLe,UAAW7C,OACX8C,MAAO,CAAC9C,OAAQ+C,OAAQC,KAAMC,YAC3BN,GAELO,SAAU,CACRC,WAAY,CACV,MACE,OAAOC,KAAKN,OAGd,IAAIO,GACFD,KAAKE,MAAM,QAASD,MAM1B,OAAOE,GACL,IAAIC,EAEJ,OAAOD,EAAcb,EAAS,CAC5Be,MAAO,MACL,IAAI7B,EAAQ,GAERwB,KAAKM,WACP9B,EAAQwB,KAAKM,SAASC,OAGxB,MAAMC,EAAkBjC,EAAc,CACpCC,QACAC,kBACAC,MAAOsB,KAAKS,OACZ9B,YAAaqB,KAAKU,OAAOrD,KAAKsB,cAGhC,OADAqB,KAAKU,OAAOrD,KAAKsB,YAAc,GACxB6B,GAdF,GAgBPG,GAAI,IAAKX,KAAKY,WACZvE,MAAO4D,IACLD,KAAKD,WAAaE,EAAOY,OAAOnB,QAGpCoB,SAAU,CACRpB,MAAOM,KAAKD,aAEoB,QAAhCK,EAAeJ,KAAKe,cAAqC,IAAjBX,OAA0B,EAASA,EAAaY,UAG9FC,gBAAiB,CACfxC,kBACAa,UACAC,eAGE2B,EAAa,CAAC5B,EAASR,IAAmBS,GAAaF,EAAQC,EAAS,CAACR,GAAiBS,GAE1F4B,EAAU,CAAC7B,EAASb,EAAiBc,EAAY,KAAO,aAAIC,UAAU,kBAAmB,CAC7F4B,YAAY,EACZ1C,MAAO,CACLe,UAAW7C,UACR2C,GAGL,OAAOY,EAAekB,GACpB,MAAM,SACJC,EAAQ,KACRjE,EAAI,MACJqB,EAAK,OACL6C,GACEF,EACJ,OAAOlB,EAAcb,EAAS,IAAKjC,EACjCgD,MAAO,MACL,IAAI7B,EAAQ,GAER+C,EAAOjB,WACT9B,EAAQ+C,EAAOjB,SAASC,OAG1B,MAAMC,EAAkBjC,EAAc,CACpCC,QACAC,kBACAC,QACAC,YAAatB,EAAKsB,cAGpB,OADAtB,EAAKsB,YAAc,GACZ6B,GAdF,GAgBPG,GAAI,IAAKtD,EAAKsD,IAEda,MAAO,IAAKnE,EAAKmE,QAEhBF,IAGLL,gBAAiB,CACfG,YAAY,EACZ3C,kBACAa,UACAC,eAGEkC,EAAa,CAACnC,EAASR,IAAmBS,GAAa4B,EAAQ7B,EAAS,CAACR,GAAiBS,GAEhG,IAAImC,EAAc,CAAC,IAAK,OAAQ,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,OAAQ,MAAO,MAAO,MAAO,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,OAAQ,OAAQ,MAAO,WAAY,OAAQ,WAAY,KAAM,MAAO,UAAW,MAAO,SAAU,MAAO,KAAM,KAAM,KAAM,QAAS,WAAY,aAAc,SAAU,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,SAAU,MAAO,QAAS,MAAO,MAAO,SAAU,QAAS,SAAU,KAAM,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,WAAY,OAAQ,QAAS,MAAO,WAAY,SAAU,KAAM,WAAY,SAAU,SAAU,IAAK,QAAS,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,SAAU,UAAW,SAAU,QAAS,SAAU,OAAQ,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,QAAS,KAAM,QAAS,OAAQ,QAAS,KAAM,QAAS,IAAK,KAAM,MAAO,QAAS,MACz7B,SAAU,WAAY,OAAQ,UAAW,gBAAiB,IAAK,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,MAAO,OAAQ,SAE3MC,EAAgB,CAAC,QAAS,SAAU,YAExC,MAAMC,EAASC,IACb,MAAM,QACJvC,EACAb,gBAAiBqD,EACjBvC,UAAWwC,EAAe,WAC1BX,GACES,EAAeG,cAAcf,gBAEjC,OAAIG,EACK,CAACrC,KAAYC,IAASO,GAAa4B,EAAQ7B,EAAS,IAAIwC,EAAc,CAAC/C,EAASC,IAAQ,IAAK+C,KAC/FxC,IAIA,CAACR,KAAYC,IAASO,GAAaF,EAAQC,EAAS,IAAIwC,EAAc,CAAC/C,EAASC,IAAQ,IAAK+C,KAC/FxC,KAIPmC,EAAYO,QAAQC,IAClBN,EAAOM,GAAQ,CAACnD,KAAYC,IAASyC,EAAWS,EAAM,CAACnD,EAASC,MAGlE2C,EAAcM,QAAQC,IACpBN,EAAOM,GAAQ,CAACnD,KAAYC,IAASkC,EAAWgB,EAAM,CAACnD,EAASC,MAgBvC,aAAIQ,UAAU,gBAAiB,CACxDd,MAAO,CACLF,MAAO,CACLF,KAAM6D,OACNC,UAAU,IAGdC,MAAO,CACL,MAAMpC,GACJD,KAAKsC,UAAUrC,KAInBH,SAAU,CACR,SACE,OAAOE,KAAKuC,MAAMC,IAAIC,IAGxB,WACE,MAAO,eAAezC,KAAK0C,SAI/BC,QAAS,CACP,UAAUC,GACJ5C,KAAKM,UACPN,KAAKM,SAASuC,IAAID,GAGpB,MAAME,EAAYX,OAAOY,KAAKH,GAC9B,IAAII,EAAcF,EAAUG,OAAO,CAACC,EAAKC,KACvC,IAAIC,EAAMF,EAEV,OADAE,GAAO,KAAKD,MAAQP,EAASO,QACtBC,GACN,IAAIpD,KAAK0C,cACZM,GAAe,IACfK,SAASC,cAAc,IAAItD,KAAKuD,UAAYC,UAAYR,IAK5D,UACE,MAAMS,EAAYJ,SAASlD,cAAc,SACzCsD,EAAUC,aAAa,KAAM1D,KAAKuD,UAClCF,SAASM,KAAKC,YAAYH,GAC1BzD,KAAKsC,UAAUtC,KAAKxB,QAGtB,OAAO2B,GAGL,OAAOA,EAAc,MAAO,CAC1BW,SAAU,CACR+C,MAAO,sBAER7D,KAAKe,OAAOC,YAKJ,U,qCChPf,0VAEI8C,EAAsC3B,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAEPQ,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlEM,EAA4C,SAAUf,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAOvEmB,EAAU,SAEjBC,EAAqB,WACrB,SAASA,KAkBT,OAhBAA,EAAIC,WAAa,SAAUC,EAAKC,GAC5B,GAAY,OAARD,QAAwBE,IAARF,EAChB,MAAM,IAAIrK,MAAM,QAAUsK,EAAO,4BAGzCH,EAAIK,WAAa,SAAUH,EAAKC,GAC5B,IAAKD,GAAOA,EAAII,MAAM,SAClB,MAAM,IAAIzK,MAAM,QAAUsK,EAAO,oCAGzCH,EAAIO,KAAO,SAAUL,EAAKM,EAAQL,GAE9B,KAAMD,KAAOM,GACT,MAAM,IAAI3K,MAAM,WAAasK,EAAO,WAAaD,EAAM,MAGxDF,EAnBa,GAuBpBS,EAA0B,WAC1B,SAASA,KAuBT,OArBAhF,OAAOiF,eAAeD,EAAU,YAAa,CACzC5G,IAAK,WACD,MAAyB,kBAAX8G,QAElBC,YAAY,EACZC,cAAc,IAElBpF,OAAOiF,eAAeD,EAAU,cAAe,CAC3C5G,IAAK,WACD,MAAuB,kBAATiH,MAAqB,kBAAmBA,MAE1DF,YAAY,EACZC,cAAc,IAElBpF,OAAOiF,eAAeD,EAAU,SAAU,CACtC5G,IAAK,WACD,OAAQP,KAAKyH,YAAczH,KAAK0H,aAEpCJ,YAAY,EACZC,cAAc,IAEXJ,EAxBkB,GA4BtB,SAASQ,EAActK,EAAMuK,GAChC,IAAIC,EAAS,GAab,OAZIC,EAAczK,IACdwK,EAAS,yBAA2BxK,EAAKY,WACrC2J,IACAC,GAAU,eAAiBE,EAAkB1K,GAAQ,MAGpC,kBAATA,IACZwK,EAAS,yBAA2BxK,EAAKf,OACrCsL,IACAC,GAAU,eAAiBxK,EAAO,MAGnCwK,EAGJ,SAASE,EAAkB1K,GAC9B,IAAI2K,EAAO,IAAIrK,WAAWN,GAEtB4K,EAAM,GAMV,OALAD,EAAK/F,SAAQ,SAAUiG,GACnB,IAAIC,EAAMD,EAAM,GAAK,IAAM,GAC3BD,GAAO,KAAOE,EAAMD,EAAIE,SAAS,IAAM,OAGpCH,EAAII,OAAO,EAAGJ,EAAI3L,OAAS,GAI/B,SAASwL,EAAclB,GAC1B,OAAOA,GAA8B,qBAAhB0B,cAChB1B,aAAe0B,aAEX1B,EAAI2B,aAAwC,gBAAzB3B,EAAI2B,YAAY1B,MAGzC,SAAS2B,EAAYC,EAAQC,EAAeC,EAAYC,EAAKC,EAAoBC,EAASC,EAAmBC,EAAiBC,GACjI,OAAOzE,EAAUxE,UAAM,OAAQ,GAAQ,WACnC,IAAIkJ,EAAIC,EAASC,EAAOC,EAAIxC,EAAMnH,EAAO4J,EAAcjL,EACvD,OAAOmH,EAAYxF,MAAM,SAAUuJ,GAC/B,OAAQA,EAAGzD,OACP,KAAK,EAED,OADAqD,EAAU,GACLN,EACE,CAAC,EAAaA,KADW,CAAC,EAAa,GAElD,KAAK,EACDO,EAAQG,EAAGxD,OACPqD,IACWF,EAAK,GACZA,EAAG,iBAAmB,UAAYE,EADtCD,EAEID,GAERK,EAAGzD,MAAQ,EACf,KAAK,EAKD,OAJAuD,EAAKG,IAAsB3C,EAAOwC,EAAG,GAAI3J,EAAQ2J,EAAG,GACpDF,EAAQtC,GAAQnH,EAChB+I,EAAOgB,IAAI,OAASC,MAAO,IAAMhB,EAAgB,6BAA+Bf,EAAcmB,EAASC,GAAqB,KAC5HO,EAAexB,EAAcgB,GAAW,cAAgB,OACjD,CAAC,EAAaH,EAAWgB,KAAKf,EAAK,CAClCE,QAASA,EACTK,QAASrF,EAAS,GAAIqF,EAASF,GAC/BK,aAAcA,EACdN,gBAAiBA,KAE7B,KAAK,EAGD,OAFA3K,EAAWkL,EAAGxD,OACd0C,EAAOgB,IAAI,OAASC,MAAO,IAAMhB,EAAgB,kDAAoDrK,EAASuL,WAAa,KACpH,CAAC,UAMrB,SAASC,EAAapB,GACzB,YAAe3B,IAAX2B,EACO,IAAIqB,EAAc,OAASC,aAEvB,OAAXtB,EACO,OAAWuB,SAElBvB,EAAOgB,IACAhB,EAEJ,IAAIqB,EAAcrB,GAG7B,IAAIwB,EAAqC,WACrC,SAASA,EAAoBC,EAASC,GAClCnK,KAAKkK,QAAUA,EACflK,KAAKmK,SAAWA,EAWpB,OATAF,EAAoBlN,UAAUqN,QAAU,WACpC,IAAIC,EAAQrK,KAAKkK,QAAQI,UAAUzM,QAAQmC,KAAKmK,UAC5CE,GAAS,GACTrK,KAAKkK,QAAQI,UAAUC,OAAOF,EAAO,GAEH,IAAlCrK,KAAKkK,QAAQI,UAAUhO,QAAgB0D,KAAKkK,QAAQM,gBACpDxK,KAAKkK,QAAQM,iBAAiBC,OAAM,SAAU5E,QAG/CoE,EAd6B,GAkBpCH,EAA+B,WAC/B,SAASA,EAAcY,GACnB1K,KAAK0K,gBAAkBA,EACvB1K,KAAK2K,cAAgBC,QAsBzB,OApBAd,EAAc/M,UAAU0M,IAAM,SAAUoB,EAAUC,GAC9C,GAAID,GAAY7K,KAAK0K,gBACjB,OAAQG,GACJ,KAAK,OAASE,SACd,KAAK,OAASxO,MACVyD,KAAK2K,cAAcK,MAAM,KAAM,IAAIpL,MAAOqL,cAAgB,KAAO,OAASJ,GAAY,KAAOC,GAC7F,MACJ,KAAK,OAASI,QACVlL,KAAK2K,cAAcQ,KAAK,KAAM,IAAIvL,MAAOqL,cAAgB,KAAO,OAASJ,GAAY,KAAOC,GAC5F,MACJ,KAAK,OAASf,YACV/J,KAAK2K,cAAcS,KAAK,KAAM,IAAIxL,MAAOqL,cAAgB,KAAO,OAASJ,GAAY,KAAOC,GAC5F,MACJ,QAEI9K,KAAK2K,cAAclB,IAAI,KAAM,IAAI7J,MAAOqL,cAAgB,KAAO,OAASJ,GAAY,KAAOC,GAC3F,QAIThB,EAzBuB,GA6B3B,SAASN,IACZ,IAAI6B,EAAsB,uBAI1B,OAHIlE,EAASmE,SACTD,EAAsB,cAEnB,CAACA,EAAqBE,EAAmB9E,EAAS+E,IAAaC,IAAcC,MAGjF,SAASH,EAAmBI,EAASC,EAAIC,EAASC,GAErD,IAAIC,EAAY,qBACZC,EAAgBL,EAAQlP,MAAM,KAiBlC,OAhBAsP,GAAaC,EAAc,GAAK,IAAMA,EAAc,GACpDD,GAAa,KAAOJ,EAAU,KAE1BI,GADAH,GAAa,KAAPA,EACOA,EAAK,KAGL,eAEjBG,GAAa,GAAKF,EAEdE,GADAD,EACa,KAAOA,EAGP,4BAEjBC,GAAa,IACNA,EAEX,SAASP,IACL,IAAIrE,EAASmE,OAaT,MAAO,GAZP,OAAQW,EAAQC,UACZ,IAAK,QACD,MAAO,aACX,IAAK,SACD,MAAO,QACX,IAAK,QACD,MAAO,QACX,QACI,OAAOD,EAAQC,UAO/B,SAASR,IACL,GAAIvE,EAASmE,OACT,OAAOW,EAAQE,SAASC,KAIhC,SAASX,IACL,OAAItE,EAASmE,OACF,SAGA,a,wDCtSf,kCAGA,IAAIe,EAA4B,WAC5B,SAASA,KAQT,OAJAA,EAAWtP,UAAU0M,IAAM,SAAU6C,EAAWC,KAGhDF,EAAWrC,SAAW,IAAIqC,EACnBA,EAToB,I,4GCD/B,IAAIG,EAAwC,WACxC,IAAIC,EAAgBtK,OAAOuK,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIzI,KAAKyI,EAAOA,EAAExI,eAAeD,KAAIwI,EAAExI,GAAKyI,EAAEzI,KACzE,OAAO,SAAUwI,EAAGC,GAEhB,SAASC,IAAO/M,KAAKuI,YAAcsE,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAE9P,UAAkB,OAAN+P,EAAa3K,OAAO6K,OAAOF,IAAMC,EAAGhQ,UAAY+P,EAAE/P,UAAW,IAAIgQ,IAP3C,GAWxCE,EAA2B,SAAUC,GAOrC,SAASD,EAAUE,EAAcvD,GAC7B,IAAIwD,EAAapN,KAAKuI,YAClB8E,EAAQrN,KACRsN,EAAYF,EAAWrQ,UAM3B,OALAsQ,EAAQH,EAAO3I,KAAKvE,KAAMmN,IAAiBnN,KAC3CqN,EAAMzD,WAAaA,EAGnByD,EAAMV,UAAYW,EACXD,EAEX,OAjBAb,EAAUS,EAAWC,GAiBdD,EAlBmB,CAmB5B1Q,OAGEgR,EAA8B,SAAUL,GAMxC,SAASK,EAAaJ,GAClB,IAAIC,EAAapN,KAAKuI,iBACD,IAAjB4E,IAA2BA,EAAe,uBAC9C,IAAIE,EAAQrN,KACRsN,EAAYF,EAAWrQ,UAK3B,OAJAsQ,EAAQH,EAAO3I,KAAKvE,KAAMmN,IAAiBnN,KAG3CqN,EAAMV,UAAYW,EACXD,EAEX,OAhBAb,EAAUe,EAAcL,GAgBjBK,EAjBsB,CAkB/BhR,OAGEiR,EAA4B,SAAUN,GAMtC,SAASM,EAAWL,GAChB,IAAIC,EAAapN,KAAKuI,iBACD,IAAjB4E,IAA2BA,EAAe,sBAC9C,IAAIE,EAAQrN,KACRsN,EAAYF,EAAWrQ,UAK3B,OAJAsQ,EAAQH,EAAO3I,KAAKvE,KAAMmN,IAAiBnN,KAG3CqN,EAAMV,UAAYW,EACXD,EAEX,OAhBAb,EAAUgB,EAAYN,GAgBfM,EAjBoB,CAkB7BjR,OCxEEuH,EAAsC3B,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAGPyJ,EAA8B,WAC9B,SAASA,EAAa7D,EAAY8D,EAAY5E,GAC1C9I,KAAK4J,WAAaA,EAClB5J,KAAK0N,WAAaA,EAClB1N,KAAK8I,QAAUA,EAEnB,OAAO2E,EANsB,GAa7BE,EAA4B,WAC5B,SAASA,KAoBT,OAlBAA,EAAW5Q,UAAUwD,IAAM,SAAUqI,EAAKgF,GACtC,OAAO5N,KAAK6N,KAAK/J,EAAS,GAAI8J,EAAS,CAAEE,OAAQ,MAAOlF,IAAKA,MAEjE+E,EAAW5Q,UAAU4M,KAAO,SAAUf,EAAKgF,GACvC,OAAO5N,KAAK6N,KAAK/J,EAAS,GAAI8J,EAAS,CAAEE,OAAQ,OAAQlF,IAAKA,MAElE+E,EAAW5Q,UAAUgR,OAAS,SAAUnF,EAAKgF,GACzC,OAAO5N,KAAK6N,KAAK/J,EAAS,GAAI8J,EAAS,CAAEE,OAAQ,SAAUlF,IAAKA,MAQpE+E,EAAW5Q,UAAUiR,gBAAkB,SAAUpF,GAC7C,MAAO,IAEJ+E,EArBoB,G,wBCtB3B,EAAwC,WACxC,IAAIlB,EAAgBtK,OAAOuK,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIzI,KAAKyI,EAAOA,EAAExI,eAAeD,KAAIwI,EAAExI,GAAKyI,EAAEzI,KACzE,OAAO,SAAUwI,EAAGC,GAEhB,SAASC,IAAO/M,KAAKuI,YAAcsE,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAE9P,UAAkB,OAAN+P,EAAa3K,OAAO6K,OAAOF,IAAMC,EAAGhQ,UAAY+P,EAAE/P,UAAW,IAAIgQ,IAP3C,GAUxC,EAAsC5K,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAEPQ,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlEM,EAA4C,SAAUf,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAO9E,EAAiC,SAAU4H,GAE3C,SAASe,EAAgBxF,GACrB,IAAI4E,EAAQH,EAAO3I,KAAKvE,OAASA,KAEjC,GADAqN,EAAM5E,OAASA,EACM,qBAAVyF,MAAuB,CAG9B,IAAIC,EAA0D,QAE9Dd,EAAMe,IAAM,IAAKD,EAAY,gBAAiBE,WAC9ChB,EAAMiB,UAAYH,EAAY,cAG9Bd,EAAMiB,UAAYH,EAAY,eAAZA,CAA4Bd,EAAMiB,UAAWjB,EAAMe,KAErEf,EAAMkB,oBAAsBJ,EAAY,yBAGxCd,EAAMiB,UAAYJ,MAAMM,KAAKhH,MAC7B6F,EAAMkB,oBAAsBE,gBAEhC,OAAOpB,EAyFX,OA9GA,EAAUY,EAAiBf,GAwB3Be,EAAgBlR,UAAU8Q,KAAO,SAAUa,GACvC,OAAOlK,EAAUxE,UAAM,OAAQ,GAAQ,WACnC,IAAI2O,EAAiB3D,EAAO4D,EAAWC,EAAWxQ,EAAUyQ,EAAKhG,EAASiG,EACtE1B,EAAQrN,KACZ,OAAOwF,EAAYxF,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAED,GAAI4I,EAAQM,aAAeN,EAAQM,YAAYC,QAC3C,MAAM,IAAIzB,EAEd,IAAKkB,EAAQZ,OACT,MAAM,IAAIvR,MAAM,sBAEpB,IAAKmS,EAAQ9F,IACT,MAAM,IAAIrM,MAAM,mBAEpBoS,EAAkB,IAAI3O,KAAKuO,oBAEvBG,EAAQM,cACRN,EAAQM,YAAYE,QAAU,WAC1BP,EAAgBQ,QAChBnE,EAAQ,IAAIwC,IAGpBoB,EAAY,KACRF,EAAQU,UACRP,EAAYH,EAAQU,QACpBR,EAAYS,YAAW,WACnBV,EAAgBQ,QAChB9B,EAAM5E,OAAOgB,IAAI,OAASyB,QAAS,8BACnCF,EAAQ,IAAIuC,IACbsB,IAEP3F,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,EAAG,IAChB,CAAC,EAAaxG,KAAKsO,UAAUI,EAAQ9F,IAAK,CACzCnD,KAAMiJ,EAAQ5F,QACdwG,MAAO,WACPC,aAAyC,IAA5Bb,EAAQ1F,gBAA2B,UAAY,cAC5DG,QAAS,EAAS,CAAE,eAAgB,2BAA4B,mBAAoB,kBAAoBuF,EAAQvF,SAChH2E,OAAQY,EAAQZ,OAChB0B,KAAM,OACNC,SAAU,SACVC,OAAQf,EAAgBe,UAEpC,KAAK,EAED,OADArR,EAAW6K,EAAGnD,OACP,CAAC,EAAa,GACzB,KAAK,EAED,GADA+I,EAAM5F,EAAGnD,OACLiF,EACA,MAAMA,EAGV,MADAhL,KAAKyI,OAAOgB,IAAI,OAASyB,QAAS,4BAA8B4D,EAAM,KAChEA,EACV,KAAK,EAOD,OANIF,GACAe,aAAaf,GAEbF,EAAQM,cACRN,EAAQM,YAAYE,QAAU,MAE3B,CAAC,GACZ,KAAK,EACD,IAAK7Q,EAASuR,GACV,MAAM,IAAI3C,EAAU5O,EAASqP,WAAYrP,EAASwR,QAGtD,OADA/G,EAAUgH,EAAmBzR,EAAUqQ,EAAQpF,cACxC,CAAC,EAAaR,GACzB,KAAK,EAED,OADAiG,EAAU7F,EAAGnD,OACN,CAAC,EAAc,IAAI0H,EAAapP,EAASwR,OAAQxR,EAASqP,WAAYqB,YAKjGd,EAAgBlR,UAAUiR,gBAAkB,SAAUpF,GAClD,IAAImH,EAAU,GAKd,OAJI,OAASzE,QAAUtL,KAAKoO,KAExBpO,KAAKoO,IAAI4B,WAAWpH,GAAK,SAAUzD,EAAG8K,GAAK,OAAOF,EAAUE,EAAE7Q,KAAK,SAEhE2Q,GAEJ9B,EA/GyB,CAgHlCN,GAEF,SAASmC,EAAmBzR,EAAUiL,GAClC,IAAIR,EACJ,OAAQQ,GACJ,IAAK,cACDR,EAAUzK,EAAS6R,cACnB,MACJ,IAAK,OACDpH,EAAUzK,EAAS8R,OACnB,MACJ,IAAK,OACL,IAAK,WACL,IAAK,OACD,MAAM,IAAI5T,MAAM+M,EAAe,sBACnC,QACIR,EAAUzK,EAAS8R,OACnB,MAER,OAAOrH,EC5LX,ICCWsH,EDDP,EAAwC,WACxC,IAAI3D,EAAgBtK,OAAOuK,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIzI,KAAKyI,EAAOA,EAAExI,eAAeD,KAAIwI,EAAExI,GAAKyI,EAAEzI,KACzE,OAAO,SAAUwI,EAAGC,GAEhB,SAASC,IAAO/M,KAAKuI,YAAcsE,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAE9P,UAAkB,OAAN+P,EAAa3K,OAAO6K,OAAOF,IAAMC,EAAGhQ,UAAY+P,EAAE/P,UAAW,IAAIgQ,IAP3C,GAaxC,EAA+B,SAAUG,GAEzC,SAASmD,EAAc5H,GACnB,IAAI4E,EAAQH,EAAO3I,KAAKvE,OAASA,KAEjC,OADAqN,EAAM5E,OAASA,EACR4E,EA+DX,OAnEA,EAAUgD,EAAenD,GAOzBmD,EAActT,UAAU8Q,KAAO,SAAUa,GACrC,IAAIrB,EAAQrN,KAEZ,OAAI0O,EAAQM,aAAeN,EAAQM,YAAYC,QACpCpK,QAAQE,OAAO,IAAIyI,GAEzBkB,EAAQZ,OAGRY,EAAQ9F,IAGN,IAAI/D,SAAQ,SAAUC,EAASC,GAClC,IAAIuL,EAAM,IAAIC,eACdD,EAAIE,KAAK9B,EAAQZ,OAAQY,EAAQ9F,KAAK,GACtC0H,EAAItH,qBAA8ClC,IAA5B4H,EAAQ1F,iBAAuC0F,EAAQ1F,gBAC7EsH,EAAIG,iBAAiB,mBAAoB,kBAEzCH,EAAIG,iBAAiB,eAAgB,4BACrC,IAAItH,EAAUuF,EAAQvF,QAClBA,GACAhH,OAAOY,KAAKoG,GACPlH,SAAQ,SAAUyO,GACnBJ,EAAIG,iBAAiBC,EAAQvH,EAAQuH,OAGzChC,EAAQpF,eACRgH,EAAIhH,aAAeoF,EAAQpF,cAE3BoF,EAAQM,cACRN,EAAQM,YAAYE,QAAU,WAC1BoB,EAAInB,QACJpK,EAAO,IAAIyI,KAGfkB,EAAQU,UACRkB,EAAIlB,QAAUV,EAAQU,SAE1BkB,EAAIK,OAAS,WACLjC,EAAQM,cACRN,EAAQM,YAAYE,QAAU,MAE9BoB,EAAIT,QAAU,KAAOS,EAAIT,OAAS,IAClC/K,EAAQ,IAAI2I,EAAa6C,EAAIT,OAAQS,EAAI5C,WAAY4C,EAAIjS,UAAYiS,EAAIM,eAGzE7L,EAAO,IAAIkI,EAAUqD,EAAI5C,WAAY4C,EAAIT,UAGjDS,EAAIO,QAAU,WACVxD,EAAM5E,OAAOgB,IAAI,OAASyB,QAAS,4BAA8BoF,EAAIT,OAAS,KAAOS,EAAI5C,WAAa,KACtG3I,EAAO,IAAIkI,EAAUqD,EAAI5C,WAAY4C,EAAIT,UAE7CS,EAAIQ,UAAY,WACZzD,EAAM5E,OAAOgB,IAAI,OAASyB,QAAS,8BACnCnG,EAAO,IAAIwI,IAEf+C,EAAIzC,KAAKa,EAAQ5F,SAAW,OA/CrBjE,QAAQE,OAAO,IAAIxI,MAAM,oBAHzBsI,QAAQE,OAAO,IAAIxI,MAAM,wBAqDjC8T,EApEuB,CAqEhC1C,GElFE,EAAwC,WACxC,IAAIlB,EAAgBtK,OAAOuK,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIzI,KAAKyI,EAAOA,EAAExI,eAAeD,KAAIwI,EAAExI,GAAKyI,EAAEzI,KACzE,OAAO,SAAUwI,EAAGC,GAEhB,SAASC,IAAO/M,KAAKuI,YAAcsE,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAE9P,UAAkB,OAAN+P,EAAa3K,OAAO6K,OAAOF,IAAMC,EAAGhQ,UAAY+P,EAAE/P,UAAW,IAAIgQ,IAP3C,GAgBxC,EAAmC,SAAUG,GAG7C,SAAS6D,EAAkBtI,GACvB,IAAI4E,EAAQH,EAAO3I,KAAKvE,OAASA,KACjC,GAAqB,qBAAVkO,OAAyB,OAAS5C,OACzC+B,EAAM1E,WAAa,IAAI,EAAgBF,OAEtC,IAA8B,qBAAnB8H,eAIZ,MAAM,IAAIhU,MAAM,+BAHhB8Q,EAAM1E,WAAa,IAAI,EAAcF,GAKzC,OAAO4E,EAmBX,OAhCA,EAAU0D,EAAmB7D,GAgB7B6D,EAAkBhU,UAAU8Q,KAAO,SAAUa,GAEzC,OAAIA,EAAQM,aAAeN,EAAQM,YAAYC,QACpCpK,QAAQE,OAAO,IAAIyI,GAEzBkB,EAAQZ,OAGRY,EAAQ9F,IAGN5I,KAAK2I,WAAWkF,KAAKa,GAFjB7J,QAAQE,OAAO,IAAIxI,MAAM,oBAHzBsI,QAAQE,OAAO,IAAIxI,MAAM,wBAOxCwU,EAAkBhU,UAAUiR,gBAAkB,SAAUpF,GACpD,OAAO5I,KAAK2I,WAAWqF,gBAAgBpF,IAEpCmI,EAjC2B,CAkCpCpD,G,aDhDF,SAAWyC,GAEPA,EAAYA,EAAY,cAAgB,GAAK,aAE7CA,EAAYA,EAAY,cAAgB,GAAK,aAE7CA,EAAYA,EAAY,cAAgB,GAAK,aAE7CA,EAAYA,EAAY,oBAAsB,GAAK,mBAEnDA,EAAYA,EAAY,oBAAsB,GAAK,mBAEnDA,EAAYA,EAAY,QAAU,GAAK,OAEvCA,EAAYA,EAAY,SAAW,GAAK,SAd5C,CAeGA,IAAgBA,EAAc,KEfjC,ICyCWY,EDzCP,EAAyB,WACzB,SAASC,IACLjR,KAAKsK,UAAY,GA4BrB,OA1BA2G,EAAQlU,UAAUmI,KAAO,SAAUhG,GAC/B,IAAK,IAAIgS,EAAK,EAAGhI,EAAKlJ,KAAKsK,UAAW4G,EAAKhI,EAAG5M,OAAQ4U,IAAM,CACxD,IAAI/G,EAAWjB,EAAGgI,GAClB/G,EAASjF,KAAKhG,KAGtB+R,EAAQlU,UAAUiO,MAAQ,SAAUmG,GAChC,IAAK,IAAID,EAAK,EAAGhI,EAAKlJ,KAAKsK,UAAW4G,EAAKhI,EAAG5M,OAAQ4U,IAAM,CACxD,IAAI/G,EAAWjB,EAAGgI,GACd/G,EAASa,OACTb,EAASa,MAAMmG,KAI3BF,EAAQlU,UAAUqU,SAAW,WACzB,IAAK,IAAIF,EAAK,EAAGhI,EAAKlJ,KAAKsK,UAAW4G,EAAKhI,EAAG5M,OAAQ4U,IAAM,CACxD,IAAI/G,EAAWjB,EAAGgI,GACd/G,EAASiH,UACTjH,EAASiH,aAIrBH,EAAQlU,UAAUsU,UAAY,SAAUlH,GAEpC,OADAnK,KAAKsK,UAAU9D,KAAK2D,GACb,IAAI,OAAoBnK,KAAMmK,IAElC8G,EA9BiB,GCFxB,EAAwC,SAAUxM,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlE,EAA4C,SAAUT,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAQ9EgM,EAAwB,IACxBC,EAA8B,MAGlC,SAAWP,GAEPA,EAAmB,gBAAkB,eAErCA,EAAmB,cAAgB,aAEnCA,EAAmB,aAAe,YAElCA,EAAmB,iBAAmB,gBAEtCA,EAAmB,gBAAkB,gBAVzC,CAWGA,IAAuBA,EAAqB,KAE/C,ICvDWQ,EAYAC,ED2CP,EAA+B,WAC/B,SAASC,EAAcC,EAAYlJ,EAAQmJ,EAAUC,GACjD,IAAIxE,EAAQrN,KACZA,KAAK8R,cAAgB,EACrB,OAAInL,WAAWgL,EAAY,cAC3B,OAAIhL,WAAW8B,EAAQ,UACvB,OAAI9B,WAAWiL,EAAU,YACzB5R,KAAK+R,4BAA8BT,EACnCtR,KAAKgS,gCAAkCT,EACvCvR,KAAKyI,OAASA,EACdzI,KAAK4R,SAAWA,EAChB5R,KAAK2R,WAAaA,EAClB3R,KAAK6R,gBAAkBA,EACvB7R,KAAKiS,kBAAoB,IAAInV,EAAA,KAC7BkD,KAAK2R,WAAWO,UAAY,SAAU7U,GAAQ,OAAOgQ,EAAM8E,oBAAoB9U,IAC/E2C,KAAK2R,WAAWS,QAAU,SAAUpH,GAAS,OAAOqC,EAAMgF,iBAAiBrH,IAC3EhL,KAAKsS,UAAY,GACjBtS,KAAK2C,QAAU,GACf3C,KAAKuS,gBAAkB,GACvBvS,KAAKwS,sBAAwB,GAC7BxS,KAAKyS,qBAAuB,GAC5BzS,KAAK0S,aAAe,EACpB1S,KAAK2S,2BAA4B,EACjC3S,KAAK4S,gBAAkB5B,EAAmB6B,aAC1C7S,KAAK8S,mBAAoB,EACzB9S,KAAK+S,kBAAoB/S,KAAK4R,SAASoB,aAAa,CAAE1U,KAAM8R,EAAY6C,OA82B5E,OAv2BAvB,EAAc1E,OAAS,SAAU2E,EAAYlJ,EAAQmJ,EAAUC,GAC3D,OAAO,IAAIH,EAAcC,EAAYlJ,EAAQmJ,EAAUC,IAE3D1P,OAAOiF,eAAesK,EAAc3U,UAAW,QAAS,CAEpDwD,IAAK,WACD,OAAOP,KAAK4S,iBAEhBtL,YAAY,EACZC,cAAc,IAElBpF,OAAOiF,eAAesK,EAAc3U,UAAW,eAAgB,CAI3DwD,IAAK,WACD,OAAOP,KAAK2R,YAAc3R,KAAK2R,WAAWuB,cAAwB,MAEtE5L,YAAY,EACZC,cAAc,IAElBpF,OAAOiF,eAAesK,EAAc3U,UAAW,UAAW,CAEtDwD,IAAK,WACD,OAAOP,KAAK2R,WAAWwB,SAAW,IAOtCtQ,IAAK,SAAU+F,GACX,GAAI5I,KAAK4S,kBAAoB5B,EAAmB6B,cAAgB7S,KAAK4S,kBAAoB5B,EAAmBoC,aACxG,MAAM,IAAI7W,MAAM,0FAEpB,IAAKqM,EACD,MAAM,IAAIrM,MAAM,8CAEpByD,KAAK2R,WAAWwB,QAAUvK,GAE9BtB,YAAY,EACZC,cAAc,IAMlBmK,EAAc3U,UAAUsW,MAAQ,WAE5B,OADArT,KAAKsT,aAAetT,KAAKuT,4BAClBvT,KAAKsT,cAEhB5B,EAAc3U,UAAUwW,0BAA4B,WAChD,OAAO,EAAUvT,UAAM,OAAQ,GAAQ,WACnC,IAAI8O,EACJ,OAAO,EAAY9O,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EACD,GAAI9F,KAAK4S,kBAAoB5B,EAAmB6B,aAC5C,MAAO,CAAC,EAAchO,QAAQE,OAAO,IAAIxI,MAAM,2EAEnDyD,KAAK4S,gBAAkB5B,EAAmBwC,WAC1CxT,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,2BAChCvK,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAK0T,iBAC9B,KAAK,EAKD,OAJAxK,EAAGnD,OACH/F,KAAK4S,gBAAkB5B,EAAmB2C,UAC1C3T,KAAK8S,mBAAoB,EACzB9S,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,yCACzB,CAAC,EAAa,GACzB,KAAK,EAID,OAHA3E,EAAM5F,EAAGnD,OACT/F,KAAK4S,gBAAkB5B,EAAmB6B,aAC1C7S,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,gEAAkE3E,EAAM,MACjG,CAAC,EAAcjK,QAAQE,OAAO+J,IACzC,KAAK,EAAG,MAAO,CAAC,WAKhC4C,EAAc3U,UAAU2W,cAAgB,WACpC,OAAO,EAAU1T,UAAM,OAAQ,GAAQ,WACnC,IAAI4T,EAAkB3W,EAAkB4W,EACpCxG,EAAQrN,KACZ,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAOD,OANA9F,KAAK8T,0BAAuBhN,EAC5B9G,KAAK2S,2BAA4B,EACjCiB,EAAmB,IAAI/O,SAAQ,SAAUC,EAASC,GAC9CsI,EAAM0G,kBAAoBjP,EAC1BuI,EAAM2G,kBAAoBjP,KAEvB,CAAC,EAAa/E,KAAK2R,WAAW0B,MAAMrT,KAAK4R,SAASqC,iBAC7D,KAAK,EACD/K,EAAGnD,OACHmD,EAAGpD,MAAQ,EACf,KAAK,EAOD,OANAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBvJ,EAAmB,CACf2U,SAAU5R,KAAK4R,SAAS/K,KACxB8E,QAAS3L,KAAK4R,SAASjG,SAE3B3L,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,8BACzB,CAAC,EAAazT,KAAKwI,YAAYxI,KAAKiS,kBAAkBjV,sBAAsBC,KACvF,KAAK,EAOD,OANAiM,EAAGnD,OACH/F,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,sBAAwB/J,KAAK4R,SAAS/K,KAAO,MAEnF7G,KAAKkU,iBACLlU,KAAKmU,qBACLnU,KAAKoU,yBACE,CAAC,EAAaR,GACzB,KAAK,EAKD,GAJA1K,EAAGnD,OAIC/F,KAAK8T,qBAIL,MAAM9T,KAAK8T,qBAEf,MAAO,CAAC,EAAa,GACzB,KAAK,EAOD,OANAD,EAAM3K,EAAGnD,OACT/F,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,oCAAsCI,EAAM,6CAC5E7T,KAAKkU,iBACLlU,KAAKqU,mBAGE,CAAC,EAAarU,KAAK2R,WAAW2C,KAAKT,IAC9C,KAAK,EAID,MADA3K,EAAGnD,OACG8N,EACV,KAAK,EAAG,MAAO,CAAC,WAShCnC,EAAc3U,UAAUuX,KAAO,WAC3B,OAAO,EAAUtU,UAAM,OAAQ,GAAQ,WACnC,IAAIsT,EACJ,OAAO,EAAYtT,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAGD,OAFAwN,EAAetT,KAAKsT,aACpBtT,KAAKuU,YAAcvU,KAAKwU,eACjB,CAAC,EAAaxU,KAAKuU,aAC9B,KAAK,EACDrL,EAAGnD,OACHmD,EAAGpD,MAAQ,EACf,KAAK,EAGD,OAFAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IAEf,CAAC,EAAa8M,GACzB,KAAK,EAGD,OADApK,EAAGnD,OACI,CAAC,EAAa,GACzB,KAAK,EAED,OADMmD,EAAGnD,OACF,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAKhC2L,EAAc3U,UAAUyX,aAAe,SAAUxJ,GAC7C,OAAIhL,KAAK4S,kBAAoB5B,EAAmB6B,cAC5C7S,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,8BAAgCzI,EAAQ,8DACjEnG,QAAQC,WAEf9E,KAAK4S,kBAAoB5B,EAAmByD,eAC5CzU,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,+BAAiCzI,EAAQ,2EAClEhL,KAAKuU,cAEhBvU,KAAK4S,gBAAkB5B,EAAmByD,cAC1CzU,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,2BAC5BzT,KAAK0U,sBAIL1U,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,iEAChC9D,aAAa3P,KAAK0U,sBAClB1U,KAAK0U,0BAAuB5N,EAC5B9G,KAAK2U,gBACE9P,QAAQC,YAEnB9E,KAAKkU,iBACLlU,KAAKqU,mBACLrU,KAAK8T,qBAAuB9I,GAAS,IAAIzO,MAAM,uEAIxCyD,KAAK2R,WAAW2C,KAAKtJ,MAShC0G,EAAc3U,UAAU6X,OAAS,SAAUC,GAGvC,IAFA,IAAIxH,EAAQrN,KACR8U,EAAO,GACF5D,EAAK,EAAGA,EAAK9M,UAAU9H,OAAQ4U,IACpC4D,EAAK5D,EAAK,GAAK9M,UAAU8M,GAE7B,IAEI6D,EAFA7L,EAAKlJ,KAAKgV,uBAAuBF,GAAOG,EAAU/L,EAAG,GAAIgM,EAAYhM,EAAG,GACxEiM,EAAuBnV,KAAKoV,uBAAuBP,EAAYC,EAAMI,GAErEhL,EAAU,IAAI,EAkClB,OAjCAA,EAAQM,eAAiB,WACrB,IAAI6K,EAAmBhI,EAAMiI,uBAAuBH,EAAqBzC,cAEzE,cADOrF,EAAMiF,UAAU6C,EAAqBzC,cACrCqC,EAAaxP,MAAK,WACrB,OAAO8H,EAAMkI,iBAAiBF,OAGtCrV,KAAKsS,UAAU6C,EAAqBzC,cAAgB,SAAU8C,EAAiBxK,GACvEA,EACAd,EAAQc,MAAMA,GAGTwK,IAEDA,EAAgBlX,OAAS8R,EAAYqF,WACjCD,EAAgBxK,MAChBd,EAAQc,MAAM,IAAIzO,MAAMiZ,EAAgBxK,QAGxCd,EAAQkH,WAIZlH,EAAQhF,KAAMsQ,EAAoB,QAI9CT,EAAe/U,KAAKuV,iBAAiBJ,GAChC1K,OAAM,SAAUtF,GACjB+E,EAAQc,MAAM7F,UACPkI,EAAMiF,UAAU6C,EAAqBzC,iBAEhD1S,KAAK0V,cAAcT,EAASF,GACrB7K,GAEXwH,EAAc3U,UAAUyL,YAAc,SAAUsC,GAE5C,OADA9K,KAAKoU,yBACEpU,KAAK2R,WAAW9D,KAAK/C,IAMhC4G,EAAc3U,UAAUwY,iBAAmB,SAAUzK,GACjD,OAAO9K,KAAKwI,YAAYxI,KAAK4R,SAASoB,aAAalI,KAWvD4G,EAAc3U,UAAU8Q,KAAO,SAAUgH,GAErC,IADA,IAAIC,EAAO,GACF5D,EAAK,EAAGA,EAAK9M,UAAU9H,OAAQ4U,IACpC4D,EAAK5D,EAAK,GAAK9M,UAAU8M,GAE7B,IAAIhI,EAAKlJ,KAAKgV,uBAAuBF,GAAOG,EAAU/L,EAAG,GAAIgM,EAAYhM,EAAG,GACxEyM,EAAc3V,KAAKuV,iBAAiBvV,KAAK4V,iBAAiBf,EAAYC,GAAM,EAAMI,IAEtF,OADAlV,KAAK0V,cAAcT,EAASU,GACrBA,GAaXjE,EAAc3U,UAAU8Y,OAAS,SAAUhB,GAGvC,IAFA,IAAIxH,EAAQrN,KACR8U,EAAO,GACF5D,EAAK,EAAGA,EAAK9M,UAAU9H,OAAQ4U,IACpC4D,EAAK5D,EAAK,GAAK9M,UAAU8M,GAE7B,IAAIhI,EAAKlJ,KAAKgV,uBAAuBF,GAAOG,EAAU/L,EAAG,GAAIgM,EAAYhM,EAAG,GACxEiM,EAAuBnV,KAAK4V,iBAAiBf,EAAYC,GAAM,EAAOI,GACtE7Q,EAAI,IAAIQ,SAAQ,SAAUC,EAASC,GAEnCsI,EAAMiF,UAAU6C,EAAqBzC,cAAgB,SAAU8C,EAAiBxK,GACxEA,EACAjG,EAAOiG,GAGFwK,IAEDA,EAAgBlX,OAAS8R,EAAYqF,WACjCD,EAAgBxK,MAChBjG,EAAO,IAAIxI,MAAMiZ,EAAgBxK,QAGjClG,EAAQ0Q,EAAgBnQ,QAI5BN,EAAO,IAAIxI,MAAM,4BAA8BiZ,EAAgBlX,SAI3E,IAAIyW,EAAe1H,EAAMkI,iBAAiBJ,GACrC1K,OAAM,SAAUtF,GACjBJ,EAAOI,UAEAkI,EAAMiF,UAAU6C,EAAqBzC,iBAEhDrF,EAAMqI,cAAcT,EAASF,MAEjC,OAAO1Q,GAOXqN,EAAc3U,UAAU4D,GAAK,SAAUkU,EAAYiB,GAC1CjB,GAAeiB,IAGpBjB,EAAaA,EAAWkB,cACnB/V,KAAK2C,QAAQkS,KACd7U,KAAK2C,QAAQkS,GAAc,KAGsB,IAAjD7U,KAAK2C,QAAQkS,GAAYhX,QAAQiY,IAGrC9V,KAAK2C,QAAQkS,GAAYrO,KAAKsP,KAElCpE,EAAc3U,UAAUiZ,IAAM,SAAUnB,EAAY/G,GAChD,GAAK+G,EAAL,CAGAA,EAAaA,EAAWkB,cACxB,IAAIE,EAAWjW,KAAK2C,QAAQkS,GAC5B,GAAKoB,EAGL,GAAInI,EAAQ,CACR,IAAIoI,EAAYD,EAASpY,QAAQiQ,IACd,IAAfoI,IACAD,EAAS1L,OAAO2L,EAAW,GACH,IAApBD,EAAS3Z,eACF0D,KAAK2C,QAAQkS,gBAKrB7U,KAAK2C,QAAQkS,KAO5BnD,EAAc3U,UAAUqV,QAAU,SAAU+D,GACpCA,GACAnW,KAAKuS,gBAAgB/L,KAAK2P,IAOlCzE,EAAc3U,UAAUqZ,eAAiB,SAAUD,GAC3CA,GACAnW,KAAKwS,sBAAsBhM,KAAK2P,IAOxCzE,EAAc3U,UAAUsZ,cAAgB,SAAUF,GAC1CA,GACAnW,KAAKyS,qBAAqBjM,KAAK2P,IAGvCzE,EAAc3U,UAAUoV,oBAAsB,SAAU9U,GAOpD,GANA2C,KAAKkU,iBACAlU,KAAK2S,4BACNtV,EAAO2C,KAAKsW,yBAAyBjZ,GACrC2C,KAAK2S,2BAA4B,GAGjCtV,EAGA,IADA,IAAIb,EAAWwD,KAAK4R,SAAS2E,cAAclZ,EAAM2C,KAAKyI,QAC7CyI,EAAK,EAAGsF,EAAaha,EAAU0U,EAAKsF,EAAWla,OAAQ4U,IAAM,CAClE,IAAIpG,EAAU0L,EAAWtF,GACzB,OAAQpG,EAAQxM,MACZ,KAAK8R,EAAYqG,WACbzW,KAAK0W,mBAAmB5L,GACxB,MACJ,KAAKsF,EAAYuG,WACjB,KAAKvG,EAAYqF,WACb,IAAIU,EAAWnW,KAAKsS,UAAUxH,EAAQ4H,cAClCyD,IACIrL,EAAQxM,OAAS8R,EAAYqF,mBACtBzV,KAAKsS,UAAUxH,EAAQ4H,cAElCyD,EAASrL,IAEb,MACJ,KAAKsF,EAAY6C,KAEb,MACJ,KAAK7C,EAAYwG,MACb5W,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,uCACtC,IAAIiB,EAAQF,EAAQE,MAAQ,IAAIzO,MAAM,sCAAwCuO,EAAQE,YAASlE,GAChE,IAA3BgE,EAAQ+L,eAIR7W,KAAK2R,WAAW2C,KAAKtJ,GAIrBhL,KAAKuU,YAAcvU,KAAKwU,aAAaxJ,GAEzC,MACJ,QACIhL,KAAKyI,OAAOgB,IAAI,OAASyB,QAAS,yBAA2BJ,EAAQxM,KAAO,KAC5E,OAIhB0B,KAAKmU,sBAETzC,EAAc3U,UAAUuZ,yBAA2B,SAAUjZ,GACzD,IAAI6L,EACA5L,EACAE,EACJ,IACI0L,EAAKlJ,KAAKiS,kBAAkB7U,uBAAuBC,GAAOG,EAAgB0L,EAAG,GAAI5L,EAAkB4L,EAAG,GAE1G,MAAO/D,GACH,IAAI2F,EAAU,qCAAuC3F,EACrDnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAOuO,GAChC,IAAIE,EAAQ,IAAIzO,MAAMuO,GAEtB,MADA9K,KAAKgU,kBAAkBhJ,GACjBA,EAEV,GAAI1N,EAAgB0N,MAAO,CACnBF,EAAU,oCAAsCxN,EAAgB0N,MACpEhL,KAAKyI,OAAOgB,IAAI,OAASlN,MAAOuO,GAC5BE,EAAQ,IAAIzO,MAAMuO,GAEtB,MADA9K,KAAKgU,kBAAkBhJ,GACjBA,EAMV,OAHIhL,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,8BAEpCzT,KAAK+T,oBACEvW,GAEXkU,EAAc3U,UAAUqX,uBAAyB,WACzCpU,KAAK2R,WAAWmF,SAASC,oBAK7B/W,KAAK8R,eAAgB,IAAIlS,MAAOoX,UAAYhX,KAAKgS,gCACjDhS,KAAKqU,qBAET3C,EAAc3U,UAAUoX,mBAAqB,WACzC,IAAI9G,EAAQrN,KACZ,KAAKA,KAAK2R,WAAWmF,WAAa9W,KAAK2R,WAAWmF,SAASC,qBAEvD/W,KAAKiX,cAAgB5H,YAAW,WAAc,OAAOhC,EAAM6J,kBAAoBlX,KAAK+R,kCAEtDjL,IAA1B9G,KAAKmX,kBAAgC,CACrC,IAAIC,EAAWpX,KAAK8R,eAAgB,IAAIlS,MAAOoX,UAC3CI,EAAW,IACXA,EAAW,GAGfpX,KAAKmX,iBAAmB9H,YAAW,WAAc,OAAO,EAAUhC,OAAO,OAAQ,GAAQ,WAErF,OAAO,EAAYrN,MAAM,SAAUqJ,GAC/B,OAAQA,EAAGvD,OACP,KAAK,EACD,GAAM9F,KAAK4S,kBAAoB5B,EAAmB2C,UAAY,MAAO,CAAC,EAAa,GACnFtK,EAAGvD,MAAQ,EACf,KAAK,EAED,OADAuD,EAAGrD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAKwI,YAAYxI,KAAK+S,oBAC/C,KAAK,EAED,OADA1J,EAAGtD,OACI,CAAC,EAAa,GACzB,KAAK,EAKD,OAJKsD,EAAGtD,OAGR/F,KAAKqU,mBACE,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,YAGrB+C,KAInB1F,EAAc3U,UAAUma,cAAgB,WAIpClX,KAAK2R,WAAW2C,KAAK,IAAI/X,MAAM,yEAEnCmV,EAAc3U,UAAU2Z,mBAAqB,SAAUW,GACnD,IAAIhK,EAAQrN,KACR2C,EAAU3C,KAAK2C,QAAQ0U,EAAkBxW,OAAOkV,eACpD,GAAIpT,EAAS,CACT,IACIA,EAAQV,SAAQ,SAAUqV,GAAK,OAAOA,EAAEvZ,MAAMsP,EAAOgK,EAAkBjT,cAE3E,MAAOe,GACHnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,6BAA+B8a,EAAkBxW,OAAOkV,cAAgB,iBAAmB5Q,EAAI,MAEnI,GAAIkS,EAAkB3E,aAAc,CAEhC,IAAI5H,EAAU,qFACd9K,KAAKyI,OAAOgB,IAAI,OAASlN,MAAOuO,GAEhC9K,KAAKuU,YAAcvU,KAAKwU,aAAa,IAAIjY,MAAMuO,UAInD9K,KAAKyI,OAAOgB,IAAI,OAASyB,QAAS,mCAAqCmM,EAAkBxW,OAAS,aAG1G6Q,EAAc3U,UAAUsV,iBAAmB,SAAUrH,GACjDhL,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,kCAAoCzI,EAAQ,2BAA6BhL,KAAK4S,gBAAkB,KAEhI5S,KAAK8T,qBAAuB9T,KAAK8T,sBAAwB9I,GAAS,IAAIzO,MAAM,iFAGxEyD,KAAK+T,mBACL/T,KAAK+T,oBAET/T,KAAKuX,yBAAyBvM,GAAS,IAAIzO,MAAM,uEACjDyD,KAAKkU,iBACLlU,KAAKqU,mBACDrU,KAAK4S,kBAAoB5B,EAAmByD,cAC5CzU,KAAK2U,cAAc3J,GAEdhL,KAAK4S,kBAAoB5B,EAAmB2C,WAAa3T,KAAK6R,gBAEnE7R,KAAKwX,UAAUxM,GAEVhL,KAAK4S,kBAAoB5B,EAAmB2C,WACjD3T,KAAK2U,cAAc3J,IAQ3B0G,EAAc3U,UAAU4X,cAAgB,SAAU3J,GAC9C,IAAIqC,EAAQrN,KACZ,GAAIA,KAAK8S,kBAAmB,CACxB9S,KAAK4S,gBAAkB5B,EAAmB6B,aAC1C7S,KAAK8S,mBAAoB,EACzB,IACI9S,KAAKuS,gBAAgBtQ,SAAQ,SAAUgO,GAAK,OAAOA,EAAElS,MAAMsP,EAAO,CAACrC,OAEvE,MAAO7F,GACHnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,0CAA4CyO,EAAQ,kBAAoB7F,EAAI,SAIxHuM,EAAc3U,UAAUya,UAAY,SAAUxM,GAC1C,OAAO,EAAUhL,UAAM,OAAQ,GAAQ,WACnC,IAAIyX,EAAoBC,EAA2BC,EAAYC,EAAgBC,EAC3ExK,EAAQrN,KACZ,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAKD,GAJA2R,EAAqB7X,KAAKkY,MAC1BJ,EAA4B,EAC5BC,OAAuB7Q,IAAVkE,EAAsBA,EAAQ,IAAIzO,MAAM,mDACrDqb,EAAiB5X,KAAK+X,kBAAkBL,IAA6B,EAAGC,GACjD,OAAnBC,EAGA,OAFA5X,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,sGAChCzT,KAAK2U,cAAc3J,GACZ,CAAC,GASZ,GAPAhL,KAAK4S,gBAAkB5B,EAAmBoC,aACtCpI,EACAhL,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,6CAA+CiB,EAAQ,MAG7FhL,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,4BAEtC/J,KAAKoW,eAAgB,CACrB,IACIpW,KAAKwS,sBAAsBvQ,SAAQ,SAAUgO,GAAK,OAAOA,EAAElS,MAAMsP,EAAO,CAACrC,OAE7E,MAAO7F,GACHnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,iDAAmDyO,EAAQ,kBAAoB7F,EAAI,MAGvH,GAAInF,KAAK4S,kBAAoB5B,EAAmBoC,aAE5C,OADApT,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,yFACzB,CAAC,GAGhBvK,EAAGpD,MAAQ,EACf,KAAK,EACD,OAAyB,OAAnB8R,EAAiC,CAAC,EAAa,IACrD5X,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,4BAA8B2N,EAA4B,kBAAoBE,EAAiB,QAC9H,CAAC,EAAa,IAAI/S,SAAQ,SAAUC,GACnCuI,EAAMqH,qBAAuBrF,WAAWvK,EAAS8S,QAE7D,KAAK,EAGD,GAFA1O,EAAGnD,OACH/F,KAAK0U,0BAAuB5N,EACxB9G,KAAK4S,kBAAoB5B,EAAmBoC,aAE5C,OADApT,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,qFACzB,CAAC,GAEZvK,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAK0T,iBAC9B,KAAK,EAID,GAHAxK,EAAGnD,OACH/F,KAAK4S,gBAAkB5B,EAAmB2C,UAC1C3T,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,2CAClC/J,KAAKqW,cACL,IACIrW,KAAKyS,qBAAqBxQ,SAAQ,SAAUgO,GAAK,OAAOA,EAAElS,MAAMsP,EAAO,CAACA,EAAMsE,WAAWuB,kBAE7F,MAAO/N,GACHnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,uDAAyDyD,KAAK2R,WAAWuB,aAAe,kBAAoB/N,EAAI,MAGxJ,MAAO,CAAC,GACZ,KAAK,EAGD,OAFA0S,EAAM3O,EAAGnD,OACT/F,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,8CAAgD8N,EAAM,MACxF7X,KAAK4S,kBAAoB5B,EAAmBoC,cAC5CpT,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,4BAA8BzT,KAAK4S,gBAAkB,8EAEjF5S,KAAK4S,kBAAoB5B,EAAmByD,eAC5CzU,KAAK2U,gBAEF,CAAC,KAEZgD,EAAaE,aAAetb,MAAQsb,EAAM,IAAItb,MAAMsb,EAAIzP,YACxDwP,EAAiB5X,KAAK+X,kBAAkBL,IAA6B9X,KAAKkY,MAAQL,EAAoBE,GAC/F,CAAC,EAAa,IACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAGD,OAFA3X,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,gDAAkDnK,KAAKkY,MAAQL,GAAsB,WAAaC,EAA4B,+CACpK1X,KAAK2U,gBACE,CAAC,WAK5BjD,EAAc3U,UAAUgb,kBAAoB,SAAUC,EAAoBC,EAAqBC,GAC3F,IACI,OAAOlY,KAAK6R,gBAAgBsG,6BAA6B,CACrDF,oBAAqBA,EACrBD,mBAAoBA,EACpBE,YAAaA,IAGrB,MAAO/S,GAEH,OADAnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,6CAA+Cyb,EAAqB,KAAOC,EAAsB,kBAAoB9S,EAAI,MAClJ,OAGfuM,EAAc3U,UAAUwa,yBAA2B,SAAUvM,GACzD,IAAIsH,EAAYtS,KAAKsS,UACrBtS,KAAKsS,UAAY,GACjBnQ,OAAOY,KAAKuP,GACPrQ,SAAQ,SAAUkB,GACnB,IAAIgT,EAAW7D,EAAUnP,GACzBgT,EAAS,KAAMnL,OAGvB0G,EAAc3U,UAAUsX,iBAAmB,WACnCrU,KAAKmX,mBACLxH,aAAa3P,KAAKmX,kBAClBnX,KAAKmX,sBAAmBrQ,IAGhC4K,EAAc3U,UAAUmX,eAAiB,WACjClU,KAAKiX,eACLtH,aAAa3P,KAAKiX,gBAG1BvF,EAAc3U,UAAU6Y,iBAAmB,SAAUf,EAAYC,EAAMsD,EAAalD,GAChF,GAAIkD,EACA,OAAyB,IAArBlD,EAAU5Y,OACH,CACH8H,UAAW0Q,EACXI,UAAWA,EACXrU,OAAQgU,EACRvW,KAAM8R,EAAYqG,YAIf,CACHrS,UAAW0Q,EACXjU,OAAQgU,EACRvW,KAAM8R,EAAYqG,YAK1B,IAAI/D,EAAe1S,KAAK0S,aAExB,OADA1S,KAAK0S,eACoB,IAArBwC,EAAU5Y,OACH,CACH8H,UAAW0Q,EACXpC,aAAcA,EAAatK,WAC3B8M,UAAWA,EACXrU,OAAQgU,EACRvW,KAAM8R,EAAYqG,YAIf,CACHrS,UAAW0Q,EACXpC,aAAcA,EAAatK,WAC3BvH,OAAQgU,EACRvW,KAAM8R,EAAYqG,aAKlC/E,EAAc3U,UAAU2Y,cAAgB,SAAUT,EAASF,GACvD,IAAI1H,EAAQrN,KACZ,GAAuB,IAAnBiV,EAAQ3Y,OAAZ,CAIKyY,IACDA,EAAelQ,QAAQC,WAE3B,IAAIuT,EAAU,SAAUC,GACpBrD,EAAQqD,GAAUjH,UAAU,CACxBD,SAAU,WACN2D,EAAeA,EAAaxP,MAAK,WAAc,OAAO8H,EAAMkI,iBAAiBlI,EAAMkL,wBAAwBD,QAE/GtN,MAAO,SAAUmG,GACb,IAAIrG,EAEAA,EADAqG,aAAe5U,MACL4U,EAAIrG,QAETqG,GAAOA,EAAI/I,SACN+I,EAAI/I,WAGJ,gBAEd2M,EAAeA,EAAaxP,MAAK,WAAc,OAAO8H,EAAMkI,iBAAiBlI,EAAMkL,wBAAwBD,EAAUxN,QAEzH5F,KAAM,SAAUhG,GACZ6V,EAAeA,EAAaxP,MAAK,WAAc,OAAO8H,EAAMkI,iBAAiBlI,EAAMmL,wBAAwBF,EAAUpZ,WAMjI,IAAK,IAAIoZ,KAAYrD,EACjBoD,EAAQC,KAGhB5G,EAAc3U,UAAUiY,uBAAyB,SAAUF,GAGvD,IAFA,IAAIG,EAAU,GACVC,EAAY,GACPhR,EAAI,EAAGA,EAAI4Q,EAAKxY,OAAQ4H,IAAK,CAClC,IAAIuU,EAAW3D,EAAK5Q,GACpB,GAAIlE,KAAK0Y,aAAaD,GAAW,CAC7B,IAAIH,EAAWtY,KAAK0S,aACpB1S,KAAK0S,eAELuC,EAAQqD,GAAYG,EACpBvD,EAAU1O,KAAK8R,EAASlQ,YAExB0M,EAAKvK,OAAOrG,EAAG,IAGvB,MAAO,CAAC+Q,EAASC,IAErBxD,EAAc3U,UAAU2b,aAAe,SAAUC,GAE7C,OAAOA,GAAOA,EAAItH,WAAsC,oBAAlBsH,EAAItH,WAE9CK,EAAc3U,UAAUqY,uBAAyB,SAAUP,EAAYC,EAAMI,GACzE,IAAIxC,EAAe1S,KAAK0S,aAExB,OADA1S,KAAK0S,eACoB,IAArBwC,EAAU5Y,OACH,CACH8H,UAAW0Q,EACXpC,aAAcA,EAAatK,WAC3B8M,UAAWA,EACXrU,OAAQgU,EACRvW,KAAM8R,EAAYwI,kBAIf,CACHxU,UAAW0Q,EACXpC,aAAcA,EAAatK,WAC3BvH,OAAQgU,EACRvW,KAAM8R,EAAYwI,mBAI9BlH,EAAc3U,UAAUuY,uBAAyB,SAAU7S,GACvD,MAAO,CACHiQ,aAAcjQ,EACdnE,KAAM8R,EAAYyI,mBAG1BnH,EAAc3U,UAAUyb,wBAA0B,SAAU/V,EAAIvD,GAC5D,MAAO,CACHwT,aAAcjQ,EACdvD,KAAMA,EACNZ,KAAM8R,EAAYuG,aAG1BjF,EAAc3U,UAAUwb,wBAA0B,SAAU9V,EAAIuI,EAAO3F,GACnE,OAAI2F,EACO,CACHA,MAAOA,EACP0H,aAAcjQ,EACdnE,KAAM8R,EAAYqF,YAGnB,CACH/C,aAAcjQ,EACd4C,OAAQA,EACR/G,KAAM8R,EAAYqF,aAGnB/D,EAv4BuB,GExD9BoH,EAAuC,CAAC,EAAG,IAAM,IAAO,IAAO,MAE/DC,EAAwC,WACxC,SAASA,EAAuBC,GAC5BhZ,KAAKgZ,iBAA8BlS,IAAhBkS,EAA4BA,EAAYC,OAAO,CAAC,OAASH,EAKhF,OAHAC,EAAuBhc,UAAUob,6BAA+B,SAAUe,GACtE,OAAOlZ,KAAKgZ,YAAYE,EAAalB,qBAElCe,EAPgC,IDA3C,SAAWvH,GAEPA,EAAkBA,EAAkB,QAAU,GAAK,OAEnDA,EAAkBA,EAAkB,cAAgB,GAAK,aAEzDA,EAAkBA,EAAkB,oBAAsB,GAAK,mBAE/DA,EAAkBA,EAAkB,eAAiB,GAAK,eAR9D,CASGA,IAAsBA,EAAoB,KAG7C,SAAWC,GAEPA,EAAeA,EAAe,QAAU,GAAK,OAE7CA,EAAeA,EAAe,UAAY,GAAK,SAJnD,CAKGA,IAAmBA,EAAiB,KEfvC,IAAI,EAAiC,WACjC,SAAShD,IACLzO,KAAKmZ,WAAY,EACjBnZ,KAAKkP,QAAU,KAwBnB,OAtBAT,EAAgB1R,UAAUoS,MAAQ,WACzBnP,KAAKmZ,YACNnZ,KAAKmZ,WAAY,EACbnZ,KAAKkP,SACLlP,KAAKkP,YAIjB/M,OAAOiF,eAAeqH,EAAgB1R,UAAW,SAAU,CACvDwD,IAAK,WACD,OAAOP,MAEXsH,YAAY,EACZC,cAAc,IAElBpF,OAAOiF,eAAeqH,EAAgB1R,UAAW,UAAW,CACxDwD,IAAK,WACD,OAAOP,KAAKmZ,WAEhB7R,YAAY,EACZC,cAAc,IAEXkH,EA3ByB,GCLhC,EAAsCtM,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAEP,EAAwC,SAAUS,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlE,EAA4C,SAAUT,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAU9E,EAAsC,WACtC,SAAS8T,EAAqBzQ,EAAYE,EAAoBJ,EAAQM,EAAmBC,EAAiBG,GACtGnJ,KAAK2I,WAAaA,EAClB3I,KAAK6I,mBAAqBA,EAC1B7I,KAAKyI,OAASA,EACdzI,KAAKqZ,UAAY,IAAI,EACrBrZ,KAAK+I,kBAAoBA,EACzB/I,KAAKgJ,gBAAkBA,EACvBhJ,KAAKmJ,QAAUA,EACfnJ,KAAKsZ,SAAU,EACftZ,KAAKkS,UAAY,KACjBlS,KAAKoS,QAAU,KAyOnB,OAvOAjQ,OAAOiF,eAAegS,EAAqBrc,UAAW,cAAe,CAEjEwD,IAAK,WACD,OAAOP,KAAKqZ,UAAUpK,SAE1B3H,YAAY,EACZC,cAAc,IAElB6R,EAAqBrc,UAAUwc,QAAU,SAAU3Q,EAAKqL,GACpD,OAAO,EAAUjU,UAAM,OAAQ,GAAQ,WACnC,IAAIkJ,EAAIG,EAAIxC,EAAMnH,EAAOyJ,EAASqQ,EAAapQ,EAAOqQ,EAASpb,EAC/D,OAAO,EAAY2B,MAAM,SAAUuJ,GAC/B,OAAQA,EAAGzD,OACP,KAAK,EAOD,GANA,OAAIa,WAAWiC,EAAK,OACpB,OAAIjC,WAAWsN,EAAgB,kBAC/B,OAAIhN,KAAKgN,EAAgBxC,EAAgB,kBACzCzR,KAAK4I,IAAMA,EACX5I,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,uCAE5BuK,IAAmBxC,EAAeiI,QACP,qBAAnBnJ,gBAA+E,kBAAtC,IAAIA,gBAAiBjH,aACtE,MAAM,IAAI/M,MAAM,8FAapB,OAXA8M,EAAK,iBAAsBxC,EAAOwC,EAAG,GAAI3J,EAAQ2J,EAAG,GACpDF,EAAU,GAAUD,EAAK,GAAIA,EAAGrC,GAAQnH,EAAOwJ,GAAKlJ,KAAKmJ,SACzDqQ,EAAc,CACVxK,YAAahP,KAAKqZ,UAAU3J,OAC5BvG,QAASA,EACTiG,QAAS,IACTpG,gBAAiBhJ,KAAKgJ,iBAEtBiL,IAAmBxC,EAAeiI,SAClCF,EAAYlQ,aAAe,eAExB,CAAC,EAAatJ,KAAK2Z,kBAC9B,KAAK,EAKD,OAJAvQ,EAAQG,EAAGxD,OACX/F,KAAK4Z,kBAAkBJ,EAAapQ,GACpCqQ,EAAU7Q,EAAM,MAAQhJ,KAAKkY,MAC7B9X,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,oCAAsC+P,EAAU,KACzE,CAAC,EAAazZ,KAAK2I,WAAWpI,IAAIkZ,EAASD,IACtD,KAAK,EAYD,OAXAnb,EAAWkL,EAAGxD,OACc,MAAxB1H,EAASuL,YACT5J,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,qDAAuD8B,EAASuL,WAAa,KAE7G5J,KAAK6Z,WAAa,IAAI5M,EAAU5O,EAASqP,YAAc,GAAIrP,EAASuL,YACpE5J,KAAKsZ,SAAU,GAGftZ,KAAKsZ,SAAU,EAEnBtZ,KAAK8Z,UAAY9Z,KAAK+Z,KAAK/Z,KAAK4I,IAAK4Q,GAC9B,CAAC,WAK5BJ,EAAqBrc,UAAU4c,eAAiB,WAC5C,OAAO,EAAU3Z,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EACD,OAAK9F,KAAK6I,mBACH,CAAC,EAAa7I,KAAK6I,sBADW,CAAC,EAAa,GAEvD,KAAK,EAAG,MAAO,CAAC,EAAcK,EAAGnD,QACjC,KAAK,EAAG,MAAO,CAAC,EAAc,cAK9CqT,EAAqBrc,UAAU6c,kBAAoB,SAAUlL,EAAStF,GAC7DsF,EAAQvF,UACTuF,EAAQvF,QAAU,IAElBC,EAEAsF,EAAQvF,QAAQ,iBAAmB,UAAYC,EAI/CsF,EAAQvF,QAAQ,yBAETuF,EAAQvF,QAAQ,kBAG/BiQ,EAAqBrc,UAAUgd,KAAO,SAAUnR,EAAK4Q,GACjD,OAAO,EAAUxZ,UAAM,OAAQ,GAAQ,WACnC,IAAIoJ,EAAOqQ,EAASpb,EAAUyQ,EAC9B,OAAO,EAAY9O,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EACDoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,CAAE,EAAG,IACtB0C,EAAGpD,MAAQ,EACf,KAAK,EACD,OAAK9F,KAAKsZ,QACH,CAAC,EAAatZ,KAAK2Z,kBADA,CAAC,EAAa,GAE5C,KAAK,EACDvQ,EAAQF,EAAGnD,OACX/F,KAAK4Z,kBAAkBJ,EAAapQ,GACpCF,EAAGpD,MAAQ,EACf,KAAK,EAID,OAHAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBiT,EAAU7Q,EAAM,MAAQhJ,KAAKkY,MAC7B9X,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,oCAAsC+P,EAAU,KACzE,CAAC,EAAazZ,KAAK2I,WAAWpI,IAAIkZ,EAASD,IACtD,KAAK,EAyBD,OAxBAnb,EAAW6K,EAAGnD,OACc,MAAxB1H,EAASuL,YACT5J,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,sDACtC/J,KAAKsZ,SAAU,GAEc,MAAxBjb,EAASuL,YACd5J,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,qDAAuD8B,EAASuL,WAAa,KAE7G5J,KAAK6Z,WAAa,IAAI5M,EAAU5O,EAASqP,YAAc,GAAIrP,EAASuL,YACpE5J,KAAKsZ,SAAU,GAIXjb,EAASyK,SACT9I,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,0CAA4C,eAAcrL,EAASyK,QAAS9I,KAAK+I,mBAAqB,KAClI/I,KAAKkS,WACLlS,KAAKkS,UAAU7T,EAASyK,UAK5B9I,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,sDAGjC,CAAC,EAAa,GACzB,KAAK,EAiBD,OAhBAoF,EAAM5F,EAAGnD,OACJ/F,KAAKsZ,QAKFxK,aAAevB,EAEfvN,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,uDAIhC1J,KAAK6Z,WAAa/K,EAClB9O,KAAKsZ,SAAU,GAVnBtZ,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,wDAA0DoF,EAAIhE,SAa3F,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAOD,OANA9K,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,6CAG3B1J,KAAKga,aACNha,KAAKia,eAEF,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,WAKhCb,EAAqBrc,UAAU8Q,KAAO,SAAUxQ,GAC5C,OAAO,EAAU2C,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAKlJ,KAAKsZ,QAGH,CAAC,EAAc,eAAYtZ,KAAKyI,OAAQ,cAAezI,KAAK2I,WAAY3I,KAAK4I,IAAK5I,KAAK6I,mBAAoBxL,EAAM2C,KAAK+I,kBAAmB/I,KAAKgJ,gBAAiBhJ,KAAKmJ,UAFhK,CAAC,EAActE,QAAQE,OAAO,IAAIxI,MAAM,yDAM/D6c,EAAqBrc,UAAUuX,KAAO,WAClC,OAAO,EAAUtU,UAAM,OAAQ,GAAQ,WACnC,IAAImJ,EAASD,EAAIgR,EAAQxa,EAAOya,EAAe/Q,EAC/C,OAAO,EAAYpJ,MAAM,SAAUqJ,GAC/B,OAAQA,EAAGvD,OACP,KAAK,EACD9F,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,6CAEhC1J,KAAKsZ,SAAU,EACftZ,KAAKqZ,UAAUlK,QACf9F,EAAGvD,MAAQ,EACf,KAAK,EAED,OADAuD,EAAGrD,KAAKQ,KAAK,CAAC,EAAG,CAAE,EAAG,IACf,CAAC,EAAaxG,KAAK8Z,WAC9B,KAAK,EAWD,OAVAzQ,EAAGtD,OAEH/F,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,qDAAuD1J,KAAK4I,IAAM,KAClGO,EAAU,GACVD,EAAK,iBAAsBgR,EAAShR,EAAG,GAAIxJ,EAAQwJ,EAAG,GACtDC,EAAQ+Q,GAAUxa,EAClBya,EAAgB,CACZhR,QAAS,EAAS,GAAIA,EAASnJ,KAAKmJ,SACpCH,gBAAiBhJ,KAAKgJ,iBAEnB,CAAC,EAAahJ,KAAK2Z,kBAC9B,KAAK,EAGD,OAFAvQ,EAAQC,EAAGtD,OACX/F,KAAK4Z,kBAAkBO,EAAe/Q,GAC/B,CAAC,EAAapJ,KAAK2I,WAAWoF,OAAO/N,KAAK4I,IAAKuR,IAC1D,KAAK,EAGD,OAFA9Q,EAAGtD,OACH/F,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,gDACzB,CAAC,EAAa,GACzB,KAAK,EAKD,OAJA1J,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,0CAGhC1J,KAAKia,eACE,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,WAKhCb,EAAqBrc,UAAUkd,aAAe,WAC1C,GAAIja,KAAKoS,QAAS,CACd,IAAIgI,EAAa,gDACbpa,KAAK6Z,aACLO,GAAc,WAAapa,KAAK6Z,YAEpC7Z,KAAKyI,OAAOgB,IAAI,OAASC,MAAO0Q,GAChCpa,KAAKoS,QAAQpS,KAAK6Z,cAGnBT,EApP8B,GClDrC,EAAsCjX,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAEP,EAAwC,SAAUS,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlE,EAA4C,SAAUT,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAO9E,EAA2C,WAC3C,SAAS+U,EAA0B1R,EAAYE,EAAoBJ,EAAQM,EAAmBuR,EAAwBtR,EAAiBG,GACnInJ,KAAK2I,WAAaA,EAClB3I,KAAK6I,mBAAqBA,EAC1B7I,KAAKyI,OAASA,EACdzI,KAAK+I,kBAAoBA,EACzB/I,KAAKgJ,gBAAkBA,EACvBhJ,KAAKsa,uBAAyBA,EAC9Bta,KAAKmJ,QAAUA,EACfnJ,KAAKkS,UAAY,KACjBlS,KAAKoS,QAAU,KAuGnB,OArGAiI,EAA0Btd,UAAUwc,QAAU,SAAU3Q,EAAKqL,GACzD,OAAO,EAAUjU,UAAM,OAAQ,GAAQ,WACnC,IAAIoJ,EACAiE,EAAQrN,KACZ,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAOD,OANA,OAAIa,WAAWiC,EAAK,OACpB,OAAIjC,WAAWsN,EAAgB,kBAC/B,OAAIhN,KAAKgN,EAAgBxC,EAAgB,kBACzCzR,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,+BAEhC1J,KAAK4I,IAAMA,EACN5I,KAAK6I,mBACH,CAAC,EAAa7I,KAAK6I,sBADW,CAAC,EAAa,GAEvD,KAAK,EACDO,EAAQF,EAAGnD,OACPqD,IACAR,IAAQA,EAAI/K,QAAQ,KAAO,EAAI,IAAM,KAAQ,gBAAkB0c,mBAAmBnR,IAEtFF,EAAGpD,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc,IAAIjB,SAAQ,SAAUC,EAASC,GACrD,IAAIyV,GAAS,EACb,GAAIvG,IAAmBxC,EAAegJ,KAAtC,CAIA,IAAIC,EACJ,GAAI,OAASjT,WAAa,OAASC,YAC/BgT,EAAc,IAAIrN,EAAMiN,uBAAuB1R,EAAK,CAAEI,gBAAiBqE,EAAMrE,sBAE5E,CAED,IAAI+G,EAAU1C,EAAM1E,WAAWqF,gBAAgBpF,GAC3CO,EAAU,GACdA,EAAQwR,OAAS5K,EACjB,IAAI7G,EAAK,iBAAsBgR,EAAShR,EAAG,GAAIxJ,EAAQwJ,EAAG,GAC1DC,EAAQ+Q,GAAUxa,EAClBgb,EAAc,IAAIrN,EAAMiN,uBAAuB1R,EAAK,CAAEI,gBAAiBqE,EAAMrE,gBAAiBG,QAAS,EAAS,GAAIA,EAASkE,EAAMlE,WAEvI,IACIuR,EAAYE,UAAY,SAAUzV,GAC9B,GAAIkI,EAAM6E,UACN,IACI7E,EAAM5E,OAAOgB,IAAI,OAASC,MAAO,kCAAoC,eAAcvE,EAAE9H,KAAMgQ,EAAMtE,mBAAqB,KACtHsE,EAAM6E,UAAU/M,EAAE9H,MAEtB,MAAO2N,GAEH,YADAqC,EAAMwN,MAAM7P,KAKxB0P,EAAY7J,QAAU,SAAU1L,GAC5B,IAAI6F,EAAQ,IAAIzO,MAAM4I,EAAE9H,MAAQ,kBAC5Bmd,EACAnN,EAAMwN,MAAM7P,GAGZjG,EAAOiG,IAGf0P,EAAYI,OAAS,WACjBzN,EAAM5E,OAAOgB,IAAI,OAASM,YAAa,oBAAsBsD,EAAMzE,KACnEyE,EAAMqN,YAAcA,EACpBF,GAAS,EACT1V,KAGR,MAAOK,GAEH,YADAJ,EAAOI,SA9CPJ,EAAO,IAAIxI,MAAM,0FAsD7C8d,EAA0Btd,UAAU8Q,KAAO,SAAUxQ,GACjD,OAAO,EAAU2C,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAKlJ,KAAK0a,YAGH,CAAC,EAAc,eAAY1a,KAAKyI,OAAQ,MAAOzI,KAAK2I,WAAY3I,KAAK4I,IAAK5I,KAAK6I,mBAAoBxL,EAAM2C,KAAK+I,kBAAmB/I,KAAKgJ,gBAAiBhJ,KAAKmJ,UAFxJ,CAAC,EAActE,QAAQE,OAAO,IAAIxI,MAAM,yDAM/D8d,EAA0Btd,UAAUuX,KAAO,WAEvC,OADAtU,KAAK6a,QACEhW,QAAQC,WAEnBuV,EAA0Btd,UAAU8d,MAAQ,SAAU1V,GAC9CnF,KAAK0a,cACL1a,KAAK0a,YAAYG,QACjB7a,KAAK0a,iBAAc5T,EACf9G,KAAKoS,SACLpS,KAAKoS,QAAQjN,KAIlBkV,EAjHmC,GC/C1C,EAAsClY,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAEP,EAAwC,SAAUS,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlE,EAA4C,SAAUT,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAO9E,EAAoC,WACpC,SAASyV,EAAmBpS,EAAYE,EAAoBJ,EAAQM,EAAmBiS,EAAsB7R,GACzGnJ,KAAKyI,OAASA,EACdzI,KAAK6I,mBAAqBA,EAC1B7I,KAAK+I,kBAAoBA,EACzB/I,KAAKgb,qBAAuBA,EAC5Bhb,KAAK2I,WAAaA,EAClB3I,KAAKkS,UAAY,KACjBlS,KAAKoS,QAAU,KACfpS,KAAKmJ,QAAUA,EA4InB,OA1IA4R,EAAmBhe,UAAUwc,QAAU,SAAU3Q,EAAKqL,GAClD,OAAO,EAAUjU,UAAM,OAAQ,GAAQ,WACnC,IAAIoJ,EACAiE,EAAQrN,KACZ,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAKD,OAJA,OAAIa,WAAWiC,EAAK,OACpB,OAAIjC,WAAWsN,EAAgB,kBAC/B,OAAIhN,KAAKgN,EAAgBxC,EAAgB,kBACzCzR,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,sCAC3B1J,KAAK6I,mBACH,CAAC,EAAa7I,KAAK6I,sBADW,CAAC,EAAa,GAEvD,KAAK,EACDO,EAAQF,EAAGnD,OACPqD,IACAR,IAAQA,EAAI/K,QAAQ,KAAO,EAAI,IAAM,KAAQ,gBAAkB0c,mBAAmBnR,IAEtFF,EAAGpD,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc,IAAIjB,SAAQ,SAAUC,EAASC,GAErD,IAAIkW,EADJrS,EAAMA,EAAIsS,QAAQ,QAAS,MAE3B,IAAInL,EAAU1C,EAAM1E,WAAWqF,gBAAgBpF,GAC3C4R,GAAS,EACb,GAAI,OAASlP,OAAQ,CACjB,IAAInC,EAAU,GACVD,EAAK,iBAAsBgR,EAAShR,EAAG,GAAIxJ,EAAQwJ,EAAG,GAC1DC,EAAQ+Q,GAAUxa,EACdqQ,IACA5G,EAAQ,UAAY,GAAK4G,GAG7BkL,EAAY,IAAI5N,EAAM2N,qBAAqBpS,OAAK9B,EAAW,CACvDqC,QAAS,EAAS,GAAIA,EAASkE,EAAMlE,WAGxC8R,IAEDA,EAAY,IAAI5N,EAAM2N,qBAAqBpS,IAE3CqL,IAAmBxC,EAAeiI,SAClCuB,EAAUE,WAAa,eAG3BF,EAAUH,OAAS,SAAUM,GACzB/N,EAAM5E,OAAOgB,IAAI,OAASM,YAAa,0BAA4BnB,EAAM,KACzEyE,EAAM4N,UAAYA,EAClBT,GAAS,EACT1V,KAEJmW,EAAUpK,QAAU,SAAUwK,GAC1B,IAAIrQ,EAAQ,KAGRA,EADsB,qBAAfsQ,YAA8BD,aAAiBC,WAC9CD,EAAMrQ,MAGN,IAAIzO,MAAM,0CAEtBwI,EAAOiG,IAEXiQ,EAAUL,UAAY,SAAU9P,GAE5B,GADAuC,EAAM5E,OAAOgB,IAAI,OAASC,MAAO,yCAA2C,eAAcoB,EAAQzN,KAAMgQ,EAAMtE,mBAAqB,KAC/HsE,EAAM6E,UACN,IACI7E,EAAM6E,UAAUpH,EAAQzN,MAE5B,MAAO2N,GAEH,YADAqC,EAAMwN,MAAM7P,KAKxBiQ,EAAU7I,QAAU,SAAUiJ,GAG1B,GAAIb,EACAnN,EAAMwN,MAAMQ,OAEX,CACD,IAAIrQ,EAAQ,KAGRA,EADsB,qBAAfsQ,YAA8BD,aAAiBC,WAC9CD,EAAMrQ,MAGN,IAAIzO,MAAM,0CAEtBwI,EAAOiG,iBAQvC+P,EAAmBhe,UAAU8Q,KAAO,SAAUxQ,GAC1C,OAAI2C,KAAKib,WAAajb,KAAKib,UAAUM,aAAevb,KAAKgb,qBAAqBQ,MAC1Exb,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,wCAA0C,eAAcrM,EAAM2C,KAAK+I,mBAAqB,KACxH/I,KAAKib,UAAUpN,KAAKxQ,GACbwH,QAAQC,WAEZD,QAAQE,OAAO,uCAE1BgW,EAAmBhe,UAAUuX,KAAO,WAMhC,OALItU,KAAKib,WAGLjb,KAAK6a,WAAM/T,GAERjC,QAAQC,WAEnBiW,EAAmBhe,UAAU8d,MAAQ,SAAUQ,GAEvCrb,KAAKib,YAELjb,KAAKib,UAAU7I,QAAU,aACzBpS,KAAKib,UAAUL,UAAY,aAC3B5a,KAAKib,UAAUpK,QAAU,aACzB7Q,KAAKib,UAAUJ,QACf7a,KAAKib,eAAYnU,GAErB9G,KAAKyI,OAAOgB,IAAI,OAASC,MAAO,yCAC5B1J,KAAKoS,WACDpS,KAAKyb,aAAaJ,KAA8B,IAAnBA,EAAMK,UAAqC,MAAfL,EAAMM,KAG1DN,aAAiB9e,MACtByD,KAAKoS,QAAQiJ,GAGbrb,KAAKoS,UANLpS,KAAKoS,QAAQ,IAAI7V,MAAM,sCAAwC8e,EAAMM,KAAO,KAAON,EAAMO,OAAS,SAU9Gb,EAAmBhe,UAAU0e,aAAe,SAAUJ,GAClD,OAAOA,GAAmC,mBAAnBA,EAAMK,UAAgD,kBAAfL,EAAMM,MAEjEZ,EArJ4B,GC/CnC,EAAsC5Y,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAEP,EAAwC,SAAUS,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUtF,GAAS,IAAMuF,EAAKL,EAAUM,KAAKxF,IAAW,MAAOyF,GAAKJ,EAAOI,IACpF,SAASC,EAAS1F,GAAS,IAAMuF,EAAKL,EAAU,SAASlF,IAAW,MAAOyF,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAO3F,OAAS,IAAIiF,GAAE,SAAUG,GAAWA,EAAQO,EAAO3F,UAAW6F,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAU7G,MAAM0G,EAASC,GAAc,KAAKQ,YAGlE,EAA4C,SAAUT,EAASgB,GAC/D,IAAsGC,EAAGC,EAAG3B,EAAG4B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP/B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOgC,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAOpG,OAAU4F,EACvJ,SAASM,EAAK/B,GAAK,OAAO,SAAUkC,GAAK,OAAOpB,EAAK,CAACd,EAAGkC,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAM3B,EAAY,EAARsC,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAc3B,EAAI2B,EAAE,YAAc3B,EAAEO,KAAKoB,GAAI,GAAKA,EAAET,SAAWlB,EAAIA,EAAEO,KAAKoB,EAAGW,EAAG,KAAKhB,KAAM,OAAOtB,EAE3J,OADI2B,EAAI,EAAG3B,IAAGsC,EAAK,CAAS,EAARA,EAAG,GAAQtC,EAAEtE,QACzB4G,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtC,EAAIsC,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEpG,MAAO4G,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIvJ,MAAOmJ,EAAEG,KAAKtJ,MAAO,SACxC,QACI,GAAMsH,EAAI6B,EAAEG,OAAMhC,EAAIA,EAAE1H,OAAS,GAAK0H,EAAEA,EAAE1H,OAAS,MAAkB,IAAVgK,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAActC,GAAMsC,EAAG,GAAKtC,EAAE,IAAMsC,EAAG,GAAKtC,EAAE,IAAM,CAAE6B,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAIA,EAAIsC,EAAI,MAC7D,GAAItC,GAAK6B,EAAEC,MAAQ9B,EAAE,GAAI,CAAE6B,EAAEC,MAAQ9B,EAAE,GAAI6B,EAAEI,IAAIO,KAAKF,GAAK,MACvDtC,EAAE,IAAI6B,EAAEI,IAAIvJ,MAChBmJ,EAAEG,KAAKtJ,MAAO,SAEtB4J,EAAKb,EAAKlB,KAAKE,EAASoB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAI1B,EAAI,EACtD,GAAY,EAARsC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5G,MAAO4G,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,KAU9EuW,EAAgB,IAEhB,EAAgC,WAChC,SAASC,EAAelT,EAAKgF,GAUzB,QATgB,IAAZA,IAAsBA,EAAU,IACpC5N,KAAK+b,oBAAsB,aAC3B/b,KAAK8W,SAAW,GAChB9W,KAAKgc,iBAAmB,EACxB,OAAIrV,WAAWiC,EAAK,OACpB5I,KAAKyI,OAAS,eAAamF,EAAQnF,QACnCzI,KAAKmT,QAAUnT,KAAKic,WAAWrT,GAC/BgF,EAAUA,GAAW,GACrBA,EAAQ7E,uBAAkDjC,IAA9B8G,EAAQ7E,mBAA0C6E,EAAQ7E,kBAC/C,mBAA5B6E,EAAQ5E,sBAA6DlC,IAA5B8G,EAAQ5E,gBAIxD,MAAM,IAAIzM,MAAM,mEAHhBqR,EAAQ5E,qBAA8ClC,IAA5B8G,EAAQ5E,iBAAuC4E,EAAQ5E,gBAKrF,IAAIkT,EAAkB,KAClBC,EAAoB,KACxB,GAAI,OAAS7Q,OAA0C,CAGnD,IAAI6C,EAA0D,QAC9D+N,EAAkB/N,EAAY,MAC9BgO,EAAoBhO,EAAY,eAE/B,OAAS7C,QAA+B,qBAAd8Q,WAA8BxO,EAAQwO,UAG5D,OAAS9Q,SAAWsC,EAAQwO,WAC7BF,IACAtO,EAAQwO,UAAYF,GAJxBtO,EAAQwO,UAAYA,UAOnB,OAAS9Q,QAAiC,qBAAhB+Q,aAAgCzO,EAAQyO,YAG9D,OAAS/Q,SAAWsC,EAAQyO,aACA,qBAAtBF,IACPvO,EAAQyO,YAAcF,GAJ1BvO,EAAQyO,YAAcA,YAO1Brc,KAAK2I,WAAaiF,EAAQjF,YAAc,IAAI,EAAkB3I,KAAKyI,QACnEzI,KAAK4S,gBAAkB,eACvB5S,KAAK8S,mBAAoB,EACzB9S,KAAK4N,QAAUA,EACf5N,KAAKkS,UAAY,KACjBlS,KAAKoS,QAAU,KAmfnB,OAjfA0J,EAAe/e,UAAUsW,MAAQ,SAAUY,GACvC,OAAO,EAAUjU,UAAM,OAAQ,GAAQ,WACnC,IAAa8K,EACb,OAAO,EAAY9K,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAID,OAHAmO,EAAiBA,GAAkBxC,EAAeiI,OAClD,OAAIzS,KAAKgN,EAAgBxC,EAAgB,kBACzCzR,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,6CAA+ChC,EAAewC,GAAkB,MACnF,iBAAzBjU,KAAK4S,gBACE,CAAC,EAAc/N,QAAQE,OAAO,IAAIxI,MAAM,8EAEnDyD,KAAK4S,gBAAkB,aACvB5S,KAAKsc,qBAAuBtc,KAAK0T,cAAcO,GACxC,CAAC,EAAajU,KAAKsc,uBAC9B,KAAK,EAED,OADApT,EAAGnD,OAC4B,kBAAzB/F,KAAK4S,gBAAiE,CAAC,EAAa,IAC1F9H,EAAU,+DACV9K,KAAKyI,OAAOgB,IAAI,OAASlN,MAAOuO,GAEzB,CAAC,EAAa9K,KAAKuU,cAC9B,KAAK,EAGD,OADArL,EAAGnD,OACI,CAAC,EAAclB,QAAQE,OAAO,IAAIxI,MAAMuO,KACnD,KAAK,EACD,GAA6B,cAAzB9K,KAAK4S,gBAGL,OAFA9H,EAAU,8GACV9K,KAAKyI,OAAOgB,IAAI,OAASlN,MAAOuO,GACzB,CAAC,EAAcjG,QAAQE,OAAO,IAAIxI,MAAMuO,KAEnD5B,EAAGpD,MAAQ,EACf,KAAK,EAED,OADA9F,KAAK8S,mBAAoB,EAClB,CAAC,WAK5BgJ,EAAe/e,UAAU8Q,KAAO,SAAUxQ,GACtC,MAA6B,cAAzB2C,KAAK4S,gBACE/N,QAAQE,OAAO,IAAIxI,MAAM,yEAE/ByD,KAAKuc,YACNvc,KAAKuc,UAAY,IAAIC,GAAmBxc,KAAKyc,YAG1Czc,KAAKuc,UAAU1O,KAAKxQ,KAE/Bye,EAAe/e,UAAUuX,KAAO,SAAUtJ,GACtC,OAAO,EAAUhL,UAAM,OAAQ,GAAQ,WACnC,IAAIqN,EAAQrN,KACZ,OAAO,EAAYA,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EACD,MAA6B,iBAAzB9F,KAAK4S,iBACL5S,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,+BAAiCzI,EAAQ,0EAClE,CAAC,EAAcnG,QAAQC,YAEL,kBAAzB9E,KAAK4S,iBACL5S,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,+BAAiCzI,EAAQ,2EAClE,CAAC,EAAchL,KAAKuU,eAE/BvU,KAAK4S,gBAAkB,gBACvB5S,KAAKuU,YAAc,IAAI1P,SAAQ,SAAUC,GAErCuI,EAAM0O,oBAAsBjX,KAGzB,CAAC,EAAa9E,KAAKwU,aAAaxJ,KAC3C,KAAK,EAGD,OADA9B,EAAGnD,OACI,CAAC,EAAa/F,KAAKuU,aAC9B,KAAK,EAED,OADArL,EAAGnD,OACI,CAAC,WAK5B+V,EAAe/e,UAAUyX,aAAe,SAAUxJ,GAC9C,OAAO,EAAUhL,UAAM,OAAQ,GAAQ,WACnC,IAAS6T,EACT,OAAO,EAAY7T,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAID9F,KAAK0c,UAAY1R,EACjB9B,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAKsc,sBAC9B,KAAK,EAED,OADApT,EAAGnD,OACI,CAAC,EAAa,GACzB,KAAK,EAED,OADMmD,EAAGnD,OACF,CAAC,EAAa,GACzB,KAAK,EACD,IAAK/F,KAAKyc,UAAW,MAAO,CAAC,EAAa,GAC1CvT,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAKyc,UAAUnI,QACxC,KAAK,EAED,OADApL,EAAGnD,OACI,CAAC,EAAa,GACzB,KAAK,EAID,OAHA8N,EAAM3K,EAAGnD,OACT/F,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,gDAAkDsX,EAAM,MACxF7T,KAAK2c,iBACE,CAAC,EAAa,GACzB,KAAK,EAED,OADA3c,KAAKyc,eAAY3V,EACV,CAAC,EAAa,IACzB,KAAK,EACD9G,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,0FAChCvK,EAAGpD,MAAQ,GACf,KAAK,GAAI,MAAO,CAAC,WAKjCgW,EAAe/e,UAAU2W,cAAgB,SAAUO,GAC/C,OAAO,EAAUjU,UAAM,OAAQ,GAAQ,WACnC,IAAI4I,EAAKgU,EAAmBC,EAAWxE,EAASyE,EAAQC,EACxD,OAAO,EAAY/c,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EACD8C,EAAM5I,KAAKmT,QACXnT,KAAK6I,mBAAqB7I,KAAK4N,QAAQ/E,mBACvCK,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,GAAI,CAAE,KAClBxG,KAAK4N,QAAQoP,gBACZhd,KAAK4N,QAAQ6O,YAAcjL,EAAkByL,WAAoB,CAAC,EAAa,IAErFjd,KAAKyc,UAAYzc,KAAKkd,mBAAmB1L,EAAkByL,YAGpD,CAAC,EAAajd,KAAKmd,eAAevU,EAAKqL,KANJ,CAAC,EAAa,GAO5D,KAAK,EAID,OADA/K,EAAGnD,OACI,CAAC,EAAa,GACzB,KAAK,EAAG,MAAM,IAAIxJ,MAAM,gFACxB,KAAK,EAAG,MAAO,CAAC,EAAa,IAC7B,KAAK,EACDqgB,EAAoB,KACpBC,EAAY,EACZxE,EAAU,WACN,IAAI+E,EACJ,OAAO,EAAYpd,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAAG,MAAO,CAAC,EAAagX,EAAOO,uBAAuBzU,IAC3D,KAAK,EAGD,GAFAgU,EAAoB1T,EAAGnD,OAEQ,kBAA3B+W,EAAOlK,iBAAsF,iBAA3BkK,EAAOlK,gBACzE,MAAM,IAAIrW,MAAM,kDAEpB,GAAIqgB,EAAkB5R,MAClB,MAAM,IAAIzO,MAAMqgB,EAAkB5R,OAEtC,GAAI4R,EAAkBU,gBAClB,MAAM,IAAI/gB,MAAM,gMAUpB,OARIqgB,EAAkBhU,MAClBA,EAAMgU,EAAkBhU,KAExBgU,EAAkBW,cAClBH,EAAgBR,EAAkBW,YAClCT,EAAOjU,mBAAqB,WAAc,OAAOuU,IAErDP,IACO,CAAC,QAIxBC,EAAS9c,KACTkJ,EAAGpD,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAcuS,KAC9B,KAAK,EACDnP,EAAGnD,OACHmD,EAAGpD,MAAQ,EACf,KAAK,EACD,GAAI8W,EAAkBhU,KAAOiU,EAAYhB,EAAe,MAAO,CAAC,EAAa,GAC7E3S,EAAGpD,MAAQ,EACf,KAAK,EACD,GAAI+W,IAAchB,GAAiBe,EAAkBhU,IACjD,MAAM,IAAIrM,MAAM,yCAEpB,MAAO,CAAC,EAAayD,KAAKwd,gBAAgB5U,EAAK5I,KAAK4N,QAAQ6O,UAAWG,EAAmB3I,IAC9F,KAAK,GACD/K,EAAGnD,OACHmD,EAAGpD,MAAQ,GACf,KAAK,GAUD,OATI9F,KAAKyc,qBAAqB,IAC1Bzc,KAAK8W,SAASC,mBAAoB,GAET,eAAzB/W,KAAK4S,kBAGL5S,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,8CAChCzT,KAAK4S,gBAAkB,aAEpB,CAAC,EAAa,IACzB,KAAK,GAOD,OANAmK,EAAM7T,EAAGnD,OACT/F,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,mCAAqCwgB,GACrE/c,KAAK4S,gBAAkB,eACvB5S,KAAKyc,eAAY3V,EAEjB9G,KAAK+b,sBACE,CAAC,EAAclX,QAAQE,OAAOgY,IACzC,KAAK,GAAI,MAAO,CAAC,WAKjCjB,EAAe/e,UAAUsgB,uBAAyB,SAAUzU,GACxD,OAAO,EAAU5I,UAAM,OAAQ,GAAQ,WACnC,IAAImJ,EAASC,EAAOF,EAAIrC,EAAMnH,EAAO+d,EAAcpf,EAAUue,EAAmB/E,EAChF,OAAO,EAAY7X,MAAM,SAAUqJ,GAC/B,OAAQA,EAAGvD,OACP,KAAK,EAED,OADAqD,EAAU,GACLnJ,KAAK6I,mBACH,CAAC,EAAa7I,KAAK6I,sBADW,CAAC,EAAa,GAEvD,KAAK,EACDO,EAAQC,EAAGtD,OACPqD,IACAD,EAAQ,iBAAmB,UAAYC,GAE3CC,EAAGvD,MAAQ,EACf,KAAK,EACDoD,EAAK,iBAAsBrC,EAAOqC,EAAG,GAAIxJ,EAAQwJ,EAAG,GACpDC,EAAQtC,GAAQnH,EAChB+d,EAAezd,KAAK0d,oBAAoB9U,GACxC5I,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,gCAAkCgK,EAAe,KACjFpU,EAAGvD,MAAQ,EACf,KAAK,EAED,OADAuD,EAAGrD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAK2I,WAAWgB,KAAK8T,EAAc,CAChD3U,QAAS,GACTK,QAAS,EAAS,GAAIA,EAASnJ,KAAK4N,QAAQzE,SAC5CH,gBAAiBhJ,KAAK4N,QAAQ5E,mBAE1C,KAAK,EAED,OADA3K,EAAWgL,EAAGtD,OACc,MAAxB1H,EAASuL,WACF,CAAC,EAAc/E,QAAQE,OAAO,IAAIxI,MAAM,mDAAqD8B,EAASuL,WAAa,QAE9HgT,EAAoB1f,KAAKd,MAAMiC,EAASyK,WACnC8T,EAAkBZ,kBAAoBY,EAAkBZ,iBAAmB,KAG5EY,EAAkBe,gBAAkBf,EAAkB1J,cAEnD,CAAC,EAAc0J,IAC1B,KAAK,EAGD,OAFA/E,EAAMxO,EAAGtD,OACT/F,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,mDAAqDsb,GAC9E,CAAC,EAAchT,QAAQE,OAAO8S,IACzC,KAAK,EAAG,MAAO,CAAC,WAKhCiE,EAAe/e,UAAU6gB,iBAAmB,SAAUhV,EAAK+U,GACvD,OAAKA,EAGE/U,IAA6B,IAAtBA,EAAI/K,QAAQ,KAAc,IAAM,KAAQ,MAAQ8f,EAFnD/U,GAIfkT,EAAe/e,UAAUygB,gBAAkB,SAAU5U,EAAKiV,EAAoBjB,EAAmBkB,GAC7F,OAAO,EAAU9d,UAAM,OAAQ,GAAQ,WACnC,IAAI+d,EAAYC,EAAqBC,EAAYC,EAAWhN,EAAIiN,EAAcC,EAAUC,EAAkBC,EAAMC,EAAMzT,EACtH,OAAO,EAAY9K,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAED,OADAiY,EAAa/d,KAAK4d,iBAAiBhV,EAAKgU,EAAkBe,iBACrD3d,KAAKwe,aAAaX,IACvB7d,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,2EAChCzT,KAAKyc,UAAYoB,EACV,CAAC,EAAa7d,KAAKmd,eAAeY,EAAYD,KAHF,CAAC,EAAa,GAIrE,KAAK,EAGD,OAFA5U,EAAGnD,OACH/F,KAAKkT,aAAe0J,EAAkB1J,aAC/B,CAAC,GACZ,KAAK,EACD8K,EAAsB,GACtBC,EAAarB,EAAkB6B,qBAAuB,GACtDP,EAAYtB,EACZ1L,EAAK,EAAGiN,EAAeF,EACvB/U,EAAGpD,MAAQ,EACf,KAAK,EACD,OAAMoL,EAAKiN,EAAa7hB,QACxB8hB,EAAWD,EAAajN,GACxBmN,EAAmBre,KAAK0e,wBAAwBN,EAAUP,EAAoBC,GACxEO,aAA4B9hB,OAElCyhB,EAAoBxX,KAAK4X,EAAS3B,UAAY,YAAc4B,GACrD,CAAC,EAAa,KAH4B,CAAC,EAAa,IAHvB,CAAC,EAAa,IAO1D,KAAK,EACD,IAAKre,KAAKwe,aAAaH,GAAmB,MAAO,CAAC,EAAa,IAE/D,GADAre,KAAKyc,UAAY4B,EACXH,EAAW,MAAO,CAAC,EAAa,GACtChV,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAKqd,uBAAuBzU,IACrD,KAAK,EAED,OADAsV,EAAYhV,EAAGnD,OACR,CAAC,EAAa,GACzB,KAAK,EAED,OADAuY,EAAOpV,EAAGnD,OACH,CAAC,EAAclB,QAAQE,OAAOuZ,IACzC,KAAK,EACDP,EAAa/d,KAAK4d,iBAAiBhV,EAAKsV,EAAUP,iBAClDzU,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,GAAI,CAAE,KAChB,CAAC,EAAaxG,KAAKmd,eAAeY,EAAYD,IACzD,KAAK,GAGD,OAFA5U,EAAGnD,OACH/F,KAAKkT,aAAegL,EAAUhL,aACvB,CAAC,GACZ,KAAK,GAKD,OAJAqL,EAAOrV,EAAGnD,OACV/F,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,kCAAoC6hB,EAAS3B,UAAY,MAAQ8B,GACjGL,OAAYpX,EACZkX,EAAoBxX,KAAK4X,EAAS3B,UAAY,YAAc8B,GAC/B,eAAzBve,KAAK4S,iBACL9H,EAAU,uDACV9K,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO3I,GACzB,CAAC,EAAcjG,QAAQE,OAAO,IAAIxI,MAAMuO,MAE5C,CAAC,EAAa,IACzB,KAAK,GAED,OADAoG,IACO,CAAC,EAAa,GACzB,KAAK,GACD,OAAI8M,EAAoB1hB,OAAS,EACtB,CAAC,EAAcuI,QAAQE,OAAO,IAAIxI,MAAM,yEAA2EyhB,EAAoB5e,KAAK,QAEhJ,CAAC,EAAcyF,QAAQE,OAAO,IAAIxI,MAAM,yFAKnEuf,EAAe/e,UAAUmgB,mBAAqB,SAAUT,GACpD,OAAQA,GACJ,KAAKjL,EAAkByL,WACnB,IAAKjd,KAAK4N,QAAQwO,UACd,MAAM,IAAI7f,MAAM,qDAEpB,OAAO,IAAI,EAAmByD,KAAK2I,WAAY3I,KAAK6I,mBAAoB7I,KAAKyI,OAAQzI,KAAK4N,QAAQ7E,oBAAqB,EAAO/I,KAAK4N,QAAQwO,UAAWpc,KAAK4N,QAAQzE,SAAW,IAClL,KAAKqI,EAAkBmN,iBACnB,IAAK3e,KAAK4N,QAAQyO,YACd,MAAM,IAAI9f,MAAM,uDAEpB,OAAO,IAAI,EAA0ByD,KAAK2I,WAAY3I,KAAK6I,mBAAoB7I,KAAKyI,OAAQzI,KAAK4N,QAAQ7E,oBAAqB,EAAO/I,KAAK4N,QAAQyO,YAAarc,KAAK4N,QAAQ5E,gBAAiBhJ,KAAK4N,QAAQzE,SAAW,IACzN,KAAKqI,EAAkBoN,YACnB,OAAO,IAAI,EAAqB5e,KAAK2I,WAAY3I,KAAK6I,mBAAoB7I,KAAKyI,OAAQzI,KAAK4N,QAAQ7E,oBAAqB,EAAO/I,KAAK4N,QAAQ5E,gBAAiBhJ,KAAK4N,QAAQzE,SAAW,IAC1L,QACI,MAAM,IAAI5M,MAAM,sBAAwBkgB,EAAY,OAGhEX,EAAe/e,UAAUogB,eAAiB,SAAUvU,EAAKqL,GACrD,IAAI5G,EAAQrN,KAGZ,OAFAA,KAAKyc,UAAUvK,UAAYlS,KAAKkS,UAChClS,KAAKyc,UAAUrK,QAAU,SAAUjN,GAAK,OAAOkI,EAAMsP,eAAexX,IAC7DnF,KAAKyc,UAAUlD,QAAQ3Q,EAAKqL,IAEvC6H,EAAe/e,UAAU2hB,wBAA0B,SAAUN,EAAUP,EAAoBC,GACvF,IAAIrB,EAAYjL,EAAkB4M,EAAS3B,WAC3C,GAAkB,OAAdA,QAAoC3V,IAAd2V,EAEtB,OADAzc,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,uBAAyB2K,EAAS3B,UAAY,iDACvE,IAAIlgB,MAAM,uBAAyB6hB,EAAS3B,UAAY,iDAG/D,IAAIoC,EAAiBhB,EAAoBpB,GAyBrC,OADAzc,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,uBAAyBjC,EAAkBiL,GAAa,4CACjF,IAAIlgB,MAAM,IAAMiV,EAAkBiL,GAAa,gCAxBtD,IAAIqC,EAAkBV,EAASU,gBAAgBjgB,KAAI,SAAUoF,GAAK,OAAOwN,EAAexN,MACxF,KAAI6a,EAAgBjhB,QAAQigB,IAA4B,GAkBpD,OADA9d,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,uBAAyBjC,EAAkBiL,GAAa,gEAAkEhL,EAAeqM,GAA2B,MAC7L,IAAIvhB,MAAM,IAAMiV,EAAkBiL,GAAa,sBAAwBhL,EAAeqM,GAA2B,KAjBxH,GAAKrB,IAAcjL,EAAkByL,aAAejd,KAAK4N,QAAQwO,WAC5DK,IAAcjL,EAAkBmN,mBAAqB3e,KAAK4N,QAAQyO,YAEnE,OADArc,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,uBAAyBjC,EAAkBiL,GAAa,uDACjF,IAAIlgB,MAAM,IAAMiV,EAAkBiL,GAAa,2CAGtDzc,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,wBAA0BjC,EAAkBiL,GAAa,MACzF,IACI,OAAOzc,KAAKkd,mBAAmBT,GAEnC,MAAOsC,GACH,OAAOA,IAe/BjD,EAAe/e,UAAUyhB,aAAe,SAAU/B,GAC9C,OAAOA,GAAoC,kBAAhB,GAA4B,YAAaA,GAExEX,EAAe/e,UAAU4f,eAAiB,SAAU3R,GAChD,IAAIqC,EAAQrN,KAMZ,GALAA,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,iCAAmCzI,EAAQ,2BAA6BhL,KAAK4S,gBAAkB,KAC/H5S,KAAKyc,eAAY3V,EAEjBkE,EAAQhL,KAAK0c,WAAa1R,EAC1BhL,KAAK0c,eAAY5V,EACY,iBAAzB9G,KAAK4S,gBAAT,CAIA,GAA6B,eAAzB5S,KAAK4S,gBAEL,MADA5S,KAAKyI,OAAOgB,IAAI,OAASyB,QAAS,yCAA2CF,EAAQ,0EAC/E,IAAIzO,MAAM,iCAAmCyO,EAAQ,uEAqB/D,GAnB6B,kBAAzBhL,KAAK4S,iBAGL5S,KAAK+b,sBAEL/Q,EACAhL,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,uCAAyCyO,EAAQ,MAGjFhL,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,4BAEtC/J,KAAKuc,YACLvc,KAAKuc,UAAUjI,OAAO7J,OAAM,SAAUtF,GAClCkI,EAAM5E,OAAOgB,IAAI,OAASlN,MAAO,0CAA4C4I,EAAI,SAErFnF,KAAKuc,eAAYzV,GAErB9G,KAAKkT,kBAAepM,EACpB9G,KAAK4S,gBAAkB,eACnB5S,KAAK8S,kBAAmB,CACxB9S,KAAK8S,mBAAoB,EACzB,IACQ9S,KAAKoS,SACLpS,KAAKoS,QAAQpH,GAGrB,MAAO7F,GACHnF,KAAKyI,OAAOgB,IAAI,OAASlN,MAAO,0BAA4ByO,EAAQ,kBAAoB7F,EAAI,aAlChGnF,KAAKyI,OAAOgB,IAAI,OAASgK,MAAO,yCAA2CzI,EAAQ,+EAsC3F8Q,EAAe/e,UAAUkf,WAAa,SAAUrT,GAE5C,GAAuC,IAAnCA,EAAIoW,YAAY,WAAY,IAA8C,IAAlCpW,EAAIoW,YAAY,UAAW,GACnE,OAAOpW,EAEX,IAAK,OAASnB,YAAcJ,OAAOhE,SAC/B,MAAM,IAAI9G,MAAM,mBAAqBqM,EAAM,MAO/C,IAAIqW,EAAO5X,OAAOhE,SAASlD,cAAc,KAGzC,OAFA8e,EAAKC,KAAOtW,EACZ5I,KAAKyI,OAAOgB,IAAI,OAASM,YAAa,gBAAkBnB,EAAM,SAAWqW,EAAKC,KAAO,MAC9ED,EAAKC,MAEhBpD,EAAe/e,UAAU2gB,oBAAsB,SAAU9U,GACrD,IAAIyB,EAAQzB,EAAI/K,QAAQ,KACpB4f,EAAe7U,EAAIxK,UAAU,GAAc,IAAXiM,EAAezB,EAAItM,OAAS+N,GAUhE,MAT8C,MAA1CoT,EAAaA,EAAanhB,OAAS,KACnCmhB,GAAgB,KAEpBA,GAAgB,YAChBA,IAA2B,IAAXpT,EAAe,GAAKzB,EAAIxK,UAAUiM,IACA,IAA9CoT,EAAa5f,QAAQ,sBACrB4f,IAA2B,IAAXpT,EAAe,IAAM,IACrCoT,GAAgB,oBAAsBzd,KAAKgc,kBAExCyB,GAEJ3B,EAliBwB,GAqiBnC,SAAS+C,EAAiBhB,EAAoBsB,GAC1C,OAAQtB,GAAkE,KAA1CsB,EAAkBtB,GAGtD,IAAIrB,GAAoC,WACpC,SAASA,EAAmBC,GACxBzc,KAAKyc,UAAYA,EACjBzc,KAAK9B,OAAS,GACd8B,KAAKof,WAAY,EACjBpf,KAAKqf,iBAAmB,IAAIC,GAC5Btf,KAAKuf,gBAAkB,IAAID,GAC3Btf,KAAKwf,gBAAkBxf,KAAKyf,WAyEhC,OAvEAjD,EAAmBzf,UAAU8Q,KAAO,SAAUxQ,GAK1C,OAJA2C,KAAK0f,WAAWriB,GACX2C,KAAKuf,kBACNvf,KAAKuf,gBAAkB,IAAID,IAExBtf,KAAKuf,gBAAgBI,SAEhCnD,EAAmBzf,UAAUuX,KAAO,WAGhC,OAFAtU,KAAKof,WAAY,EACjBpf,KAAKqf,iBAAiBva,UACf9E,KAAKwf,iBAEhBhD,EAAmBzf,UAAU2iB,WAAa,SAAUriB,GAChD,GAAI2C,KAAK9B,OAAO5B,eAAkB0D,KAAK9B,OAAO,YAAe,EACzD,MAAM,IAAI3B,MAAM,sCAAyCyD,KAAW,OAAI,2BAA6B,GAEzGA,KAAK9B,OAAOsI,KAAKnJ,GACjB2C,KAAKqf,iBAAiBva,WAE1B0X,EAAmBzf,UAAU0iB,SAAW,WACpC,OAAO,EAAUzf,UAAM,OAAQ,GAAQ,WACnC,IAAIuf,EAAiBliB,EAAMuiB,EAC3B,OAAO,EAAY5f,MAAM,SAAUkJ,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAED,MAAO,CAAC,EAAa9F,KAAKqf,iBAAiBM,SAC/C,KAAK,EAED,GADAzW,EAAGnD,QACE/F,KAAKof,UAIN,OAHIpf,KAAKuf,iBACLvf,KAAKuf,gBAAgBxa,OAAO,uBAEzB,CAAC,EAAa,GAEzB/E,KAAKqf,iBAAmB,IAAIC,GAC5BC,EAAkBvf,KAAKuf,gBACvBvf,KAAKuf,qBAAkBzY,EACvBzJ,EAAmC,kBAApB2C,KAAK9B,OAAO,GACvB8B,KAAK9B,OAAOkB,KAAK,IACjBod,EAAmBqD,cAAc7f,KAAK9B,QAC1C8B,KAAK9B,OAAO5B,OAAS,EACrB4M,EAAGpD,MAAQ,EACf,KAAK,EAED,OADAoD,EAAGlD,KAAKQ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAaxG,KAAKyc,UAAU5O,KAAKxQ,IAC7C,KAAK,EAGD,OAFA6L,EAAGnD,OACHwZ,EAAgBza,UACT,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA8a,EAAU1W,EAAGnD,OACbwZ,EAAgBxa,OAAO6a,GAChB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAAG,MAAO,CAAC,WAKhCpD,EAAmBqD,cAAgB,SAAUC,GAIzC,IAHA,IAAIC,EAAcD,EAAajhB,KAAI,SAAUiO,GAAK,OAAOA,EAAE7O,cAAegF,QAAO,SAAU+c,EAAGlT,GAAK,OAAOkT,EAAIlT,KAC1GzH,EAAS,IAAI1H,WAAWoiB,GACxBE,EAAS,EACJ/O,EAAK,EAAGgP,EAAiBJ,EAAc5O,EAAKgP,EAAe5jB,OAAQ4U,IAAM,CAC9E,IAAIhS,EAAOghB,EAAehP,GAC1B7L,EAAOxC,IAAI,IAAIlF,WAAWuB,GAAO+gB,GACjCA,GAAU/gB,EAAKjB,WAEnB,OAAOoH,EAAOnH,QAEXse,EAhF4B,GAmFnC8C,GAA+B,WAC/B,SAASA,IACL,IAAIjS,EAAQrN,KACZA,KAAK2f,QAAU,IAAI9a,SAAQ,SAAUC,EAASC,GAC1C,IAAImE,EACJ,OAAOA,EAAK,CAACpE,EAASC,GAASsI,EAAM8S,SAAWjX,EAAG,GAAImE,EAAM+S,SAAWlX,EAAG,GAAIA,KASvF,OANAoW,EAAcviB,UAAU+H,QAAU,WAC9B9E,KAAKmgB,YAETb,EAAcviB,UAAUgI,OAAS,SAAU6W,GACvC5b,KAAKogB,SAASxE,IAEX0D,EAduB,G,0BC3qB9Be,GAAyB,OAEzB,GAAiC,WACjC,SAASC,IAELtgB,KAAK6G,KAAOwZ,GAEZrgB,KAAK2L,QAAU,EAEf3L,KAAKiU,eAAiBxC,EAAegJ,KAsFzC,OA/EA6F,EAAgBvjB,UAAUwZ,cAAgB,SAAUla,EAAOoM,GAEvD,GAAqB,kBAAVpM,EACP,MAAM,IAAIE,MAAM,2DAEpB,IAAKF,EACD,MAAO,GAEI,OAAXoM,IACAA,EAAS,QAAWuB,UAKxB,IAFA,IAAIxN,EAAWR,GAAA,KAAkBI,MAAMC,GACnCkkB,EAAc,GACTrP,EAAK,EAAGsF,EAAaha,EAAU0U,EAAKsF,EAAWla,OAAQ4U,IAAM,CAClE,IAAIpG,EAAU0L,EAAWtF,GACrBsP,EAAgBtjB,KAAKd,MAAM0O,GAC/B,GAAkC,kBAAvB0V,EAAcliB,KACrB,MAAM,IAAI/B,MAAM,oBAEpB,OAAQikB,EAAcliB,MAClB,KAAK8R,EAAYqG,WACbzW,KAAKygB,oBAAoBD,GACzB,MACJ,KAAKpQ,EAAYuG,WACb3W,KAAK0gB,oBAAoBF,GACzB,MACJ,KAAKpQ,EAAYqF,WACbzV,KAAK2gB,oBAAoBH,GACzB,MACJ,KAAKpQ,EAAY6C,KAEb,MACJ,KAAK7C,EAAYwG,MAEb,MACJ,QAEInO,EAAOgB,IAAI,OAASM,YAAa,yBAA2ByW,EAAcliB,KAAO,cACjF,SAERiiB,EAAY/Z,KAAKga,GAErB,OAAOD,GAOXD,EAAgBvjB,UAAUiW,aAAe,SAAUlI,GAC/C,OAAO9O,GAAA,KAAkBC,MAAMiB,KAAKC,UAAU2N,KAElDwV,EAAgBvjB,UAAU0jB,oBAAsB,SAAU3V,GACtD9K,KAAK4gB,qBAAqB9V,EAAQjK,OAAQ,gDACbiG,IAAzBgE,EAAQ4H,cACR1S,KAAK4gB,qBAAqB9V,EAAQ4H,aAAc,4CAGxD4N,EAAgBvjB,UAAU2jB,oBAAsB,SAAU5V,GAEtD,GADA9K,KAAK4gB,qBAAqB9V,EAAQ4H,aAAc,gDAC3B5L,IAAjBgE,EAAQ5L,KACR,MAAM,IAAI3C,MAAM,4CAGxB+jB,EAAgBvjB,UAAU4jB,oBAAsB,SAAU7V,GACtD,GAAIA,EAAQzF,QAAUyF,EAAQE,MAC1B,MAAM,IAAIzO,MAAM,4CAEfuO,EAAQzF,QAAUyF,EAAQE,OAC3BhL,KAAK4gB,qBAAqB9V,EAAQE,MAAO,2CAE7ChL,KAAK4gB,qBAAqB9V,EAAQ4H,aAAc,4CAEpD4N,EAAgBvjB,UAAU6jB,qBAAuB,SAAUlhB,EAAOyN,GAC9D,GAAqB,kBAAVzN,GAAgC,KAAVA,EAC7B,MAAM,IAAInD,MAAM4Q,IAGjBmT,EA7FyB,GCPhC,GAAsCne,OAAO4B,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU9H,OAAQ4H,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACAD,EAAO9B,OAAOpF,UAAUuH,eAAeC,KAAKN,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,GAUP6c,GAAsB,CACtBC,MAAO,OAASpX,MAChBqX,MAAO,OAAStN,MAChBrI,KAAM,OAASrB,YACfiX,YAAa,OAASjX,YACtBoB,KAAM,OAASD,QACf+V,QAAS,OAAS/V,QAClBF,MAAO,OAASzO,MAChB2kB,SAAU,OAASnW,SACnBoW,KAAM,OAASC,MAEnB,SAASC,GAAcxa,GAInB,IAAIya,EAAUT,GAAoBha,EAAKkP,eACvC,GAAuB,qBAAZuL,EACP,OAAOA,EAGP,MAAM,IAAI/kB,MAAM,sBAAwBsK,GAIhD,IAAI,GAAsC,WACtC,SAAS0a,KA0ET,OAxEAA,EAAqBxkB,UAAUykB,iBAAmB,SAAUC,GAExD,GADA,OAAI9a,WAAW8a,EAAS,WACpBC,GAASD,GACTzhB,KAAKyI,OAASgZ,OAEb,GAAuB,kBAAZA,EAAsB,CAClC,IAAI5W,EAAWwW,GAAcI,GAC7BzhB,KAAKyI,OAAS,IAAI,OAAcoC,QAGhC7K,KAAKyI,OAAS,IAAI,OAAcgZ,GAEpC,OAAOzhB,MAEXuhB,EAAqBxkB,UAAU4kB,QAAU,SAAU/Y,EAAKgZ,GAYpD,OAXA,OAAIjb,WAAWiC,EAAK,OACpB,OAAI7B,WAAW6B,EAAK,OACpB5I,KAAK4I,IAAMA,EAIP5I,KAAK6hB,sBAAwB,GAAS,GAAI7hB,KAAK6hB,sBADb,kBAA3BD,EAC+DA,EAGA,CAAEnF,UAAWmF,IAEhF5hB,MAMXuhB,EAAqBxkB,UAAU+kB,gBAAkB,SAAUlQ,GAGvD,OAFA,OAAIjL,WAAWiL,EAAU,YACzB5R,KAAK4R,SAAWA,EACT5R,MAEXuhB,EAAqBxkB,UAAUglB,uBAAyB,SAAUC,GAC9D,GAAIhiB,KAAK6R,gBACL,MAAM,IAAItV,MAAM,2CAWpB,OATKylB,EAGIpV,MAAMqV,QAAQD,GACnBhiB,KAAK6R,gBAAkB,IAAIkH,EAAuBiJ,GAGlDhiB,KAAK6R,gBAAkBmQ,EANvBhiB,KAAK6R,gBAAkB,IAAIkH,EAQxB/Y,MAMXuhB,EAAqBxkB,UAAUmlB,MAAQ,WAGnC,IAAIL,EAAwB7hB,KAAK6hB,uBAAyB,GAO1D,QALqC/a,IAAjC+a,EAAsBpZ,SAEtBoZ,EAAsBpZ,OAASzI,KAAKyI,SAGnCzI,KAAK4I,IACN,MAAM,IAAIrM,MAAM,4FAEpB,IAAIoV,EAAa,IAAI,EAAe3R,KAAK4I,IAAKiZ,GAC9C,OAAO,EAAc7U,OAAO2E,EAAY3R,KAAKyI,QAAU,QAAWuB,SAAUhK,KAAK4R,UAAY,IAAI,GAAmB5R,KAAK6R,kBAEtH0P,EA3E8B,GA8EzC,SAASG,GAASjZ,GACd,YAAsB3B,IAAf2B,EAAOgB","file":"js/vendors-41a6ab2c.61156008.js","sourcesContent":["// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexport { TextMessageFormat };\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (isArrayBuffer(data) || (typeof Buffer !== \"undefined\" && data instanceof Buffer)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat.parse(messageData);\r\n var response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexport { HandshakeProtocol };\r\n//# sourceMappingURL=HandshakeProtocol.js.map","import Vue from 'vue';\nimport { css } from '@emotion/css';\nexport { css, keyframes } from '@emotion/css';\n\nconst classResolver = ({\n theme,\n stylesTemplates,\n props,\n staticClass\n}) => {\n const classes = stylesTemplates.map(stylesTemplate => {\n const [strings, tags] = stylesTemplate;\n let flatTags = [];\n\n if (tags !== null && tags !== void 0 && tags.length) {\n flatTags = tags.map(item => {\n if (typeof item === 'function') {\n return item(props, theme);\n }\n\n return item;\n });\n }\n\n return css(strings, ...flatTags);\n });\n const genClass = `${classes.join(' ')}${staticClass ? ` ${staticClass}` : ''}`;\n return genClass;\n};\n\nconst compGen = (htmlTag, stylesTemplates, propTypes = {}) => Vue.component('StyledComponent', {\n props: {\n className: String,\n value: [String, Number, Date, Boolean],\n ...propTypes\n },\n computed: {\n localValue: {\n get() {\n return this.value;\n },\n\n set(newVal) {\n this.$emit('input', newVal);\n }\n\n }\n },\n\n render(createElement) {\n var _this$$slots;\n\n return createElement(htmlTag, {\n class: (() => {\n let theme = {};\n\n if (this.$veTheme) {\n theme = this.$veTheme.get();\n }\n\n const resolvedClasses = classResolver({\n theme,\n stylesTemplates,\n props: this.$props,\n staticClass: this.$vnode.data.staticClass\n });\n this.$vnode.data.staticClass = '';\n return resolvedClasses;\n })(),\n on: { ...this.$listeners,\n input: newVal => {\n this.localValue = newVal.target.value;\n }\n },\n domProps: {\n value: this.localValue\n }\n }, (_this$$slots = this.$slots) === null || _this$$slots === void 0 ? void 0 : _this$$slots.default);\n },\n\n styledComponent: {\n stylesTemplates,\n htmlTag,\n propTypes\n }\n});\nconst styledComp = (htmlTag, stylesTemplate) => propTypes => compGen(htmlTag, [stylesTemplate], propTypes);\n\nconst funcGen = (htmlTag, stylesTemplates, propTypes = {}) => Vue.component('StyledComponent', {\n functional: true,\n props: {\n className: String,\n ...propTypes\n },\n\n render(createElement, context) {\n const {\n children,\n data,\n props,\n parent\n } = context;\n return createElement(htmlTag, { ...data,\n class: (() => {\n let theme = {};\n\n if (parent.$veTheme) {\n theme = parent.$veTheme.get();\n }\n\n const resolvedClasses = classResolver({\n theme,\n stylesTemplates,\n props,\n staticClass: data.staticClass\n });\n data.staticClass = '';\n return resolvedClasses;\n })(),\n on: { ...data.on\n },\n attrs: { ...data.attrs\n }\n }, children);\n },\n\n styledComponent: {\n functional: true,\n stylesTemplates,\n htmlTag,\n propTypes\n }\n});\nconst styledFunc = (htmlTag, stylesTemplate) => propTypes => funcGen(htmlTag, [stylesTemplate], propTypes);\n\nvar domElements = ['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', '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', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'marker', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar inputElements = ['input', 'select', 'textarea'];\n\nconst styled = styledInstance => {\n const {\n htmlTag,\n stylesTemplates: formerStyles,\n propTypes: formerPropTypes,\n functional\n } = styledInstance.extendOptions.styledComponent;\n\n if (functional) {\n return (strings, ...tags) => propTypes => funcGen(htmlTag, [...formerStyles, [strings, tags]], { ...formerPropTypes,\n ...propTypes\n });\n }\n\n return (strings, ...tags) => propTypes => compGen(htmlTag, [...formerStyles, [strings, tags]], { ...formerPropTypes,\n ...propTypes\n });\n};\n\ndomElements.forEach(elem => {\n styled[elem] = (strings, ...tags) => styledFunc(elem, [strings, tags]);\n}); // input elements need to be components so v-model would still work\n\ninputElements.forEach(elem => {\n styled[elem] = (strings, ...tags) => styledComp(elem, [strings, tags]);\n});\n\nconst VEGlobalTheme = (Vue, theme) => {\n const veTheme = Vue.observable({\n theme: { ...theme\n }\n });\n Vue.prototype.$veTheme = {\n get: () => veTheme.theme,\n set: val => {\n veTheme.theme = val;\n }\n };\n};\n\nvar GlobalThemeComponent = Vue.component('VEGlobalTheme', {\n props: {\n theme: {\n type: Object,\n required: true\n }\n },\n watch: {\n theme(newVal) {\n this.calcTheme(newVal);\n }\n\n },\n computed: {\n rootId() {\n return this.$root.$el.id;\n },\n\n stylesId() {\n return `styled-vars-${this.rootId}`;\n }\n\n },\n methods: {\n calcTheme(themeObj) {\n if (this.$veTheme) {\n this.$veTheme.set(themeObj);\n }\n\n const themeKeys = Object.keys(themeObj);\n let styleString = themeKeys.reduce((acc, key) => {\n let res = acc;\n res += `--${key}: ${themeObj[key]};\\n`;\n return res;\n }, `#${this.rootId} {\\n`);\n styleString += '}';\n document.querySelector(`#${this.stylesId}`).innerHTML = styleString;\n }\n\n },\n\n mounted() {\n const styleElem = document.createElement('style');\n styleElem.setAttribute('id', this.stylesId);\n document.head.appendChild(styleElem);\n this.calcTheme(this.theme);\n },\n\n render(createElement) {\n // making sure multi children are possible wrapping the slots with\n // a single div applied \"display: contents\" as style\n return createElement('div', {\n domProps: {\n style: 'display: contents'\n }\n }, this.$slots.default);\n }\n\n});\n\nexport default styled;\nexport { VEGlobalTheme, GlobalThemeComponent as VEGlobalThemeComponent };\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport var VERSION = \"5.0.17\";\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isNotEmpty = function (val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(\"The '\" + name + \"' argument should not be empty.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexport { Arg };\r\n/** @private */\r\nvar Platform = /** @class */ (function () {\r\n function Platform() {\r\n }\r\n Object.defineProperty(Platform, \"isBrowser\", {\r\n get: function () {\r\n return typeof window === \"object\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Platform, \"isWebWorker\", {\r\n get: function () {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Platform, \"isNode\", {\r\n get: function () {\r\n return !this.isBrowser && !this.isWebWorker;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Platform;\r\n}());\r\nexport { Platform };\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n var detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n detail += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n detail += \". Content: '\" + data + \"'\";\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent, withCredentials, defaultHeaders) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, _b, name, value, responseType, response;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n headers = {};\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _c.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _c.label = 2;\r\n case 2:\r\n _b = getUserAgentHeader(), name = _b[0], value = _b[1];\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: __assign({}, headers, defaultHeaders),\r\n responseType: responseType,\r\n withCredentials: withCredentials,\r\n })];\r\n case 3:\r\n response = _c.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexport { SubjectSubscription };\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n this.outputConsole = console;\r\n }\r\n ConsoleLogger.prototype.log = function (logLevel, message) {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.outputConsole.error(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n this.outputConsole.warn(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n this.outputConsole.info(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.outputConsole.log(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexport { ConsoleLogger };\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n var userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n var userAgent = \"Microsoft SignalR/\";\r\n var majorAndMinor = version.split(\".\");\r\n userAgent += majorAndMinor[0] + \".\" + majorAndMinor[1];\r\n userAgent += \" (\" + version + \"; \";\r\n if (os && os !== \"\") {\r\n userAgent += os + \"; \";\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += \"\" + runtime;\r\n if (runtimeVersion) {\r\n userAgent += \"; \" + runtimeVersion;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\nfunction getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\nfunction getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n//# sourceMappingURL=Utils.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nvar NullLogger = /** @class */ (function () {\r\n function NullLogger() {\r\n }\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n NullLogger.prototype.log = function (_logLevel, _message) {\r\n };\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n NullLogger.instance = new NullLogger();\r\n return NullLogger;\r\n}());\r\nexport { NullLogger };\r\n//# sourceMappingURL=Loggers.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexport { HttpError };\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexport { TimeoutError };\r\n/** Error thrown when an action is aborted. */\r\nvar AbortError = /** @class */ (function (_super) {\r\n __extends(AbortError, _super);\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function AbortError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"An abort occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return AbortError;\r\n}(Error));\r\nexport { AbortError };\r\n//# sourceMappingURL=Errors.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n HttpClient.prototype.getCookieString = function (url) {\r\n return \"\";\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=HttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\nvar FetchHttpClient = /** @class */ (function (_super) {\r\n __extends(FetchHttpClient, _super);\r\n function FetchHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n _this.jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n _this.fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n _this.fetchType = requireFunc(\"fetch-cookie\")(_this.fetchType, _this.jar);\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n _this.abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n _this.fetchType = fetch.bind(self);\r\n _this.abortControllerType = AbortController;\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n FetchHttpClient.prototype.send = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var abortController, error, timeoutId, msTimeout, response, e_1, content, payload;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n abortController = new this.abortControllerType();\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n timeoutId = null;\r\n if (request.timeout) {\r\n msTimeout = request.timeout;\r\n timeoutId = setTimeout(function () {\r\n abortController.abort();\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, 4, 5]);\r\n return [4 /*yield*/, this.fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: __assign({ \"Content-Type\": \"text/plain;charset=UTF-8\", \"X-Requested-With\": \"XMLHttpRequest\" }, request.headers),\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"manual\",\r\n signal: abortController.signal,\r\n })];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (error) {\r\n throw error;\r\n }\r\n this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + e_1 + \".\");\r\n throw e_1;\r\n case 4:\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n return [7 /*endfinally*/];\r\n case 5:\r\n if (!response.ok) {\r\n throw new HttpError(response.statusText, response.status);\r\n }\r\n content = deserializeContent(response, request.responseType);\r\n return [4 /*yield*/, content];\r\n case 6:\r\n payload = _a.sent();\r\n return [2 /*return*/, new HttpResponse(response.status, response.statusText, payload)];\r\n }\r\n });\r\n });\r\n };\r\n FetchHttpClient.prototype.getCookieString = function (url) {\r\n var cookies = \"\";\r\n if (Platform.isNode && this.jar) {\r\n // @ts-ignore: unused variable\r\n this.jar.getCookies(url, function (e, c) { return cookies = c.join(\"; \"); });\r\n }\r\n return cookies;\r\n };\r\n return FetchHttpClient;\r\n}(HttpClient));\r\nexport { FetchHttpClient };\r\nfunction deserializeContent(response, responseType) {\r\n var content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(responseType + \" is not supported.\");\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n//# sourceMappingURL=FetchHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nvar XhrHttpClient = /** @class */ (function (_super) {\r\n __extends(XhrHttpClient, _super);\r\n function XhrHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n XhrHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n var headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach(function (header) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText + \".\");\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return XhrHttpClient;\r\n}(HttpClient));\r\nexport { XhrHttpClient };\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n _this.httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this.httpClient.send(request);\r\n };\r\n DefaultHttpClient.prototype.getCookieString = function (url) {\r\n return this.httpClient.getCookieString(url);\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nvar Subject = /** @class */ (function () {\r\n function Subject() {\r\n this.observers = [];\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexport { Subject };\r\n//# sourceMappingURL=Subject.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nvar DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol, reconnectPolicy) {\r\n var _this = this;\r\n this.nextKeepAlive = 0;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.reconnectPolicy = reconnectPolicy;\r\n this.handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = function (data) { return _this.processIncomingData(data); };\r\n this.connection.onclose = function (error) { return _this.connectionClosed(error); };\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.reconnectingCallbacks = [];\r\n this.reconnectedCallbacks = [];\r\n this.invocationId = 0;\r\n this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n };\r\n Object.defineProperty(HubConnection.prototype, \"state\", {\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connectionState;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HubConnection.prototype, \"connectionId\", {\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get: function () {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HubConnection.prototype, \"baseUrl\", {\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connection.baseUrl || \"\";\r\n },\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set: function (url) {\r\n if (this.connectionState !== HubConnectionState.Disconnected && this.connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n HubConnection.prototype.start = function () {\r\n this.startPromise = this.startWithStateTransitions();\r\n return this.startPromise;\r\n };\r\n HubConnection.prototype.startWithStateTransitions = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.connectionState !== HubConnectionState.Disconnected) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"))];\r\n }\r\n this.connectionState = HubConnectionState.Connecting;\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startInternal()];\r\n case 2:\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n this.connectionStarted = true;\r\n this.logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.logger.log(LogLevel.Debug, \"HubConnection failed to start successfully because of error '\" + e_1 + \"'.\");\r\n return [2 /*return*/, Promise.reject(e_1)];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.startInternal = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var handshakePromise, handshakeRequest, e_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.stopDuringStartError = undefined;\r\n this.receivedHandshakeResponse = false;\r\n handshakePromise = new Promise(function (resolve, reject) {\r\n _this.handshakeResolver = resolve;\r\n _this.handshakeRejecter = reject;\r\n });\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 7]);\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 3:\r\n _a.sent();\r\n this.logger.log(LogLevel.Information, \"Using HubProtocol '\" + this.protocol.name + \"'.\");\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n return [4 /*yield*/, handshakePromise];\r\n case 4:\r\n _a.sent();\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this.stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n throw this.stopDuringStartError;\r\n }\r\n return [3 /*break*/, 7];\r\n case 5:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Hub handshake failed with error '\" + e_2 + \"' during start(). Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n return [4 /*yield*/, this.connection.stop(e_2)];\r\n case 6:\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n _a.sent();\r\n throw e_2;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n HubConnection.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var startPromise, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n startPromise = this.startPromise;\r\n this.stopPromise = this.stopInternal();\r\n return [4 /*yield*/, this.stopPromise];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n // Awaiting undefined continues immediately\r\n return [4 /*yield*/, startPromise];\r\n case 3:\r\n // Awaiting undefined continues immediately\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_3 = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.stopInternal = function (error) {\r\n if (this.connectionState === HubConnectionState.Disconnected) {\r\n this.logger.log(LogLevel.Debug, \"Call to HubConnection.stop(\" + error + \") ignored because it is already in the disconnected state.\");\r\n return Promise.resolve();\r\n }\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnecting state.\");\r\n return this.stopPromise;\r\n }\r\n this.connectionState = HubConnectionState.Disconnecting;\r\n this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this.reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this.logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this.reconnectDelayHandle);\r\n this.reconnectDelayHandle = undefined;\r\n this.completeClose();\r\n return Promise.resolve();\r\n }\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n };\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n HubConnection.prototype.stream = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var invocationDescriptor = this.createStreamInvocation(methodName, args, streamIds);\r\n var promiseQueue;\r\n var subject = new Subject();\r\n subject.cancelCallback = function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(function () {\r\n return _this.sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this.sendWithProtocol(invocationDescriptor)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n this.launchStreams(streams, promiseQueue);\r\n return subject;\r\n };\r\n HubConnection.prototype.sendMessage = function (message) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n };\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n HubConnection.prototype.sendWithProtocol = function (message) {\r\n return this.sendMessage(this.protocol.writeMessage(message));\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var sendPromise = this.sendWithProtocol(this.createInvocation(methodName, args, true, streamIds));\r\n this.launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n HubConnection.prototype.invoke = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var invocationDescriptor = this.createInvocation(methodName, args, false, streamIds);\r\n var p = new Promise(function (resolve, reject) {\r\n // invocationId will always have a value for a non-blocking invocation\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n }\r\n };\r\n var promiseQueue = _this.sendWithProtocol(invocationDescriptor)\r\n .catch(function (e) {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n _this.launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n };\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n HubConnection.prototype.on = function (methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this.methods[methodName].push(newMethod);\r\n };\r\n HubConnection.prototype.off = function (methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n var handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n var removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this.methods[methodName];\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n HubConnection.prototype.onclose = function (callback) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n HubConnection.prototype.onreconnecting = function (callback) {\r\n if (callback) {\r\n this.reconnectingCallbacks.push(callback);\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n HubConnection.prototype.onreconnected = function (callback) {\r\n if (callback) {\r\n this.reconnectedCallbacks.push(callback);\r\n }\r\n };\r\n HubConnection.prototype.processIncomingData = function (data) {\r\n this.cleanupTimeout();\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n var messages = this.protocol.parseMessages(data, this.logger);\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n var callback = this.callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close:\r\n this.logger.log(LogLevel.Information, \"Close message received from server.\");\r\n var error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this.stopPromise = this.stopInternal(error);\r\n }\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, \"Invalid message type: \" + message.type + \".\");\r\n break;\r\n }\r\n }\r\n }\r\n this.resetTimeoutPeriod();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this.handshakeResolver();\r\n return remainingData;\r\n };\r\n HubConnection.prototype.resetKeepAliveInterval = function () {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this.nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this.cleanupPingTimer();\r\n };\r\n HubConnection.prototype.resetTimeoutPeriod = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this.pingServerHandle === undefined) {\r\n var nextPing = this.nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = _b.sent();\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }, nextPing);\r\n }\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n };\r\n HubConnection.prototype.invokeClientMethod = function (invocationMessage) {\r\n var _this = this;\r\n var methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"A callback for the method \" + invocationMessage.target.toLowerCase() + \" threw error '\" + e + \"'.\");\r\n }\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n var message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We don't want to wait on the stop itself.\r\n this.stopPromise = this.stopInternal(new Error(message));\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Warning, \"No client method with the name '\" + invocationMessage.target + \"' found.\");\r\n }\r\n };\r\n HubConnection.prototype.connectionClosed = function (error) {\r\n this.logger.log(LogLevel.Debug, \"HubConnection.connectionClosed(\" + error + \") called while in state \" + this.connectionState + \".\");\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this.stopDuringStartError = this.stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this.handshakeResolver) {\r\n this.handshakeResolver();\r\n }\r\n this.cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.completeClose(error);\r\n }\r\n else if (this.connectionState === HubConnectionState.Connected && this.reconnectPolicy) {\r\n // tslint:disable-next-line:no-floating-promises\r\n this.reconnect(error);\r\n }\r\n else if (this.connectionState === HubConnectionState.Connected) {\r\n this.completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n };\r\n HubConnection.prototype.completeClose = function (error) {\r\n var _this = this;\r\n if (this.connectionStarted) {\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n try {\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onclose callback called with error '\" + error + \"' threw error '\" + e + \"'.\");\r\n }\r\n }\r\n };\r\n HubConnection.prototype.reconnect = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectStartTime, previousReconnectAttempts, retryError, nextRetryDelay, e_4;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n reconnectStartTime = Date.now();\r\n previousReconnectAttempts = 0;\r\n retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this.logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this.completeClose(error);\r\n return [2 /*return*/];\r\n }\r\n this.connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting because of error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this.onreconnecting) {\r\n try {\r\n this.reconnectingCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onreconnecting callback called with error '\" + error + \"' threw error '\" + e + \"'.\");\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n }\r\n _a.label = 1;\r\n case 1:\r\n if (!(nextRetryDelay !== null)) return [3 /*break*/, 7];\r\n this.logger.log(LogLevel.Information, \"Reconnect attempt number \" + previousReconnectAttempts + \" will start in \" + nextRetryDelay + \" ms.\");\r\n return [4 /*yield*/, new Promise(function (resolve) {\r\n _this.reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n })];\r\n case 2:\r\n _a.sent();\r\n this.reconnectDelayHandle = undefined;\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.startInternal()];\r\n case 4:\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n this.logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this.onreconnected) {\r\n try {\r\n this.reconnectedCallbacks.forEach(function (c) { return c.apply(_this, [_this.connection.connectionId]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onreconnected callback called with connectionId '\" + this.connection.connectionId + \"; threw error '\" + e + \"'.\");\r\n }\r\n }\r\n return [2 /*return*/];\r\n case 5:\r\n e_4 = _a.sent();\r\n this.logger.log(LogLevel.Information, \"Reconnect attempt failed because of error '\" + e_4 + \"'.\");\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection moved to the '\" + this.connectionState + \"' from the reconnecting state during reconnect attempt. Done reconnecting.\");\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.completeClose();\r\n }\r\n return [2 /*return*/];\r\n }\r\n retryError = e_4 instanceof Error ? e_4 : new Error(e_4.toString());\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7:\r\n this.logger.log(LogLevel.Information, \"Reconnect retries have been exhausted after \" + (Date.now() - reconnectStartTime) + \" ms and \" + previousReconnectAttempts + \" failed attempts. Connection disconnecting.\");\r\n this.completeClose();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.getNextRetryDelay = function (previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this.reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds: elapsedMilliseconds,\r\n previousRetryCount: previousRetryCount,\r\n retryReason: retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"IRetryPolicy.nextRetryDelayInMilliseconds(\" + previousRetryCount + \", \" + elapsedMilliseconds + \") threw error '\" + e + \"'.\");\r\n return null;\r\n }\r\n };\r\n HubConnection.prototype.cancelCallbacksWithError = function (error) {\r\n var callbacks = this.callbacks;\r\n this.callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(null, error);\r\n });\r\n };\r\n HubConnection.prototype.cleanupPingTimer = function () {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n this.pingServerHandle = undefined;\r\n }\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n };\r\n HubConnection.prototype.launchStreams = function (streams, promiseQueue) {\r\n var _this = this;\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n var _loop_1 = function (streamId) {\r\n streams[streamId].subscribe({\r\n complete: function () {\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId)); });\r\n },\r\n error: function (err) {\r\n var message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId, message)); });\r\n },\r\n next: function (item) {\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createStreamItemMessage(streamId, item)); });\r\n },\r\n });\r\n };\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // tslint:disable-next-line:forin\r\n for (var streamId in streams) {\r\n _loop_1(streamId);\r\n }\r\n };\r\n HubConnection.prototype.replaceStreamingParams = function (args) {\r\n var streams = [];\r\n var streamIds = [];\r\n for (var i = 0; i < args.length; i++) {\r\n var argument = args[i];\r\n if (this.isObservable(argument)) {\r\n var streamId = this.invocationId;\r\n this.invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n };\r\n HubConnection.prototype.isObservable = function (arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args, streamIds) {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createStreamItemMessage = function (id, item) {\r\n return {\r\n invocationId: id,\r\n item: item,\r\n type: MessageType.StreamItem,\r\n };\r\n };\r\n HubConnection.prototype.createCompletionMessage = function (id, error, result) {\r\n if (error) {\r\n return {\r\n error: error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result: result,\r\n type: MessageType.Completion,\r\n };\r\n };\r\n return HubConnection;\r\n}());\r\nexport { HubConnection };\r\n//# sourceMappingURL=HubConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nvar DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nvar DefaultReconnectPolicy = /** @class */ (function () {\r\n function DefaultReconnectPolicy(retryDelays) {\r\n this.retryDelays = retryDelays !== undefined ? retryDelays.concat([null]) : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n DefaultReconnectPolicy.prototype.nextRetryDelayInMilliseconds = function (retryContext) {\r\n return this.retryDelays[retryContext.previousRetryCount];\r\n };\r\n return DefaultReconnectPolicy;\r\n}());\r\nexport { DefaultReconnectPolicy };\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nvar AbortController = /** @class */ (function () {\r\n function AbortController() {\r\n this.isAborted = false;\r\n this.onabort = null;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent, withCredentials, headers) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.withCredentials = withCredentials;\r\n this.headers = headers;\r\n this.running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, _b, name, value, headers, pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n _b = getUserAgentHeader(), name = _b[0], value = _b[1];\r\n headers = __assign((_a = {}, _a[name] = value, _a), this.headers);\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: headers,\r\n timeout: 100000,\r\n withCredentials: this.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 1:\r\n token = _c.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _c.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n this.receiving = this.poll(this.url, pollOptions);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.getAccessToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Unexpected status code\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) data received. \" + getDataDetail(response.content, this.logMessageContent) + \".\");\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent, this.withCredentials, this.headers)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, _a, name_1, value, deleteOptions, token;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _b.sent();\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n headers = {};\r\n _a = getUserAgentHeader(), name_1 = _a[0], value = _a[1];\r\n headers[name_1] = value;\r\n deleteOptions = {\r\n headers: __assign({}, headers, this.headers),\r\n withCredentials: this.withCredentials,\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _b.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _b.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.raiseOnClose = function () {\r\n if (this.onclose) {\r\n var logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor, withCredentials, headers) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.withCredentials = withCredentials;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.headers = headers;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n var eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: _this.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n var headers = {};\r\n headers.Cookie = cookies;\r\n var _a = getUserAgentHeader(), name_1 = _a[0], value = _a[1];\r\n headers[name_1] = value;\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: _this.withCredentials, headers: __assign({}, headers, _this.headers) });\r\n }\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(LogLevel.Trace, \"(SSE transport) data received. \" + getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent, this.withCredentials, this.headers)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this.headers = headers;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket;\r\n var cookies = _this.httpClient.getCookieString(url);\r\n var opened = false;\r\n if (Platform.isNode) {\r\n var headers = {};\r\n var _a = getUserAgentHeader(), name_1 = _a[0], value = _a[1];\r\n headers[name_1] = value;\r\n if (cookies) {\r\n headers[\"Cookie\"] = \"\" + cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: __assign({}, headers, _this.headers),\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new _this.webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(LogLevel.Information, \"WebSocket connected to \" + url + \".\");\r\n _this.webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n reject(error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n try {\r\n _this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = function (event) {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n _this.close(event);\r\n }\r\n else {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n reject(error);\r\n }\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) sending data. \" + getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n return Promise.resolve();\r\n };\r\n WebSocketTransport.prototype.close = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = function () { };\r\n this.webSocket.onmessage = function () { };\r\n this.webSocket.onerror = function () { };\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n }\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this.isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(\"WebSocket closed with status code: \" + event.code + \" (\" + event.reason + \").\"));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n WebSocketTransport.prototype.isCloseEvent = function (event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.stopPromiseResolver = function () { };\r\n this.features = {};\r\n this.negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n var webSocketModule = null;\r\n var eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n this.connectionStarted = false;\r\n this.options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var message, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Debug, \"Starting connection with transfer format '\" + TransferFormat[transferFormat] + \"'.\");\r\n if (this.connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"))];\r\n }\r\n this.connectionState = \"Connecting\" /* Connecting */;\r\n this.startInternalPromise = this.startInternal(transferFormat);\r\n return [4 /*yield*/, this.startInternalPromise];\r\n case 1:\r\n _a.sent();\r\n if (!(this.connectionState === \"Disconnecting\" /* Disconnecting */)) return [3 /*break*/, 3];\r\n message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n return [4 /*yield*/, this.stopPromise];\r\n case 2:\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n _a.sent();\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n case 3:\r\n if (this.connectionState !== \"Connected\" /* Connected */) {\r\n message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this.logger.log(LogLevel.Error, message);\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n }\r\n _a.label = 4;\r\n case 4:\r\n this.connectionStarted = true;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this.sendQueue) {\r\n this.sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this.sendQueue.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.connectionState === \"Disconnected\" /* Disconnected */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnected state.\");\r\n return [2 /*return*/, Promise.resolve()];\r\n }\r\n if (this.connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnecting state.\");\r\n return [2 /*return*/, this.stopPromise];\r\n }\r\n this.connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this.stopPromise = new Promise(function (resolve) {\r\n // Don't complete stop() until stopConnection() completes.\r\n _this.stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n return [4 /*yield*/, this.stopInternal(error)];\r\n case 1:\r\n // stopInternal should never throw so just observe it.\r\n _a.sent();\r\n return [4 /*yield*/, this.stopPromise];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.stopInternal = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startInternalPromise];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!this.transport) return [3 /*break*/, 9];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 6:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"HttpConnection.transport.stop() threw error '\" + e_2 + \"'.\");\r\n this.stopConnection();\r\n return [3 /*break*/, 8];\r\n case 8:\r\n this.transport = undefined;\r\n return [3 /*break*/, 10];\r\n case 9:\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n _a.label = 10;\r\n case 10: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.startInternal = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, negotiateResponse, redirects, _loop_1, this_1, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 12, , 13]);\r\n if (!this.options.skipNegotiation) return [3 /*break*/, 5];\r\n if (!(this.options.transport === HttpTransportType.WebSockets)) return [3 /*break*/, 3];\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n return [4 /*yield*/, this.startTransport(url, transferFormat)];\r\n case 2:\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3: throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n case 4: return [3 /*break*/, 11];\r\n case 5:\r\n negotiateResponse = null;\r\n redirects = 0;\r\n _loop_1 = function () {\r\n var accessToken_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];\r\n case 1:\r\n negotiateResponse = _a.sent();\r\n // the user tries to stop the connection when it is being started\r\n if (this_1.connectionState === \"Disconnecting\" /* Disconnecting */ || this_1.connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];\r\n _a.label = 9;\r\n case 9:\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];\r\n case 10:\r\n _a.sent();\r\n _a.label = 11;\r\n case 11:\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this.connectionState === \"Connecting\" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this.logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this.connectionState = \"Connected\" /* Connected */;\r\n }\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_3 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e_3);\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this.stopPromiseResolver();\r\n return [2 /*return*/, Promise.reject(e_3)];\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, token, _a, name, value, negotiateUrl, response, negotiateResponse, e_4;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n headers = {};\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers[\"Authorization\"] = \"Bearer \" + token;\r\n }\r\n _b.label = 2;\r\n case 2:\r\n _a = getUserAgentHeader(), name = _a[0], value = _a[1];\r\n headers[name] = value;\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl + \".\");\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: __assign({}, headers, this.options.headers),\r\n withCredentials: this.options.withCredentials,\r\n })];\r\n case 4:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Unexpected status code returned from negotiate '\" + response.statusCode + \"'\"))];\r\n }\r\n negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return [2 /*return*/, negotiateResponse];\r\n case 5:\r\n e_4 = _b.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_4);\r\n return [2 /*return*/, Promise.reject(e_4)];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionToken);\r\n };\r\n HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectUrl, transportExceptions, transports, negotiate, _i, transports_1, endpoint, transportOrError, ex_1, ex_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];\r\n this.logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.connectionId = negotiateResponse.connectionId;\r\n return [2 /*return*/];\r\n case 2:\r\n transportExceptions = [];\r\n transports = negotiateResponse.availableTransports || [];\r\n negotiate = negotiateResponse;\r\n _i = 0, transports_1 = transports;\r\n _a.label = 3;\r\n case 3:\r\n if (!(_i < transports_1.length)) return [3 /*break*/, 13];\r\n endpoint = transports_1[_i];\r\n transportOrError = this.resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(transportOrError instanceof Error)) return [3 /*break*/, 4];\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(endpoint.transport + \" failed: \" + transportOrError);\r\n return [3 /*break*/, 12];\r\n case 4:\r\n if (!this.isITransport(transportOrError)) return [3 /*break*/, 12];\r\n this.transport = transportOrError;\r\n if (!!negotiate) return [3 /*break*/, 9];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 6:\r\n negotiate = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n ex_1 = _a.sent();\r\n return [2 /*return*/, Promise.reject(ex_1)];\r\n case 8:\r\n connectUrl = this.createConnectUrl(url, negotiate.connectionToken);\r\n _a.label = 9;\r\n case 9:\r\n _a.trys.push([9, 11, , 12]);\r\n return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];\r\n case 10:\r\n _a.sent();\r\n this.connectionId = negotiate.connectionId;\r\n return [2 /*return*/];\r\n case 11:\r\n ex_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the transport '\" + endpoint.transport + \"': \" + ex_2);\r\n negotiate = undefined;\r\n transportExceptions.push(endpoint.transport + \" failed: \" + ex_2);\r\n if (this.connectionState !== \"Connecting\" /* Connecting */) {\r\n message = \"Failed to select transport before stop() was called.\";\r\n this.logger.log(LogLevel.Debug, message);\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n }\r\n return [3 /*break*/, 12];\r\n case 12:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 13:\r\n if (transportExceptions.length > 0) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Unable to connect to the server with any of the available transports. \" + transportExceptions.join(\" \")))];\r\n }\r\n return [2 /*return*/, Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"))];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.constructTransport = function (transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket, this.options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource, this.options.withCredentials, this.options.headers || {});\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.withCredentials, this.options.headers || {});\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.startTransport = function (url, transferFormat) {\r\n var _this = this;\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n return this.transport.connect(url, transferFormat);\r\n };\r\n HttpConnection.prototype.resolveTransportOrError = function (endpoint, requestedTransport, requestedTransferFormat) {\r\n var transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n return new Error(\"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return TransferFormat[s]; });\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this.options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' is not supported in your environment.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Selecting transport '\" + HttpTransportType[transport] + \"'.\");\r\n try {\r\n return this.constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it does not support the requested transfer format '\" + TransferFormat[requestedTransferFormat] + \"'.\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' does not support \" + TransferFormat[requestedTransferFormat] + \".\");\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it was disabled by the client.\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' is disabled by the client.\");\r\n }\r\n }\r\n };\r\n HttpConnection.prototype.isITransport = function (transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n var _this = this;\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.stopConnection(\" + error + \") called while in state \" + this.connectionState + \".\");\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n this.stopError = undefined;\r\n if (this.connectionState === \"Disconnected\" /* Disconnected */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stopConnection(\" + error + \") was ignored because the connection is already in the disconnected state.\");\r\n return;\r\n }\r\n if (this.connectionState === \"Connecting\" /* Connecting */) {\r\n this.logger.log(LogLevel.Warning, \"Call to HttpConnection.stopConnection(\" + error + \") was ignored because the connection is still in the connecting state.\");\r\n throw new Error(\"HttpConnection.stopConnection(\" + error + \") was called while the connection is still in the connecting state.\");\r\n }\r\n if (this.connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this.stopPromiseResolver();\r\n }\r\n if (error) {\r\n this.logger.log(LogLevel.Error, \"Connection disconnected with error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this.sendQueue) {\r\n this.sendQueue.stop().catch(function (e) {\r\n _this.logger.log(LogLevel.Error, \"TransportSendQueue.stop() threw error '\" + e + \"'.\");\r\n });\r\n this.sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this.connectionStarted) {\r\n this.connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"HttpConnection.onclose(\" + error + \") threw error '\" + e + \"'.\");\r\n }\r\n }\r\n };\r\n HttpConnection.prototype.resolveUrl = function (url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser || !window.document) {\r\n throw new Error(\"Cannot resolve '\" + url + \"'.\");\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n var aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this.logger.log(LogLevel.Information, \"Normalizing '\" + url + \"' to '\" + aTag.href + \"'.\");\r\n return aTag.href;\r\n };\r\n HttpConnection.prototype.resolveNegotiateUrl = function (url) {\r\n var index = url.indexOf(\"?\");\r\n var negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this.negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n };\r\n return HttpConnection;\r\n}());\r\nexport { HttpConnection };\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nvar TransportSendQueue = /** @class */ (function () {\r\n function TransportSendQueue(transport) {\r\n this.transport = transport;\r\n this.buffer = [];\r\n this.executing = true;\r\n this.sendBufferedData = new PromiseSource();\r\n this.transportResult = new PromiseSource();\r\n this.sendLoopPromise = this.sendLoop();\r\n }\r\n TransportSendQueue.prototype.send = function (data) {\r\n this.bufferData(data);\r\n if (!this.transportResult) {\r\n this.transportResult = new PromiseSource();\r\n }\r\n return this.transportResult.promise;\r\n };\r\n TransportSendQueue.prototype.stop = function () {\r\n this.executing = false;\r\n this.sendBufferedData.resolve();\r\n return this.sendLoopPromise;\r\n };\r\n TransportSendQueue.prototype.bufferData = function (data) {\r\n if (this.buffer.length && typeof (this.buffer[0]) !== typeof (data)) {\r\n throw new Error(\"Expected data to be of type \" + typeof (this.buffer) + \" but was of type \" + typeof (data));\r\n }\r\n this.buffer.push(data);\r\n this.sendBufferedData.resolve();\r\n };\r\n TransportSendQueue.prototype.sendLoop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var transportResult, data, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!true) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.sendBufferedData.promise];\r\n case 1:\r\n _a.sent();\r\n if (!this.executing) {\r\n if (this.transportResult) {\r\n this.transportResult.reject(\"Connection stopped.\");\r\n }\r\n return [3 /*break*/, 6];\r\n }\r\n this.sendBufferedData = new PromiseSource();\r\n transportResult = this.transportResult;\r\n this.transportResult = undefined;\r\n data = typeof (this.buffer[0]) === \"string\" ?\r\n this.buffer.join(\"\") :\r\n TransportSendQueue.concatBuffers(this.buffer);\r\n this.buffer.length = 0;\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.transport.send(data)];\r\n case 3:\r\n _a.sent();\r\n transportResult.resolve();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n transportResult.reject(error_1);\r\n return [3 /*break*/, 5];\r\n case 5: return [3 /*break*/, 0];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TransportSendQueue.concatBuffers = function (arrayBuffers) {\r\n var totalLength = arrayBuffers.map(function (b) { return b.byteLength; }).reduce(function (a, b) { return a + b; });\r\n var result = new Uint8Array(totalLength);\r\n var offset = 0;\r\n for (var _i = 0, arrayBuffers_1 = arrayBuffers; _i < arrayBuffers_1.length; _i++) {\r\n var item = arrayBuffers_1[_i];\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n };\r\n return TransportSendQueue;\r\n}());\r\nexport { TransportSendQueue };\r\nvar PromiseSource = /** @class */ (function () {\r\n function PromiseSource() {\r\n var _this = this;\r\n this.promise = new Promise(function (resolve, reject) {\r\n var _a;\r\n return _a = [resolve, reject], _this.resolver = _a[0], _this.rejecter = _a[1], _a;\r\n });\r\n }\r\n PromiseSource.prototype.resolve = function () {\r\n this.resolver();\r\n };\r\n PromiseSource.prototype.reject = function (reason) {\r\n this.rejecter(reason);\r\n };\r\n return PromiseSource;\r\n}());\r\n//# sourceMappingURL=HttpConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nvar JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nvar JsonHubProtocol = /** @class */ (function () {\r\n function JsonHubProtocol() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n JsonHubProtocol.prototype.parseMessages = function (input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n var messages = TextMessageFormat.parse(input);\r\n var hubMessages = [];\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n var parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n };\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n JsonHubProtocol.prototype.writeMessage = function (message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n };\r\n JsonHubProtocol.prototype.isInvocationMessage = function (message) {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isStreamItemMessage = function (message) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isCompletionMessage = function (message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n };\r\n JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n };\r\n return JsonHubProtocol;\r\n}());\r\nexport { JsonHubProtocol };\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n// tslint:disable:object-literal-sort-keys\r\nvar LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n var mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(\"Unknown log level: \" + name);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nvar HubConnectionBuilder = /** @class */ (function () {\r\n function HubConnectionBuilder() {\r\n }\r\n HubConnectionBuilder.prototype.configureLogging = function (logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n var logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, transportTypeOrOptions);\r\n }\r\n else {\r\n this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, { transport: transportTypeOrOptions });\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withAutomaticReconnect = function (retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n };\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n HubConnectionBuilder.prototype.build = function () {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n var httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n var connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n };\r\n return HubConnectionBuilder;\r\n}());\r\nexport { HubConnectionBuilder };\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map"],"sourceRoot":""}