{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./source/library/HTTP.ts","webpack:///./source/library/Types.ts","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./source/library/Polyfills/index.ts","webpack:///./source/features/manage/PackageStore.ts","webpack:///./source/features/application-context/AppContextStore.ts","webpack:///./source/images/icons/google.svg","webpack:///./source/images/icons/facebook.svg","webpack:///./source/images/icons/twitter.svg","webpack:///./source/images/icons/close-icon.svg","webpack:///./source/styles/dialog-module.less","webpack:///./source/features/payment/PaymentStore.ts","webpack:///./source/features/payment/ManageMembershipElement.ts","webpack:///./source/features/payment/PaymentController.ts","webpack:///./source/features/product-selection/ProductSelection-module.less","webpack:///./source/images/membership-logo.svg","webpack:///./source/images/login-logo.svg","webpack:///./source/images/notifications-logo.svg","webpack:///./source/images/authorized-applications-logo.svg","webpack:///./source/images/deactivate-account-logo.svg","webpack:///./source/features/notification/NotifyStyle.less","webpack:///./source/images/icons/header/arrow-left-20-v1.svg","webpack:///./node_modules/@ungap/event-target/esm/index.js","webpack:///./source/library/UrlProvider.ts","webpack:///./source/library/System.ts","webpack:///./source/features/authentication/AdaptivePopup.ts","webpack:///./source/library/Browser.ts","webpack:///./node_modules/@capacitor/core/dist/index.js","webpack:///./source/features/user-preferences/UserPreferenceStore.ts","webpack:///./node_modules/ext/global-this/index.js","webpack:///./node_modules/d/index.js","webpack:///./node_modules/events/events.js","webpack:///(webpack)/buildin/global.js","webpack:///./source/library/Routing.ts","webpack:///./node_modules/es5-ext/object/is-value.js","webpack:///./source/library/DOMLite.ts","webpack:///./source/features/packages/BasePackageElement.ts","webpack:///./node_modules/type/value/is.js","webpack:///./node_modules/es6-symbol/validate-symbol.js","webpack:///./source/library/Tasks.ts","webpack:///./node_modules/url-polyfill/url-polyfill.js","webpack:///./source/features/dialog/BaseDialogViewController.ts","webpack:///./source/features/dialog/DialogController.ts","webpack:///./source/features/notification/NotifyViewController.ts","webpack:///./source/features/site-header/SiteHeaderElement.ts","webpack:///./source/features/manage/BaseManagePackageElement.ts","webpack:///./node_modules/@capacitor/app/dist/esm/index.js","webpack:///./source/images/arrow-left-20-v1.svg","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./source/features/authentication/LoginProviders/GenericWebLoginProvider.ts","webpack:///./node_modules/@capacitor-community/facebook-login/dist/esm/index.js","webpack:///./source/features/authentication/LoginProviders/FacebookNativeLoginProvider.ts","webpack:///./node_modules/@codetrix-studio/capacitor-google-auth/dist/esm/index.js","webpack:///./source/features/authentication/LoginProviders/GoogleNativeLoginProvider.ts","webpack:///./source/features/authentication/LoginProviders/AppleWebLoginProvider.ts","webpack:///./node_modules/@capgo/inappbrowser/dist/esm/definitions.js","webpack:///./source/features/authentication/LoginProviders/AppleIOSLoginProvider.ts","webpack:///./node_modules/@capgo/inappbrowser/dist/esm/index.js","webpack:///./source/features/authentication/LoginProviders/AppleAndroidLoginProvider.ts","webpack:///./source/features/authentication/LoginProviders/TwitterNativeLoginProvider.ts","webpack:///./source/features/authentication/Model.ts","webpack:///./source/features/authentication/LoginProviders/LoginProviderFactory.ts","webpack:///./source/features/authentication/AuthenticationStore.ts","webpack:///./source/features/authentication/UserLoginElement.ts","webpack:///./source/features/authentication/UserLoginElement2.ts","webpack:///./source/features/authentication/LoginFlowElement.ts","webpack:///./source/features/authentication/ExternalUserRegistrationElement.ts","webpack:///./source/features/authentication/ExternalUserRegistrationElement2.ts","webpack:///./source/features/authentication/UserRegistrationElement.ts","webpack:///./source/features/authentication/UserRegistrationElement2.ts","webpack:///./source/features/authentication/ForgotPasswordElement.ts","webpack:///./source/features/authentication/ForgotPasswordElement2.ts","webpack:///./source/features/authentication/SocialProvidersElement.ts","webpack:///./source/features/authentication/ActivationmailInfoElement.ts","webpack:///./source/features/authentication/AuthSwitcherElement.ts","webpack:///./source/features/site-footer/index.ts","webpack:///./node_modules/es6-promise/auto.js","webpack:///./source/library/Polyfills/RequestAnimationFrame.ts","webpack:///./source/library/Polyfills/RequestIdleCallback.js","webpack:///./source/library/Polyfills/custom-elements-es5-adapter.js","webpack:///./node_modules/document-register-element/build/document-register-element.js","webpack:///./node_modules/es6-symbol/implement.js","webpack:///./source/features/product-selection/ProductSelectionElement.ts","webpack:///./node_modules/es6-symbol/is-implemented.js","webpack:///./node_modules/ext/global-this/is-implemented.js","webpack:///./source/library/Formatting.ts","webpack:///./node_modules/ext/global-this/implementation.js","webpack:///./node_modules/es6-symbol/polyfill.js","webpack:///./node_modules/type/plain-function/is.js","webpack:///./node_modules/type/function/is.js","webpack:///./node_modules/type/prototype/is.js","webpack:///./node_modules/type/object/is.js","webpack:///./node_modules/es5-ext/object/assign/index.js","webpack:///./node_modules/es5-ext/object/assign/is-implemented.js","webpack:///./node_modules/es5-ext/object/assign/shim.js","webpack:///./node_modules/es5-ext/object/keys/index.js","webpack:///./source/features/cityline/CitylineClient.ts","webpack:///./source/features/cityline/index.ts","webpack:///./node_modules/es5-ext/object/keys/is-implemented.js","webpack:///./node_modules/es5-ext/object/keys/shim.js","webpack:///./node_modules/es5-ext/function/noop.js","webpack:///./node_modules/es5-ext/object/valid-value.js","webpack:///./node_modules/es5-ext/object/normalize-options.js","webpack:///./node_modules/es5-ext/string/#/contains/index.js","webpack:///./node_modules/es5-ext/string/#/contains/is-implemented.js","webpack:///./node_modules/es5-ext/string/#/contains/shim.js","webpack:///./node_modules/es6-symbol/is-symbol.js","webpack:///./node_modules/es6-symbol/lib/private/generate-name.js","webpack:///./source/library/DOM.ts","webpack:///./node_modules/es6-symbol/lib/private/setup/standard-symbols.js","webpack:///./node_modules/es6-symbol/lib/private/setup/symbol-registry.js","webpack:///./node_modules/fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js","webpack:///./source/library/Polyfills/toggleAttribute.js","webpack:///./source/features/site-header/SiteHeader-static.html","webpack:///./source/features/site-header/SiteHeader-logged-in-static.html","webpack:///./source/features/site-footer/SiteFooter-static.html"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","installedCssChunks","4","__webpack_require__","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","extendStatics","b","setPrototypeOf","__proto__","Array","__extends","TypeError","String","__","this","constructor","__assign","assign","arguments","apply","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","result","done","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","__values","__read","ar","__spreadArray","to","from","pack","concat","__makeTemplateObject","cooked","raw","SuppressedError","credentials","headers","method","authenticate","instance","Header","token","setSignal","signal","Request","setMethod","setCredentials","credentialsMode","setJSON","obj","JSON","stringify","html","setJSONFromFields","root","querySelectorAll","forEach","element","setText","text","setBody","getSourceToken","getCookie","nameEQ","ca","cookie","split","charAt","substring","indexOf","checkLoggedInStatus","response","ok","status","showingDialog","prompt","caption","options","location","throwOnServerError","statusText","_showLoader","_ignoreLoggedInStatus","_throwOnError","hideLoader","beQuiet","ignoreLoggedInStatus","throwOnError","showOffline","Pipeline","_offlineNotifyHandle","showWeb","title","showLoader","wait","fetchQueued","input","init","url","pendingRequests","fetch","add","hide","backAway","offlineThrottleCounter","aborted","Typename","ClassTypename","typeName","global","self","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","toString","normalizeName","test","toLowerCase","normalizeValue","iteratorFor","items","Headers","map","append","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","arrayBuffer","readAsText","chars","fromCharCode","join","readArrayBufferAsText","formData","decode","json","parse","oldValue","has","callback","keys","values","entries","methods","upcased","toUpperCase","referrer","cache","reParamSearch","replace","Date","getTime","form","trim","bytes","decodeURIComponent","Response","bodyInit","clone","redirectStatuses","redirect","RangeError","DOMException","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","onabort","open","fixUrl","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","stack","polyfill","navigator","userAgent","DOM","ready","handleFirstTab","keyCode","classList","packages","slug","logo","description","isIOSApp","filter","AppContextStore","_instance","querySelector","emitContextChange","context","emit","onContextChange","on","offContextChange","removeListener","scrollTo","position","scrollTop","update","titlePath","presentTitle","pageName","Boolean","once","present","updater","innerHTML","urlProvider","UrlProvider","PaymentStore","setAutoRenew","enabled","post","autoRenew","detailView","Formatting","capitalize","payment","currentLevel","memberSince","shortDateNamedMonth","nextRenewal","protocol","transactions","transaction","shortDate","created","validFrom","validTo","capturedAmount","currency","card","scheme","last4","setupDOM","renewElement","checked","initialize","path","BaseManagePackageElement","customElements","define","Routing","onChange","route","initializePaylike","PaymentController","paylike","cityline","getFrame","paylikeId","Paylike","pay","popup","amount","locale","custom","username","userId","transactionId","id","registerResponse","close","remove","reload","EventTarget","wm","proto","configurable","writable","dispatch","info","listener","handleEvent","secret","listeners","currentTarget","splice","WeakMap","_isLocal","hostname","isLocal","testMode","origin","host","initalizeTestMode","localStorage","getItem","modeKey","setTestMode","source","setItem","authenticatedUserId","currentUser","user","displayUserId","segments","pathname","toLocaleLowerCase","potentialusername","currentUserIsDisplayUser","stackLocation","stackSlug","stackLocationUser","userHome","userHomeLocation","allStacksLinksLocation","stackSiteLocation","inboxSiteLocation","stacksLocation","linksLocation","linkLocation","filtersLocation","linkLocationInStack","linkSlug","linkStackAssignLocation","linksStackLocation","searchLocation","query","slugPart","pos","action","resolved","_value","args","trueProto","selectMany","selectListFn","reduce","out","inx","distinctBy","keyFn","unique","entity","AppError","closeHandler","requestAnimationFrame","connectedCallback","addAndslide","removeAttribute","HTMLElement","getQueryParam","param","search","match","RegExp","isMobileLike","innerWidth","isApp","Capacitor","getPlatform","isNative","isTouch","maxTouchPoints","CapacitorPlatforms","win","defaultPlatformMap","Map","capPlatforms","currentPlatform","platforms","addPlatform","platform","setPlatform","createCapacitorPlatforms","initPlatforms","globalThis","ExceptionCode","CapacitorException","super","createCapacitor","_a","_b","_c","_d","_e","capCustomPlatform","CapacitorCustomPlatform","cap","Plugins","androidBridge","webkit","messageHandlers","bridge","getPlatformId","isNativePlatform","isPluginAvailable","pluginName","plugin","registeredPlugins","getPluginHeader","PluginHeaders","find","h","registerPlugin","jsImplementations","registeredPlugin","warn","proxy","pluginHeader","jsImplementation","createPluginMethodWrapper","prop","wrapper","async","loadPluginImplementation","impl","fn","Unimplemented","methodHeader","rtype","nativePromise","nativeCallback","createPluginMethod","addListener","addListenerNative","eventName","callbackId","Proxy","Set","convertFileSrc","filePath","handleError","pluginMethodNoop","_target","Exception","DEBUG","isLoggingEnabled","initCapacitorGlobal","WebPlugin","config","windowListeners","listenerFunc","windowListener","registered","addWindowListener","removeWindowListener","windowEventName","pluginEventName","handler","notifyListeners","msg","Unavailable","index","handle","encode","str","encodeURIComponent","escape","CapacitorCookiesPluginWeb","cookies","cookieMap","encodedKey","encodedValue","expires","domain","toUTCString","clearCookies","web","buildRequestInit","extra","output","originalKeys","k","acc","normalizeHttpHeaders","includes","params","delete","CapacitorHttpPluginWeb","requestInit","webFetchExtra","urlParams","shouldEncode","accumulator","entry","item","substr","buildUrlParams","shouldEncodeUrlParams","contentType","base64String","readAsDataURL","readBlobAsBase64","UserPreferenceFlag","eventTarget","initializer","doInitialize","UserPreferenceStore","_preference","detail","dispatchEvent","CustomEvent","isSet","flag","flags","throwOnMissing","preference","isValue","isPlainFunction","normalizeOpts","contains","dscr","w","gs","ReflectOwnKeys","R","ReflectApply","receiver","Function","ownKeys","getOwnPropertySymbols","NumberIsNaN","Number","isNaN","EventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","prepend","events","existing","warning","newListener","unshift","warned","emitter","count","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","copy","arg","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","len","prependListener","prependOnceListener","list","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","RouteChangeOrigin","isFileProtocol","history","setup","parseCurrent","currentRoute","PageLoad","emitRouteChanged","ClassName","altKey","goBack","preventDefault","closest","hasAttribute","go","log","emptyRoute","parameters","replaceState","publish","hash","pushState","requester","refresh","backUrl","offChange","matches","isMatch","parsed","part","routePart","URL","parameter","_undefined","val","createIsolated","attachShadow","DOMLite","isolatedElementView","thePackage","navView","appsStore","version","AppsStore","isSymbol","tasks","TaskStore","emitInProgress","onInProgress","offInProgress","emitCompletedTask","onCompletedTask","emitComplete","onComplete","offComplete","iteratorSupported","checkIfIteratorIsSupported","createIterator","serializeParam","deserializeParam","checkIfURLSearchParamsSupported","searchString","typeofSearchString","_fromString","_this","_entries","getAll","searchArray","polyfillURLSearchParams","sort","a","attribute","attributes","u","searchParams","checkIfURLIsSupported","_URL","base","baseElement","doc","implementation","createHTMLDocument","anchorElement","inputElement","checkValidity","enableSearchUpdate","enableSearchParamsUpdate","methodName","attributeName","_anchorElement","linkURLWithAnchorAttribute","_updateSearchParams","defineProperties","expectedPort","addPortToOrigin","port","createObjectURL","revokeObjectURL","polyfillURL","getOrigin","setInterval","clazz","renderFrame","targetSelector","targetLocation","renderSection","renderFooter","headerView","tabs","getTabs","dialogView","getFormAction","getTitle","registerEvents","viewController","cancel","afterRender","closeButton","dialog","checkAndClose","checkAndCloseKeyboard","tabButton","tab","innerText","showTab","validateCurrentTab","section","currentTab","unload","tabHtml","load","tabButtons","button","disabled","beforeRender","parentElement","show","BaseDialogViewController","idCount","insertAdjacentHTML","getElementById","style","display","htmlEscape","inactive","content","extendedOptions","renderFooterExtended","okIcon","isolatedElement","slot","NotifyViewController","slots","_style","showOk","icon","notify","getElementsByClassName","bottom","showSeconds","scrollHandler","documentElement","passive","disconnectedCallback","getPackages","App","AppWeb","factory","isFunction","x","vertxNext","customSchedulerFn","asap","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","observer","node","onFulfillment","onRejection","parent","child","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","postMessage","vertx","require","runOnLoop","runOnContext","attemptVertx","Math","random","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","reason","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","_subscribers","subscribers","settled","hasCallback","succeeded","Enumerator","Constructor","_instanceConstructor","_remaining","_enumerate","_eachEntry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","resolver","needsResolver","initializePromise","needsNew","catch","finally","race","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","local","promiseToString","cast","providerName","getName","login","loginResponse","closed","clearInterval","FacebookLogin","FacebookLoginWeb","permissions","accessToken","getCurrentAccessToken","tokenResponse","alert","GoogleAuth","GoogleAuthWeb","clientId","scopes","grantOfflineAccess","signIn","googleUser","authentication","idToken","provider","email","BackgroundColor","ToolBarType","initializeApple","guid","s4","floor","AppleID","auth","scope","redirectURI","nonce","AppleWebLoginProvider","usePopup","tokenId","authorization","id_token","SignInWithApple","Authorize","signinResponse","identityToken","InAppBrowser","InAppBrowserWeb","appListener","browserListener","prefix","startsWith","TokenId","getLaunchUrl","AuthenticationMode","ActivityStatus","requestTokenUrl","Browser","callbackUrl","messageHandler","presentationStyle","_currentActivity","Idle","updateBody","whenSignedIn","handleAddProviderCallbackMessage","addProviderWindow","_account","logins","loginProvider","emitProvidersChanged","emitAddProviderError","_auth","changeActivity","TryingToSignIn","reinitialize","onStateChanged","onStateChangedOnce","reset","AuthenticationStore","emitActivityChanged","isAuthenticated","getState","initialized","HasPassword","_hasPassword","ensureState","SignedIn","FailedSigningIn","providers","hasPassword","getAuth","activity","onActivityChanged","removeActivityChanged","emitStateChanged","offStateChanged","onProvidersChanged","removeOnProvidersChanged","onAddProviderError","removeOnAddProviderError","getRemoteState","Cookie","setPassword","passwordModel","usernameAvailable","emailAvailable","addProvider","removeProvider","providerKey","updateAuth","registerExternal","mergeExternal","register","password","details","resendRegistrationMail","forgotPassword","usernameOrEmail","deactivateAccount","loginExternal","handleLoginResponse","logout","resetPassword","model","refreshToken","currentUserNoFetch","currentAccount","bearer","setupEvents","opacity","usernameElement","passwordElement","formMessageElement","showForgotPassword","translateMessage","modelState","messageElement","providerId","AdaptivePopup","socialProviders","externalUserRegistrationElement","TapticEngine","unofficial","weakBoom","contentElement","miniProgress","updateElementState","fadeOut","fadeIn","emailElement","errors","checkEmailView","confirmPasswordElement","loginFlow","successHandler","usernameOrEmailElement","stateHandler","authenticated","currentState","nonAuthElement","authElement","createFromTemplate","firstElementChild","lastTime","currTime","timeToCall","max","cancelAnimationFrame","requestIdleCallback","cb","start","now","didTimeout","timeRemaining","cancelIdleCallback","BuiltInHTMLElement","construct","A","et","T","ke","ie","Ge","nodeName","ce","le","ne","te","attrChange","attrName","Q","W","at","j","prevValue","newValue","lt","J","B","Ue","xe","ue","Xe","O","V","ae","Se","I","Ye","ot","D","ee","Y","X","Ze","S","q","L","M","Z","Fe","observedAttributes","pe","Ae","He","Oe","De","be","H","z","G","K","$","Ie","Ne","E","is","nodeValue","we","ge","de","We","tt","rt","C","collections","HTMLAllCollection","HTMLCollection","HTMLFormControlsCollection","HTMLOptionsCollection","elements","Element","HTMLAnchorElement","HTMLAppletElement","HTMLAreaElement","HTMLAttachmentElement","HTMLAudioElement","HTMLBRElement","HTMLBaseElement","HTMLBodyElement","HTMLButtonElement","HTMLCanvasElement","HTMLContentElement","HTMLDListElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLDivElement","HTMLDocument","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement","HTMLFrameSetElement","HTMLHRElement","HTMLHeadElement","HTMLHeadingElement","HTMLHtmlElement","HTMLIFrameElement","HTMLImageElement","HTMLInputElement","HTMLKeygenElement","HTMLLIElement","HTMLLabelElement","HTMLLegendElement","HTMLLinkElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMenuElement","HTMLMenuItemElement","HTMLMetaElement","HTMLMeterElement","HTMLModElement","HTMLOListElement","HTMLObjectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLParagraphElement","HTMLParamElement","HTMLPictureElement","HTMLPreElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLShadowElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLStyleElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLTimeElement","HTMLTitleElement","HTMLTrackElement","HTMLUListElement","HTMLUnknownElement","HTMLVideoElement","nodes","Attr","Audio","CDATASection","CharacterData","Comment","Document","DocumentFragment","DocumentType","Image","Option","ProcessingInstruction","ShadowRoot","Text","XMLDocument","N","F","U","re","se","me","fe","he","Te","Le","Me","Ee","whenDefined","ye","Ce","ct","Ve","Pe","Re","Node","nodeType","qe","Be","cloneNode","je","ze","Ke","$e","Qe","importNode","attributeOldValue","Je","nt","removedNodes","childNodes","lastChild","disconnect","childList","subtree","bubbles","MODIFICATION","propertyName","className","addedNodes","createDocumentFragment","innerHTMLHelper","noBuiltIn","outerHTML","st","it","ut","level","loggedIn","getText","validTypes","symbol","toPrimitive","date","getDate","getMonth","getFullYear","shortDateTime","getHours","pad","getMinutes","wantedLength","slugify","mapAny","areEqual","a1","a2","every","titleize","deslugify","wordSplitRegex","uppercase","multipleWhitespace","titleizeRegex","literals","placeholders","endsWith","htmlDecode","div","textContent","htmlEncode","htmlEncode2","prettyfyUrl","decodeURI","range","lowEnd","highEnd","nameof","naiveFallback","__global__","SymbolPolyfill","HiddenSymbol","isNativeSafe","validateSymbol","NativeSymbol","generateName","setupStandardSymbols","setupSymbolRegistry","ignore","__description__","__name__","valueOf","classRe","functionToString","isPrototype","isObject","possibleTypes","foo","bar","trzy","dest","requestFactory","xhrRequestFactory","_frames","_idCache","abortListener","backawayCooldownSeconds","parseFrame","frame","startListener","ReadableStream","startFetchListener","startXHRListener","_abortController","mainLoop","started","loadEndHandler","Buffer","seenBytes","newData","take","addFrame","requestData","tickets","externalRequest","AbortController","decoder","TextDecoder","buildRequest","getReader","read","decoded","driftHandler","diff","allowedDrift","getFrames","names","terminator","_buffer","lines","CitylineSingleton","_client","client","opts1","objPrototype","ie11BugWorkaround","postfix","serializeInto","elementsQuery","leaf","pathElement","serialize","deserialize","toggleAttribute","doScroll","removecookie","configurePage","speed","fade","parseFloat","expand","transformOrigin","transform","slideUp","transition","comparer","isElementInViewport","rectangle","getBoundingClientRect","top","left","innerHeight","clientHeight","right","clientWidth","isScrolledToBottom","scrollHeight","offsetHeight","padding","adjustHandler","height","destroy","hasInstance","isConcatSpreadable","species","unscopables","registry","for","keyFor","SharedArrayBuffer","TextEncoder","Uint16Array","charCodeAt","subarray","force"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GAKAK,EAAI,EAAGC,EAAW,GACpCD,EAAIF,EAASI,OAAQF,IACzBH,EAAUC,EAASE,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBV,IAAYU,EAAgBV,IACpFI,EAASO,KAAKD,EAAgBV,GAAS,IAExCU,EAAgBV,GAAW,EAE5B,IAAID,KAAYG,EACZI,OAAOC,UAAUC,eAAeC,KAAKP,EAAaH,KACpDa,EAAQb,GAAYG,EAAYH,IAKlC,IAFGc,GAAqBA,EAAoBf,GAEtCM,EAASC,QACdD,EAASU,OAATV,GAOF,IAAIW,EAAmB,GAGnBC,EAAqB,CACxBC,EAAG,GAMAP,EAAkB,CACrBO,EAAG,GAWJ,SAASC,EAAoBnB,GAG5B,GAAGgB,EAAiBhB,GACnB,OAAOgB,EAAiBhB,GAAUoB,QAGnC,IAAIC,EAASL,EAAiBhB,GAAY,CACzCI,EAAGJ,EACHsB,GAAG,EACHF,QAAS,IAUV,OANAP,EAAQb,GAAUU,KAAKW,EAAOD,QAASC,EAAQA,EAAOD,QAASD,GAG/DE,EAAOC,GAAI,EAGJD,EAAOD,QAKfD,EAAoBI,EAAI,SAAuBtB,GAC9C,IAAIuB,EAAW,GAKZP,EAAmBhB,GAAUuB,EAASZ,KAAKK,EAAmBhB,IACzB,IAAhCgB,EAAmBhB,IAFX,CAAC,EAAI,GAEkCA,IACtDuB,EAASZ,KAAKK,EAAmBhB,GAAW,IAAIwB,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAY3B,EAAL,4BACP4B,EAAWV,EAAoBW,EAAIF,EACnCG,EAAmBC,SAASC,qBAAqB,QAC7C7B,EAAI,EAAGA,EAAI2B,EAAiBzB,OAAQF,IAAK,CAChD,IACI8B,GADAC,EAAMJ,EAAiB3B,IACRgC,aAAa,cAAgBD,EAAIC,aAAa,QACjE,GAAe,eAAZD,EAAIE,MAAyBH,IAAaN,GAAQM,IAAaL,GAAW,OAAOH,IAErF,IAAIY,EAAoBN,SAASC,qBAAqB,SACtD,IAAQ7B,EAAI,EAAGA,EAAIkC,EAAkBhC,OAAQF,IAAK,CACjD,IAAI+B,EAEJ,IADID,GADAC,EAAMG,EAAkBlC,IACTgC,aAAa,gBAChBR,GAAQM,IAAaL,EAAU,OAAOH,IAEvD,IAAIa,EAAUP,SAASQ,cAAc,QACrCD,EAAQF,IAAM,aACdE,EAAQE,KAAO,WACfF,EAAQG,OAAShB,EACjBa,EAAQI,QAAU,SAASC,GAC1B,IAAIC,EAAUD,GAASA,EAAME,QAAUF,EAAME,OAAOC,KAAOlB,EACvDmB,EAAM,IAAIC,MAAM,qBAAuBhD,EAAU,cAAgB4C,EAAU,KAC/EG,EAAIE,KAAO,wBACXF,EAAIH,QAAUA,SACP5B,EAAmBhB,GAC1BsC,EAAQY,WAAWC,YAAYb,GAC/BZ,EAAOqB,IAERT,EAAQX,KAAOC,EAEJG,SAASC,qBAAqB,QAAQ,GAC5CoB,YAAYd,MACfe,MAAK,WACPrC,EAAmBhB,GAAW,MAMhC,IAAIsD,EAAqB5C,EAAgBV,GACzC,GAA0B,IAAvBsD,EAGF,GAAGA,EACF/B,EAASZ,KAAK2C,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAI/B,SAAQ,SAASC,EAASC,GAC3C4B,EAAqB5C,EAAgBV,GAAW,CAACyB,EAASC,MAE3DH,EAASZ,KAAK2C,EAAmB,GAAKC,GAGtC,IACIC,EADAC,EAAS1B,SAASQ,cAAc,UAGpCkB,EAAOC,QAAU,QACjBD,EAAOE,QAAU,IACbzC,EAAoB0C,IACvBH,EAAOI,aAAa,QAAS3C,EAAoB0C,IAElDH,EAAOX,IAnGV,SAAwB9C,GACvB,OAAOkB,EAAoBW,EAApBX,yBAA6D,CAAC,EAAI,UAAUlB,IAAUA,GAAW,aAkGzF8D,CAAe9D,GAG5B,IAAI+D,EAAQ,IAAIf,MAChBQ,EAAmB,SAAUb,GAE5Bc,EAAOf,QAAUe,EAAOhB,OAAS,KACjCuB,aAAaL,GACb,IAAIM,EAAQvD,EAAgBV,GAC5B,GAAa,IAAViE,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYvB,IAAyB,SAAfA,EAAMH,KAAkB,UAAYG,EAAMH,MAChE2B,EAAUxB,GAASA,EAAME,QAAUF,EAAME,OAAOC,IACpDiB,EAAMK,QAAU,iBAAmBpE,EAAU,cAAgBkE,EAAY,KAAOC,EAAU,IAC1FJ,EAAMM,KAAO,iBACbN,EAAMvB,KAAO0B,EACbH,EAAMnB,QAAUuB,EAChBF,EAAM,GAAGF,GAEVrD,EAAgBV,QAAWsE,IAG7B,IAAIX,EAAUY,YAAW,WACxBf,EAAiB,CAAEhB,KAAM,UAAWK,OAAQY,MAC1C,MACHA,EAAOf,QAAUe,EAAOhB,OAASe,EACjCzB,SAASyC,KAAKpB,YAAYK,GAG5B,OAAOjC,QAAQiD,IAAIlD,IAIpBL,EAAoBwD,EAAI9D,EAGxBM,EAAoByD,EAAI5D,EAGxBG,EAAoB0D,EAAI,SAASzD,EAASkD,EAAMQ,GAC3C3D,EAAoB4D,EAAE3D,EAASkD,IAClC/D,OAAOyE,eAAe5D,EAASkD,EAAM,CAAEW,YAAY,EAAMC,IAAKJ,KAKhE3D,EAAoBgE,EAAI,SAAS/D,GACX,oBAAXgE,QAA0BA,OAAOC,aAC1C9E,OAAOyE,eAAe5D,EAASgE,OAAOC,YAAa,CAAEC,MAAO,WAE7D/E,OAAOyE,eAAe5D,EAAS,aAAc,CAAEkE,OAAO,KAQvDnE,EAAoBoE,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnE,EAAoBmE,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKnF,OAAOoF,OAAO,MAGvB,GAFAxE,EAAoBgE,EAAEO,GACtBnF,OAAOyE,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnE,EAAoB0D,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvE,EAAoB2E,EAAI,SAASzE,GAChC,IAAIyD,EAASzD,GAAUA,EAAOoE,WAC7B,WAAwB,OAAOpE,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAF,EAAoB0D,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR3D,EAAoB4D,EAAI,SAASgB,EAAQC,GAAY,OAAOzF,OAAOC,UAAUC,eAAeC,KAAKqF,EAAQC,IAGzG7E,EAAoBW,EAAI,gBAGxBX,EAAoB8E,GAAK,SAASjD,GAA2B,MAApBkD,QAAQlC,MAAMhB,GAAYA,GAEnE,IAAImD,EAAaC,OAAqB,aAAIA,OAAqB,cAAK,GAChEC,EAAmBF,EAAWvF,KAAKiF,KAAKM,GAC5CA,EAAWvF,KAAOd,EAClBqG,EAAaA,EAAWG,QACxB,IAAI,IAAIlG,EAAI,EAAGA,EAAI+F,EAAW7F,OAAQF,IAAKN,EAAqBqG,EAAW/F,IAC3E,IAAIU,EAAsBuF,EAInBlF,EAAoBA,EAAoBoF,EAAI,K,iCCnPrD,kTAgBA,IAAIC,EAAgB,SAAS3B,EAAG4B,GAI5B,OAHAD,EAAgBjG,OAAOmG,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAU/B,EAAG4B,GAAK5B,EAAE8B,UAAYF,IACvE,SAAU5B,EAAG4B,GAAK,IAAK,IAAI3E,KAAK2E,EAAOlG,OAAOC,UAAUC,eAAeC,KAAK+F,EAAG3E,KAAI+C,EAAE/C,GAAK2E,EAAE3E,MAC3E+C,EAAG4B,IAGrB,SAASI,EAAUhC,EAAG4B,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIK,UAAU,uBAAyBC,OAAON,GAAK,iCAE7D,SAASO,IAAOC,KAAKC,YAAcrC,EADnC2B,EAAc3B,EAAG4B,GAEjB5B,EAAErE,UAAkB,OAANiG,EAAalG,OAAOoF,OAAOc,IAAMO,EAAGxG,UAAYiG,EAAEjG,UAAW,IAAIwG,GAG5E,IAAIG,EAAW,WAQlB,OAPAA,EAAW5G,OAAO6G,QAAU,SAAkB7B,GAC1C,IAAK,IAAIgB,EAAGnG,EAAI,EAAG0F,EAAIuB,UAAU/G,OAAQF,EAAI0F,EAAG1F,IAE5C,IAAK,IAAI0B,KADTyE,EAAIc,UAAUjH,GACOG,OAAOC,UAAUC,eAAeC,KAAK6F,EAAGzE,KAAIyD,EAAEzD,GAAKyE,EAAEzE,IAE9E,OAAOyD,IAEK+B,MAAML,KAAMI,YAezB,SAASE,EAAWC,EAAY1E,EAAQ8C,EAAK6B,GAChD,IAA2H5C,EAAvHD,EAAIyC,UAAU/G,OAAQ6E,EAAIP,EAAI,EAAI9B,EAAkB,OAAT2E,EAAgBA,EAAOlH,OAAOmH,yBAAyB5E,EAAQ8C,GAAO6B,EACrH,GAAuB,iBAAZE,SAAoD,mBAArBA,QAAQC,SAAyBzC,EAAIwC,QAAQC,SAASJ,EAAY1E,EAAQ8C,EAAK6B,QACpH,IAAK,IAAIrH,EAAIoH,EAAWlH,OAAS,EAAGF,GAAK,EAAGA,KAASyE,EAAI2C,EAAWpH,MAAI+E,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAE/B,EAAQ8C,EAAKT,GAAKN,EAAE/B,EAAQ8C,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5E,OAAOyE,eAAelC,EAAQ8C,EAAKT,GAAIA,EAwDzD,SAAS0C,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIvG,WAAU,SAAUC,EAASC,GAC/C,SAASuG,EAAU5C,GAAS,IAAM6C,EAAKF,EAAUG,KAAK9C,IAAW,MAAO/D,GAAKI,EAAOJ,IACpF,SAAS8G,EAAS/C,GAAS,IAAM6C,EAAKF,EAAiB,MAAE3C,IAAW,MAAO/D,GAAKI,EAAOJ,IACvF,SAAS4G,EAAKG,GAJlB,IAAehD,EAIagD,EAAOC,KAAO7G,EAAQ4G,EAAOhD,QAJ1CA,EAIyDgD,EAAOhD,MAJhDA,aAAiB0C,EAAI1C,EAAQ,IAAI0C,GAAE,SAAUtG,GAAWA,EAAQ4D,OAIThC,KAAK4E,EAAWG,GAClGF,GAAMF,EAAYA,EAAUX,MAAMQ,EAASC,GAAc,KAAKK,WAI/D,SAASI,EAAYV,EAASW,GACjC,IAAsGC,EAAGC,EAAGpD,EAAGqD,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPxD,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOyD,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAER,KAAMc,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAX9D,SAA0BwD,EAAExD,OAAO+D,UAAY,WAAa,OAAOlC,OAAU2B,EACvJ,SAASM,EAAKpD,GAAK,OAAO,SAAUsD,GAAK,OACzC,SAAcC,GACV,GAAIX,EAAG,MAAM,IAAI5B,UAAU,mCAC3B,KAAO8B,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,GAAG,IACtC,GAAIH,EAAI,EAAGC,IAAMpD,EAAY,EAAR8D,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOpD,EAAIoD,EAAU,SAAMpD,EAAE7E,KAAKiI,GAAI,GAAKA,EAAEP,SAAW7C,EAAIA,EAAE7E,KAAKiI,EAAGU,EAAG,KAAKd,KAAM,OAAOhD,EAE3J,OADIoD,EAAI,EAAGpD,IAAG8D,EAAK,CAAS,EAARA,EAAG,GAAQ9D,EAAED,QACzB+D,EAAG,IACP,KAAK,EAAG,KAAK,EAAG9D,EAAI8D,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAExD,MAAO+D,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,KAAM/D,EAAIsD,EAAEG,MAAMzD,EAAIA,EAAEjF,OAAS,GAAKiF,EAAEA,EAAEjF,OAAS,KAAkB,IAAV+I,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,SACjG,GAAc,IAAVQ,EAAG,MAAc9D,GAAM8D,EAAG,GAAK9D,EAAE,IAAM8D,EAAG,GAAK9D,EAAE,IAAM,CAAEsD,EAAEC,MAAQO,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQvD,EAAE,GAAI,CAAEsD,EAAEC,MAAQvD,EAAE,GAAIA,EAAI8D,EAAI,MAC7D,GAAI9D,GAAKsD,EAAEC,MAAQvD,EAAE,GAAI,CAAEsD,EAAEC,MAAQvD,EAAE,GAAIsD,EAAEI,IAAIrI,KAAKyI,GAAK,MACvD9D,EAAE,IAAIsD,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAKZ,EAAK/H,KAAKoH,EAASe,GAC1B,MAAOtH,GAAK8H,EAAK,CAAC,EAAG9H,GAAIoH,EAAI,EAAK,QAAUD,EAAInD,EAAI,EACtD,GAAY,EAAR8D,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE/D,MAAO+D,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,GArB9BJ,CAAK,CAACrC,EAAGsD,MAyBhC7I,OAAOoF,OAgB7B,SAAS4D,EAASxE,GACrB,IAAIwB,EAAsB,mBAAXnB,QAAyBA,OAAO+D,SAAUxE,EAAI4B,GAAKxB,EAAEwB,GAAInG,EAAI,EAC5E,GAAIuE,EAAG,OAAOA,EAAEjE,KAAKqE,GACrB,GAAIA,GAAyB,iBAAbA,EAAEzE,OAAqB,MAAO,CAC1C8H,KAAM,WAEF,OADIrD,GAAK3E,GAAK2E,EAAEzE,SAAQyE,OAAI,GACrB,CAAEO,MAAOP,GAAKA,EAAE3E,KAAMmI,MAAOxD,KAG5C,MAAM,IAAI+B,UAAUP,EAAI,0BAA4B,mCAGjD,SAASiD,EAAOzE,EAAGe,GACtB,IAAInB,EAAsB,mBAAXS,QAAyBL,EAAEK,OAAO+D,UACjD,IAAKxE,EAAG,OAAOI,EACf,IAAmBI,EAAY5D,EAA3BnB,EAAIuE,EAAEjE,KAAKqE,GAAO0E,EAAK,GAC3B,IACI,WAAc,IAAN3D,GAAgBA,KAAM,MAAQX,EAAI/E,EAAEgI,QAAQG,MAAMkB,EAAG7I,KAAKuE,EAAEG,OAExE,MAAOtB,GAASzC,EAAI,CAAEyC,MAAOA,GAC7B,QACI,IACQmB,IAAMA,EAAEoD,OAAS5D,EAAIvE,EAAU,SAAIuE,EAAEjE,KAAKN,GAElD,QAAU,GAAImB,EAAG,MAAMA,EAAEyC,OAE7B,OAAOyF,EAmBJ,SAASC,EAAcC,EAAIC,EAAMC,GACpC,GAAIA,GAA6B,IAArBxC,UAAU/G,OAAc,IAAK,IAA4BmJ,EAAxBrJ,EAAI,EAAGkB,EAAIsI,EAAKtJ,OAAYF,EAAIkB,EAAGlB,KACxEqJ,GAAQrJ,KAAKwJ,IACRH,IAAIA,EAAK7C,MAAMpG,UAAU8F,MAAM5F,KAAKkJ,EAAM,EAAGxJ,IAClDqJ,EAAGrJ,GAAKwJ,EAAKxJ,IAGrB,OAAOuJ,EAAGG,OAAOL,GAAM7C,MAAMpG,UAAU8F,MAAM5F,KAAKkJ,IAiC/C,SAASG,EAAqBC,EAAQC,GAEzC,OADI1J,OAAOyE,eAAkBzE,OAAOyE,eAAegF,EAAQ,MAAO,CAAE1E,MAAO2E,IAAiBD,EAAOC,IAAMA,EAClGD,EAGczJ,OAAOoF,OAyDkB,mBAApBuE,iBAAiCA,iB,oJCjTxD,aAAP,wBACW,KAAAC,YAAgC,cAChC,KAAAC,QAAU,GAEV,KAAAC,OAAqB,MAE5B,KAAAC,aAAe,SAAC9E,GAOZ,OANKA,GAAQ,IAAoB+E,SAAS/E,QAAU,IAAmBgF,QACnE,EAAKJ,QAAuB,cAAI,IAAoBG,SAASE,MAC7D,EAAKN,YAAc,eAEnB,EAAKA,YAAc,cAEhB,GAoHf,OAjHI,YAAAO,UAAA,SAAUC,GAEN,OADM1D,KAAM0D,OAASA,EACd1D,MAGX,sBAAW,WAAM,C,IAAjB,WACI,OAAO,IAAI2D,GAAUC,UAAU,W,gCAGnC,sBAAW,SAAI,C,IAAf,WACI,OAAO,IAAID,GAAUC,UAAU,S,gCAGnC,sBAAW,QAAG,C,IAAd,WACI,OAAO,IAAID,GAAUC,UAAU,Q,gCAGnC,YAAAC,eAAA,SAAeC,GAEX,OADA9D,KAAKkD,YAAcY,EACZ9D,MAGX,YAAA+D,QAAA,SAAQC,GAMJ,OALAhE,KAAK4D,UAAU,QACf5D,KAAKmD,QAAQ,gBAAkB,mBAC/BnD,KAAKmD,QAAgB,OAAI,mBAEzBnD,KAAKwB,KAAOyC,KAAKC,UAAUF,GACpBhE,MAGX,YAAAmE,KAAA,WAGI,OAFAnE,KAAKmD,QAAQ,gBAAkB,YAC/BnD,KAAKmD,QAAgB,OAAI,YAClBnD,MAGX,YAAAoE,kBAAA,SAAkBC,GACd,IAAMvL,EAAO,GAIb,MAHA,GAAGuG,MAAM5F,KAAK4K,EAAKC,iBAAiB,oBAAoBC,SAAQ,SAACC,GAC7D1L,EAAK0L,EAAQnH,MAAQmH,EAAQnG,SAE1B2B,KAAK+D,QAAQjL,IAGxB,YAAA2L,QAAA,SAAQC,GAIJ,OAHA1E,KAAK4D,UAAU,QACf5D,KAAKmD,QAAQ,gBAAkB,aAC/BnD,KAAKwB,KAAOkD,EACL1E,MAGX,YAAA2E,QAAA,SAAQnD,GAEJ,OADAxB,KAAKwB,KAAOA,EACLxB,MAGX,YAAA4D,UAAA,SAAUR,GAMN,OALApD,KAAKoD,OAASA,EACC,SAAXA,IACApD,KAAKmD,QAAQ,WAAaQ,EAAQiB,kBAG/B5E,MAGJ,EAAA4E,eAAP,WACI,OAAOjB,EAAQkB,UAAU,WAGtB,EAAAA,UAAP,SAAiBxH,GAGb,IAFA,IAAMyH,EAAS,UAAGzH,EAAI,KAChB0H,EAAKhK,SAASiK,OAAOC,MAAM,KACzB9L,EAAE,EAAEA,EAAI4L,EAAG1L,OAAOF,IAAK,CAE3B,IADA,IAAIwE,EAAIoH,EAAG5L,GACY,MAAhBwE,EAAEuH,OAAO,IACZvH,EAAIA,EAAEwH,UAAU,EAAExH,EAAEtE,QAExB,GAA0B,IAAtBsE,EAAEyH,QAAQN,GACV,OAAOnH,EAAEwH,UAAUL,EAAOzL,OAAOsE,EAAEtE,UAQlC,EAAAgM,oBAAb,SAAiCC,G,kHACzBA,GAAaA,EAASC,GAAtB,Y,GACyB,MAApBD,EAASE,OAAT,Y,GACK7B,EAAQ8B,cAAT,YACD9B,EAAQ8B,eAAgB,E,iBAEpB,O,sBAAA,IAAM,IAAI,KAAmBC,OAAO,CAChCC,QAAS,aACTvI,QAAS,4BACTwI,QAAS,CAAC,mB,cAHd,S,oBAMAjC,EAAQ8B,eAAgB,E,WAE5BtG,OAAO0G,SAASlL,KAAO,sBAAewE,OAAO0G,SAASlL,M,mCAM/D,EAAAmL,mBAAP,SAA0BR,GACtB,IAAIA,EAASC,GAGb,MAAM,IAAIvJ,MAAM,6BAAsBsJ,EAASE,OAAM,qBAAaF,EAASS,cA1BhE,EAAAN,eAAgB,EA4BnC,EAjIO,GAmIA,aAAP,aACY,KAAAO,aAAc,EACd,KAAAC,uBAAwB,EAExB,KAAAC,eAAgB,EAsG5B,OAlGI,YAAAC,WAAA,WAEI,OADAnG,KAAKgG,aAAc,EACZhG,MAGX,YAAAoG,QAAA,WAEI,OAAOpG,MAIX,YAAAqG,qBAAA,WAEI,OADArG,KAAKiG,uBAAwB,EACtBjG,MAGX,YAAAsG,aAAA,WAEI,OADAtG,KAAKkG,eAAgB,EACdlG,MAGG,YAAAuG,YAAd,W,8GAII,OAHKC,EAASC,uBACVD,EAASC,sBAAuB,IAAI,KAAuBC,QAAQ,CAAEC,MAAQ,8BAA+BC,YAAY,KAE5H,GAAM,IAAMC,KAAK,M,cAAjB,S,YAQE,YAAAC,YAAN,SAAkBC,EAAoBC,G,oHAM3B,OALDC,EAAMF,EAEPP,EAASU,gBAAgBD,KAC1BT,EAASU,gBAAgBD,GAAOjH,KAAKmH,MAAMJ,EAAOC,IAE/C,GAAMR,EAASU,gBAAgBD,I,OAAtC,MAAO,CAAP,EAAO,kBAGL,YAAAE,MAAN,SAAYJ,EAAoBC,G,wHASZ,O,sBALRpL,EAAUuL,MAAMJ,EAAOC,GAEvBhH,KAAKgG,cACLpK,EAAU,IAAU0H,SAAS8D,IAAIxL,IAEzB,GAAMA,G,OAQjB,IARA0J,EAAW,UAECC,IAAMiB,EAASC,uBACxBD,EAASC,qBAAqBY,OAC9Bb,EAASC,0BAAuBnJ,EAChCkJ,EAASc,SAAW,GAGnBhC,EAASE,QAAU,IACpB,MAAM,IAAIxJ,MAAMsJ,EAASS,Y,OAE5BS,EAASe,uBAAyB,E,aAEnC,O,WAAIP,GAAQA,EAAKtD,QACTsD,EAAKtD,OAAO8D,QACZ,IAGR,GAAM,IAAMX,KAAK,IAAOL,EAASc,W,OAKjC,GALA,SAEId,EAASc,SAAW,GACxBd,EAASc,WAELtH,KAAKkG,cACL,MAAM,E,OAKNM,EAASe,yBAELf,EAASe,uBAAyB,GAClCf,EAASe,uBAAyB,EAClC,GAAMvH,KAAKuG,gBAFX,M,OAEA,S,iBAIR,SAAM,IAAMM,KAAK,M,cAAjB,S,oBAGC7G,KAAKiG,sBAAN,MACA,GAAMtC,EAAQ0B,oBAAoBC,I,OAAlC,S,iBAEJ,MAAO,CAAP,EAAOA,WAhGI,EAAAgC,SAAW,EA8BX,EAAAC,uBAAyB,EAGzB,EAAAL,gBAAwD,GAmE3E,EA1GO,I,gCC5IP,oEACO,IAAMO,EAAWtJ,OAAO,aAaxB,SAASuJ,EAAcC,GAC1B,OAAO,SAAU9L,GACbA,EAAO4L,GAAYE,K,mDCjBvBC,G,MAGe,oBAATC,KAAuBA,UAAO,GACpCC,EACY,oBAAqBF,EADjCE,EAEQ,WAAYF,GAAU,aAAczJ,OAF5C2J,EAIA,eAAgBF,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIG,MACG,EACP,MAAOzN,GACP,OAAO,GALX,GANAwN,EAcQ,aAAcF,EAdtBE,EAeW,gBAAiBF,EAOhC,GAAIE,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASnE,GACP,OAAOA,GAAOgE,EAAY5C,QAAQ9L,OAAOC,UAAU6O,SAAS3O,KAAKuK,KAAS,GAIhF,SAASqE,EAAchL,GAIrB,GAHoB,iBAATA,IACTA,EAAOyC,OAAOzC,IAEZ,6BAA6BiL,KAAKjL,IAAkB,KAATA,EAC7C,MAAM,IAAIwC,UAAU,0CAEtB,OAAOxC,EAAKkL,cAGd,SAASC,EAAenK,GAItB,MAHqB,iBAAVA,IACTA,EAAQyB,OAAOzB,IAEVA,EAIT,SAASoK,EAAYC,GACnB,IAAIxG,EAAW,CACbf,KAAM,WACJ,IAAI9C,EAAQqK,EAAM5O,QAClB,MAAO,CAACwH,UAAgBhE,IAAVe,EAAqBA,MAAOA,KAU9C,OANIyJ,IACF5F,EAAS/D,OAAO+D,UAAY,WAC1B,OAAOA,IAIJA,EAGF,SAASyG,EAAQxF,GACtBnD,KAAK4I,IAAM,GAEPzF,aAAmBwF,EACrBxF,EAAQoB,SAAQ,SAASlG,EAAOhB,GAC9B2C,KAAK6I,OAAOxL,EAAMgB,KACjB2B,MACML,MAAMmJ,QAAQ3F,GACvBA,EAAQoB,SAAQ,SAASwE,GACvB/I,KAAK6I,OAAOE,EAAO,GAAIA,EAAO,MAC7B/I,MACMmD,GACT7J,OAAO0P,oBAAoB7F,GAASoB,SAAQ,SAASlH,GACnD2C,KAAK6I,OAAOxL,EAAM8F,EAAQ9F,MACzB2C,MAgEP,SAASiJ,EAASzH,GAChB,GAAIA,EAAK0H,SACP,OAAO1O,QAAQE,OAAO,IAAImF,UAAU,iBAEtC2B,EAAK0H,UAAW,EAGlB,SAASC,EAAgBC,GACvB,OAAO,IAAI5O,SAAQ,SAASC,EAASC,GACnC0O,EAAO3N,OAAS,WACdhB,EAAQ2O,EAAO/H,SAEjB+H,EAAO1N,QAAU,WACfhB,EAAO0O,EAAOrM,WAKpB,SAASsM,EAAsBC,GAC7B,IAAIF,EAAS,IAAIG,WACbhN,EAAU4M,EAAgBC,GAE9B,OADAA,EAAOI,kBAAkBF,GAClB/M,EAoBT,SAASkN,EAAYC,GACnB,GAAIA,EAAIrK,MACN,OAAOqK,EAAIrK,MAAM,GAEjB,IAAIsK,EAAO,IAAIC,WAAWF,EAAIG,YAE9B,OADAF,EAAKG,IAAI,IAAIF,WAAWF,IACjBC,EAAKI,OAIhB,SAASC,IAqGP,OApGAhK,KAAKkJ,UAAW,EAEhBlJ,KAAKiK,UAAY,SAASzI,GAhM5B,IAAoBwC,EA2MhBhE,KAAKkJ,SAAWlJ,KAAKkJ,SACrBlJ,KAAKkK,UAAY1I,EACZA,EAEsB,iBAATA,EAChBxB,KAAKmK,UAAY3I,EACRsG,GAAgBC,KAAKxO,UAAU6Q,cAAc5I,GACtDxB,KAAKqK,UAAY7I,EACRsG,GAAoBwC,SAAS/Q,UAAU6Q,cAAc5I,GAC9DxB,KAAKuK,cAAgB/I,EACZsG,GAAwB0C,gBAAgBjR,UAAU6Q,cAAc5I,GACzExB,KAAKmK,UAAY3I,EAAK4G,WACbN,GAAuBA,KAvNlB9D,EAuN6CxC,IAtNjDiJ,SAASlR,UAAU6Q,cAAcpG,KAuN3ChE,KAAK0K,iBAAmBjB,EAAYjI,EAAKuI,QAEzC/J,KAAKkK,UAAY,IAAInC,KAAK,CAAC/H,KAAK0K,oBACvB5C,IAAwBI,YAAY3O,UAAU6Q,cAAc5I,IAASyG,EAAkBzG,IAChGxB,KAAK0K,iBAAmBjB,EAAYjI,GAEpCxB,KAAKmK,UAAY3I,EAAOlI,OAAOC,UAAU6O,SAAS3O,KAAK+H,GAhBvDxB,KAAKmK,UAAY,GAmBdnK,KAAKmD,QAAQlF,IAAI,kBACA,iBAATuD,EACTxB,KAAKmD,QAAQ2G,IAAI,eAAgB,4BACxB9J,KAAKqK,WAAarK,KAAKqK,UAAU7O,KAC1CwE,KAAKmD,QAAQ2G,IAAI,eAAgB9J,KAAKqK,UAAU7O,MACvCsM,GAAwB0C,gBAAgBjR,UAAU6Q,cAAc5I,IACzExB,KAAKmD,QAAQ2G,IAAI,eAAgB,qDAKnChC,IACF9H,KAAKsJ,KAAO,WACV,IAAIlI,EAAW6H,EAASjJ,MACxB,GAAIoB,EACF,OAAOA,EAGT,GAAIpB,KAAKqK,UACP,OAAO7P,QAAQC,QAAQuF,KAAKqK,WACvB,GAAIrK,KAAK0K,iBACd,OAAOlQ,QAAQC,QAAQ,IAAIsN,KAAK,CAAC/H,KAAK0K,oBACjC,GAAI1K,KAAKuK,cACd,MAAM,IAAIvO,MAAM,wCAEhB,OAAOxB,QAAQC,QAAQ,IAAIsN,KAAK,CAAC/H,KAAKmK,cAI1CnK,KAAK2K,YAAc,WACjB,OAAI3K,KAAK0K,iBACAzB,EAASjJ,OAASxF,QAAQC,QAAQuF,KAAK0K,kBAEvC1K,KAAKsJ,OAAOjN,KAAKgN,KAK9BrJ,KAAK0E,KAAO,WACV,IAtGoB4E,EAClBF,EACA7M,EAoGE6E,EAAW6H,EAASjJ,MACxB,GAAIoB,EACF,OAAOA,EAGT,GAAIpB,KAAKqK,UACP,OA5GkBf,EA4GItJ,KAAKqK,UA3G3BjB,EAAS,IAAIG,WACbhN,EAAU4M,EAAgBC,GAC9BA,EAAOwB,WAAWtB,GACX/M,EAyGE,GAAIyD,KAAK0K,iBACd,OAAOlQ,QAAQC,QAvGrB,SAA+BiP,GAI7B,IAHA,IAAIC,EAAO,IAAIC,WAAWF,GACtBmB,EAAQ,IAAIlL,MAAMgK,EAAKtQ,QAElBF,EAAI,EAAGA,EAAIwQ,EAAKtQ,OAAQF,IAC/B0R,EAAM1R,GAAK2G,OAAOgL,aAAanB,EAAKxQ,IAEtC,OAAO0R,EAAME,KAAK,IAgGSC,CAAsBhL,KAAK0K,mBAC7C,GAAI1K,KAAKuK,cACd,MAAM,IAAIvO,MAAM,wCAEhB,OAAOxB,QAAQC,QAAQuF,KAAKmK,YAI5BrC,IACF9H,KAAKiL,SAAW,WACd,OAAOjL,KAAK0E,OAAOrI,KAAK6O,KAI5BlL,KAAKmL,KAAO,WACV,OAAOnL,KAAK0E,OAAOrI,KAAK4H,KAAKmH,QAGxBpL,KArNT2I,EAAQpP,UAAUsP,OAAS,SAASxL,EAAMgB,GACxChB,EAAOgL,EAAchL,GACrBgB,EAAQmK,EAAenK,GACvB,IAAIgN,EAAWrL,KAAK4I,IAAIvL,GACxB2C,KAAK4I,IAAIvL,GAAQgO,EAAWA,EAAW,KAAOhN,EAAQA,GAGxDsK,EAAQpP,UAAkB,OAAI,SAAS8D,UAC9B2C,KAAK4I,IAAIP,EAAchL,KAGhCsL,EAAQpP,UAAU0E,IAAM,SAASZ,GAE/B,OADAA,EAAOgL,EAAchL,GACd2C,KAAKsL,IAAIjO,GAAQ2C,KAAK4I,IAAIvL,GAAQ,MAG3CsL,EAAQpP,UAAU+R,IAAM,SAASjO,GAC/B,OAAO2C,KAAK4I,IAAIpP,eAAe6O,EAAchL,KAG/CsL,EAAQpP,UAAUuQ,IAAM,SAASzM,EAAMgB,GACrC2B,KAAK4I,IAAIP,EAAchL,IAASmL,EAAenK,IAGjDsK,EAAQpP,UAAUgL,QAAU,SAASgH,EAAU1K,GAC7C,IAAK,IAAIxD,KAAQ2C,KAAK4I,IAChB5I,KAAK4I,IAAIpP,eAAe6D,IAC1BkO,EAAS9R,KAAKoH,EAASb,KAAK4I,IAAIvL,GAAOA,EAAM2C,OAKnD2I,EAAQpP,UAAUiS,KAAO,WACvB,IAAI9C,EAAQ,GAIZ,OAHA1I,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3BqL,EAAM/O,KAAK0D,MAENoL,EAAYC,IAGrBC,EAAQpP,UAAUkS,OAAS,WACzB,IAAI/C,EAAQ,GAIZ,OAHA1I,KAAKuE,SAAQ,SAASlG,GACpBqK,EAAM/O,KAAK0E,MAENoK,EAAYC,IAGrBC,EAAQpP,UAAUmS,QAAU,WAC1B,IAAIhD,EAAQ,GAIZ,OAHA1I,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3BqL,EAAM/O,KAAK,CAAC0D,EAAMgB,OAEboK,EAAYC,IAGjBZ,IACFa,EAAQpP,UAAU4E,OAAO+D,UAAYyG,EAAQpP,UAAUmS,SAgKzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAOpD,SAAShI,EAAQoD,EAAOnB,GAE7B,IAPuBxC,EACnBwI,EAMApK,GADJoE,EAAUA,GAAW,IACFpE,KAEnB,GAAIuF,aAAiBpD,EAAS,CAC5B,GAAIoD,EAAMmC,SACR,MAAM,IAAIrJ,UAAU,gBAEtBG,KAAKiH,IAAMF,EAAME,IACjBjH,KAAKkD,YAAc6D,EAAM7D,YACpB0C,EAAQzC,UACXnD,KAAKmD,QAAU,IAAIwF,EAAQ5B,EAAM5D,UAEnCnD,KAAKoD,OAAS2D,EAAM3D,OACpBpD,KAAKzB,KAAOwI,EAAMxI,KAClByB,KAAK0D,OAASqD,EAAMrD,OACflC,GAA2B,MAAnBuF,EAAMmD,YACjB1I,EAAOuF,EAAMmD,UACbnD,EAAMmC,UAAW,QAGnBlJ,KAAKiH,IAAMnH,OAAOiH,GAYpB,GATA/G,KAAKkD,YAAc0C,EAAQ1C,aAAelD,KAAKkD,aAAe,eAC1D0C,EAAQzC,SAAYnD,KAAKmD,UAC3BnD,KAAKmD,QAAU,IAAIwF,EAAQ/C,EAAQzC,UAErCnD,KAAKoD,QAjCkBA,EAiCOwC,EAAQxC,QAAUpD,KAAKoD,QAAU,MAhC3DwI,EAAUxI,EAAOyI,cACdF,EAAQvG,QAAQwG,IAAY,EAAIA,EAAUxI,GAgCjDpD,KAAKzB,KAAOqH,EAAQrH,MAAQyB,KAAKzB,MAAQ,KACzCyB,KAAK0D,OAASkC,EAAQlC,QAAU1D,KAAK0D,OACrC1D,KAAK8L,SAAW,MAEK,QAAhB9L,KAAKoD,QAAoC,SAAhBpD,KAAKoD,SAAsB5B,EACvD,MAAM,IAAI3B,UAAU,6CAItB,GAFAG,KAAKiK,UAAUzI,KAEK,QAAhBxB,KAAKoD,QAAoC,SAAhBpD,KAAKoD,QACV,aAAlBwC,EAAQmG,OAA0C,aAAlBnG,EAAQmG,OAAsB,CAEhE,IAAIC,EAAgB,gBACpB,GAAIA,EAAc1D,KAAKtI,KAAKiH,KAE1BjH,KAAKiH,IAAMjH,KAAKiH,IAAIgF,QAAQD,EAAe,QAAS,IAAIE,MAAOC,eAC1D,CAGLnM,KAAKiH,MADe,KACOqB,KAAKtI,KAAKiH,KAAO,IAAM,KAAO,MAAO,IAAIiF,MAAOC,YAUnF,SAASjB,EAAO1J,GACd,IAAI4K,EAAO,IAAI9B,SAYf,OAXA9I,EACG6K,OACApH,MAAM,KACNV,SAAQ,SAAS+H,GAChB,GAAIA,EAAO,CACT,IAAIrH,EAAQqH,EAAMrH,MAAM,KACpB5H,EAAO4H,EAAMnL,QAAQmS,QAAQ,MAAO,KACpC5N,EAAQ4G,EAAM8F,KAAK,KAAKkB,QAAQ,MAAO,KAC3CG,EAAKvD,OAAO0D,mBAAmBlP,GAAOkP,mBAAmBlO,QAGxD+N,EAqBF,SAASI,EAASC,EAAU7G,GAC5BA,IACHA,EAAU,IAGZ5F,KAAKxE,KAAO,UACZwE,KAAKwF,YAA4BlI,IAAnBsI,EAAQJ,OAAuB,IAAMI,EAAQJ,OAC3DxF,KAAKuF,GAAKvF,KAAKwF,QAAU,KAAOxF,KAAKwF,OAAS,IAC9CxF,KAAK+F,WAAa,eAAgBH,EAAUA,EAAQG,WAAa,GACjE/F,KAAKmD,QAAU,IAAIwF,EAAQ/C,EAAQzC,SACnCnD,KAAKiH,IAAMrB,EAAQqB,KAAO,GAC1BjH,KAAKiK,UAAUwC,GAjDjB9I,EAAQpK,UAAUmT,MAAQ,WACxB,OAAO,IAAI/I,EAAQ3D,KAAM,CAACwB,KAAMxB,KAAKkK,aAmCvCF,EAAKvQ,KAAKkK,EAAQpK,WAgBlByQ,EAAKvQ,KAAK+S,EAASjT,WAEnBiT,EAASjT,UAAUmT,MAAQ,WACzB,OAAO,IAAIF,EAASxM,KAAKkK,UAAW,CAClC1E,OAAQxF,KAAKwF,OACbO,WAAY/F,KAAK+F,WACjB5C,QAAS,IAAIwF,EAAQ3I,KAAKmD,SAC1B8D,IAAKjH,KAAKiH,OAIduF,EAASzP,MAAQ,WACf,IAAIuI,EAAW,IAAIkH,EAAS,KAAM,CAAChH,OAAQ,EAAGO,WAAY,KAE1D,OADAT,EAAS9J,KAAO,QACT8J,GAGT,IAAIqH,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CH,EAASI,SAAW,SAAS3F,EAAKzB,GAChC,IAA0C,IAAtCmH,EAAiBvH,QAAQI,GAC3B,MAAM,IAAIqH,WAAW,uBAGvB,OAAO,IAAIL,EAAS,KAAM,CAAChH,OAAQA,EAAQrC,QAAS,CAAC0C,SAAUoB,MAG1D,IAAI6F,EAAelF,EAAOkF,aAa1B,SAAS3F,EAAMJ,EAAOC,GAC3B,OAAO,IAAIxM,SAAQ,SAASC,EAASC,GACnC,IAAIkB,EAAU,IAAI+H,EAAQoD,EAAOC,GAEjC,GAAIpL,EAAQ8H,QAAU9H,EAAQ8H,OAAO8D,QACnC,OAAO9M,EAAO,IAAIoS,EAAa,UAAW,eAG5C,IAAIC,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,QAGNH,EAAItR,OAAS,WACX,IAvFgB0R,EAChBhK,EAsFIyC,EAAU,CACZJ,OAAQuH,EAAIvH,OACZO,WAAYgH,EAAIhH,WAChB5C,SA1FcgK,EA0FQJ,EAAIK,yBAA2B,GAzFvDjK,EAAU,IAAIwF,EAGQwE,EAAWlB,QAAQ,eAAgB,KACzChH,MAAM,SAASV,SAAQ,SAAS8I,GAClD,IAAIC,EAAQD,EAAKpI,MAAM,KACnBtG,EAAM2O,EAAMxT,QAAQuS,OACxB,GAAI1N,EAAK,CACP,IAAIN,EAAQiP,EAAMvC,KAAK,KAAKsB,OAC5BlJ,EAAQ0F,OAAOlK,EAAKN,OAGjB8E,IA+EHyC,EAAQqB,IAAM,gBAAiB8F,EAAMA,EAAIQ,YAAc3H,EAAQzC,QAAQlF,IAAI,iBAC3E,IAAIuD,EAAO,aAAcuL,EAAMA,EAAIzH,SAAWyH,EAAIS,aAClDjQ,YAAW,WACT9C,EAAQ,IAAI+R,EAAShL,EAAMoE,MAC1B,IAGLmH,EAAIrR,QAAU,WACZ6B,YAAW,WACT7C,EAAO,IAAImF,UAAU,6BACpB,IAGLkN,EAAIU,UAAY,WACdlQ,YAAW,WACT7C,EAAO,IAAImF,UAAU,6BACpB,IAGLkN,EAAIW,QAAU,WACZnQ,YAAW,WACT7C,EAAO,IAAIoS,EAAa,UAAW,iBAClC,IAWLC,EAAIY,KAAK/R,EAAQwH,OARjB,SAAgB6D,GACd,IACE,MAAe,KAARA,GAAcW,EAAO/B,SAASlL,KAAOiN,EAAO/B,SAASlL,KAAOsM,EACnE,MAAO3M,GACP,OAAO2M,GAIc2G,CAAOhS,EAAQqL,MAAM,GAElB,YAAxBrL,EAAQsH,YACV6J,EAAIc,iBAAkB,EACW,SAAxBjS,EAAQsH,cACjB6J,EAAIc,iBAAkB,GAGpB,iBAAkBd,IAChBjF,EACFiF,EAAIe,aAAe,OAEnBhG,GACAlM,EAAQuH,QAAQlF,IAAI,kBACyD,IAA7ErC,EAAQuH,QAAQlF,IAAI,gBAAgBmH,QAAQ,8BAE5C2H,EAAIe,aAAe,gBAIvBlS,EAAQuH,QAAQoB,SAAQ,SAASlG,EAAOhB,GACtC0P,EAAIgB,iBAAiB1Q,EAAMgB,MAGzBzC,EAAQ8H,SACV9H,EAAQ8H,OAAOsK,iBAAiB,QAASf,GAEzCF,EAAIkB,mBAAqB,WAEA,IAAnBlB,EAAImB,YACNtS,EAAQ8H,OAAOyK,oBAAoB,QAASlB,KAKlDF,EAAIqB,UAAkC,IAAtBxS,EAAQsO,UAA4B,KAAOtO,EAAQsO,cAnG3C,mBAAjB4C,KACTA,EAAe,SAAS1P,EAASC,GAC/B2C,KAAK5C,QAAUA,EACf4C,KAAK3C,KAAOA,EACZ,IAAIN,EAAQf,MAAMoB,GAClB4C,KAAKqO,MAAQtR,EAAMsR,QAER9U,UAAYD,OAAOoF,OAAO1C,MAAMzC,WAC7CuT,EAAavT,UAAU0G,YAAc6M,GA+FvC3F,EAAMmH,UAAW,EAEZ1G,EAAOT,QACVS,EAAOT,MAAQA,EACfS,EAAOe,QAAUA,EACjBf,EAAOjE,QAAUA,EACjBiE,EAAO4E,SAAWA,G,2DC3iBnB,6C,kEACO,iBAAiBlE,KAAKnJ,OAAOoP,UAAUC,WACvC,GAAM,+BADN,M,OACA,S,kCAIRrP,OAAO5B,YAAW,+D,kEACd,SAAMkR,EAAA,EAAIC,S,cAAV,SAEMC,EAAiB,SAACrU,GACF,IAAdA,EAAEsU,UACF7T,SAASyG,KAAKqN,UAAUzH,IAAI,WAC5BjI,OAAOgP,oBAAoB,UAAWQ,KAI9CxP,OAAO6O,iBAAiB,UAAWW,G,gDC5BvC,8CACA,0BACY,KAAAG,SAAW,CACf,CAACC,KAAM,aAAcC,KAAM,EAAQ,KAA2C3R,KAAM,uBAAwB4R,YAAa,yCACzH,CAACF,KAAM,QAASC,KAAM,EAAQ,KAAsC3R,KAAM,mBAAoB4R,YAAa,8DAC3G,CAACF,KAAM,gBAAiBC,KAAM,EAAQ,KAA8C3R,KAAM,yBAA0B4R,YAAa,2CACjI,CAACF,KAAM,0BAA2BC,KAAM,EAAQ,KAAwD3R,KAAM,0BAA2B4R,YAAa,6CACtJ,CAACF,KAAM,qBAAsBC,KAAM,EAAQ,KAAmD3R,KAAM,qBAAsB4R,YAAa,yBAU/I,OANI,YAAAxR,IAAA,WACI,OAAI,IAAYyR,WACLlP,KAAK8O,SAASK,QAAO,SAAAhW,GAAK,MAAW,eAAXA,EAAE4V,QAEhC/O,KAAK8O,UAEpB,EAhBA,I,oHCMO,cAGH,a,OACI,cAAO,KAwEf,OA5EqC,iBAOjC,sBAAkB,aAAQ,C,IAA1B,WACI,OAAOM,EAAgBC,W,gCAG3B,sBAAW,2BAAY,C,IAAvB,WACI,OAAOtU,SAASuU,cAAc,yB,gCAG1B,YAAAC,kBAAR,SAA0BC,GACtBxP,KAAKyP,KAAK,UAAWD,IAGzB,YAAAE,gBAAA,SAAgBnE,GACZvL,KAAK2P,GAAG,UAAWpE,IAGvB,YAAAqE,iBAAA,SAAiBrE,GACbvL,KAAK6P,eAAe,UAAWtE,IAGnC,YAAAuE,SAAA,SAASC,GACUhV,SAASuU,cAAc,wBAC/BU,UAAYD,GAIvB,YAAAE,OAAA,W,IAAO,sDACHlV,SAAS4L,MAAQ,UAAGuJ,EAAUnF,KAAK,OAAM,iBACzC/K,KAAKuP,kBAAkB,CAAEW,UAAWA,KAGxC,YAAAC,aAAA,SAAaC,G,IAAb,WAA+B,oDAC3BrV,SAASyG,KAAK3E,aAAa,cAAeuT,GACtCrV,SAASuU,cAAc,wBACvBtP,KAAKiQ,OAAM,MAAXjQ,KAAI,2BAAYkQ,EAAUf,OAAOkB,WAAQ,IAEzClR,OAAO6O,iBAAiB,UAAU,WAAM,SAAKiC,OAAM,MAAX,EAAI,2BAAYC,EAAUf,OAAOkB,WAAW,OAAEC,MAAM,KAI9F,YAAAC,QAAN,SAAcH,EAAkB5L,G,IAAsB,wD,6GAClDzJ,SAASyG,KAAK3E,aAAa,cAAeuT,GAEtCvU,EAASd,SAASuU,cAAc,wBAE9BkB,EAAU,YACZ3U,EAASd,SAASuU,cAAc,yBACzBmB,UAAY,GACnB5U,EAAOO,YAAYoI,GACnB,EAAKyL,OAAM,MAAX,EAAI,2BAAYC,EAAUf,OAAOkB,WAAQ,KAGzCxU,EACA2U,IAEArR,OAAO6O,iBAAiB,SAAUwC,EAAS,CAAEF,MAAM,I,WAKpD,EAAA5B,MAAP,WACI,OAAO,IAAIlU,SAAQ,SAACC,GACbM,SAASuU,cAAc,wBACtB7U,OAAQ6C,GAER6B,OAAO6O,iBAAiB,SAAUvT,OAvE/B,EAAA4U,UAAY,IAAID,EA2EnC,EA5EO,CAA8B,iB,kBCPrChV,EAAOD,QAAU,4iC,kBCAjBC,EAAOD,QAAU,kS,kBCAjBC,EAAOD,QAAU,gzB,kBCAjBC,EAAOD,QAAU,oO,yCCCjBC,EAAOD,QAAU,CAAC,MAAQ,0BAA0B,OAAS,2BAA2B,OAAS,2BAA2B,eAAe,iCAAiC,YAAc,iCAAiC,cAAc,gCAAgC,WAAa,gCAAgC,aAAa,+BAA+B,UAAY,+BAA+B,YAAY,8BAA8B,SAAW,8BAA8B,WAAa,+BAA+B,cAAc,gCAAgC,WAAa,gCAAgC,cAAc,gCAAgC,WAAa,gCAAgC,IAAM,wBAAwB,KAAO,yBAAyB,MAAQ,0BAA0B,cAAc,gCAAgC,WAAa,gCAAgC,cAAc,gCAAgC,WAAa,kC,4HCEj7B,aAAP,aAEY,KAAAuW,YAAc,IAAIC,EAAA,EAe9B,OAbI,sBAAW,aAAQ,C,IAAnB,WACI,OAAOC,EAAavB,W,gCAGlB,YAAA5R,IAAN,W,8GACqB,UAAM,IAAI,KAAW0J,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,gBAAgB,IAAQpG,IAAIoF,iB,OACzF,SADU,SACK8H,Q,OAAtB,MAAO,CAAP,EAAO,kBAGL,YAAA0F,aAAN,SAAmBC,G,8GACf,UAAM,IAAI,KAAW3J,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,0BAA0B,IAAQ0M,KAAK1N,eAAeU,QAAQ,CAACiN,UAAWF,M,cAA7H,S,YAbW,EAAAzB,UAAY,IAAIuB,EAgBnC,EAjBO,G,eCMA,cAAP,2D,OAEc,EAAA7B,KAAO,aAqBP,EAAAkC,WAAa,WAAM,+XASVC,EAAA,EAAWC,WAAW,EAAKC,QAAQC,cAAa,uDAIzD,EAAKD,QAAQE,YAAc,6HAGVJ,EAAA,EAAWK,oBAAoB,EAAKH,QAAQE,aAAY,wDAEnE,GAAE,uCAER,EAAKF,QAAQI,YAAc,+HAGVN,EAAA,EAAWK,oBAAoB,EAAKH,QAAQI,aAAY,wDAEnE,GAAE,uEAG0B,UAA9B,EAAKJ,QAAQC,cAAyD,UAA7BlS,OAAO0G,SAAS4L,SAAuB,wFAA0F,GAAE,6BAC9I,UAA9B,EAAKL,QAAQC,aAA2B,4EACQ,EAAKD,QAAQJ,UAAY,WAAa,GAAE,uGAElF,GAAE,uEAIZ,EAAKI,QAAQM,cAAgB,EAAKN,QAAQM,aAAarY,OAAS,EAAI,ggBAc5D,EAAK+X,QAAQM,aAAa9I,KAAI,SAAA+I,GAAe,qGAEhCT,EAAA,EAAWU,UAAUD,EAAYE,SAAQ,qEACxBX,EAAA,EAAWU,UAAUD,EAAYG,WAAU,mEAC7CZ,EAAA,EAAWU,UAAUD,EAAYI,SAAQ,oDACxDJ,EAAYK,eAAiB,IAAG,YAAIL,EAAYM,SAAQ,+DAC7CN,EAAYO,KAAOP,EAAYO,KAAKC,OAAS,GAAE,2BAAmBR,EAAYO,KAAOP,EAAYO,KAAKE,MAAQ,GAAE,uEAEnIrH,KAAK,IAAG,0CAEnB,GAAE,e,EAElB,OArF6C,iBAMnC,YAAAsH,SAAN,W,2GAEUC,EAAetS,KAAKsP,cAAc,kBAIpCgD,EAAatE,iBAAiB,UAAU,0D,4DACpC,SAAM,EAAa1K,SAASuN,aAAayB,EAAaC,U,cAAtD,S,yBAMI,YAAAC,WAAhB,W,oHACmB,OAAf,EAAAxS,KAAe,GAAM,IAAUsD,SAAS8D,IAAI,EAAa9D,SAAS7F,Q,cAAlE,EAAK2T,QAAU,S,YAnBF,EAAAqB,KAAO,CAAC,SAAU,cAErB,EAAAvX,IAAM,oBAkFxB,EArFO,CAAsCwX,EAAA,GAuF7CC,eAAeC,OAAO,EAAwB1X,IAAK,GAGnD2X,EAAA,EAAQvP,SAASwP,UAAS,SAAMC,GAAK,oD,kEACX,WAAlBA,EAAMN,KAAK,IAAqC,eAAlBM,EAAMN,KAAK,GAAzC,MACA,GAAMrD,EAAA,EAAgB9L,SAASiN,QAAQ,GAAIxV,SAASQ,cAAc,qBAAsB,SAAU,e,OAAlG,SACAR,SAAS4L,MAAQ,iC,uDC1FzB,0BACY,KAAA+J,YAAc,IAAIC,EAAA,EAoF9B,OAjFY,YAAAqC,kBAAR,sBACI,OAAO,IAAIxY,SAAiB,SAACC,GACzB,GAAIwY,EAAkBC,QAClBzY,EAAQwY,EAAkBC,aAD9B,CAKA,IAAMzW,EAAS1B,SAASQ,cAAc,UACtCR,SAASyC,KAAKpB,YAAYK,GAC1BA,EAAOX,IAAM,8BACbW,EAAOhB,OAAS,0D,kEACM,SAAM0X,EAAA,EAASC,SAAiB,e,cAA5CC,EAAY,SAClBJ,EAAkBC,QAAU,IAAII,QAAQD,GACxC5Y,EAAQwY,EAAkBC,S,iBAKhC,YAAAK,IAAN,W,yHACoB,SAAMvT,KAAKgT,qB,cAAX,SAERQ,MAAM,CACVvB,SAAU,MACVwB,OAAQ,KACRC,OAAQ,KACR/M,MAAO,mBACPsI,YAAa,2CACb0E,OAAQ,CACJC,SAAWzU,OAAe0U,UAGlC,SAAO9X,EAAKuJ,GAAyB,+C,oFAC7BvJ,EACY,WAARA,EAAA,MACA,IAAM,IAAI,KAAmB2J,OAAO,CAChCC,QAAS,6BACTvI,QAAS,iDACTwI,QAAS,CAAC,SALlB,M,OAOI,MALA,SAKM,IAAI5J,MAAM,sCAA+BD,I,0BAG7C,EAAa,IAAI,I,iBASM,O,sBANzBwB,YAAW,0D,4DAAY,SAAM,EAAWmI,OAAO,CAC3CC,QAAS,cACTvI,QAAS,yBACTwI,QAAS,M,OAHU,6BAME,GAAMuB,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,8BAA6B,IAAI,KAAUN,QAAQ,CAAC+P,cAAexO,EAASqM,YAAYoC,O,OAOrJ,OAPMC,EAAmB,SACzB,IAAQlO,mBAAmBkO,GAE3B,EAAWC,QAEXlZ,SAASyG,KAAKqN,UAAUqF,OAAO,aAE/B,IAAM,IAAI,KAAmBxO,OAAO,CAChCC,QAAS,2BACTvI,QAAS,yCACTwI,QAAS,CAAC,c,cAHd,SAMAzG,OAAO0G,SAASsO,S,aAKhB,O,WAFA,EAAWF,QAEX,IAAM,IAAI,KAAmBvO,OAAO,CAChCC,QAAS,6BACTvI,QAAS,iDACTwI,QAAS,CAAC,S,OAGd,MANA,SAMM,IAAI5J,MAAM,sCAA+B,EAAG,M,uCAMtE,EArFA,I,oBCXA5B,EAAOD,QAAU,CAAC,KAAO,mCAAmC,OAAS,qCAAqC,QAAU,wC,kBCDpHC,EAAOD,QAAU,wkB,kBCAjBC,EAAOD,QAAU,iyC,kBCAjBC,EAAOD,QAAU,mgB,kBCAjBC,EAAOD,QAAU,ouB,kBCAjBC,EAAOD,QAAU,s0B,wCCAjBC,EAAOD,QAAU,8pD,4KCAjBC,EAAOD,QAAU,oM,gCCCjB,IAAI0N,EAAO,GACX,IACEA,EAAKuM,aAAc,IAAKA,aAAanU,YACrC,MAAMmU,IACL,SAAU9a,EAAQ+a,GACjB,IAAI3V,EAASpF,EAAOoF,OAChBX,EAAiBzE,EAAOyE,eACxBuW,EAAQF,EAAY7a,UAsCxB,SAAS6a,IACPC,EAAGvK,IAAI9J,KAAMtB,EAAO,OAEtB,SAASkU,EAAO/W,EAAQwB,EAAMgB,GAC5BN,EACElC,EACAwB,EACA,CACEkX,cAAc,EACdC,UAAU,EACVnW,MAAOA,IAIb,SAASoW,EAASC,GAChB,IAAI9O,EAAU8O,EAAK9O,QACfA,GAAWA,EAAQ0K,MACrBoE,EAAK7Y,OAAOsS,oBAAoBnO,KAAKxE,KAAMkZ,EAAKC,UACrB,mBAAlBD,EAAKC,SACdD,EAAKC,SAASlb,KAAKib,EAAK7Y,OAAQmE,MAEhC0U,EAAKC,SAASC,YAAY5U,MA1D9B4S,EAAO0B,EAAO,oBAAoB,SAAU9Y,EAAMmZ,EAAU/O,GAC1D,IAAK,IACHiP,EAASR,EAAGpW,IAAI+B,MAChB8U,EAAYD,EAAOrZ,KAAUqZ,EAAOrZ,GAAQ,IAC5CrC,EAAI,EAAGE,EAASyb,EAAUzb,OAAQF,EAAIE,EAAQF,IAE9C,GAAI2b,EAAU3b,GAAGwb,WAAaA,EAC5B,OAEJG,EAAUnb,KAAK,CAACkC,OAAQmE,KAAM2U,SAAUA,EAAU/O,QAASA,OAE7DgN,EAAO0B,EAAO,iBAAiB,SAAU3Y,GACvC,IACImZ,EADST,EAAGpW,IAAI+B,MACGrE,EAAMH,MAQ7B,OAPIsZ,IACFlC,EAAOjX,EAAO,SAAUqE,MACxB4S,EAAOjX,EAAO,gBAAiBqE,MAC/B8U,EAAUzV,MAAM,GAAGkF,QAAQkQ,EAAU9Y,UAC9BA,EAAMoZ,qBACNpZ,EAAME,SAER,KAET+W,EAAO0B,EAAO,uBAAuB,SAAU9Y,EAAMmZ,GACnD,IAAK,IACHE,EAASR,EAAGpW,IAAI+B,MAEhB8U,EAAYD,EAAOrZ,KAAUqZ,EAAOrZ,GAAQ,IAC5CrC,EAAI,EAAGE,EAASyb,EAAUzb,OAAQF,EAAIE,EAAQF,IAE9C,GAAI2b,EAAU3b,GAAGwb,WAAaA,EAE5B,YADAG,EAAUE,OAAO7b,EAAG,MAK1B0O,EAAKuM,YAAcA,EAxCrB,CAgEE9a,OAAQ,IAAI2b,SAED,IAAApN,EAAgB,a,yGCjExB,aAAP,wBAEY,KAAAqN,SAAwC,UAA7B/V,OAAO0G,SAAS4L,UAAqD,cAA7BtS,OAAO0G,SAASsP,SACnE,KAAAC,QAAU,WAAM,SAAKF,UAyKjC,OArKI,sBAAW,mBAAI,C,IAAf,WACI,MAA6B,UAAzBvE,EAAY0E,SACL,8BAEkB,SAAzB1E,EAAY0E,SACL,6BAEPrV,KAAKoV,UACE,wBAEAjW,OAAO0G,SAASyP,Q,gCAG/B,sBAAkB,gBAAW,C,IAA7B,WACI,GAA6B,UAAzB3E,EAAY0E,SACZ,MAAO,QAEX,GAA6B,SAAzB1E,EAAY0E,SACZ,MAAO,OAEX,OAAOlW,OAAO0G,SAAS0P,MACnB,IAAK,sBAAuB,MAAO,QACnC,IAAK,qBAAsB,MAAO,OAClC,IAAK,gBACL,QACI,MAAO,e,gCAML,EAAAC,kBAAd,WACQC,eACA9E,EAAY0E,SAAWI,aAAaC,QAAQ/E,EAAYgF,SACpDhF,EAAY0E,UACZta,SAASyG,KAAK3E,aAAa8T,EAAYgF,QAAShF,EAAY0E,YAIjE,YAAAO,YAAP,SAAmBC,GACXJ,cACAA,aAAaK,QAAQnF,EAAYgF,QAASE,GAE9ClF,EAAY0E,SAAWQ,EACvB9a,SAASyG,KAAK3E,aAAa8T,EAAYgF,QAAShF,EAAY0E,WAGnD,YAAAU,oBAAb,W,2HAEQ/V,KAAKoV,UACQ,GAAM,IAAoB9R,SAAS0S,eADhD,M,OAEA,OADMC,EAAO,UAEF,CAAP,EAAOA,EAAKpC,QAEL,CAAP,OAAOvW,G,OAGf,MAAO,CAAP,EAAa6B,OAAQ0U,gBAGZ,YAAAqC,cAAb,W,6HACQlW,KAAKoV,UACE,GAAMpV,KAAK+V,uBADlB,M,OACA,MAAO,CAAP,EAAO,U,OAKX,OAHMI,EAAWhX,OAAO0G,SAASuQ,SAASC,oBAAoBpR,MAAM,KAGvC,OADvBqR,EAAoBH,EAAS,IACb,GACX,CAAP,EAAOG,EAAkBnR,UAAU,IAEhC,GAAMnF,KAAK+V,uB,OAAlB,MAAO,CAAP,EAAO,kBAGE,YAAAQ,yBAAb,W,oHACW,SAAMvW,KAAKkW,iB,OAAoB,O,EAA/B,SAA+B,GAAMlW,KAAK+V,uB,OAAjD,MAAO,CAAP,EAAO,IAA+B,kBAG7B,YAAAS,cAAb,SAA2BC,G,sHACK,O,eAAlBzW,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,oBAAWU,YAGpE,YAAAC,kBAAP,SAAyB7C,EAAgB4C,GACrC,MAAO,UAAGzW,KAAKqE,KAAI,iBAASwP,EAAM,mBAAW4C,IAGpC,YAAAE,SAAb,W,sHAC4B,O,eAAd3W,KAAKqE,KAAI,cAAK,GAAMrE,KAAK+V,uB,OAAnC,MAAO,CAAP,EAAO,WAAiB,SAAgC,eAG/C,YAAAa,iBAAb,W,sHACgC,O,eAAlB5W,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,eAGnD,YAAAc,uBAAb,W,sHACgC,O,eAAlB7W,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,oBAGnD,YAAAe,kBAAb,SAA+BL,G,sHACH,O,eAAdzW,KAAKqE,KAAI,cAAK,GAAMrE,KAAKkW,iB,OAAnC,MAAO,CAAP,EAAO,WAAiB,SAA0B,oBAAWO,YAGpD,YAAAM,kBAAb,W,8GACW,SAAM/W,KAAK8W,kBAAkB,U,OAApC,MAAO,CAAP,EAAO,kBAGE,YAAAE,eAAb,W,sHACgC,O,eAAlBhX,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,qBAGnD,YAAAkB,cAAb,W,sHACgC,O,eAAlBjX,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,oBAGnD,YAAAmB,aAAb,SAA0BnI,G,sHACM,O,eAAlB/O,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,mBAAUhH,YAG7D,YAAAoI,gBAAb,W,sHACgC,O,eAAlBnX,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,sBAGnD,YAAAqB,oBAAb,SAAiCX,EAAmBY,G,sHACpB,O,eAAlBrX,KAAKqE,KAAI,kBAAS,GAAMrE,KAAK+V,uB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAAgC,oBAAWU,EAAS,kBAAUY,YAGjF,YAAAC,wBAAb,SAAqCb,EAAmBY,G,sHACxB,O,eAAlBrX,KAAKqE,KAAI,kBAAS,GAAMrE,KAAKkW,iB,OAAvC,MAAO,CAAP,EAAO,WAAqB,SAA0B,oBAAWO,EAAS,kBAAUY,EAAQ,mBAGnF,YAAAE,mBAAb,SAAgCd,G,gIACVnZ,IAAdmZ,GAAyC,UAAdA,EAA3B,MACO,GAAMzW,KAAKiX,iB,OAAlB,MAAO,CAAP,EAAO,U,OAEG,O,YAAA,GAAMjX,KAAKwW,cAAcC,I,OAAnC,MAAO,CAAP,EAAO,YAAG,SAAmC,oBAGxC,YAAAe,eAAb,SAA4B3D,EAAgB4D,EAAehB,G,uFACvD,YAAkBnZ,IAAdmZ,GAAyC,UAAdA,EACpB,CAAP,EAAO,UAAGzW,KAAKqE,KAAI,iBAASwP,EAAM,2BAAmB4D,IAE9C,CAAP,EAAO,UAAGzX,KAAK0W,kBAAkB7C,EAAQ4C,GAAU,2BAAmBgB,WAGvE,YAAAC,SAAP,SAAgB3D,GACE,MAAVA,EAAG,KACHA,EAAKA,EAAG5O,UAAU,IAEtB,IAAMwS,EAAM5D,EAAG3O,QAAQ,KACvB,OAAa,IAATuS,EACO5D,EAEJA,EAAG5O,UAAUwS,EAAI,IAId,EAAA1S,MAAd,SAAoB8O,GAChB,IAAyB,IAArBA,EAAG3O,QAAQ,KACX,MAAM,IAAIpJ,MAAM,uCAAgC+X,IAEpD,IAAMzG,EAAQyG,EAAG9O,MAAM,KACvB,GAAqB,IAAjBqI,EAAMjU,OACN,MAAM,IAAI2C,MAAM,kDAA2C+X,IAE/D,OAAOzG,GArKI,EAAAqI,QAAU,mBAuK7B,EA5KO,GA8KPhF,EAAY6E,qB,iJC7JZ,GAvBA,WAII,WAAoBoC,GAAA,KAAAA,SAEpB,sBAAI,oBAAK,C,IAAT,WACI,OAAI5X,KAAK6X,SACE7X,KAAK8X,QAEhB9X,KAAK6X,UAAW,EACT7X,KAAK8X,OAAS9X,KAAK4X,W,gCAG9B,sBAAI,yBAAU,C,IAAd,WACI,OAAO5X,KAAK6X,U,gCAfpB,GAuBA,yBAIA,OAHW,EAAA5L,QAAP,SAAe4J,EAAgBkC,GAC3B,OAAOlC,EAAO5J,QAAQ,YAAY,SAACrK,EAAGO,GAAM,OAAA4V,EAAK5V,OAEzD,EAJA,IAMA,cAEI,WAAY/E,GAAZ,WACU4a,EAAY,WAAWze,U,SAC7B,YAAM6D,IAAQ,MACTsC,UAAYsY,E,EAEzB,OAP8B,iBAO9B,EAPA,CAA8Bhc,OAU9B,2BAqBA,OApBW,EAAAic,WAAP,SAA6BlR,EAAcmR,GACvC,OAAOnR,EAAMoR,QAAO,SAACC,EAAKC,GAExB,OADAD,EAAIze,KAAI,MAARye,EAAG,2BAASF,EAAaG,KAAI,IACtBD,IACN,IAAIzY,QAGJ,EAAA2Y,WAAP,SAA2BvR,EAAkBwR,GACzC,IAAMC,EAAS,GACTnX,EAAS,GASf,OARA0F,EAAMxC,SAAQ,SAAAkU,GACV,IAAM9Z,EAAM4Z,EAAME,GACdD,EAAO7Z,KAGX6Z,EAAO7Z,IAAO,EACd0C,EAAO1H,KAAK8e,OAETpX,GAEf,EArBA,GA6BA,GANA,yB,+CAAwC,iBAAxC,CAAwCqX,GAExC,yB,+CAA+C,iBAA/C,CAA+CA,GAE/C,yB,+CAAsC,iBAAtC,CAAsCA,GAEtC,yBAIA,OAHkB,EAAA7R,KAAd,SAAmBvI,GACf,OAAO,IAAI9D,SAAQ,SAACC,GAAY,OAAA8C,WAAW9C,EAAS6D,OAE5D,EAJA,K,qFCjEA,yE,OASc,EAAAqa,aAAe,0D,uDACrBC,uBAAsB,0D,4DAElB,OADA5Y,KAAKnD,aAAa,QAAS,IAC3B,GAAM,IAAMgK,KAAK,M,cAAjB,SACA7G,KAAKkU,S,2BAYjB,OAzBmC,iBAE/B,YAAA2E,kBAAA,WAEI7Y,KAAK6O,UAAUzH,IAAI,YAEnBpH,KAAKsP,cAAc,eAAetB,iBAAiB,QAAShO,KAAK2Y,eAW9D,EAAAG,YAAP,SAAmBtU,GACfoU,uBAAsB,WAClB7d,SAASyG,KAAKpF,YAAYoI,GAC1BoU,uBAAsB,WAClBpU,EAAQuU,gBAAgB,gBAIxC,EAzBA,CAAmCC,c,gCCHnC,kCAAO,iBAAP,cAqBA,OApBkB,EAAAC,cAAd,SAA4BC,GACxB,IAAM7X,EAAUlC,OAAO0G,SAASsT,OAAOC,MACnC,IAAIC,OAAQ,iBAAUH,EAAK,uBAG/B,OAAO7X,EAASA,EAAO,QAAK/D,GAGlB,EAAAgc,aAAd,WAEI,OAASna,OAAOoa,YAAc,KAKpB,EAAArK,SAAd,WACI,OAAOlP,KAAKwZ,SAAqD,QAApCra,OAAQsa,UAAUC,eAHrC,EAAAF,MAAQ,WAAM,OAAMra,OAAQsa,UAAUE,UAMtC,EAAAC,QAAY,iBAAkBza,QAAYoP,UAAUsL,eAAiB,EACvF,EArBO,I,uDCAP,kHACA,MAuBMC,EAJgB,CAACC,GAASA,EAAID,mBAnBH,CAACC,IAC9B,MAAMC,EAAqB,IAAIC,IAC/BD,EAAmBlQ,IAAI,MAAO,CAAEzM,KAAM,QACtC,MAAM6c,EAAeH,EAAID,oBAAsB,CAC3CK,gBAAiB,CAAE9c,KAAM,OACzB+c,UAAWJ,GAYf,OAFAE,EAAaG,YARO,CAAChd,EAAMid,KACvBJ,EAAaE,UAAUtQ,IAAIzM,EAAMid,IAQrCJ,EAAaK,YANQld,IACb6c,EAAaE,UAAU9O,IAAIjO,KAC3B6c,EAAaC,gBAAkBD,EAAaE,UAAUnc,IAAIZ,KAK3D6c,GAE8CM,CAAyBT,GAIzCU,CAAqC,oBAAfC,WACzDA,WACgB,oBAAT7S,KACHA,KACkB,oBAAX1I,OACHA,YACkB,IAAXyI,EACHA,EACA,IAIEkS,EAAmBO,YAInBP,EAAmBS,YAwBvC,IAAII,GACJ,SAAWA,GAOPA,EAA6B,cAAI,gBAQjCA,EAA2B,YAAI,cAfnC,CAgBGA,IAAkBA,EAAgB,KACrC,MAAMC,UAA2B5e,MAC7B,YAAYoB,EAASnB,EAAMnD,GACvB+hB,MAAMzd,GACN4C,KAAK5C,QAAUA,EACf4C,KAAK/D,KAAOA,EACZ+D,KAAKlH,KAAOA,GAGpB,MAaMgiB,EAAmBf,IACrB,IAAIgB,EAAIC,EAAIC,EAAIC,EAAIC,EACpB,MAAMC,EAAoBrB,EAAIsB,yBAA2B,KACnDC,EAAMvB,EAAIN,WAAa,GACvB8B,EAAWD,EAAIC,QAAUD,EAAIC,SAAW,GAIxCrB,EAAeH,EAAID,mBAMnBJ,GAAmH,QAAnGqB,EAAKb,aAAmD,EAASA,EAAaC,uBAAoC,IAAPY,OAAgB,EAASA,EAAGrB,cALlI,KACM,OAAtB0B,EACDA,EAAkB/d,KAxBV,CAAC0c,IACnB,IAAIgB,EAAIC,EACR,OAAIjB,aAAiC,EAASA,EAAIyB,eACvC,WAE6H,QAA9HR,EAAqE,QAA/DD,EAAKhB,aAAiC,EAASA,EAAI0B,cAA2B,IAAPV,OAAgB,EAASA,EAAGW,uBAAoC,IAAPV,OAAgB,EAASA,EAAGW,QACjK,MAGA,OAgBDC,CAAc7B,IAIlB8B,GAAwH,QAAnGb,EAAKd,aAAmD,EAASA,EAAaC,uBAAoC,IAAPa,OAAgB,EAASA,EAAGa,mBADlI,KAAwB,QAAlBnC,KAchCoC,GAAyH,QAAnGb,EAAKf,aAAmD,EAASA,EAAaC,uBAAoC,IAAPc,OAAgB,EAASA,EAAGa,oBAZlI,CAACC,IAC9B,MAAMC,EAASC,EAAkBhe,IAAI8d,GACrC,SAAIC,aAAuC,EAASA,EAAO5B,UAAU9O,IAAIoO,SAIrEwC,EAAgBH,KASlBG,GAAuH,QAAnGhB,EAAKhB,aAAmD,EAASA,EAAaC,uBAAoC,IAAPe,OAAgB,EAASA,EAAGgB,kBADlI,CAACH,IAAiB,IAAIhB,EAAI,OAAoC,QAA5BA,EAAKO,EAAIa,qBAAkC,IAAPpB,OAAgB,EAASA,EAAGqB,KAAKC,GAAKA,EAAEhf,OAAS0e,KAMhJE,EAAoB,IAAIhC,IA4HxBqC,GAAsH,QAAnGnB,EAAKjB,aAAmD,EAASA,EAAaC,uBAAoC,IAAPgB,OAAgB,EAASA,EAAGmB,iBA3HlI,EAACP,EAAYQ,EAAoB,MAC3D,MAAMC,EAAmBP,EAAkBhe,IAAI8d,GAC/C,GAAIS,EAEA,OADAvd,QAAQwd,KAAK,qBAAqBV,yDAC3BS,EAAiBE,MAE5B,MAAMpC,EAAWZ,IACXiD,EAAeT,EAAgBH,GACrC,IAAIa,EACJ,MAwCMC,EAA6BC,IAC/B,IAAI5I,EACJ,MAAM6I,EAAU,IAAIhF,KAChB,MAAMld,EA3CmBmiB,YACxBJ,GAAoBtC,KAAYiC,EACjCK,EAEWA,EADgC,mBAAhCL,EAAkBjC,SACOiC,EAAkBjC,KACxBiC,EAAkBjC,GAErB,OAAtBc,IACJwB,GACD,QAASL,IACTK,EAEWA,EAD6B,mBAA7BL,EAAuB,UACEA,EAAuB,MAC7BA,EAAuB,KAElDK,GA4BOK,GAA2B5gB,KAAK6gB,IACtC,MAAMC,EA3BS,EAACD,EAAMJ,KAC9B,IAAI/B,EAAIC,EACR,IAAI2B,EAcC,IAAIO,EACL,OAA6B,QAArBlC,EAAKkC,EAAKJ,UAA0B,IAAP9B,OAAgB,EAASA,EAAGpc,KAAKse,GAGtE,MAAM,IAAItC,EAAmB,IAAImB,mCAA4CzB,IAAYK,EAAcyC,eAlBzF,CACd,MAAMC,EAAeV,aAAmD,EAASA,EAAahR,QAAQyQ,KAAK1e,GAAKof,IAASpf,EAAEL,MAC3H,GAAIggB,EACA,MAA2B,YAAvBA,EAAaC,MACL1X,GAAY0V,EAAIiC,cAAcxB,EAAYe,EAAK1U,WAAYxC,GAG5D,CAACA,EAAS2F,IAAa+P,EAAIkC,eAAezB,EAAYe,EAAK1U,WAAYxC,EAAS2F,GAG1F,GAAI2R,EACL,OAA6B,QAArBnC,EAAKmC,EAAKJ,UAA0B,IAAP/B,OAAgB,EAASA,EAAGnc,KAAKse,KAc3DO,CAAmBP,EAAMJ,GACpC,GAAIK,EAAI,CACJ,MAAMtiB,EAAIsiB,KAAMpF,GAEhB,OADA7D,EAASrZ,aAA6B,EAASA,EAAEqZ,OAC1CrZ,EAGP,MAAM,IAAI+f,EAAmB,IAAImB,KAAce,8BAAiCxC,IAAYK,EAAcyC,iBAMlH,MAHa,gBAATN,IACAjiB,EAAEqZ,OAAS8I,SAAY9I,KAEpBrZ,GASX,OANAkiB,EAAQ3U,SAAW,IAAS0U,EAAK1U,WAAR,0BACzB9O,OAAOyE,eAAegf,EAAS,OAAQ,CACnC1e,MAAOye,EACPtI,UAAU,EACVD,cAAc,IAEXwI,GAELW,EAAcb,EAA0B,eACxChN,EAAiBgN,EAA0B,kBAC3Cc,EAAoB,CAACC,EAAWrS,KAClC,MAAM9R,EAAOikB,EAAY,CAAEE,aAAarS,GAClC2I,EAAS8I,UACX,MAAMa,QAAmBpkB,EACzBoW,EAAe,CACX+N,YACAC,cACDtS,IAED1Q,EAAI,IAAIL,QAAQC,GAAWhB,EAAK4C,KAAK,IAAM5B,EAAQ,CAAEyZ,aAK3D,OAJArZ,EAAEqZ,OAAS8I,UACP/d,QAAQwd,KAAK,4DACPvI,KAEHrZ,GAEL6hB,EAAQ,IAAIoB,MAAM,GAAI,CACxB,IAAIlc,EAAGkb,GACH,OAAQA,GAEJ,IAAK,WACD,OACJ,IAAK,SACD,MAAO,KAAM,IACjB,IAAK,cACD,OAAOH,EAAegB,EAAoBD,EAC9C,IAAK,iBACD,OAAO7N,EACX,QACI,OAAOgN,EAA0BC,OAajD,OATAvB,EAAQQ,GAAcW,EACtBT,EAAkBnS,IAAIiS,EAAY,CAC9B1e,KAAM0e,EACNW,QACAtC,UAAW,IAAI2D,IAAI,IACZzkB,OAAOkS,KAAK+Q,MACXI,EAAe,CAACrC,GAAY,OAGjCoC,IAmBX,OAfKpB,EAAI0C,iBACL1C,EAAI0C,eAAiBC,GAAYA,GAErC3C,EAAI5B,YAAcA,EAClB4B,EAAI4C,YAtIiBniB,GAAQge,EAAI9a,QAAQlC,MAAMhB,GAuI/Cuf,EAAIO,iBAAmBA,EACvBP,EAAIQ,kBAAoBA,EACxBR,EAAI6C,iBAxIqB,CAACC,EAAStB,EAAMf,IAC9BvhB,QAAQE,OAAO,GAAGqhB,yCAAkDe,OAwI/ExB,EAAIgB,eAAiBA,EACrBhB,EAAI+C,UAAYzD,EAChBU,EAAIgD,QAAUhD,EAAIgD,MAClBhD,EAAIiD,mBAAqBjD,EAAIiD,iBAE7BjD,EAAIhB,SAAWgB,EAAI5B,cACnB4B,EAAI3B,SAAW2B,EAAIO,mBACZP,GAIL7B,EAFsB,CAACM,GAASA,EAAIN,UAAYqB,EAAgBf,GAEtCyE,CAA0C,oBAAf9D,WACrDA,WACgB,oBAAT7S,KACHA,KACkB,oBAAX1I,OACHA,YACkB,IAAXyI,EACHA,EACA,IACZ0U,EAAiB7C,EAAU6C,eAM3Bf,EAAU9B,EAAU8B,QAiB1B,MAAMkD,EACF,YAAYC,GACR1e,KAAK8U,UAAY,GACjB9U,KAAK2e,gBAAkB,GACnBD,IAEAzf,QAAQwd,KAAK,wBAAwBiC,EAAOrhB,uEAC5C2C,KAAK0e,OAASA,GAGtB,YAAYd,EAAWgB,GACD5e,KAAK8U,UAAU8I,KAE7B5d,KAAK8U,UAAU8I,GAAa,IAEhC5d,KAAK8U,UAAU8I,GAAWjkB,KAAKilB,GAG/B,MAAMC,EAAiB7e,KAAK2e,gBAAgBf,GACxCiB,IAAmBA,EAAeC,YAClC9e,KAAK+e,kBAAkBF,GAE3B,MAAM3K,EAAS8I,SAAYhd,KAAK6P,eAAe+N,EAAWgB,GACpD/jB,EAAIL,QAAQC,QAAQ,CAAEyZ,WAO5B,OANA5a,OAAOyE,eAAelD,EAAG,SAAU,CAC/BwD,MAAO2e,UACH/d,QAAQwd,KAAK,4DACPvI,OAGPrZ,EAEX,2BACImF,KAAK8U,UAAY,GACjB,IAAK,MAAMH,KAAY3U,KAAK2e,gBACxB3e,KAAKgf,qBAAqBhf,KAAK2e,gBAAgBhK,IAEnD3U,KAAK2e,gBAAkB,GAE3B,gBAAgBf,EAAW9kB,GACvB,MAAMgc,EAAY9U,KAAK8U,UAAU8I,GAC7B9I,GACAA,EAAUvQ,QAAQoQ,GAAYA,EAAS7b,IAG/C,aAAa8kB,GACT,QAAS5d,KAAK8U,UAAU8I,GAAWvkB,OAEvC,uBAAuB4lB,EAAiBC,GACpClf,KAAK2e,gBAAgBO,GAAmB,CACpCJ,YAAY,EACZG,kBACAC,kBACAC,QAASxjB,IACLqE,KAAKof,gBAAgBF,EAAiBvjB,KAIlD,cAAc0jB,EAAM,mBAChB,OAAO,IAAI5F,EAAU4E,UAAUgB,EAAK1E,EAAcyC,eAEtD,YAAYiC,EAAM,iBACd,OAAO,IAAI5F,EAAU4E,UAAUgB,EAAK1E,EAAc2E,aAEtD,qBAAqB1B,EAAWgB,GAC5B,MAAM9J,EAAY9U,KAAK8U,UAAU8I,GACjC,IAAK9I,EACD,OAEJ,MAAMyK,EAAQzK,EAAU1P,QAAQwZ,GAChC5e,KAAK8U,UAAU8I,GAAW5I,OAAOuK,EAAO,GAGnCvf,KAAK8U,UAAU8I,GAAWvkB,QAC3B2G,KAAKgf,qBAAqBhf,KAAK2e,gBAAgBf,IAGvD,kBAAkB4B,GACdrgB,OAAO6O,iBAAiBwR,EAAOP,gBAAiBO,EAAOL,SACvDK,EAAOV,YAAa,EAExB,qBAAqBU,GACZA,IAGLrgB,OAAOgP,oBAAoBqR,EAAOP,gBAAiBO,EAAOL,SAC1DK,EAAOV,YAAa,IAI5B,MAOMW,EAAUC,GAAQC,mBAAmBD,GACtCzT,QAAQ,uBAAwBM,oBAChCN,QAAQ,QAAS2T,QAKhB1U,EAAUwU,GAAQA,EAAIzT,QAAQ,mBAAoBM,oBACxD,MAAMsT,UAAkCpB,EACpC,mBACI,MAAMqB,EAAU/kB,SAASiK,OACnB+a,EAAY,GAUlB,OATAD,EAAQ7a,MAAM,KAAKV,QAAQS,IACvB,GAAIA,EAAO3L,QAAU,EACjB,OAEJ,IAAKsF,EAAKN,GAAS2G,EAAOiH,QAAQ,IAAK,cAAchH,MAAM,cAC3DtG,EAAMuM,EAAOvM,GAAK0N,OAClBhO,EAAQ6M,EAAO7M,GAAOgO,OACtB0T,EAAUphB,GAAON,IAEd0hB,EAEX,gBAAgBna,GACZ,IAEI,MAAMoa,EAAaP,EAAO7Z,EAAQjH,KAC5BshB,EAAeR,EAAO7Z,EAAQvH,OAE9B6hB,EAAU,cAActa,EAAQsa,SAAW,IAAIjU,QAAQ,WAAY,IACnEwG,GAAQ7M,EAAQ6M,MAAQ,KAAKxG,QAAQ,QAAS,IAC9CkU,EAAwB,MAAfva,EAAQqB,KAAerB,EAAQqB,IAAI5N,OAAS,EACrD,UAAUuM,EAAQqB,IAClB,GACNlM,SAASiK,OAAS,GAAGgb,KAAcC,GAAgB,KAAKC,WAAiBzN,MAAS0N,KAEtF,MAAOpjB,GACH,OAAOvC,QAAQE,OAAOqC,IAG9B,mBAAmB6I,GACf,IACI7K,SAASiK,OAAYY,EAAQjH,IAAX,eAEtB,MAAO5B,GACH,OAAOvC,QAAQE,OAAOqC,IAG9B,qBACI,IACI,MAAM+iB,EAAU/kB,SAASiK,OAAOC,MAAM,MAAQ,GAC9C,IAAK,MAAMD,KAAU8a,EACjB/kB,SAASiK,OAASA,EACbiH,QAAQ,MAAO,IACfA,QAAQ,MAAO,cAAa,IAAIC,MAAOkU,wBAGpD,MAAOrjB,GACH,OAAOvC,QAAQE,OAAOqC,IAG9B,wBACI,UACUiD,KAAKqgB,eAEf,MAAOtjB,GACH,OAAOvC,QAAQE,OAAOqC,KAITuf,EAAe,mBAAoB,CACxDgE,IAAK,IAAM,IAAIT,IADnB,MAoEMU,EAAmB,CAAC3a,EAAS4a,EAAQ,MACvC,MAAMC,EAASnnB,OAAO6G,OAAO,CAAEiD,OAAQwC,EAAQxC,QAAU,MAAOD,QAASyC,EAAQzC,SAAWqd,GAGtFhlB,EAhDmB,EAAC2H,EAAU,MACpC,MAAMud,EAAepnB,OAAOkS,KAAKrI,GAMjC,OALoB7J,OAAOkS,KAAKrI,GAASyF,IAAI+X,GAAKA,EAAEtK,qBACrB8B,OAAO,CAACyI,EAAKjiB,EAAK4gB,KAC7CqB,EAAIjiB,GAAOwE,EAAQud,EAAanB,IACzBqB,GACR,KAyCaC,CAAqBjb,EAAQzC,SACxB,iBAAmB,GAExC,GAA4B,iBAAjByC,EAAQ9M,KACf2nB,EAAOjf,KAAOoE,EAAQ9M,UAGrB,GAAI0C,EAAKslB,SAAS,qCAAsC,CACzD,MAAMC,EAAS,IAAIvW,gBACnB,IAAK,MAAO7L,EAAKN,KAAU/E,OAAOoS,QAAQ9F,EAAQ9M,MAAQ,IACtDioB,EAAOjX,IAAInL,EAAKN,GAEpBoiB,EAAOjf,KAAOuf,EAAO3Y,gBAEpB,GAAI5M,EAAKslB,SAAS,uBAAwB,CAC3C,MAAM1U,EAAO,IAAI9B,SACjB,GAAI1E,EAAQ9M,gBAAgBwR,SACxB1E,EAAQ9M,KAAKyL,QAAQ,CAAClG,EAAOM,KACzByN,EAAKvD,OAAOlK,EAAKN,UAIrB,IAAK,MAAMM,KAAOrF,OAAOkS,KAAK5F,EAAQ9M,MAClCsT,EAAKvD,OAAOlK,EAAKiH,EAAQ9M,KAAK6F,IAGtC8hB,EAAOjf,KAAO4K,EACd,MAAMjJ,EAAU,IAAIwF,QAAQ8X,EAAOtd,SACnCA,EAAQ6d,OAAO,gBACfP,EAAOtd,QAAUA,OAEZ3H,EAAKslB,SAAS,qBACK,iBAAjBlb,EAAQ9M,QACf2nB,EAAOjf,KAAOyC,KAAKC,UAAU0B,EAAQ9M,OAEzC,OAAO2nB,GAGX,MAAMQ,UAA+BxC,EAKjC,cAAc7Y,GACV,MAAMsb,EAAcX,EAAiB3a,EAASA,EAAQub,eAChDC,EA9ES,EAACL,EAAQM,GAAe,KAC3C,IAAKN,EACD,OAAO,KAqBX,OApBeznB,OAAOoS,QAAQqV,GAAQ5I,OAAO,CAACmJ,EAAaC,KACvD,MAAO5iB,EAAKN,GAASkjB,EACrB,IAAItB,EACAuB,EAcJ,OAbI7hB,MAAMmJ,QAAQzK,IACdmjB,EAAO,GACPnjB,EAAMkG,QAAQmb,IACVO,EAAeoB,EAAe1B,mBAAmBD,GAAOA,EACxD8B,GAAQ,GAAG7iB,KAAOshB,OAGtBuB,EAAKniB,MAAM,GAAI,KAGf4gB,EAAeoB,EAAe1B,mBAAmBthB,GAASA,EAC1DmjB,EAAO,GAAG7iB,KAAOshB,KAEd,GAAGqB,KAAeE,KAC1B,IAEWC,OAAO,IAuDCC,CAAe9b,EAAQmb,OAAQnb,EAAQ+b,uBACnD1a,EAAMma,EAAY,GAAGxb,EAAQqB,OAAOma,IAAcxb,EAAQqB,IAC1D3B,QAAiB6B,MAAMF,EAAKia,GAC5BU,EAActc,EAASnC,QAAQlF,IAAI,iBAAmB,GAE5D,IAKInF,EACAwQ,GANA,aAAEwE,EAAe,QAAWxI,EAASC,GAAKK,EAAU,GAOxD,OALIgc,EAAYd,SAAS,sBACrBhT,EAAe,QAIXA,GACJ,IAAK,cACL,IAAK,OACDxE,QAAahE,EAASgE,OACtBxQ,OA5HSkkB,OAAO1T,GAAS,IAAI9O,QAAQ,CAACC,EAASC,KAC3D,MAAM0O,EAAS,IAAIG,WACnBH,EAAO3N,OAAS,KACZ,MAAMomB,EAAezY,EAAO/H,OAE5B5G,EAAQonB,EAAazc,QAAQ,MAAQ,EAC/Byc,EAAa5c,MAAM,KAAK,GACxB4c,IAEVzY,EAAO1N,QAAWqB,GAAUrC,EAAOqC,GACnCqM,EAAO0Y,cAAcxY,KAkHIyY,CAAiBzY,GAC9B,MACJ,IAAK,OACDxQ,QAAawM,EAAS6F,OACtB,MACJ,IAAK,WACL,IAAK,OACL,QACIrS,QAAawM,EAASZ,OAG9B,MAAMvB,EAAU,GAIhB,OAHAmC,EAASnC,QAAQoB,QAAQ,CAAClG,EAAOM,KAC7BwE,EAAQxE,GAAON,IAEZ,CACHvF,OACAqK,UACAqC,OAAQF,EAASE,OACjByB,IAAK3B,EAAS2B,KAOtB,UAAUrB,GACN,OAAO5F,KAAKpE,QAAQtC,OAAO6G,OAAO7G,OAAO6G,OAAO,GAAIyF,GAAU,CAAExC,OAAQ,SAM5E,WAAWwC,GACP,OAAO5F,KAAKpE,QAAQtC,OAAO6G,OAAO7G,OAAO6G,OAAO,GAAIyF,GAAU,CAAExC,OAAQ,UAM5E,UAAUwC,GACN,OAAO5F,KAAKpE,QAAQtC,OAAO6G,OAAO7G,OAAO6G,OAAO,GAAIyF,GAAU,CAAExC,OAAQ,SAM5E,YAAYwC,GACR,OAAO5F,KAAKpE,QAAQtC,OAAO6G,OAAO7G,OAAO6G,OAAO,GAAIyF,GAAU,CAAExC,OAAQ,WAM5E,aAAawC,GACT,OAAO5F,KAAKpE,QAAQtC,OAAO6G,OAAO7G,OAAO6G,OAAO,GAAIyF,GAAU,CAAExC,OAAQ,aAG1DkZ,EAAe,gBAAiB,CAClDgE,IAAK,IAAM,IAAIW,M,0HCnmBPe,E,8BAtDL,aAMH,wBAFQ,KAAAC,YAAc,IAAI,IAGtBjiB,KAAKkiB,YAAcliB,KAAKmiB,eACxB5kB,YAAW,+F,uBAAY,SAAMyC,KAAKkiB,a,OAAX,6B,MAuC/B,O,EA/CaE,EAUT,sBAAW,aAAQ,C,IAAnB,WAAwB,OAAO,EAAoB/S,W,gCAErC,YAAA8S,aAAd,W,2HACuB,OAAnB,EAAAniB,KAAmB,GAAM,IAASoT,SAAS,qB,cAA3C,EAAKiP,YAAc,SACnB,IAASrU,iBAAiB,oBAAoB,SAAOrS,GAAuB,+C,4CACxEqE,KAAKqiB,YAAc1mB,EAAM2mB,OACzBtiB,KAAKyP,KAAK,UAAWzP,KAAKqiB,a,yBAI3B,YAAArU,iBAAP,SAAmExS,EAASmZ,EAAoE/O,GAC5I,OAAO5F,KAAKiiB,YAAYjU,iBAAiBxS,EAAMmZ,EAAU/O,IAGtD,YAAAuI,oBAAP,SAAsE3S,EAASmZ,EAAoE/O,GAC/I,OAAO5F,KAAKiiB,YAAY9T,oBAAoB3S,EAAMmZ,EAAU/O,IAGxD,YAAA6J,KAAR,SAA4EjU,EAAS6C,G,MACjF,OAAO2B,KAAKiiB,YAAYM,cAAc,IAAIC,YAAYhnB,EAAM,CAAE8mB,OAAShpB,OAAO6G,OAAO,GAAI9B,GAAK,KAAI,EAAC,KAAY,EAAoB,KAAS,QAGnI,YAAAokB,MAAb,SAAmBC,G,8GACf,SAAM1iB,KAAKkiB,a,OACX,OADA,SACO,CAAP,EAAOQ,KAAU1iB,KAAKqiB,YAAYM,MAAQD,YAGjC,YAAAzkB,IAAb,SAAoBZ,EAAculB,G,oHAC9B,SAAM5iB,KAAKkiB,a,OAIX,GAJA,SAEMW,EAAa7iB,KAAKqiB,YAAYhlB,GAEhCulB,QAAiCtlB,IAAfulB,EAClB,MAAM,IAAI7mB,MAAM,UAAGqB,EAAI,mCAE3B,MAAO,CAAP,EAAOwlB,WA1CI,EAAAxT,UAAY,IAAI,EAHtB+S,EAAmB,eAD/B,YAAc,wBACFA,GAAN,IAsDP,SAAYJ,GAER,mBACA,2CACA,iCACA,iCACA,iCACA,gCACA,wEACA,kCACA,uCACA,qCACA,6BACA,gCAbJ,CAAYA,MAAkB,M,gCC9D9B5nB,EAAOD,QAAU,EAAQ,GAAR,GAAgCugB,WAAa,EAAQ,K,gCCAtE,IAAIoI,EAAkB,EAAQ,IAC1BC,EAAkB,EAAQ,IAC1B5iB,EAAkB,EAAQ,IAC1B6iB,EAAkB,EAAQ,IAC1BC,EAAkB,EAAQ,KAErB7oB,EAAOD,QAAU,SAAU+oB,EAAM7kB,GACzC,IAAIV,EAAGrD,EAAG6oB,EAAGvd,EAASpF,EAkBtB,OAjBIJ,UAAU/G,OAAS,GAAqB,iBAAT6pB,GAClCtd,EAAUvH,EACVA,EAAQ6kB,EACRA,EAAO,MAEPtd,EAAUxF,UAAU,GAEjB0iB,EAAQI,IACXvlB,EAAIslB,EAASxpB,KAAKypB,EAAM,KACxB5oB,EAAI2oB,EAASxpB,KAAKypB,EAAM,KACxBC,EAAIF,EAASxpB,KAAKypB,EAAM,OAExBvlB,EAAIwlB,GAAI,EACR7oB,GAAI,GAGLkG,EAAO,CAAEnC,MAAOA,EAAOkW,aAAc5W,EAAGK,WAAY1D,EAAGka,SAAU2O,GACzDvd,EAAiBzF,EAAO6iB,EAAcpd,GAAUpF,GAAtCA,IAGjB4iB,GAAK,SAAUF,EAAMjlB,EAAK6L,GAC3B,IAAInM,EAAGrD,EAAGsL,EAASpF,EA6BnB,MA5BoB,iBAAT0iB,GACVtd,EAAUkE,EACVA,EAAM7L,EACNA,EAAMilB,EACNA,EAAO,MAEPtd,EAAUxF,UAAU,GAEhB0iB,EAAQ7kB,GAED8kB,EAAgB9kB,GAGhB6kB,EAAQhZ,GAERiZ,EAAgBjZ,KAC3BlE,EAAUkE,EACVA,OAAMxM,GAHNwM,OAAMxM,GAHNsI,EAAU3H,EACVA,EAAM6L,OAAMxM,GAHZW,OAAMX,EAUHwlB,EAAQI,IACXvlB,EAAIslB,EAASxpB,KAAKypB,EAAM,KACxB5oB,EAAI2oB,EAASxpB,KAAKypB,EAAM,OAExBvlB,GAAI,EACJrD,GAAI,GAGLkG,EAAO,CAAEvC,IAAKA,EAAK6L,IAAKA,EAAKyK,aAAc5W,EAAGK,WAAY1D,GAClDsL,EAAiBzF,EAAO6iB,EAAcpd,GAAUpF,GAAtCA,I,gCCrCnB,IAOI6iB,EAPAC,EAAuB,iBAAZ5iB,QAAuBA,QAAU,KAC5C6iB,EAAeD,GAAwB,mBAAZA,EAAEjjB,MAC7BijB,EAAEjjB,MACF,SAAsBxE,EAAQ2nB,EAAUzL,GACxC,OAAO0L,SAASlqB,UAAU8G,MAAM5G,KAAKoC,EAAQ2nB,EAAUzL,IAKzDsL,EADEC,GAA0B,mBAAdA,EAAEI,QACCJ,EAAEI,QACVpqB,OAAOqqB,sBACC,SAAwB9nB,GACvC,OAAOvC,OAAO0P,oBAAoBnN,GAC/BgH,OAAOvJ,OAAOqqB,sBAAsB9nB,KAGxB,SAAwBA,GACvC,OAAOvC,OAAO0P,oBAAoBnN,IAQtC,IAAI+nB,EAAcC,OAAOC,OAAS,SAAqBzlB,GACrD,OAAOA,GAAUA,GAGnB,SAAS0lB,IACPA,EAAa/c,KAAKvN,KAAKuG,MAEzB5F,EAAOD,QAAU4pB,EAGjBA,EAAaA,aAAeA,EAE5BA,EAAaxqB,UAAUyqB,aAAU1mB,EACjCymB,EAAaxqB,UAAU0qB,aAAe,EACtCF,EAAaxqB,UAAU2qB,mBAAgB5mB,EAIvC,IAAI6mB,EAAsB,GAE1B,SAASC,EAAczP,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAI9U,UAAU,0EAA4E8U,GAsCpG,SAAS0P,EAAiBC,GACxB,YAA2BhnB,IAAvBgnB,EAAKJ,cACAH,EAAaI,oBACfG,EAAKJ,cAmDd,SAASK,EAAa1oB,EAAQL,EAAMmZ,EAAU6P,GAC5C,IAAI9mB,EACA+mB,EACAC,EAzHsBC,EA+I1B,GApBAP,EAAczP,QAGCrX,KADfmnB,EAAS5oB,EAAOmoB,UAEdS,EAAS5oB,EAAOmoB,QAAU1qB,OAAOoF,OAAO,MACxC7C,EAAOooB,aAAe,SAIK3mB,IAAvBmnB,EAAOG,cACT/oB,EAAO4T,KAAK,cAAejU,EACfmZ,EAASA,SAAWA,EAASA,SAAWA,GAIpD8P,EAAS5oB,EAAOmoB,SAElBU,EAAWD,EAAOjpB,SAGH8B,IAAbonB,EAEFA,EAAWD,EAAOjpB,GAAQmZ,IACxB9Y,EAAOooB,kBAeT,GAbwB,mBAAbS,EAETA,EAAWD,EAAOjpB,GAChBgpB,EAAU,CAAC7P,EAAU+P,GAAY,CAACA,EAAU/P,GAErC6P,EACTE,EAASG,QAAQlQ,GAEjB+P,EAAS/qB,KAAKgb,IAIhBjX,EAAI2mB,EAAiBxoB,IACb,GAAK6oB,EAASrrB,OAASqE,IAAMgnB,EAASI,OAAQ,CACpDJ,EAASI,QAAS,EAGlB,IAAI3B,EAAI,IAAInnB,MAAM,+CACE0oB,EAASrrB,OAAS,IAAMyG,OAAOtE,GADjC,qEAIlB2nB,EAAE9lB,KAAO,8BACT8lB,EAAE4B,QAAUlpB,EACZsnB,EAAE3nB,KAAOA,EACT2nB,EAAE6B,MAAQN,EAASrrB,OA5KGsrB,EA6KHxB,EA5KnBlkB,SAAWA,QAAQwd,MAAMxd,QAAQwd,KAAKkI,GAgL1C,OAAO9oB,EAcT,SAASopB,IACP,IAAKjlB,KAAKklB,MAGR,OAFAllB,KAAKnE,OAAOgU,eAAe7P,KAAKxE,KAAMwE,KAAKmlB,QAC3CnlB,KAAKklB,OAAQ,EACY,IAArB9kB,UAAU/G,OACL2G,KAAK2U,SAASlb,KAAKuG,KAAKnE,QAC1BmE,KAAK2U,SAAStU,MAAML,KAAKnE,OAAQuE,WAI5C,SAASglB,EAAUvpB,EAAQL,EAAMmZ,GAC/B,IAAI0Q,EAAQ,CAAEH,OAAO,EAAOC,YAAQ7nB,EAAWzB,OAAQA,EAAQL,KAAMA,EAAMmZ,SAAUA,GACjF2Q,EAAUL,EAAYrmB,KAAKymB,GAG/B,OAFAC,EAAQ3Q,SAAWA,EACnB0Q,EAAMF,OAASG,EACRA,EA0HT,SAASC,EAAW1pB,EAAQL,EAAMgqB,GAChC,IAAIf,EAAS5oB,EAAOmoB,QAEpB,QAAe1mB,IAAXmnB,EACF,MAAO,GAET,IAAIgB,EAAahB,EAAOjpB,GACxB,YAAmB8B,IAAfmoB,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAW9Q,UAAY8Q,GAAc,CAACA,GAElDD,EAsDT,SAAyBE,GAEvB,IADA,IAAIC,EAAM,IAAIhmB,MAAM+lB,EAAIrsB,QACfF,EAAI,EAAGA,EAAIwsB,EAAItsB,SAAUF,EAChCwsB,EAAIxsB,GAAKusB,EAAIvsB,GAAGwb,UAAY+Q,EAAIvsB,GAElC,OAAOwsB,EA1DLC,CAAgBH,GAAcI,EAAWJ,EAAYA,EAAWpsB,QAoBpE,SAASysB,EAActqB,GACrB,IAAIipB,EAASzkB,KAAKgkB,QAElB,QAAe1mB,IAAXmnB,EAAsB,CACxB,IAAIgB,EAAahB,EAAOjpB,GAExB,GAA0B,mBAAfiqB,EACT,OAAO,EACF,QAAmBnoB,IAAfmoB,EACT,OAAOA,EAAWpsB,OAItB,OAAO,EAOT,SAASwsB,EAAWH,EAAK7mB,GAEvB,IADA,IAAIknB,EAAO,IAAIpmB,MAAMd,GACZ1F,EAAI,EAAGA,EAAI0F,IAAK1F,EACvB4sB,EAAK5sB,GAAKusB,EAAIvsB,GAChB,OAAO4sB,EApWTzsB,OAAOyE,eAAegmB,EAAc,sBAAuB,CACzD/lB,YAAY,EACZC,IAAK,WACH,OAAOkmB,GAETra,IAAK,SAASkc,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKpC,EAAYoC,GACpD,MAAM,IAAInZ,WAAW,kGAAoGmZ,EAAM,KAEjI7B,EAAsB6B,KAI1BjC,EAAa/c,KAAO,gBAEG1J,IAAjB0C,KAAKgkB,SACLhkB,KAAKgkB,UAAY1qB,OAAO2sB,eAAejmB,MAAMgkB,UAC/ChkB,KAAKgkB,QAAU1qB,OAAOoF,OAAO,MAC7BsB,KAAKikB,aAAe,GAGtBjkB,KAAKkkB,cAAgBlkB,KAAKkkB,oBAAiB5mB,GAK7CymB,EAAaxqB,UAAU2sB,gBAAkB,SAAyBrnB,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAK+kB,EAAY/kB,GAChD,MAAM,IAAIgO,WAAW,gFAAkFhO,EAAI,KAG7G,OADAmB,KAAKkkB,cAAgBrlB,EACdmB,MAST+jB,EAAaxqB,UAAU4sB,gBAAkB,WACvC,OAAO9B,EAAiBrkB,OAG1B+jB,EAAaxqB,UAAUkW,KAAO,SAAcjU,GAE1C,IADA,IAAIuc,EAAO,GACF5e,EAAI,EAAGA,EAAIiH,UAAU/G,OAAQF,IAAK4e,EAAKpe,KAAKyG,UAAUjH,IAC/D,IAAIitB,EAAoB,UAAT5qB,EAEXipB,EAASzkB,KAAKgkB,QAClB,QAAe1mB,IAAXmnB,EACF2B,EAAWA,QAA4B9oB,IAAjBmnB,EAAO1nB,WAC1B,IAAKqpB,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFItO,EAAK1e,OAAS,IAChBgtB,EAAKtO,EAAK,IACRsO,aAAcrqB,MAGhB,MAAMqqB,EAGR,IAAItqB,EAAM,IAAIC,MAAM,oBAAsBqqB,EAAK,KAAOA,EAAGjpB,QAAU,IAAM,KAEzE,MADArB,EAAIyT,QAAU6W,EACRtqB,EAGR,IAAIojB,EAAUsF,EAAOjpB,GAErB,QAAgB8B,IAAZ6hB,EACF,OAAO,EAET,GAAuB,mBAAZA,EACToE,EAAapE,EAASnf,KAAM+X,OAE5B,KAAIuO,EAAMnH,EAAQ9lB,OACdyb,EAAY+Q,EAAW1G,EAASmH,GACpC,IAASntB,EAAI,EAAGA,EAAImtB,IAAOntB,EACzBoqB,EAAazO,EAAU3b,GAAI6G,KAAM+X,GAGrC,OAAO,GAiETgM,EAAaxqB,UAAUmkB,YAAc,SAAqBliB,EAAMmZ,GAC9D,OAAO4P,EAAavkB,KAAMxE,EAAMmZ,GAAU,IAG5CoP,EAAaxqB,UAAUoW,GAAKoU,EAAaxqB,UAAUmkB,YAEnDqG,EAAaxqB,UAAUgtB,gBACnB,SAAyB/qB,EAAMmZ,GAC7B,OAAO4P,EAAavkB,KAAMxE,EAAMmZ,GAAU,IAqBhDoP,EAAaxqB,UAAU+W,KAAO,SAAc9U,EAAMmZ,GAGhD,OAFAyP,EAAczP,GACd3U,KAAK2P,GAAGnU,EAAM4pB,EAAUplB,KAAMxE,EAAMmZ,IAC7B3U,MAGT+jB,EAAaxqB,UAAUitB,oBACnB,SAA6BhrB,EAAMmZ,GAGjC,OAFAyP,EAAczP,GACd3U,KAAKumB,gBAAgB/qB,EAAM4pB,EAAUplB,KAAMxE,EAAMmZ,IAC1C3U,MAIb+jB,EAAaxqB,UAAUsW,eACnB,SAAwBrU,EAAMmZ,GAC5B,IAAI8R,EAAMhC,EAAQ1U,EAAU5W,EAAGutB,EAK/B,GAHAtC,EAAczP,QAGCrX,KADfmnB,EAASzkB,KAAKgkB,SAEZ,OAAOhkB,KAGT,QAAa1C,KADbmpB,EAAOhC,EAAOjpB,IAEZ,OAAOwE,KAET,GAAIymB,IAAS9R,GAAY8R,EAAK9R,WAAaA,EACb,KAAtB3U,KAAKikB,aACTjkB,KAAKgkB,QAAU1qB,OAAOoF,OAAO,cAEtB+lB,EAAOjpB,GACVipB,EAAO5U,gBACT7P,KAAKyP,KAAK,iBAAkBjU,EAAMirB,EAAK9R,UAAYA,SAElD,GAAoB,mBAAT8R,EAAqB,CAGrC,IAFA1W,GAAY,EAEP5W,EAAIstB,EAAKptB,OAAS,EAAGF,GAAK,EAAGA,IAChC,GAAIstB,EAAKttB,KAAOwb,GAAY8R,EAAKttB,GAAGwb,WAAaA,EAAU,CACzD+R,EAAmBD,EAAKttB,GAAGwb,SAC3B5E,EAAW5W,EACX,MAIJ,GAAI4W,EAAW,EACb,OAAO/P,KAEQ,IAAb+P,EACF0W,EAAK3sB,QAiIf,SAAmB2sB,EAAMlH,GACvB,KAAOA,EAAQ,EAAIkH,EAAKptB,OAAQkmB,IAC9BkH,EAAKlH,GAASkH,EAAKlH,EAAQ,GAC7BkH,EAAKpkB,MAlIGskB,CAAUF,EAAM1W,GAGE,IAAhB0W,EAAKptB,SACPorB,EAAOjpB,GAAQirB,EAAK,SAEQnpB,IAA1BmnB,EAAO5U,gBACT7P,KAAKyP,KAAK,iBAAkBjU,EAAMkrB,GAAoB/R,GAG1D,OAAO3U,MAGb+jB,EAAaxqB,UAAUqtB,IAAM7C,EAAaxqB,UAAUsW,eAEpDkU,EAAaxqB,UAAUstB,mBACnB,SAA4BrrB,GAC1B,IAAIsZ,EAAW2P,EAAQtrB,EAGvB,QAAemE,KADfmnB,EAASzkB,KAAKgkB,SAEZ,OAAOhkB,KAGT,QAA8B1C,IAA1BmnB,EAAO5U,eAUT,OATyB,IAArBzP,UAAU/G,QACZ2G,KAAKgkB,QAAU1qB,OAAOoF,OAAO,MAC7BsB,KAAKikB,aAAe,QACM3mB,IAAjBmnB,EAAOjpB,KACY,KAAtBwE,KAAKikB,aACTjkB,KAAKgkB,QAAU1qB,OAAOoF,OAAO,aAEtB+lB,EAAOjpB,IAEXwE,KAIT,GAAyB,IAArBI,UAAU/G,OAAc,CAC1B,IACIsF,EADA6M,EAAOlS,OAAOkS,KAAKiZ,GAEvB,IAAKtrB,EAAI,EAAGA,EAAIqS,EAAKnS,SAAUF,EAEjB,oBADZwF,EAAM6M,EAAKrS,KAEX6G,KAAK6mB,mBAAmBloB,GAK1B,OAHAqB,KAAK6mB,mBAAmB,kBACxB7mB,KAAKgkB,QAAU1qB,OAAOoF,OAAO,MAC7BsB,KAAKikB,aAAe,EACbjkB,KAKT,GAAyB,mBAFzB8U,EAAY2P,EAAOjpB,IAGjBwE,KAAK6P,eAAerU,EAAMsZ,QACrB,QAAkBxX,IAAdwX,EAET,IAAK3b,EAAI2b,EAAUzb,OAAS,EAAGF,GAAK,EAAGA,IACrC6G,KAAK6P,eAAerU,EAAMsZ,EAAU3b,IAIxC,OAAO6G,MAoBb+jB,EAAaxqB,UAAUub,UAAY,SAAmBtZ,GACpD,OAAO+pB,EAAWvlB,KAAMxE,GAAM,IAGhCuoB,EAAaxqB,UAAUutB,aAAe,SAAsBtrB,GAC1D,OAAO+pB,EAAWvlB,KAAMxE,GAAM,IAGhCuoB,EAAa+B,cAAgB,SAASf,EAASvpB,GAC7C,MAAqC,mBAA1BupB,EAAQe,cACVf,EAAQe,cAActqB,GAEtBsqB,EAAcrsB,KAAKsrB,EAASvpB,IAIvCuoB,EAAaxqB,UAAUusB,cAAgBA,EAiBvC/B,EAAaxqB,UAAUwtB,WAAa,WAClC,OAAO/mB,KAAKikB,aAAe,EAAIZ,EAAerjB,KAAKgkB,SAAW,K,iBCvahE,IAAIriB,EAGJA,EAAI,WACH,OAAO3B,KADJ,GAIJ,IAEC2B,EAAIA,GAAK,IAAI8hB,SAAS,cAAb,GACR,MAAOnpB,GAEc,iBAAX6E,SAAqBwC,EAAIxC,QAOrC/E,EAAOD,QAAUwH,G,uGCdLqlB,E,qCAAZ,SAAYA,GACR,6BACA,2BACA,2BACA,6BAJJ,CAAYA,MAAiB,KAkBtB,kBAkBH,mBACI,cAAO,K,OAfH,EAAAC,eAAiB9nB,OAAO0G,UAAyC,UAA7B1G,OAAO0G,SAAS4L,UAAqD,cAA7BtS,OAAO0G,SAASsP,SAsF5F,EAAA+R,QAAmB,GArEvB,EAAKhB,gBAAgB,KAErB3oB,YAAW,WAAM,SAAK4pB,WAGtB,EAAKC,eAEL7pB,YAAW,0D,4DACP,SAAM,IAAImR,S,OACV,OADA,SACA,GAAM,IAAM7H,KAAK,K,cAAjB,SACA7G,KAAKqnB,aAAa/R,OAAS0R,EAAkBM,SAC7CtnB,KAAKunB,iBAAkBvnB,KAAKqnB,aAAcxU,EAAQ2U,W,cAItDroB,OAAO6O,iBAAiB,YAAY,SAACrS,GACjC,GAAKA,EAAM0pB,MAAX,CAGA,IAAMtS,EAAQ,EAAK3H,MAAMzP,EAAM0pB,OAC3BtS,IAEA,EAAKsU,aAAetU,EACpB,EAAKwU,iBAAkB,EAAKF,mBAIpCloB,OAAO6O,iBAAiB,WAAW,SAAOrS,GAAoB,+C,4CACtDA,EAAM8rB,QAAyB,MAAd9rB,EAAMgD,KAAiC,KAAlBhD,EAAMiT,SAC5C5O,KAAK0nB,S,aAIbvoB,OAAO6O,iBAAiB,cAAc,SAACrS,GACnCA,EAAMgsB,iBACN,EAAKD,YAGT3sB,SAASiT,iBAAiB,SAAS,SAAArS,GAC/B,IAEI,IAAME,EAAuBF,EAAME,QAAUF,EAAMoZ,cAEnD,IAAKlZ,EACD,OAEJ,IAAMkX,EAAQlX,EAAO+rB,QAAQ,WAE7B,GAAI7U,EAAO,CAEP,IAMM9L,GALF8L,EAAM8U,aAAa,QACZ9U,EAEAA,EAAMzD,cAAc,YAEdnU,aAAa,QAC9B,EAAK2sB,GAAG7gB,EAAK,UAAG4L,EAAQ2U,UAAS,kBACjC7rB,EAAMgsB,kBAGd,MAAMrtB,GACF2E,QAAQ8oB,IAAIztB,O,EA0I5B,OA7N6B,iBAMX,EAAA0tB,WAAd,WACI,MAAO,CAAEvV,KAAM,GAAIwV,WAAY,KAGrB,YAAAd,MAAd,W,8GACI,SAAM,IAAIzY,S,cAAV,UAE6C,IAAzCvP,OAAO0G,SAASlL,KAAKyK,QAAQ,QAAiBjG,OAAO+nB,SAAW/nB,OAAO+nB,QAAQgB,cAC/EhB,QAAQgB,kBAAa5qB,OAAWA,EAAW6B,OAAO0G,SAASlL,KAAKsR,QAAQ,MAAO,M,YA8EhF,YAAAkc,QAAP,SAAelhB,EAAagF,QAAA,IAAAA,OAAA,GAEnBjM,KAAKinB,gBAONjnB,KAAKknB,QAAQvtB,KAAKsN,GAClB9H,OAAO0G,SAASuiB,KAAO,IAPnBnc,EACA9M,OAAO+nB,QAAQgB,aAAajhB,EAAKA,EAAKA,GAEtC9H,OAAO+nB,QAAQmB,UAAUphB,EAAKA,EAAKA,GAO3CjH,KAAKqnB,aAAernB,KAAKoL,MAAMnE,IAG5B,YAAA6gB,GAAP,SAAU7gB,EAAaqhB,QAAA,IAAAA,MAAA,WACnBtoB,KAAKmoB,QAAQlhB,GACbjH,KAAKunB,iBAAkBvnB,KAAKqnB,aAAciB,IAGvC,YAAArc,QAAP,SAAehF,GACXjH,KAAKmoB,QAAQlhB,GAAK,GAClBjH,KAAKunB,iBAAkBvnB,KAAKqnB,eAGzB,YAAAkB,QAAP,WACIvoB,KAAKunB,iBAAkBvnB,KAAKqnB,eAGzB,YAAAK,OAAP,WAII,GAHI1nB,KAAKknB,QAAQ7tB,OAAS,GACtB2G,KAAKknB,QAAQ7kB,MAEbrC,KAAKknB,QAAQ7tB,OAAS,EAAG,CACzB,IAAMmvB,EAAUxoB,KAAKknB,QAAQlnB,KAAKknB,QAAQ7tB,OAAO,GAIjD,OAFA2G,KAAKqnB,aAAernB,KAAKoL,MAAMod,GAC/BxoB,KAAKunB,iBAAkBvnB,KAAKqnB,eACrB,EAEP,OAAO,GAIf,sBAAI,oBAAK,C,IAAT,WACI,OAAOrnB,KAAKqnB,c,gCAGR,YAAAE,iBAAR,SAAyBxU,EAAeuV,QAAA,IAAAA,MAAA,WACpCtoB,KAAKyP,KAAK,eAAgBsD,EAAOuV,IAGrC,YAAAxV,SAAA,SAASvH,GACLvL,KAAK2P,GAAG,eAAgBpE,IAG5B,YAAAkd,UAAA,SAAUld,GACNvL,KAAK6P,eAAe,eAAgBtE,IAIxC,sBAAW,aAAQ,C,IAAnB,WACI,OAAOsH,EAAQxD,W,gCAEX,YAAA+X,aAAR,WACQpnB,KAAKinB,eACLjnB,KAAKqnB,aAAexU,EAAQmV,aAE5BhoB,KAAKqnB,aAAernB,KAAKoL,MAAMjM,OAAO0G,SAASlL,OAGhD,YAAA+tB,QAAP,SAAezhB,GACX,OAAOjH,KAAK2oB,QAAQ1hB,EAAKjH,KAAKqnB,eAG3B,YAAAsB,QAAP,SAAe1hB,EAAa8L,G,QAClB6V,EAAS5oB,KAAKoL,MAAMnE,GAEtB0Q,EAAM,E,IACV,IAAmB,kBAAAiR,EAAOnW,MAAI,8BAAE,CAA3B,IAAMoW,EAAI,QACLC,EAAY/V,EAAMN,KAAKkF,GAG7B,GAFAA,KAEa,OAATkR,IAAiBC,GAA8B,MAAjBA,EAAU,MAG/B,MAATD,GAAiBC,MAGR,MAATD,GAAgBC,GAGfA,GAAaD,IAASC,GACvB,OAAO,G,iGAGf,OAAO,GAGJ,YAAA1d,MAAP,SAAanE,GACT,IAAM2hB,EAAS,IAAIG,IAAI9hB,EAAK,oBAEvB2hB,GACD3pB,QAAQ8oB,IAAI,kBAAmB9gB,GAER,MAAvB2hB,EAAOxS,SAAS,KAChBwS,EAAOxS,SAAWwS,EAAOxS,SAASjR,UAAU,IAEhD,IAAMsN,EAAOmW,EAAOxS,SAASnR,MAAM,KAAKkK,QAAO,SAAAhW,GAAK,MAAM,KAANA,KAE9C8uB,EAAa,GAgBnB,OAfAW,EAAOzP,OAAOhU,UAAU,GAAGF,MAAM,KAAKV,SAAQ,SAAAykB,GAC1C,GAAKA,EAAL,CAGA,IAAM1b,EAAQ0b,EAAU/jB,MAAM,KAC9BgjB,EAAW3a,EAAM,IAAMA,EAAMjU,OAAS,EAAIkT,mBAAmBe,EAAM,GAAGrB,QAAQ,MAAO,QAAU,OAGpF,CACXwG,KAAMA,EACNwV,WAAYA,EACZG,KAAMQ,EAAOR,OAtNN,EAAA/Y,UAAY,IAAIwD,EACjB,EAAA2U,UAAY,UA2N9B,EA7NO,CAAsB,iB,gCCrB7B,IAAIyB,EAAa,EAAQ,GAAR,GAEjB7uB,EAAOD,QAAU,SAAU+uB,GAAO,OAAOA,IAAQD,GAAsB,OAARC,I,gCCJ/D,kCAAO,iBAAP,cAyCA,OAvCW,EAAAC,eAAP,WACI,IAAMvrB,EAAI7C,SACNsJ,EAAOzG,EAAErC,cAAc,SAQ3B,OAPAqC,EAAE4D,KAAKpF,YAAYiI,GAETA,EAAM+kB,eACZ/kB,EAAaA,EAAM+kB,aAAa,CAAE7qB,KAAM,UAE5C8F,EAAKoM,UAAY4Y,EAAQC,sBAELjlB,EAAKiL,cAAc,QAGpC,EAAAga,oBAAsB,WAAM,4oBA0BvC,EAzCO,I,gCCAP,sDAMA,GANA,cAMA,uE,OAuBc,EAAArY,WAAa,SAACsY,GAAwB,UAItC,EAAAC,QAAU,WAAM,qDACO,EAAQ,KAAuD,0BAGxF,EAAA7f,KAAO,SAAC4f,GAAwB,iCAClC,EAAKC,UAAS,yFAE+C7J,mBAAmB,EAAK8J,UAAUza,KAAKua,EAAWva,MAAQ,EAAKya,UAAUza,KAAKua,EAAWva,MAAQua,EAAWva,MAAK,wHAMtKua,EAAWlsB,KAAI,8BACnBksB,EAAWG,QAAU,+BAAwBH,EAAWG,QAAO,UAAW,GAAE,0CAEzEH,EAAWta,YAAW,+EAGrB,EAAKgC,WAAWsY,GAAW,+C,EAI7C,OAlDwC,iBAI9B,YAAA1Q,kBAAN,W,+HACsB,OAAlB,EAAA7Y,KAAkB,GAAM,+B,OAGxB,OAHA,EAAKypB,UAAa,SAAiFE,UAAUrmB,SAE7GtD,KAAK6O,UAAUzH,IAAI,WACnB,GAAMpH,KAAKwS,c,OACO,OADlB,SACkB,GAAMxS,KAAKypB,UAAUhsB,O,cAAjCqR,EAAY,SAA4BjM,QAAO,IAAI,KAAepF,OAClE8rB,EAAaza,EAASK,QAAO,SAAAtU,GAAK,OAAAA,EAAEkU,OAAS,EAAKA,QAAM,GAC9D/O,KAAKyQ,UAAYzQ,KAAK2J,KAAK4f,GAC3BvpB,KAAKqS,W,YAGO,YAAAG,WAAhB,W,wGAIU,YAAAH,SAAV,aA+BJ,EAlDA,CAAwC2G,e,gCCDxC5e,EAAOD,QAAU,SAAUkE,GAAS,OAAOA,U,gCCH3C,IAAIurB,EAAW,EAAQ,IAEvBxvB,EAAOD,QAAU,SAAUkE,GAC1B,IAAKurB,EAASvrB,GAAQ,MAAM,IAAIwB,UAAUxB,EAAQ,oBAClD,OAAOA,I,qFCJD,cAAP,2D,OACY,EAAAwrB,MAAQ,G,EAsDpB,OAvD+B,iBAI3B,sBAAW,aAAQ,C,IAAnB,WACI,OAAOC,EAAUza,W,gCAGb,YAAA0a,eAAR,SAAuB3sB,GACnB4C,KAAKyP,KAAK,aAAcrS,IAGrB,YAAA4sB,aAAP,SAAoBze,GAChBvL,KAAK2P,GAAG,aAAcpE,IAGnB,YAAA0e,cAAP,SAAqB1e,GACjBvL,KAAK6P,eAAe,aAActE,IAG9B,YAAA2e,kBAAR,SAA0B9sB,GACtB4C,KAAKyP,KAAK,gBAAiBrS,IAGxB,YAAA+sB,gBAAP,SAAuB5e,GACnBvL,KAAK2P,GAAG,gBAAiBpE,IAGrB,YAAA6e,aAAR,SAAqBhtB,GACjB4C,KAAKyP,KAAK,WAAYrS,IAGnB,YAAAitB,WAAP,SAAkB9e,GACdvL,KAAK2P,GAAG,WAAYpE,IAGjB,YAAA+e,YAAP,SAAmB/e,GACfvL,KAAK6P,eAAe,WAAYtE,IAI9B,YAAAnE,IAAN,SAAa7K,EAAqBa,G,8GAC9B4C,KAAK6pB,MAAMlwB,MAAK,GAChBqG,KAAK+pB,eAAe3sB,G,iBAGT,O,sBAAA,GAAMb,G,OAAb,MAAO,CAAP,EAAO,U,cAEPyD,KAAK6pB,MAAMxnB,MACXrC,KAAKkqB,oBACqB,IAAtBlqB,KAAK6pB,MAAMxwB,QACX2G,KAAKoqB,e,6BAjDF,EAAA/a,UAAY,IAAIya,EAqDnC,EAvDO,CAAwB,iB,oBCF/B,yBAOE,IASIS,EAT6B,WAC/B,IACE,QAASpsB,OAAO+D,SAChB,MAAOnF,GACP,OAAO,GAKaytB,GAEpBC,EAAiB,SAAS/hB,GAC5B,IAAIxG,EAAW,CACbf,KAAM,WACJ,IAAI9C,EAAQqK,EAAM5O,QAClB,MAAO,CAAEwH,UAAgB,IAAVjD,EAAkBA,MAAOA,KAU5C,OANIksB,IACFroB,EAAS/D,OAAO+D,UAAY,WAC1B,OAAOA,IAIJA,GAOLwoB,EAAiB,SAASrsB,GAC5B,OAAOshB,mBAAmBthB,GAAO4N,QAAQ,OAAQ,MAG/C0e,EAAmB,SAAStsB,GAC9B,OAAOkO,mBAAmBzM,OAAOzB,GAAO4N,QAAQ,MAAO,QA4HnB,WACpC,IACE,IAAIzB,EAAkB5C,EAAO4C,gBAE7B,MAAmD,QAA3C,IAAIA,EAAgB,QAAQpC,YAAmE,mBAAlCoC,EAAgBjR,UAAUuQ,IAC/F,MAAOxP,GACP,OAAO,IAINswB,IAnIyB,WAE5B,IAAIpgB,EAAkB,SAASqgB,GAC7BvxB,OAAOyE,eAAeiC,KAAM,WAAY,CAAEwU,UAAU,EAAMnW,MAAO,KACjE,IAAIysB,SAA4BD,EAEhC,GAA2B,cAAvBC,QAEG,GAA2B,WAAvBA,EACY,KAAjBD,GACF7qB,KAAK+qB,YAAYF,QAEd,GAAIA,aAAwBrgB,EAAiB,CAClD,IAAIwgB,EAAQhrB,KACZ6qB,EAAatmB,SAAQ,SAASlG,EAAOhB,GACnC2tB,EAAMniB,OAAOxL,EAAMgB,UAEhB,IAAsB,OAAjBwsB,GAAkD,WAAvBC,EAkBrC,MAAM,IAAIjrB,UAAU,gDAjBpB,GAAqD,mBAAjDvG,OAAOC,UAAU6O,SAAS3O,KAAKoxB,GACjC,IAAK,IAAI1xB,EAAI,EAAGA,EAAI0xB,EAAaxxB,OAAQF,IAAK,CAC5C,IAAIooB,EAAQsJ,EAAa1xB,GACzB,GAA+C,mBAA1CG,OAAOC,UAAU6O,SAAS3O,KAAK8nB,IAAkD,IAAjBA,EAAMloB,OAGzE,MAAM,IAAIwG,UAAU,4CAA8C1G,EAAI,+BAFtE6G,KAAK6I,OAAO0Y,EAAM,GAAIA,EAAM,SAMhC,IAAK,IAAI5iB,KAAOksB,EACVA,EAAarxB,eAAemF,IAC9BqB,KAAK6I,OAAOlK,EAAKksB,EAAalsB,MASpC2V,EAAQ9J,EAAgBjR,UAE5B+a,EAAMzL,OAAS,SAASxL,EAAMgB,GACxBhB,KAAQ2C,KAAKirB,SACfjrB,KAAKirB,SAAS5tB,GAAM1D,KAAKmG,OAAOzB,IAEhC2B,KAAKirB,SAAS5tB,GAAQ,CAACyC,OAAOzB,KAIlCiW,EAAM0M,OAAS,SAAS3jB,UACf2C,KAAKirB,SAAS5tB,IAGvBiX,EAAMrW,IAAM,SAASZ,GACnB,OAAQA,KAAQ2C,KAAKirB,SAAYjrB,KAAKirB,SAAS5tB,GAAM,GAAK,MAG5DiX,EAAM4W,OAAS,SAAS7tB,GACtB,OAAQA,KAAQ2C,KAAKirB,SAAYjrB,KAAKirB,SAAS5tB,GAAMgC,MAAM,GAAK,IAGlEiV,EAAMhJ,IAAM,SAASjO,GACnB,OAAQA,KAAQ2C,KAAKirB,UAGvB3W,EAAMxK,IAAM,SAASzM,EAAMgB,GACzB2B,KAAKirB,SAAS5tB,GAAQ,CAACyC,OAAOzB,KAGhCiW,EAAM/P,QAAU,SAASgH,EAAU1K,GACjC,IAAI6K,EACJ,IAAK,IAAIrO,KAAQ2C,KAAKirB,SACpB,GAAIjrB,KAAKirB,SAASzxB,eAAe6D,GAAO,CACtCqO,EAAU1L,KAAKirB,SAAS5tB,GACxB,IAAK,IAAIlE,EAAI,EAAGA,EAAIuS,EAAQrS,OAAQF,IAClCoS,EAAS9R,KAAKoH,EAAS6K,EAAQvS,GAAIkE,EAAM2C,QAMjDsU,EAAM9I,KAAO,WACX,IAAI9C,EAAQ,GAIZ,OAHA1I,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3BqL,EAAM/O,KAAK0D,MAENotB,EAAe/hB,IAGxB4L,EAAM7I,OAAS,WACb,IAAI/C,EAAQ,GAIZ,OAHA1I,KAAKuE,SAAQ,SAASlG,GACpBqK,EAAM/O,KAAK0E,MAENosB,EAAe/hB,IAGxB4L,EAAM5I,QAAU,WACd,IAAIhD,EAAQ,GAIZ,OAHA1I,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3BqL,EAAM/O,KAAK,CAAC0D,EAAMgB,OAEbosB,EAAe/hB,IAGpB6hB,IACFjW,EAAMnW,OAAO+D,UAAYoS,EAAM5I,SAGjC4I,EAAMlM,SAAW,WACf,IAAI+iB,EAAc,GAIlB,OAHAnrB,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3B8tB,EAAYxxB,KAAK+wB,EAAertB,GAAQ,IAAMqtB,EAAersB,OAExD8sB,EAAYpgB,KAAK,MAI1BnD,EAAO4C,gBAAkBA,EAczB4gB,GAGF,IAAI9W,EAAQ1M,EAAO4C,gBAAgBjR,UAET,mBAAf+a,EAAM+W,OACf/W,EAAM+W,KAAO,WACX,IAAIL,EAAQhrB,KACR0I,EAAQ,GACZ1I,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3BqL,EAAM/O,KAAK,CAAC0D,EAAMgB,IACb2sB,EAAMC,UACTD,EAAMhK,OAAO3jB,MAGjBqL,EAAM2iB,MAAK,SAASC,EAAG9rB,GACrB,OAAI8rB,EAAE,GAAK9rB,EAAE,IACH,EACC8rB,EAAE,GAAK9rB,EAAE,GACX,EAEA,KAGPwrB,EAAMC,WACRD,EAAMC,SAAW,IAEnB,IAAK,IAAI9xB,EAAI,EAAGA,EAAIuP,EAAMrP,OAAQF,IAChC6G,KAAK6I,OAAOH,EAAMvP,GAAG,GAAIuP,EAAMvP,GAAG,MAKP,mBAAtBmb,EAAMyW,aACfzxB,OAAOyE,eAAeuW,EAAO,cAAe,CAC1CtW,YAAY,EACZuW,cAAc,EACdC,UAAU,EACVnW,MAAO,SAASwsB,GACd,GAAI7qB,KAAKirB,SACPjrB,KAAKirB,SAAW,OACX,CACL,IAAIzf,EAAO,GACXxL,KAAKuE,SAAQ,SAASlG,EAAOhB,GAC3BmO,EAAK7R,KAAK0D,MAEZ,IAAK,IAAIlE,EAAI,EAAGA,EAAIqS,EAAKnS,OAAQF,IAC/B6G,KAAKghB,OAAOxV,EAAKrS,IAKrB,IACIoyB,EADAC,GADJX,EAAeA,EAAa5e,QAAQ,MAAO,KACbhH,MAAM,KAEpC,IAAS9L,EAAI,EAAGA,EAAIqyB,EAAWnyB,OAAQF,IACrCoyB,EAAYC,EAAWryB,GAAG8L,MAAM,KAChCjF,KAAK6I,OACH8hB,EAAiBY,EAAU,IAC1BA,EAAUlyB,OAAS,EAAKsxB,EAAiBY,EAAU,IAAM,OA7OtE,MAuPqB,IAAX3jB,EAA0BA,EACV,oBAAXzI,OAA0BA,OACjB,oBAAT0I,KAAwBA,KAAO7H,MAG9C,SAAU4H,GAqNR,GA9M4B,WAC1B,IACE,IAAI6jB,EAAI,IAAI7jB,EAAOmhB,IAAI,IAAK,YAE5B,OADA0C,EAAErV,SAAW,MACM,mBAAXqV,EAAE9wB,MAA8B8wB,EAAEC,aAC1C,MAAOpxB,GACP,OAAO,GAoMNqxB,IA/La,WAChB,IAAIC,EAAOhkB,EAAOmhB,IAEdA,EAAM,SAAS9hB,EAAK4kB,GACH,iBAAR5kB,IAAkBA,EAAMnH,OAAOmH,IAG1C,IAAoB6kB,EAAhBC,EAAMhxB,SACV,GAAI8wB,SAA6B,IAApBjkB,EAAO/B,UAAuBgmB,IAASjkB,EAAO/B,SAASlL,MAAO,EAEzEmxB,GADAC,EAAMhxB,SAASixB,eAAeC,mBAAmB,KAC/B1wB,cAAc,SACpBZ,KAAOkxB,EACnBE,EAAIvuB,KAAKpB,YAAY0vB,GACrB,IACE,GAAuC,IAAnCA,EAAYnxB,KAAKyK,QAAQymB,GAAa,MAAM,IAAI7vB,MAAM8vB,EAAYnxB,MACtE,MAAOoB,GACP,MAAM,IAAIC,MAAM,0BAA4B6vB,EAAO,WAAa9vB,IAIpE,IAAImwB,EAAgBH,EAAIxwB,cAAc,KACtC2wB,EAAcvxB,KAAOsM,EACjB6kB,IACFC,EAAIvqB,KAAKpF,YAAY8vB,GACrBA,EAAcvxB,KAAOuxB,EAAcvxB,MAGrC,IAAIwxB,EAAeJ,EAAIxwB,cAAc,SAIrC,GAHA4wB,EAAa3wB,KAAO,MACpB2wB,EAAa9tB,MAAQ4I,EAEU,MAA3BilB,EAAcza,WAAqB,IAAInJ,KAAK4jB,EAAcvxB,QAAWwxB,EAAaC,kBAAoBP,EACxG,MAAM,IAAIhsB,UAAU,eAGtBvG,OAAOyE,eAAeiC,KAAM,iBAAkB,CAC5C3B,MAAO6tB,IAKT,IAAIR,EAAe,IAAI9jB,EAAO4C,gBAAgBxK,KAAKmZ,QAC/CkT,GAAqB,EACrBC,GAA2B,EAC3BtB,EAAQhrB,KACZ,CAAC,SAAU,SAAU,OAAOuE,SAAQ,SAASgoB,GAC3C,IAAInpB,EAASsoB,EAAaa,GAC1Bb,EAAaa,GAAc,WACzBnpB,EAAO/C,MAAMqrB,EAActrB,WACvBisB,IACFC,GAA2B,EAC3BtB,EAAM7R,OAASuS,EAAatjB,WAC5BkkB,GAA2B,OAKjChzB,OAAOyE,eAAeiC,KAAM,eAAgB,CAC1C3B,MAAOqtB,EACP1tB,YAAY,IAGd,IAAImb,OAAS,EACb7f,OAAOyE,eAAeiC,KAAM,sBAAuB,CACjDhC,YAAY,EACZuW,cAAc,EACdC,UAAU,EACVnW,MAAO,WACD2B,KAAKmZ,SAAWA,IAClBA,EAASnZ,KAAKmZ,OACVmT,IACFD,GAAqB,EACrBrsB,KAAK0rB,aAAaX,YAAY/qB,KAAKmZ,QACnCkT,GAAqB,QAO3B/X,EAAQyU,EAAIxvB,UAchB,CAAC,OAAQ,OAAQ,WAAY,OAAQ,YAClCgL,SAAQ,SAASioB,IAba,SAASA,GACxClzB,OAAOyE,eAAeuW,EAAOkY,EAAe,CAC1CvuB,IAAK,WACH,OAAO+B,KAAKysB,eAAeD,IAE7B1iB,IAAK,SAASzL,GACZ2B,KAAKysB,eAAeD,GAAiBnuB,GAEvCL,YAAY,IAMZ0uB,CAA2BF,MAG/BlzB,OAAOyE,eAAeuW,EAAO,SAAU,CACrCrW,IAAK,WACH,OAAO+B,KAAKysB,eAAuB,QAErC3iB,IAAK,SAASzL,GACZ2B,KAAKysB,eAAuB,OAAIpuB,EAChC2B,KAAK2sB,uBAEP3uB,YAAY,IAGd1E,OAAOszB,iBAAiBtY,EAAO,CAE7B,SAAY,CACVrW,IAAK,WACH,IAAI+sB,EAAQhrB,KACZ,OAAO,WACL,OAAOgrB,EAAMrwB,QAKnB,KAAQ,CACNsD,IAAK,WACH,OAAO+B,KAAKysB,eAAe9xB,KAAKsR,QAAQ,MAAO,KAEjDnC,IAAK,SAASzL,GACZ2B,KAAKysB,eAAe9xB,KAAO0D,EAC3B2B,KAAK2sB,uBAEP3uB,YAAY,GAGd,SAAY,CACVC,IAAK,WACH,OAAO+B,KAAKysB,eAAerW,SAASnK,QAAQ,SAAU,MAExDnC,IAAK,SAASzL,GACZ2B,KAAKysB,eAAerW,SAAW/X,GAEjCL,YAAY,GAGd,OAAU,CACRC,IAAK,WAEH,IAAI4uB,EAAe,CAAE,QAAS,GAAI,SAAU,IAAK,OAAQ,IAAK7sB,KAAKysB,eAAehb,UAI9Eqb,EAAkB9sB,KAAKysB,eAAeM,MAAQF,GACnB,KAA7B7sB,KAAKysB,eAAeM,KAEtB,OAAO/sB,KAAKysB,eAAehb,SACzB,KACAzR,KAAKysB,eAAetX,UACnB2X,EAAmB,IAAM9sB,KAAKysB,eAAeM,KAAQ,KAE1D/uB,YAAY,GAGd,SAAY,CACVC,IAAK,WACH,MAAO,IAET6L,IAAK,SAASzL,KAEdL,YAAY,GAGd,SAAY,CACVC,IAAK,WACH,MAAO,IAET6L,IAAK,SAASzL,KAEdL,YAAY,KAIhB+qB,EAAIiE,gBAAkB,SAAS1jB,GAC7B,OAAOsiB,EAAKoB,gBAAgB3sB,MAAMurB,EAAMxrB,YAG1C2oB,EAAIkE,gBAAkB,SAAShmB,GAC7B,OAAO2kB,EAAKqB,gBAAgB5sB,MAAMurB,EAAMxrB,YAG1CwH,EAAOmhB,IAAMA,EAKbmE,QAGuB,IAApBtlB,EAAO/B,YAA0B,WAAY+B,EAAO/B,UAAW,CAClE,IAAIsnB,EAAY,WACd,OAAOvlB,EAAO/B,SAAS4L,SAAW,KAAO7J,EAAO/B,SAASsP,UAAYvN,EAAO/B,SAASknB,KAAQ,IAAMnlB,EAAO/B,SAASknB,KAAQ,KAG7H,IACEzzB,OAAOyE,eAAe6J,EAAO/B,SAAU,SAAU,CAC/C5H,IAAKkvB,EACLnvB,YAAY,IAEd,MAAO1D,GACP8yB,aAAY,WACVxlB,EAAO/B,SAASyP,OAAS6X,MACxB,OAlOT,MAuOqB,IAAXvlB,EAA0BA,EACV,oBAAXzI,OAA0BA,OACjB,oBAAT0I,KAAwBA,KAAO7H,Q,qJCvdvC,aAYH,wBATU,KAAAqtB,MAAQ,GACR,KAAAC,aAAc,EAGd,KAAAC,eAAoC,WAAM,OAAaxyB,SAASuU,cAAc,SAC9E,KAAAke,eAAiC,aA2I3C,KAAAC,cAAgB,WAAM,UAEtB,KAAAC,aAAe,WAAM,UAuBrB,KAAAC,WAAa,SAAChnB,GACV,IAAMinB,EAAO,EAAKC,UAClB,MAAO,wCACOD,EAAKhlB,KAAI,SAAAvO,GAAK,kBAAKA,IAAMuzB,EAAK,IAAMA,EAAKv0B,OAAS,EAAI,kBAAsB,GAAE,YAAIgB,EAAEsM,MAAK,WAAQoE,KAAK,IAAG,mFAErG,EAAQ,KAAiD,0DAKvE,KAAA+iB,WAAa,SAAC/Z,GAAe,0BAC/B,EAAKuZ,YAAc,sBAAe,QAAiB,MAAM,GAAE,kCAC9CvZ,EAAE,2BAAmB,EAAKsZ,MAAK,6CACtB,EAAKU,gBAAe,4SAE9B,EAAKJ,WAAW,EAAKK,YAAW,4JAK5B,EAAKN,eAAc,iGAInC,EAAKJ,YAAc,SAAU,KAvL/B/vB,YAAW,+F,uBAAY,SAAMyC,KAAKwS,c,OAAX,6BAwL/B,OArLU,YAAAA,WAAN,W,8GACI,SAAM/D,EAAA,EAAIC,S,cAAV,SACA1O,KAAKqS,WACLrS,KAAKiuB,iB,YAGT,YAAAJ,QAAA,sBACI,MAAO,CAAC,CACJlnB,MAAO3G,KAAKguB,WACZE,eAAgB,WAAM,OAAGvkB,KAAM,WAAM,SAAK8jB,sBAIlD,YAAAM,cAAA,WACI,MAAO,SAGX,YAAA1b,SAAA,aAGA,YAAA4b,eAAA,aAIA,YAAAE,OAAA,WACInuB,KAAKiU,SAGT,YAAAma,YAAA,sBACUC,EAA2BruB,KAAKsuB,OAAOhf,cAAc,WAEvD+e,GACAA,EAAYrgB,iBAAiB,SAAS,SAACrS,GACnCA,EAAMgsB,iBACN,EAAKwG,YAGbnuB,KAAKuuB,cAAgB,SAACj0B,GACdS,SAASkoB,SAAS3oB,EAAEuB,UAAY,EAAKyyB,OAAOrL,SAAS3oB,EAAEuB,UACvDvB,EAAEqtB,iBACF,EAAKwG,WAIbnuB,KAAKwuB,sBAAwB,SAACl0B,GACZ,WAAVA,EAAEqE,KACF,EAAKwvB,UAGbhvB,OAAO5B,YAAW,WACdxC,SAASyG,KAAKwM,iBAAiB,QAAS,EAAKugB,eAC7CxzB,SAASyG,KAAKwM,iBAAiB,UAAW,EAAKwgB,yBAChD,GAGCxuB,KAAK6tB,UAAUx0B,OAAS,IACLsG,MAAMpG,UAAU8F,MAAM5F,KAAKuG,KAAKsuB,OAAOhqB,iBAAiB,2BAChEC,SAAQ,SAAAkqB,GACfA,EAAUzgB,iBAAiB,SAAS,SAAArS,GAChCA,EAAMgsB,iBAGN,IAAM+G,EAAM,EAAKb,UAAU1e,QAAO,SAAA9U,GAAK,OAAAA,EAAEsM,QAAU8nB,EAAUE,aAAW,GACxE,EAAKC,QAAQF,SAMzB1uB,KAAK6uB,sBAGT,YAAAD,QAAA,SAAQF,GAAR,WACUI,EAAuB9uB,KAAKsuB,OAAOhf,cAAc,WAEnDtP,KAAK+uB,YAAc/uB,KAAK+uB,WAAWb,iBAAiBc,QACpDhvB,KAAK+uB,WAAWb,iBAAiBc,OAAOF,GAE5C9uB,KAAK+uB,WAAaL,EAElB,IAAMO,EAAUP,EAAIR,iBAAiBvkB,OAErCmlB,EAAQre,UAAYwe,EAEhBjvB,KAAK+uB,WAAWb,iBAAiBgB,MACjClvB,KAAK+uB,WAAWb,iBAAiBgB,KAAKJ,GAGInvB,MAAMpG,UAAU8F,MAAM5F,KAAKq1B,EAAQxqB,iBAAiB,UAChFC,SAAQ,SAAAC,GACtBA,EAAQwJ,iBAAiB,UAAU,WAAM,SAAK6gB,wBAC9CrqB,EAAQwJ,iBAAiB,SAAS,WAAM,SAAK6gB,wBAC7CrqB,EAAQwJ,iBAAiB,SAAS,WAAM,SAAK6gB,wBAC7CrqB,EAAQwJ,iBAAiB,SAAS,WAAM,OAAAzQ,YAAW,WAAM,SAAKsxB,uBAAsB,SAIxF,IAAMM,EAAkCxvB,MAAMpG,UAAU8F,MAAM5F,KAAKuG,KAAKsuB,OAAOhqB,iBAAiB,2BAC5F6qB,EAAW91B,OAAS,GACpB81B,EAAW5qB,SAAQ,SAAA6qB,GAAU,OAAAA,EAAOT,YAAcD,EAAI/nB,MAAQyoB,EAAOvgB,UAAUzH,IAAI,UAAYgoB,EAAOvgB,UAAUqF,OAAO,cAI/H,YAAA2a,mBAAA,WACI,IACMO,EADSpvB,KAAKsuB,OAAOhf,cAAc,UACAA,cAAc,uBACjDlD,EAAwBpM,KAAKsuB,OAAOhf,cAAc,QAEnD8f,IAGLA,EAAOC,UAAYjjB,EAAKggB,gBAEgBzsB,MAAMpG,UAAU8F,MAAM5F,KAAKuG,KAAKsuB,OAAOhqB,iBAAiB,2BACrFC,SAAQ,SAAA6qB,GAAU,OAAAhjB,EAAKggB,gBAAkBgD,EAAOvgB,UAAUqF,OAAO,YAAckb,EAAOvgB,UAAUzH,IAAI,iBAGnH,YAAAkoB,aAAA,WACI,OAAO90B,QAAQC,WAGnB,YAAAwZ,MAAA,WACIlZ,SAASyG,KAAK2M,oBAAoB,QAASnO,KAAKuuB,eAChDxzB,SAASyG,KAAK2M,oBAAoB,UAAWnO,KAAKwuB,uBAE9CxuB,KAAKstB,YACLttB,KAAKsuB,OAAOiB,cAAcrb,SAE1BlU,KAAKsuB,OAAOpa,UAOpB,YAAA8Z,SAAA,WACI,MAAO,IAGL,YAAAwB,KAAN,W,sHACI,SAAMxvB,KAAKsvB,gB,OAMX,GANA,SAEMvb,EAAK,iBAAU0b,EAAyBC,aAExC7zB,EAAsBmE,KAAKutB,kBAG7B,MAAMvxB,MAAM,+B,OAEhBH,EAAO8zB,mBAAmB3vB,KAAKwtB,eAAgBxtB,KAAK8tB,WAAW/Z,IAC/D/T,KAAKsuB,OAA4BvzB,SAAS60B,eAAe7b,GACzD/T,KAAK4uB,QAAQ5uB,KAAK6tB,UAAU,IAC5B7tB,KAAKsuB,OAAOuB,MAAMC,QAAU,QAC5B9vB,KAAKouB,c,YAvKM,EAAAsB,QAAU,EAmM7B,EArMO,G,gBCGP,cAKI,mBACI,cAAO,K,OALH,EAAA9P,OAAS1O,EAAA,EAAW6e,WAGlB,EAAAvC,eAAiC,YAkCnC,EAAAwC,SAAW,SAACtrB,GAAiB,MAA6B,WAA7BA,EAAK2R,qBAE1C,EAAAoX,cAAgB,WAAM,SAAK7N,OAAM,8BAA2D,MAAxD,EAAKqQ,QAAQ7yB,QAAQ6H,MAAM,MAAM2D,KAAI,SAAAlL,GAAK,mBAAMA,EAAC,aAErF,EAAAgwB,aAAe,WAAM,SAAKuC,QAAQC,gBAAkB,EAAKC,uBAAyB,EAAKvQ,OAAM,8BAA0I,MAAvI,EAAKqQ,QAAQrqB,QAAQgD,KAAI,SAAAlL,GAAK,2CAA8B,EAAKsyB,SAAStyB,GAAK,iBAAmB,QAAO,mBAAWA,EAAC,aAAKA,EAAC,kBAC3N,EAAAyyB,qBAAuB,WAAM,SAAKvQ,OAAM,8BAEsF,MAFnF,EAAKqQ,QAAQC,gBAAgBtnB,KAAI,SAAAlL,GAAK,OAAAA,EAAE/C,KAC/E,mBAAY+C,EAAE/C,KAAI,qBAAa+C,EAAE7B,OAAM,oBAAY,EAAKm0B,SAAStyB,EAAEL,MAAQ,iBAAmB,QAAO,mBAAWK,EAAEL,KAAI,aAAKK,EAAEL,KAAI,QAC/H,qCAA8B,EAAK2yB,SAAStyB,EAAEL,MAAQ,iBAAmB,QAAO,mBAAWK,EAAEL,KAAI,aAAKK,EAAEL,KAAI,kB,EACtH,OA9CsC,iBASlC,YAAA2wB,SAAA,WACI,OAAOhuB,KAAKiwB,QAAQtqB,SAGxB,YAAAwoB,OAAA,WACInuB,KAAKvF,QAAQ,UACb,YAAM0zB,OAAM,YAGH,YAAAzoB,OAAb,SAAoBuqB,G,yHAEhB,OADAjwB,KAAKiwB,QAAUA,EACf,GAAMjwB,KAAKwvB,Q,OACJ,OADP,SACO,GAAM,IAAIh1B,SAAgB,SAACC,EAASC,GACvC,EAAKD,QAAUA,M,OADnB,MAAO,CAAP,EAAO,kBAKX,YAAA2zB,YAAA,sBACI,YAAMA,YAAW,WAEjB,GAAG/uB,MAAM5F,KAAKuG,KAAKsuB,OAAOhqB,iBAAiB,WAAWC,SAAQ,SAACC,GAC3DA,EAAQwJ,iBAAiB,SAAS,SAACrS,GAC/B,YAAMsY,MAAK,QACX,IAAMmb,EAA4BzzB,EAAME,OACxC,EAAKpB,QAAQ20B,EAAO/xB,aAapC,EA9CA,CAAsC,I,gCCjBtC,8CAmBO,aAAP,aAEY,KAAA+yB,OAAS,WAAM,+NAiE3B,OA9DI,YAAA1pB,QAAA,SAAQtJ,GAKJ,IAHA,IAAMizB,EAAkB,IAAQlH,iBAE5BmH,EAAO,GAC0C,IAA9CC,EAAqBC,MAAMprB,QAAQkrB,IACtCA,IAEJC,EAAqBC,MAAM72B,KAAK22B,GAEhCD,EAAgB5f,UAAY,+BACf8f,EAAqBE,OAAM,wIAGZrzB,EAAQwJ,YAAcxJ,EAAQszB,QAAUtzB,EAAQuzB,KAAO,WAAa,IAAE,OAAGvzB,EAAQoE,KAAO,GAAK,cAAa,+CAA+C,IAAP8uB,EAAc,GAAE,qCAChLlzB,EAAQwJ,WAAa,2BAA6B,GAAE,iCACpDxJ,EAAQszB,OAAS1wB,KAAKowB,SAAW,GAAE,iCACnChzB,EAAQuzB,KAAO,oBAAavzB,EAAQuzB,KAAI,QAAS,GAAE,yCAC3CvzB,EAAQuJ,MAAK,0CACrBvJ,EAAQoE,KAAO,0BAAmBpE,EAAQoE,KAAI,UAAW,GAAE,0DAOzE,IAAMlD,EAAIa,OAAO5B,WAEXqzB,EAAsBP,EAAgBQ,uBAAuB,UAAU,GAE7EvyB,GAAE,WACEsyB,EAAO/hB,UAAUzH,IAAI,YACtB,KAEH,IAAM+X,EAAU,CACZ9X,KAAM,WACGupB,IAGLA,EAAO/hB,UAAUzH,IAAI,QACrBwpB,EAAOf,MAAMiB,OAAS,UAAW,IAAPR,EAAc,IAAG,MAC3CC,EAAqBC,MAAQD,EAAqBC,MAAMrhB,QAAO,SAAAhW,GAAK,OAAAA,IAAMm3B,KAE1EhyB,GAAE,WACE,IAAMzD,EAAI+1B,EAAOrB,cACb10B,GAAKA,EAAE00B,eACP10B,EAAE00B,cAAcpzB,YAAYtB,GAE5Bw1B,GAAmBA,EAAgBnc,QACnCmc,EAAgBnc,WACrB,SAUX,OALA0c,EAAO5iB,iBAAiB,QAASmR,EAAQ9X,MAErCjK,EAAQ2zB,aACRzyB,EAAE6gB,EAAQ9X,KAA4B,IAAtBjK,EAAQ2zB,aAErB5R,GAhEI,EAAAqR,MAAkB,GAElB,EAAAC,OAAS,EAAQ,KAgEpC,EAnEO,I,2CCjBP,G,MAAA,uE,OASY,EAAAO,cAAgB,WAIhBj2B,SAASyG,KAAKwO,UAHA,GAIdjV,SAASk2B,gBAAgBjhB,UAJX,EAMdjV,SAASyG,KAAKqN,UAAUzH,IAAI,YAE5BrM,SAASyG,KAAKqN,UAAUqF,OAAO,a,EAG3C,OArBgC,iBAC5B,YAAA2E,kBAAA,WACI1Z,OAAO6O,iBAAiB,SAAUhO,KAAKgxB,cAAe,CAAEE,SAAS,KAGrE,YAAAC,qBAAA,WACIhyB,OAAOgP,oBAAoB,SAAUnO,KAAKgxB,gBAelD,EArBA,CAAgChY,cAuBhCrG,eAAeC,OAAO,cAAe,G,2GCtBrC,yE,OACc,EAAA4W,QAAU,WAAM,gB,EAM9B,OAP8C,iBAI1B,YAAA4H,YAAhB,W,uFACI,MAAO,CAAP,GAAO,IAAI,KAAe3zB,cAElC,EAPA,CAA8C,M,8ECF9C,MAAM4zB,EAAM,YAAe,MAAO,CAC9B/Q,IAAK,IAAM,8BAAgBjkB,KAAKqB,GAAK,IAAIA,EAAE4zB,W,iBCF/Cl3B,EAAOD,QAAU,oM,oBCAjB,YAQC,IAAkBo3B,IAIX,WAAe,aAOvB,SAASC,EAAWC,GAClB,MAAoB,mBAANA,EAKhB,IASI3oB,EARAnJ,MAAMmJ,QACGnJ,MAAMmJ,QAEN,SAAU2oB,GACnB,MAA6C,mBAAtCn4B,OAAOC,UAAU6O,SAAS3O,KAAKg4B,IAMtCnL,EAAM,EACNoL,OAAY,EACZC,OAAoB,EAEpBC,EAAO,SAAcrmB,EAAUya,GACjC6L,EAAMvL,GAAO/a,EACbsmB,EAAMvL,EAAM,GAAKN,EAEL,KADZM,GAAO,KAKDqL,EACFA,EAAkBG,GAElBC,MAaFC,EAAkC,oBAAX7yB,OAAyBA,YAAS7B,EACzD20B,EAAgBD,GAAiB,GACjCE,EAA0BD,EAAcE,kBAAoBF,EAAcG,uBAC1EC,EAAyB,oBAATxqB,MAA2C,oBAAZyqB,SAAyD,qBAA9B,GAAGlqB,SAAS3O,KAAK64B,SAG3FC,EAAwC,oBAAtBC,mBAA8D,oBAAlBC,eAA2D,oBAAnBC,eA0C1G,SAASC,IAGP,IAAIC,EAAmBr1B,WACvB,OAAO,WACL,OAAOq1B,EAAiBd,EAAO,IAInC,IAAID,EAAQ,IAAIlyB,MAAM,KACtB,SAASmyB,IACP,IAAK,IAAI34B,EAAI,EAAGA,EAAImtB,EAAKntB,GAAK,GAI5BoS,EAHesmB,EAAM14B,IACX04B,EAAM14B,EAAI,IAIpB04B,EAAM14B,QAAKmE,EACXu0B,EAAM14B,EAAI,QAAKmE,EAGjBgpB,EAAM,EAaR,IAzCMuM,EAZAC,EACAC,EACAC,EAmDFjB,OAAgB,EAcpB,SAAS11B,EAAK42B,EAAeC,GAC3B,IAAIC,EAASnzB,KAETozB,EAAQ,IAAIpzB,KAAKC,YAAYozB,QAEP/1B,IAAtB81B,EAAME,IACRC,EAAYH,GAGd,IAAII,EAASL,EAAOK,OAGpB,GAAIA,EAAQ,CACV,IAAIjoB,EAAWnL,UAAUozB,EAAS,GAClC5B,GAAK,WACH,OAAO6B,EAAeD,EAAQJ,EAAO7nB,EAAU4nB,EAAOO,iBAGxDC,EAAUR,EAAQC,EAAOH,EAAeC,GAG1C,OAAOE,EAkCT,SAASQ,EAAU90B,GAIjB,GAAIA,GAA4B,iBAAXA,GAAuBA,EAAOmB,cAFjCD,KAGhB,OAAOlB,EAGT,IAAIvC,EAAU,IANIyD,KAMYqzB,GAE9B,OADA54B,EAAQ8B,EAASuC,GACVvC,EA7EL81B,EACFN,EAzEO,WACL,OAAOO,QAAQuB,SAAS/B,IAyEjBI,GAzDLY,EAAa,EACbC,EAAW,IAAIb,EAAwBJ,GACvCkB,EAAOj4B,SAAS+4B,eAAe,IACnCf,EAASgB,QAAQf,EAAM,CAAEgB,eAAe,IAuDxCjC,EArDO,WACLiB,EAAKl6B,KAAOg6B,IAAeA,EAAa,IAqDjCP,IA/CLM,EAAU,IAAIH,gBACVuB,MAAMC,UAAYpC,EA+C1BC,EA9CO,WACL,OAAOc,EAAQsB,MAAMC,YAAY,KA+CnCrC,OAD2Bz0B,IAAlB00B,EAlBX,WACE,IACE,IAAIqC,EAAQ5Q,SAAS,cAATA,GAA0B6Q,QAAQ,SAE9C,YAzDuB,KAwDvB5C,EAAY2C,EAAME,WAAaF,EAAMG,cAvD9B,WACL9C,EAAUI,IAIPa,IAoDL,MAAOr4B,GACP,OAAOq4B,KAaO8B,GAEA9B,IAuElB,IAAIW,EAAaoB,KAAKC,SAASvsB,SAAS,IAAIjD,UAAU,GAEtD,SAASkuB,KAiET,SAASuB,EAAoBr4B,EAASs4B,EAAeC,GAC/CD,EAAc50B,cAAgB1D,EAAQ0D,aAAe60B,IAAYz4B,GAAQw4B,EAAc50B,YAAYxF,UAAYm5B,EAfrH,SAA2Br3B,EAASw4B,GAhDpB,IAiDVA,EAASvB,OACXwB,EAAQz4B,EAASw4B,EAASrB,SAjDf,IAkDFqB,EAASvB,OAClB94B,EAAO6B,EAASw4B,EAASrB,SAEzBC,EAAUoB,OAAUz3B,GAAW,SAAUe,GACvC,OAAO5D,EAAQ8B,EAAS8B,MACvB,SAAU42B,GACX,OAAOv6B,EAAO6B,EAAS04B,MAOzBC,CAAkB34B,EAASs4B,QAEXv3B,IAAZw3B,EACFE,EAAQz4B,EAASs4B,GACRrD,EAAWsD,GAjD1B,SAA+Bv4B,EAASw4B,EAAUD,GAChDlD,GAAK,SAAUr1B,GACb,IAAI44B,GAAS,EACTp4B,EAXR,SAAiB+3B,EAASz2B,EAAO+2B,EAAoBC,GACnD,IACEP,EAAQr7B,KAAK4E,EAAO+2B,EAAoBC,GACxC,MAAO/6B,GACP,OAAOA,GAOKg7B,CAAQR,EAASC,GAAU,SAAU12B,GAC3C82B,IAGJA,GAAS,EACLJ,IAAa12B,EACf5D,EAAQ8B,EAAS8B,GAEjB22B,EAAQz4B,EAAS8B,OAElB,SAAU42B,GACPE,IAGJA,GAAS,EAETz6B,EAAO6B,EAAS04B,MACD14B,EAAQg5B,SAEpBJ,GAAUp4B,IACbo4B,GAAS,EACTz6B,EAAO6B,EAASQ,MAEjBR,GAwBCi5B,CAAsBj5B,EAASs4B,EAAeC,GAE9CE,EAAQz4B,EAASs4B,GAKvB,SAASp6B,EAAQ8B,EAAS8B,GACxB,GAAI9B,IAAY8B,EACd3D,EAAO6B,EA1EF,IAAIsD,UAAU,kDA2Ed,GAzSHrE,SADoBi2B,EA0SIpzB,GAxSf,OAANozB,GAAwB,WAATj2B,GAA8B,aAATA,EAkTzCw5B,EAAQz4B,EAAS8B,OAViB,CAClC,IAAIy2B,OAAU,EACd,IACEA,EAAUz2B,EAAMhC,KAChB,MAAOU,GAEP,YADArC,EAAO6B,EAASQ,GAGlB63B,EAAoBr4B,EAAS8B,EAAOy2B,GAlTxC,IAA0BrD,EACpBj2B,EAuTN,SAASi6B,EAAiBl5B,GACpBA,EAAQm5B,UACVn5B,EAAQm5B,SAASn5B,EAAQm3B,SAG3BvL,EAAQ5rB,GAGV,SAASy4B,EAAQz4B,EAAS8B,QAtGZ,IAuGR9B,EAAQi3B,SAIZj3B,EAAQm3B,QAAUr1B,EAClB9B,EAAQi3B,OA3GM,EA6GsB,IAAhCj3B,EAAQo5B,aAAat8B,QACvBu4B,EAAKzJ,EAAS5rB,IAIlB,SAAS7B,EAAO6B,EAAS04B,QAnHX,IAoHR14B,EAAQi3B,SAGZj3B,EAAQi3B,OArHK,EAsHbj3B,EAAQm3B,QAAUuB,EAElBrD,EAAK6D,EAAkBl5B,IAGzB,SAASo3B,EAAUR,EAAQC,EAAOH,EAAeC,GAC/C,IAAIyC,EAAexC,EAAOwC,aACtBt8B,EAASs8B,EAAat8B,OAG1B85B,EAAOuC,SAAW,KAElBC,EAAat8B,GAAU+5B,EACvBuC,EAAat8B,EApIC,GAoIqB45B,EACnC0C,EAAat8B,EApIA,GAoIqB65B,EAEnB,IAAX75B,GAAgB85B,EAAOK,QACzB5B,EAAKzJ,EAASgL,GAIlB,SAAShL,EAAQ5rB,GACf,IAAIq5B,EAAcr5B,EAAQo5B,aACtBE,EAAUt5B,EAAQi3B,OAEtB,GAA2B,IAAvBoC,EAAYv8B,OAAhB,CAQA,IAJA,IAAI+5B,OAAQ,EACR7nB,OAAW,EACX+W,EAAS/lB,EAAQm3B,QAEZv6B,EAAI,EAAGA,EAAIy8B,EAAYv8B,OAAQF,GAAK,EAC3Ci6B,EAAQwC,EAAYz8B,GACpBoS,EAAWqqB,EAAYz8B,EAAI08B,GAEvBzC,EACFK,EAAeoC,EAASzC,EAAO7nB,EAAU+W,GAEzC/W,EAAS+W,GAIb/lB,EAAQo5B,aAAat8B,OAAS,GAGhC,SAASo6B,EAAeoC,EAASt5B,EAASgP,EAAU+W,GAClD,IAAIwT,EAActE,EAAWjmB,GACzBlN,OAAQ,EACRtB,OAAQ,EACRg5B,GAAY,EAEhB,GAAID,EAAa,CACf,IACEz3B,EAAQkN,EAAS+W,GACjB,MAAOhoB,GACPy7B,GAAY,EACZh5B,EAAQzC,EAGV,GAAIiC,IAAY8B,EAEd,YADA3D,EAAO6B,EA7KJ,IAAIsD,UAAU,8DAiLnBxB,EAAQikB,OA1LE,IA6LR/lB,EAAQi3B,SAEDsC,GAAeC,EACxBt7B,EAAQ8B,EAAS8B,IACM,IAAd03B,EACTr7B,EAAO6B,EAASQ,GAjMJ,IAkMH84B,EACTb,EAAQz4B,EAAS8B,GAlMN,IAmMFw3B,GACTn7B,EAAO6B,EAAS8B,IAgBpB,IAAI0V,EAAK,EAKT,SAASwf,EAAYh3B,GACnBA,EAAQ+2B,GAAcvf,IACtBxX,EAAQi3B,YAASl2B,EACjBf,EAAQm3B,aAAUp2B,EAClBf,EAAQo5B,aAAe,GAOzB,IAAIK,EAAa,WACf,SAASA,EAAWC,EAAalvB,GAC/B/G,KAAKk2B,qBAAuBD,EAC5Bj2B,KAAKzD,QAAU,IAAI05B,EAAY5C,GAE1BrzB,KAAKzD,QAAQ+2B,IAChBC,EAAYvzB,KAAKzD,SAGfuM,EAAQ/B,IACV/G,KAAK3G,OAAS0N,EAAM1N,OACpB2G,KAAKm2B,WAAapvB,EAAM1N,OAExB2G,KAAK0zB,QAAU,IAAI/zB,MAAMK,KAAK3G,QAEV,IAAhB2G,KAAK3G,OACP27B,EAAQh1B,KAAKzD,QAASyD,KAAK0zB,UAE3B1zB,KAAK3G,OAAS2G,KAAK3G,QAAU,EAC7B2G,KAAKo2B,WAAWrvB,GACQ,IAApB/G,KAAKm2B,YACPnB,EAAQh1B,KAAKzD,QAASyD,KAAK0zB,WAI/Bh5B,EAAOsF,KAAKzD,QA5BT,IAAIP,MAAM,4CA0GjB,OA1EAg6B,EAAWz8B,UAAU68B,WAAa,SAAoBrvB,GACpD,IAAK,IAAI5N,EAAI,OApQH,IAoQM6G,KAAKwzB,QAAsBr6B,EAAI4N,EAAM1N,OAAQF,IAC3D6G,KAAKq2B,WAAWtvB,EAAM5N,GAAIA,IAI9B68B,EAAWz8B,UAAU88B,WAAa,SAAoB9U,EAAOpoB,GAC3D,IAAIwE,EAAIqC,KAAKk2B,qBACTI,EAAa34B,EAAElD,QAGnB,GAAI67B,IAAe1C,EAAW,CAC5B,IAAI2C,OAAQ,EACRx5B,OAAQ,EACRy5B,GAAW,EACf,IACED,EAAQhV,EAAMllB,KACd,MAAO/B,GACPk8B,GAAW,EACXz5B,EAAQzC,EAGV,GAAIi8B,IAAUl6B,QAzRN,IAyRcklB,EAAMiS,OAC1BxzB,KAAKy2B,WAAWlV,EAAMiS,OAAQr6B,EAAGooB,EAAMmS,cAClC,GAAqB,mBAAV6C,EAChBv2B,KAAKm2B,aACLn2B,KAAK0zB,QAAQv6B,GAAKooB,OACb,GAAI5jB,IAAM+4B,EAAW,CAC1B,IAAIn6B,EAAU,IAAIoB,EAAE01B,GAChBmD,EACF97B,EAAO6B,EAASQ,GAEhB63B,EAAoBr4B,EAASglB,EAAOgV,GAEtCv2B,KAAK22B,cAAcp6B,EAASpD,QAE5B6G,KAAK22B,cAAc,IAAIh5B,GAAE,SAAU24B,GACjC,OAAOA,EAAW/U,MAChBpoB,QAGN6G,KAAK22B,cAAcL,EAAW/U,GAAQpoB,IAI1C68B,EAAWz8B,UAAUk9B,WAAa,SAAoBpR,EAAOlsB,EAAGkF,GAC9D,IAAI9B,EAAUyD,KAAKzD,aAjTT,IAoTNA,EAAQi3B,SACVxzB,KAAKm2B,aAnTI,IAqTL9Q,EACF3qB,EAAO6B,EAAS8B,GAEhB2B,KAAK0zB,QAAQv6B,GAAKkF,GAIE,IAApB2B,KAAKm2B,YACPnB,EAAQz4B,EAASyD,KAAK0zB,UAI1BsC,EAAWz8B,UAAUo9B,cAAgB,SAAuBp6B,EAASpD,GACnE,IAAIy9B,EAAa52B,KAEjB2zB,EAAUp3B,OAASe,GAAW,SAAUe,GACtC,OAAOu4B,EAAWH,WAtUR,EAsU8Bt9B,EAAGkF,MAC1C,SAAU42B,GACX,OAAO2B,EAAWH,WAvUT,EAuU8Bt9B,EAAG87B,OAIvCe,EAvGQ,GA0YbU,EAAY,WACd,SAASl8B,EAAQq8B,GACf72B,KAAKszB,GA1ZAvf,IA2ZL/T,KAAK0zB,QAAU1zB,KAAKwzB,YAASl2B,EAC7B0C,KAAK21B,aAAe,GAEhBtC,IAASwD,IACS,mBAAbA,GAvHb,WACE,MAAM,IAAIh3B,UAAU,sFAsHkBi3B,GAClC92B,gBAAgBxF,EA9atB,SAA2B+B,EAASs6B,GAClC,IACEA,GAAS,SAAwBx4B,GAC/B5D,EAAQ8B,EAAS8B,MAChB,SAAuB42B,GACxBv6B,EAAO6B,EAAS04B,MAElB,MAAO36B,GACPI,EAAO6B,EAASjC,IAsaYy8B,CAAkB/2B,KAAM62B,GApHxD,WACE,MAAM,IAAIh3B,UAAU,yHAmH8Cm3B,IA6PlE,OA/DAx8B,EAAQjB,UAAU09B,MAAQ,SAAgB/D,GACxC,OAAOlzB,KAAK3D,KAAK,KAAM62B,IA2CzB14B,EAAQjB,UAAU29B,QAAU,SAAkB3rB,GAC5C,IACItL,EADUD,KACYC,YAE1B,OAAIuxB,EAAWjmB,GAHDvL,KAIG3D,MAAK,SAAUgC,GAC5B,OAAO4B,EAAYxF,QAAQ8Q,KAAYlP,MAAK,WAC1C,OAAOgC,QAER,SAAU42B,GACX,OAAOh1B,EAAYxF,QAAQ8Q,KAAYlP,MAAK,WAC1C,MAAM44B,QAVEj1B,KAeC3D,KAAKkP,EAAUA,IAGzB/Q,EArQO,GAuThB,OA/CAk8B,EAAUn9B,UAAU8C,KAAOA,EAC3Bq6B,EAAUj5B,IA1fV,SAAaiO,GACX,OAAO,IAAIsqB,EAAWh2B,KAAM0L,GAASnP,SA0fvCm6B,EAAUS,KAtbV,SAAczrB,GAEZ,IAAIuqB,EAAcj2B,KAElB,OAAK8I,EAAQ4C,GAKJ,IAAIuqB,GAAY,SAAUx7B,EAASC,GAExC,IADA,IAAIrB,EAASqS,EAAQrS,OACZF,EAAI,EAAGA,EAAIE,EAAQF,IAC1B88B,EAAYx7B,QAAQiR,EAAQvS,IAAIkD,KAAK5B,EAASC,MAP3C,IAAIu7B,GAAY,SAAUr0B,EAAGlH,GAClC,OAAOA,EAAO,IAAImF,UAAU,wCAiblC62B,EAAUj8B,QAAUm5B,EACpB8C,EAAUh8B,OApYV,SAAkBu6B,GAEhB,IACI14B,EAAU,IADIyD,KACYqzB,GAE9B,OADA34B,EAAO6B,EAAS04B,GACT14B,GAgYTm6B,EAAUU,cA7iCV,SAAsBC,GACpB1F,EAAoB0F,GA6iCtBX,EAAUY,SA1iCV,SAAiBC,GACf3F,EAAO2F,GA0iCTb,EAAUc,MAAQ5F,EAqClB8E,EAAUpoB,SAlCV,WACE,IAAImpB,OAAQ,EAEZ,QAAsB,IAAX7vB,EACT6vB,EAAQ7vB,OACH,GAAoB,oBAATC,KAChB4vB,EAAQ5vB,UAER,IACE4vB,EAAQhU,SAAS,cAATA,GACR,MAAOnpB,GACP,MAAM,IAAI0B,MAAM,4EAIpB,IAAI+E,EAAI02B,EAAMj9B,QAEd,GAAIuG,EAAG,CACL,IAAI22B,EAAkB,KACtB,IACEA,EAAkBp+B,OAAOC,UAAU6O,SAAS3O,KAAKsH,EAAEtG,WACnD,MAAOH,IAIT,GAAwB,qBAApBo9B,IAA2C32B,EAAE42B,KAC/C,OAIJF,EAAMj9B,QAAUk8B,GAKlBA,EAAUl8B,QAAUk8B,EAEbA,GAtoCyDt8B,EAAOD,QAAUo3B,M,uKCLjF,aAKI,WAAoBqG,GAAA,KAAAA,eAJZ,KAAAlnB,YAAc,IAAIC,EAAA,EAsC9B,OApCI,YAAAknB,QAAA,WAAY,MAAO,2BAAoB73B,KAAK43B,eAI5C,YAAAE,MAAA,sBACI,OAAO,IAAIt9B,SAAuB,SAAOC,EAASC,GAAM,+C,+CACpD,IACU,EAAiB,SAACiB,GACpB,GAAqB,gCAAjBA,EAAM2Z,QACW,+BAAjB3Z,EAAM2Z,QACW,0BAAjB3Z,EAAM2Z,OAFV,CAKA,IAAMyiB,EAAgBp8B,EAAM7C,KAC5B2B,EAAQs9B,GACR54B,OAAOgP,oBAAoB,UAAW,KAG1ChP,OAAO6O,iBAAiB,UAAW,GAE7B,EAAc7O,OAAOwO,KAAK,UAAG3N,KAAK0Q,YAAYrM,KAAI,2CAAmCrE,KAAK43B,aAAY,6BAA6B,SAAU,sCAE7I,EAAYz4B,OAAOiuB,aAAY,YACN,IAAvB,EAAY4K,SACZ74B,OAAO84B,cAAc,GACrB16B,YAAW,WACP7C,EAAO,mBACR,OAER,KAEP,MAAOqC,GACHrC,EAAO,mB,oBAIvB,EAvCA,G,QCHA,MAAMw9B,EAAgB,YAAe,gBAAiB,CAClD5X,IAAK,IAAM,8BAAgBjkB,KAAKqB,GAAK,IAAIA,EAAEy6B,oBCI/C,8BACI,KAAAN,QAAU,WAAM,qCAmBpB,OAjBU,YAAAC,MAAN,W,gIACmB,SAAMI,EAAcJ,MAAM,CAAEM,YAAa,CAAC,Y,cAAnD/2B,EAAS,UAEXg3B,EAAiC,QAAnB,EAAAh3B,aAAM,EAANA,EAAQg3B,mBAAW,eAAE70B,OACnC,MACsB,GAAM00B,EAAcI,yB,OAApCC,EAAgB,SACtBF,EAAwC,QAA1B,EAAAE,aAAa,EAAbA,EAAeF,mBAAW,eAAE70B,M,iBAG9C,OAAK60B,EAKY,IAAM,IAAI,KAAWlxB,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,iCAAgC,IAAI,KAAUN,QAAQ,CAAEP,MAAO60B,OAJhIG,MAAM,qEACN,K,OAIG,SADU,SACKrtB,Q,OAAtB,MAAO,CAAP,EAAO,kBAEf,EApBA,GCLA,MAAMstB,EAAa,YAAe,aAAc,CAC5CnY,IAAK,IAAM,8BAAgBjkB,KAAMqB,GAAM,IAAIA,EAAEg7B,iB,WCyBjD,0BAUI,KAAAb,QAAU,WAAM,mCA4DpB,OArEiB,EAAA7wB,KAAb,W,8GACI,SAAMyH,EAAA,EAAIC,S,cAAV,SAEA+pB,EAAWjmB,WAAW,CAClBmmB,SAAU,4EACVC,OAAQ,CAAC,UAAW,SACpBC,oBAAoB,I,YAKtB,YAAAf,MAAN,W,gIAGuB,SAAMW,EAAWK,U,OAEpC,OAFMC,EAAa,UAEY,QAA1B,EAAAA,aAAU,EAAVA,EAAYC,sBAAc,eAAEC,UAGjCh6B,QAAQ8oB,IAAI,cAAegR,GAErB71B,EAAc,CAAEM,MAAOu1B,EAAWC,eAAeC,SACtC,IAAM,IAAI,KAAW9xB,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,+BAA8B,IAAI,KAAUN,QAAQb,MAL9G,CAAP,EAAO,CAAEsC,OAAQ,Y,OAOrB,OAFMF,EAAW,UAEHC,GAGQ,GAAMD,EAAS6F,QAF1B,CAAP,EAAO,CAAE3F,OAAQ,Y,OASrB,OAPMuyB,EAAgB,UAERmB,SAAW,SACzBnB,EAAcoB,MAAQJ,EAAWI,MAEjCl6B,QAAQ8oB,IAAI,YAAagQ,GAElB,CAAP,EAAOA,WAmCf,EAtEA,GA0EA,IACI,EAA0B/wB,OAC5B,MAAOjK,GACLkC,QAAQ8oB,IAAI,6CAA8ChrB,GChG1C,IAAO,QAAnB,ICRGq8B,EAKAC,EDMX,0BACI,KAAAxB,QAAU,WAAM,+BAiEpB,OA9DY,YAAAyB,gBAAR,WACI,OAAO,IAAI9+B,SAAc,SAACC,GACtB,IAAMgC,EAAS1B,SAASQ,cAAc,UACtCR,SAASyC,KAAKpB,YAAYK,GAC1BA,EAAOX,IAAM,uFACbW,EAAOhB,OAAS,WAAM,OAAAhB,SAIvB,EAAA8+B,KAAP,WACI,IAAMC,EAAK,WAAM,OAAA9E,KAAK+E,MAA4B,OAArB,EAAI/E,KAAKC,WAAqBvsB,SAAS,IAAIjD,UAAU,IAClF,OAAOq0B,IAAOA,IAAOA,IAAOA,IAAOA,IAAOA,IAAOA,IAAOA,KAG5D,YAAA1B,MAAA,sBACI,OAAO,IAAIt9B,SAAQ,SAAOC,EAASC,GAAM,+C,sEAEjC,O,sBAAA,GAAMsF,KAAKs5B,mB,OAqBE,OArBb,SAEMn6B,OAAQu6B,QAAQC,KAAK3yB,KAAK,CAC5B2xB,SAAU,yBACViB,MAAO,QACPC,YAAa,WAAG,IAAIlpB,EAAA,GAActM,KAAI,6BACtCghB,MAAO,GACPyU,MAAOC,EAAsBR,OAC7BS,UAAU,IAIdj/B,SAASiT,iBAAiB,0BAA0B,SAACrS,MAElD,CAAE2U,MAAM,IAEXvV,SAASiT,iBAAiB,0BAA0B,SAACjR,GACjDrC,EAAOqC,KACR,CAAEuT,MAAM,IAGE,GAAYnR,OAAQu6B,QAAQC,KAAKb,U,OAE7B,OAFXhgC,EAAO,SAEI,GAAMqO,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,6BAA6B,CAC/EjB,OAAQ,OACRF,YAAa,UACbC,QAAS,CACL,eAAgB,aAEpB3B,KAAMyC,KAAKC,UAAU,CACjB+1B,QAASnhC,EAAKohC,cAAcC,c,OAOd,OAdhB70B,EAAW,UAWHC,IACV7K,EAAO,mBAEW,GAAM4K,EAAS6F,Q,cAA/B4sB,EAAgB,SACtBt9B,EAAQs9B,G,6BAGRr9B,EAAO,mB,kCAIvB,EAlEA,GENQ0/B,EAAoB,IAAO,gBAGnC,0BACI,KAAAvC,QAAU,WAAM,kCA6BpB,OA3BI,YAAAC,MAAA,sBACI,OAAO,IAAIt9B,SAAQ,SAAOC,EAASC,GAAM,+C,sEAEV,O,sBAAA,GAAM0/B,EAAgBC,a,OAE5B,OAFXC,EAAiB,SAEN,GAAMnzB,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,6BAA6B,CAC/EjB,OAAQ,OACRF,YAAa,UACbC,QAAS,CACL,eAAgB,aAEpB3B,KAAMyC,KAAKC,UAAU,CACjB+1B,QAASK,EAAeh1B,SAASi1B,mB,OAOnB,OAdhBj1B,EAAW,UAWHC,IACV7K,EAAO,mBAEW,GAAM4K,EAAS6F,Q,cAA/B4sB,EAAgB,SACtBt9B,EAAQs9B,G,6BAGRr9B,EAAO,mB,kCAIvB,EA9BA,IDPA,SAAW0+B,GACPA,EAAuB,MAAI,QAC3BA,EAAuB,MAAI,QAF/B,CAGGA,IAAoBA,EAAkB,KAEzC,SAAWC,GACPA,EAAsB,SAAI,WAC1BA,EAAwB,WAAI,aAC5BA,EAAmB,MAAI,QACvBA,EAAqB,QAAI,GAJ7B,CAKGA,IAAgBA,EAAc,KEVjC,MAAMmB,EAAe,YAAe,eAAgB,CAChDla,IAAK,IAAM,8BAAgBjkB,KAAMqB,GAAM,IAAIA,EAAE+8B,mB,YCUjD,0BACI,KAAA5C,QAAU,WAAM,mCA6EpB,OA3EI,YAAAC,MAAA,eACQ4C,EACAC,EAFR,OAII,OAAO,IAAIngC,SAAQ,SAAOC,EAASC,GAAM,+C,uEA4CjC,O,sBAzCAggC,EAAc,IAAIhd,YAAY,cAAc,SAAO5kB,GAAI,+C,6EAEnDmG,QAAQ8oB,IAAI,eAAgBjvB,GAE5B4hC,WAAaxmB,SAEbjV,QAAQ8oB,IAAI,WAAYjvB,GAElB8hC,EAAS,8BACX9hC,EAAKmO,IAAI4zB,WAAWD,GAApB,YACMX,EAAUnhC,EAAKmO,IAAI9B,UAAUy1B,EAAOvhC,Q,iBAEtC,O,sBAAA,GAAMmhC,EAAavmB,S,cAAnB,S,+BAEAhV,QAAQ8oB,IAAI,+BAAgC,G,aAG/B,SAAM5gB,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,6BAA6B,CAC/EjB,OAAQ,OACRF,YAAa,UACbC,QAAS,CACL,eAAgB,aAEpB3B,KAAMyC,KAAKC,UAAU,CACjB42B,QAASb,O,OAOK,OAdhB30B,EAAW,UAWHC,IACV7K,EAAO,mBAEW,GAAM4K,EAAS6F,Q,OAA/B4sB,EAAgB,SACtBt9B,EAAQs9B,G,qCAIhB4C,EAAwBH,EAAc9c,YAAY,mBAAmB,WACjEid,WAAiBzmB,SACjBxZ,EAAO,oBAGX,GAAM8/B,EAAa7sB,KAAK,CACpB1G,IAAK,WAAG,IAAI0J,EAAA,GAActM,KAAI,gC,cADlC,S,6BAuBA3J,EAAO,mB,kCAIvB,EA9EA,GA0FAuE,QAAQ8oB,IAAI,UAEc,6C,kEACN,SAAM,IAAIgT,gB,cAAlB9zB,EAAQ,SAAwB,IAExChI,QAAQ8oB,IAAI,wBAA0B9gB,G,WCrGlC,IC2BI+zB,EAuCAC,EDlEJ,EAAY,IAAO,QAG3B,0BACI,KAAApD,QAAU,WAAM,oCAyGpB,OAvGU,YAAAC,MAAN,W,+HAGqB,OAFXoD,EAAkB,WAAG,IAAIvqB,EAAA,GAActM,KAAI,sCAA8B82B,EAAA,EAAY3hB,QAAU,YAAc,IAElG,GAAMrS,MAAM+zB,I,OAE7B,KAFM51B,EAAW,UAEHC,GACV,MAAM,IAAIvJ,MAAM,UAER,SAAMsJ,EAAS6F,Q,OAG3B,OAHMlE,EAAM,SAGL,CAAP,EAAO,IAAIzM,SAAQ,SAAOC,EAASC,GAAM,+C,6EA6EjC,O,uBAvEAggC,EAAc,IAAIhd,YAAY,cAAc,SAAO5kB,GAAI,+C,6EAEnD4hC,WAAaxmB,SAEP0mB,EAAS,mCACX9hC,EAAKmO,IAAI4zB,WAAWD,GAApB,YACM,EAAM9hC,EAAKmO,IAAI9B,UAAUy1B,EAAOvhC,Q,iBAElC,O,sBAAA,GAAM,EAAQ4a,S,cAAd,S,+BAEAhV,QAAQ8oB,IAAI,+BAAgC,G,aAG/B,SAAM5gB,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,+BAA+B,CACjFjB,OAAQ,OACRF,YAAa,UACbC,QAAS,CACL,eAAgB,aAEpB3B,KAAMyC,KAAKC,UAAU,CACjBk3B,YAAa,O,OAOC,OAdhB,EAAW,UAWH71B,IACV7K,EAAO,mBAEW,GAAM,EAASyQ,Q,OAA/B4sB,EAAgB,SACtBt9B,EAAQs9B,G,qCAKhBsD,EAAiB,SAAO1/B,GAAmB,+C,sEACvC,MAA4B,iBAAhBA,EAAU,OAOY,KAF5B0F,EAAS1F,EAAM7C,MAEVsM,QAAQ,WANf1K,EAAO,iBACP,KAUa,GAAMyM,MAAM,WAAG,IAAIwJ,EAAA,GAActM,KAAI,+BAA+B,CACjFjB,OAAQ,OACRF,YAAa,UACbC,QAAS,CACL,eAAgB,aAEpB3B,KAAMyC,KAAKC,UAAU,CACjBk3B,YAAa/5B,O,OAOC,OAdhBiE,EAAW,UAWHC,IACV7K,EAAO,mBAEW,GAAM4K,EAAS6F,Q,cAA/B4sB,EAAgB,SACtBt9B,EAAQs9B,G,YAGZ54B,OAAO6O,iBAAiB,UAAWqtB,GAEnCV,EAAkB,EAAQjd,YAAY,mBAAmB,WACrDid,WAAiBzmB,SACjBxZ,EAAO,oBAGX,GAAM,EAAQiT,KAAK,CACf1G,IAAKA,EACLq0B,kBAAmB,a,cAFvB,S,6BAQA5gC,EAAO,mB,2DAOvB,EA1GA,GEEA,2BA8BA,OA7BiB,EAAAD,QAAb,SAAqB4C,G,uFAEjB,OAAOA,EAAKkL,eACR,IAAK,QACD,OAAI4yB,EAAA,EAAY3hB,SAAW2hB,EAAA,EAAYjsB,WAC5B,CAAP,EAAO,IAAI,GACNisB,EAAA,EAAY3hB,QACV,CAAP,EAAO,IAAI,GAEJ,CAAP,EAAO,IAAI,GAEnB,IAAK,WACD,GAAI2hB,EAAA,EAAY3hB,QACZ,MAAO,CAAP,EAAO,IAAI,GACf,MAEJ,IAAK,SACD,GAAI2hB,EAAA,EAAY3hB,QACZ,MAAO,CAAP,EAAO,IAAI,GACf,MAEJ,IAAK,UACD,GAAI2hB,EAAA,EAAY3hB,QACZ,MAAO,CAAP,EAAO,IAAI,GAIvB,MAAO,CAAP,EAAO,IAAI,EAAwBnc,WAE3C,EA9BA,IDsBA,SAAY29B,GACR,kBACA,kBAFJ,CAAYA,MAAkB,KAuC9B,SAAYC,GACR,cACA,kCACA,oCACA,sBAJJ,CAAYA,MAAc,K,mBEnDnB,cAkBH,mBACI,cAAO,KAfH,EAAAzH,OAAgB,UAEhB,EAAA9iB,YAAc,IAAIC,EAAA,EAElB,EAAA4qB,iBAA6B,CAAE/1B,OAAQy1B,EAAeO,MAyDtD,EAAAC,WAAa,SAACpW,GACJ,cAAVA,EACAtqB,SAASyG,KAAKqN,UAAUzH,IAAI,iBAE5BrM,SAASyG,KAAKqN,UAAUqF,OAAO,kBAkBvC,EAAAwnB,aAAe,+F,uBAAY,SAAMvoB,EAAA,EAASC,SAAe,Y,OAA9B,2BAqH3B,EAAAuoB,iCAAmC,SAAChgC,GAChC,GAAIA,EAAM2Z,SAAW,EAAK5E,YAAYrM,KAGtC,IACI,IAAM,EAAUJ,KAAKmH,MAAMzP,EAAM7C,MACjC,IAAK,EAAQ0M,OACT,OAEJrG,OAAOgP,oBAAoB,UAAW,EAAKwtB,kCAEvC,EAAKC,mBACL,EAAKA,kBAAkB3nB,QAEJ,YAAnB,EAAQzO,QAER,EAAKq2B,SAASC,OAAS,EAAKD,SAASC,OAAO3sB,QAAO,SAAAhW,GAAK,OAAAA,EAAE4iC,gBAAkB,EAAQ7C,SAAS6C,iBAC7F,EAAKF,SAASC,OAAOniC,KAAK,EAAQu/B,UAClC,EAAK2C,SAASC,OAAOzQ,MAAM,SAACC,EAAG9rB,GAAM,OAAA8rB,EAAEyQ,gBAAkBv8B,EAAEu8B,cAAgB,IAAMzQ,EAAEyQ,cAAgBv8B,EAAEu8B,iBAAmB,KACxH,EAAKC,qBAAqB,EAAKH,SAASC,SAExC,EAAKG,qBAAqB,EAAQz2B,QAGxC,MAAMzI,MA/MR,IACI,EAAKm/B,MAAQzmB,aAAaC,QAAQ,QAEtC,MAAO3Y,GACHkC,QAAQ8oB,IAAI,kDAA2ChrB,I,OAGvD,EAAKm/B,OAAwB,KAAf,EAAKA,OAA+B,cAAf,EAAKA,OACxC,EAAKC,eAAelB,EAAemB,gBAEvCjpB,EAAA,EAASnF,iBAAiB,WAAW,SAACrS,GAClC,EAAKkgC,SAAWlgC,EAAM2mB,UAM1B,EAAK+Z,eACL,EAAKC,eAAe,EAAKb,YAGzBl+B,YAAW,WACP,EAAKg/B,oBAAmB,WAAM,OAAAppB,EAAA,EAASqpB,aACxC,K,EAyZX,OArcyC,iBAUrC,sBAAW,aAAQ,C,IAAnB,WACI,OAAOC,EAAoBptB,W,gCAG/B,sBAAI,8BAAe,C,IAAnB,WACI,OAAOrP,KAAKu7B,kB,gCAgCR,YAAAY,eAAR,SAAuB32B,EAAwByvB,QAAA,IAAAA,MAAA,IACvCj1B,KAAKu7B,iBAAiB/1B,SAAWA,IAGrCxF,KAAKu7B,iBAAmB,CACpB/1B,OAAQA,EACRyvB,OAAQA,GAEZj1B,KAAK08B,oBAAoB18B,KAAKu7B,oBAG5B,YAAAoB,gBAAN,W,oHACwB,YAAhB38B,KAAKwzB,OAAL,MACA,GAAMiJ,EAAoBn5B,SAASs5B,Y,OAAnC,S,iBAEJ,MAAO,CAAP,EAAuB,cAAhB58B,KAAKwzB,gBA2BR,YAAA6I,aAAR,sBACIr8B,KAAK68B,YAAc,IAAIriC,SAAQ,SAAAC,GAC3B8C,YAAW,0D,4DACP,SAAMyC,KAAKmiB,gB,cAAX,SACA1nB,I,kBAKE,YAAA0nB,aAAd,W,+HAE4B,O,sBAApB,EAAAniB,KAAoB,GAAMoiB,EAAA,EAAoB9e,SAASmf,MAAM,IAAmBqa,c,OAChE,OADhB,EAAKC,aAAe,SACpB,EAAA/8B,KAAgB,GAAMmT,EAAA,EAASC,SAAe,Y,cAA9C,EAAKyoB,SAAW,SAEZ77B,KAAK67B,UACL77B,KAAKg9B,YAAY,aACjBh9B,KAAKm8B,eAAelB,EAAegC,WAEnCj9B,KAAKm8B,eAAelB,EAAeiC,iB,+BAGvC3/B,YAAW,WACP0B,QAAQ8oB,IAAI,GACZ,EAAKoU,eAAelB,EAAeiC,oB,+BAKlC,YAAAC,UAAb,W,8GACI,SAAMn9B,KAAK68B,a,OACX,OADA,SACO,CAAP,EAAO78B,KAAK67B,SAASC,gBAGZ,YAAAsB,YAAb,W,8GACI,SAAMp9B,KAAK68B,a,OACX,OADA,SACO,CAAP,EAAO78B,KAAK+8B,sBAIhB,YAAAM,QAAA,WAAY,OAAOr9B,KAAKk8B,OAEhB,YAAAQ,oBAAR,SAA4BY,GACxBt9B,KAAKyP,KAAK,kBAAmB6tB,IAG1B,YAAAC,kBAAP,SAAyBhyB,GACrBvL,KAAK2P,GAAG,kBAAmBpE,IAGxB,YAAAiyB,sBAAP,SAA6BjyB,GACzBvL,KAAK6P,eAAe,kBAAmBtE,IAGnC,YAAAkyB,iBAAR,SAAyBpY,EAAc0S,GACnC/3B,KAAKyP,KAAK,eAAgB4V,EAAO0S,IAG9B,YAAAuE,eAAP,SAAsB/wB,GAClBvL,KAAK2P,GAAG,eAAgBpE,IAGrB,YAAAmyB,gBAAP,SAAuBnyB,GACnBvL,KAAK6P,eAAe,eAAgBtE,IAGjC,YAAAgxB,mBAAP,SAA0BhxB,GACtBvL,KAAKsQ,KAAK,eAAgB/E,IAGtB,YAAAywB,qBAAR,SAA6BmB,GACzBn9B,KAAKyP,KAAK,mBAAoB0tB,IAG3B,YAAAQ,mBAAP,SAA0BpyB,GACtBvL,KAAK2P,GAAG,mBAAoBpE,IAGzB,YAAAqyB,yBAAP,SAAgCryB,GAC5BvL,KAAK6P,eAAe,mBAAoBtE,IAGpC,YAAA0wB,qBAAR,SAA6Bl/B,GACzBiD,KAAKyP,KAAK,mBAAoB1S,IAG3B,YAAA8gC,mBAAP,SAA0BtyB,GACtBvL,KAAK2P,GAAG,mBAAoBpE,IAGzB,YAAAuyB,yBAAP,SAAgCvyB,GAC5BvL,KAAK6P,eAAe,mBAAoBtE,IAG/B,YAAAqxB,SAAb,W,8GACI,SAAM58B,KAAK+9B,kB,OACX,OADA,SACO,CAAP,EAAO/9B,KAAKwzB,gBAGhB,sBAAI,oBAAK,C,IAAT,WACI,OAAOxzB,KAAKk8B,O,gCAGhB,sBAAI,mBAAI,C,IAAR,WACI,MAAoC,UAA7B/8B,OAAO0G,SAAS4L,UAAqD,cAA7BtS,OAAO0G,SAASsP,SAA2B6lB,EAAmBz3B,OAASy3B,EAAmBgD,Q,gCAGrI,YAAAhB,YAAR,SAAoB3X,GACZrlB,KAAKwzB,SAAWnO,IAGpBrlB,KAAKwzB,OAASnO,EACdrlB,KAAKq8B,eACLr8B,KAAKy9B,iBAAiBpY,KAkCpB,YAAA4Y,YAAN,SAAkBC,G,sHAEG,OADXj3B,EAAMjH,KAAK+8B,aAAe,UAAG/8B,KAAK0Q,YAAYrM,KAAI,+BAAgC,UAAGrE,KAAK0Q,YAAYrM,KAAI,4BAC/F,IAAM,IAAI,KAAW8C,MAAMF,EAAK,IAAQ8J,KAAK1N,eAAeU,QAAQm6B,K,OAMrF,OANM54B,EAAW,UACJC,KAAOvF,KAAK+8B,eACrB/8B,KAAK+8B,cAAe,EACpB/8B,KAAKg8B,qBAAqBh8B,KAAK67B,SAASC,SAGrC,CAAP,EAAOx2B,WAGL,YAAA64B,kBAAN,SAAwBvqB,G,8GACH,UAAM,IAAI,KAAWzM,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,iCAAyBuP,K,OAC9E,SADE,SACalP,Q,OAC9B,MAAO,CAAP,EAAkB,UADH,kBAIb,YAAA05B,eAAN,SAAqBjF,G,8GACA,UAAM,IAAI,KAAWhyB,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,8BAAsBsb,mBAAmBwZ,M,OAC9F,SADE,SACaz0B,Q,OAC9B,MAAO,CAAP,EAAkB,UADH,kBAIb,YAAA25B,YAAN,SAAkBzG,G,8FACd53B,KAAK47B,kBAAoBz8B,OAAOwO,KAAK,UAAG3N,KAAK0Q,YAAYrM,KAAI,gCAAwBuzB,GAAgB,SAAU,sCAE/Gz4B,OAAO6O,iBAAiB,UAAWhO,KAAK27B,kC,WAGtC,YAAA2C,eAAN,SAAqB1G,G,oHAEF,OADTsB,EAAWl5B,KAAK67B,SAASC,OAAO3sB,QAAO,SAAAtU,GAAK,OAAAA,EAAEkhC,gBAAkBnE,KAAc,GACrE,IAAM,IAAI,KAAWzwB,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,gCAAwBuzB,GAAgB,IAAQ5W,OAAO3d,iB,cAA1G,SACJkC,KACP2zB,EAASqF,iBAAcjhC,EACvB0C,KAAKg8B,qBAAqBh8B,KAAK67B,SAASC,S,YAKlC,YAAAiC,eAAd,W,oHACI,OAAI/9B,KAAKzB,OAASy8B,EAAmBz3B,QAAWvD,KAAKk8B,MAWpC,IAAM,IAAI,KAAW71B,uBAAuBc,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,uBAAsB,IAAI,KAAUhB,iBAVpH,CAAP,EAAOrD,KAAKg9B,YAAY,kB,OAa5B,OAHM13B,EAAW,UAGJC,IACTvF,KAAKg9B,YAAY,aACjBh9B,KAAKw+B,WAAWl5B,EAASnC,QAAQlF,IAAI,kBACrC,KAGoB,MAApBqH,EAASE,OACF,CAAP,EAAOxF,KAAKg9B,YAAY,mBAGxB13B,EAASE,QAAU,KACnBgzB,MAAM,qB,aAGR,YAAAiG,iBAAN,SAAuB7qB,EAAkBulB,G,wHAEpB,OADXj2B,EAAc,CAAE0Q,SAAUA,EAAUulB,MAAOA,GAChC,IAAM,IAAI,KAAWhyB,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,yCAAwC,IAAI,KAAUhB,aAAa23B,EAAmBz3B,QAAQQ,QAAQb,K,OAEvH,UAF7CoC,EAAW,UAEiD6F,Q,OAOlE,OAPM9J,EAA6C,SAE/CiE,EAASC,IAAOlE,EAA0B00B,YAC1C/1B,KAAKw+B,WAAWl5B,EAASnC,QAAQlF,IAAI,kBACrC+B,KAAKg9B,YAAY,cAGd,CAAP,EAAO37B,WAGL,YAAAq9B,cAAN,W,sHACqB,UAAM,IAAI,KAAWv3B,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,qCAAqC,IAAQ0M,KAAK1N,aAAa23B,EAAmBz3B,U,OAEnG,UAF7C+B,EAAW,UAEiD6F,Q,OAOlE,OAPM9J,EAA6C,SAE/CiE,EAASC,IAAOlE,EAA0B00B,YAC1C/1B,KAAKw+B,WAAWl5B,EAASnC,QAAQlF,IAAI,kBACrC+B,KAAKg9B,YAAY,cAGd,CAAP,EAAO37B,WAGL,YAAAs9B,SAAN,SAAe/qB,EAAkBulB,EAAeyF,G,oHAE3B,OADXC,EAAU,CAAEjrB,SAAUA,EAAUulB,MAAOA,EAAOyF,SAAUA,GAC7C,IAAM,IAAI,KAAWz3B,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,+BAA+B,IAAQ0M,KAAKhN,QAAQ86B,K,OAEzF,SAFd,SAE6B1zB,Q,OAC9C,MAAO,CAAP,EAD+B,kBAI7B,YAAA2zB,uBAAN,SAA6BlrB,G,oHAER,OADXirB,EAAU,CAAEjrB,SAAUA,GACX,IAAM,IAAI,KAAWzM,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,+CAA+C,IAAQ0M,KAAKhN,QAAQ86B,K,OACxI,MAAO,CAAP,EADiB,SACDt5B,YAGd,YAAAw5B,eAAN,SAAqBC,G,8GACA,UAAM,IAAI,KAAW73B,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,sCAAsC,IAAQ0M,KAAKhN,QAAQ,CAAEi7B,gBAAiBA,M,OAClJ,MAAO,CAAP,EADiB,SACDz5B,YAGd,YAAA05B,kBAAN,SAAwBrrB,G,8GACH,UAAM,IAAI,KAAWzM,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,yCAAyC,IAAQ0M,KAAK1N,eAAeU,QAAQ,CAAE6P,SAAUA,M,OAC7J,MAAO,CAAP,EADiB,SACDrO,YAGd,YAAAuyB,MAAN,SAAYkH,EAAyBJ,G,wHAEhB,OADX17B,EAAc,CAAE87B,gBAAiBA,EAAiBJ,SAAUA,GACjD,IAAM,IAAI,KAAWz3B,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,uBAAsB,IAAI,KAAUN,QAAQb,K,OAElF,UAFxBoC,EAAW,UAE4B6F,Q,OAO7C,OAPM9J,EAAwB,SAE1BiE,EAASC,KACTvF,KAAKw+B,WAAWl5B,EAASnC,QAAQlF,IAAI,kBACrC+B,KAAKg9B,YAAY,cAGd,CAAP,EAAO37B,WAIL,YAAA69B,cAAN,SAAoBtH,G,oHACM,SAAM,EAAqBn9B,QAAQm9B,I,OACxC,SADK,SACeE,S,OAErC,OAFMxyB,EAAW,SACjBtF,KAAKm/B,oBAAoB75B,GAClB,CAAP,EAAOA,WAGL,YAAA85B,OAAN,W,oHACqB,UAAM,IAAI,KAAWj4B,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,6BAA6B,IAAQ0M,O,OACzG,GAAwB,OADlBzL,EAAW,UACJE,QAAsC,MAApBF,EAASE,OACpC,MAAM,IAAIxJ,MAAM,sB,OAIhBsJ,EAASC,KACTvF,KAAKw+B,gBAAWlhC,GAEiB,UAA7B6B,OAAO0G,SAAS4L,UAAqD,cAA7BtS,OAAO0G,SAASsP,SACxDhW,OAAO0G,SAASlL,KAAO,IAEvBwE,OAAO0G,SAASsO,U,YAKtB,YAAAkrB,cAAN,SAAoBxrB,EAAgB5X,EAAc2iC,G,oHAE7B,OADXU,EAAQ,CAAEzrB,OAAQA,EAAQ5X,KAAMA,EAAM2iC,SAAUA,GACrC,IAAM,IAAI,KAAWz3B,MAAM,UAAGnH,KAAK0Q,YAAYrM,KAAI,mCAAmC,IAAQ0M,KAAKhN,QAAQu7B,K,OAC5H,OADiB,SACJ/5B,GACF,CAAP,GAAO,GAEJ,CAAP,GAAO,WAGH,YAAAi5B,WAAR,SAAmB7E,GACf35B,KAAKk8B,MAAQvC,EAEb,IACIlkB,aAAaK,QAAQ,OAAQ9V,KAAKk8B,OACpC,MAAOn/B,GACLkC,QAAQ8oB,IAAI,iDAA0ChrB,MAIxD,YAAAwiC,aAAN,W,wGAIM,YAAAC,mBAAN,W,uFACI,MAAO,CAAP,EAAOx/B,KAAK67B,iBAGV,YAAA7lB,YAAN,W,8GACI,SAAMhW,KAAK68B,a,OACX,OADA,SACO,CAAP,EAAO78B,KAAK67B,kBAGV,YAAA4D,eAAN,W,8GACI,SAAMz/B,KAAK68B,a,OACX,OADA,SACO,CAAP,EAAO78B,KAAK67B,kBAIT,YAAAsD,oBAAP,SAA2BpH,GAEvB,OADA/3B,KAAKyP,KAAK,iBAAkBsoB,GACpBA,EAAcvyB,QAClB,IAAK,UACDxF,KAAKw+B,WAAWzG,EAAc2H,QAC9B1/B,KAAKg9B,YAAY,aACjB,MACJ,IAAK,YACDxE,MAAM,cACN,MACJ,IAAK,uBACDA,MAAM,wBACN,MACJ,IAAK,UACDx4B,KAAKw+B,WAAWzG,EAAc2H,QAE9B1/B,KAAKy9B,iBAAiB,oBAAqB1F,GAC3C/3B,KAAKg9B,YAAY,uBA/bd,EAAA3tB,UAAY,IAAIotB,EAmcnC,EArcO,CAAkC,gBChBzC,yE,OA2FY,EAAA9yB,KAAO,WAAM,48DAmCH,EAAQ,KAAsC,2NAG9C,EAAQ,KAAwC,yNAGhD,EAAQ,KAAuC,6M,EAMrE,OA1I+B,iBAErB,YAAAkP,kBAAN,W,yGACI7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB3J,KAAK6O,UAAUzH,IAAI,QACnBpH,KAAK2/B,cAELpiC,YAAW,WACP,EAAKsyB,MAAM+P,QAAU,O,WAIf,YAAA9H,MAAd,W,8HACI93B,KAAKnD,aAAa,OAAQ,IAEpBgjC,EAAkB7/B,KAAKsP,cAAc,4BACrCwwB,EAAkB9/B,KAAKsP,cAAc,mB,iBAI9B,O,sBAAA,GAAM,EAAoBhM,SAASw0B,MAAM+H,EAAgBxhC,MAAOyhC,EAAgBzhC,Q,cAAzFgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,eAIL1X,EAAQmE,QAA6C,YAAnBnE,EAAQmE,OAA1D,a,GACMu6B,EAAqB//B,KAAKsP,cAAc,yBAEP,yBAAnBjO,EAAQmE,OAAxB,YAEAxF,KAAKnD,aAAa,OAAQ,I,iBAElB,O,sBAAA,GAAM,EAAoByG,SAASw7B,uBAAuBe,EAAgBxhC,Q,OAA9E,OAAI,UACkBtD,SAASuU,cAAc,uBAC/BmB,UAAY,iDACtB,MAEAsvB,EAAmBpR,UAAY,qCAC/B,K,cAGJ3uB,KAAK+Y,gBAAgB,Q,+BAEiB,YAAnB1X,EAAQmE,OAC/BxF,KAAKggC,qBAEDD,IACAA,EAAmBpR,UAAY3uB,KAAKigC,iBAAiC5+B,EAAQmE,S,wCAGlF,GAAwBnE,EAAQ6+B,WACnC,IAAUvhC,KAA2B0C,EAAQ6+B,YACnCC,EAAiBngC,KAAKsP,cAAc,iBAAU3Q,EAAG,UAEnDwhC,EAAexR,UAAgCttB,EAAQ6+B,WAAWvhC,I,qCAK1E,YAAAqhC,mBAAR,WACkChgC,KAAKsP,cAAc,4BAC3BugB,MAAMC,QAAU,SAGlC,YAAA6P,YAAR,sBACwB3/B,KAAKsP,cAAc,gBAC3BtB,iBAAiB,SAAS,+F,uBAAY,SAAMhO,KAAK83B,S,OAAX,6BAElD93B,KAAKgO,iBAAiB,WAAW,SAAMrS,GAAK,+C,kEACtB,UAAdA,EAAMgD,IAAN,MACA,GAAMqB,KAAK83B,S,OAAX,S,qCAGR,GAAGz4B,MAAM5F,KAAKuG,KAAKsE,iBAAiB,oBAAoBC,SAAS,SAAC6qB,GAC9DA,EAAOphB,iBAAiB,SAAS,0D,kEAE7B,OADMoyB,EAAahR,EAAOj0B,aAAa,SACvC,GAAM,EAAoBmI,SAAS47B,cAAckB,I,cAAjD,S,kBAKJ,YAAAH,iBAAR,SAAyBz6B,GACrB,OAAQA,GACJ,IAAK,YAAa,MAAO,mCACzB,IAAK,uBAAwB,MAAO,uBACpC,IAAK,UAAW,MAAO,qCACvB,QAAS,MAAO,kBAmD5B,EA1IA,CAA+BwT,aAmJ/BrG,eAAeC,OAAO,aAAc,G,mBClJpC,yE,OAkHY,EAAAjJ,KAAO,WAAM,qHAGuC,EAAQ,IAA0C,o+C,EAoClH,OAzJ+B,iBACrB,YAAAkP,kBAAN,W,2GACI7Y,KAAKnD,aAAa,QAAS,IAC3B+b,uBAAsB,WAClBA,uBAAsB,WAAM,SAAKG,gBAAgB,eAGrD/Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB,YAAMkP,kBAAiB,WAGH7Y,KAAKsP,cAAc,gBAC3BtB,iBAAiB,SAAS,+F,uBAAY,SAAMhO,KAAK83B,S,OAAX,6BAGlD93B,KAAKsP,cAAc,mBACdtB,iBAAiB,SAAS,WAAM,OAAAqyB,EAAA,EAAcvnB,YAAY/d,SAASQ,cAAc,2BAEtFyE,KAAKsP,cAAc,0BACdtB,iBAAiB,SAAS,WAAM,OAAAqyB,EAAA,EAAcvnB,YAAY/d,SAASQ,cAAc,yBAGtFyE,KAAKgO,iBAAiB,WAAW,SAAMrS,GAAK,+C,kEACtB,UAAdA,EAAMgD,IAAN,MACA,GAAMqB,KAAK83B,S,OAAX,S,sCAGFwI,EAAkBtgC,KAAKsP,cAAc,qBAE3BtB,iBAAiB,WAAW,+F,uBAAY,SAAMhO,KAAK2Y,gB,OAAX,6BAExD2nB,EAAgBtyB,iBAAiB,qBAAqB,SAAC+J,GAEnD,IAAM+f,EAAuB/f,EAAKuK,OAE5Bie,EAAkCxlC,SAASQ,cAAc,gCAC/DglC,EAAgC1jC,aAAa,WAAYi7B,EAAMoB,UAC/DqH,EAAgC1jC,aAAa,WAAYi7B,EAAMlkB,UAAY,IAC3E2sB,EAAgC1jC,aAAa,QAASi7B,EAAMqB,OAAS,IAErEkH,EAAA,EAAcvnB,YAAYynB,GAE1BA,EAAgCvyB,iBAAiB,UAAW,EAAK2K,iB,WAK3D,YAAAmf,MAAd,W,8HACI93B,KAAKnD,aAAa,OAAQ,IAEhBsC,OAAQqhC,cACRrhC,OAAQqhC,aAAaC,WAAWC,WAEpCb,EAAkB7/B,KAAKsP,cAAc,4BACrCwwB,EAAkB9/B,KAAKsP,cAAc,mB,iBAI9B,O,sBAAA,GAAM,EAAoBhM,SAASw0B,MAAM+H,EAAgBxhC,MAAOyhC,EAAgBzhC,Q,cAAzFgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,kBAGL1X,EAAQmE,QAA6C,YAAnBnE,EAAQmE,OAC1D,GAAMxF,KAAK2Y,gBADX,M,cACA,S,kBACuBtX,EAAQmE,QAA6C,YAAnBnE,EAAQmE,OAA1D,a,GACDu6B,EAAqB//B,KAAKsP,cAAc,yBAEP,yBAAnBjO,EAAQmE,OAAxB,aAEAxF,KAAKnD,aAAa,OAAQ,I,iBAElB,O,uBAAA,GAAM,EAAoByG,SAASw7B,uBAAuBe,EAAgBxhC,Q,OAA9E,OAAI,UACAgiC,EAAA,EAAcvnB,YAAY/d,SAASQ,cAAc,wBACjD,MAEAwkC,EAAmBpR,UAAY,qCAC/B,K,cAGJ3uB,KAAK+Y,gBAAgB,Q,iCAEiB,YAAnB1X,EAAQmE,OAE/BxF,KAAKggC,qBAEDD,IACAA,EAAmBpR,UAAY3uB,KAAKigC,iBAAiC5+B,EAAQmE,S,wCAGlF,GAAwBnE,EAAQ6+B,WACnC,IAAUvhC,KAA2B0C,EAAQ6+B,YACnCC,EAAiBngC,KAAKsP,cAAc,iBAAU3Q,EAAG,UAEnDwhC,EAAexR,UAAgCttB,EAAQ6+B,WAAWvhC,I,qCAK1E,YAAAqhC,mBAAR,WACkChgC,KAAKsP,cAAc,4BAC3BugB,MAAMC,QAAU,SAIlC,YAAAmQ,iBAAR,SAAyBz6B,GACrB,OAAQA,GACJ,IAAK,YAAa,MAAO,mCACzB,IAAK,uBAAwB,MAAO,uBACpC,IAAK,UAAW,MAAO,qCACvB,QAAS,MAAO,kBA2C5B,EAzJA,CAA+B66B,EAAA,GA2J/B1tB,eAAeC,OAAO,eAAgB,G,kBC3JtC,yE,OAwBY,EAAAjJ,KAAO,WAAM,2L,EAmDzB,OA3E+B,iBAErB,YAAAkP,kBAAN,W,8GAII,OAHA7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB3J,KAAK2gC,eAAiB3gC,KAAKsP,cAAc,YACzCtP,KAAK2/B,cACL,GAAM3/B,KAAKwS,c,cAAX,S,YAGU,YAAAA,WAAd,W,2GACUouB,EAAe5gC,KAAKsP,cAAc,kBAC3BT,UAAUzH,IAAI,UAE3Bw5B,EAAa/jC,aAAa,QAAS,QACnC+jC,EAAa/Q,MAAM+P,QAAU,IACV5/B,KAAKsP,cAAc,oBAC3BT,UAAUzH,IAAI,WAEzB7J,YAAW,WACPqjC,EAAa1sB,SACb,EAAKysB,eAAelwB,UAAY,8BACjC,M,WAWD,YAAAowB,mBAAN,SAAyBxb,EAAc/f,G,qHAC3B+f,G,IACC,wB,IAKA,4B,IAIA,yB,IAQA,mC,IAOA,gC,mBApBD,Y,OAGA,OADArlB,KAAK2gC,eAAelwB,UAAY,4BAChC,M,OAGA,UAAM,IAAI,KAAmB/K,OAAO,CAChCC,QAAS,aACTvI,QAAS,wEACTwI,QAAS,CAAC,S,OAGd,OANA,SAMA,M,OAEA,UAAM,IAAI,KAAmBF,OAAO,CAChCC,QAAS,eACTvI,QAAS,mEACTwI,QAAS,CAAC,S,OAEd,OALA,SAKA,M,OAIA,OAFIN,IACAtF,KAAK2gC,eAAelwB,UAAa,gDAAyCnL,EAASsO,SAAWtO,EAASsO,SAAW,GAAE,oBAAYtO,EAAS6zB,MAAQ7zB,EAAS6zB,MAAQ,GAAE,uBAAe7zB,EAAS4zB,SAAQ,oCACxM,M,aAGM,cAAV7T,EAAA,OACA,GAAM5W,EAAA,EAAIqyB,QAAQ9gC,O,cAAlB,S,eAEA,SAAMyO,EAAA,EAAIsyB,OAAO/gC,KAAM,S,QAAvB,S,qCAKA,YAAA2/B,YAAR,sBACI,EAAoBr8B,SAASg5B,gBAAgB,SAACjX,EAAO/f,GAAa,SAAKu7B,mBAAmBxb,EAAO/f,OAEzG,EA3EA,CAA+B0T,aA6E/BrG,eAAeC,OAAO,aAAc,GC9EpC,6E,OAiDY,EAAAjJ,KAAO,WAAM,8DAEG,EAAKuvB,SAAQ,6GAGe,EAAKA,SAAQ,ubAOoF,EAAKC,MAAK,kZAOD,EAAKvlB,SAAQ,iO,EAO/K,OA3E8C,iBACpC,YAAAiF,kBAAN,W,8FACA7Y,KAAKyQ,UAAYzQ,KAAK2J,OAClB3J,KAAK6O,UAAUzH,IAAI,QACnBpH,KAAK2/B,c,WAGD,YAAAA,YAAR,sBACUE,EAAkB7/B,KAAKsP,cAAc,mBACrC0xB,EAAehhC,KAAKsP,cAAc,gBAEpBtP,KAAKsP,cAAc,mBAC3BtB,iBAAiB,SAAS,0D,wEAElChO,KAAKnD,aAAa,OAAQ,I,iBAEb,O,sBAAA,GAAM,EAAoByG,SAASm7B,iBAAiBoB,EAAgBxhC,MAAO2iC,EAAa3iC,Q,cAAjGgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,WAGzB,GAAwB1X,EAAQ6+B,WAC5B,IAAUvhC,KAA2B0C,EAAQ6+B,YACnCC,EAAiBngC,KAAKsP,cAAc,iBAAU3Q,EAAG,UAEnDwhC,EAAexR,UAAgCttB,EAAQ6+B,WAAWvhC,SAEjD0C,EAAQ00B,YAC3BgK,EAAqB//B,KAAKsP,cAAc,4BAG1CywB,EAAmBpR,UAA6BttB,EAAQ4/B,OAAOl2B,KAAK,M,qBAMpF,sBAAY,uBAAQ,C,IAApB,WACI,OAAO/K,KAAK7E,aAAa,a,gCAG7B,sBAAY,uBAAQ,C,IAApB,WACI,OAAO6E,KAAK7E,aAAa,a,gCAG7B,sBAAY,oBAAK,C,IAAjB,WACI,OAAO6E,KAAK7E,aAAa,U,gCA6BjC,EA3EA,CAA8C6d,aA+E9CrG,eAAeC,OAAO,6BAA8B,GC9EpD,6E,OAsDY,EAAAjJ,KAAO,WAAM,qHAGuC,EAAQ,IAA0C,4DAChF,EAAKuvB,SAAQ,wJAIa,EAAKA,SAAQ,qdAOoF,EAAKC,OAAS,GAAE,ubAQP,EAAKvlB,UAAY,GAAE,iU,EAWzL,OAxF+C,iBACrC,YAAAiF,kBAAN,W,8FACI7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB,YAAMkP,kBAAiB,WACvB7Y,KAAK2/B,c,WAGD,YAAAA,YAAR,sBACUE,EAAkB7/B,KAAKsP,cAAc,mBACrC0xB,EAAehhC,KAAKsP,cAAc,gBACpBtP,KAAKsP,cAAc,mBAE3BtB,iBAAiB,SAAS,0D,wEAElChO,KAAKnD,aAAa,OAAQ,I,iBAEb,O,sBAAA,GAAM,EAAoByG,SAASm7B,iBAAiBoB,EAAgBxhC,MAAO2iC,EAAa3iC,Q,cAAjGgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,WAGzB,GAAwB1X,EAAQ6+B,WAC5B,IAAUvhC,KAA2B0C,EAAQ6+B,YACnCC,EAAiBngC,KAAKsP,cAAc,iBAAU3Q,EAAG,UAEnDwhC,EAAexR,UAAgCttB,EAAQ6+B,WAAWvhC,SAEjD0C,EAAQ00B,WAMjC/1B,KAAKuiB,cAAc,IAAIC,YAAY,YACnCxiB,KAAKkU,WANC6rB,EAAqB//B,KAAKsP,cAAc,4BAG1CywB,EAAmBpR,UAA6BttB,EAAQ4/B,OAAOl2B,KAAK,M,qBAWpF,sBAAY,uBAAQ,C,IAApB,WACI,OAAO/K,KAAK7E,aAAa,a,gCAG7B,sBAAY,uBAAQ,C,IAApB,WACI,OAAO6E,KAAK7E,aAAa,a,gCAG7B,sBAAY,oBAAK,C,IAAjB,WACI,OAAO6E,KAAK7E,aAAa,U,gCAqCjC,EAxFA,CAA+CklC,EAAA,GA4F/C1tB,eAAeC,OAAO,+BAAgC,G,yBC5FtD,yE,OAiEY,EAAAsuB,eAAiB,WAAM,sfAevB,EAAAv3B,KAAO,WAAM,86D,EA0CzB,OA1HsC,iBAC5B,YAAAkP,kBAAN,W,uFAGI,OAFA7Y,KAAK6O,UAAUzH,IAAI,QAEfpH,KAAK6nB,aAAa,WAClB7nB,KAAKyQ,UAAYzQ,KAAKkhC,iBACtB,MAGJlhC,KAAKyQ,UAAYzQ,KAAK2J,OACtB3J,KAAK2/B,c,YAGK,YAAAhB,SAAd,W,kIAYI,GAXMkB,EAAkB7/B,KAAKsP,cAAc,mBACrC0xB,EAAehhC,KAAKsP,cAAc,gBAClCwwB,EAAkB9/B,KAAKsP,cAAc,mBACrC6xB,EAAyBnhC,KAAKsP,cAAc,2BAC5CywB,EAAqB//B,KAAKsP,cAAc,0BAE3Bqf,UAAY,GAC/B,GAAGtvB,MAAM5F,KAAKuG,KAAKsE,iBAAiB,WAAWC,SAAQ,SAACC,GACpDA,EAAQmqB,UAAY,MAGpBmR,EAAgBzhC,QAAU8iC,EAAuB9iC,MAEjD,OADA0hC,EAAmBpR,UAAY,6CAC/B,IAGJ3uB,KAAKnD,aAAa,OAAQ,I,iBAIb,O,sBAAA,GAAM,EAAoByG,SAASq7B,SAASkB,EAAgBxhC,MAAO2iC,EAAa3iC,MAAOyhC,EAAgBzhC,Q,cAAhHgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,WAIzB,GAAwB1X,EAAQ6+B,WAC5B,IAAUvhC,KAA2B0C,EAAQ6+B,YACnCC,EAAiBngC,KAAKsP,cAAc,iBAAU3Q,EAAG,UAEnDwhC,EAAexR,UAAgCttB,EAAQ6+B,WAAWvhC,SAEjD0C,EAAQ00B,UAIjC/1B,KAAKyQ,UAAYzQ,KAAKkhC,iBAHlBnB,IACAA,EAAmBpR,UAA6BttB,EAAQ4/B,OAAOl2B,KAAK,W,kBAMxE,YAAA40B,YAAR,sBAC2B3/B,KAAKsP,cAAc,mBAC3BtB,iBAAiB,SAAS,+F,uBAAY,SAAMhO,KAAK2+B,Y,OAAX,6BAErD3+B,KAAKgO,iBAAiB,WAAW,SAAMrS,GAAK,+C,kEACtB,UAAdA,EAAMgD,IAAN,MACA,GAAMqB,KAAK2+B,Y,OAAX,S,sCA8DhB,EA1HA,CAAsC3lB,aA4HtCnG,EAAA,EAAQvP,SAASwP,UAAS,SAAAC,GACtB,GAAsB,aAAlBA,EAAMN,KAAK,GAAmB,CAC9B,IAAM2uB,EAAYrmC,SAASuU,cAAc,uBACrC8xB,IACAA,EAAU3wB,UAAY,+CAIlCkC,eAAeC,OAAO,oBAAqB,GCtI3C,6E,OAsDY,EAAAyuB,eAAiB,0D,4DAErB,OADArhC,KAAKuiB,cAAc,IAAIC,YAAY,YACnC,GAAMxiB,KAAK2Y,gB,cAAX,S,YAiCI,EAAAhP,KAAO,WAAM,qHAGuC,EAAQ,IAA0C,igE,EAoDlH,OAhJuC,iBAC7B,YAAAkP,kBAAN,W,yGACI7Y,KAAKnD,aAAa,QAAS,IAC3B+b,uBAAsB,WAAM,SAAKG,gBAAgB,YACjD/Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB,YAAMkP,kBAAiB,WACvB7Y,KAAK2/B,c,WAGK,YAAAhB,SAAd,W,kIAYI,GAXMkB,EAAkB7/B,KAAKsP,cAAc,mBACrC0xB,EAAehhC,KAAKsP,cAAc,gBAClCwwB,EAAkB9/B,KAAKsP,cAAc,mBACrC6xB,EAAyBnhC,KAAKsP,cAAc,2BAC5CywB,EAAqB//B,KAAKsP,cAAc,0BAE3Bqf,UAAY,GAC/B,GAAGtvB,MAAM5F,KAAKuG,KAAKsE,iBAAiB,WAAWC,SAAQ,SAACC,GACpDA,EAAQmqB,UAAY,MAGpBmR,EAAgBzhC,QAAU8iC,EAAuB9iC,MAEjD,OADA0hC,EAAmBpR,UAAY,6CAC/B,IAGJ3uB,KAAKnD,aAAa,OAAQ,IAEhBsC,OAAQqhC,cACRrhC,OAAQqhC,aAAaC,WAAWC,W,iBAI7B,O,sBAAA,GAAM,EAAoBp9B,SAASq7B,SAASkB,EAAgBxhC,MAAO2iC,EAAa3iC,MAAOyhC,EAAgBzhC,Q,cAAhHgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,WAIzB,GAAwB1X,EAAQ6+B,WAC5B,IAAUvhC,KAA2B0C,EAAQ6+B,YACnCC,EAAiBngC,KAAKsP,cAAc,iBAAU3Q,EAAG,UAEnDwhC,EAAexR,UAAgCttB,EAAQ6+B,WAAWvhC,SAEjD0C,EAAQ00B,WAIjCsK,EAAA,EAAcvnB,YAAY/d,SAASQ,cAAc,wBACjDyE,KAAKkU,UAJD6rB,IACAA,EAAmBpR,UAA6BttB,EAAQ4/B,OAAOl2B,KAAK,W,kBAaxE,YAAA40B,YAAR,sBAC2B3/B,KAAKsP,cAAc,mBAC3BtB,iBAAiB,SAAS,+F,uBAAY,SAAMhO,KAAK2+B,Y,OAAX,6BAErD3+B,KAAKgO,iBAAiB,WAAW,SAAMrS,GAAK,+C,kEACtB,UAAdA,EAAMgD,IAAN,MACA,GAAMqB,KAAK2+B,Y,OAAX,S,qCAGR,IAAM2B,EAAkBtgC,KAAKsP,cAAc,oBAE3CgxB,EAAgBtyB,iBAAiB,UAAWhO,KAAKqhC,gBAEjDf,EAAgBtyB,iBAAiB,qBAAqB,SAAC+J,GAEnD,IAAM+f,EAAuB/f,EAAKuK,OAE5Bie,EAAkCxlC,SAASQ,cAAc,gCAC/DglC,EAAgC1jC,aAAa,WAAYi7B,EAAMoB,UAC/DqH,EAAgC1jC,aAAa,WAAYi7B,EAAMlkB,UAAY,IAC3E2sB,EAAgC1jC,aAAa,QAASi7B,EAAMqB,OAAS,IAErEkH,EAAA,EAAcvnB,YAAYynB,GAE1BA,EAAgCvyB,iBAAiB,UAAW,EAAKqzB,oBA4D7E,EAhJA,CAAuChB,EAAA,GAkJvC1tB,eAAeC,OAAO,sBAAuB,GCjJ7C,6E,OA8CY,EAAAjJ,KAAO,WAAM,6wB,EAkBzB,OAhEoC,iBAE1B,YAAAkP,kBAAN,W,yGACI7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB3J,KAAK6O,UAAUzH,IAAI,QACnB7J,YAAW,WACP,EAAKsyB,MAAM+P,QAAU,OAGR5/B,KAAKsP,cAAc,oBAC3BtB,iBAAiB,SAAS,0D,0EAEM,MAD/BszB,EAAyBthC,KAAKsP,cAAc,6BACvBjR,MAAvB,OACoC2B,KAAKsP,cAAc,yBAC3Bqf,UAAY,yB,cAExC3uB,KAAKnD,aAAa,OAAQ,IACtBwE,OAAM,E,iBAEG,O,sBAAA,GAAM,EAAoBiC,SAASy7B,eAAeuC,EAAuBjjC,Q,cAAlFgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,kBAGrB1X,EACA,IAAM,IAAI,KAAmBqE,OAAO,CAChCC,QAAS,mBACTvI,QAAS,uEACTwI,QAAS,CAAC,SAJd,M,cACA,SAKAiN,EAAA,EAAQvP,SAASwkB,GAAG,U,aAEpB,UAAM,IAAI,KAAmBpiB,OAAO,CAChCC,QAAS,6BACTvI,QAAS,qFACTwI,QAAS,CAAC,S,OAHd,S,gDA/BF,EAAA4hB,UAAY,wBA+D9B,EAhEA,CAAoCxO,aAkEpCnG,EAAA,EAAQvP,SAASwP,UAAS,SAAAC,GACA,oBAAlBA,EAAMN,KAAK,KACO1X,SAASuU,cAAc,uBAC/BmB,UAAY,0CAI9BkC,eAAeC,OAAO,kBAAmB,GCzEzC,6E,OA+CY,EAAAjJ,KAAO,WAAM,qHAGuC,EAAQ,IAA0C,kvB,EAmBlH,OArEqC,iBAC3B,YAAAkP,kBAAN,W,yGACI7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB,YAAMkP,kBAAiB,WAGvBtb,YAAW,WACP,EAAKsyB,MAAM+P,QAAU,OAGR5/B,KAAKsP,cAAc,oBAC3BtB,iBAAiB,SAAS,0D,0EAEM,MAD/BszB,EAAyBthC,KAAKsP,cAAc,6BACvBjR,MAAvB,OACoC2B,KAAKsP,cAAc,yBAC3Bqf,UAAY,yB,cAExC3uB,KAAKnD,aAAa,OAAQ,IACtBwE,OAAM,E,iBAEG,O,sBAAA,GAAM,EAAoBiC,SAASy7B,eAAeuC,EAAuBjjC,Q,cAAlFgD,EAAS,S,oBAETrB,KAAK+Y,gBAAgB,Q,kBAGrB1X,EACA,IAAM,IAAI,KAAmBqE,OAAO,CAChCC,QAAS,mBACTvI,QAAS,uEACTwI,QAAS,CAAC,SAJd,M,cACA,SAKA5F,KAAKkU,S,aAEL,UAAM,IAAI,KAAmBxO,OAAO,CAChCC,QAAS,6BACTvI,QAAS,qFACTwI,QAAS,CAAC,S,OAHd,S,gDAoCpB,EArEA,CAAqCy6B,EAAA,GAuErC1tB,eAAeC,OAAO,oBAAqB,GCxE3C,6E,OAoBY,EAAAjJ,KAAO,WAAM,uKAEX,EAAQ,KAAsC,mMAG9C,EAAQ,KAAwC,iMAGhD,EAAQ,KAAuC,6C,EAG7D,OA/BqC,iBAE3B,YAAAkP,kBAAN,W,8FACI7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB3J,KAAK2/B,c,WAGD,YAAAA,YAAR,sBACI,GAAGtgC,MAAM5F,KAAKuG,KAAKsE,iBAAiB,oBAAoBC,SAAS,SAAC6qB,GAC9DA,EAAOphB,iBAAiB,SAAS,0D,oEAEd,OADToyB,EAAahR,EAAOj0B,aAAa,SACxB,GAAM,EAAoBmI,SAAS47B,cAAckB,I,aAC1C,aADhB/+B,EAAS,UACJmE,OACPxF,KAAKuiB,cAAc,IAAIC,YAAY,UAAW,CAAEF,OAAQjhB,KACjC,YAAlBA,EAAOmE,QACZxF,KAAKuiB,cAAc,IAAIC,YAAY,oBAAqB,CAAEF,OAAQjhB,K,kBAgBtF,EA/BA,CAAqC2X,aAiCrCrG,eAAeC,OAAO,mBAAoB,GCjC1C,6E,OAOY,EAAAsuB,eAAiB,WAAM,6GAGyB,EAAQ,IAA0C,ua,EAY9G,OAtBwC,iBAE9B,YAAAroB,kBAAN,W,8FACI7Y,KAAKyQ,UAAYzQ,KAAKkhC,iBACtB,YAAMroB,kBAAiB,W,WAkB/B,EAtBA,CAAwCwnB,EAAA,GAwBxC1tB,eAAeC,OAAO,sBAAuB,G,WCzB7C,yE,OAmBY,EAAA2uB,aAAe,0D,kEAEG,OADtBtiC,QAAQ8oB,IAAI,iBACU,GAAM,EAAoBzkB,SAASq5B,mB,OAEzD,OAFM6E,EAAgB,SACtBviC,QAAQ8oB,IAAI,aACR/nB,KAAKyhC,eAAiBD,EACtB,KAKJxhC,KAAKyhC,aAAeD,EAEhBA,GACIxhC,KAAK0hC,gBAAkB1hC,KAAK0hC,eAAenS,eAC3CvvB,KAAK0hC,eAAextB,SAEnBlU,KAAK2hC,cACN3hC,KAAK2hC,YAAc3hC,KAAK4hC,mBAAmB,kBAE/C5hC,KAAK5D,YAAY4D,KAAK2hC,eAElB3hC,KAAK2hC,aAAe3hC,KAAK2hC,YAAYpS,eACrCvvB,KAAK2hC,YAAYztB,SAEhBlU,KAAK0hC,iBACN1hC,KAAK0hC,eAAiB1hC,KAAK4hC,mBAAmB,sBAElD5hC,KAAK5D,YAAY4D,KAAK0hC,iB,eAQlC,OAtDkC,iBAKxB,YAAA7oB,kBAAN,W,yGACI,EAAoBvV,SAASg5B,eAAet8B,KAAKuhC,cAE5CvhC,KAAK2hC,aAAgB3hC,KAAK0hC,gBAC3BnkC,YAAW,0D,4DACP,SAAMyC,KAAKuhC,gB,cAAX,S,yBAKZ,YAAApQ,qBAAA,WACI,EAAoB7tB,SAASo6B,gBAAgB19B,KAAKuhC,eAkC9C,YAAAK,mBAAR,SAA2BvkC,GAEvB,OADiB2C,KAAKsP,cAAc,wBAAiBjS,EAAI,MACzC4yB,QAAQ4R,mBAEhC,EAtDA,CAAkC7oB,aAwDlCrG,eAAeC,OAAO,gBAAiB,I,gCC3DvC,a,gCCGAxY,EAAOD,QAAU,EAAQ,IAAMmU,Y,iBCoBtB,IAtBL,WACI,IAAIwzB,EAAW,EAGV3iC,OAAOyZ,wBACFzZ,OAAQyZ,sBAAwB,SAACrN,EAAU/G,GAC7C,IAAMu9B,GAAW,IAAI71B,MAAOC,UACtB61B,EAAatN,KAAKuN,IAAI,EAAG,IAAMF,EAAWD,IAC1C/tB,EAAK5U,OAAO5B,YAAW,WAAQgO,EAASw2B,EAAWC,KACrDA,GAEJ,OADAF,EAAWC,EAAWC,EACfjuB,IAIV5U,OAAO+iC,uBACR/iC,OAAO+iC,qBAAuB,SAAAnuB,GAC1B/W,aAAa+W,O,iBClB7B5U,OAAOgjC,oBACPhjC,OAAOgjC,qBACP,SAAUC,GACR,IAAIC,EAAQn2B,KAAKo2B,MACjB,OAAO/kC,YAAW,WAChB6kC,EAAG,CACDG,YAAY,EACZC,cAAe,WACb,OAAO9N,KAAKuN,IAAI,EAAG,IAAM/1B,KAAKo2B,MAAQD,SAGzC,IAGLljC,OAAOsjC,mBACPtjC,OAAOsjC,oBACP,SAAU1uB,GACR/W,aAAa+W,K,kBCDf,WACI,QAGqBzW,IAAnB6B,OAAOuB,cACmBpD,IAA1B6B,OAAOwT,gBAGPxT,OAAOwT,eAAenZ,eAAe,6BAErC,OAEF,MAAMkpC,EAAqB1pB,YAC3B7Z,OAAO6Z,YAAqC,WAC1C,OAAOtY,QAAQiiC,UACXD,EAAoB,GAA8B1iC,KAAgB,cAExEgZ,YAAYzf,UAAYmpC,EAAmBnpC,UAC3Cyf,YAAYzf,UAAU0G,YAAc+Y,YACpC1f,OAAOmG,eAAeuZ,YAAa0pB,GAnBvC,I,+DCfC,SAASpoC,EAAEgE,GAAG,aAAa,SAASO,IAAI,IAAIvE,EAAEsoC,EAAE5tB,OAAO,EAAE4tB,EAAEvpC,QAAQ,IAAIwpC,GAAG,EAAEvoC,EAAEjB,QAAQiB,EAAER,QAAQL,KAAK,KAAKa,EAAER,SAAS,SAASoE,EAAE5D,EAAEgE,GAAG,IAAI,IAAIO,EAAE,EAAEX,EAAE5D,EAAEjB,OAAOwF,EAAEX,EAAEW,IAAIikC,EAAExoC,EAAEuE,GAAGP,GAAuE,SAASjE,EAAEC,GAAG,OAAO,SAASgE,GAAGykC,GAAGzkC,KAAKwkC,EAAExkC,EAAEhE,GAAG0oC,GAAG3pC,QAAQ6E,EAAEI,EAAEgG,iBAAiB0+B,IAAI1oC,KAAK,SAASgxB,EAAEhxB,GAAG,IAAIgE,EAAE2kC,GAAGxpC,KAAKa,EAAE,MAAMuE,EAAEvE,EAAE4oC,SAASr3B,cAAc3N,EAAEilC,GAAG1pC,KAAK2pC,GAAG9kC,EAAE+kC,GAAG/kC,EAAEuN,cAAcy3B,EAAGzkC,GAAG,OAAOP,IAAI,EAAEJ,IAAI/E,EAAE0F,EAAEP,IAAI,EAAEJ,EAAE,SAAS/E,EAAEmB,EAAEgE,GAAG,OAAO,EAAE0kC,GAAG59B,QAAQ9K,EAAE,QAAQgE,EAAE,MAAM,SAASmtB,EAAEnxB,GAAG,IAAIgE,EAAEhE,EAAEya,cAAclW,EAAEvE,EAAEipC,WAAWrlC,EAAE5D,EAAEkpC,SAAS1lC,EAAExD,EAAEuB,OAAOxB,EAAEC,EAAEmpC,IAAI,EAAEnY,EAAEhxB,EAAEopC,IAAI,GAAGC,IAAI7lC,GAAGA,IAAIQ,IAAIA,EAAEslC,IAAI,UAAU1lC,GAAG5D,EAAEupC,YAAYvpC,EAAEwpC,WAAW,KAAKxpC,EAAEwpC,UAAUjlC,IAAIxE,GAAGwE,IAAIysB,IAAIhtB,EAAEslC,GAAG1lC,EAAEW,IAAIxE,EAAE,KAAKC,EAAEupC,UAAUhlC,IAAIysB,EAAE,KAAKhxB,EAAEwpC,UAAU,SAASnmC,EAAErD,GAAG,IAAIgE,EAAEjE,EAAEC,GAAG,OAAO,SAASA,GAAGsoC,EAAEjpC,KAAK2E,EAAEhE,EAAEuB,QAAQgnC,IAAI7lC,aAAa6lC,IAAIA,GAAGtlC,WAAWsB,EAAE,IAAI,SAASS,EAAEhF,GAAGypC,KAAKA,IAAG,EAAGzpC,EAAEya,cAAc5G,oBAAoB61B,EAAE1kC,IAAI0jC,GAAG3pC,QAAQ6E,GAAG5D,EAAEuB,QAAQ6F,GAAG4C,iBAAiB0+B,IAAI1oC,EAAEgoB,SAAS2hB,EAAEA,EAAExS,GAAGyS,IAAyU,WAAa,IAAI,IAAI5pC,EAAEgE,EAAE,EAAEO,EAAEslC,GAAG9qC,OAAOiF,EAAEO,EAAEP,IAAIhE,EAAE6pC,GAAG7lC,GAAG8lC,GAAGnhB,SAAS3oB,KAAKuE,IAAIslC,GAAGnvB,OAAO1W,IAAI,GAAGwkC,EAAExoC,EAAE2pC,IAAtappC,GAAI,SAAS6C,EAAEpD,EAAEgE,GAAG,IAAIO,EAAEmB,KAAKqkC,GAAG5qC,KAAKoF,EAAEvE,EAAEgE,GAAGgmC,EAAE7qC,KAAKoF,EAAE,CAAChD,OAAOgD,IAAI,SAAS4C,EAAEnH,EAAEgE,EAAEO,GAAG,IAAIX,EAAEI,EAAE+B,MAAM/F,EAAEuE,GAAGxE,EAAEixB,EAAEptB,GAAG,OAAO,EAAE7D,GAAGkqC,EAAErmC,EAAEsmC,GAAGnqC,IAAIwE,EAAEwD,OAAO2gC,GAAG3pC,QAA58B,SAAWiB,GAAG,IAAI,IAAIgE,EAAEO,EAAE,EAAEX,EAAE5D,EAAEjB,OAAOwF,EAAEX,EAAEW,IAAIP,EAAEhE,EAAEuE,GAAG0lC,EAAEjmC,EAAEkmC,GAAGlZ,EAAEhtB,KAAq5BR,CAAEI,EAAEoG,iBAAiB0+B,KAAK9kC,EAAE,SAASN,EAAEtD,EAAEgE,GAAGmmC,GAAGnqC,EAAEgE,GAAGomC,EAAEA,EAAE3Q,QAAQz5B,EAAEqqC,KAAKC,KAAKtqC,EAAEuC,aAAaa,EAAEpD,EAAEsH,GAAGijC,EAAEvqC,GAAGA,EAAEqmB,GAAGmkB,EAAGR,IAAIhqC,EAAEqmB,GAAGokB,EAAEtZ,IAAInxB,EAAE0qC,IAAIrB,KAAKrpC,EAAEuX,SAAQ,EAAGvX,EAAE0qC,KAAK1qC,EAAEuX,SAAQ,GAAyG,SAASwK,EAAE/hB,GAAG,MAAM,IAAI0B,MAAM,KAAK1B,EAAE,+BAA+B,SAASwoC,EAAExoC,EAAEgE,GAAG,IAAIO,EAAEX,EAAEJ,EAAEwtB,EAAEhxB,IAAI,EAAEwD,IAAImnC,GAAGxrC,KAAKa,EAAE,cAAc4qC,EAAE5qC,EAAEkqC,GAAG1mC,IAAIA,EAAE,EAAEQ,IAAImzB,GAAGn3B,EAAEm3B,GAAGnzB,IAAI2lC,GAAG3pC,EAAE2pC,KAAK3pC,EAAEm3B,IAAG,EAAGn3B,EAAE2pC,IAAG,EAAG/lC,EAAE,eAAeJ,EAAE,IAAIxD,EAAE2pC,IAAG,EAAG3pC,EAAEm3B,IAAG,EAAGvzB,EAAE,YAAYJ,EAAE,EAAEomC,IAAIf,GAAG1pC,KAAK0qC,GAAG7pC,GAAG,GAAG6pC,GAAGxqC,KAAKW,IAAIwD,IAAIe,EAAEvE,EAAEgE,EAAE6mC,IAAI7qC,EAAE4D,EAAEinC,KAAKtmC,EAAEpF,KAAKa,IAAI,SAAS8qC,KAAK,SAASC,EAAE/qC,EAAEgE,EAAEO,GAAG,IAAIX,EAAEW,GAAGA,EAAEymC,IAAI,GAAGxnC,EAAEQ,EAAE/E,UAAUc,EAAEkrC,GAAGznC,GAAGwtB,EAAEhtB,EAAEknC,oBAAoBC,GAAGtsC,EAAE,CAACI,UAAUc,GAAG8gB,GAAG9gB,EAAE2qC,EAAE,CAAC3mC,MAAM,WAAW,GAAGqnC,GAAGA,IAAG,OAAQ,IAAI1lC,KAAK2lC,IAAI,CAAC3lC,KAAK2lC,KAAI,EAAG,IAAIrnC,EAAE0B,MAAMlC,EAAEknC,IAAIlnC,EAAEknC,GAAGvrC,KAAKuG,MAAM,IAAI1F,EAAEsrC,GAAGC,GAAG5nC,IAAIK,MAAMwnC,IAAIxrC,EAAEoE,OAAOrF,OAAO,IAAI0sC,EAAE/lC,UAAUmb,GAAG9gB,EAAEupC,EAAE,CAACvlC,MAAM,SAAS/D,IAAI,EAAE6oC,GAAG1pC,KAAK6xB,EAAEhxB,IAAIwD,EAAE8lC,IAAI9lC,EAAE8lC,GAAGvjC,MAAML,KAAKI,cAActC,EAAEkoC,IAAI7qB,GAAG9gB,EAAE4rC,EAAE,CAAC5nC,MAAMP,EAAEkoC,KAAKloC,EAAEooC,IAAI/qB,GAAG9gB,EAAE8rC,EAAE,CAAC9nC,MAAMP,EAAEooC,KAAKhoC,IAAI/E,EAAEmsC,GAAGpnC,GAAG5D,EAAEA,EAAEuR,cAAc+5B,GAAGtrC,GAAG,CAAC2F,YAAY3B,EAAEI,OAAOR,EAAE,CAACA,EAAEkoC,GAAG9rC,IAAI,CAACA,IAAIurC,GAAG/7B,IAAIxL,EAAEhE,GAAGoH,EAAE4hB,GAAGhpB,EAAEiO,cAAcpP,GAAGwI,EAAErH,GAAG+rC,GAAG/rC,GAAG4D,IAAI,SAASooC,EAAEhsC,GAAG,IAAIgE,EAAEsnC,GAAGtrC,EAAEuR,eAAe,OAAOvN,GAAGA,EAAE2B,YAAY,SAASkC,EAAE7H,GAAG,MAAM,iBAAiBA,EAAEA,EAAEA,GAAGA,EAAEisC,IAAI,GAAG,SAASR,EAAEzrC,GAAG,IAAI,IAAIgE,EAAEO,EAAEvE,EAAEspC,GAAG1lC,EAAEW,EAAEvE,EAAEkxB,WAAWia,GAAG3nC,EAAEI,EAAE7E,OAAOyE,KAAKQ,EAAEJ,EAAEJ,GAAGe,EAAEpF,KAAKa,EAAEgE,EAAEjB,MAAMiB,EAAE4kC,SAAS,KAAK5kC,EAAED,OAAOC,EAAEkoC,WAAW,SAAS7kC,EAAErH,GAAG,OAAOA,EAAEA,EAAEuR,iBAAmBw6B,KAAKA,GAAG/rC,GAAG,GAAG+rC,GAAG/rC,GAAGO,EAAE,IAAI4rC,IAAG,SAASnoC,GAAG+nC,GAAG/rC,GAAG4D,EAAEI,MAAK+nC,GAAG/rC,GAAGO,EAAE,SAAS2E,IAAIknC,WAAWpsC,EAAEqY,eAAeg0B,GAAGrsC,EAAE,iBAAiB,CAACia,cAAa,EAAGlW,MAAM,IAAI+mC,IAAIuB,GAAGrsC,EAAE,wBAAwB,CAACia,cAAa,EAAGlW,MAAM+mC,IAAI,IAAI,IAAI9mC,EAAE6kB,EAAEllB,IAAI,oBAAoBY,EAAEP,EAAEjF,OAAOwF,IAAI,SAASP,GAAG,IAAIO,EAAEvE,EAAEgE,GAAG,GAAGO,EAAE,CAACvE,EAAEgE,GAAG,SAAShE,GAAG,IAAIgE,EAAEJ,EAAE,OAAO5D,IAAIA,EAAE0F,MAAM1F,EAAEqrC,MAAMD,IAAG,EAAGpnC,EAAEsnC,GAAGC,GAAG5nC,IAAI3D,EAAE2F,eAAwC3F,GAA1B4D,EAAE4nC,IAAI,IAAIxnC,EAAEI,OAAOrF,QAAWqH,QAAQiiC,UAAU9jC,EAAE4mC,GAAGnnC,EAAE2B,aAAayB,EAAEnG,cAAc8E,MAAMqB,EAAEpD,EAAEI,SAAUinC,KAAI,EAAGD,IAAG,EAAGxnC,GAAG6nC,EAAEzrC,IAAIA,GAAGA,EAAEgE,GAAG/E,UAAUsF,EAAEtF,UAAU,IAAIsF,EAAEtF,UAAU0G,YAAY3F,EAAEgE,GAAG,MAAMJ,IAAM,EAAGyoC,GAAG9nC,EAAE8mC,GAAG,CAACtnC,MAAM/D,EAAEgE,OAAhV,CAAwVA,EAAEO,KAAK6C,EAAEnG,cAAc,SAASjB,EAAEgE,GAAG,IAAIO,EAAEsD,EAAE7D,GAAG,OAAOO,EAAE+nC,GAAGntC,KAAKuG,KAAK1F,EAAE8rC,GAAGvnC,IAAI+nC,GAAGntC,KAAKuG,KAAK1F,IAAIusC,KAAKC,IAAG,EAAGplC,EAAE4hB,GAAG,KAAK,IAAI5hB,EAAEpH,EAAES,SAASgsC,EAAEzsC,EAAEhB,OAAO6pB,EAAE,SAAS7oB,GAAG,IAAIgE,EAAEO,EAAEX,EAAEJ,EAAEzD,EAAE,eAAkFlB,EAAE,SAASmB,EAAEgE,IAAIA,EAAEA,EAAEiK,iBAAiBkjB,IAAIA,EAAEnxB,IAAImxB,EAAEnxB,IAAI,IAAIuI,OAAOvE,GAAGmtB,EAAEntB,GAAGmtB,EAAEntB,EAAEuN,eAAevR,IAAImxB,GAAGsb,EAAEroC,QAAQqoC,GAAG,MAAMppC,EAAE,GAAG,IAAIkB,KAAKvE,EAAE,IAAIwD,KAAKxD,EAAEuE,GAAG,IAAIX,EAAE5D,EAAEuE,GAAGf,GAAG2tB,EAAE3tB,GAAGI,EAAEI,EAAE,EAAEA,EAAEJ,EAAE7E,OAAOiF,IAAImtB,EAAEvtB,EAAEI,GAAGiK,eAAekjB,EAAEvtB,EAAEI,GAAGuN,eAAe/N,EAAE,OAAOH,EAAEM,IAAI,SAAS3D,GAAG,MAAM,iBAAiBA,EAAEmxB,EAAEnxB,KAAKD,EAAEiO,KAAKhO,GAAG,GAAG,IAAjX,SAASA,GAAG,IAAIgE,EAAEO,EAAE,GAAG,IAAIP,KAAKmtB,EAAEnxB,EAAEgO,KAAKhK,IAAIO,EAAElF,KAAK2E,GAAG,OAAOO,EAAuTysB,CAAEhxB,IAAIqD,EAAEmM,IAAI,SAASxP,EAAEgE,GAAG,OAAOjE,EAAEiO,KAAKhO,GAAGnB,EAAEmB,EAAEgE,GAAGnF,EAAEmF,EAAEhE,GAAGqD,GAAGA,EAA5d,CAA+d,CAACqpC,YAAY,CAACC,kBAAkB,CAAC,OAAOC,eAAe,CAAC,SAASC,2BAA2B,CAAC,YAAYC,sBAAsB,CAAC,YAAYC,SAAS,CAACC,QAAQ,CAAC,WAAWC,kBAAkB,CAAC,KAAKC,kBAAkB,CAAC,UAAUC,gBAAgB,CAAC,QAAQC,sBAAsB,CAAC,cAAcC,iBAAiB,CAAC,SAASC,cAAc,CAAC,MAAMC,gBAAgB,CAAC,QAAQC,gBAAgB,CAAC,QAAQC,kBAAkB,CAAC,UAAUC,kBAAkB,CAAC,UAAUC,mBAAmB,CAAC,WAAWC,iBAAiB,CAAC,MAAMC,gBAAgB,CAAC,QAAQC,oBAAoB,CAAC,YAAYC,mBAAmB,CAAC,WAAWC,kBAAkB,CAAC,UAAUC,qBAAqB,CAAC,OAAOC,eAAe,CAAC,OAAOC,aAAa,CAAC,YAAYzvB,YAAY,CAAC,UAAU,OAAO,UAAU,UAAU,QAAQ,IAAI,MAAM,MAAM,OAAO,OAAO,UAAU,KAAK,MAAM,KAAK,KAAK,aAAa,SAAS,SAAS,SAAS,IAAI,MAAM,OAAO,MAAM,WAAW,KAAK,KAAK,OAAO,IAAI,OAAO,UAAU,QAAQ,SAAS,MAAM,UAAU,MAAM,IAAI,MAAM,OAAO0vB,iBAAiB,CAAC,SAASC,oBAAoB,CAAC,YAAYC,gBAAgB,CAAC,QAAQC,gBAAgB,CAAC,QAAQC,iBAAiB,CAAC,SAASC,oBAAoB,CAAC,YAAYC,cAAc,CAAC,MAAMC,gBAAgB,CAAC,QAAQC,mBAAmB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,MAAMC,gBAAgB,CAAC,QAAQC,kBAAkB,CAAC,UAAUC,iBAAiB,CAAC,OAAOC,iBAAiB,CAAC,SAASC,kBAAkB,CAAC,UAAUC,cAAc,CAAC,MAAMC,iBAAiB,CAAC,SAASC,kBAAkB,CAAC,UAAUC,gBAAgB,CAAC,QAAQC,eAAe,CAAC,OAAOC,mBAAmB,CAAC,WAAWC,iBAAiB,CAAC,SAASC,gBAAgB,CAAC,QAAQC,oBAAoB,CAAC,YAAYC,gBAAgB,CAAC,QAAQC,iBAAiB,CAAC,SAASC,eAAe,CAAC,MAAM,OAAOC,iBAAiB,CAAC,MAAMC,kBAAkB,CAAC,UAAUC,oBAAoB,CAAC,YAAYC,kBAAkB,CAAC,UAAUC,kBAAkB,CAAC,UAAUC,qBAAqB,CAAC,KAAKC,iBAAiB,CAAC,SAASC,mBAAmB,CAAC,WAAWC,eAAe,CAAC,OAAOC,oBAAoB,CAAC,YAAYC,iBAAiB,CAAC,aAAa,IAAI,SAASC,kBAAkB,CAAC,UAAUC,kBAAkB,CAAC,UAAUC,kBAAkB,CAAC,UAAUC,gBAAgB,CAAC,QAAQC,kBAAkB,CAAC,UAAUC,gBAAgB,CAAC,QAAQC,iBAAiB,CAAC,SAASC,wBAAwB,CAAC,WAAWC,qBAAqB,CAAC,KAAK,MAAMC,oBAAoB,CAAC,MAAM,YAAYC,iBAAiB,CAAC,SAASC,oBAAoB,CAAC,MAAMC,wBAAwB,CAAC,QAAQ,QAAQ,SAASC,oBAAoB,CAAC,YAAYC,oBAAoB,CAAC,YAAYC,gBAAgB,CAAC,QAAQC,iBAAiB,CAAC,SAASC,iBAAiB,CAAC,SAASC,iBAAiB,CAAC,MAAMC,mBAAmB,CAAC,UAAU,WAAW,WAAWC,iBAAiB,CAAC,UAAUC,MAAM,CAACC,KAAK,CAAC,QAAQC,MAAM,CAAC,SAASC,aAAa,CAAC,QAAQC,cAAc,CAAC,QAAQC,QAAQ,CAAC,YAAYC,SAAS,CAAC,aAAaC,iBAAiB,CAAC,sBAAsBC,aAAa,CAAC,QAAQnE,aAAa,CAAC,aAAaoE,MAAM,CAAC,OAAOC,OAAO,CAAC,UAAUC,sBAAsB,CAAC,QAAQC,WAAW,CAAC,gBAAgBC,KAAK,CAAC,SAASC,YAAY,CAAC,UAAU,iBAAiB5uC,IAAIA,EAAE,CAAC9C,KAAK8C,GAAG,SAAS,IAAIskC,EAAE0B,EAAE6I,EAAEtI,EAAEH,EAAE0I,EAAElI,EAAEX,EAAExjC,EAAEuiB,EAAE,kBAAkB+pB,EAAE,IAAI/yC,EAAEo6B,KAAKC,UAAU,EAAE/yB,EAAE,KAAK0hB,EAAE+pB,EAAE1sB,EAAE,mBAAmB8Q,EAAE,WAAW0T,EAAE,WAAWlB,EAAE,WAAWqB,EAAE,UAAU1B,EAAE,mBAAmBuB,EAAEc,EAAExU,EAAE0T,EAAEa,EAAE,YAAYb,EAAEe,EAAE,eAAef,EAAEH,EAAE,UAAUG,EAAEgB,EAAElC,EAAEkB,EAAE1B,EAAE,WAAWC,EAAE,UAAUqB,EAAE,kBAAkBf,EAAE,mBAAmBc,EAAG,qBAAqBxB,EAAG,IAAID,GAAG,IAAIiK,GAAG,kCAAkCtuC,GAAG,CAAC,iBAAiB,gBAAgB,YAAY,gBAAgB,gBAAgB,mBAAmB,iBAAiB,iBAAiBokC,GAAG,GAAGoB,GAAG,GAAGxB,GAAG,GAAGoB,GAAG1iC,EAAEuvB,gBAAgBkS,GAAGC,GAAGh+B,SAAS,SAAS9K,GAAG,IAAI,IAAIgE,EAAE0B,KAAK3G,OAAOiF,KAAK0B,KAAK1B,KAAKhE,IAAI,OAAOgE,GAAGivC,GAAGxG,EAAExtC,UAAUi0C,GAAGD,GAAG/zC,eAAei0C,GAAGF,GAAGnjC,cAAcu8B,GAAGI,EAAEhpC,eAAe0nC,GAAG,GAAGiI,GAAG3G,EAAEtmC,yBAAyBktC,GAAG5G,EAAE/9B,oBAAoB4kC,GAAG7G,EAAE9gB,eAAe4nB,GAAG9G,EAAEtnC,eAAequC,KAAK/G,EAAErnC,UAAgBimC,GAAG,YAAYe,GAAGpsC,EAAEqY,eAAemzB,IAAI,SAASx9B,KAAKhK,EAAE9C,UAAUkrC,IAAIA,GAAG9zB,QAAQ8zB,GAAGzoC,KAAKyoC,GAAGqH,aAAaC,GAAGjH,EAAEroC,QAAQqoC,EAAEkH,GAAG3zC,EAAE2f,KAAK,WAAW,IAAI3f,EAAEgE,EAAE,GAAGO,EAAE,GAAG,MAAM,CAACZ,IAAI,SAAS3D,GAAG,OAAOuE,EAAEskC,GAAG1pC,KAAK6E,EAAEhE,KAAKwP,IAAI,SAAS5L,EAAEJ,IAAGxD,EAAE6oC,GAAG1pC,KAAK6E,EAAEJ,IAAK,EAAEW,EAAEP,EAAE3E,KAAKuE,GAAG,GAAGJ,EAAEe,EAAEvE,GAAGwD,KAAK2oC,GAAGnsC,EAAEE,SAAS,SAASF,GAAG,SAASgE,EAAEhE,GAAG,IAAI4D,GAAE,EAAGW,EAAExF,QAAQwF,EAAE/E,OAAF+E,CAAUvE,GAAG,IAAIuE,EAAE,GAAGX,GAAE,EAAGJ,EAAE,CAAC,MAAQ,WAAW,OAAOA,GAAGzB,KAAK,SAAS/B,GAAG,OAAOuE,EAAElF,KAAKW,GAAG4D,GAAGX,WAAWe,EAAE,GAAGR,IAAI,OAAOxD,EAAEgE,GAAGR,GAAG4nC,IAAG,EAAGE,GAAGoI,GAAG,MAAM3H,GAAG2H,GAAG,MAAMnI,GAAG,IAAIoI,GAAG7H,GAAG,SAAS9rC,GAAG,OAAOA,EAAEiO,eAAeg9B,GAAGwB,EAAEroC,QAAQ,SAASwvC,EAAG5zC,GAAG,OAAOA,GAAG4zC,EAAG30C,UAAUe,EAAE,IAAI4zC,GAAIluC,MAAMykC,GAAGoJ,KAAKC,GAAG,SAASxzC,EAAEgE,GAAG,OAAOhE,EAAEoF,UAAUpB,EAAEhE,GAAGqzC,IAAID,GAAG,WAAW,SAASpzC,EAAEA,EAAEgE,GAAG,IAAI,IAAIO,EAAEX,EAAEyvC,GAAGrvC,GAAGR,EAAE,EAAEzD,EAAE6D,EAAE7E,OAAOyE,EAAEzD,EAAEyD,IAAIe,EAAEX,EAAEJ,GAAG0vC,GAAG/zC,KAAKa,EAAEuE,IAAI8nC,GAAGrsC,EAAEuE,EAAE6uC,GAAGpvC,EAAEO,IAAI,OAAO,SAASP,EAAEO,GAAG,GAAGvE,EAAEgE,EAAEO,UAAUA,EAAE+uC,GAAG/uC,MAAM4uC,GAAGh0C,KAAKoF,EAAEP,IAAI,OAAOA,GAA/K,GAAqL,SAAShE,EAAEgE,GAAG,IAAI,IAAIO,KAAKP,EAAEhE,EAAEuE,GAAGP,EAAEO,GAAG,OAAOvE,IAAI6zC,GAAG7zC,EAAE63B,kBAAkB73B,EAAE83B,uBAAuBgc,GAAG9zC,EAAEitC,kBAAkB8G,IAAI/zC,EAAE0e,aAAa1e,EAAEgtC,SAAShtC,EAAEg0C,MAAM/0C,UAAU2qC,IAAIuJ,GAAGh0C,KAAK40C,GAAGjK,IAAIjpB,GAAG+oB,GAAG,SAAS5pC,EAAEgE,EAAEO,GAAG,OAAOvE,EAAEgE,GAAGO,EAAER,MAAM/D,GAAGqsC,GAAG5D,GAAGmB,GAAG,SAAS5pC,GAAG,OAAO,IAAIA,EAAEi0C,UAAU,SAASj0C,GAAG,OAAOmzC,GAAGh0C,KAAK40C,GAAG/zC,IAAI6pC,GAAGD,IAAI,GAAGsK,GAAGH,GAAGjlB,aAAaqlB,GAAGJ,GAAGK,UAAUzJ,GAAGoJ,GAAGzmB,SAAS,SAASttB,GAAG,IAAI,IAAIgE,EAAE0B,KAAK1B,GAAGA,EAAE4kC,WAAW5oC,GAAGgE,EAAEA,EAAEpC,WAAW,OAAOoC,GAAGqwC,GAAGN,GAAG9rB,cAAc0gB,GAAGoL,GAAGlzC,aAAayzC,GAAGP,GAAGxmB,aAAagnB,GAAGR,GAAGt1B,gBAAgBsrB,GAAGgK,GAAGxxC,aAAaiyC,GAAGptC,EAAEnG,cAAcwzC,GAAGrtC,EAAEstC,WAAWpI,GAAGkI,GAAGnK,GAAGwJ,IAAI,CAAC3iB,YAAW,EAAGwI,eAAc,EAAGib,mBAAkB,GAAIC,GAAGf,IAAI,SAAS7zC,GAAGsqC,IAAG,EAAGR,GAAGj2B,oBAAoB42B,EAAEmK,KAAKrM,GAAG,EAAEgE,GAAGvjB,KAAK5hB,IAAI,aAAa4G,KAAKhK,EAAE9C,MAAM2zC,IAAG,EAAGrI,IAAG,EAAGlC,IAAG,EAAGb,IAAG,EAAGJ,IAAG,EAAG,GAAGwK,MAAKptC,EAAEW,EAAEnG,cAAc,QAASkV,UAAU,yBAAyB,IAAI09B,IAAG,SAAS7zC,EAAEgE,GAAG,GAAGhE,EAAE,IAAI,aAAaA,EAAE,GAAGkB,OAAOlB,EAAE,GAAG80C,aAAa,GAAGC,WAAWh2C,OAAO,CAAsB,IAAIwF,GAAzBkC,EAAE2sC,GAAGW,GAAG,eAAsBttC,EAAE+I,IAAIjL,GAAG8nC,GAAG0H,GAAG,YAAY,CAACvkC,IAAI,SAASxP,GAAG,KAAK0F,KAAKsvC,WAAWtvC,KAAK7D,YAAY6D,KAAKsvC,WAAWzwC,EAAEpF,KAAKuG,KAAK1F,MAAMgE,EAAEixC,aAAaxuC,EAAE,QAAOgzB,QAAQhzB,EAAE,CAACyuC,WAAU,EAAGC,SAAQ,IAAK1uC,EAAE0P,UAAU,IAAIo2B,KAAKgH,IAAIC,IAAI5I,EAAE,SAAS5qC,EAAEgE,GAAGmvC,GAAGh0C,KAAK6E,EAAEhE,IAAIsD,EAAEtD,EAAEgE,IAAIimC,EAAE3mC,GAA+C2mC,EAA3CW,EAAE,SAAS5qC,EAAEgE,GAAGhE,EAAEsH,KAAKtH,EAAEsH,GAAGmlC,GAAE,GAAInpC,EAAEtD,EAAEgE,KAAU4lC,IAAIU,IAAG,EAAG,WAAW,IAAItqC,EAAEozC,GAAGW,GAAG1tB,GAAGriB,EAAEhE,EAAE+D,MAAMQ,EAAE,SAASvE,GAAG,IAAIgE,EAAE,IAAIkkB,YAAYuiB,EAAE,CAAC2K,SAAQ,IAAKpxC,EAAEklC,SAASlpC,EAAEgE,EAAEulC,UAAUZ,GAAGxpC,KAAKuG,KAAK1F,GAAGgE,EAAEwlC,SAAS,KAAKxlC,EAAEolC,GAAGplC,EAAEilC,WAAW,EAAEsL,GAAGp1C,KAAKuG,KAAK1F,GAAGq0C,GAAGl1C,KAAKuG,KAAK1B,IAAIJ,EAAE,SAAS5D,EAAEgE,GAAG,IAAIO,EAAE+vC,GAAGn1C,KAAKuG,KAAK1F,GAAG4D,EAAEW,GAAGokC,GAAGxpC,KAAKuG,KAAK1F,GAAGwD,EAAE,IAAI0kB,YAAYuiB,EAAE,CAAC2K,SAAQ,IAAKrL,GAAG5qC,KAAKuG,KAAK1F,EAAEgE,GAAGR,EAAE0lC,SAASlpC,EAAEwD,EAAE+lC,UAAUhlC,EAAEX,EAAE,KAAKJ,EAAEgmC,SAASxlC,EAAEO,EAAEf,EAAE6xC,aAAa7xC,EAAEylC,WAAW,EAAEzlC,EAAE2lC,GAAG3lC,EAAEylC,WAAW,EAAEoL,GAAGl1C,KAAKuG,KAAKlC,IAAIA,EAAE,SAASxD,GAAG,IAAIgE,EAAEO,EAAEvE,EAAEya,cAAc7W,EAAEW,EAAE+C,GAAG9D,EAAExD,EAAEs1C,aAAa1xC,EAAE1E,eAAesE,KAAKI,EAAEA,EAAEJ,IAAGQ,EAAE,IAAIkkB,YAAYuiB,EAAE,CAAC2K,SAAQ,KAAOlM,SAAStlC,EAAEb,KAAKiB,EAAEulC,UAAU3lC,EAAEG,OAAO,KAAKC,EAAEwlC,SAAS5lC,EAAEG,MAAMQ,EAAEf,IAAI,KAAK,MAAMQ,EAAEulC,UAAUvlC,EAAEmlC,GAAGnlC,EAAEilC,WAAW,EAAEjlC,EAAEqxC,aAAarxC,EAAEilC,WAAW,EAAEoL,GAAGl1C,KAAKoF,EAAEP,KAAKhE,EAAE+D,MAAM,SAAS/D,EAAED,EAAEixB,GAAGhxB,IAAIyqC,GAAG/kC,KAAK4jC,IAAI5jC,KAAKnD,eAAeqB,IAAI8B,KAAK4B,GAAG,CAACiuC,UAAU,CAACxyC,KAAK,QAAQgB,MAAM2B,KAAK6vC,YAAY7vC,KAAKnD,aAAaqB,EAAE8B,KAAK+Y,gBAAgBla,EAAEP,EAAE7E,KAAKuG,KAAK,iBAAiBlC,IAAIQ,EAAE7E,KAAKuG,KAAK1F,EAAED,EAAEixB,IAAIqb,GAAG0H,GAAG1tB,EAAErmB,GAAn6B,IAA06B6zC,KAAK/J,GAAGzjB,GAAGokB,EAAEmK,IAAI9K,GAAGvnC,aAAa+E,EAAE,GAAGwiC,GAAGrrB,gBAAgBnX,GAAGgjC,KAAKN,EAAE,SAAShqC,GAAG,IAAIgE,EAAEO,EAAEX,EAAEJ,EAAEkC,KAAK,GAAGlC,IAAIxD,EAAEuB,OAAO,CAAoB,IAAIqC,KAAvBI,EAAER,EAAE8D,GAAG9D,EAAE8D,GAAG/C,EAAEgmC,EAAE/mC,GAAYe,EAAE,CAAC,KAAKX,KAAKI,GAAG,OAAO6uC,EAAE,EAAErvC,EAAEI,EAAEI,EAAEJ,GAAGW,EAAEX,GAAGulC,GAAG,GAAG5kC,EAAEX,KAAKI,EAAEJ,GAAG,OAAOivC,EAAE,EAAErvC,EAAEI,EAAEI,EAAEJ,GAAGW,EAAEX,GAAG,gBAAgB,IAAIA,KAAKI,EAAE,KAAKJ,KAAKW,GAAG,OAAOsuC,EAAE,EAAErvC,EAAEI,EAAEI,EAAEJ,GAAGW,EAAEX,GAAGwlC,KAAKyJ,EAAE,SAAS7yC,EAAEgE,EAAEO,EAAEX,EAAEJ,EAAEzD,GAAG,IAAIixB,EAAE,CAACiY,WAAWjpC,EAAEya,cAAczW,EAAEklC,SAAS3kC,EAAEglC,UAAU3lC,EAAE4lC,SAAShmC,GAAGwtB,EAAEjxB,GAAGC,EAAEmxB,EAAEH,IAAIuZ,EAAE,SAASvqC,GAAG,IAAI,IAAIgE,EAAEO,EAAEX,EAAE,GAAGJ,EAAExD,EAAEkxB,WAAWnxB,EAAE,EAAEixB,EAAExtB,EAAEzE,OAAOgB,EAAEixB,EAAEjxB,IAAW,kBAAkBwE,GAAzBP,EAAER,EAAEzD,IAAyBgD,QAAQa,EAAEW,GAAGP,EAAED,OAAO,OAAOH,KAAKwD,EAAE4hB,GAAG,SAAShpB,EAAEgE,GAAG,GAAGO,EAAEvE,EAAEuR,cAAcsjC,KAAKA,IAAG,EAAGhB,IAAIzJ,EAAE,SAASpqC,EAAEgE,GAAG,SAASO,EAAEvE,EAAEgE,GAAG,IAAI,IAAIO,EAAE,EAAEX,EAAE5D,EAAEjB,OAAOwF,EAAEX,EAAEI,EAAEhE,EAAEuE,QAAQ,OAAO,IAAIsvC,IAAG,SAASjwC,GAAG,IAAI,IAAIJ,EAAEzD,EAAEixB,EAAEnyB,EAAE,EAAEsyB,EAAEvtB,EAAE7E,OAAOF,EAAEsyB,EAAEtyB,IAAW,eAAP2E,EAAEI,EAAE/E,IAAmBqC,MAAMqD,EAAEf,EAAEgyC,WAAWx1C,GAAGuE,EAAEf,EAAEsxC,aAAa9wC,KAAKjE,EAAEyD,EAAEjC,OAAO8nC,IAAItpC,EAAEupC,IAAI,UAAU9lC,EAAE0uB,gBAAgBlB,EAAE2X,GAAGxpC,KAAKY,EAAEyD,EAAE0uB,kBAAkB1uB,EAAEuN,UAAUhR,EAAEupC,GAAG9lC,EAAE0uB,cAAc1uB,EAAEuN,SAASigB,OAAtU,CAA6UjxB,EAAEo3B,GAAGp3B,EAAE4pC,KAAImJ,EAAE,SAAS9yC,GAAG,OAAOoqC,EAAE3Q,QAAQz5B,EAAE,CAACk1C,WAAU,EAAGC,SAAQ,IAAKn1C,IAAKoH,GAAG8sC,KAAKH,GAAGjlB,aAAa,WAAW,OAAOgkB,EAAEoB,GAAGnuC,MAAML,KAAKI,gBAAgBwiC,EAAE,GAAGlhC,EAAEif,GAAG,kBAAkBhjB,EAAE8zB,IAAI/vB,EAAEif,GAAG,iBAAiBhjB,EAAEsmC,KAAKviC,EAAEif,GAAGqjB,EAAE1kC,GAAGoC,EAAEif,GAAG,mBAAmBrhB,GAAGoC,EAAEstC,WAAW,SAAS10C,EAAEgE,GAAG,OAAOhE,EAAEi0C,UAAU,KAAK,EAAE,OAAO9sC,EAAEC,EAAEqtC,GAAG,CAACz0C,IAAIgE,IAAI,KAAK,GAAG,IAAI,IAAIO,EAAE6C,EAAEquC,yBAAyB7xC,EAAE5D,EAAE+0C,WAAWvxC,EAAEI,EAAE7E,OAAOgB,EAAE,EAAEA,EAAEyD,EAAEzD,IAAIwE,EAAEzC,YAAYsF,EAAEstC,WAAW9wC,EAAE7D,KAAKiE,IAAI,OAAOO,EAAE,QAAQ,OAAO4vC,GAAGh1C,KAAKa,IAAIgE,KAAK+vC,GAAGK,UAAU,SAASp0C,GAAG,OAAOmH,EAAEzB,KAAKyuC,GAAG,GAAGn0C,MAAMwsC,GAAG,OAAOA,IAAG,EAAG,IAAI,EAAE3D,GAAG1pC,KAAK2pC,GAAGC,GAAGxkC,GAAGskC,GAAG1pC,KAAK2pC,GAAGE,EAAGzkC,IAAIwd,EAAE/hB,IAAIgzC,GAAGhlC,KAAKzJ,KAAK,EAAEskC,GAAG1pC,KAAKuF,GAAGH,GAAG,MAAM,IAAI7C,MAAM,YAAY1B,EAAE,eAAe,IAAIuE,EAAEf,EAAEwtB,EAAE,WAAW,OAAOG,EAAE/pB,EAAEnG,cAAcmC,EAAEmB,GAAG6C,EAAEnG,cAAcmC,IAAIvE,EAAEmF,GAAGivC,GAAG9hB,EAAE+hB,GAAG/zC,KAAKN,EAAEmsC,GAAG5nC,EAAE+tB,EAAEntB,EAAEgnC,GAAGz5B,cAAchN,EAAE,OAAO4sB,IAAI,EAAE0X,GAAG1pC,KAAK2pC,GAAGE,EAAG5lC,IAAI2e,EAAE3e,GAAGI,EAAEslC,GAAGzpC,MAAM8xB,EAAE4X,GAAGC,GAAIzkC,GAAG,EAAEmkC,GAAGA,GAAGngC,OAAOmgC,GAAG3pC,OAAO,IAAI,GAAGoyB,EAAE/tB,EAAE,QAAQpD,EAAEiO,cAAc,KAAK7K,GAAG4tB,EAAE/xB,UAAUirC,GAAG1mC,GAAG0vC,GAAG/zC,KAAKN,EAAE,aAAaA,EAAEI,UAAUgsC,GAAG8I,IAAIrL,GAAG3pC,QAAQ6E,EAAEwD,EAAE4C,iBAAiB0+B,IAAIvR,GAAGnG,GAAG5pB,EAAEnG,cAAcqrC,GAAG,SAAStsC,EAAEgE,GAAG,IAAIO,EAAEsD,EAAE7D,GAAGJ,EAAEW,EAAEiwC,GAAGr1C,KAAKiI,EAAEpH,EAAE8rC,GAAGvnC,IAAIiwC,GAAGr1C,KAAKiI,EAAEpH,GAAGwD,EAAE,GAAGxD,EAAED,EAAE8oC,GAAG1pC,KAAK2pC,IAAIvkC,EAAEwkC,GAAGC,IAAKzkC,GAAGf,GAAG+N,eAAeyf,GAAG,EAAEjxB,EAAE,OAAOwE,IAAIX,EAAErB,aAAa,KAAKgC,EAAEA,EAAE0J,eAAe+iB,IAAIA,EAAEnyB,EAAE2E,EAAE+N,cAAchN,KAAK8kC,IAAIjiC,EAAEnG,cAAcy0C,gBAAgB1kB,GAAGiZ,EAAErmC,EAAEsmC,GAAGnqC,IAAI6D,IAAI8P,iBAAiB,gBAAe,kBAAkBtM,EAAEnG,qBAAqBmG,EAAEstC,kBAAkBttC,EAAE4hB,MAAI,GAAI8hB,EAAE7rC,UAAU,CAAC0G,YAAYmlC,EAAExyB,OAAOkzB,GAAG,SAASxrC,EAAEgE,EAAEO,GAAG,GAAGA,EAAEwmC,EAAE/qC,EAAEgE,EAAEO,OAAO,CAAC,IAAIX,EAAE5D,EAAEuR,cAAc+5B,GAAG1nC,GAAG,CAAC+B,YAAY3B,EAAEI,OAAO,CAACR,IAAI2nC,GAAG/7B,IAAIxL,EAAEJ,GAAGwoC,GAAG9zB,OAAOtY,EAAEgE,KAAK+mC,EAAEpnC,IAAI6nC,GAAG,SAASxrC,GAAG,OAAOosC,GAAGzoC,IAAI3D,IAAIgsC,EAAEhsC,IAAIgsC,EAAEyH,YAAYjI,GAAG,SAASxrC,GAAG,OAAOmsC,GAAGtP,KAAK,CAACuP,GAAGqH,YAAYzzC,GAAGqH,EAAErH,MAAMqH,IAAI+kC,IAAI,SAASp+B,KAAKhK,EAAE9C,MAAMgE,SAAS,IAAIlB,EAAE2xC,UAAU,KAAK,SAAS3xC,EAAEO,EAAEX,GAAG,IAAIJ,EAAE,IAAIub,OAAO,mBAAmBnb,EAAE,aAAa,GAAGW,EAAEymC,GAAG,KAAIhnC,EAAE/E,UAAUgsC,GAAG6I,GAAG70C,YAAuB0G,YAAY3B,EAAEhE,EAAEqY,eAAeC,OAAO1U,EAAEI,EAAEO,IAAIf,EAAEwK,KAAK5G,EAAEnG,cAAc,IAAI,CAACgrC,GAAGroC,IAAIgyC,aAAapyC,EAAEwK,MAAK,IAAKhK,GAAG4xC,WAAW,MAAMrxC,EAAtP,EAAyP,SAASsxC,IAAK,OAAOzvC,QAAQiiC,UAAUyL,GAAG,GAAG+B,KAAK,GAAG,8BAA8B9C,GAAG,MAAM+C,GAAI5wC,IAAI,IAAIlB,EAAE2xC,UAAU,IAAI,GAAGnB,GAAGr1C,KAAKiI,EAAE,IAAI,KAAKwuC,UAAU9qC,QAAQ,MAAM,EAAE,KAAK,GAAG,MAAMirC,GAAIjK,GAAG,SAAS9rC,GAAG,MAAM,CAACisC,GAAGjsC,EAAEiO,iBAArib,CAAujbpJ,S,gCCCnjb,EAAQ,GAAR,IACJ7F,OAAOyE,eAAe,EAAQ,IAAoB,SAAU,CAC3DM,MAAO,EAAQ,IACfkW,cAAc,EACdvW,YAAY,EACZwW,UAAU,K,2ECFZ,G,OAAA,uE,OACY,EAAA87B,MAAQ,WAAM,SAAKn1C,aAAa,qBAChC,EAAAo1C,SAAW,WAAM,SAAK1oB,aAAa,cAmCnC,EAAAle,KAAO,WAAM,wCACD,SAAY,qIAIQ,UAAjB,EAAK2mC,QAAsB,UAAY,GAAE,ixBA2BlD,EAAKE,QAAQ,SAAQ,gFAMK,YAAjB,EAAKF,QAAwB,UAAY,YAAW,2xBA2B7D,EAAKE,QAAQ,WAAU,4EAIG,iBAAjB,EAAKF,QAA6B,UAAY,GAAE,i2BA8BrD,OAAU,yE,EAIhC,OA5IsC,iBAIlC,YAAAz3B,kBAAA,sBACI7Y,KAAKyQ,UAAYzQ,KAAK2J,OACtB3J,KAAK6O,UAAUzH,IAAI,WAEfpH,KAAKuwC,WACL,GAAGlxC,MAAM5F,KAAKuG,KAAKsE,iBAAiB,eAAeC,SAAQ,SAACC,GACxDA,EAAQwJ,iBAAiB,SAAS,SAAOrS,GAAK,+C,4DAC1C,UAAM,IAAI,KAAoB4X,O,cAA9B,S,iBAKR,GAAGlU,MAAM5F,KAAKuG,KAAKsE,iBAAiB,UAAUC,SAAQ,SAACC,GACnDA,EAAQwJ,iBAAiB,SAAS,WAC9B7O,OAAO0G,SAASlL,KAAO,2BAAoBwE,OAAO0G,SAASuQ,iBAMnE,YAAAo6B,QAAR,SAAgBh1C,GACZ,OAAKwE,KAAKuwC,WAGNvwC,KAAKswC,UAAY90C,EACV,uBAEE,YAATA,EACO,WAEJ,GARI,qBAkHnB,EA5IA,CAAsCwd,cA+ItCrG,eAAeC,OAAO,oBAAqB,G,uCClJ3C,IAAIhL,EAAa,EAAQ,IACrB6oC,EAAa,CAAE3xC,QAAQ,EAAM4xC,QAAQ,GAEzCt2C,EAAOD,QAAU,WAChB,IACIu2C,EADAvyC,EAASyJ,EAAOzJ,OAEpB,GAAsB,mBAAXA,EAAuB,OAAO,EACzCuyC,EAASvyC,EAAO,eAChB,IAAM2B,OAAO4wC,GACb,MAAOp2C,GAAK,OAAO,EAGnB,QAAKm2C,SAAkBtyC,EAAO+D,cACzBuuC,SAAkBtyC,EAAOwyC,gBACzBF,SAAkBtyC,EAAOC,gB,gCCd/BhE,EAAOD,QAAU,WAChB,MAA0B,iBAAfugB,eACNA,YACEA,WAAW/a,QAAUA,S,+BCL7B,kCAAO,iBAAP,cA0LA,OAzLkB,EAAAixC,KAAd,SAAmB/6B,GACf,IAAM+6B,EAAO,IAAI1kC,KAAK2J,GAEtB,MAAO,UAAG+6B,EAAKC,UAAS,YADL,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC3FD,EAAKE,YAAW,aAAKF,EAAKG,gBAGvD,EAAAn/B,UAAd,SAAwBiE,GACpB,IAAM+6B,EAAO,IAAI1kC,KAAK2J,GAEtB,MAAO,UAAG+6B,EAAKG,cAAa,YAAIH,EAAKE,WAAa,EAAC,YAAIF,EAAKC,YAGlD,EAAAG,cAAd,SAA4BJ,GACxB,MAAO,UAAGA,EAAKG,cAAa,YAAIH,EAAKE,WAAa,EAAC,YAAIF,EAAKC,UAAS,YAAID,EAAKK,WAAU,YAAI//B,EAAWggC,IAAIN,EAAKO,aAAa/oC,cAGnH,EAAAmJ,oBAAd,SAAkCsE,GAC9B,IAAM+6B,EAAO,IAAI1kC,KAAK2J,GAEtB,MAAO,UADY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,OAC9E+6B,EAAKE,YAAW,YAAIF,EAAKC,UAAS,YAAID,EAAKG,gBAGtD,EAAAG,IAAd,SAAkBr7B,EAAau7B,EAAkBV,GAC7C,YADc,IAAA76B,MAAA,SAAa,IAAAu7B,MAAA,QAAkB,IAAAV,MAAA,KACtC76B,EAAOxc,QAAU+3C,EAAev7B,EAAS,IAAIlW,MAAMyxC,EAAev7B,EAAOxc,OAAS,GAAG0R,KAAK2lC,GAAU76B,GAGjG,EAAAw7B,QAAd,SAAsB3sC,GAClB,OAAOA,EAAK0D,WAAWG,cAClB0D,QAAQ,OAAQ,KAChBA,QAAQ,YAAa,IACrBA,QAAQ,SAAU,KAClBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,KAeV,EAAAqlC,OAAd,SAAqBttC,GACjB,IAAM0hB,EAAM,GAEZ,IAAK,IAAM/mB,KAAOqF,EACd0hB,EAAI/rB,KAAK,CAACgF,EAAKqF,EAAIrF,KAEvB,OAAO+mB,GAGG,EAAA6rB,SAAd,SAAuBC,EAAcC,GACjC,OAAOD,EAAGn4C,SAAWo4C,EAAGp4C,QAAUm4C,EAAGE,OAAM,SAACvvC,EAAGhJ,GAAM,OAAAgJ,IAAMsvC,EAAGt4C,OAGpD,EAAAgY,WAAd,SAAyB0E,GACrB,OAAOA,EAAO3Q,OAAO,GAAG2G,cAAgBgK,EAAOxW,MAAM,IAG3C,EAAAsyC,SAAd,SAAuB97B,GACnB,IAAI6P,EAAM7P,EAAO5Q,MAAM,KAGvB,OAFAygB,EAAMA,EAAI9c,KAAI,SAAA8W,GAAO,OAAAxO,EAAWC,WAAW0E,OAEhC9K,KAAK,MASb,EAAA6mC,UAAP,SAAiB/7B,GACb,OAAKA,GAAqB,KAAXA,GAIXA,EAAOhK,gBAAkBgK,IACzBA,EAASA,EAAOtN,gBAMgB,KAHpCsN,EAASA,EAAO5J,QAAQiF,EAAW2gC,eAAgB,MAGxCxlC,OAAOjH,QAAQ,OACtByQ,EAASA,EAAO5J,QAAQiF,EAAW4gC,UAAW,SAMlDj8B,GAHAA,EAASA,EAAO5J,QAAQiF,EAAW6gC,mBAAoB,MAGvC9lC,QAAQiF,EAAW8gC,cAAe,KAAKnmC,gBAEzCQ,QAnBH,IAwBD,EAAA0jB,WAAd,SAAyBkiB,G,IAAU,wDAI/B,IAHA,IAAI5wC,EAAS,GAGJlI,EAAI,EAAGA,EAAI+4C,EAAa74C,OAAQF,IAUrC,GARI84C,EAAS94C,KACJ84C,EAAS94C,GAAGg5C,SAAS,KAGtB9wC,GAAU4wC,EAAS94C,GAAGgM,UAAU,EAAG8sC,EAAS94C,GAAGE,OAAS,GAFxDgI,GAAU4wC,EAAS94C,IAMvB+4C,EAAa/4C,GACb,GAAIwG,MAAMmJ,QAAQopC,EAAa/4C,IAC3BkI,GAAU6wC,EAAa/4C,GAAG4R,KAAK,SAC9B,GAAIknC,EAAS94C,GAAGg5C,SAAS,KAC1B9wC,GAAU6wC,EAAa/4C,QACtB,GAAI+4C,EAAa/4C,IAAM+4C,EAAa/4C,GAAGkd,mBAA6E,IAAxD67B,EAAa/4C,GAAGkd,oBAAoBjR,QAAQ,QACzG/D,GAAU6wC,EAAa/4C,QACtB,QAAwBmE,IAApB40C,EAAa/4C,GAClBkI,GAAU,YACT,GAAiC,iBAArB6wC,EAAa/4C,GAC1BkI,GAAU6wC,EAAa/4C,QACtB,GAAiC,kBAArB+4C,EAAa/4C,GAC1BkI,GAAU6wC,EAAa/4C,GAAGiP,eACzB,CACD,IAAK8pC,EAAa/4C,GAAG8S,QACjB,MAAM,IAAIjQ,MAAM,kCAA2Bk2C,EAAa/4C,GAAE,mBAAWA,EAAC,2BAAoB+4C,EAAa/4C,KAEvGkI,GAAU6wC,EAAa/4C,GAClB8S,QAAQ,KAAM,SACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QAOnC,OADA5K,GAAU4wC,EAASA,EAAS54C,OAAS,IAIlC,EAAA+4C,WAAP,SAAkB1tC,GACd,IAAM2tC,EAAMt3C,SAASQ,cAAc,OAEnC,OADA82C,EAAI5hC,UAAY/L,EACT2tC,EAAIC,aAGR,EAAAC,WAAP,SAAkB7yB,GACd,IAAM2yB,EAAMt3C,SAASQ,cAAc,OAEnC,OADA82C,EAAK,gBAAiBA,EAAO,cAAgB,aAAe3yB,EACrD2yB,EAAI5hC,WAGR,EAAA+hC,YAAP,SAAmB9yB,GACf,OAAO5f,OAAO4f,GAAKzT,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,SAG3E,EAAAwmC,YAAP,SAAmB58B,GACf,IAAI5O,EACJ,IACIA,EAAM,IAAI8hB,IAAIlT,GAChB,MAAO9Y,GAEL,OAAO8Y,EAGX,IAAIxU,EAAS4F,EAAIsO,KAEX9C,EAAOigC,UAAUzrC,EAAImP,UAO3B,MANa,MAAT3D,IACApR,GAAUoR,GAKPpR,GApJG,EAAAsxC,MAAQ,SAACC,EAAgBC,GACnC,GAAIA,EAAUD,EACV,MAAO,GAIX,IAFA,IAAMltB,EAAM,GACR/nB,EAAIk1C,EAAUD,EAAS,EACpBj1C,KACH+nB,EAAI/nB,GAAKk1C,IAEb,OAAOntB,GA2BI,EAAAmsB,eAAiB,IAAIx4B,OAAO,SAC5B,EAAAy4B,UAAY,IAAIz4B,OAAO,SACvB,EAAA04B,mBAAqB,IAAI14B,OAAO,SAChC,EAAA24B,cAAgB,IAAI34B,OAAO,aA2B5B,EAAAy5B,OAAS,SAAIz1C,GAAkB,OAAAA,GAoFjD,EA1LO,I,iBCAP,IAAI01C,EAAgB,WACnB,GAAoB,iBAATlrC,MAAqBA,KAAM,OAAOA,KAC7C,GAAsB,iBAAX1I,QAAuBA,OAAQ,OAAOA,OACjD,MAAM,IAAInD,MAAM,oCAGjB5B,EAAOD,QAAU,WAChB,GAAI6F,KAAM,OAAOA,KAOjB,IACC1G,OAAOyE,eAAezE,OAAOC,UAAW,aAAc,CACrD0E,IAAK,WAAc,OAAO+B,MAC1BuU,cAAc,IAEd,MAAOxX,GAER,OAAOg2C,IAER,IAEC,OAAKC,YAAmBD,IAEvB,eACMz5C,OAAOC,UAAUy5C,YAtBT,I,gCCFjB,IAWIC,EAAgBC,EAAcC,EAX9Bv1C,EAAuB,EAAQ,IAC/Bw1C,EAAuB,EAAQ,IAC/BC,EAAuB,EAAQ,IAAmBl1C,OAClDm1C,EAAuB,EAAQ,IAC/BC,EAAuB,EAAQ,IAC/BC,EAAuB,EAAQ,IAE/B90C,EAASpF,OAAOoF,OAChBkuB,EAAmBtzB,OAAOszB,iBAC1B7uB,EAAiBzE,OAAOyE,eAI5B,GAA4B,mBAAjBs1C,EACV,IACCvzC,OAAOuzC,KACPF,GAAe,EACd,MAAOM,SAETJ,EAAe,KAKhBH,EAAe,SAAgBjkC,GAC9B,GAAIjP,gBAAgBkzC,EAAc,MAAM,IAAIrzC,UAAU,+BACtD,OAAOozC,EAAehkC,IAKvB7U,EAAOD,QAAU84C,EAAiB,SAAS90C,EAAO8Q,GACjD,IAAIyhC,EACJ,GAAI1wC,gBAAgB7B,EAAQ,MAAM,IAAI0B,UAAU,+BAChD,OAAIszC,EAAqBE,EAAapkC,IACtCyhC,EAAShyC,EAAOw0C,EAAa35C,WAC7B0V,OAA8B3R,IAAhB2R,EAA4B,GAAKnP,OAAOmP,GAC/C2d,EAAiB8jB,EAAQ,CAC/BgD,gBAAiB91C,EAAE,GAAIqR,GACvB0kC,SAAU/1C,EAAE,GAAI01C,EAAarkC,QAI/BskC,EAAqBN,GACrBO,EAAoBP,GAGpBrmB,EAAiBsmB,EAAa35C,UAAW,CACxC0G,YAAarC,EAAEq1C,GACf7qC,SAAUxK,EAAE,IAAI,WAAc,OAAOoC,KAAK2zC,cAK3C/mB,EAAiBqmB,EAAe15C,UAAW,CAC1C6O,SAAUxK,GAAE,WAAc,MAAO,WAAaw1C,EAAepzC,MAAM0zC,gBAAkB,OACrFE,QAASh2C,GAAE,WAAc,OAAOw1C,EAAepzC,WAEhDjC,EACCk1C,EAAe15C,UACf05C,EAAetC,YACf/yC,EAAE,IAAI,WACL,IAAI8yC,EAAS0C,EAAepzC,MAC5B,MAAsB,iBAAX0wC,EAA4BA,EAChCA,EAAOtoC,eAGhBrK,EAAek1C,EAAe15C,UAAW05C,EAAe70C,YAAaR,EAAE,IAAK,WAG5EG,EACCm1C,EAAa35C,UAAW05C,EAAe70C,YACvCR,EAAE,IAAKq1C,EAAe15C,UAAU05C,EAAe70C,eAOhDL,EACCm1C,EAAa35C,UAAW05C,EAAetC,YACvC/yC,EAAE,IAAKq1C,EAAe15C,UAAU05C,EAAetC,gB,gCCnFhD,IAAInf,EAAa,EAAQ,IAErBqiB,EAAU,mBAAoBC,EAAmBrwB,SAASlqB,UAAU6O,SAExEhO,EAAOD,QAAU,SAAUkE,GAC1B,QAAKmzB,EAAWnzB,KACZw1C,EAAQvrC,KAAKwrC,EAAiBr6C,KAAK4E,M,gCCNxC,IAAI01C,EAAc,EAAQ,IAE1B35C,EAAOD,QAAU,SAAUkE,GAC1B,GAAqB,mBAAVA,EAAsB,OAAO,EAExC,IAAK7E,eAAeC,KAAK4E,EAAO,UAAW,OAAO,EAElD,IACC,GAA4B,iBAAjBA,EAAMhF,OAAqB,OAAO,EAC7C,GAA0B,mBAAfgF,EAAM5E,KAAqB,OAAO,EAC7C,GAA2B,mBAAhB4E,EAAMgC,MAAsB,OAAO,EAC7C,MAAOtD,GACR,OAAO,EAGR,OAAQg3C,EAAY11C,K,gCCfrB,IAAI21C,EAAW,EAAQ,IAEvB55C,EAAOD,QAAU,SAAUkE,GAC1B,IAAK21C,EAAS31C,GAAQ,OAAO,EAC7B,IACC,QAAKA,EAAM4B,aACJ5B,EAAM4B,YAAY1G,YAAc8E,EACtC,MAAOtB,GACR,OAAO,K,gCCRT,IAAI+lB,EAAU,EAAQ,IAGlBmxB,EAAgB,CAAE,QAAU,EAAM,UAAY,EAAM,WAAa,GAErE75C,EAAOD,QAAU,SAAUkE,GAC1B,QAAKykB,EAAQzkB,IACN7E,eAAeC,KAAKw6C,SAAsB51C,K,gCCPlDjE,EAAOD,QAAU,EAAQ,GAAR,GAAgCb,OAAO6G,OAAS,EAAQ,K,gCCAzE/F,EAAOD,QAAU,WAChB,IAA4B6J,EAAxB7D,EAAS7G,OAAO6G,OACpB,MAAsB,mBAAXA,IAEXA,EADA6D,EAAM,CAAEkwC,IAAK,OACD,CAAEC,IAAK,OAAS,CAAEC,KAAM,SAC7BpwC,EAAIkwC,IAAMlwC,EAAImwC,IAAMnwC,EAAIowC,OAAS,gB,gCCLzC,IAAI5oC,EAAQ,EAAQ,IAChBnN,EAAQ,EAAQ,IAChB4jC,EAAQvN,KAAKuN,IAEjB7nC,EAAOD,QAAU,SAAUk6C,EAAMv4C,GAChC,IAAIiB,EAAO5D,EAAsCgH,EAAnC9G,EAAS4oC,EAAI7hC,UAAU/G,OAAQ,GAS7C,IARAg7C,EAAO/6C,OAAO+E,EAAMg2C,IACpBl0C,EAAS,SAAUxB,GAClB,IACC01C,EAAK11C,GAAO7C,EAAI6C,GACf,MAAOrE,GACHyC,IAAOA,EAAQzC,KAGjBnB,EAAI,EAAGA,EAAIE,IAAUF,EAEzBqS,EADA1P,EAAMsE,UAAUjH,IACNoL,QAAQpE,GAEnB,QAAc7C,IAAVP,EAAqB,MAAMA,EAC/B,OAAOs3C,I,gCCnBRj6C,EAAOD,QAAU,EAAQ,GAAR,GAAgCb,OAAOkS,KAAO,EAAQ,K,oFCAhE,aA2BH,WAAoBvE,EAAqBqtC,EAAgFC,QAAhF,IAAAD,MAAA,WAAmD,OAAA95C,QAAQC,QAAQ,WAAa,IAAA85C,MAAA,SAAiE34C,GAA4B,OAAApB,QAAQC,YAA9N,WAAoB,KAAAwM,MAAqB,KAAAqtC,iBAAgF,KAAAC,oBA1BjH,KAAAtyB,YAAc,IAAI,IAClB,KAAAuyB,QAAoC,GACpC,KAAAC,SAAW,GACX,KAAAC,eAAgB,EAKhB,KAAAC,wBAA0B,EAE1B,KAAAC,WAAa,SAACvnC,GAClB,IAAIwnC,EAEJ,IACIA,EAAQ5wC,KAAKmH,MAAMiC,GACrB,MAAMtQ,GAEJ,YADAkC,QAAQ8oB,IAAI,uBAAwB1a,GAOxC,OAHIwnC,EAAM/7C,OACN+7C,EAAM/7C,KAAOmL,KAAKmH,MAAMypC,EAAM/7C,OAE3B+7C,GA+BH,KAAAC,cAAgB,0D,mEAChB31C,OAAO41C,eACP,GAAM/0C,KAAKg1C,sBADX,M,cACA,S,aAEA,SAAMh1C,KAAKi1C,oB,OAAX,S,mCAID,KAAAzY,MAAQ,0D,wEACXv9B,QAAQ8oB,IAAI,aAEZ/nB,KAAK00C,eAAgB,EACrBz1C,QAAQ8oB,IAAI,oB,iBAER,O,sBAAA,GAAiB,QAAX,EAAA/nB,KAAKoJ,cAAM,eAAE+kB,U,cAAnB,SACAlvB,QAAQ8oB,IAAI,yBACS,QAArB,EAAA/nB,KAAKk1C,wBAAgB,SAAEhoC,QACf,QAAR,EAAAlN,KAAK+M,WAAG,SAAEG,Q,+BAEVjO,QAAQ8oB,IAAI,eAAgB,G,aAEhC,SAAM/nB,KAAKm1C,U,cAAX,SACAn1C,KAAKy0C,SAAW,GAChBz0C,KAAKw0C,QAAU,GACfv1C,QAAQ8oB,IAAI,mBAEZ/nB,KAAK00C,eAAgB,EACrB10C,KAAKm1C,SAAWn1C,KAAK80C,gB,YAgEjB,KAAAG,iBAAmB,0D,yEAInB,O,sBAAA,GAAM,IAAIz6C,SAAQ,SAAOC,EAASC,GAAM,+C,mFA+CZ,OA9ClB06C,GAAU,IAAIlpC,MAAOC,UAErBkpC,EAAiB,WACnB,EAAKtoC,IAAIoB,oBAAoB,UAAWknC,IAEtB,IAAInpC,MAAOC,UAAYipC,EAEzB,IACZ16C,EAAO,IAAIsB,MAAM,sDAEjBvB,OAAQ6C,IAGVyM,EAAS,IAAIurC,EACfC,EAAY,EAChBv1C,KAAK+M,IAAM,IAAIC,eACfhN,KAAK+M,IAAIY,KAAK,OAAQ3N,KAAKiH,KAE3BjH,KAAK+M,IAAIkB,mBAAqB,WAC1B,GAA4B,IAAxB,EAAKlB,IAAImB,WAAkB,CAC3B,EAAKymC,wBAA0B,EAE/B,IAAMa,EAAU,EAAKzoC,IAAIzH,SAASmc,OAAO8zB,GAEzCt2C,QAAQ8oB,IAAI,QAASytB,GAErBzrC,EAAO3C,IAAIouC,GAEX,IAAIv4C,OAAQK,EACZ,GAGI,QAAcA,KAFdL,EAAQ8M,EAAO0rC,QAEU,CACrB,IAAMZ,EAAQ,EAAKD,WAAW33C,GAC9B,EAAKy4C,SAASb,eAGHv3C,IAAVL,GAETs4C,EAAY,EAAKxoC,IAAIS,aAAanU,SAI1C2G,KAAK+M,IAAIiB,iBAAiB,UAAWqnC,EAAgB,CAAE/kC,MAAM,IAEvDqlC,EAA+B,CAAEC,QAAS51C,KAAKy0C,UAC7B,GAAMz0C,KAAKs0C,kB,OAEnC,OAFMuB,EAAkB,SAExB,GAAM71C,KAAKu0C,kBAAkBv0C,KAAK+M,M,cAAlC,SACA/M,KAAK+M,IAAIgB,iBAAiB,gBAAiB8nC,EAAgB1yC,QAAuB,eAClFnD,KAAK+M,IAAIgB,iBAAiB,eAAgB,oBAE1C/N,KAAK+M,IAAIqB,KAAKnK,KAAKC,UAAUyxC,I,6BArDjC,SAwDK31C,KAAK00C,eACNn3C,WAAWyC,KAAKi1C,iBAAkB,K,+BAGjCj1C,KAAK00C,gBACN10C,KAAKiiB,YAAYM,cAAc,IAAIC,YAAY,QAAS,CAAEF,OAAQ,KAClE/kB,WAAWyC,KAAKi1C,iBAAkB,IAAOj1C,KAAK20C,4B,oBAGtD11C,QAAQ8oB,IAAI,oB,YAKR,KAAAitB,mBAAqB,0D,sFAGzBh1C,KAAKk1C,iBAAmB,IAAIY,gB,iBAKR,O,sBAFVC,EAAU,IAAIC,YAEJ,GAAMh2C,KAAKi2C,gB,OAGV,OAHXr6C,EAAU,UACR8H,OAA8B,QAArB,EAAA1D,KAAKk1C,wBAAgB,eAAExxC,OAEvB,GAAMyD,MAAMnH,KAAKiH,IAAKrL,I,OAOvC,GAPM0J,EAAW,SAEjBtF,KAAKoJ,OAAS9D,EAAS9D,KAAK00C,YACtBnsC,EAAS,IAAIurC,EACbF,GAAU,IAAIlpC,MAAOC,WAGtB7G,EAASC,GACV,MAAM,IAAIvJ,MAAMsJ,EAASS,Y,wBAErB/F,KAAK00C,cAAa,MACP,GAAM10C,KAAKoJ,OAAO+sC,Q,OAEjC,IAFM90C,EAAS,UAEJC,KACP,YAGJtB,KAAK20C,wBAA0B,EAEzByB,EAAUL,EAAQ7qC,OAAO7J,EAAOhD,OACtC0L,EAAO3C,IAAIgvC,GAEPn5C,OAAQK,EACZ,QAGkBA,KAFdL,EAAQ8M,EAAO0rC,UAGLZ,EAAQ70C,KAAK40C,WAAW33C,GAC9B+C,KAAK01C,SAASb,eAGHv3C,IAAVL,G,mBAKb,IAFkB,IAAIiP,MAAOC,UAAYipC,EAEzB,IACZ,MAAM,IAAIp5C,MAAM,qD,OAEfgE,KAAK00C,eACNn3C,WAAWyC,KAAKg1C,mBAAoB,K,+BAGnCh1C,KAAK00C,gBACN10C,KAAKiiB,YAAYM,cAAc,IAAIC,YAAY,QAAS,CAAEF,OAAQ,KAClE/kB,WAAWyC,KAAKg1C,mBAAoB,IAAOh1C,KAAK20C,4B,oBAIxD11C,QAAQ8oB,IAAI,oB,YA5PZ5oB,OAAOgjC,qBAAoB,WAAM,SAAKgT,SAAW,EAAKL,mBACtD,IAAIM,GAAU,IAAIlpC,MAAOC,UAEnBkqC,EAAe,0D,+CACjB,IACU/T,GAAM,IAAIp2B,MAAOC,UACjBmqC,EAAOhU,EAAM8S,EAEfmB,EAAe,IACf,iBAAiBjuC,KAAKnJ,OAAOoP,UAAUC,aACvC+nC,EAAe,KAGfD,EAAOC,GACPt3C,QAAQ8oB,IAAI,yBAA0BuuB,G,QAK1ClB,GAAU,IAAIlpC,MAAOC,UACrB5O,WAAW84C,EAAc,K,iBAIjC94C,WAAW84C,EAAc,KA+PjC,OA9NI,YAAAroC,iBAAA,SACIxS,EACAmZ,EACA/O,GAEA,OAAO5F,KAAKiiB,YAAYjU,iBAAiBxS,EAAMmZ,EAAU/O,IAG7D,YAAAuI,oBAAA,SACI3S,EACAmZ,EACA/O,GAEA5F,KAAKiiB,YAAY9T,oBAAoB3S,EAAMmZ,EAAU/O,IAGnD,YAAA4wC,UAAN,W,IAAgB,sD,2HAcL,OAbDj8C,EAAWk8C,EAAM7tC,KAAI,SAAAvL,GACvB,OAAI,EAAKm3C,QAAQn3C,GACN7C,QAAQC,QAAQ,EAAK+5C,QAAQn3C,IAEjC,IAAI7C,SAAQ,SAAA0D,GACf,IAAMihB,EAAU,SAACxjB,GACb,EAAKwS,oBAAoB9Q,EAAM8hB,GAC/BjhB,EAAEvC,EAAM2mB,SAEZ,EAAKtU,iBAAiB3Q,EAAM8hB,SAI7B,GAAM3kB,QAAQiD,IAAIlD,I,OAAzB,MAAO,CAAP,EAAO,kBAGL,YAAA6Y,SAAN,SAAkB/V,G,kGACd,OAAI2C,KAAKw0C,QAAQn3C,GACN,CAAP,EAAO2C,KAAKw0C,QAAQn3C,GAAMvE,MAEvB,CAAP,EAAO,IAAI0B,SAAW,SAAA0D,GAClB,IAAMihB,EAAU,SAACxjB,GACb,EAAKwS,oBAAoB9Q,EAAM8hB,GAC/BjhB,EAAEvC,EAAM2mB,SAEZ,EAAKtU,iBAAiB3Q,EAAM8hB,cAItB,YAAA82B,aAAd,W,wHAC4B,SAAMj2C,KAAKs0C,kB,OAWnC,OAXMuB,EAAkB,UAClB1yC,EAAU,IAAIwF,QAAQktC,EAAgB1yC,UAEpC2G,IAAI,eAAgB,oBAEtB6rC,EAA+B,CAAEC,QAAS51C,KAAKy0C,UAM9C,CAAP,EALa,2BACNoB,GACA,CAAEr0C,KAAMyC,KAAKC,UAAUyxC,GAAcvyC,OAAQ,OAAQD,QAASA,aAiJjE,YAAAuyC,SAAR,SAAiBb,GAAjB,WACQA,GAASA,EAAMl5C,QACXk5C,EAAM9gC,KACN/T,KAAKy0C,SAASI,EAAMl5C,OAASk5C,EAAM9gC,IAEvC/T,KAAKw0C,QAAQK,EAAMl5C,OAASk5C,EAE5Bt3C,YAAW,WACP,EAAK0kB,YAAYM,cACb,IAAIC,YAAYqyB,EAAMl5C,MAAO,CACzB2mB,OAAQuyB,EAAM/7C,QAItB,EAAKmpB,YAAYM,cACb,IAAIC,YAAY,iBAAkB,CAC9BF,OAAQuyB,UAxSd,EAAA6B,WAAa52C,OAAOgL,aAAa,IA8SnD,EAnTO,GAqTP,0BACY,KAAA6rC,QAAU,CAAC,IAwBvB,OAtBI,YAAAvvC,IAAA,SAAInK,GACA,IAAM25C,EAAQ35C,EAAMgI,MAAM,MAEtB2xC,EAAMv9C,OAAS,IACf2G,KAAK22C,QAAQ32C,KAAK22C,QAAQt9C,OAAS,IAAMu9C,EAAM,IAE/CA,EAAMv9C,OAAS,IACf2G,KAAK22C,QAAU32C,KAAK22C,QAAQ9zC,OAAO+zC,EAAMv3C,MAAM,MAGvD,YAAAo2C,KAAA,WACI,GAA4B,IAAxBz1C,KAAK22C,QAAQt9C,QAGZ2G,KAAK22C,QAAQ,GAAGtqC,OAAOwuB,WAAW,MAAQ76B,KAAK22C,QAAQ,GAAGtqC,OAAO8lC,SAAS,KAAO,CAClF,IAAMl1C,EAAQ+C,KAAK22C,QAAQ,GAE3B,OADA32C,KAAK22C,QAAU32C,KAAK22C,QAAQt3C,MAAM,GAC3BpC,IAKnB,EAzBA,G,cC5SMkW,EAPC,WAAP,cAKA,OAHI,sBAAW,WAAM,C,IAAjB,WACI,OAAO0jC,EAAkBC,S,gCAFd,EAAAA,QAA0B,IAAI,EAAe,WAAG,IAAInmC,EAAA,GAActM,KAAI,kBAAiB,WAAM,OAAA7J,QAAQC,QAAQ,IAAQsW,KAAK1N,mBAI7I,EALO,GAO4B0zC,OAuBnC5jC,EAASnF,iBAAiB,SAAS,SAACrS,GAAsB,OAAAsD,QAAQ8oB,IAAI,QAASpsB,EAAM2mB,Y,gCChCrFloB,EAAOD,QAAU,WAChB,IAEC,OADAb,OAAOkS,KAAK,cACL,EACN,MAAOlR,GACR,OAAO,K,gCCLT,IAAIwoB,EAAU,EAAQ,IAElBtX,EAAOlS,OAAOkS,KAElBpR,EAAOD,QAAU,SAAU2E,GAAU,OAAO0M,EAAKsX,EAAQhkB,GAAUxF,OAAOwF,GAAUA,K,gCCHpF1E,EAAOD,QAAU,c,gCCDjB,IAAI2oB,EAAU,EAAQ,IAEtB1oB,EAAOD,QAAU,SAAUkE,GAC1B,IAAKykB,EAAQzkB,GAAQ,MAAM,IAAIwB,UAAU,gCACzC,OAAOxB,I,gCCJR,IAAIykB,EAAU,EAAQ,IAElBve,EAAU5E,MAAMpG,UAAUgL,QAAS7F,EAASpF,OAAOoF,OAEnD4zB,EAAU,SAAUx2B,EAAKkI,GAC5B,IAAIrF,EACJ,IAAKA,KAAO7C,EAAKkI,EAAIrF,GAAO7C,EAAI6C,IAIjCvE,EAAOD,QAAU,SAAU68C,GAC1B,IAAI31C,EAAS3C,EAAO,MAKpB,OAJA6F,EAAQ9K,KAAK2G,WAAW,SAAUwF,GAC5Bkd,EAAQld,IACb0sB,EAAQh5B,OAAOsM,GAAUvE,MAEnBA,I,gCChBRjH,EAAOD,QAAU,EAAQ,GAAR,GAAgC2F,OAAOvG,UAAU0pB,SAAW,EAAQ,K,gCCArF,IAAIvD,EAAM,aAEVtlB,EAAOD,QAAU,WAChB,MAA4B,mBAAjBulB,EAAIuD,YACgB,IAAxBvD,EAAIuD,SAAS,SAA2C,IAAxBvD,EAAIuD,SAAS,U,gCCJrD,IAAI7d,EAAUtF,OAAOvG,UAAU6L,QAE/BhL,EAAOD,QAAU,SAAU0wB,GAC1B,OAAOzlB,EAAQ3L,KAAKuG,KAAM6qB,EAAczqB,UAAU,KAAO,I,gCCH1DhG,EAAOD,QAAU,SAAUkE,GAC1B,QAAKA,IACgB,iBAAVA,KACNA,EAAM4B,cACoB,WAA3B5B,EAAM4B,YAAY5C,MAC0B,WAAzCgB,EAAMA,EAAM4B,YAAY7B,iB,gCCLhC,IAAIR,EAAI,EAAQ,IAEZc,EAASpF,OAAOoF,OAAQX,EAAiBzE,OAAOyE,eAAgBk5C,EAAe39C,OAAOC,UAEtFsY,EAAUnT,EAAO,MACrBtE,EAAOD,QAAU,SAAUqG,GAE1B,IADA,IAAiBnD,EAAM65C,EAAnBC,EAAU,EACPtlC,EAAQrR,GAAQ22C,GAAW,QAAQA,EAkB1C,OAhBAtlC,EADArR,GAAQ22C,GAAW,KACH,EAEhBp5C,EACCk5C,EAFD55C,EAAO,KAAOmD,EAIb5C,EAAEwlB,GAAG,MAAM,SAAU/kB,GAKhB64C,IACJA,GAAoB,EACpBn5C,EAAeiC,KAAM3C,EAAMO,EAAES,IAC7B64C,GAAoB,OAGf75C,I,8GCzBD,cAAP,a,+CAiLA,OAjLyB,YAAAoR,EAAA,GAGd,EAAA2oC,cAAP,SAAqB/yC,EAAmBwR,GACpCpH,EAAI4oC,cAAchzC,GAAME,SAAQ,SAACC,GAE7B,IAAMiO,EAAOjO,EAAQnH,KAAK4H,MAAM,KAE5BqyC,EAAOzhC,EACXpD,EAAKlO,SAAQ,SAAAgzC,GACLA,IAAgB9kC,EAAKA,EAAKpZ,OAAS,GAWvCi+C,EAAOA,EAAKC,IAAgB,GATpB53C,MAAMmJ,QAAQwuC,EAAKC,IACnBD,EAAKC,GAAe/yC,EAAQnG,MAAM4G,MAAM,KAClB,aAAjBT,EAAQhJ,KACb87C,EAAKC,GAAe/yC,EAAQ+N,QAE5B+kC,EAAKC,GAAe/yC,EAAQnG,aASzC,EAAAm5C,UAAP,SAA0BnzC,GACtB,IAAMwR,EAAS,GAIf,OAHApH,EAAI4oC,cAAchzC,GAAME,SAAQ,SAACC,GAC7BqR,EAAOrR,EAAQnH,MAAQmH,EAAQnG,SAEnBwX,GAGb,EAAA4hC,YAAP,SAA4BpzC,EAAmBwR,GAC3CpH,EAAI4oC,cAAchzC,GAAME,SAAQ,SAACC,GAC7BA,EAAQnG,MAAQwX,EAAOrR,EAAQnH,UAIhC,EAAAq6C,gBAAP,SAAuBlzC,EAAsBnH,GACzC,OAAImH,EAAQqjB,aAAaxqB,IACrBmH,EAAQuU,gBAAgB1b,IACjB,IAEPmH,EAAQ3H,aAAaQ,EAAM,KACpB,IAKR,EAAAqR,MAAP,WACI,OAAO,IAAIlU,SAAQ,SAACC,GAEY,aAAxBM,SAASmT,YACgB,YAAxBnT,SAASmT,aAAmCnT,SAAUk2B,gBAAgB0mB,SAEvEl9C,OAAQ6C,GAERvC,SAASiT,iBAAiB,mBAAoBvT,OAKnD,EAAAoK,UAAP,SAAiBxH,GACb,IAAMmC,EAAIzE,SAASiK,OAAOoU,MAAM,mBAAY/b,EAAI,qBAChD,OAAOmC,EAAIA,EAAE6C,MAAQ,IAGlB,EAAAu1C,aAAP,SAAoBv6C,GAChBtC,SAASiK,OAAS,UAAG3H,EAAI,sDAGhB,EAAAw6C,cAAb,W,8GACI,SAAMppC,EAAIC,S,cAAV,SACA3T,SAASuU,cAAc,QAAQT,UAAUqF,OAAO,S,YAM7C,EAAA4sB,QAAP,SAAet8B,EAAsBszC,GACjC,YADiC,IAAAA,MAAA,IAC1B,IAAIt9C,SAAQ,SAAAC,GACf+J,EAAQqrB,MAAM+P,QAAU,IAExB,IAAMmY,EAAO,WACT,IAAInY,EAAUoY,WAAWxzC,EAAQqrB,MAAM+P,UAElCA,GAAWkY,GAAS,GACrBtzC,EAAQqrB,MAAMC,QAAU,OACxBr1B,OAAQ6C,KAERkH,EAAQqrB,MAAM+P,QAAUA,EAAQx3B,WAChCwQ,sBAAsBm/B,KAG9BA,QAID,EAAA3sC,MAAP,SAAajH,GACT,IAAMK,EAAUzJ,SAASQ,cAAc,OAEvC,OADAiJ,EAAQiM,UAAYtM,EACbK,EAAQq9B,mBAGZ,EAAAd,OAAP,SAAcv8B,EAAsBsrB,EAA2BgoB,GAC3D,YADgC,IAAAhoB,MAAA,cAA2B,IAAAgoB,MAAA,IACpD,IAAIt9C,SAAQ,SAAAC,GACf+J,EAAQqrB,MAAM+P,QAAU,IACxBp7B,EAAQqrB,MAAMC,QAAUA,EAExB,IAAMioB,EAAO,WACT,IAAInY,EAAUoY,WAAWxzC,EAAQqrB,MAAM+P,UAEhCA,GAAWkY,GAAS,EAIvBr9C,OAAQ6C,IAHRkH,EAAQqrB,MAAM+P,QAAUA,EAAQx3B,WAChCwQ,sBAAsBm/B,KAK9BA,QAID,EAAAE,OAAP,SAAczzC,EAAsBszC,GAChC,YADgC,IAAAA,MAAA,IACzB,IAAIt9C,SAAQ,SAAAC,GACf,IAAIkd,EAAM,EACVnT,EAAQqrB,MAAMqoB,gBAAkB,MAChC1zC,EAAQqrB,MAAMsoB,UAAY,YAE1B,IAAM12C,EAAI,YACCkW,GAAOmgC,GAAS,EAInBr9C,OAAQ6C,IAHRkH,EAAQqrB,MAAMsoB,UAAY,iBAAUxgC,EAAG,KACvCiB,sBAAsBnX,KAK9BA,QAID,EAAA22C,QAAP,SAAe5zC,GACX,OAAO,IAAIhK,SAAQ,SAAAC,GACf+J,EAAQqrB,MAAMsoB,UAAY,qBAC1B3zC,EAAQqrB,MAAMwoB,WAAa,gBAE3Bz/B,uBAAsB,WAClBpU,EAAQqrB,MAAMsoB,UAAY,yBAM/B,EAAA9sB,KAAP,SAAYgc,EAAyBiR,GACjC,IAAMnlB,EAASkU,EAAS,GAAG9X,cACZ8X,EAAShc,MAAM,SAACC,EAAgB9rB,GAAmB,OAAA84C,EAAShtB,GAAKgtB,EAAS94C,GAAK,GAAK,KAC5F+E,SAAS,SAACC,GACb2uB,EAAO/2B,YAAYoI,OAIpB,EAAA+zC,oBAAP,SAA4B/zC,GACxB,IAAMg0C,EAAYh0C,EAAQi0C,wBAE1B,OACID,EAAUE,KAAO,GACjBF,EAAUG,MAAQ,GAClBH,EAAU1nB,SAAW3xB,OAAOy5C,aAAe79C,SAASk2B,gBAAgB4nB,eACpEL,EAAUM,QAAU35C,OAAOoa,YAAcxe,SAASk2B,gBAAgB8nB,cAInE,EAAAC,mBAAP,SAA2Bx0C,GACvB,OAAOA,EAAQwL,WAAcxL,EAAQy0C,aAAez0C,EAAQ00C,cA9KjD,EAAA7B,cAAgB,SAACjrC,GAAsB,SAAG/M,MAAM5F,KAAK2S,EAAK9H,iBAAiB,qBAgL9F,EAjLO,C,MAAkB,GAmLzBmK,EAAIopC,gBAAgB5gB,MAAMh4B,QAAQ8oB,KAGlC,iBACI,WAAoBlS,EAA6Bha,EAA6Bs9C,GAA9E,WAAoB,KAAAtjC,SAA6B,KAAAha,SAA6B,KAAAs9C,UAKtE,KAAAC,cAAgB,WACpB,EAAKv9C,OAAOg0B,MAAMwpB,OAAS,UAAG,EAAKxjC,OAAOgjC,aAAe,EAAKM,QAAO,OALrEh6C,OAAO6O,iBAAiB,SAAUhO,KAAKo5C,cAAe,CAACloB,SAAS,IAChElxB,KAAKo5C,gBAUb,OAHI,YAAAE,QAAA,WACIn6C,OAAOgP,oBAAoB,SAAUnO,KAAKo5C,gBAElD,EAbA,I,gCCtLA,IAAIx7C,EAAe,EAAQ,IACvBy1C,EAAe,EAAQ,IAAmBl1C,OAE9C/D,EAAOD,QAAU,SAAU84C,GAC1B,OAAO35C,OAAOszB,iBAAiBqmB,EAAgB,CAG9CsG,YAAa37C,EACZ,GAAKy1C,GAAgBA,EAAakG,aAAgBtG,EAAe,gBAElEuG,mBAAoB57C,EACnB,GACCy1C,GAAgBA,EAAamG,oBAC7BvG,EAAe,uBAEjB/wC,SAAUtE,EAAE,GAAKy1C,GAAgBA,EAAanxC,UAAa+wC,EAAe,aAC1E75B,MAAOxb,EAAE,GAAKy1C,GAAgBA,EAAaj6B,OAAU65B,EAAe,UACpEhnC,QAASrO,EAAE,GAAKy1C,GAAgBA,EAAapnC,SAAYgnC,EAAe,YACxE95B,OAAQvb,EAAE,GAAKy1C,GAAgBA,EAAal6B,QAAW85B,EAAe,WACtEwG,QAAS77C,EAAE,GAAKy1C,GAAgBA,EAAaoG,SAAYxG,EAAe,YACxEhuC,MAAOrH,EAAE,GAAKy1C,GAAgBA,EAAapuC,OAAUguC,EAAe,UACpEtC,YAAa/yC,EACZ,GAAKy1C,GAAgBA,EAAa1C,aAAgBsC,EAAe,gBAElE70C,YAAaR,EACZ,GAAKy1C,GAAgBA,EAAaj1C,aAAgB60C,EAAe,gBAElEyG,YAAa97C,EACZ,GAAKy1C,GAAgBA,EAAaqG,aAAgBzG,EAAe,oB,gCC5BpE,IAAIr1C,EAAiB,EAAQ,IACzBw1C,EAAiB,EAAQ,IAEzBuG,EAAWrgD,OAAOoF,OAAO,MAE7BtE,EAAOD,QAAU,SAAU84C,GAC1B,OAAO35C,OAAOszB,iBAAiBqmB,EAAgB,CAC9C2G,IAAKh8C,GAAE,SAAUe,GAChB,OAAIg7C,EAASh7C,GAAag7C,EAASh7C,GAC3Bg7C,EAASh7C,GAAOs0C,EAAenzC,OAAOnB,OAE/Ck7C,OAAQj8C,GAAE,SAAU8yC,GACnB,IAAI/xC,EAEJ,IAAKA,KADLy0C,EAAe1C,GACHiJ,EACX,GAAIA,EAASh7C,KAAS+xC,EAAQ,OAAO/xC,S,iCCjBzC,aAAa,SAAUT,GAAG,SAASuzB,KAAK,SAAS/vB,KAAK,IAAIskC,EAAElmC,OAAOgL,aAAa3I,EAAE,GAAGiG,SAASw6B,EAAEzgC,EAAE1I,KAAKyE,EAAE47C,mBAAmB7V,EAAE9hC,IAAIgjC,EAAEjnC,EAAE0L,WAAWtL,EAAE6mC,GAAGxlC,MAAMwjB,EAAEgiB,EAAEj9B,YAAY5J,EAAEyoC,EAAE5jB,EAAEhb,QAAQ,SAASxG,GAAG,OAAOA,GAAG,WAAWA,GAAGkjC,EAAE1iC,EAAE1I,KAAK0pB,EAAE5pB,WAAW4pB,EAAEzhB,EAAEnI,UAAU,IAAI+sC,EAAEpoC,EAAE67C,YAAYzuB,EAAE,IAAK6Z,EAAE6U,YAAY17C,GAAG,IAAImzB,EAAEl4B,UAAU2R,OAAO,SAASvJ,GAAG,IAAIolC,EAAEplC,GAAG,CAAC,IAAItH,EAAE8H,EAAE1I,KAAKkI,GAAG,GAAGtH,IAAIwqC,GAAGxqC,IAAIuoC,GAAGvoC,IAAI4pC,EAAE,MAAMpkC,UAAU,qHAClZ8B,EAAEwjC,EAAE,IAAI7mC,EAAEqD,GAAGA,GAAG,GAAG,IAAI,IAAqCrH,EAAEsD,EAAUF,EAA7C+D,EAAEpH,EAAE,GAAGmF,EAAE,EAAE7B,EAAW,EAATgE,EAAEtI,OAASoyB,EAAE9tB,EAAE,GAAG,EAAM0e,EAAE,EAAExhB,EAAE,EAAI8lB,EAAE,EAAE9hB,GAAG,EAAEW,EAAE7B,GAAG,CAAC,IAAIrD,EAAEkF,GAAGisB,EAAE,GAAG9tB,EAAE6B,EAAE,EAAEmhB,EAAErmB,EAAEkF,EAAEA,EAAE,EAAE,EAAEmhB,EAAEA,EAAE,EAAE,EAAE,CAAY,QAAX/iB,EAAO,IAAL+D,EAAEnC,KAAiB,GAAG,KAAK,GAAoB,GAAG,IAApB9B,EAAa,IAAXiE,EAAEnC,EAAEA,EAAE,EAAE,KAAiB,GAAG,IAAI5B,EAAE,CAAC4B,EAAEA,EAAE,EAAE,EAAE,MAAM6c,GAAK,EAAFze,IAAM,EAAI,GAAFF,EAAK7C,EAAE,EAAE+C,EAAE,IAAI,KAAK,GAAoBye,IAAI,EAAEA,IAAM,GAAFze,IAAO,EAAI,IAAtCF,EAAa,IAAXiE,EAAEnC,EAAEA,EAAE,EAAE,IAA+B3E,EAAE,GAAI6C,GAAG,EAAE7C,EAAE,EAAE,EAAE,GAAG+C,EAAEA,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,GAAoBye,IAAI,EAAEA,IAAM,GAAFze,IAAO,EAAI,IAAtCF,EAAa,IAAXiE,EAAEnC,EAAEA,EAAE,EAAE,IAA+B3E,EAAEA,EAAE,EAAE,EAAE2E,EAAE7B,GAAG,GAAID,GAAG,GAAG2e,GAAGxhB,GAAG,QAAQwhB,GAAGze,EAAEye,EAAc,IAAZA,EAAEA,EAAE,MAAM,KAASxd,EAAU,OAAPwd,GAAG,IAAU,EAAEze,EAAW,OAAN,KAAFye,GAAc,EAAE,GAAGsE,GAAG2K,EAAE3K,GAAG9hB,EAAE8hB,EAAEA,EAAE,EAAE,EAAE9hB,GAAG,IACpfnB,EAAEmB,EAAEA,EAAEjB,EAAEA,EAAEF,MAAY8B,EAAEA,GAAR5B,IAAI,GAAQ,EAAE,EAAEA,EAAE,OAAOye,EAAExhB,EAAE,EAAEP,EAAEkF,GAAGisB,EAAE,GAAG9tB,EAAE6B,EAAE,EAAE,QAAQ8rB,EAAE3K,GAAG/iB,EAAE,SAAS,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG0tB,EAAE3K,GAAG,MAA8N,GAAxNlf,GAAGukC,EAAE1a,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,KAAK,GAAG3K,IAAIlf,EAAEA,EAAEpC,MAAM,EAAEshB,EAAE,GAAG,IAAOnhB,EAAE7B,GAAG,GAAG2tB,EAAE,GAAGzsB,EAAE8hB,GAAG9hB,IAAI,GAAGA,GAAG,EAAE4C,EAAEpI,OAAOgB,EAAEhB,OAAO,cAAc,IAAIwF,IAAI4C,GAAGukC,EAAEnnC,IAAIxE,GAAGoH,EAAEA,EAAE,GAAG,OAAOpH,GAAG8oB,EAAE1D,OAAO,SAAS9d,GAAwB,IACpdnC,EADwdnF,EAC9e,GADqdsH,OAAE,IAASA,EAAE,GAAG,GAAGA,GAAUtI,OAChfoI,EAAE,IAAInD,EAAS,GAANjE,GAAG,GAAK,GAAKsD,EAAE,EAAE8tB,GAAG0Z,EAAE,IAAI3lC,EAAE,EAAEA,EAAEnF,EAAEmF,EAAEA,EAAE,EAAE,EAAE7B,EAAEA,EAAE,EAAE,EAAE,CAAC,IAAIrD,EAAkB,EAAhBqH,EAAEs4C,WAAWz6C,GAAK,GAAG,KAAKlF,EAAEmH,EAAE9D,GAAGrD,MAAM,CAAC,GAAG,MAAMA,EAAEmH,EAAE9D,GAAG,IAAIrD,GAAG,MAAM,CAACgxB,EAAE,CAAC,GAAG,OAAOhxB,EAAE,GAAG,OAAOA,EAAE,CAAC,IAAIsD,EAAwB,EAAtB+D,EAAEs4C,WAAWz6C,EAAEA,EAAE,EAAE,GAAK,GAAG,OAAO5B,GAAG,OAAOA,EAAE,CAAwB,GAAG,OAA1BtD,GAAGA,GAAG,IAAIsD,EAAE,SAAS,GAAa,CAAC6D,EAAE9D,GAAG,IAAIrD,GAAG,GAAGmH,EAAE9D,EAAEA,EAAE,EAAE,GAAG,IAAIrD,GAAG,GAAG,GAAGmH,EAAE9D,EAAEA,EAAE,EAAE,GAAG,IAAIrD,GAAG,EAAE,GAAGmH,EAAE9D,EAAEA,EAAE,EAAE,GAAG,IAAM,GAAFrD,EAAK,SAAS,MAAMgxB,EAAEhxB,EAAE,WAAW,OAAOA,IAAIA,EAAE,QAAQmxB,GAAGjsB,GAAG,EAAE7B,GAAG6B,GAAG,GAAG7B,EAAE,EAAE,KAAK8tB,GAAE,GAAG7tB,EAAE,IAAIU,EAAE,EAAEjE,IAAKyP,IAAIrI,GAAGA,EAAE7D,GAAG6D,EAAE9D,GAAG,IAAIrD,GAAG,GAAGmH,EAAE9D,EAAEA,EAAE,EAAE,GAAG,IAAIrD,GAAG,EAAE,GAAGmH,EAAE9D,EAAEA,EAAE,EAAE,GAAG,IAAM,GAAFrD,GAAM,OAAO6qC,EAC/f1jC,EAAEy4C,SAAS,EAAEv8C,GAAG8D,EAAEpC,MAAM,EAAE1B,IAAI2oC,IAAIpoC,EAAE83C,YAAYvkB,EAAEvzB,EAAE67C,YAAYr4C,GAJnD,CAIwD,QAAG,UAAekG,EAAO,QAAG,UAAeC,KAAK7H,KAAK6H,KAAKD,K,mCCJ1H0/B,QAAQ/tC,UAAUm+C,kBACnBpQ,QAAQ/tC,UAAUm+C,gBAAkB,SAASr6C,EAAM88C,GAGjD,YAFa,IAAVA,IAAkBA,IAAUA,GAEC,OAA5Bn6C,KAAK7E,aAAakC,KAChB88C,IAEJn6C,KAAK+Y,gBAAgB1b,IACd,IAEO,IAAV88C,IAEJn6C,KAAKnD,aAAaQ,EAAM,KACjB,M,wCCbfjD,EAAOD,QAAU,IAA0B,2B,mBCA3CC,EAAOD,QAAU,IAA0B,qC,wCCA3CC,EAAOD,QAAU,IAA0B","file":"94fe7f72f2f6013b3c67.price-page.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t4: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t4: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + \"94fe7f72f2f6013b3c67\" + \".\" + ({\"0\":\"stacks\"}[chunkId]||chunkId) + \".bundle.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"0\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + chunkId + \".\" + \"94fe7f72f2f6013b3c67\" + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/client/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 658);\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(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 (g && (g = 0, op[0] && (_ = 0)), _) 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\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import { DialogController } from \"features/dialog\";\nimport { AuthenticationStore, AuthenticationMode } from \"features/authentication\";\nimport { TaskStore } from \"lib/Tasks\";\nimport { Delay } from \"lib/System\";\nimport { NotifyViewController, NotifyHandle } from \"features/notification/NotifyViewController\";\n\nexport type HttpMethod = \"post\" | \"get\" | \"delete\";\n\nexport type CredentialsMode = \"omit\" | \"same-origin\" | \"include\";\n\nexport class Request implements RequestInit {\n public credentials?: CredentialsMode = \"same-origin\";\n public headers = { };\n public body: any;\n public method: HttpMethod = \"get\";\n\n authenticate = (mode?: AuthenticationMode) : Request => {\n if ((mode || AuthenticationStore.instance.mode) === AuthenticationMode.Header) {\n this.headers[\"Authorization\"] = AuthenticationStore.instance.token;\n this.credentials = \"same-origin\";\n } else {\n this.credentials = \"same-origin\";\n }\n return this;\n }\n\n setSignal(signal: AbortSignal) : Request {\n (this).signal = signal;\n return this;\n }\n\n static get delete() : Request {\n return new Request().setMethod(\"delete\");\n }\n\n static get post() : Request {\n return new Request().setMethod(\"post\");\n }\n\n static get get() : Request {\n return new Request().setMethod(\"get\");\n }\n\n setCredentials(credentialsMode: CredentialsMode) {\n this.credentials = credentialsMode;\n return this;\n }\n \n setJSON(obj: any): Request {\n this.setMethod(\"post\");\n this.headers[\"content-type\"] = \"application/json\";\n this.headers[\"Accept\"] = \"application/json\";\n\n this.body = JSON.stringify(obj);\n return this;\n }\n\n html(): Request {\n this.headers[\"content-type\"] = \"html/text\";\n this.headers[\"Accept\"] = \"html/text\";\n return this;\n }\n\n setJSONFromFields(root: HTMLElement): Request {\n const data = {};\n [].slice.call(root.querySelectorAll(\"input, textarea\")).forEach((element: HTMLInputElement) => {\n data[element.name] = element.value;\n });\n return this.setJSON(data);\n }\n\n setText(text: string): Request {\n this.setMethod(\"post\");\n this.headers[\"content-type\"] = \"text/plain\";\n this.body = text;\n return this;\n }\n\n setBody(body: any) : Request {\n this.body = body;\n return this;\n }\n\n setMethod(method: HttpMethod): Request{\n this.method = method;\n if (method === \"post\") {\n this.headers[\"x-token\"] = Request.getSourceToken()\n }\n\n return this;\n }\n\n static getSourceToken() : string {\n return Request.getCookie(\"_token\");\n }\n\n static getCookie(name) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(\";\");\n for(let i=0;i < ca.length;i++) {\n let c = ca[i];\n while (c.charAt(0) === \" \") {\n c = c.substring(1,c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length,c.length);\n }\n }\n return undefined;\n }\n\n private static showingDialog = false;\n\n static async checkLoggedInStatus(response: Response) {\n if (response && !response.ok){\n if (response.status === 401) {\n if (!Request.showingDialog) {\n Request.showingDialog = true;\n try {\n await new DialogController().prompt({\n caption: \"Logged out\",\n message: \"You have been logged out.\",\n options: [\"Log in again\"]\n });\n } finally {\n Request.showingDialog = false;\n }\n window.location.href = `/?returnurl=${window.location.href}`;\n }\n }\n }\n }\n\n static throwOnServerError(response: Response ){\n if (response.ok)\n return;\n\n throw new Error(`Invalid statusCode ${response.status} response ${response.statusText}`);\n }\n}\n\nexport class Pipeline {\n private _showLoader = true;\n private _ignoreLoggedInStatus = false;\n //private _beQuiet = false;\n private _throwOnError = false;\n private static _offlineNotifyHandle: NotifyHandle;\n private static backAway = 0;\n\n hideLoader() {\n this._showLoader = false;\n return this;\n }\n\n beQuiet() {\n //this._beQuiet = true;\n return this;\n }\n\n\n ignoreLoggedInStatus() {\n this._ignoreLoggedInStatus = true;\n return this;\n }\n\n throwOnError() {\n this._throwOnError = true;\n return this;\n }\n\n private async showOffline() {\n if (!Pipeline._offlineNotifyHandle)\n Pipeline._offlineNotifyHandle = new NotifyViewController().showWeb({ title : \"Trying to connect to server\", showLoader: true });\n \n await Delay.wait(4000);\n }\n\n private static offlineThrottleCounter = 0;\n\n\n private static pendingRequests: { [key: string]: Promise } = {};\n\n async fetchQueued(input: RequestInfo, init?: RequestInit) : Promise {\n const url = input as string;\n \n if (!Pipeline.pendingRequests[url])\n Pipeline.pendingRequests[url] = this.fetch(input, init);\n\n return await Pipeline.pendingRequests[url];\n }\n\n async fetch(input: RequestInfo, init?: RequestInit): Promise{\n let response: Response;\n \n try {\n let request = fetch(input, init);\n \n if (this._showLoader)\n request = TaskStore.instance.add(request);\n \n response = await request;\n\n if (response.ok && Pipeline._offlineNotifyHandle) {\n Pipeline._offlineNotifyHandle.hide();\n Pipeline._offlineNotifyHandle = undefined;\n Pipeline.backAway = 0;\n }\n\n if (response.status >= 500)\n throw new Error(response.statusText);\n\n Pipeline.offlineThrottleCounter = 0;\n } catch (error) {\n if (init && init.signal) {\n if (init.signal.aborted)\n return;\n }\n\n await Delay.wait(1000 * Pipeline.backAway);\n \n if (Pipeline.backAway < 5)\n Pipeline.backAway++;\n \n if (this._throwOnError)\n throw error;\n\n // if (!this._beQuiet) \n // await this.showOffline();\n // else {\n Pipeline.offlineThrottleCounter++;\n \n if (Pipeline.offlineThrottleCounter > 3) {\n Pipeline.offlineThrottleCounter = 0;\n await this.showOffline();\n } \n // }\n\n await Delay.wait(2000);\n }\n\n if (!this._ignoreLoggedInStatus)\n await Request.checkLoggedInStatus(response);\n \n return response;\n }\n\n\n}","\n// declared on static class via a guid to prevent conflicts with iterators etc.\nexport const Typename = Symbol(\"type-name\"); // in the future this can be a Symbol()\n\n/**\n * Declares a property on a class that is not minified.\n * \n * Used with Typename to get and set:\n```typescript\n@ClassTypename(\"MyClass\")\nclass MyClass { }\n \nvar className = MyClass[Typename];\n * ```\n */\nexport function ClassTypename(typeName: string) { // this is the decorator factory\n return function (target: Function) { // this is the decorator\n target[Typename] = typeName;\n \n }\n}\n","var global = (function(self) {\n return self\n // eslint-disable-next-line no-invalid-this\n})(typeof self !== 'undefined' ? self : this)\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : ''\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\n\nif (typeof DOMException !== 'function') {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","import \"es6-promise/auto\";\nimport \"whatwg-fetch\";\nimport \"./RequestAnimationFrame\";\nimport \"./RequestIdleCallback\";\nimport { DOM } from \"lib/DOM\";\nimport \"./custom-elements-es5-adapter.js\";\nimport \"document-register-element\";\nimport \"url-polyfill\";\nimport \"es6-symbol/implement\";\nimport \"fastestsmallesttextencoderdecoder\";\nimport \"./toggleAttribute.js\";\n\n(async () => {\n if (/Trident\\/|MSIE/.test(window.navigator.userAgent)) {\n await import( /* webpackChunkName: \"internet-explorer\" */ \"./internetExplorerPolyfills\");\n }\n})();\n\nwindow.setTimeout(async () => {\n await DOM.ready();\n\n const handleFirstTab = (e) => {\n if (e.keyCode === 9) { // the \"I am a keyboard user\" key\n document.body.classList.add(\"tabbing\");\n window.removeEventListener(\"keydown\", handleFirstTab);\n }\n }\n \n window.addEventListener(\"keydown\", handleFirstTab);\n});\n\n","import { BrowserInfo } from \"lib/Browser\";\nexport class PackageStore {\n private packages = [\n {slug: \"membership\", logo: require(\"!!raw-loader!image/membership-logo.svg\"), name: \"Membership & payment\", description: \"Manage or upgrade to paid membership.\"},\n {slug: \"login\", logo: require(\"!!raw-loader!image/login-logo.svg\"), name: \"Login & password\", description: \"Setup password and login via Facebook, Google and Twitter.\"},\n {slug: \"notifications\", logo: require(\"!!raw-loader!image/notifications-logo.svg\"), name: \"Emails & notifications\", description: \"Manage email and notification settings.\"},\n {slug: \"authorized-applications\", logo: require(\"!!raw-loader!image/authorized-applications-logo.svg\"), name: \"Authorized Applications\", description: \"Control access for external applications.\"},\n {slug: \"deactivate-account\", logo: require(\"!!raw-loader!image/deactivate-account-logo.svg\"), name: \"Deactivate account\", description: \"Delete your account.\"}\n // {slug: \"logout\", logo: require(\"image/logout-logo.svg\"), name: \"Logout\", description: \"Log out of Linkstacks.\"}\n ];\n\n all() {\n if (BrowserInfo.isIOSApp())\n return this.packages.filter(i => i.slug !== \"membership\");\n \n return this.packages;\n }\n}","import \"./AppContextStore-style\";\nimport { EventEmitter } from \"events\";\n\nexport interface Context {\n titlePath: string[];\n} \n\nexport class AppContextStore extends EventEmitter {\n private static _instance = new AppContextStore();\n\n private constructor() {\n super();\n }\n \n public static get instance() {\n return AppContextStore._instance;\n }\n \n public get currentLayer() : HTMLElement {\n return document.querySelector(\".content-destination\");\n }\n\n private emitContextChange(context: Context) {\n this.emit(\"context\", context);\n }\n \n onContextChange(callback: (context: Context) => void) {\n this.on(\"context\", callback);\n }\n\n offContextChange(callback: (context: Context) => void) {\n this.removeListener(\"context\", callback);\n }\n\n scrollTo(position: number) {\n const target = document.querySelector(\".content-destination\");\n target.scrollTop = position;\n // target.scrollTo({ top: position }); // Removed smooth, it failed\n }\n\n update(... titlePath: string[]) {\n document.title = `${titlePath.join(\" - \")} - Linkstacks`\n this.emitContextChange({ titlePath: titlePath });\n }\n\n presentTitle(pageName: string, ... titlePath: string[]) {\n document.body.setAttribute(\"app-context\", pageName);\n if (document.querySelector(\".content-destination\"))\n this.update(... titlePath.filter(Boolean));\n else\n window.addEventListener(\"loaded\", () => this.update(... titlePath.filter(Boolean)), { once: true });\n \n }\n\n async present(pageName: string, element: HTMLElement, ... titlePath: string[]) {\n document.body.setAttribute(\"app-context\", pageName);\n\n let target = document.querySelector(\".content-destination\");\n\n const updater = () => {\n target = document.querySelector(\".content-destination\");\n target.innerHTML = \"\";\n target.appendChild(element);\n this.update(... titlePath.filter(Boolean));\n }\n\n if (target)\n updater();\n else\n window.addEventListener(\"loaded\", updater, { once: true });\n \n }\n\n\n static ready(): Promise {\n return new Promise((resolve) => {\n if(document.querySelector(\".content-destination\")) {\n resolve(undefined);\n } else {\n window.addEventListener(\"loaded\", resolve);\n }\n });\n }\n}","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"frame\":\"dialog-module-frame-2qS\",\"window\":\"dialog-module-window-1N6\",\"header\":\"dialog-module-header-2KQ\",\"close-button\":\"dialog-module-close-button--WB\",\"closeButton\":\"dialog-module-close-button--WB\",\"scroll-area\":\"dialog-module-scroll-area-1BG\",\"scrollArea\":\"dialog-module-scroll-area-1BG\",\"fixed-area\":\"dialog-module-fixed-area-3y1\",\"fixedArea\":\"dialog-module-fixed-area-3y1\",\"list-item\":\"dialog-module-list-item-3NA\",\"listItem\":\"dialog-module-list-item-3NA\",\"selectable\":\"dialog-module-selectable-1ym\",\"check-field\":\"dialog-module-check-field-1p3\",\"checkField\":\"dialog-module-check-field-1p3\",\"image-field\":\"dialog-module-image-field-146\",\"imageField\":\"dialog-module-image-field-146\",\"dot\":\"dialog-module-dot-s9J\",\"icon\":\"dialog-module-icon-1pQ\",\"faded\":\"dialog-module-faded-3sO\",\"title-field\":\"dialog-module-title-field-2RM\",\"titleField\":\"dialog-module-title-field-2RM\",\"input-field\":\"dialog-module-input-field-3tH\",\"inputField\":\"dialog-module-input-field-3tH\"};","import { Request, Pipeline } from \"lib/HTTP\"\nimport { UrlProvider } from \"lib/UrlProvider\";\n\nexport class PaymentStore {\n private static _instance = new PaymentStore();\n private urlProvider = new UrlProvider();\n\n static get instance() {\n return PaymentStore._instance;\n }\n\n async all() : Promise{\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/payment`, Request.get.authenticate());\n return await response.json() as Payment;\n }\n\n async setAutoRenew(enabled: boolean) : Promise {\n await new Pipeline().fetch(`${this.urlProvider.root}/api/payment/autorenew`, Request.post.authenticate().setJSON({autoRenew: enabled}));\n }\n\n}\n\nexport interface Payment {\n currentLevel: \"basic\" | \"premium\" | \"professional\";\n transactions?: Transaction[],\n memberSince?: string;\n nextRenewal?: string;\n autoRenew: boolean;\n}\n\nexport interface Transaction{\n transactionId: string,\n capturedAmount: number,\n card: Card,\n created: string,\n validFrom: string,\n validTo: string,\n currency: string\n}\n\nexport interface Card {\n expiry: Date,\n last4: string,\n scheme: string\n}","import \"./ManageMembershipElement-style\"\nimport { AppContextStore } from \"features/application-context/AppContextStore\";\n\nimport { BaseManagePackageElement } from \"features/manage/BaseManagePackageElement\";\nimport { Formatting } from \"lib/Formatting\"\nimport { PaymentStore } from \"features/payment/PaymentStore\"\nimport { Routing } from \"lib/Routing\"\nimport { TaskStore } from \"lib/Tasks\";\n\nexport class ManageMembershipElement extends BaseManagePackageElement {\n protected static path = [\"manage\", \"membership\"];\n protected slug = \"membership\";\n public static tag = \"manage-membership\";\n private payment;\n\n async setupDOM(){\n \n const renewElement = this.querySelector(\"[name=renew]\") as HTMLInputElement;\n\n \n if (renewElement){\n renewElement.addEventListener(\"change\", async () => {\n await PaymentStore.instance.setAutoRenew(renewElement.checked);\n })\n }\n \n }\n\n protected async initialize() {\n this.payment = await TaskStore.instance.add(PaymentStore.instance.all());\n }\n\n protected detailView = () => `\n
\n
Current membership
\n
\n With premium membership you get rid of the ads and support the future development of linkstacks.\n
\n\n
\n \n
${Formatting.capitalize(this.payment.currentLevel)}
\n
\n\n\n ${this.payment.memberSince ? `\n
\n \n
${Formatting.shortDateNamedMonth(this.payment.memberSince)}
\n
\n ` : \"\"}\n \n ${this.payment.nextRenewal ? `\n
\n \n
${Formatting.shortDateNamedMonth(this.payment.nextRenewal)}
\n
\n ` : \"\"}\n\n
\n ${this.payment.currentLevel === \"basic\" && window.location.protocol !== \"file:\" ? `
` : \"\"}\n ${this.payment.currentLevel !== \"basic\" ? `\n \n \n ` : \"\"}\n
\n
\n \n ${this.payment.transactions && this.payment.transactions.length > 0 ? `\n
\n\n
Payment history
\n \n\n
\n
Date
\n
from
\n
to
\n
Amount
\n
Card
\n
\n \n ${this.payment.transactions.map(transaction => `\n
\n
${Formatting.shortDate(transaction.created)}
\n
${Formatting.shortDate(transaction.validFrom)}
\n
${Formatting.shortDate(transaction.validTo)}
\n
${transaction.capturedAmount / 100} ${transaction.currency}
\n
${transaction.card ? transaction.card.scheme : \"\"} xxxx-xxxx-xxxx-${transaction.card ? transaction.card.last4 : \"\"}
\n
\n `).join(\"\")}\n
\n ` : \"\"}\n `;\n}\n\ncustomElements.define(ManageMembershipElement.tag, ManageMembershipElement);\n\n\nRouting.instance.onChange(async route => {\n if (route.path[0] === \"manage\" && route.path[1] === \"membership\") {\n await AppContextStore.instance.present(\"\", document.createElement(\"manage-membership\"), \"Manage\", \"Membership\");\n document.title = \"Manage Membership - Linkstacks\";\n }\n});","import { Request } from \"lib/HTTP\"\nimport { DialogController } from \"features/dialog\";\nimport { UrlProvider } from \"lib/UrlProvider\";\nimport { cityline } from \"features/cityline\";\n\ndeclare global {\n class Paylike {\n constructor(publicKey: string);\n popup(args: any, callback: (err: any, response: any) => void);\n }\n}\n\nexport class PaymentController {\n private urlProvider = new UrlProvider();\n private static paylike: Paylike;\n\n private initializePaylike() {\n return new Promise((resolve) => {\n if (PaymentController.paylike) {\n resolve(PaymentController.paylike);\n return;\n }\n\n const script = document.createElement(\"script\");\n document.head.appendChild(script);\n script.src = \"https://sdk.paylike.io/3.js\";\n script.onload = async () => {\n const paylikeId = await cityline.getFrame(\"paylike-id\");\n PaymentController.paylike = new Paylike(paylikeId);\n resolve(PaymentController.paylike);\n }\n });\n }\n\n async pay() {\n const paylike = await this.initializePaylike();\n \n paylike.popup({\n currency: \"USD\",\n amount: 1500,\n locale: \"en\",\n title: \"One year premium\",\n description: \"Linkstacks one year premium subscription\",\n custom: {\n username: (window as any).userId\n }\n },\n async (err, response: PaylikeResponse) => {\n if (err){\n if (err !== \"closed\") {\n await new DialogController().prompt({\n caption: \"Unable to complete payment\",\n message: \"Unable to complete payment, please contact us.\",\n options: [\"Ok\"]\n });\n throw new Error(`Unable to complete payment: ${err}`);\n } \n } else {\n const waitDialog = new DialogController();\n try{\n // dont await dialog\n setTimeout(async () => await waitDialog.prompt({\n caption: \"Please wait\",\n message: \"Processing payment ...\",\n options: []\n }));\n\n const registerResponse = await fetch(`${this.urlProvider.root}/api/payment/transactions`, new Request().setJSON({transactionId: response.transaction.id}));\n Request.throwOnServerError(registerResponse);\n\n waitDialog.close();\n\n document.body.classList.remove(\"promotion\");\n\n await new DialogController().prompt({\n caption: \"Thank you for signing up\",\n message: \"We appreciate your support. Thank you.\",\n options: [\"Proceed\"]\n });\n\n window.location.reload();\n\n } catch(err) {\n waitDialog.close();\n\n await new DialogController().prompt({\n caption: \"Unable to register payment\",\n message: \"Unable to register payment, please contact us.\",\n options: [\"Ok\"]\n });\n\n throw new Error(`Unable to register payment: ${err}.`);\n }\n \n }\n });\n }\n}\n\ninterface PaylikeTransaction{\n id: string;\n}\n\ninterface PaylikeResponse {\n transaction: PaylikeTransaction;\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"note\":\"ProductSelection-module-note-1Cz\",\"header\":\"ProductSelection-module-header-1__\",\"pricing\":\"ProductSelection-module-pricing-2Ge\"};","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"#ls1289 * {\\n box-sizing: border-box;\\n}\\n#ls1289 .notify {\\n background-color: rgba(0, 0, 0, 0.8);\\n border-radius: 6px;\\n cursor: pointer;\\n width: 300px;\\n height: 92px;\\n position: fixed;\\n z-index: 1000001;\\n padding: 15px;\\n color: rgba(255, 255, 255, 0.7);\\n right: 230px;\\n bottom: 30px;\\n opacity: 0;\\n}\\n#ls1289 .notify img {\\n height: 64px;\\n width: 64px;\\n}\\n#ls1289 .notify svg {\\n stroke: rgba(255, 255, 255, 0.7);\\n}\\n#ls1289 .notify .loader {\\n height: 54px;\\n width: 54px;\\n animation: rotation 1s infinite linear;\\n border: 1px solid rgba(255, 255, 255, 0.2);\\n border-top-color: rgba(255, 255, 255, 0.7);\\n border-radius: 50%;\\n margin: 5px;\\n}\\n#ls1289 .notify * {\\n float: left;\\n}\\n#ls1289 .notify header,\\n#ls1289 .notify .body {\\n overflow: hidden;\\n height: 50%;\\n}\\n#ls1289 .title-only header {\\n font-size: 17px;\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n line-height: 21px;\\n height: auto;\\n max-height: 80px;\\n}\\n#ls1289 .title-only.has-img header {\\n left: 80px;\\n width: 220px;\\n}\\n#ls1289 header {\\n padding: 0 15px;\\n line-height: 15px;\\n font-size: 14px;\\n}\\n#ls1289 .body {\\n font-size: 12px;\\n padding: 4px 15px;\\n line-height: 13px;\\n}\\n#ls1289 .has-img header,\\n#ls1289 .has-img .body {\\n width: calc(100% - 64px);\\n}\\n#ls1289 .has-body {\\n font-size: 15px;\\n}\\n#ls1289 .has-body header {\\n top: 0;\\n transform: none;\\n}\\n#ls1289 .img header {\\n left: 90px;\\n}\\n#ls1289 .notify.active {\\n right: 30px;\\n transition: all 0.8s;\\n opacity: 1;\\n}\\n#ls1289 .notify.hide {\\n /*bottom: 130px;*/\\n opacity: 0;\\n}\\n@keyframes rotation {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n\"","module.exports = \"\"","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).forEach(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n }\n }(Object, new WeakMap));\n}\nexport default self.EventTarget;\n","import { AuthenticationStore } from \"features/authentication\";\n\nexport type Environment = \"production\" | \"test\" | \"local\";\n\n\n\nexport class UrlProvider {\n // when _isLocal is triggered, infrastucture switches to localStorage\n private _isLocal = window.location.protocol === \"file:\" || window.location.hostname === \"localhost\";\n private isLocal = () => this._isLocal; \n private static testMode: string;\n private static modeKey = \"urlprovider-mode\";\n\n public get root() {\n if (UrlProvider.testMode === \"local\")\n return \"https://local.linkstacks.io\";\n\n if (UrlProvider.testMode === \"test\")\n return \"https://test.linkstacks.io\"; \n \n if (this.isLocal())\n return \"https://linkstacks.io\";\n else\n return window.location.origin; // e.g. https://test.linkstacks.io\n } \n\n public static get environment() : Environment {\n if (UrlProvider.testMode === \"local\")\n return \"local\";\n \n if (UrlProvider.testMode === \"test\")\n return \"test\";\n\n switch(window.location.host) {\n case \"local.linkstacks.io\": return \"local\";\n case \"test.linkstacks.io\": return \"test\";\n case \"linkstacks.io\": return \"production\";\n default:\n return \"production\";\n }\n \n }\n\n\n public static initalizeTestMode() {\n if (localStorage) {\n UrlProvider.testMode = localStorage.getItem(UrlProvider.modeKey);\n if (UrlProvider.testMode)\n document.body.setAttribute(UrlProvider.modeKey, UrlProvider.testMode); \n }\n }\n\n public setTestMode(source: string) {\n if (localStorage)\n localStorage.setItem(UrlProvider.modeKey, source);\n \n UrlProvider.testMode = source;\n document.body.setAttribute(UrlProvider.modeKey, UrlProvider.testMode);\n }\n\n public async authenticatedUserId() : Promise\n {\n if (this.isLocal()) {\n const user = await AuthenticationStore.instance.currentUser();\n if (user)\n return user.userId;\n \n return undefined;\n }\n\n return (window).userId;\n }\n\n public async displayUserId(): Promise {\n if (this.isLocal()) \n return await this.authenticatedUserId();\n\n const segments = window.location.pathname.toLocaleLowerCase().split(\"/\");\n\n const potentialusername = segments[1];\n if (potentialusername[0] === \"@\")\n return potentialusername.substring(1);\n\n return await this.authenticatedUserId();\n }\n\n public async currentUserIsDisplayUser() : Promise {\n return await this.displayUserId() === await this.authenticatedUserId();\n }\n\n public async stackLocation(stackSlug: string): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/stacks/${stackSlug}`;\n }\n\n public stackLocationUser(userId: string, stackSlug: string): string {\n return `${this.root}/api/@${userId}/stacks/${stackSlug}`;\n }\n\n public async userHome(): Promise {\n return `${this.root}/@${await this.authenticatedUserId()}/`;\n }\n\n public async userHomeLocation(): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/`;\n }\n\n public async allStacksLinksLocation(): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/links`;\n }\n\n public async stackSiteLocation(stackSlug: string): Promise {\n return `${this.root}/@${await this.displayUserId()}/stacks/${stackSlug}`;\n }\n\n public async inboxSiteLocation(): Promise {\n return await this.stackSiteLocation(\"inbox\");\n }\n\n public async stacksLocation(): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/stacks`;\n }\n\n public async linksLocation(): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/links`;\n }\n\n public async linkLocation(slug: string): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/links/${slug}`;\n }\n\n public async filtersLocation(): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/filters`;\n }\n\n public async linkLocationInStack(stackSlug: string, linkSlug: string): Promise {\n return `${this.root}/api/@${await this.authenticatedUserId()}/stacks/${stackSlug}/links/${linkSlug}`;\n }\n\n public async linkStackAssignLocation(stackSlug: string, linkSlug: string): Promise {\n return `${this.root}/api/@${await this.displayUserId()}/stacks/${stackSlug}/links/${linkSlug}/_copy`;\n }\n\n public async linksStackLocation(stackSlug: string): Promise {\n if (stackSlug === undefined || stackSlug === \"inbox\")\n return await this.linksLocation();\n else\n return `${await this.stackLocation(stackSlug)}/links`;\n }\n\n public async searchLocation(userId: string, query: string, stackSlug?: string): Promise {\n if (stackSlug === undefined || stackSlug === \"links\")\n return `${this.root}/api/@${userId}/_suggest?query=${query}`;\n else\n return `${this.stackLocationUser(userId, stackSlug)}/_suggest?query=${query}`;\n }\n \n public slugPart(id: string) {\n if (id[0] === \"/\")\n id = id.substring(1);\n\n const pos = id.indexOf(\"/\");\n if (pos === -1)\n return id;\n\n return id.substring(pos+1);\n\n }\n\n public static split(id: string): string[] {\n if (id.indexOf(\"/\") === -1)\n throw new Error(`Can't split on id, no slash: ${id}`);\n \n const parts = id.split(\"/\");\n if (parts.length !== 2)\n throw new Error(`Can't split on id, invalid slash count: ${id}`);\n \n return parts;\n }\n}\n\nUrlProvider.initalizeTestMode();","export class Lazy {\n private _value : T;\n private resolved: boolean;\n\n constructor(private action: () => T) {}\n \n get value(): T { \n if (this.resolved)\n return this._value;\n \n this.resolved = true;\n return this._value = this.action(); \n }\n\n get isResolved(): boolean{\n return this.resolved;\n }\n}\n\nexport interface IDisposable {\n dispose();\n}\n\nexport class Template {\n static replace(source: string, args: any) {\n return source.replace(/{(\\w+)}/g, (_, v) => args[v]);\n }\n}\n\nexport class AppError extends Error {\n __proto__: Error;\n constructor(message?: string) {\n const trueProto = new.target.prototype;\n super(message);\n this.__proto__ = trueProto;\n }\n}\n\n\nexport class Collection {\n static selectMany(input: TIn[], selectListFn: (t: TIn) => TOut[]): TOut[] {\n return input.reduce((out, inx) => {\n out.push(...selectListFn(inx));\n return out;\n }, new Array());\n }\n\n static distinctBy(input: TEntity[], keyFn: (t: TEntity) => any): TEntity[] {\n const unique = {};\n const result = [];\n input.forEach(entity => {\n const key = keyFn(entity);\n if (unique[key])\n return;\n\n unique[key] = true;\n result.push(entity);\n });\n return result;\n }\n}\n\nexport class NotAuthorizedError extends AppError { }\n\nexport class UnableToReachServiceError extends AppError {}\n\nexport class EmptyResultError extends AppError { }\n\nexport class Delay {\n public static wait(t) : Promise {\n return new Promise((resolve) => setTimeout(resolve, t));\n }\n}\n\nexport function isEquivalent(a: TClass, b: TClass) {\n // Create arrays of property names\n const aProps = Object.getOwnPropertyNames(a);\n const bProps = Object.getOwnPropertyNames(b);\n\n // If number of properties is different,\n // objects are not equivalent\n if (aProps.length !== bProps.length) {\n return false;\n }\n\n for (let i = 0; i < aProps.length; i++) {\n const propName = aProps[i];\n\n // If values of same property are not equal,\n // objects are not equivalent\n if (a[propName] !== b[propName]) {\n return false;\n }\n }\n\n // If we made it this far, objects\n // are considered equivalent\n return true;\n}\n\nexport interface Package {\n name:string;\n version: string;\n description: string;\n main: string;\n scripts: any;\n repository:any;\n keywords: string[];\n author: string,\n license: string;\n dependencies: any;\n devDependencies: any;\n}\n","\nimport { Delay } from \"lib/System\";\n\nexport class AdaptivePopup extends HTMLElement {\n\n connectedCallback() {\n // this.setAttribute(\"slide\", \"\");\n this.classList.add(\"adaptive\");\n\n this.querySelector(\"[name=back]\").addEventListener(\"click\", this.closeHandler);\n }\n\n protected closeHandler = async () => {\n requestAnimationFrame(async () => {\n this.setAttribute(\"slide\", \"\");\n await Delay.wait(300);\n this.remove();\n });\n };\n\n static addAndslide(element: HTMLElement) {\n requestAnimationFrame(() => {\n document.body.appendChild(element);\n requestAnimationFrame(() => {\n element.removeAttribute(\"slide\");\n });\n });\n }\n}","export class BrowserInfo {\n public static getQueryParam(param) : string {\n const result = window.location.search.match(\n new RegExp( `(\\\\?|&)${param}(\\\\[\\\\])?=([^&]*)`)\n );\n\n return result ? result[3] : undefined;\n }\n\n public static isMobileLike() {\n // this value must follow the value in SidePanelStyle\n return (window.innerWidth <= 850);\n }\n\n public static isApp = () => (window).Capacitor.isNative as boolean;\n\n public static isIOSApp() {\n return this.isApp() && (window).Capacitor.getPlatform() === \"ios\";\n } \n\n public static isTouch = ((\"ontouchstart\" in window) || (navigator.maxTouchPoints > 0));\n}","/*! Capacitor: https://capacitorjs.com/ - MIT License */\nconst createCapacitorPlatforms = (win) => {\n const defaultPlatformMap = new Map();\n defaultPlatformMap.set('web', { name: 'web' });\n const capPlatforms = win.CapacitorPlatforms || {\n currentPlatform: { name: 'web' },\n platforms: defaultPlatformMap,\n };\n const addPlatform = (name, platform) => {\n capPlatforms.platforms.set(name, platform);\n };\n const setPlatform = (name) => {\n if (capPlatforms.platforms.has(name)) {\n capPlatforms.currentPlatform = capPlatforms.platforms.get(name);\n }\n };\n capPlatforms.addPlatform = addPlatform;\n capPlatforms.setPlatform = setPlatform;\n return capPlatforms;\n};\nconst initPlatforms = (win) => (win.CapacitorPlatforms = createCapacitorPlatforms(win));\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst CapacitorPlatforms = /*#__PURE__*/ initPlatforms((typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst addPlatform = CapacitorPlatforms.addPlatform;\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst setPlatform = CapacitorPlatforms.setPlatform;\n\nconst legacyRegisterWebPlugin = (cap, webPlugin) => {\n var _a;\n const config = webPlugin.config;\n const Plugins = cap.Plugins;\n if (!(config === null || config === void 0 ? void 0 : config.name)) {\n // TODO: add link to upgrade guide\n throw new Error(`Capacitor WebPlugin is using the deprecated \"registerWebPlugin()\" function, but without the config. Please use \"registerPlugin()\" instead to register this web plugin.\"`);\n }\n // TODO: add link to upgrade guide\n console.warn(`Capacitor plugin \"${config.name}\" is using the deprecated \"registerWebPlugin()\" function`);\n if (!Plugins[config.name] || ((_a = config === null || config === void 0 ? void 0 : config.platforms) === null || _a === void 0 ? void 0 : _a.includes(cap.getPlatform()))) {\n // Add the web plugin into the plugins registry if there already isn't\n // an existing one. If it doesn't already exist, that means\n // there's no existing native implementation for it.\n // - OR -\n // If we already have a plugin registered (meaning it was defined in the native layer),\n // then we should only overwrite it if the corresponding web plugin activates on\n // a certain platform. For example: Geolocation uses the WebPlugin on Android but not iOS\n Plugins[config.name] = webPlugin;\n }\n};\n\nvar ExceptionCode;\n(function (ExceptionCode) {\n /**\n * API is not implemented.\n *\n * This usually means the API can't be used because it is not implemented for\n * the current platform.\n */\n ExceptionCode[\"Unimplemented\"] = \"UNIMPLEMENTED\";\n /**\n * API is not available.\n *\n * This means the API can't be used right now because:\n * - it is currently missing a prerequisite, such as network connectivity\n * - it requires a particular platform or browser version\n */\n ExceptionCode[\"Unavailable\"] = \"UNAVAILABLE\";\n})(ExceptionCode || (ExceptionCode = {}));\nclass CapacitorException extends Error {\n constructor(message, code, data) {\n super(message);\n this.message = message;\n this.code = code;\n this.data = data;\n }\n}\nconst getPlatformId = (win) => {\n var _a, _b;\n if (win === null || win === void 0 ? void 0 : win.androidBridge) {\n return 'android';\n }\n else if ((_b = (_a = win === null || win === void 0 ? void 0 : win.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.bridge) {\n return 'ios';\n }\n else {\n return 'web';\n }\n};\n\nconst createCapacitor = (win) => {\n var _a, _b, _c, _d, _e;\n const capCustomPlatform = win.CapacitorCustomPlatform || null;\n const cap = win.Capacitor || {};\n const Plugins = (cap.Plugins = cap.Plugins || {});\n /**\n * @deprecated Use `capCustomPlatform` instead, default functions like registerPlugin will function with the new object.\n */\n const capPlatforms = win.CapacitorPlatforms;\n const defaultGetPlatform = () => {\n return capCustomPlatform !== null\n ? capCustomPlatform.name\n : getPlatformId(win);\n };\n const getPlatform = ((_a = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _a === void 0 ? void 0 : _a.getPlatform) || defaultGetPlatform;\n const defaultIsNativePlatform = () => getPlatform() !== 'web';\n const isNativePlatform = ((_b = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _b === void 0 ? void 0 : _b.isNativePlatform) || defaultIsNativePlatform;\n const defaultIsPluginAvailable = (pluginName) => {\n const plugin = registeredPlugins.get(pluginName);\n if (plugin === null || plugin === void 0 ? void 0 : plugin.platforms.has(getPlatform())) {\n // JS implementation available for the current platform.\n return true;\n }\n if (getPluginHeader(pluginName)) {\n // Native implementation available.\n return true;\n }\n return false;\n };\n const isPluginAvailable = ((_c = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _c === void 0 ? void 0 : _c.isPluginAvailable) ||\n defaultIsPluginAvailable;\n const defaultGetPluginHeader = (pluginName) => { var _a; return (_a = cap.PluginHeaders) === null || _a === void 0 ? void 0 : _a.find(h => h.name === pluginName); };\n const getPluginHeader = ((_d = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _d === void 0 ? void 0 : _d.getPluginHeader) || defaultGetPluginHeader;\n const handleError = (err) => win.console.error(err);\n const pluginMethodNoop = (_target, prop, pluginName) => {\n return Promise.reject(`${pluginName} does not have an implementation of \"${prop}\".`);\n };\n const registeredPlugins = new Map();\n const defaultRegisterPlugin = (pluginName, jsImplementations = {}) => {\n const registeredPlugin = registeredPlugins.get(pluginName);\n if (registeredPlugin) {\n console.warn(`Capacitor plugin \"${pluginName}\" already registered. Cannot register plugins twice.`);\n return registeredPlugin.proxy;\n }\n const platform = getPlatform();\n const pluginHeader = getPluginHeader(pluginName);\n let jsImplementation;\n const loadPluginImplementation = async () => {\n if (!jsImplementation && platform in jsImplementations) {\n jsImplementation =\n typeof jsImplementations[platform] === 'function'\n ? (jsImplementation = await jsImplementations[platform]())\n : (jsImplementation = jsImplementations[platform]);\n }\n else if (capCustomPlatform !== null &&\n !jsImplementation &&\n 'web' in jsImplementations) {\n jsImplementation =\n typeof jsImplementations['web'] === 'function'\n ? (jsImplementation = await jsImplementations['web']())\n : (jsImplementation = jsImplementations['web']);\n }\n return jsImplementation;\n };\n const createPluginMethod = (impl, prop) => {\n var _a, _b;\n if (pluginHeader) {\n const methodHeader = pluginHeader === null || pluginHeader === void 0 ? void 0 : pluginHeader.methods.find(m => prop === m.name);\n if (methodHeader) {\n if (methodHeader.rtype === 'promise') {\n return (options) => cap.nativePromise(pluginName, prop.toString(), options);\n }\n else {\n return (options, callback) => cap.nativeCallback(pluginName, prop.toString(), options, callback);\n }\n }\n else if (impl) {\n return (_a = impl[prop]) === null || _a === void 0 ? void 0 : _a.bind(impl);\n }\n }\n else if (impl) {\n return (_b = impl[prop]) === null || _b === void 0 ? void 0 : _b.bind(impl);\n }\n else {\n throw new CapacitorException(`\"${pluginName}\" plugin is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n };\n const createPluginMethodWrapper = (prop) => {\n let remove;\n const wrapper = (...args) => {\n const p = loadPluginImplementation().then(impl => {\n const fn = createPluginMethod(impl, prop);\n if (fn) {\n const p = fn(...args);\n remove = p === null || p === void 0 ? void 0 : p.remove;\n return p;\n }\n else {\n throw new CapacitorException(`\"${pluginName}.${prop}()\" is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n });\n if (prop === 'addListener') {\n p.remove = async () => remove();\n }\n return p;\n };\n // Some flair ✨\n wrapper.toString = () => `${prop.toString()}() { [capacitor code] }`;\n Object.defineProperty(wrapper, 'name', {\n value: prop,\n writable: false,\n configurable: false,\n });\n return wrapper;\n };\n const addListener = createPluginMethodWrapper('addListener');\n const removeListener = createPluginMethodWrapper('removeListener');\n const addListenerNative = (eventName, callback) => {\n const call = addListener({ eventName }, callback);\n const remove = async () => {\n const callbackId = await call;\n removeListener({\n eventName,\n callbackId,\n }, callback);\n };\n const p = new Promise(resolve => call.then(() => resolve({ remove })));\n p.remove = async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n };\n return p;\n };\n const proxy = new Proxy({}, {\n get(_, prop) {\n switch (prop) {\n // https://github.com/facebook/react/issues/20030\n case '$$typeof':\n return undefined;\n case 'toJSON':\n return () => ({});\n case 'addListener':\n return pluginHeader ? addListenerNative : addListener;\n case 'removeListener':\n return removeListener;\n default:\n return createPluginMethodWrapper(prop);\n }\n },\n });\n Plugins[pluginName] = proxy;\n registeredPlugins.set(pluginName, {\n name: pluginName,\n proxy,\n platforms: new Set([\n ...Object.keys(jsImplementations),\n ...(pluginHeader ? [platform] : []),\n ]),\n });\n return proxy;\n };\n const registerPlugin = ((_e = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _e === void 0 ? void 0 : _e.registerPlugin) || defaultRegisterPlugin;\n // Add in convertFileSrc for web, it will already be available in native context\n if (!cap.convertFileSrc) {\n cap.convertFileSrc = filePath => filePath;\n }\n cap.getPlatform = getPlatform;\n cap.handleError = handleError;\n cap.isNativePlatform = isNativePlatform;\n cap.isPluginAvailable = isPluginAvailable;\n cap.pluginMethodNoop = pluginMethodNoop;\n cap.registerPlugin = registerPlugin;\n cap.Exception = CapacitorException;\n cap.DEBUG = !!cap.DEBUG;\n cap.isLoggingEnabled = !!cap.isLoggingEnabled;\n // Deprecated props\n cap.platform = cap.getPlatform();\n cap.isNative = cap.isNativePlatform();\n return cap;\n};\nconst initCapacitorGlobal = (win) => (win.Capacitor = createCapacitor(win));\n\nconst Capacitor = /*#__PURE__*/ initCapacitorGlobal(typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {});\nconst registerPlugin = Capacitor.registerPlugin;\n/**\n * @deprecated Provided for backwards compatibility for Capacitor v2 plugins.\n * Capacitor v3 plugins should import the plugin directly. This \"Plugins\"\n * export is deprecated in v3, and will be removed in v4.\n */\nconst Plugins = Capacitor.Plugins;\n/**\n * Provided for backwards compatibility. Use the registerPlugin() API\n * instead, and provide the web plugin as the \"web\" implmenetation.\n * For example\n *\n * export const Example = registerPlugin('Example', {\n * web: () => import('./web').then(m => new m.Example())\n * })\n *\n * @deprecated Deprecated in v3, will be removed from v4.\n */\nconst registerWebPlugin = (plugin) => legacyRegisterWebPlugin(Capacitor, plugin);\n\n/**\n * Base class web plugins should extend.\n */\nclass WebPlugin {\n constructor(config) {\n this.listeners = {};\n this.windowListeners = {};\n if (config) {\n // TODO: add link to upgrade guide\n console.warn(`Capacitor WebPlugin \"${config.name}\" config object was deprecated in v3 and will be removed in v4.`);\n this.config = config;\n }\n }\n addListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(listenerFunc);\n // If we haven't added a window listener for this event and it requires one,\n // go ahead and add it\n const windowListener = this.windowListeners[eventName];\n if (windowListener && !windowListener.registered) {\n this.addWindowListener(windowListener);\n }\n const remove = async () => this.removeListener(eventName, listenerFunc);\n const p = Promise.resolve({ remove });\n Object.defineProperty(p, 'remove', {\n value: async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n },\n });\n return p;\n }\n async removeAllListeners() {\n this.listeners = {};\n for (const listener in this.windowListeners) {\n this.removeWindowListener(this.windowListeners[listener]);\n }\n this.windowListeners = {};\n }\n notifyListeners(eventName, data) {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(listener => listener(data));\n }\n }\n hasListeners(eventName) {\n return !!this.listeners[eventName].length;\n }\n registerWindowListener(windowEventName, pluginEventName) {\n this.windowListeners[pluginEventName] = {\n registered: false,\n windowEventName,\n pluginEventName,\n handler: event => {\n this.notifyListeners(pluginEventName, event);\n },\n };\n }\n unimplemented(msg = 'not implemented') {\n return new Capacitor.Exception(msg, ExceptionCode.Unimplemented);\n }\n unavailable(msg = 'not available') {\n return new Capacitor.Exception(msg, ExceptionCode.Unavailable);\n }\n async removeListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listenerFunc);\n this.listeners[eventName].splice(index, 1);\n // If there are no more listeners for this type of event,\n // remove the window listener\n if (!this.listeners[eventName].length) {\n this.removeWindowListener(this.windowListeners[eventName]);\n }\n }\n addWindowListener(handle) {\n window.addEventListener(handle.windowEventName, handle.handler);\n handle.registered = true;\n }\n removeWindowListener(handle) {\n if (!handle) {\n return;\n }\n window.removeEventListener(handle.windowEventName, handle.handler);\n handle.registered = false;\n }\n}\n\nconst WebView = /*#__PURE__*/ registerPlugin('WebView');\n/******** END WEB VIEW PLUGIN ********/\n/******** COOKIES PLUGIN ********/\n/**\n * Safely web encode a string value (inspired by js-cookie)\n * @param str The string value to encode\n */\nconst encode = (str) => encodeURIComponent(str)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n/**\n * Safely web decode a string value (inspired by js-cookie)\n * @param str The string value to decode\n */\nconst decode = (str) => str.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\nclass CapacitorCookiesPluginWeb extends WebPlugin {\n async getCookies() {\n const cookies = document.cookie;\n const cookieMap = {};\n cookies.split(';').forEach(cookie => {\n if (cookie.length <= 0)\n return;\n // Replace first \"=\" with CAP_COOKIE to prevent splitting on additional \"=\"\n let [key, value] = cookie.replace(/=/, 'CAP_COOKIE').split('CAP_COOKIE');\n key = decode(key).trim();\n value = decode(value).trim();\n cookieMap[key] = value;\n });\n return cookieMap;\n }\n async setCookie(options) {\n try {\n // Safely Encoded Key/Value\n const encodedKey = encode(options.key);\n const encodedValue = encode(options.value);\n // Clean & sanitize options\n const expires = `; expires=${(options.expires || '').replace('expires=', '')}`; // Default is \"; expires=\"\n const path = (options.path || '/').replace('path=', ''); // Default is \"path=/\"\n const domain = options.url != null && options.url.length > 0\n ? `domain=${options.url}`\n : '';\n document.cookie = `${encodedKey}=${encodedValue || ''}${expires}; path=${path}; ${domain};`;\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async deleteCookie(options) {\n try {\n document.cookie = `${options.key}=; Max-Age=0`;\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async clearCookies() {\n try {\n const cookies = document.cookie.split(';') || [];\n for (const cookie of cookies) {\n document.cookie = cookie\n .replace(/^ +/, '')\n .replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`);\n }\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async clearAllCookies() {\n try {\n await this.clearCookies();\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n}\nconst CapacitorCookies = registerPlugin('CapacitorCookies', {\n web: () => new CapacitorCookiesPluginWeb(),\n});\n// UTILITY FUNCTIONS\n/**\n * Read in a Blob value and return it as a base64 string\n * @param blob The blob value to convert to a base64 string\n */\nconst readBlobAsBase64 = async (blob) => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n // remove prefix \"data:application/pdf;base64,\"\n resolve(base64String.indexOf(',') >= 0\n ? base64String.split(',')[1]\n : base64String);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(blob);\n});\n/**\n * Normalize an HttpHeaders map by lowercasing all of the values\n * @param headers The HttpHeaders object to normalize\n */\nconst normalizeHttpHeaders = (headers = {}) => {\n const originalKeys = Object.keys(headers);\n const loweredKeys = Object.keys(headers).map(k => k.toLocaleLowerCase());\n const normalized = loweredKeys.reduce((acc, key, index) => {\n acc[key] = headers[originalKeys[index]];\n return acc;\n }, {});\n return normalized;\n};\n/**\n * Builds a string of url parameters that\n * @param params A map of url parameters\n * @param shouldEncode true if you should encodeURIComponent() the values (true by default)\n */\nconst buildUrlParams = (params, shouldEncode = true) => {\n if (!params)\n return null;\n const output = Object.entries(params).reduce((accumulator, entry) => {\n const [key, value] = entry;\n let encodedValue;\n let item;\n if (Array.isArray(value)) {\n item = '';\n value.forEach(str => {\n encodedValue = shouldEncode ? encodeURIComponent(str) : str;\n item += `${key}=${encodedValue}&`;\n });\n // last character will always be \"&\" so slice it off\n item.slice(0, -1);\n }\n else {\n encodedValue = shouldEncode ? encodeURIComponent(value) : value;\n item = `${key}=${encodedValue}`;\n }\n return `${accumulator}&${item}`;\n }, '');\n // Remove initial \"&\" from the reduce\n return output.substr(1);\n};\n/**\n * Build the RequestInit object based on the options passed into the initial request\n * @param options The Http plugin options\n * @param extra Any extra RequestInit values\n */\nconst buildRequestInit = (options, extra = {}) => {\n const output = Object.assign({ method: options.method || 'GET', headers: options.headers }, extra);\n // Get the content-type\n const headers = normalizeHttpHeaders(options.headers);\n const type = headers['content-type'] || '';\n // If body is already a string, then pass it through as-is.\n if (typeof options.data === 'string') {\n output.body = options.data;\n }\n // Build request initializers based off of content-type\n else if (type.includes('application/x-www-form-urlencoded')) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.data || {})) {\n params.set(key, value);\n }\n output.body = params.toString();\n }\n else if (type.includes('multipart/form-data')) {\n const form = new FormData();\n if (options.data instanceof FormData) {\n options.data.forEach((value, key) => {\n form.append(key, value);\n });\n }\n else {\n for (const key of Object.keys(options.data)) {\n form.append(key, options.data[key]);\n }\n }\n output.body = form;\n const headers = new Headers(output.headers);\n headers.delete('content-type'); // content-type will be set by `window.fetch` to includy boundary\n output.headers = headers;\n }\n else if (type.includes('application/json') ||\n typeof options.data === 'object') {\n output.body = JSON.stringify(options.data);\n }\n return output;\n};\n// WEB IMPLEMENTATION\nclass CapacitorHttpPluginWeb extends WebPlugin {\n /**\n * Perform an Http request given a set of options\n * @param options Options to build the HTTP request\n */\n async request(options) {\n const requestInit = buildRequestInit(options, options.webFetchExtra);\n const urlParams = buildUrlParams(options.params, options.shouldEncodeUrlParams);\n const url = urlParams ? `${options.url}?${urlParams}` : options.url;\n const response = await fetch(url, requestInit);\n const contentType = response.headers.get('content-type') || '';\n // Default to 'text' responseType so no parsing happens\n let { responseType = 'text' } = response.ok ? options : {};\n // If the response content-type is json, force the response to be json\n if (contentType.includes('application/json')) {\n responseType = 'json';\n }\n let data;\n let blob;\n switch (responseType) {\n case 'arraybuffer':\n case 'blob':\n blob = await response.blob();\n data = await readBlobAsBase64(blob);\n break;\n case 'json':\n data = await response.json();\n break;\n case 'document':\n case 'text':\n default:\n data = await response.text();\n }\n // Convert fetch headers to Capacitor HttpHeaders\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return {\n data,\n headers,\n status: response.status,\n url: response.url,\n };\n }\n /**\n * Perform an Http GET request given a set of options\n * @param options Options to build the HTTP request\n */\n async get(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'GET' }));\n }\n /**\n * Perform an Http POST request given a set of options\n * @param options Options to build the HTTP request\n */\n async post(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'POST' }));\n }\n /**\n * Perform an Http PUT request given a set of options\n * @param options Options to build the HTTP request\n */\n async put(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'PUT' }));\n }\n /**\n * Perform an Http PATCH request given a set of options\n * @param options Options to build the HTTP request\n */\n async patch(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'PATCH' }));\n }\n /**\n * Perform an Http DELETE request given a set of options\n * @param options Options to build the HTTP request\n */\n async delete(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'DELETE' }));\n }\n}\nconst CapacitorHttp = registerPlugin('CapacitorHttp', {\n web: () => new CapacitorHttpPluginWeb(),\n});\n/******** END HTTP PLUGIN ********/\n\nexport { Capacitor, CapacitorCookies, CapacitorException, CapacitorHttp, CapacitorPlatforms, ExceptionCode, Plugins, WebPlugin, WebView, addPlatform, buildRequestInit, registerPlugin, registerWebPlugin, setPlatform };\n//# sourceMappingURL=index.js.map\n","import { cityline } from \"features/cityline\";\nimport EventTarget from \"@ungap/event-target\";\nimport { ClassTypename, Typename } from \"lib/Types\";\n\n\ninterface EventMap {\n \"changed\": UserPreference;\n}\n\n@ClassTypename(\"UserPreferenceStore\")\nexport class UserPreferenceStore {\n private initializer: Promise;\n private _preference: UserPreference;\n private static _instance = new UserPreferenceStore();\n private eventTarget = new EventTarget();\n\n private constructor() {\n this.initializer = this.doInitialize();\n setTimeout(async () => await this.initializer);\n }\n static get instance() { return UserPreferenceStore._instance; }\n\n private async doInitialize() {\n this._preference = await cityline.getFrame(\"user-preferences\");\n cityline.addEventListener(\"user-preferences\", async (event: CustomEvent) => {\n this._preference = event.detail;\n this.emit(\"changed\", this._preference);\n });\n }\n\n public addEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.addEventListener(type, listener, options);\n }\n \n public removeEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.removeEventListener(type, listener, options);\n }\n \n private emit, T extends EventMap>(type: K, value: T[K]) {\n return this.eventTarget.dispatchEvent(new CustomEvent(type, { detail: Object.assign({}, value, { [Typename] : UserPreferenceStore[Typename] })})); \n }\n \n public async isSet(flag: UserPreferenceFlag) : Promise {\n await this.initializer;\n return flag === (this._preference.flags & flag);\n }\n\n public async get(name: string, throwOnMissing: boolean) : Promise {\n await this.initializer;\n\n const preference = this._preference[name];\n\n if (throwOnMissing && preference === undefined)\n throw new Error(`${name} not found in user-preferences`);\n\n return preference;\n }\n}\n\ninterface UserPreference {\n flags: UserPreferenceFlag;\n \"startup-time\": string;\n}\n\nexport enum UserPreferenceFlag\n{\n None = 0x0,\n AutomaticTagging = 0x1,\n Deactivated = 0x2,\n DigestEmail = 0x4,\n IsConfirmed = 0x8,\n Newsletter = 0x10,\n TwoFactorAuthenticationEnabled = 0x20,\n HasPassword = 0x40,\n IsAlphaTester = 0x80,\n IsBetaTester = 0x100,\n HideTips = 0x200,\n Promotion = 0x400\n}","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? globalThis : require(\"./implementation\");\n","\"use strict\";\n\nvar isValue = require(\"type/value/is\")\n , isPlainFunction = require(\"type/plain-function/is\")\n , assign = require(\"es5-ext/object/assign\")\n , normalizeOpts = require(\"es5-ext/object/normalize-options\")\n , contains = require(\"es5-ext/string/#/contains\");\n\nvar d = (module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif (arguments.length < 2 || typeof dscr !== \"string\") {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t\tw = contains.call(dscr, \"w\");\n\t} else {\n\t\tc = w = true;\n\t\te = false;\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n});\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== \"string\") {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (!isValue(get)) {\n\t\tget = undefined;\n\t} else if (!isPlainFunction(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (!isValue(set)) {\n\t\tset = undefined;\n\t} else if (!isPlainFunction(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t} else {\n\t\tc = true;\n\t\te = false;\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { EventEmitter } from \"events\";\nimport { DOM } from \"lib/DOM\";\nimport { Delay } from \"lib/System\";\nimport \"url-polyfill\";\n\nexport enum RouteChangeOrigin{\n Requested,\n PageLoad,\n Popstate,\n Pushstate\n}\n\nexport type Direction = \"none\" | \"forward\" | \"backward\";\n\nexport interface IRoute {\n path: string[];\n parameters:{ [key: string]: string };\n origin?: RouteChangeOrigin;\n direction?: Direction;\n hash?: string;\n requester?: string;\n}\n\nexport class Routing extends EventEmitter {\n private static _instance = new Routing();\n public static ClassName = \"Routing\";\n private currentRoute: IRoute;\n private isFileProtocol = window.location && window.location.protocol === \"file:\" || window.location.hostname === \"localhost\";\n\n public static emptyRoute() : IRoute {\n return { path: [], parameters: {}};\n }\n \n private async setup() {\n await DOM.ready();\n \n if (window.location.href.indexOf(\"%40\") !== -1 && window.history && window.history.replaceState)\n history.replaceState(undefined, undefined, window.location.href.replace(\"%40\", \"@\"));\n \n }\n\n private constructor() {\n super();\n\n this.setMaxListeners(100);\n\n setTimeout(() => this.setup());\n\n \n this.parseCurrent(); // todo: when \n\n setTimeout(async () =>{\n await DOM.ready();\n await Delay.wait(20);\n this.currentRoute.origin = RouteChangeOrigin.PageLoad;\n this.emitRouteChanged( this.currentRoute, Routing.ClassName); \n });\n\n \n window.addEventListener(\"popstate\", (event: PopStateEvent) => {\n if (!event.state)\n return;\n\n const route = this.parse(event.state);\n if (route)\n {\n this.currentRoute = route;\n this.emitRouteChanged( this.currentRoute );\n }\n });\n\n window.addEventListener(\"keydown\", async (event: KeyboardEvent) => {\n if (event.altKey && (event.key === \"b\" || event.keyCode === 66)) {\n this.goBack();\n }\n });\n \n window.addEventListener(\"backbutton\", (event) => {\n event.preventDefault();\n this.goBack();\n });\n \n document.addEventListener(\"click\", event => {\n try {\n\n const target = (event.target || event.currentTarget);\n\n if (!target)\n return;\n\n const route = target.closest(\"[route]\");\n\n if (route) {\n\n let link: HTMLAnchorElement;\n if (route.hasAttribute(\"href\"))\n link = route as HTMLAnchorElement;\n else\n link = route.querySelector(\"a[href]\") as HTMLAnchorElement;\n\n const url = link.getAttribute(\"href\");\n this.go(url, `${Routing.ClassName}-clickHandler`);\n event.preventDefault();\n }\n }\n catch(e) {\n console.log(e);\n }\n \n });\n }\n\n\n private history:string[] = [];\n\n public publish(url: string, replace = false) {\n \n if (!this.isFileProtocol) \n if (replace)\n window.history.replaceState(url, url, url);\n else\n window.history.pushState(url, url, url);\n else\n {\n this.history.push(url);\n window.location.hash = \"\";\n }\n\n this.currentRoute = this.parse(url);\n }\n\n public go(url: string, requester = \"unknown\") {\n this.publish(url);\n this.emitRouteChanged( this.currentRoute, requester ); \n }\n \n public replace(url: string) {\n this.publish(url, true);\n this.emitRouteChanged( this.currentRoute ); \n }\n\n public refresh() {\n this.emitRouteChanged( this.currentRoute ); \n }\n\n public goBack() {\n if (this.history.length > 0) \n this.history.pop(); // pop current\n\n if (this.history.length > 0) {\n const backUrl = this.history[this.history.length-1]; // previous\n \n this.currentRoute = this.parse(backUrl);\n this.emitRouteChanged( this.currentRoute );\n return true;\n } else {\n return false;\n }\n }\n\n get route() : IRoute {\n return this.currentRoute;\n }\n \n private emitRouteChanged(route: IRoute, requester = \"unknown\") {\n this.emit(\"RouteChanged\", route, requester);\n }\n \n onChange(callback: (route: IRoute, requester: string) => void) {\n this.on(\"RouteChanged\", callback);\n }\n\n offChange(callback: (route: IRoute, requester: string) => void) {\n this.removeListener(\"RouteChanged\", callback);\n }\n\n\n static get instance() {\n return Routing._instance;\n }\n private parseCurrent() {\n if (this.isFileProtocol)\n this.currentRoute = Routing.emptyRoute();\n else\n this.currentRoute = this.parse(window.location.href);\n }\n\n public matches(url: string) {\n return this.isMatch(url, this.currentRoute);\n }\n\n public isMatch(url: string, route: IRoute) {\n const parsed = this.parse(url);\n\n let pos = 0;\n for (const part of parsed.path) {\n const routePart = route.path[pos];\n pos++;\n\n if (part === \"@*\" && routePart && routePart[0] === \"@\")\n continue;\n\n if (part === \"-\" && !routePart)\n continue;\n\n if (part === \"*\" && routePart)\n continue;\n \n if (!routePart || part !== routePart)\n return false;\n }\n\n return true;\n }\n\n public parse(url: string) : IRoute {\n const parsed = new URL(url, \"https://not-used\");\n \n if (!parsed)\n console.log(\"Could not parse\", url);\n\n if (parsed.pathname[0] === \"/\")\n parsed.pathname = parsed.pathname.substring(1);\n\n const path = parsed.pathname.split(\"/\").filter(i => i !== \"\");\n\n const parameters = {};\n parsed.search.substring(1).split(\"&\").forEach(parameter => {\n if (!parameter)\n return;\n\n const parts = parameter.split(\"=\");\n parameters[parts[0]] = parts.length > 1 ? decodeURIComponent(parts[1].replace(/\\+/g, \"%20\")) : \"\";\n });\n\n const result = {\n path: path,\n parameters: parameters,\n hash: parsed.hash\n };\n\n\n return result;\n }\n}","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n","export class DOMLite {\n\n static createIsolated(): HTMLElement {\n const d = document;\n let root = d.createElement(\"ls-bm\");\n d.body.appendChild(root);\n\n if ((root).attachShadow)\n root = (root).attachShadow({ mode: \"open\" });\n\n root.innerHTML = DOMLite.isolatedElementView();\n\n return root.querySelector(\"div\");\n }\n\n static isolatedElementView = () => `\n \n
\n `;\n}\n\n\n\n// * {\n// all: unset;\n// }\n// all: initial;","// import { AppsStore } from \"features/apps-index/AppsStore\";\n\nimport { Package } from \"features/packages/Package\";\nimport { PackageStore } from \"features/manage/PackageStore\";\nimport \"./BasePackageElement-style\";\nimport \"./BasePackageElementForms-style\";\nexport class BasePackageElement extends HTMLElement {\n protected slug: string;\n protected appsStore: import(\"features/apps-index/AppsStore\").AppsStore;\n\n async connectedCallback() {\n this.appsStore = (await import( /* webpackChunkName: \"stacks\" */ \"features/apps-index/AppsStore\")).AppsStore.instance;\n\n this.classList.add(\"package\");\n await this.initialize();\n const packages = (await this.appsStore.all()).concat(new PackageStore().all());\n const thePackage = packages.filter(p => p.slug === this.slug)[0];\n this.innerHTML = this.view(thePackage);\n this.setupDOM()\n }\n\n protected async initialize() {\n \n }\n \n protected setupDOM() {\n\n }\n\n protected detailView = (thePackage: Package) => ``; \n \n \n\n protected navView = () => `\n \n `;\n\n private view = (thePackage: Package) => ` \n ${this.navView()}\n \n
\n \n \n \n
\n
\n

${thePackage.name}

\n ${thePackage.version ? `
${thePackage.version}
` : \"\"}\n \n

${thePackage.description}

\n \n
\n ${this.detailView(thePackage)}\n
\n
\n `;\n}\n","\"use strict\";\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n","\"use strict\";\n\nvar isSymbol = require(\"./is-symbol\");\n\nmodule.exports = function (value) {\n\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\treturn value;\n};\n","import { EventEmitter } from \"events\"\n\nexport class TaskStore extends EventEmitter {\n private tasks = [];\n private static _instance = new TaskStore();\n\n static get instance() {\n return TaskStore._instance;\n }\n\n private emitInProgress(message?: string) {\n this.emit(\"InProgress\", message);\n }\n\n public onInProgress(callback: (message?: string) => void) {\n this.on(\"InProgress\", callback);\n }\n\n public offInProgress(callback: (message?: string) => void) {\n this.removeListener(\"InProgress\", callback);\n }\n\n private emitCompletedTask(message?: string) {\n this.emit(\"CompletedTask\", message);\n }\n\n public onCompletedTask(callback: (message?: string) => void) {\n this.on(\"CompletedTask\", callback);\n }\n\n private emitComplete(message?: string) {\n this.emit(\"Complete\", message);\n }\n\n public onComplete(callback: (message?: string) => void) {\n this.on(\"Complete\", callback);\n }\n\n public offComplete(callback: (message?: string) => void) {\n this.removeListener(\"Complete\", callback);\n }\n\n\n async add(promise: Promise, message?: string) : Promise {\n this.tasks.push(true);\n this.emitInProgress(message);\n\n try {\n return await promise;\n } finally {\n this.tasks.pop();\n this.emitCompletedTask();\n if (this.tasks.length === 0){\n this.emitComplete();\n }\n }\n }\n}\n\nexport interface Task {\n\n}","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (new URLSearchParams('?a=1').toString() === 'a=1') && (typeof URLSearchParams.prototype.set === 'function');\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","import { DOM } from \"lib/DOM\";\nimport * as dialogStyle from \"../../styles/dialog-module.less\";\n\nexport interface IViewController {\n view: () => string;\n load?: (element: HTMLElement) => void;\n unload?: (element: HTMLElement) => void;\n}\n\nexport interface ITap {\n title: string;\n viewController: () => IViewController;\n}\n\nexport class BaseDialogViewController {\n protected dialog: HTMLDialogElement;\n private static idCount = 0;\n protected clazz = \"\";\n protected renderFrame = true;\n private checkAndClose: (e) => void;\n private checkAndCloseKeyboard: (e) => void;\n protected targetSelector: () => HTMLElement = () => document.querySelector(\"body\") ;\n protected targetLocation: InsertPosition = \"afterbegin\";\n protected tabs: ITap[];\n protected currentTab: ITap;\n\n constructor() {\n setTimeout(async () => await this.initialize());\n }\n\n async initialize() {\n await DOM.ready();\n this.setupDOM();\n this.registerEvents();\n }\n\n getTabs(): ITap[] {\n return [{\n title: this.getTitle(),\n viewController: () => ({ view: () => this.renderSection() })\n }];\n }\n\n getFormAction() {\n return \"links\";\n }\n\n setupDOM() {\n }\n\n registerEvents() {\n\n }\n \n cancel() {\n this.close();\n }\n\n afterRender() {\n const closeButton = this.dialog.querySelector(\".close\");\n\n if (closeButton)\n closeButton.addEventListener(\"click\", (event) => {\n event.preventDefault();\n this.cancel();\n }); \n\n this.checkAndClose = (e) => {\n if (document.contains(e.target) && !this.dialog.contains(e.target)) {\n e.preventDefault();\n this.cancel();\n }\n }\n\n this.checkAndCloseKeyboard = (e : KeyboardEvent) => {\n if (e.key === \"Escape\")\n this.cancel();\n }\n\n window.setTimeout(() => {\n document.body.addEventListener(\"click\", this.checkAndClose);\n document.body.addEventListener(\"keydown\", this.checkAndCloseKeyboard);\n }, 0);\n\n\n if (this.getTabs().length > 1) {\n const tabButtons = Array.prototype.slice.call(this.dialog.querySelectorAll(\"header > a:not(.close)\"));\n tabButtons.forEach(tabButton => {\n tabButton.addEventListener(\"click\", event => {\n event.preventDefault();\n //tabButtons.forEach(button => button.classList.remove('active'));\n //tabButton.classList.add('active');\n const tab = this.getTabs().filter(l => l.title === tabButton.innerText)[0];\n this.showTab(tab);\n });\n \n });\n }\n\n this.validateCurrentTab();\n }\n\n showTab(tab: ITap) {\n const section = this.dialog.querySelector(\"section\");\n\n if (this.currentTab && this.currentTab.viewController().unload)\n this.currentTab.viewController().unload(section);\n\n this.currentTab = tab;\n\n const tabHtml = tab.viewController().view();\n \n section.innerHTML = tabHtml;\n\n if (this.currentTab.viewController().load)\n this.currentTab.viewController().load(section);\n\n // update submit button\n const changableElements = Array.prototype.slice.call(section.querySelectorAll(\"input\"));\n changableElements.forEach(element => {\n element.addEventListener(\"change\", () => this.validateCurrentTab());\n element.addEventListener(\"input\", () => this.validateCurrentTab());\n element.addEventListener(\"keyup\", () => this.validateCurrentTab());\n element.addEventListener(\"paste\", () => setTimeout(() => this.validateCurrentTab(), 0));\n });\n\n // update tab-bar\n const tabButtons = Array.prototype.slice.call(this.dialog.querySelectorAll(\"header > a:not(.close)\"));\n if (tabButtons.length > 1)\n tabButtons.forEach(button => button.innerText === tab.title ? button.classList.add(\"active\") : button.classList.remove(\"active\"));\n\n }\n\n validateCurrentTab() {\n const footer = this.dialog.querySelector(\"footer\");\n const button = footer.querySelector(\"button[type=submit]\");\n const form = this.dialog.querySelector(\"form\");\n\n if (!button)\n return;\n \n button.disabled = !form.checkValidity();\n\n const tabButtons = Array.prototype.slice.call(this.dialog.querySelectorAll(\"header > a:not(.close)\"));\n tabButtons.forEach(button => form.checkValidity() ? button.classList.remove(\"disabled\") : button.classList.add(\"disabled\"));\n }\n\n beforeRender() {\n return Promise.resolve();\n }\n\n close() {\n document.body.removeEventListener(\"click\", this.checkAndClose);\n document.body.removeEventListener(\"keydown\", this.checkAndCloseKeyboard);\n\n if (this.renderFrame)\n this.dialog.parentElement.remove();\n else\n this.dialog.remove();\n }\n\n renderSection = () => \"\";\n\n renderFooter = () => \"\";\n\n getTitle(): string {\n return \"\";\n }\n\n async show() : Promise {\n await this.beforeRender();\n \n const id = `dialog-${BaseDialogViewController.idCount++}`;\n\n const target = this.targetSelector();\n\n if (!target)\n throw Error(\"Target for dialog not found\");\n\n target.insertAdjacentHTML(this.targetLocation, this.dialogView(id));\n this.dialog = document.getElementById(id);\n this.showTab(this.getTabs()[0]);\n this.dialog.style.display = \"block\";\n this.afterRender(); \n }\n \n headerView = (title: string) => {\n const tabs = this.getTabs();\n return `
\n ${tabs.map(l => ` 1 ? \" class=\\\"active\\\"\" : \"\"}>${l.title}`).join(\"\")}\n \n ${require(\"!!svg-inline-loader!image/icons/close-icon.svg\")}\n \n
`;\n }\n\n private dialogView = (id: string) => `\n ${this.renderFrame ? `
`: \"\"}\n
\n
\n \n ${this.headerView(this.getTitle())}\n
\n \n
\n
\n ${this.renderFooter()}\n
\n
\n
\n ${this.renderFrame ? `
`: \"\"}`;\n}\n","import \"./Dialog-style\"; \nimport { BaseDialogViewController } from \"features/dialog\";\nimport { Formatting } from \"lib/Formatting\";\n\nexport interface ExtendedOption {\n name: string;\n href?: string;\n target?: string;\n}\n\nexport interface DialogContent {\n caption: string;\n message: string;\n options?: string[];\n extendedOptions?: ExtendedOption[];\n}\n\nexport class DialogController extends BaseDialogViewController {\n private escape = Formatting.htmlEscape;\n private content: DialogContent;\n private resolve: (string) => void;\n protected targetLocation: InsertPosition = \"beforeend\";\n constructor() {\n super();\n }\n\n getTitle(): string {\n return this.content.caption;\n }\n\n cancel() {\n this.resolve(\"cancel\");\n super.cancel();\n }\n\n public async prompt(content: DialogContent) : Promise {\n this.content = content;\n await this.show();\n return await new Promise((resolve, reject) => {\n this.resolve = resolve; \n });\n }\n\n afterRender() {\n super.afterRender();\n\n [].slice.call(this.dialog.querySelectorAll(\"button\")).forEach((element: HTMLButtonElement) => {\n element.addEventListener(\"click\", (event) => {\n super.close();\n const button = event.target;\n this.resolve(button.name);\n });\n });\n }\n\n private inactive = (text: string) => text.toLocaleLowerCase() === \"cancel\";\n\n renderSection = () => this.escape`${this.content.message.split(\"\\n\").map(m => `

${m}

`)}`\n\n renderFooter = () => this.content.extendedOptions ? this.renderFooterExtended() : this.escape`${this.content.options.map(m => ``)}`;\n renderFooterExtended = () => this.escape`${this.content.extendedOptions.map(m => m.href ?\n `${m.name}`\n : ``)}`;\n}\n","import { DOMLite } from \"lib/DOMLite\"\n\ndeclare var require: any;\n\nexport interface NotifyHandle {\n success?: boolean;\n hide?: () => void;\n}\n\nexport interface NotificationMessage {\n title: string;\n body?: string;\n icon?: string;\n showSeconds?: number;\n showLoader?: boolean;\n showOk?: boolean;\n}\n\n\nexport class NotifyViewController {\n private static slots: number[] = [];\n private okIcon = () => ``;\n private static _style = require(\"!!raw-loader!less-loader!./NotifyStyle\");\n\n showWeb(message: NotificationMessage): NotifyHandle {\n\n const isolatedElement = DOMLite.createIsolated();\n\n let slot = 0;\n while (NotifyViewController.slots.indexOf(slot) !== -1)\n slot++;\n\n NotifyViewController.slots.push(slot);\n\n isolatedElement.innerHTML = `\n \n\n
\n
\n ${message.showLoader ? \"
\" : \"\"}\n ${message.showOk ? this.okIcon() : \"\"}\n ${message.icon ? `` : \"\"}\n
${message.title}
\n ${message.body ? `
${message.body}
` : \"\"}\n
\n
\n `;\n\n\n \n const t = window.setTimeout;\n\n const notify = isolatedElement.getElementsByClassName(\"notify\")[0];\n\n t(() => {\n notify.classList.add(\"active\");\n }, 100);\n\n const handler = {\n hide: () => {\n if (!notify) // can be dismissed by user\n return; \n\n notify.classList.add(\"hide\");\n notify.style.bottom = `${(slot * 102) + 130}px`;\n NotifyViewController.slots = NotifyViewController.slots.filter(i => i !== slot);\n\n t(() => {\n const p = notify.parentElement;\n if (p && p.parentElement)\n p.parentElement.removeChild(p);\n\n if (isolatedElement && isolatedElement.remove)\n isolatedElement.remove();\n }, 1100);\n }\n };\n\n \n notify.addEventListener(\"click\", handler.hide); \n\n if (message.showSeconds)\n t(handler.hide, message.showSeconds * 1000);\n\n return handler;\n }\n}\n","import \"./SiteHeader-style\";\n\nclass SiteHeaderElement extends HTMLElement {\n connectedCallback() {\n window.addEventListener(\"scroll\", this.scrollHandler, { passive: true });\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"scroll\", this.scrollHandler);\n }\n\n private scrollHandler = () => {\n const threshold = (80 - 62) / 2;\n \n if (\n document.body.scrollTop > threshold ||\n document.documentElement.scrollTop > threshold\n ) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n }\n}\n\ncustomElements.define(\"site-header\", SiteHeaderElement);","import { BasePackageElement } from \"features/packages/BasePackageElement\";\nimport { PackageStore } from \"features/manage/PackageStore\";\n\nexport class BaseManagePackageElement extends BasePackageElement {\n protected navView = () => `\n `;\n\n protected async getPackages() {\n return new PackageStore().all();\n }\n}","import { registerPlugin } from '@capacitor/core';\nconst App = registerPlugin('App', {\n web: () => import('./web').then(m => new m.AppWeb()),\n});\nexport * from './definitions';\nexport { App };\n//# sourceMappingURL=index.js.map","module.exports = \"\"","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","import { LoginResponse } from \"../Model\";\nimport { UrlProvider } from \"lib/UrlProvider\"; \nimport { ILoginProvider } from \"./ILoginProvider\";\n\nexport class GenericWebLoginProvider implements ILoginProvider {\n private urlProvider = new UrlProvider();\n\n getName() { return `WebLoginProvider-${this.providerName}` }\n\n constructor(private providerName: string) {}\n\n login() : Promise {\n return new Promise(async (resolve, reject) => {\n try {\n const messageHandler = (event: MessageEvent) => {\n if (event.origin !== \"https://local.linkstacks.io\" &&\n event.origin !== \"https://test.linkstacks.io\" &&\n event.origin !== \"https://linkstacks.io\")\n return;\n \n const loginResponse = event.data as LoginResponse;\n resolve(loginResponse);\n window.removeEventListener(\"message\", messageHandler);\n } \n\n window.addEventListener(\"message\", messageHandler);\n\n const loginWindow = window.open(`${this.urlProvider.root}/account/ExternalLogin?provider=${this.providerName}&returnurl=urn://callback`, \"_blank\", \"location=yes,width=1050,height=650\");\n \n const pollTimer = window.setInterval(function() {\n if (loginWindow.closed !== false) { // !== is required for compatibility with Opera\n window.clearInterval(pollTimer);\n setTimeout(() => {\n reject(\"Window closed\"); // promise may be resolve, then nothing happens\n }, 50);\n }\n }, 200);\n }\n catch (error) {\n reject(\"Unable to login\");\n }\n });\n }\n}\n\n","import { registerPlugin } from '@capacitor/core';\nconst FacebookLogin = registerPlugin('FacebookLogin', {\n web: () => import('./web').then(m => new m.FacebookLoginWeb()),\n});\nexport * from './definitions';\nexport { FacebookLogin };\n//# sourceMappingURL=index.js.map","import { UrlProvider } from \"lib/UrlProvider\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { LoginResponse } from \"../Model\";\nimport { Pipeline, Request } from \"lib/HTTP\";\nimport { FacebookLogin } from \"@capacitor-community/facebook-login\";\n\nexport class FacebookNativeLoginProvider implements ILoginProvider {\n getName = () => \"FacebookNativeLoginProvider\";\n\n async login(): Promise {\n const result = await FacebookLogin.login({ permissions: [\"email\"] });\n\n let accessToken = result?.accessToken?.token\n if (!accessToken) {\n const tokenResponse = await FacebookLogin.getCurrentAccessToken();\n accessToken = tokenResponse?.accessToken?.token;\n }\n\n if (!accessToken) {\n alert(\"Sorry, login did not provide a usable response. Please try again.\");\n return;\n }\n\n const response = await new Pipeline().fetch(`${new UrlProvider().root}/api/external-login/facebook`, new Request().setJSON({ token: accessToken }));\n return await response.json() as LoginResponse;\n } \n}\n\n\n\n","import { registerPlugin } from '@capacitor/core';\nconst GoogleAuth = registerPlugin('GoogleAuth', {\n web: () => import('./web').then((m) => new m.GoogleAuthWeb()),\n});\nexport * from './definitions';\nexport { GoogleAuth };\n//# sourceMappingURL=index.js.map","import { UrlProvider } from \"lib/UrlProvider\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { LoginResponse } from \"../Model\";\nimport { Pipeline, Request } from \"lib/HTTP\";\nimport { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';\nimport { DOM } from \"lib/DOM\";\n\n\ninterface GoogleResponse {\n accessToken: string;\n}\n\ninterface LoginRequest {\n scope: string;\n webClientId: string;\n offline: boolean;\n}\n\ninterface GooglePlusPlugin {\n login(request: LoginRequest, success: (response: GoogleResponse) => void, error: (error) => void): void;\n isAvailable(callback): void;\n trySilentLogin(options, successCallback, errorCallback): void;\n logout(successCallback, errorCallback): void;\n disconnect(successCallback, errorCallback): void;\n getSigningCertificateFingerprint(successCallback, errorCallback): void;\n}\n\nexport class GoogleNativeLoginProvider implements ILoginProvider {\n static async init() {\n await DOM.ready();\n\n GoogleAuth.initialize({\n clientId: '1019953375418-013mvp0e8vbq48ee6itps37dupkrea2m.apps.googleusercontent.com',\n scopes: ['profile', 'email'],\n grantOfflineAccess: true,\n });\n }\n getName = () => \"GoogleNativeLoginProvider\";\n \n async login(): Promise {\n \n \n const googleUser = await GoogleAuth.signIn();\n\n if (!googleUser?.authentication?.idToken)\n return { status: \"failure\"};\n\n console.log(\"Google user\", googleUser);\n\n const credentials = { token: googleUser.authentication.idToken };\n const response = await new Pipeline().fetch(`${new UrlProvider().root}/api/external-login/google`, new Request().setJSON(credentials));\n\n if (!response.ok)\n return { status: \"failure\"};\n\n const loginResponse = await response.json() as LoginResponse;\n\n loginResponse.provider = \"Google\";\n loginResponse.email = googleUser.email;\n\n console.log(\"Returning\", loginResponse);\n\n return loginResponse;\n\n // return new Promise((resolve, reject) => {\n // try {\n // this.google.login(\n // {\n // \"scope\": \"https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile\",\n // \"webClientId\": \"1019953375418-013mvp0e8vbq48ee6itps37dupkrea2m.apps.googleusercontent.com\", // this points to our server side id to be able to get data later\n // \"offline\": true\n // },\n // async (googleResponse: GoogleResponse) => {\n // console.log(\"response was \", googleResponse);\n\n // const credentials = { token: googleResponse.accessToken };\n // const response = await new Pipeline().fetch(`${new UrlProvider().root}/api/external-login/google`, new Request().setJSON(credentials));\n \n // if (!response.ok)\n // reject(\"Unable to login\");\n \n // const loginResponse = await response.json() as LoginResponse;\n // resolve(loginResponse);\n // },\n // err => {\n // console.log(\"Rejected by login sdk\", err);\n // reject(\"Unable to login\");\n // }\n // ); \n // } catch(error) {\n // console.log(\"Unable to login via google\", error);\n // reject(\"Unable to login\");\n // }\n \n // });\n } \n \n}\n\n\n\ntry { \n GoogleNativeLoginProvider.init();\n} catch (error) {\n console.log(\"Unable to initialize google login provider\", error);\n}","import { UrlProvider } from \"lib/UrlProvider\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { LoginResponse } from \"../Model\";\nimport { Pipeline, Request } from \"lib/HTTP\";\n// import { AppleAuthConfig } from \"apple-auth\";\n// import AppleAuth from \"apple-auth\";\nimport { Plugins, PluginListenerHandle } from \"@capacitor/core\";\nimport { BrowserInfo } from \"lib/Browser\";\nconst { Browser } = Plugins;\nimport { App } from '@capacitor/app';\n\nexport class AppleWebLoginProvider implements ILoginProvider {\n getName = () => \"AppleWebLoginProvider\";\n //private appleLogin: AppleLogin = (window).AppleID;\n\n private initializeApple() {\n return new Promise((resolve) => {\n const script = document.createElement(\"script\");\n document.head.appendChild(script);\n script.src = \"https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js\";\n script.onload = () => resolve();\n });\n }\n\n static guid() {\n const s4 = () => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4();\n }\n\n login(): Promise {\n return new Promise(async (resolve, reject) => {\n try {\n await this.initializeApple();\n \n (window).AppleID.auth.init({\n clientId: \"net.monzoom.linkstacks\",\n scope: \"email\",\n redirectURI: `${new UrlProvider().root}/api/external-login/apple`,\n state: \"\",\n nonce: AppleWebLoginProvider.guid(),\n usePopup: true //or false defaults to false\n });\n\n\n document.addEventListener(\"AppleIDSignInOnSuccess\", (event: CustomEvent) => {\n\n }, { once: true });\n //Listen for authorization failures\n document.addEventListener(\"AppleIDSignInOnFailure\", (error) => {\n reject(error);\n }, { once: true });\n\n\n const data = await (window).AppleID.auth.signIn() as AuthResponse;\n\n const response = await fetch(`${new UrlProvider().root}/api/external-login/apple`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"content-type\": \"text/json\"\n },\n body: JSON.stringify({\n tokenId: data.authorization.id_token\n })\n });\n\n if (!response.ok)\n reject(\"Unable to login\");\n\n const loginResponse = await response.json() as LoginResponse;\n resolve(loginResponse);\n }\n catch (error) {\n reject(\"Unable to login\");\n }\n });\n }\n}\n\ninterface AuthResponse {\n authorization: Authorization\n}\n\ninterface Authorization {\n code: string;\n id_token: string;\n}","export var BackgroundColor;\n(function (BackgroundColor) {\n BackgroundColor[\"WHITE\"] = \"white\";\n BackgroundColor[\"BLACK\"] = \"black\";\n})(BackgroundColor || (BackgroundColor = {}));\nexport var ToolBarType;\n(function (ToolBarType) {\n ToolBarType[\"ACTIVITY\"] = \"activity\";\n ToolBarType[\"NAVIGATION\"] = \"navigation\";\n ToolBarType[\"BLANK\"] = \"blank\";\n ToolBarType[\"DEFAULT\"] = \"\";\n})(ToolBarType || (ToolBarType = {}));\n//# sourceMappingURL=definitions.js.map","import { UrlProvider } from \"lib/UrlProvider\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { LoginResponse } from \"../Model\";\nimport { Pipeline, Request } from \"lib/HTTP\";\nimport { Plugins } from \"@capacitor/core\";\nconst { SignInWithApple } = Plugins\nimport { App } from '@capacitor/app';\n\nexport class AppleIOSLoginProvider implements ILoginProvider {\n getName = () => \"AppleNativeLoginProvider\";\n\n login(): Promise {\n return new Promise(async (resolve, reject) => {\n try {\n const signinResponse = await SignInWithApple.Authorize() as ResponseSignInWithApplePlugin;\n\n const response = await fetch(`${new UrlProvider().root}/api/external-login/apple`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"content-type\": \"text/json\"\n },\n body: JSON.stringify({\n tokenId: signinResponse.response.identityToken\n })\n });\n\n if (!response.ok)\n reject(\"Unable to login\");\n\n const loginResponse = await response.json() as LoginResponse;\n resolve(loginResponse);\n }\n catch (error) {\n reject(\"Unable to login\");\n }\n });\n }\n}\n\ninterface ResponseSignInWithApplePlugin {\n response: {\n user: string;\n email: string | null;\n givenName: string | null;\n familyName: string | null;\n identityToken: string;\n authorizationCode: string;\n };\n}\n","import { registerPlugin } from \"@capacitor/core\";\nconst InAppBrowser = registerPlugin(\"InAppBrowser\", {\n web: () => import(\"./web\").then((m) => new m.InAppBrowserWeb()),\n});\nexport * from \"./definitions\";\nexport { InAppBrowser };\n//# sourceMappingURL=index.js.map","import { UrlProvider } from \"lib/UrlProvider\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { LoginResponse } from \"../Model\";\nimport { Pipeline, Request } from \"lib/HTTP\";\n// import { AppleAuthConfig } from \"apple-auth\";\n// import AppleAuth from \"apple-auth\";\nimport { Plugins, PluginListenerHandle } from \"@capacitor/core\";\nimport { BrowserInfo } from \"lib/Browser\";\nimport { Browser } from '@capacitor/browser';\nimport { InAppBrowser } from '@capgo/inappbrowser'\nimport { App } from '@capacitor/app';\n\nexport class AppleAndroidLoginProvider implements ILoginProvider {\n getName = () => \"AppleAndroidLoginProvider\";\n appSendActionIntent\n login(): Promise {\n let appListener: PluginListenerHandle;\n let browserListener: PluginListenerHandle;\n\n return new Promise(async (resolve, reject) => {\n try {\n\n appListener = App.addListener(\"appUrlOpen\", async (data) => {\n\n console.log(\"App url open\", data);\n\n appListener?.remove();\n\n console.log(\"Url open\", data);\n\n const prefix = \"linkstacks://apple/?token=\";\n if (data.url.startsWith(prefix)) {\n const tokenId = data.url.substring(prefix.length);\n try {\n await InAppBrowser.close();\n } catch (error) {\n console.log(\"Call to close browser failed\", error);\n }\n \n const response = await fetch(`${new UrlProvider().root}/api/external-login/apple`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"content-type\": \"text/json\"\n },\n body: JSON.stringify({\n TokenId: tokenId\n })\n });\n\n if (!response.ok)\n reject(\"Unable to login\");\n\n const loginResponse = await response.json() as LoginResponse;\n resolve(loginResponse);\n }\n });\n\n browserListener = (InAppBrowser).addListener(\"browserFinished\", () => {\n browserListener?.remove();\n reject(\"Window closed\");\n });\n\n await InAppBrowser.open({\n url: `${new UrlProvider().root}/api/external-login/apple`,\n //presentationStyle: \"popover\" // well, not on android really\n });\n\n // const response = await fetch(`${new UrlProvider().root}/api/external-login/apple`, {\n // method: \"POST\",\n // credentials: \"include\",\n // headers: {\n // \"content-type\": \"text/json\"\n // },\n // body: JSON.stringify({\n // //tokenId: data.authorization.id_token\n // })\n // });\n\n // if (!response.ok)\n // reject(\"Unable to login\");\n\n // const loginResponse = await response.json() as LoginResponse;\n // resolve(loginResponse);\n }\n catch (error) {\n reject(\"Unable to login\");\n }\n });\n }\n}\n\ninterface AuthResponse {\n authorization: Authorization\n}\n\ninterface Authorization {\n code: string;\n id_token: string;\n}\n\n\nconsole.log(\"launch\");\n\nconst checkAppLaunchUrl = async () => {\n const { url } = await App.getLaunchUrl();\n \n console.log('App opened with URL: ' + url);\n};\n \ncheckAppLaunchUrl();","import { UrlProvider } from \"lib/UrlProvider\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { LoginResponse } from \"../Model\";\nimport { Pipeline, Request } from \"lib/HTTP\";\nimport { Plugins, PluginListenerHandle } from \"@capacitor/core\";\nimport { BrowserInfo } from \"lib/Browser\";\nconst { Browser } = Plugins;\nimport { App } from '@capacitor/app';\n\nexport class TwitterIOSLoginProvider implements ILoginProvider {\n getName = () => \"TwitterNativeLoginProvider\";\n\n async login(): Promise {\n const requestTokenUrl = `${new UrlProvider().root}/api/external-login/twitter${BrowserInfo.isApp() ? \"?app=true\" : \"\"}`;\n\n const response = await fetch(requestTokenUrl);\n\n if (!response.ok)\n throw new Error(\"Unable\");\n\n const url = await response.json();\n\n\n return new Promise(async (resolve, reject) => {\n let appListener: PluginListenerHandle;\n let browserListener: PluginListenerHandle;\n let messageHandler;\n\n try {\n appListener = App.addListener(\"appUrlOpen\", async (data) => {\n\n appListener?.remove();\n\n const prefix = \"linkstacks://twitter/?callback=\";\n if (data.url.startsWith(prefix)) {\n const url = data.url.substring(prefix.length);\n try {\n await Browser.close();\n } catch (error) {\n console.log(\"Call to close browser failed\", error);\n }\n \n const response = await fetch(`${new UrlProvider().root}/api/external-login/twitter`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"content-type\": \"text/json\"\n },\n body: JSON.stringify({\n callbackUrl: url\n })\n });\n\n if (!response.ok)\n reject(\"Unable to login\");\n\n const loginResponse = await response.json() as LoginResponse;\n resolve(loginResponse);\n }\n });\n\n\n messageHandler = async (event: MessageEvent) => {\n if (typeof (event.data) !== \"string\") {\n reject(\"Window closed\");\n return;\n }\n\n const result = event.data as String;\n\n if (result.indexOf(\"denied\") !== -1) {\n reject(\"Window closed\");\n return;\n }\n\n const response = await fetch(`${new UrlProvider().root}/api/external-login/twitter`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"content-type\": \"text/json\"\n },\n body: JSON.stringify({\n callbackUrl: result\n })\n });\n\n if (!response.ok)\n reject(\"Unable to login\");\n\n const loginResponse = await response.json() as LoginResponse;\n resolve(loginResponse);\n };\n\n window.addEventListener(\"message\", messageHandler);\n\n browserListener = Browser.addListener(\"browserFinished\", () => {\n browserListener?.remove();\n reject(\"Window closed\");\n });\n\n await Browser.open({\n url: url,\n presentationStyle: \"popover\"\n });\n \n //reject(\"Window closed\");\n }\n catch (error) {\n reject(\"Unable to login\");\n }\n finally {\n \n }\n });\n }\n}\n\n\n\n","import { AlternateEmail } from \"features/manage/alternate-emails/AlternateEmailsStore\";\n\nexport interface ValidationMessage {\n message?: string;\n modelState?: {[id: string]: string};\n}\n\n\nexport interface LoginResponse extends ValidationMessage\n{\n //validation: {[id: string]: string}\n status?: SignInStatus;\n username?: string;\n email?: string;\n provider?: string;\n bearer?: string;\n sameEmailUser?: string;\n}\n\nexport type SignInStatus = \"success\" | \"lockedOut\" | \"requiresVerification\" | \"failure\";\n\n\nexport type State = \"unknown\" | \"not-signed-in\" | \"locked-out\" | \"require-verification\" | \"complete-external\" | \"signed-in\";\n\n\nexport interface IdentityResult extends ValidationMessage {\n succeeded?: boolean;\n errors?: string[];\n}\n\nexport type AddProviderResult = \"unableToGetInfoFromProvider\" | \"unableToAddLogin\" | \"success\" | \"anotherUserWithThisLogin\";\n\n\nexport enum AuthenticationMode {\n Cookie = \"cookie\",\n Header = \"header\"\n}\n\nexport interface User {\n userId: string;\n username: string;\n avatarLocation: string;\n email: string;\n siteLocation?: string;\n alternateEmails?: AlternateEmail[];\n logins: Provider[];\n}\n\nexport interface Provider {\n loginProvider: ProviderName;\n providerKey: string;\n}\n\nexport interface ChangePassword\n{\n oldPassword: string;\n newPassword: string;\n confirmPassword: string;\n}\n\nexport interface AddProviderCallbackMessage {\n status: AddProviderResult;\n provider: Provider;\n}\n\nexport type ProviderName = \"Twitter\" | \"Facebook\" | \"Google\";\n\nexport interface Activity {\n status: ActivityStatus;\n reason?: string;\n}\n\nexport enum ActivityStatus {\n Idle = \"Idle\",\n TryingToSignIn = \"TryingToSignIn\",\n FailedSigningIn = \"FailedSigningIn\",\n SignedIn = \"SignedIn\"\n};\n","import { BrowserInfo } from \"lib/Browser\";\nimport { ILoginProvider } from \"./ILoginProvider\";\nimport { GenericWebLoginProvider } from \"./GenericWebLoginProvider\";\nimport { GenericNativeLoginProvider } from \"./__GenericNativeLoginProvider\";\nimport { FacebookNativeLoginProvider } from \"./FacebookNativeLoginProvider\";\nimport { GoogleNativeLoginProvider } from \"./GoogleNativeLoginProvider\";\nimport { AppleWebLoginProvider } from \"./AppleWebLoginProvider\";\nimport { AppleIOSLoginProvider } from \"./AppleIOSLoginProvider\"\nimport { AppleAndroidLoginProvider } from \"./AppleAndroidLoginProvider\"\nimport { TwitterIOSLoginProvider } from \"./TwitterNativeLoginProvider\";\n\nexport class LoginProviderFactory {\n static async resolve(name: string) : Promise {\n\n switch(name.toLowerCase()) {\n case \"apple\": \n if (BrowserInfo.isApp() && BrowserInfo.isIOSApp())\n return new AppleIOSLoginProvider();\n else if (BrowserInfo.isApp())\n return new AppleAndroidLoginProvider();\n else\n return new AppleWebLoginProvider();\n \n case \"facebook\":\n if (BrowserInfo.isApp())\n return new FacebookNativeLoginProvider();\n break;\n\n case \"google\":\n if (BrowserInfo.isApp())\n return new GoogleNativeLoginProvider();\n break; \n\n case \"twitter\":\n if (BrowserInfo.isApp())\n return new TwitterIOSLoginProvider();\n break; \n }\n \n return new GenericWebLoginProvider(name);\n }\n}","import { EventEmitter } from \"events\";\nimport { Request, Pipeline } from \"lib/HTTP\";\nimport { UrlProvider } from \"lib/UrlProvider\";\nimport { LoginProviderFactory } from \"./LoginProviders/LoginProviderFactory\";\nimport { \n AuthenticationMode,\n User,\n Provider,\n ChangePassword,\n AddProviderCallbackMessage,\n Activity,\n ActivityStatus,\n AddProviderResult,\n ValidationMessage,\n IdentityResult,\n State,\n ProviderName,\n LoginResponse } from \"./Model\";\nimport { UserPreferenceStore, UserPreferenceFlag } from \"features/user-preferences/UserPreferenceStore\";\nimport { cityline } from \"features/cityline\";\n\nexport class AuthenticationStore extends EventEmitter {\n private _hasPassword: boolean;\n private static _instance = new AuthenticationStore();\n private _auth: string;\n private _state: State = \"unknown\";\n private initialized: Promise;\n private urlProvider = new UrlProvider(); \n private _account: User;\n private _currentActivity: Activity = { status: ActivityStatus.Idle };\n\n static get instance() {\n return AuthenticationStore._instance;\n }\n\n get currentActivity() {\n return this._currentActivity;\n }\n\n private constructor() {\n super();\n \n try {\n this._auth = localStorage.getItem(\"auth\"); \n }\n catch (error) {\n console.log(`Unable to read auth from local storage. ${error}`);\n }\n\n if (this._auth && this._auth !== \"\" && this._auth !== \"undefined\")\n this.changeActivity(ActivityStatus.TryingToSignIn);\n \n cityline.addEventListener(\"account\", (event: CustomEvent) => {\n this._account = event.detail;\n });\n\n \n \n\n this.reinitialize();\n this.onStateChanged(this.updateBody);\n\n // replace this with usernameproducer\n setTimeout(() => {\n this.onStateChangedOnce(() => cityline.reset());\n }, 3000);\n }\n\n private changeActivity(status: ActivityStatus, reason = \"\") {\n if (this._currentActivity.status === status)\n return;\n \n this._currentActivity = {\n status: status,\n reason: reason\n };\n this.emitActivityChanged(this._currentActivity);\n }\n\n async isAuthenticated() {\n if (this._state === \"unknown\") \n await AuthenticationStore.instance.getState();\n \n return this._state === \"signed-in\";\n }\n\n private updateBody = (state: State) => {\n if (state === \"signed-in\")\n document.body.classList.add(\"authenticated\");\n else\n document.body.classList.remove(\"authenticated\");\n }\n\n // whenSignedIn() : Promise {\n // return new Promise(r => {\n // if (this._state === \"signed-in\")\n // setTimeout(() => r());\n\n // const handler = state => {\n // if (state === \"signed-in\") {\n // this.offStateChanged(handler);\n // setTimeout(() => r());\n // }\n // }\n // this.onStateChanged(handler);\n // }); \n // }\n\n whenSignedIn = async () => await cityline.getFrame(\"account\");\n \n private reinitialize() {\n this.initialized = new Promise(resolve => {\n setTimeout(async () => {\n await this.doInitialize();\n resolve();\n });\n });\n }\n\n private async doInitialize() {\n try {\n this._hasPassword = await UserPreferenceStore.instance.isSet(UserPreferenceFlag.HasPassword);\n this._account = await cityline.getFrame(\"account\");\n \n if (this._account) {\n this.ensureState(\"signed-in\");\n this.changeActivity(ActivityStatus.SignedIn);\n } else {\n this.changeActivity(ActivityStatus.FailedSigningIn);\n }\n } catch(error) {\n setTimeout(() => {\n console.log(error);\n this.changeActivity(ActivityStatus.FailedSigningIn);\n });\n }\n }\n\n public async providers() {\n await this.initialized;\n return this._account.logins;\n }\n\n public async hasPassword() {\n await this.initialized;\n return this._hasPassword;\n }\n\n // TODO: REMOVE\n getAuth() { return this._auth;}\n\n private emitActivityChanged(activity: Activity) {\n this.emit(\"ActivityChanged\", activity);\n }\n\n public onActivityChanged(callback: (activity: Activity) => void) {\n this.on(\"ActivityChanged\", callback);\n }\n\n public removeActivityChanged(callback: (activity: Activity) => void) {\n this.removeListener(\"ActivityChanged\", callback);\n }\n\n private emitStateChanged(state: State, loginResponse?: LoginResponse) {\n this.emit(\"StateChanged\", state, loginResponse);\n }\n\n public onStateChanged(callback: (state: State, loginResponse?: LoginResponse) => void) {\n this.on(\"StateChanged\", callback);\n }\n\n public offStateChanged(callback: (state: State, loginResponse?: LoginResponse) => void) {\n this.removeListener(\"StateChanged\", callback);\n }\n\n public onStateChangedOnce(callback: (state: State, loginResponse?: LoginResponse) => void) {\n this.once(\"StateChanged\", callback);\n }\n\n private emitProvidersChanged(providers: Provider[]) {\n this.emit(\"ProvidersChanged\", providers);\n }\n\n public onProvidersChanged(callback: (providers: Provider[]) => void) {\n this.on(\"ProvidersChanged\", callback);\n }\n\n public removeOnProvidersChanged(callback: (providers: Provider[]) => void) {\n this.removeListener(\"ProvidersChanged\", callback);\n }\n\n private emitAddProviderError(error: AddProviderResult) {\n this.emit(\"AddProviderError\", error);\n }\n\n public onAddProviderError(callback: (error: AddProviderResult) => void) {\n this.on(\"AddProviderError\", callback);\n }\n\n public removeOnAddProviderError(callback: (error: AddProviderResult) => void) {\n this.removeListener(\"AddProviderError\", callback);\n }\n\n public async getState() {\n await this.getRemoteState();\n return this._state;\n }\n\n get token() {\n return this._auth;\n }\n\n get mode() : AuthenticationMode {\n return window.location.protocol === \"file:\" || window.location.hostname === \"localhost\" ? AuthenticationMode.Header : AuthenticationMode.Cookie; \n }\n\n private ensureState(state: State) {\n if (this._state === state)\n return;\n\n this._state = state;\n this.reinitialize();\n this.emitStateChanged(state);\n }\n\n handleAddProviderCallbackMessage = (event: MessageEvent) => {\n if (event.origin !== this.urlProvider.root)\n return;\n\n try {\n const message = JSON.parse(event.data) as AddProviderCallbackMessage;\n if (!message.status)\n return;\n\n window.removeEventListener(\"message\", this.handleAddProviderCallbackMessage);\n\n if (this.addProviderWindow)\n this.addProviderWindow.close();\n \n if (message.status === \"success\") {\n\n this._account.logins = this._account.logins.filter(i => i.loginProvider !== message.provider.loginProvider);\n this._account.logins.push(message.provider);\n this._account.logins.sort( (a, b) => a.loginProvider === b.loginProvider ? 0 : +(a.loginProvider < b.loginProvider) || -1);\n this.emitProvidersChanged(this._account.logins);\n } else {\n this.emitAddProviderError(message.status);\n }\n \n } catch(error) {\n //console.log(\"Unusable callback message\", error, event);\n } \n }\n\n private addProviderWindow: Window;\n\n async setPassword(passwordModel: ChangePassword) {\n const url = this._hasPassword ? `${this.urlProvider.root}/api/account/changepassword` : `${this.urlProvider.root}/api/account/setpassword`;\n const response = await new Pipeline().fetch(url, Request.post.authenticate().setJSON(passwordModel));\n if (response.ok && !this._hasPassword) {\n this._hasPassword = true;\n this.emitProvidersChanged(this._account.logins);\n }\n \n return response;\n }\n\n async usernameAvailable(username: string) : Promise {\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/account/username/${username}`);\n const result = await response.text();\n return result === \"false\";\n }\n\n async emailAvailable(email: string) : Promise {\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/account/email/${encodeURIComponent(email)}`);\n const result = await response.text();\n return result === \"false\";\n }\n\n async addProvider(providerName: ProviderName) {\n this.addProviderWindow = window.open(`${this.urlProvider.root}/api/login-providers/${providerName}`, \"_blank\", \"location=yes,width=1050,height=650\");\n \n window.addEventListener(\"message\", this.handleAddProviderCallbackMessage);\n }\n\n async removeProvider(providerName: ProviderName) {\n const provider = this._account.logins.filter(p => p.loginProvider === providerName)[0];\n const result = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-providers/${providerName}`, Request.delete.authenticate());\n if (result.ok) {\n provider.providerKey = undefined;\n this.emitProvidersChanged(this._account.logins);\n }\n \n }\n\n private async getRemoteState() {\n if (this.mode === AuthenticationMode.Header && !this._auth)\n return this.ensureState(\"not-signed-in\");\n\n \n // const currentUser = await this.currentUser();\n // if (currentUser) {\n // this.ensureState(\"signed-in\");\n // return;\n // }\n \n\n const response = await new Pipeline().ignoreLoggedInStatus().fetch(`${this.urlProvider.root}/api/login-manager`, new Request().authenticate());\n\n \n if (response.ok){\n this.ensureState(\"signed-in\");\n this.updateAuth(response.headers.get(\"Authorization\"));\n return;\n }\n \n if (response.status === 401) {\n return this.ensureState(\"not-signed-in\");\n }\n \n if (response.status >= 500)\n alert(\"Unable to connect\");\n }\n\n async registerExternal(username: string, email?: string) : Promise {\n const credentials = { username: username, email: email };\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/register-external`, new Request().authenticate(AuthenticationMode.Header).setJSON(credentials));\n\n const result: IdentityResult | ValidationMessage = await response.json();\n \n if (response.ok && (result as IdentityResult).succeeded ) {\n this.updateAuth(response.headers.get(\"Authorization\"));\n this.ensureState(\"signed-in\");\n }\n \n return result;\n }\n\n async mergeExternal() : Promise {\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/merge-external`, Request.post.authenticate(AuthenticationMode.Header));\n\n const result: IdentityResult | ValidationMessage = await response.json();\n \n if (response.ok && (result as IdentityResult).succeeded ) {\n this.updateAuth(response.headers.get(\"Authorization\"));\n this.ensureState(\"signed-in\");\n }\n \n return result;\n }\n\n async register(username: string, email: string, password: string) : Promise {\n const details = { username: username, email: email, password: password };\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/register`, Request.post.setJSON(details));\n\n const result: IdentityResult = await response.json();\n return result;\n }\n\n async resendRegistrationMail(username: string) : Promise {\n const details = { username: username };\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/resend-registration-mail`, Request.post.setJSON(details));\n return response.ok;\n }\n\n async forgotPassword(usernameOrEmail: string) : Promise {\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/forgot-password`, Request.post.setJSON({ usernameOrEmail: usernameOrEmail }));\n return response.ok;\n }\n\n async deactivateAccount(username: string) : Promise {\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/deactivate-account`, Request.post.authenticate().setJSON({ username: username }));\n return response.ok;\n }\n\n async login(usernameOrEmail: string, password: string) : Promise {\n const credentials = { usernameOrEmail: usernameOrEmail, password: password };\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager`, new Request().setJSON(credentials));\n\n const result: LoginResponse = await response.json();\n \n if (response.ok) {\n this.updateAuth(response.headers.get(\"Authorization\"));\n this.ensureState(\"signed-in\");\n }\n \n return result;\n }\n\n\n async loginExternal(providerName: string) : Promise {\n const loginProvider = await LoginProviderFactory.resolve(providerName);\n const response = await loginProvider.login();\n this.handleLoginResponse(response);\n return response;\n }\n\n async logout() {\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/logout`, Request.post);\n if (response.status !== 200 && response.status !== 401) {\n throw new Error(\"Unable to sign out\");\n }\n\n \n if (response.ok) {\n this.updateAuth(undefined);\n \n if (window.location.protocol !== \"file:\" && window.location.hostname !== \"localhost\")\n window.location.href = \"/\";\n else\n window.location.reload();\n }\n }\n\n\n async resetPassword(userId: string, code: string, password: string) {\n const model = { userId: userId, code: code, password: password };\n const response = await new Pipeline().fetch(`${this.urlProvider.root}/api/login-manager/set-password`, Request.post.setJSON(model));\n if (response.ok)\n return true;\n \n return false;\n }\n\n private updateAuth(auth: string) {\n this._auth = auth;\n \n try {\n localStorage.setItem(\"auth\", this._auth); \n } catch (error) {\n console.log(`Unable to write auth to local storage. ${error}`);\n }\n }\n\n async refreshToken() {\n\n } \n\n async currentUserNoFetch() : Promise {\n return this._account;\n }\n\n async currentUser() : Promise {\n await this.initialized;\n return this._account;\n }\n\n async currentAccount() : Promise {\n await this.initialized;\n return this._account;\n }\n\n\n public handleLoginResponse(loginResponse: LoginResponse) {\n this.emit(\"login-response\", loginResponse); \n switch (loginResponse.status) {\n case \"success\":\n this.updateAuth(loginResponse.bearer);\n this.ensureState(\"signed-in\");\n break;\n case \"lockedOut\":\n alert(\"locked out\");\n break;\n case \"requiresVerification\":\n alert(\"requiresverification\");\n break;\n case \"failure\":\n this.updateAuth(loginResponse.bearer);\n //this.loginResponse = loginResponse;\n this.emitStateChanged(\"complete-external\", loginResponse);\n this.ensureState(\"complete-external\");\n break;\n }\n }\n}\n\n","import \"./UserLoginElement-style\";\nimport { LoginResponse, SignInStatus, ValidationMessage } from \"./Model\";\n\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\nclass UserLoginElement extends HTMLElement {\n\n async connectedCallback() {\n this.innerHTML = this.view();\n this.classList.add(\"form\");\n this.setupEvents()\n\n setTimeout(() => {\n this.style.opacity = \"1\";\n });\n }\n\n private async login() {\n this.setAttribute(\"busy\", \"\");\n\n const usernameElement = this.querySelector(\"[name=username-or-email]\") as HTMLInputElement;\n const passwordElement = this.querySelector(\"[name=password]\") as HTMLInputElement;\n\n let result;\n try{\n result = await AuthenticationStore.instance.login(usernameElement.value, passwordElement.value);\n } finally {\n this.removeAttribute(\"busy\");\n }\n \n\n if ((result).status && (result).status !== \"success\") {\n const formMessageElement = this.querySelector(`[name=\"form-message\"]`) as HTMLSpanElement;\n\n if ((result).status === \"requiresVerification\")\n {\n this.setAttribute(\"busy\", \"\");\n try{\n if (await AuthenticationStore.instance.resendRegistrationMail(usernameElement.value)) {\n const loginFlow = document.querySelector(\"login-flow .content\");\n loginFlow.innerHTML = \"\";\n return;\n } else {\n formMessageElement.innerText = \"Unable to resend registration mail\";\n return;\n }\n } finally {\n this.removeAttribute(\"busy\");\n }\n } else if ((result).status === \"failure\") {\n this.showForgotPassword();\n } else {\n if (formMessageElement)\n formMessageElement.innerText = this.translateMessage((result).status);\n }\n\n } else if ((result).modelState) {\n for(const key in (result).modelState){\n const messageElement = this.querySelector(`[name=\"${key}\"]`) as HTMLSpanElement;\n if (messageElement)\n messageElement.innerText = (result).modelState[key];\n }\n } \n }\n\n private showForgotPassword() {\n const forgotPasswordElement = this.querySelector(`[name=\"forgot-password\"]`) as HTMLElement;\n forgotPasswordElement.style.display = \"block\";\n }\n\n private setupEvents() {\n const loginButton = this.querySelector(\"[name=login]\") as HTMLButtonElement;\n loginButton.addEventListener(\"click\", async () => await this.login());\n\n this.addEventListener(\"keydown\", async event => {\n if (event.key === \"Enter\")\n await this.login();\n });\n\n [].slice.call(this.querySelectorAll(\"[name=provider]\")).forEach( (button: HTMLButtonElement) => {\n button.addEventListener(\"click\", async () => {\n const providerId = button.getAttribute(\"value\");\n await AuthenticationStore.instance.loginExternal(providerId);\n });\n });\n }\n\n private translateMessage(status: SignInStatus): string {\n switch (status) {\n case \"lockedOut\": return \"Account locked, please try later\";\n case \"requiresVerification\": return \"Account not verified\";\n case \"failure\": return \"Invalid username/email or password\";\n default: return \"Unknown error\";\n }\n }\n\n private view = () => `\n
\n Log in\n
\n
\n \n
\n Did you forget your password?\n
\n \n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n
\n \n \n \n
\n \n
\n `;\n}\n\n// Routing.instance.onChange(route => {\n// if (route.path[0] === \"login\") {\n// const loginFlow = document.querySelector(\"login-flow .content\");\n// loginFlow.innerHTML = \"\";\n// }\n// });\n\ncustomElements.define(\"user-login\", UserLoginElement);","import \"./break-login-theme\";\nimport { AdaptivePopup } from \"features/authentication/AdaptivePopup\";\nimport { LoginResponse, SignInStatus, ValidationMessage } from \"./Model\";\n\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\nclass UserLoginElement extends AdaptivePopup {\n async connectedCallback() {\n this.setAttribute(\"slide\", \"\");\n requestAnimationFrame(() => {\n requestAnimationFrame(() => this.removeAttribute(\"slide\"));\n });\n \n this.innerHTML = this.view();\n super.connectedCallback();\n\n\n const loginButton = this.querySelector(\"[name=login]\") as HTMLButtonElement;\n loginButton.addEventListener(\"click\", async () => await this.login());\n\n \n this.querySelector(\"[name=register]\")\n .addEventListener(\"click\", () => AdaptivePopup.addAndslide(document.createElement(\"user-registration-2\")));\n\n this.querySelector(\"[name=forgot-password]\")\n .addEventListener(\"click\", () => AdaptivePopup.addAndslide(document.createElement(\"forgot-password-2\")));\n\n\n this.addEventListener(\"keydown\", async event => {\n if (event.key === \"Enter\")\n await this.login();\n });\n\n const socialProviders = this.querySelector(\"social-providers\");\n\n socialProviders.addEventListener(\"success\", async () => await this.closeHandler());\n\n socialProviders.addEventListener(\"complete-external\", (args: CustomEventInit) => {\n\n const login = args.detail;\n\n const externalUserRegistrationElement = document.createElement(\"external-user-registration-2\");\n externalUserRegistrationElement.setAttribute(\"provider\", login.provider);\n externalUserRegistrationElement.setAttribute(\"username\", login.username || \"\");\n externalUserRegistrationElement.setAttribute(\"email\", login.email || \"\");\n \n AdaptivePopup.addAndslide(externalUserRegistrationElement);\n\n externalUserRegistrationElement.addEventListener(\"success\", this.closeHandler);\n\n }); \n }\n\n private async login() {\n this.setAttribute(\"busy\", \"\");\n\n if ((window).TapticEngine) \n (window).TapticEngine.unofficial.weakBoom();\n\n const usernameElement = this.querySelector(\"[name=username-or-email]\") as HTMLInputElement;\n const passwordElement = this.querySelector(\"[name=password]\") as HTMLInputElement;\n\n let result;\n try{\n result = await AuthenticationStore.instance.login(usernameElement.value, passwordElement.value);\n } finally {\n this.removeAttribute(\"busy\");\n }\n \n if ((result).status && (result).status === \"success\") {\n await this.closeHandler();\n } else if ((result).status && (result).status !== \"success\") {\n const formMessageElement = this.querySelector(`[name=\"form-message\"]`) as HTMLSpanElement;\n\n if ((result).status === \"requiresVerification\")\n {\n this.setAttribute(\"busy\", \"\");\n try{\n if (await AuthenticationStore.instance.resendRegistrationMail(usernameElement.value)) {\n AdaptivePopup.addAndslide(document.createElement(\"activationmail-info\"));\n return;\n } else {\n formMessageElement.innerText = \"Unable to resend registration mail\";\n return;\n }\n } finally {\n this.removeAttribute(\"busy\");\n }\n } else if ((result).status === \"failure\") {\n \n this.showForgotPassword();\n } else {\n if (formMessageElement)\n formMessageElement.innerText = this.translateMessage((result).status);\n }\n\n } else if ((result).modelState) {\n for(const key in (result).modelState){\n const messageElement = this.querySelector(`[name=\"${key}\"]`) as HTMLSpanElement;\n if (messageElement)\n messageElement.innerText = (result).modelState[key];\n }\n } \n }\n\n private showForgotPassword() {\n const forgotPasswordElement = this.querySelector(`[name=\"forgot-password\"]`) as HTMLElement;\n forgotPasswordElement.style.display = \"block\";\n \n }\n\n private translateMessage(status: SignInStatus): string {\n switch (status) {\n case \"lockedOut\": return \"Account locked, please try later\";\n case \"requiresVerification\": return \"Account not verified\";\n case \"failure\": return \"Invalid username/email or password\";\n default: return \"Unknown error\";\n }\n }\n\n private view = () => `\n
\n
\n
\n
Log in to Linkstacks
\n
\n
\n
\n
\n Username or email\n
\n \n
\n
\n \n\n
\n Password\n
\n \n
\n
\n \n\n
\n Login or register via\n \n
\n\n \n \n
\n
\n \n \n \n
\n
\n `;\n}\n\ncustomElements.define(\"user-login-2\", UserLoginElement);","import \"./LoginFlowElement-style\";\nimport { AuthenticationStore } from \"./AuthenticationStore\";\nimport { DOM } from \"lib/DOM\";\nimport { DialogController } from \"features/dialog\";\nimport { LoginResponse, State } from \"features/authentication/Model\";\n\nclass LoginFlowElement extends HTMLElement {\n private contentElement: HTMLElement;\n async connectedCallback() {\n this.innerHTML = this.view();\n this.contentElement = this.querySelector(\".content\") as HTMLElement;\n this.setupEvents() \n await this.initialize();\n }\n\n private async initialize() { \n const miniProgress = this.querySelector(\"mini-progress\") as HTMLElement;\n miniProgress.classList.add(\"active\");\n \n miniProgress.setAttribute(\"class\", \"done\");\n miniProgress.style.opacity = \"0\";\n const background = this.querySelector(\"background-image\") as HTMLElement;\n background.classList.add(\"unfocus\");\n \n setTimeout(() => {\n miniProgress.remove();\n this.contentElement.innerHTML = \"\"; \n }, 1500);\n }\n\n private view = () => `\n \n \n
\n
\n
\n `;\n\n async updateElementState(state: State, response: LoginResponse) {\n switch (state) {\n case \"signed-in\":\n // setTimeout(() => {\n // this.innerHTML = \"\";\n // }, 200); \n break;\n case \"not-signed-in\":\n this.contentElement.innerHTML = ``;\n break;\n\n case \"locked-out\":\n await new DialogController().prompt({\n caption: \"Locked out\",\n message: \"Sorry, this account is currently locked out - please try again later.\",\n options: [\"Ok\"]\n });\n \n break;\n case \"require-verification\": \n await new DialogController().prompt({\n caption: \"Not verified\",\n message: \"This account has not yet been verified, please check your email.\",\n options: [\"Ok\"]\n });\n break;\n case \"complete-external\":\n if (response)\n this.contentElement.innerHTML = ``;\n break;\n }\n\n if (state === \"signed-in\")\n await DOM.fadeOut(this);\n else\n await DOM.fadeIn(this, \"flex\");\n\n \n }\n\n private setupEvents() {\n AuthenticationStore.instance.onStateChanged( (state, response) => this.updateElementState(state, response));\n }\n}\n\ncustomElements.define(\"login-flow\", LoginFlowElement);\n","import \"./UserLoginElement-style\";\nimport { ValidationMessage, IdentityResult } from \"./Model\";\n\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\nclass ExternalUserRegistrationElement extends HTMLElement {\n async connectedCallback() {\n this.innerHTML = this.view();\n this.classList.add(\"form\");\n this.setupEvents()\n }\n\n private setupEvents() {\n const usernameElement = this.querySelector(\"[name=username]\") as HTMLInputElement;\n const emailElement = this.querySelector(\"[name=email]\") as HTMLInputElement;\n\n const loginButton = this.querySelector(\"[name=register]\") as HTMLButtonElement;\n loginButton.addEventListener(\"click\", async () => {\n let result;\n this.setAttribute(\"busy\", \"\");\n try {\n result = await AuthenticationStore.instance.registerExternal(usernameElement.value, emailElement.value);\n } finally{\n this.removeAttribute(\"busy\");\n }\n\n if ((result).modelState) {\n for(const key in (result).modelState){\n const messageElement = this.querySelector(`[name=\"${key}\"]`) as HTMLSpanElement;\n if (messageElement)\n messageElement.innerText = (result).modelState[key];\n }\n } else if (!(result).succeeded) {\n const formMessageElement = this.querySelector(`[name=\"form-message\"]`) as HTMLSpanElement;\n \n if (formMessageElement)\n formMessageElement.innerText = (result).errors.join(\" \");\n }\n\n });\n }\n\n private get provider() {\n return this.getAttribute(\"provider\");\n }\n\n private get username() {\n return this.getAttribute(\"username\");\n }\n\n private get email() {\n return this.getAttribute(\"email\");\n }\n\n private view = () => `\n
\n Login with ${this.provider}\n
\n
\n

You've successfully authenticated with ${this.provider}.

\n \n

Please enter a user name and/or email below to finish logging in.

\n \n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n \n
\n `;\n}\n\n\n\ncustomElements.define(\"external-user-registration\", ExternalUserRegistrationElement);","import \"./UserLoginElement-style\";\nimport { AdaptivePopup } from \"features/authentication/AdaptivePopup\";\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\nimport { ValidationMessage, IdentityResult } from \"features/authentication/Model\";\n\nclass ExternalUserRegistrationElement2 extends AdaptivePopup {\n async connectedCallback() {\n this.innerHTML = this.view();\n super.connectedCallback();\n this.setupEvents()\n }\n\n private setupEvents() {\n const usernameElement = this.querySelector(\"[name=username]\") as HTMLInputElement;\n const emailElement = this.querySelector(\"[name=email]\") as HTMLInputElement;\n const loginButton = this.querySelector(\"[name=register]\") as HTMLButtonElement;\n\n loginButton.addEventListener(\"click\", async () => {\n let result;\n this.setAttribute(\"busy\", \"\");\n try {\n result = await AuthenticationStore.instance.registerExternal(usernameElement.value, emailElement.value);\n } finally{\n this.removeAttribute(\"busy\");\n }\n\n if ((result).modelState) {\n for(const key in (result).modelState){\n const messageElement = this.querySelector(`[name=\"${key}\"]`) as HTMLSpanElement;\n if (messageElement)\n messageElement.innerText = (result).modelState[key];\n }\n } else if (!(result).succeeded) {\n const formMessageElement = this.querySelector(`[name=\"form-message\"]`) as HTMLSpanElement;\n \n if (formMessageElement)\n formMessageElement.innerText = (result).errors.join(\" \");\n } else {\n this.dispatchEvent(new CustomEvent(\"success\"));\n this.remove();\n\n }\n \n\n });\n }\n\n private get provider() {\n return this.getAttribute(\"provider\");\n }\n\n private get username() {\n return this.getAttribute(\"username\");\n }\n\n private get email() {\n return this.getAttribute(\"email\");\n }\n\n private view = () => `\n
\n
\n
\n
Login with ${this.provider}
\n
\n
\n
\n

You've successfully authenticated with ${this.provider}.

\n \n

Please enter a user name and/or email below to finish logging in.

\n \n
\n Email\n
\n \n
\n
\n \n\n
\n Username\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n `;\n}\n\n\n\ncustomElements.define(\"external-user-registration-2\", ExternalUserRegistrationElement2);","import \"./UserRegistrationElement-style\";\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\nimport { Routing } from \"lib/Routing\";\nimport { ValidationMessage, IdentityResult } from \"features/authentication/Model\";\n\nclass UserRegistrationElement extends HTMLElement {\n async connectedCallback() {\n this.classList.add(\"form\");\n \n if (this.hasAttribute(\"resend\")) {\n this.innerHTML = this.checkEmailView();\n return;\n }\n \n this.innerHTML = this.view(); \n this.setupEvents()\n }\n\n private async register() {\n const usernameElement = this.querySelector(\"[name=username]\") as HTMLInputElement;\n const emailElement = this.querySelector(\"[name=email]\") as HTMLInputElement;\n const passwordElement = this.querySelector(\"[name=password]\") as HTMLInputElement;\n const confirmPasswordElement = this.querySelector(\"[name=confirmPassword]\") as HTMLInputElement;\n const formMessageElement = this.querySelector(`[name=\"form-message\"]`) as HTMLSpanElement;\n\n formMessageElement.innerText = \"\";\n [].slice.call(this.querySelectorAll(\".error\")).forEach((element: HTMLElement) => {\n element.innerText = \"\";\n });\n\n if (passwordElement.value !== confirmPasswordElement.value){\n formMessageElement.innerText = \"Password and repeated password must match.\";\n return;\n }\n\n this.setAttribute(\"busy\", \"\");\n\n let result;\n try {\n result = await AuthenticationStore.instance.register(usernameElement.value, emailElement.value, passwordElement.value);\n } finally {\n this.removeAttribute(\"busy\");\n }\n \n \n if ((result).modelState) {\n for(const key in (result).modelState){\n const messageElement = this.querySelector(`[name=\"${key}\"]`) as HTMLSpanElement;\n if (messageElement)\n messageElement.innerText = (result).modelState[key];\n }\n } else if (!(result).succeeded) {\n if (formMessageElement)\n formMessageElement.innerText = (result).errors.join(\"
\");\n } else {\n this.innerHTML = this.checkEmailView();\n }\n }\n\n private setupEvents() {\n const registerButton = this.querySelector(\"[name=register]\") as HTMLButtonElement;\n registerButton.addEventListener(\"click\", async () => await this.register());\n\n this.addEventListener(\"keydown\", async event => {\n if (event.key === \"Enter\")\n await this.register();\n });\n }\n\n\n private checkEmailView = () => `\n
\n \n Please check your email\n \n
\n
\n

We have now sent you a message containing a verification link.

\n

\n We do this to make sure that your email is valid and active, so that we know where to get a message to you in the future. \n

\n \n
\n `;\n\n private view = () => `\n
\n Create a new account\n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n \n\n
Or register using a provider
\n \n\n \n
\n `;\n}\n\nRouting.instance.onChange(route => {\n if (route.path[0] === \"register\") {\n const loginFlow = document.querySelector(\"login-flow .content\");\n if (loginFlow) // Right now server rendred stuff does not expose this .content, but renders form itself\n loginFlow.innerHTML = \"\";\n }\n});\n\ncustomElements.define(\"user-registration\", UserRegistrationElement);","import { AdaptivePopup } from \"features/authentication/AdaptivePopup\";\nimport { AuthenticationStore, ValidationMessage, IdentityResult, LoginResponse } from \"features/authentication\";\n\n\nclass UserRegistrationElement2 extends AdaptivePopup {\n async connectedCallback() {\n this.setAttribute(\"slide\", \"\");\n requestAnimationFrame(() => this.removeAttribute(\"slide\"));\n this.innerHTML = this.view();\n super.connectedCallback();\n this.setupEvents()\n }\n\n private async register() {\n const usernameElement = this.querySelector(\"[name=username]\") as HTMLInputElement;\n const emailElement = this.querySelector(\"[name=email]\") as HTMLInputElement;\n const passwordElement = this.querySelector(\"[name=password]\") as HTMLInputElement;\n const confirmPasswordElement = this.querySelector(\"[name=confirmPassword]\") as HTMLInputElement;\n const formMessageElement = this.querySelector(`[name=\"form-message\"]`) as HTMLSpanElement;\n\n formMessageElement.innerText = \"\";\n [].slice.call(this.querySelectorAll(\".error\")).forEach((element: HTMLElement) => {\n element.innerText = \"\";\n });\n\n if (passwordElement.value !== confirmPasswordElement.value){\n formMessageElement.innerText = \"Password and repeated password must match.\";\n return;\n }\n\n this.setAttribute(\"busy\", \"\");\n\n if ((window).TapticEngine) \n (window).TapticEngine.unofficial.weakBoom();\n\n let result;\n try {\n result = await AuthenticationStore.instance.register(usernameElement.value, emailElement.value, passwordElement.value);\n } finally {\n this.removeAttribute(\"busy\");\n }\n \n \n if ((result).modelState) {\n for(const key in (result).modelState){\n const messageElement = this.querySelector(`[name=\"${key}\"]`) as HTMLSpanElement;\n if (messageElement)\n messageElement.innerText = (result).modelState[key];\n }\n } else if (!(result).succeeded) {\n if (formMessageElement)\n formMessageElement.innerText = (result).errors.join(\"
\");\n } else {\n AdaptivePopup.addAndslide(document.createElement(\"activationmail-info\"));\n this.remove();\n }\n }\n\n private successHandler = async () => {\n this.dispatchEvent(new CustomEvent(\"success\"));\n await this.closeHandler();\n\n };\n\n private setupEvents() {\n const registerButton = this.querySelector(\"[name=register]\") as HTMLButtonElement;\n registerButton.addEventListener(\"click\", async () => await this.register());\n\n this.addEventListener(\"keydown\", async event => {\n if (event.key === \"Enter\")\n await this.register();\n });\n\n const socialProviders = this.querySelector(\"social-providers\");\n\n socialProviders.addEventListener(\"success\", this.successHandler);\n\n socialProviders.addEventListener(\"complete-external\", (args: CustomEventInit) => {\n\n const login = args.detail;\n\n const externalUserRegistrationElement = document.createElement(\"external-user-registration-2\");\n externalUserRegistrationElement.setAttribute(\"provider\", login.provider);\n externalUserRegistrationElement.setAttribute(\"username\", login.username || \"\");\n externalUserRegistrationElement.setAttribute(\"email\", login.email || \"\");\n \n AdaptivePopup.addAndslide(externalUserRegistrationElement);\n\n externalUserRegistrationElement.addEventListener(\"success\", this.successHandler);\n\n }); \n }\n\n private view = () => `\n
\n
\n
\n
Create a new account
\n
\n
\n
\n \n
\n Username\n
\n \n
\n
\n \n\n
\n Email\n
\n \n
\n
\n \n \n
\n Password\n
\n \n
\n
\n \n \n
\n Repeat Password\n
\n \n
\n
\n \n\n\n
\n Or register via\n \n
\n\n \n
\n\n
\n \n
\n
\n `;\n}\n\ncustomElements.define(\"user-registration-2\", UserRegistrationElement2);","import { AuthenticationStore } from \"./AuthenticationStore\";\n\nimport { DialogController } from \"features/dialog\";\nimport { Routing } from \"lib/Routing\";\n\nclass ForgotPasswordElement extends HTMLElement {\n public static ClassName = \"ForgotPasswordElement\";\n async connectedCallback() {\n this.innerHTML = this.view();\n this.classList.add(\"form\");\n setTimeout(() => {\n this.style.opacity = \"1\";\n });\n\n const sendLink = this.querySelector(\"[name=send-link]\") as HTMLElement;\n sendLink.addEventListener(\"click\", async () => {\n const usernameOrEmailElement = this.querySelector(\"[name=username-or-email]\") as HTMLInputElement;\n if (usernameOrEmailElement.value === \"\") {\n const usernameOrEmailErrorElement = this.querySelector(\"model.UsernameOrEmail\") as HTMLInputElement;\n usernameOrEmailErrorElement.innerText = \"This field is requered\";\n } else {\n this.setAttribute(\"busy\", \"\");\n let result;\n try {\n result = await AuthenticationStore.instance.forgotPassword(usernameOrEmailElement.value);\n } finally {\n this.removeAttribute(\"busy\");\n }\n \n if (result) {\n await new DialogController().prompt({\n caption: \"Check your email\",\n message: \"If your account matches you will receive an email with a reset link.\",\n options: [\"Ok\"]\n });\n Routing.instance.go(\"/login\");\n } else {\n await new DialogController().prompt({\n caption: \"Unable to recover password\",\n message: \"Please verify the information you provided and contact us if the problem persists.\",\n options: [\"Ok\"]\n });\n }\n\n }\n });\n }\n\n \n\n\n private view = () => `\n
\n Forgot your password?\n
\n
\n

Enter your username or email.

\n\n
\n \n
\n \n \n
\n
\n \n \n
\n `;\n}\n\nRouting.instance.onChange(route => {\n if (route.path[0] === \"forgot-password\") { \n const loginFlow = document.querySelector(\"login-flow .content\");\n loginFlow.innerHTML = \"\";\n }\n});\n\ncustomElements.define(\"forgot-password\", ForgotPasswordElement);","import { AdaptivePopup } from \"features/authentication/AdaptivePopup\";\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\nimport { DialogController } from \"features/dialog\";\n\nclass ForgotPasswordElement2 extends AdaptivePopup {\n async connectedCallback() {\n this.innerHTML = this.view();\n super.connectedCallback();\n \n\n setTimeout(() => {\n this.style.opacity = \"1\";\n });\n\n const sendLink = this.querySelector(\"[name=send-link]\") as HTMLElement;\n sendLink.addEventListener(\"click\", async () => {\n const usernameOrEmailElement = this.querySelector(\"[name=username-or-email]\") as HTMLInputElement;\n if (usernameOrEmailElement.value === \"\") {\n const usernameOrEmailErrorElement = this.querySelector(\"model.UsernameOrEmail\") as HTMLInputElement;\n usernameOrEmailErrorElement.innerText = \"This field is requered\";\n } else {\n this.setAttribute(\"busy\", \"\");\n let result;\n try {\n result = await AuthenticationStore.instance.forgotPassword(usernameOrEmailElement.value);\n } finally {\n this.removeAttribute(\"busy\");\n }\n \n if (result) {\n await new DialogController().prompt({\n caption: \"Check your email\",\n message: \"If your account matches you will receive an email with a reset link.\",\n options: [\"Ok\"]\n });\n this.remove();\n } else {\n await new DialogController().prompt({\n caption: \"Unable to recover password\",\n message: \"Please verify the information you provided and contact us if the problem persists.\",\n options: [\"Ok\"]\n });\n }\n\n }\n });\n }\n\n \n\n\n private view = () => `\n
\n
\n
\n
Forgot your password?
\n
\n
\n
\n
\n Enter your username or email\n
\n \n
\n
\n \n\n
\n
\n \n
\n
\n `;\n}\n\ncustomElements.define(\"forgot-password-2\", ForgotPasswordElement2);","import \"./UserLoginElement-style\";\nimport { AuthenticationStore } from \"./AuthenticationStore\";\n\n\nclass SocialProvidersElement extends HTMLElement {\n \n async connectedCallback() {\n this.innerHTML = this.view();\n this.setupEvents()\n }\n \n private setupEvents() {\n [].slice.call(this.querySelectorAll(\"[name=provider]\")).forEach( (button: HTMLButtonElement) => {\n button.addEventListener(\"click\", async () => {\n const providerId = button.getAttribute(\"value\");\n const result = await AuthenticationStore.instance.loginExternal(providerId);\n if (result.status === \"success\")\n this.dispatchEvent(new CustomEvent(\"success\", { detail: result }));\n else if (result.status === \"failure\")\n this.dispatchEvent(new CustomEvent(\"complete-external\", { detail: result }));\n });\n }); \n }\n\n private view = () => `\n \n \n \n `;\n}\n\ncustomElements.define(\"social-providers\", SocialProvidersElement);","import \"./UserRegistrationElement-style\";\nimport { AdaptivePopup } from \"features/authentication/AdaptivePopup\";\n\n\nclass ActivationmailInfoElement extends AdaptivePopup {\n\n async connectedCallback() {\n this.innerHTML = this.checkEmailView();\n super.connectedCallback();\n }\n\n private checkEmailView = () => `\n
\n
\n
\n
Activation mail
\n
\n
\n
\n

We have now sent you a message containing a verification link.

\n

\n We do this to make sure that your email is valid and active, so that we know where to get a message to you in the future. \n

\n
\n
\n `;\n}\n\ncustomElements.define(\"activationmail-info\", ActivationmailInfoElement);","import { AuthenticationStore } from \"./AuthenticationStore\";\nimport \"./AuthSwitcherElement-style\";\n\nclass AuthSwitcherElement extends HTMLElement {\n private authElement: HTMLElement;\n private nonAuthElement: HTMLElement;\n private currentState;\n\n async connectedCallback() {\n AuthenticationStore.instance.onStateChanged(this.stateHandler);\n \n if (!this.authElement && !this.nonAuthElement)\n setTimeout(async () => {\n await this.stateHandler();\n });\n \n }\n\n disconnectedCallback() {\n AuthenticationStore.instance.offStateChanged(this.stateHandler);\n }\n\n private stateHandler = async () => {\n console.log(\"getting state\");\n const authenticated = await AuthenticationStore.instance.isAuthenticated();\n console.log(\"got state\");\n if (this.currentState === authenticated)\n return;\n\n //window.location.reload();\n \n //await cityline.reset();\n this.currentState = authenticated;\n\n if (authenticated) {\n if (this.nonAuthElement && this.nonAuthElement.parentElement)\n this.nonAuthElement.remove();\n \n if (!this.authElement)\n this.authElement = this.createFromTemplate(\"authenticated\");\n \n this.appendChild(this.authElement);\n } else {\n if (this.authElement && this.authElement.parentElement)\n this.authElement.remove();\n \n if (!this.nonAuthElement)\n this.nonAuthElement = this.createFromTemplate(\"not-authenticated\");\n \n this.appendChild(this.nonAuthElement);\n }\n }\n\n private createFromTemplate(name: string) {\n const template = this.querySelector(`template[name=${name}]`) as HTMLTemplateElement;\n return template.content.firstElementChild as HTMLElement;\n }\n}\n\ncustomElements.define(\"auth-switcher\", AuthSwitcherElement);\n\n","import \"./SiteFooter-style\";\nimport \"./SiteFooter-static.html\";","// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","class RequestAnimationFrame {\n constructor() {\n let lastTime = 0;\n\n // add requestAnimationFrame2\n if (!window.requestAnimationFrame)\n (window).requestAnimationFrame = (callback, element) => {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const id = window.setTimeout(() => { callback(currTime + timeToCall); },\n timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n // add cancelAnimationFrame\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = id => {\n clearTimeout(id);\n };\n }\n}\n\nlet __ = new RequestAnimationFrame();","window.requestIdleCallback =\nwindow.requestIdleCallback ||\nfunction (cb) {\n var start = Date.now();\n return setTimeout(function () {\n cb({\n didTimeout: false,\n timeRemaining: function () {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n}\n\nwindow.cancelIdleCallback =\nwindow.cancelIdleCallback ||\nfunction (id) {\n clearTimeout(id);\n}","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This shim allows elements written in, or compiled to, ES5 to work on native\n * implementations of Custom Elements v1. It sets new.target to the value of\n * this.constructor so that the native HTMLElement constructor can access the\n * current under-construction element's definition.\n */\n(function() {\n if (\n // No Reflect, no classes, no need for shim because native custom elements\n // require ES2015 classes or Reflect.\n window.Reflect === undefined ||\n window.customElements === undefined ||\n // The webcomponentsjs custom elements polyfill doesn't require\n // ES2015-compatible construction (`super()` or `Reflect.construct`).\n window.customElements.hasOwnProperty('polyfillWrapFlushCallback')\n ) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n window.HTMLElement = /** @this {!Object} */ function HTMLElement() {\n return Reflect.construct(\n BuiltInHTMLElement, [], /** @type {!Function} */ (this.constructor));\n };\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n })();","/*! (C) Andrea Giammarchi - @WebReflection - ISC Style License */\n!function(e,t){\"use strict\";function n(){var e=A.splice(0,A.length);for(et=0;e.length;)e.shift().call(null,e.shift())}function r(e,t){for(var n=0,r=e.length;n1)&&H(this)}}}),_e(l,j,{value:function(e){-1>0,_=\"__\"+R+U,k=\"addEventListener\",x=\"attached\",q=\"Callback\",B=\"detached\",Z=\"extends\",j=\"attributeChanged\"+q,G=x+q,z=\"connected\"+q,K=\"disconnected\"+q,X=\"created\"+q,$=B+q,Q=\"ADDITION\",W=\"REMOVAL\",Y=\"DOMAttrModified\",J=\"DOMContentLoaded\",ee=\"DOMSubtreeModified\",te=\"<\",ne=\"=\",re=/^[A-Z][._A-Z0-9]*-[-._A-Z0-9]*$/,oe=[\"ANNOTATION-XML\",\"COLOR-PROFILE\",\"FONT-FACE\",\"FONT-FACE-SRC\",\"FONT-FACE-URI\",\"FONT-FACE-FORMAT\",\"FONT-FACE-NAME\",\"MISSING-GLYPH\"],le=[],ae=[],ie=\"\",ue=y.documentElement,ce=le.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},se=C.prototype,me=se.hasOwnProperty,fe=se.isPrototypeOf,de=C.defineProperty,pe=[],he=C.getOwnPropertyDescriptor,Te=C.getOwnPropertyNames,Le=C.getPrototypeOf,Me=C.setPrototypeOf,Ee=!!C.__proto__,ve=!1,He=\"__dreCEv1\",ge=e.customElements,be=!/^force/.test(t.type)&&!!(ge&&ge.define&&ge.get&&ge.whenDefined),ye=C.create||C,Ce=e.Map||function(){var e,t=[],n=[];return{get:function(e){return n[ce.call(t,e)]},set:function(r,o){e=ce.call(t,r),e<0?n[t.push(r)-1]=o:n[e]=o}}},we=e.Promise||function(e){function t(e){for(r=!0;n.length;)n.shift()(e)}var n=[],r=!1,o={\"catch\":function(){return o},then:function(e){return n.push(e),r&&setTimeout(t,1),o}};return e(t),o},Ae=!1,Oe=ye(null),Ne=ye(null),De=new Ce,Ie=function(e){return e.toLowerCase()},Fe=C.create||function ct(e){return e?(ct.prototype=e,new ct):this},Se=Me||(Ee?function(e,t){return e.__proto__=t,e}:Te&&he?function(){function e(e,t){for(var n,r=Te(t),o=0,l=r.length;o
\",new Ve(function(e,t){if(e[0]&&\"childList\"==e[0].type&&!e[0].removedNodes[0].childNodes.length){P=he(Re,\"innerHTML\");var n=P&&P.set;n&&de(Re,\"innerHTML\",{set:function(e){for(;this.lastChild;)this.removeChild(this.lastChild);n.call(this,e)}})}t.disconnect(),P=null}).observe(P,{childList:!0,subtree:!0}),P.innerHTML=\"\"),tt||(Me||Ee?(S=function(e,t){fe.call(t,e)||d(e,t)},V=d):(S=function(e,t){e[_]||(e[_]=C(!0),d(e,t))},V=S),Ue?(ot=!1,function(){var e=he(Re,k),t=e.value,n=function(e){var t=new CustomEvent(Y,{bubbles:!0});t.attrName=e,t.prevValue=Ge.call(this,e),t.newValue=null,t[W]=t.attrChange=2,Ke.call(this,e),je.call(this,t)},r=function(e,t){var n=ze.call(this,e),r=n&&Ge.call(this,e),o=new CustomEvent(Y,{bubbles:!0});Xe.call(this,e,t),o.attrName=e,o.prevValue=n?r:null,o.newValue=t,n?o.MODIFICATION=o.attrChange=1:o[Q]=o.attrChange=0,je.call(this,o)},o=function(e){var t,n=e.currentTarget,r=n[_],o=e.propertyName;r.hasOwnProperty(o)&&(r=r[o],t=new CustomEvent(Y,{bubbles:!0}),t.attrName=r.name,t.prevValue=r.value||null,t.newValue=r.value=n[o]||null,null==t.prevValue?t[Q]=t.attrChange=0:t.MODIFICATION=t.attrChange=1,je.call(n,t))};e.value=function(e,l,a){e===Y&&this[j]&&this.setAttribute!==r&&(this[_]={className:{name:\"class\",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,\"propertychange\",o)),t.call(this,e,l,a)},de(Re,k,e)}()):Ve||(ue[k](Y,Je),ue.setAttribute(_,1),ue.removeAttribute(_),ot&&(O=function(e){var t,n,r,o=this;if(o===e.target){t=o[_],o[_]=n=D(o);for(r in n){if(!(r in t))return N(0,o,r,t[r],n[r],Q);if(n[r]!==t[r])return N(1,o,r,t[r],n[r],\"MODIFICATION\")}for(r in t)if(!(r in n))return N(2,o,r,t[r],n[r],W)}},N=function(e,t,n,r,o,l){var a={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:o};a[l]=e,u(a)},D=function(e){for(var t,n,r={},o=e.attributes,l=0,a=o.length;l$\");if(n[Z]=\"a\",t.prototype=Fe(Pe.prototype),t.prototype.constructor=t,e.customElements.define(r,t,n),!o.test(y.createElement(\"a\",{is:r}).outerHTML)||!o.test((new t).outerHTML))throw n}(function st(){return Reflect.construct(Pe,[],st)},{},\"document-register-element-a\"+U)}catch(it){b()}if(!t.noBuiltIn)try{if($e.call(y,\"a\",\"a\").outerHTML.indexOf(\"is\")<0)throw{}}catch(ut){Ie=function(e){return{is:e.toLowerCase()}}}}(window);\n","\"use strict\";\n\nif (!require(\"./is-implemented\")()) {\n\tObject.defineProperty(require(\"ext/global-this\"), \"Symbol\", {\n\t\tvalue: require(\"./polyfill\"),\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\twritable: true\n\t});\n}\n","import * as style from \"./ProductSelection-module.less\";\nimport { PaymentController } from \"features/payment\"\nimport \"styles/foundation/forms.less\";\n\n\nclass ProductSelectionElement extends HTMLElement {\n private level = () => this.getAttribute(\"membership-level\");\n private loggedIn = () => this.hasAttribute(\"logged-in\");\n\n connectedCallback() {\n this.innerHTML = this.view();\n this.classList.add(style.pricing);\n\n if (this.loggedIn()) {\n [].slice.call(this.querySelectorAll(\".available\")).forEach((element: HTMLElement) => {\n element.addEventListener(\"click\", async (event) => {\n await new PaymentController().pay();\n });\n \n });\n } else {\n [].slice.call(this.querySelectorAll(\".tier\")).forEach((element: HTMLElement) => {\n element.addEventListener(\"click\", () => {\n window.location.href = `/login?returnurl=${window.location.pathname}`;\n });\n });\n }\n }\n\n private getText(type: string) {\n if (!this.loggedIn())\n return \"Login to activate\";\n\n if (this.level() === type)\n return \"Current subscription\";\n\n if (type === \"premium\")\n return \"Activate\";\n\n return \"\";\n }\n\n private view = () => `\n
\n By signing up you support future development of Linkstacks.\n
\n\n
\n
Basic
\n
\n Nag screen\n
\n
\n Unlimited links\n
\n
\n Unlimited stacks\n
\n
\n Filters\n
\n
\n Browser plugin\n
\n
\n Deep search\n
\n
\n -\n
\n
\n $0 / MONTH\n
\n
\n ${this.getText(\"basic\")}\n
\n\n
\n\n\n
\n
Premium
\n
\n -\n
\n
\n Unlimited links\n
\n
\n Unlimited stacks\n
\n
\n Filters\n
\n
\n Browser plugin\n
\n
\n Deep search\n
\n
\n Email support\n
\n
\n $1.25 / MONTH *\n
\n
\n ${this.getText(\"premium\")}\n
\n
\n\n
\n
Professional
\n
\n -\n
\n
\n Unlimited links\n
\n
\n Unlimited stacks\n
\n
\n Filters\n
\n
\n Browser plugin\n
\n
\n Deep search\n
\n
\n Full support\n
\n
\n $5 / MONTH *\n
\n
\n Coming soon\n
\n
\n
\n * When subscribing for a year.\n
\n `;\n}\n\n\ncustomElements.define(\"product-selection\", ProductSelectionElement);","\"use strict\";\n\nvar global = require(\"ext/global-this\")\n , validTypes = { object: true, symbol: true };\n\nmodule.exports = function () {\n\tvar Symbol = global.Symbol;\n\tvar symbol;\n\tif (typeof Symbol !== \"function\") return false;\n\tsymbol = Symbol(\"test symbol\");\n\ttry { String(symbol); }\n\tcatch (e) { return false; }\n\n\t// Return 'true' also for polyfills\n\tif (!validTypes[typeof Symbol.iterator]) return false;\n\tif (!validTypes[typeof Symbol.toPrimitive]) return false;\n\tif (!validTypes[typeof Symbol.toStringTag]) return false;\n\n\treturn true;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n\tif (typeof globalThis !== \"object\") return false;\n\tif (!globalThis) return false;\n\treturn globalThis.Array === Array;\n};\n","export class Formatting {\n public static date(source: string): string {\n const date = new Date(source);\n const monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n return `${date.getDate()} ${monthNames[date.getMonth()]}, ${date.getFullYear()}`;\n }\n\n public static shortDate(source: string): string {\n const date = new Date(source);\n\n return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;\n }\n\n public static shortDateTime(date: Date): string {\n return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()} ${date.getHours()}:${Formatting.pad(date.getMinutes().toString())}`;\n }\n\n public static shortDateNamedMonth(source: string): string {\n const date = new Date(source);\n const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"June\", \"July\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n return `${monthNames[date.getMonth()]} ${date.getDate()} ${date.getFullYear()}`;\n }\n\n public static pad(source = \"\", wantedLength = 2, symbol = \"0\") {\n return source.length >= wantedLength ? source : new Array(wantedLength - source.length + 1).join(symbol) + source;\n }\n\n public static slugify(text) {\n return text.toString().toLowerCase()\n .replace(/\\s+/g, \"-\") // Replace spaces with -\n .replace(/[^\\w\\-]+/g, \"\") // Remove all non-word chars\n .replace(/\\-\\-+/g, \"-\") // Replace multiple - with single -\n .replace(/^-+/, \"\") // Trim - from start of text\n .replace(/-+$/, \"\"); // Trim - from end of text\n }\n\n public static range = (lowEnd: number, highEnd: number): number[] => {\n if (highEnd < lowEnd)\n return [];\n\n const arr = []\n let c = highEnd - lowEnd + 1;\n while (c--) {\n arr[c] = highEnd--\n }\n return arr;\n }\n\n public static mapAny(obj: any): string[][] {\n const arr = [];\n\n for (const key in obj)\n arr.push([key, obj[key]]);\n\n return arr;\n }\n\n public static areEqual(a1: string[], a2: string[]) {\n return a1.length === a2.length && a1.every((v, i) => v === a2[i]);\n }\n\n public static capitalize(source: string) {\n return source.charAt(0).toUpperCase() + source.slice(1);\n }\n\n public static titleize(source: string) {\n let arr = source.split(\" \");\n arr = arr.map(str => Formatting.capitalize(source));\n\n return arr.join(\" \");\n }\n\n private static wordSplitRegex = new RegExp(\"[\\-_\\.]\");\n private static uppercase = new RegExp(\"[A-Z]\");\n private static multipleWhitespace = new RegExp(\"\\s{2,}\");\n private static titleizeRegex = new RegExp(\"\\b([a-z])\");\n\n\n static deslugify(source: string): string {\n if (!source || source === \"\")\n return \"\";\n\n // all uppercase?\n if (source.toUpperCase() === source)\n source = source.toLowerCase();\n\n // replace symbols with spaces\n source = source.replace(Formatting.wordSplitRegex, \" \");\n\n // replace uppercase letters with spaces, if no spaces\n if (source.trim().indexOf(\" \") === -1)\n source = source.replace(Formatting.uppercase, \" $0\");\n\n // single space only\n source = source.replace(Formatting.multipleWhitespace, \" \");\n\n // titielize (this is test -> This Is Test)\n source = source.replace(Formatting.titleizeRegex, \"$0\".toUpperCase());\n\n return source.trim();\n }\n\n public static nameof = (name: keyof T) => name;\n\n public static htmlEscape(literals, ...placeholders) {\n let result = \"\";\n\n // interleave the literals with the placeholders\n for (let i = 0; i < placeholders.length; i++) {\n\n if (literals[i]) {\n if (!literals[i].endsWith(\"$\"))\n result += literals[i];\n else\n result += literals[i].substring(0, literals[i].length - 1);\n }\n\n\n if (placeholders[i])\n if (Array.isArray(placeholders[i]))\n result += placeholders[i].join(\"\");\n else if (literals[i].endsWith(\"$\"))\n result += placeholders[i];\n else if (placeholders[i] && placeholders[i].toLocaleLowerCase && placeholders[i].toLocaleLowerCase().indexOf(\"/g, \">\");\n }\n\n }\n\n // add the last literal\n result += literals[literals.length - 1];\n return result;\n }\n\n static htmlDecode(text) {\n const div = document.createElement(\"div\") as HTMLDivElement;\n div.innerHTML = text;\n return div.textContent;\n }\n\n static htmlEncode(str) {\n const div = document.createElement(\"div\");\n div[(\"textContent\" in div) ? \"textContent\" : \"innerText\"] = str;\n return div.innerHTML;\n }\n\n static htmlEncode2(str) {\n return String(str).replace(/&/g, \"&\").replace(//g, \">\"); //.replace(/\"/g, \""\");\n }\n\n static prettyfyUrl(source: string): string {\n let url: URL;\n try {\n url = new URL(source);\n } catch (error) {\n //console.log(\"unable to parse url\", error);\n return source;\n }\n \n let result = url.host;\n\n const path = decodeURI(url.pathname);\n if (path !== \"/\")\n result += path;\n\n // if (url.hash !== \"\")\n // result += url.hash;\n\n return result;\n }\n}","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of Object.prototype being sealed (via preventExtensions, seal or freeze)\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ is resolved with global context, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","// ES2015 Symbol polyfill for environments that do not (or partially) support it\n\n\"use strict\";\n\nvar d = require(\"d\")\n , validateSymbol = require(\"./validate-symbol\")\n , NativeSymbol = require(\"ext/global-this\").Symbol\n , generateName = require(\"./lib/private/generate-name\")\n , setupStandardSymbols = require(\"./lib/private/setup/standard-symbols\")\n , setupSymbolRegistry = require(\"./lib/private/setup/symbol-registry\");\n\nvar create = Object.create\n , defineProperties = Object.defineProperties\n , defineProperty = Object.defineProperty;\n\nvar SymbolPolyfill, HiddenSymbol, isNativeSafe;\n\nif (typeof NativeSymbol === \"function\") {\n\ttry {\n\t\tString(NativeSymbol());\n\t\tisNativeSafe = true;\n\t} catch (ignore) {}\n} else {\n\tNativeSymbol = null;\n}\n\n// Internal constructor (not one exposed) for creating Symbol instances.\n// This one is used to ensure that `someSymbol instanceof Symbol` always return false\nHiddenSymbol = function Symbol(description) {\n\tif (this instanceof HiddenSymbol) throw new TypeError(\"Symbol is not a constructor\");\n\treturn SymbolPolyfill(description);\n};\n\n// Exposed `Symbol` constructor\n// (returns instances of HiddenSymbol)\nmodule.exports = SymbolPolyfill = function Symbol(description) {\n\tvar symbol;\n\tif (this instanceof Symbol) throw new TypeError(\"Symbol is not a constructor\");\n\tif (isNativeSafe) return NativeSymbol(description);\n\tsymbol = create(HiddenSymbol.prototype);\n\tdescription = description === undefined ? \"\" : String(description);\n\treturn defineProperties(symbol, {\n\t\t__description__: d(\"\", description),\n\t\t__name__: d(\"\", generateName(description))\n\t});\n};\n\nsetupStandardSymbols(SymbolPolyfill);\nsetupSymbolRegistry(SymbolPolyfill);\n\n// Internal tweaks for real symbol producer\ndefineProperties(HiddenSymbol.prototype, {\n\tconstructor: d(SymbolPolyfill),\n\ttoString: d(\"\", function () { return this.__name__; })\n});\n\n// Proper implementation of methods exposed on Symbol.prototype\n// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\ndefineProperties(SymbolPolyfill.prototype, {\n\ttoString: d(function () { return \"Symbol (\" + validateSymbol(this).__description__ + \")\"; }),\n\tvalueOf: d(function () { return validateSymbol(this); })\n});\ndefineProperty(\n\tSymbolPolyfill.prototype,\n\tSymbolPolyfill.toPrimitive,\n\td(\"\", function () {\n\t\tvar symbol = validateSymbol(this);\n\t\tif (typeof symbol === \"symbol\") return symbol;\n\t\treturn symbol.toString();\n\t})\n);\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d(\"c\", \"Symbol\"));\n\n// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\ndefineProperty(\n\tHiddenSymbol.prototype, SymbolPolyfill.toStringTag,\n\td(\"c\", SymbolPolyfill.prototype[SymbolPolyfill.toStringTag])\n);\n\n// Note: It's important to define `toPrimitive` as last one, as some implementations\n// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n// And that may invoke error in definition flow:\n// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\ndefineProperty(\n\tHiddenSymbol.prototype, SymbolPolyfill.toPrimitive,\n\td(\"c\", SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive])\n);\n","\"use strict\";\n\nvar isFunction = require(\"../function/is\");\n\nvar classRe = /^\\s*class[\\s{/}]/, functionToString = Function.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isFunction(value)) return false;\n\tif (classRe.test(functionToString.call(value))) return false;\n\treturn true;\n};\n","\"use strict\";\n\nvar isPrototype = require(\"../prototype/is\");\n\nmodule.exports = function (value) {\n\tif (typeof value !== \"function\") return false;\n\n\tif (!hasOwnProperty.call(value, \"length\")) return false;\n\n\ttry {\n\t\tif (typeof value.length !== \"number\") return false;\n\t\tif (typeof value.call !== \"function\") return false;\n\t\tif (typeof value.apply !== \"function\") return false;\n\t} catch (error) {\n\t\treturn false;\n\t}\n\n\treturn !isPrototype(value);\n};\n","\"use strict\";\n\nvar isObject = require(\"../object/is\");\n\nmodule.exports = function (value) {\n\tif (!isObject(value)) return false;\n\ttry {\n\t\tif (!value.constructor) return false;\n\t\treturn value.constructor.prototype === value;\n\t} catch (error) {\n\t\treturn false;\n\t}\n};\n","\"use strict\";\n\nvar isValue = require(\"../value/is\");\n\n// prettier-ignore\nvar possibleTypes = { \"object\": true, \"function\": true, \"undefined\": true /* document.all */ };\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return false;\n\treturn hasOwnProperty.call(possibleTypes, typeof value);\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.assign : require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn obj.foo + obj.bar + obj.trzy === \"razdwatrzy\";\n};\n","\"use strict\";\n\nvar keys = require(\"../keys\")\n , value = require(\"../valid-value\")\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\n","import EventTarget from \"@ungap/event-target\";\n\nexport class CitylineClient {\n private eventTarget = new EventTarget();\n private _frames: { [key: string]: Frame } = {};\n private _idCache = {};\n private abortListener = false;\n public static terminator = String.fromCharCode(13);\n private mainLoop: Promise;\n private reader: ReadableStreamDefaultReader;\n private xhr: XMLHttpRequest;\n private backawayCooldownSeconds = 0;\n\n private parseFrame = (line: string): Frame => {\n let frame: Frame;\n\n try {\n frame = JSON.parse(line) as Frame;\n } catch(error) {\n console.log(`Unable to parse line`, line);\n return;\n }\n\n if (frame.data)\n frame.data = JSON.parse(frame.data);\n\n return frame;\n };\n\n constructor(private url: string, private requestFactory: () => Promise = () => Promise.resolve({}), private xhrRequestFactory: (request: XMLHttpRequest) => Promise = (request: XMLHttpRequest) => Promise.resolve()) {\n window.requestIdleCallback(() => this.mainLoop = this.startListener());\n let started = new Date().getTime();\n\n const driftHandler = async () => {\n try {\n const now = new Date().getTime();\n const diff = now - started;\n\n let allowedDrift = 3000;\n if (/Trident\\/|MSIE/.test(window.navigator.userAgent)) {\n allowedDrift = 30000;\n }\n\n if (diff > allowedDrift) {\n console.log(\"DRIFT! (not resetting)\", diff);\n // await this.reset();\n }\n }\n finally {\n started = new Date().getTime();\n setTimeout(driftHandler, 1000);\n }\n };\n \n setTimeout(driftHandler, 1000);\n }\n\n private startListener = async () => {\n if (window.ReadableStream)\n await this.startFetchListener();\n else\n await this.startXHRListener();\n };\n\n\n public reset = async () => {\n console.log(\"Resetting\");\n\n this.abortListener = true;\n console.log(\"Canceling reader\");\n try {\n await this.reader?.cancel();\n console.log(\"Reader closed success\");\n this._abortController?.abort();\n this.xhr?.abort();\n } catch (error) {\n console.log(\"Close errror\", error);\n }\n await this.mainLoop;\n this._idCache = {};\n this._frames = {};\n console.log(\"Completed reset\");\n\n this.abortListener = false;\n this.mainLoop = this.startListener();\n }\n\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ) {\n return this.eventTarget.addEventListener(type, listener, options);\n }\n\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ) {\n this.eventTarget.removeEventListener(type, listener, options);\n }\n\n async getFrames(...names: string[]): Promise {\n const promises = names.map(name => {\n if (this._frames[name])\n return Promise.resolve(this._frames[name]);\n\n return new Promise(r => {\n const handler = (event: CustomEvent) => {\n this.removeEventListener(name, handler);\n r(event.detail);\n };\n this.addEventListener(name, handler);\n })\n });\n\n return await Promise.all(promises);\n }\n\n async getFrame(name: string): Promise {\n if (this._frames[name])\n return this._frames[name].data;\n\n return new Promise(r => {\n const handler = (event: CustomEvent) => {\n this.removeEventListener(name, handler);\n r(event.detail);\n };\n this.addEventListener(name, handler);\n });\n }\n\n private async buildRequest(): Promise {\n const externalRequest = await this.requestFactory();\n const headers = new Headers(externalRequest.headers);\n\n headers.set(\"Content-Type\", \"application/json\");\n\n const requestData: CitylineRequest = { tickets: this._idCache };\n const request: RequestInit = {\n ...externalRequest,\n ...{ body: JSON.stringify(requestData), method: \"post\", headers: headers }\n };\n\n return request;\n }\n\n private startXHRListener = async () => {\n // console.log(\"Using XHR listener\");\n\n try {\n await new Promise(async (resolve, reject) => {\n const started = new Date().getTime();\n\n const loadEndHandler = () => {\n this.xhr.removeEventListener(\"loadend\", loadEndHandler);\n\n const timeSpent = new Date().getTime() - started;\n // this is normal scenario - if we actually spent time chrunching data we can start quick again\n if (timeSpent < 5000)\n reject(new Error(\"Loop ended too quickly, expects atleast 5 seconds\"));\n else\n resolve(undefined);\n }\n\n const buffer = new Buffer();\n let seenBytes = 0;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"post\", this.url);\n\n this.xhr.onreadystatechange = () => {\n if (this.xhr.readyState === 3) {\n this.backawayCooldownSeconds = 0;\n\n const newData = this.xhr.response.substr(seenBytes);\n\n console.log(\"added\", newData);\n\n buffer.add(newData);\n\n let chunk = undefined;\n do {\n chunk = buffer.take();\n\n if (chunk !== undefined) {\n const frame = this.parseFrame(chunk);\n this.addFrame(frame);\n }\n\n } while (chunk !== undefined);\n\n seenBytes = this.xhr.responseText.length;\n }\n };\n\n this.xhr.addEventListener(\"loadend\", loadEndHandler, { once: true }); // NOTE: IE does not support once\n\n const requestData: CitylineRequest = { tickets: this._idCache };\n const externalRequest = await this.requestFactory();\n\n await this.xhrRequestFactory(this.xhr);\n this.xhr.setRequestHeader(\"Authorization\", externalRequest.headers[\"Authorization\"]);\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n\n this.xhr.send(JSON.stringify(requestData));\n });\n\n if (!this.abortListener)\n setTimeout(this.startXHRListener, 100);\n }\n catch (error) {\n if (!this.abortListener) {\n this.eventTarget.dispatchEvent(new CustomEvent(\"error\", { detail: error }));\n setTimeout(this.startXHRListener, 1000 * this.backawayCooldownSeconds++);\n }\n }\n console.log(\"Finish main loop\");\n }\n\n private _abortController: AbortController;\n\n private startFetchListener = async () => {\n // console.log(\"Using Fetch listener\");\n\n this._abortController = new AbortController();\n\n try {\n const decoder = new TextDecoder();\n\n const request = await this.buildRequest();\n request.signal = this._abortController?.signal;\n\n const response = await fetch(this.url, request);\n\n this.reader = response.body.getReader();\n const buffer = new Buffer();\n const started = new Date().getTime();\n\n\n if (!response.ok)\n throw new Error(response.statusText);\n\n while (!this.abortListener) {\n const result = await this.reader.read();\n\n if (result.done)\n break;\n\n // all is good, lets reset cooldown\n this.backawayCooldownSeconds = 0;\n\n const decoded = decoder.decode(result.value);\n buffer.add(decoded);\n\n let chunk = undefined;\n do {\n chunk = buffer.take();\n\n if (chunk !== undefined) {\n const frame = this.parseFrame(chunk);\n this.addFrame(frame);\n }\n\n } while (chunk !== undefined);\n }\n\n const timeSpent = new Date().getTime() - started;\n // this is normal scenario - if we actually spent time chrunching data we can start quick again\n if (timeSpent < 5000)\n throw new Error(\"Loop ended too quickly, expects atleast 5 seconds\");\n\n if (!this.abortListener)\n setTimeout(this.startFetchListener, 100);\n }\n catch (error) {\n if (!this.abortListener) {\n this.eventTarget.dispatchEvent(new CustomEvent(\"error\", { detail: error }));\n setTimeout(this.startFetchListener, 1000 * this.backawayCooldownSeconds++);\n }\n }\n\n console.log(\"Finish main loop\");\n }\n\n\n\n private addFrame(frame: Frame) {\n if (frame && frame.event) {\n if (frame.id)\n this._idCache[frame.event] = frame.id;\n\n this._frames[frame.event] = frame;\n\n setTimeout(() => {\n this.eventTarget.dispatchEvent(\n new CustomEvent(frame.event, {\n detail: frame.data\n })\n );\n\n this.eventTarget.dispatchEvent(\n new CustomEvent(\"frame-received\", {\n detail: frame\n })\n );\n });\n }\n }\n}\n\nclass Buffer {\n private _buffer = [\"\"];\n\n add(chunk: string) {\n const lines = chunk.split(\"\\n\");\n\n if (lines.length > 0)\n this._buffer[this._buffer.length - 1] += lines[0];\n\n if (lines.length > 1)\n this._buffer = this._buffer.concat(lines.slice(1));\n }\n\n take() {\n if (this._buffer.length === 0)\n return undefined;\n\n if ((this._buffer[0].trim().startsWith(\"{\") && this._buffer[0].trim().endsWith(\"}\"))) {\n const chunk = this._buffer[0];\n this._buffer = this._buffer.slice(1);\n return chunk;\n }\n\n return undefined;\n }\n}\n\ninterface CitylineRequest {\n tickets: { [key: string]: string };\n}\n\nexport interface Frame {\n id?: string;\n event?: string;\n data: any;\n}\n","import { CitylineClient } from \"./CitylineClient\";\nimport { UrlProvider } from \"lib/UrlProvider\";\nimport { Request } from \"lib/HTTP\";\n\nexport class CitylineSingleton {\n private static _client: CitylineClient = new CitylineClient(`${new UrlProvider().root}/api/cityline`, () => Promise.resolve(Request.post.authenticate()));\n static get client() {\n return CitylineSingleton._client;\n }\n}\n\nconst cityline = CitylineSingleton.client;\nexport { cityline };\n\n\n// setTimeout(async () => {\n// const initialUsername = await cityline.getFrame(\"username\");\n// cityline.addEventListener(\"username\", (event:CustomEvent) => {\n// if (event.detail !== initialUsername)\n// console.log(\"Username changed\", event.detail);\n// });\n// });\n\n// cityline.addEventListener(\"frame-received\", (event:CustomEvent) => {\n// if (event.detail.event === \"feeds\") {\n// console.log(\"Event is\", event.detail);\n// console.log(\"Id\", event.detail.id.length);\n\n// }\n\n// });\n\n\n//cityline.addEventListener(\"frame-received\", (event:CustomEvent) => console.log(`${event.detail.event}:`, event.detail.data));\ncityline.addEventListener(\"error\", (event:CustomEvent) => console.log(\"ERROR\", event.detail));\n//cityline.addEventListener(\"log\", (event:CustomEvent) => console.log(event.detail));\n","\"use strict\";\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n","\"use strict\";\n\nvar isValue = require(\"../is-value\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? String.prototype.contains : require(\"./shim\");\n","\"use strict\";\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn str.contains(\"dwa\") === true && str.contains(\"foo\") === false;\n};\n","\"use strict\";\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n","\"use strict\";\n\nmodule.exports = function (value) {\n\tif (!value) return false;\n\tif (typeof value === \"symbol\") return true;\n\tif (!value.constructor) return false;\n\tif (value.constructor.name !== \"Symbol\") return false;\n\treturn value[value.constructor.toStringTag] === \"Symbol\";\n};\n","\"use strict\";\n\nvar d = require(\"d\");\n\nvar create = Object.create, defineProperty = Object.defineProperty, objPrototype = Object.prototype;\n\nvar created = create(null);\nmodule.exports = function (desc) {\n\tvar postfix = 0, name, ie11BugWorkaround;\n\twhile (created[desc + (postfix || \"\")]) ++postfix;\n\tdesc += postfix || \"\";\n\tcreated[desc] = true;\n\tname = \"@@\" + desc;\n\tdefineProperty(\n\t\tobjPrototype,\n\t\tname,\n\t\td.gs(null, function (value) {\n\t\t\t// For IE11 issue see:\n\t\t\t// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/\n\t\t\t// ie11-broken-getters-on-dom-objects\n\t\t\t// https://github.com/medikoo/es6-symbol/issues/12\n\t\t\tif (ie11BugWorkaround) return;\n\t\t\tie11BugWorkaround = true;\n\t\t\tdefineProperty(this, name, d(value));\n\t\t\tie11BugWorkaround = false;\n\t\t})\n\t);\n\treturn name;\n};\n","import { DOMLite } from \"lib/DOMLite\";\n\nexport class DOM extends DOMLite {\n private static elementsQuery = (form: HTMLElement) => [].slice.call(form.querySelectorAll(\"input, textarea\"));\n\n static serializeInto(root: HTMLElement, source: any): void {\n DOM.elementsQuery(root).forEach((element: HTMLInputElement) => {\n\n const path = element.name.split(\".\");\n\n let leaf = source;\n path.forEach(pathElement => {\n if (pathElement === path[path.length - 1]) {\n\n if (Array.isArray(leaf[pathElement]))\n leaf[pathElement] = element.value.split(\",\");\n else if (element.type === \"checkbox\") {\n leaf[pathElement] = element.checked;\n } else\n leaf[pathElement] = element.value;\n return;\n }\n\n leaf = leaf[pathElement] || {};\n });\n });\n }\n\n static serialize(root: HTMLElement) {\n const source = {};\n DOM.elementsQuery(root).forEach((element: HTMLInputElement) => {\n source[element.name] = element.value;\n });\n return source;\n }\n\n static deserialize(root: HTMLElement, source: TSource) {\n DOM.elementsQuery(root).forEach((element: HTMLInputElement) => {\n element.value = source[element.name];\n });\n }\n\n static toggleAttribute(element: HTMLElement, name: string): boolean {\n if (element.hasAttribute(name)) {\n element.removeAttribute(name);\n return false;\n } else {\n element.setAttribute(name, \"\");\n return true;\n }\n \n }\n\n static ready(): Promise {\n return new Promise((resolve) => {\n if(\n document.readyState === \"complete\" ||\n (document.readyState !== \"loading\" && !(document).documentElement.doScroll)\n ) {\n resolve(undefined);\n } else {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n }\n });\n }\n\n static getCookie(name:string) : string {\n const b = document.cookie.match(`(^|;)\\\\s*${name}\\\\s*=\\\\s*([^;]+)`);\n return b ? b.pop() : \"\";\n }\n\n static removecookie(name: string) {\n document.cookie = `${name}=; Path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;`;\n };\n\n static async configurePage() {\n await DOM.ready();\n document.querySelector(\"html\").classList.remove(\"no-js\");\n\n // document.documentElement.classList.remove(\"no-js\");\n // document.documentElement.classList.add(\"js\");\n }\n\n static fadeOut(element: HTMLElement, speed = .1) {\n return new Promise(resolve => {\n element.style.opacity = \"1\";\n \n const fade = () => {\n let opacity = parseFloat(element.style.opacity);\n\n if ((opacity -= speed) < 0) {\n element.style.display = \"none\";\n resolve(undefined);\n } else {\n element.style.opacity = opacity.toString();\n requestAnimationFrame(fade);\n }\n };\n fade();\n });\n }\n \n static parse(html: string) : HTMLElement {\n const element = document.createElement(\"div\");\n element.innerHTML = html;\n return element.firstElementChild as HTMLElement;\n }\n\n static fadeIn(element: HTMLElement, display: string = \"block\", speed = .1) {\n return new Promise(resolve => {\n element.style.opacity = \"0\";\n element.style.display = display;\n \n const fade = () => {\n let opacity = parseFloat(element.style.opacity);\n\n if (!((opacity += speed) > 1)) {\n element.style.opacity = opacity.toString();\n requestAnimationFrame(fade);\n } else {\n resolve(undefined);\n }\n };\n fade();\n });\n }\n\n static expand(element: HTMLElement, speed = .1) {\n return new Promise(resolve => {\n let pos = 0;\n element.style.transformOrigin = \"top\";\n element.style.transform = \"scaleY(0)\";\n \n const f = () => {\n if (!((pos += speed) > 1)) {\n element.style.transform = `scaleY(${pos})`;\n requestAnimationFrame(f);\n } else {\n resolve(undefined);\n }\n };\n f();\n });\n }\n\n static slideUp(element: HTMLElement) {\n return new Promise(resolve => {\n element.style.transform = \"translate(0, 100%)\";\n element.style.transition = \"0.2s ease-out\";\n \n requestAnimationFrame(() => {\n element.style.transform = \"translate(0, 0)\"\n });\n\n });\n }\n\n static sort(elements: HTMLElement[], comparer: (element:HTMLElement) => string) {\n const parent = elements[0].parentElement;\n const sorted = elements.sort( (a: HTMLElement, b: HTMLElement) => comparer(a) > comparer(b) ? 1 : -1 );\n sorted.forEach( (element: HTMLElement) => {\n parent.appendChild(element);\n });\n }\n\n static isElementInViewport (element: HTMLElement) {\n const rectangle = element.getBoundingClientRect();\n \n return (\n rectangle.top >= 0 &&\n rectangle.left >= 0 &&\n rectangle.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */\n rectangle.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */\n );\n }\n\n static isScrolledToBottom (element: HTMLElement) {\n return element.scrollTop >= (element.scrollHeight - element.offsetHeight);\n }\n}\n\nDOM.configurePage().catch(console.log);\n\n\nexport class HeightFollower {\n constructor(private source: HTMLElement, private target: HTMLElement, private padding: number) {\n window.addEventListener(\"resize\", this.adjustHandler, {passive: true});\n this.adjustHandler();\n }\n\n private adjustHandler = () => {\n this.target.style.height = `${this.source.clientHeight - this.padding}px`;\n }\n\n destroy() {\n window.removeEventListener(\"resize\", this.adjustHandler);\n }\n}","\"use strict\";\n\nvar d = require(\"d\")\n , NativeSymbol = require(\"ext/global-this\").Symbol;\n\nmodule.exports = function (SymbolPolyfill) {\n\treturn Object.defineProperties(SymbolPolyfill, {\n\t\t// To ensure proper interoperability with other native functions (e.g. Array.from)\n\t\t// fallback to eventual native implementation of given symbol\n\t\thasInstance: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill(\"hasInstance\")\n\t\t),\n\t\tisConcatSpreadable: d(\n\t\t\t\"\",\n\t\t\t(NativeSymbol && NativeSymbol.isConcatSpreadable) ||\n\t\t\t\tSymbolPolyfill(\"isConcatSpreadable\")\n\t\t),\n\t\titerator: d(\"\", (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill(\"iterator\")),\n\t\tmatch: d(\"\", (NativeSymbol && NativeSymbol.match) || SymbolPolyfill(\"match\")),\n\t\treplace: d(\"\", (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill(\"replace\")),\n\t\tsearch: d(\"\", (NativeSymbol && NativeSymbol.search) || SymbolPolyfill(\"search\")),\n\t\tspecies: d(\"\", (NativeSymbol && NativeSymbol.species) || SymbolPolyfill(\"species\")),\n\t\tsplit: d(\"\", (NativeSymbol && NativeSymbol.split) || SymbolPolyfill(\"split\")),\n\t\ttoPrimitive: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill(\"toPrimitive\")\n\t\t),\n\t\ttoStringTag: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill(\"toStringTag\")\n\t\t),\n\t\tunscopables: d(\n\t\t\t\"\", (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill(\"unscopables\")\n\t\t)\n\t});\n};\n","\"use strict\";\n\nvar d = require(\"d\")\n , validateSymbol = require(\"../../../validate-symbol\");\n\nvar registry = Object.create(null);\n\nmodule.exports = function (SymbolPolyfill) {\n\treturn Object.defineProperties(SymbolPolyfill, {\n\t\tfor: d(function (key) {\n\t\t\tif (registry[key]) return registry[key];\n\t\t\treturn (registry[key] = SymbolPolyfill(String(key)));\n\t\t}),\n\t\tkeyFor: d(function (symbol) {\n\t\t\tvar key;\n\t\t\tvalidateSymbol(symbol);\n\t\t\tfor (key in registry) {\n\t\t\t\tif (registry[key] === symbol) return key;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t})\n\t});\n};\n","'use strict';(function(r){function x(){}function y(){}var z=String.fromCharCode,v={}.toString,A=v.call(r.SharedArrayBuffer),B=v(),q=r.Uint8Array,t=q||Array,w=q?ArrayBuffer:t,C=w.isView||function(g){return g&&\"length\"in g},D=v.call(w.prototype);w=y.prototype;var E=r.TextEncoder,a=new (q?Uint16Array:t)(32);x.prototype.decode=function(g){if(!C(g)){var l=v.call(g);if(l!==D&&l!==A&&l!==B)throw TypeError(\"Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'\");\ng=q?new t(g):g||[]}for(var f=l=\"\",b=0,c=g.length|0,u=c-32|0,e,d,h=0,p=0,m,k=0,n=-1;b>4){case 15:m=g[b=b+1|0]&255;if(2!==m>>6||247>6?p+4|0:24,d=d+256&768;case 13:case 12:m=g[b=b+1|0]&255,h<<=6,h|=(d&31)<<6|m&63,p=p+7|0,b>6&&h>>p&&1114112>h?(d=h,h=h-65536|0,0<=h&&(n=(h>>10)+55296|0,d=(h&1023)+56320|0,31>k?(a[k]=n,k=k+1|0,n=-1):\n(m=n,n=d,d=m))):(d>>=8,b=b-d-1|0,d=65533),h=p=0,e=b<=u?32:c-b|0;default:a[k]=d;continue;case 11:case 10:case 9:case 8:}a[k]=65533}f+=z(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18],a[19],a[20],a[21],a[22],a[23],a[24],a[25],a[26],a[27],a[28],a[29],a[30],a[31]);32>k&&(f=f.slice(0,k-32|0));if(b>>31,n=-1,f.length=e)f[c]=e;else{if(2047>=e)f[c]=192|e>>6;else{a:{if(55296<=e)if(56319>=e){var d=g.charCodeAt(b=b+1|0)|0;if(56320<=d&&57343>=d){e=(e<<10)+d-56613888|0;if(65535>18;f[c=c+1|0]=128|e>>12&63;f[c=c+1|0]=128|e>>6&63;f[c=c+1|0]=128|e&63;continue}break a}e=65533}else 57343>=e&&(e=65533);!u&&b<<1>12;f[c=c+1|0]=128|e>>6&63}f[c=c+1|0]=128|e&63}}return q?\nf.subarray(0,c):f.slice(0,c)};E||(r.TextDecoder=x,r.TextEncoder=y)})(\"\"+void 0==typeof global?\"\"+void 0==typeof self?this:self:global);//AnonyCo\n//# sourceMappingURL=https://cdn.jsdelivr.net/gh/AnonyCo/FastestSmallestTextEncoderDecoder/EncoderDecoderTogether.min.js.map\n","if (!Element.prototype.toggleAttribute) {\n Element.prototype.toggleAttribute = function(name, force) {\n if(force !== void 0) force = !!force \n \n if (this.getAttribute(name) !== null) {\n if (force) return true;\n \n this.removeAttribute(name);\n return false;\n } else {\n if (force === false) return false;\n \n this.setAttribute(name, \"\");\n return true;\n }\n };\n }","module.exports = __webpack_public_path__ + \"_SiteHeader-static.html\";","module.exports = __webpack_public_path__ + \"_SiteHeader-logged-in-static.html\";","module.exports = __webpack_public_path__ + \"_SiteFooter-static.html\";"],"sourceRoot":""}