{"version":3,"sources":["app-react/services/location/uri-path/uri-path.ts","app-react/services/location/location.service.ts","app-react/services/mini-orbit/mini-orbit-consts.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","app-react/services/storage/local-storage.service.ts","app-react/services/logger/console-logger.service.ts","../node_modules/object-assign/index.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","orbit-version.ts","app-react/services/window/window.service.ts","app-react/app-bootstrap/constants.ts","app-react/services/location/uri-hash/uri-hash.ts","app-react/services/location/uri/uri.ts","../node_modules/@babel/runtime/helpers/esm/extends.js","app-react/themes/css-global-classes.ts","../node_modules/prop-types/index.js","app-react/services/location/uri-params/uri-params.ts","utils/event-listener-registration.ts","app-react/services/storage/storage-service-base.ts","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/webpack/buildin/global.js","utils/url-utils.ts","../node_modules/json-override/json-override.js"],"names":["UriPath","path","_path","this","trim","parts","toString","split","filter","part","theOther","Check","isNullOrUndefined","_appendSlashToTheEnd","toLowerCase","urlWithoutTrailingSlashes","substring","length","replace","HOME_PAGE","url","other","p1","p2","equals","ORBIT_LOCATION_OVERRIDE_BASE","LocationService","observable","ref","action","bound","_window","_localStorage","_sendTechnicalEvent","_previousUri","_onBeforeChangingLocationSubscribers","_lastUpdateCurrentUriPromise","Promise","resolve","_initCurrentUri","_checkUrlIsNullString","location","pathname","addEventListener","_updateCurrentUriAsync","newUri","currentUri","_setCurrentUri","_createNewUriForCurrentLocation","href","history","replaceState","basePathName","pathName","getBase","setItem","locationOverride","sanitizeUrl","tryParseUrl","_applyLocationOverride","targetUri","forEach","handler","err","console","error","_fireOnBeforeChangingLocation","reject","setTimeout","push","newUrl","isAbsolutUrl","Boolean","search","hash","historyApiCallback","_isRedirectUrl","redirect","_isSameAsCurrentUrl","_executeNavigation","pushState","index","go","parsedUrl","origin","Uri","URL","_tryDecodeUrl","e","decodeUriComponentRecursive","partialUri","candidate","functionName","message","Error","document","referrer","stack","_getLocationOverrideStrategy","overrideLocation","basePath","getItem","LocationOverrideStrategy","NoLocationOverrideStrategy","isHomePage","_basePath","startsWith","_tryParseUrl","append","isEmpty","MINI_CIP_BASE_ROUTE","MINI_CIS_BASE_ROUTE","isMiniOrbitBasePath","_objectWithoutPropertiesLoose","source","excluded","key","i","target","sourceKeys","Object","keys","indexOf","LocalStorageService","logger","localStorage","StorageServiceBase","LOG_LEVELS","ConsoleLoggerService","_debugMode","errorLogs","optionalParams","_log","_addErrorLog","severity","_isConsoleEnabled","toUpperCase","window","splice","date","Date","errorDetails","getOwnPropertySymbols","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","undefined","TypeError","module","exports","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","n","join","test3","letter","shouldUseNative","from","symbols","to","s","arguments","call","_inheritsLoose","subClass","superClass","create","constructor","__proto__","ORBIT_VERSION","WindowService","_eventListenerRegistration","EventListenerRegistration","name","value","element","getComputedStyle","parseInt","width","elementTransform","getPropertyValue","innerWidth","innerHeight","features","open","x","y","scrollTo","scrollY","scrollBy","height","elementStyle","CGP_OBJECT_NAME","UriHash","_hash","_tryDecodeHash","h1","h2","_originalUrl","_pathName","_queryParams","UriParams","hostname","queryParams","paramName","newQueryParams","removeParam","u1","u2","_extends","apply","LOBBY_PAGE","SLOTS_PAGE","BLACKJACK_PAGE","ROULETTE_PAGE","JACKPOTS_PAGE","CASINO_GAMES_PAGE","PROGRESSIVE_VIDEO_SLOTS_PAGE","NEW_GAMES_PAGE","GAMING_HISTORY_PAGE","SESSION_HISTORY_PAGE","CHALLENGE_PAGE","LIVE_CASINO_PAGE","VIDEO_POKER_PAGE","SCRATCH_CARDS_PAGE","EXCLUSIVE_888_GAMES_PAGE","NEW_LIVE_CASINO_PAGE","INSTANT_WIN_GAMES_PAGE","VIRTUAL_SPORTS_PAGE","ORBIT_TAP","CGP_GAME_OPEN","JACKPOTS_ITEM","LIVE_CASINO_ITEM","LIVE_STREAMING_ITEM","STATIC_VIDEO_ITEM","EXCLUSIVES_LIST_ICON","MOVE_TOP","STICKY","ORBIT_OVERLAY_OPEN","CGP_OVERLAY_OPEN","EMBEDDED_HYBRID","MODAL_DIALOG","MAIN_SCREEN","MINI_ORBIT","USER_MENU_OPEN","ACTIVE","LIVE_CASINO_PAGE_WRAPPER","OPEN_MENU","DRAGGING","SDK_CSS_OVERRIDE","require","queryParamsString","_params","paramString","keyValue","slice","originalName","values","paramDescriptor","allParams","getAllParams","p","clonedParams","keys1","keys2","_element","unload","_subscribe","eventName","dispose","removeEventListener","storage","JSON","parse","stringify","removeItem","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","g","Function","overrideJson","decodedUrl","decodeURIComponent","encodeUriRecursive","isString","encodeURI","safeUriEncode","isObject","obj","clone","encodeUriPropsForObject","isArray","arr","encodeUriPropsForArray","joinUrlParts","baseUrl","urlBuilder","addQueryParam","queryParam","includes","isObjectAndNotArray","Array","overwriteKeys","baseObject","overrideObject","createNew"],"mappings":";6KAGaA,EAAb,WACE,WAAYC,GAAe,yBAIVC,WAJS,EACxBC,KAAKD,OAASD,GAAQ,KAAKG,OAF/B,4CAME,WACE,MAAqB,MAAlBD,KAAKD,MAAM,GACL,IAAMC,KAAKD,MAGbC,KAAKD,QAXhB,qBAcE,WACE,IAAIG,EAAQF,KAAKG,WAAWC,MAAM,KAClC,OAAO,IAAIP,EAAQK,EAAM,GAAI,IAAMA,EAAM,MAhB7C,qBAmBE,WACE,IAAIA,EAAQF,KAAKG,WAAWC,MAAM,KAAKC,QAAO,SAAAC,GAAI,OAAIA,KACtD,MAAM,CAAE,KAAR,mBAAgBJ,MArBpB,oBAwBE,SAAOK,GACL,OAAGC,QAAMC,kBAAkBF,IAGpBP,KAAKU,qBAAqBV,KAAKG,YAAYQ,gBAAkBX,KAAKU,qBAAqBH,EAASJ,YAAYQ,gBA5BvH,mBA+BE,WACE,MAAsB,MAAfX,KAAKD,QAhChB,4BAmCE,WAEE,IAAIa,EAA4BZ,KAAKG,WAWrC,MAToC,MAAjCS,EAA0B,KAC3BA,EAA4BA,EAA0BC,UAAU,IAGK,MAApED,EAA0BA,EAA0BE,OAAS,KAC9DF,EAA4BA,EAA0BC,UAAU,EAAGD,EAA0BE,OAAS,IAIrGF,EACMA,EAA0BD,cAAcI,QAAQ,MAAO,KAAO,QAE9DC,MAnDb,kCAmEE,SAA6BC,GAK3B,MAJ2B,MAAxBA,EAAIA,EAAIH,OAAS,KAClBG,GAAY,KAGPA,IAxEX,oBA2EE,SAAOC,GAOL,OANKA,aAAiBrB,IACpBqB,EAAQ,IAAIrB,EAAQqB,IAKf,IAAIrB,GAASG,KAAKG,WAAae,EAAMf,YAAYY,QAAQ,QAAS,SAlF7E,wBAuDE,SAAiBI,EAAaC,GAC5B,OAAGZ,QAAMC,kBAAkBU,KACtBX,QAAMC,kBAAkBW,GAMpBD,EAAGE,OAAOD,OA/DvB,M,0LCIaE,EAA+B,+BAG/BC,GAAb,EAcGC,IAAWC,IAdd,EAgBGC,IAAOC,MAhBV,aAEE,WAAoBC,EAAkCC,EAAwCC,GAA8E,IAAD,gCAAvJF,UAAuJ,KAArHC,gBAAqH,KAA7EC,sBAA6E,KAWnKC,aAAoB,KAX+I,2CAmEnKC,qCAAwE,GAnE2F,KAoFnKC,6BAA8CC,QAAQC,UAnF5DnC,KAAKoC,kBAELpC,KAAKqC,sBAAsBrC,KAAK4B,QAAQU,SAASC,SAAU,eAE3DvC,KAAK4B,QAAQY,iBAAiB,YAAY,WACxC,EAAKH,sBAAsB,EAAKT,QAAQU,SAASC,SAAU,YAC3D,EAAKE,4BATX,kDAgBE,SACuBC,GACrB1C,KAAK+B,aAAe/B,KAAK2C,WACzB3C,KAAK2C,WAAaD,IAnBtB,6BAuBE,WACE1C,KAAK4C,eAAe5C,KAAK6C,mCACtB7C,KAAK4B,QAAQU,SAASQ,OAAS9C,KAAK2C,WAAWxC,YAC9CH,KAAK4B,QAAQmB,QAAQC,aAAa,KAAM,GAAIhD,KAAK2C,WAAWxC,cA1BpE,oCA8BE,WACE,IAAM8C,EAAejD,KAAK2C,WAAWO,SAASC,UAAUhD,WAAWQ,cACnEX,KAAK6B,cAAcuB,QAAQ9B,EAA8B2B,EAAa9C,cAhC1E,6CAmCE,WACE,IAAIkD,EAAmBC,YAAYtD,KAAK4B,QAAQU,SAASQ,MACzD,OAAO9C,KAAKuD,YAAYvD,KAAKwD,uBAAuBH,MArCxD,2CAwCE,SAAsCI,GACpCzD,KAAKgC,qCAAqC0B,SAAQ,SAAAC,GAChD,IACEA,EAAQF,GACR,MAAOG,GACPC,QAAQC,MAAM,2CAA4CF,SA7ClE,oCAiDE,WAAiD,IAAD,OAC1ClB,EAAS1C,KAAK6C,kCAKlB,OAHA7C,KAAK+D,8BAA8BrB,GAG5B,IAAIR,SAAc,SAACC,EAAS6B,GAEjCC,YAAW,WACT,IACE,EAAKrB,eAAeF,GACpBP,IACA,MAAOyB,GACPI,EAAOJ,MAER,QAhET,sCAsEE,SAAyBD,GACvB3D,KAAKgC,qCAAqCkC,KAAKP,KAvEnD,iCA2EE,SAA4BQ,GAQ1B,OALGC,YAAaD,GACLE,QAAQrE,KAAK4B,QAAQU,SAASQ,OAASqB,GAEvCE,QAAQF,IAAWnE,KAAK4B,QAAQU,SAASC,SAAWvC,KAAK4B,QAAQU,SAASgC,OAAStE,KAAK4B,QAAQU,SAASiC,QAjFxH,gCAuFE,SAA2BtD,EAAauD,GAMtC,GAJAvD,GADAA,GAAOA,GAAO,IAAIhB,SACL,IAEbD,KAAKqC,sBAAsBpB,EAAK,QAE7BjB,KAAKyE,eAAexD,GACrB,OAAOjB,KAAK0E,SAASzD,GAGrB,IAAMkD,EAASnE,KAAKwD,uBAAuBvC,GAY3C,OAVIjB,KAAK2E,oBAAoBR,IAC3BK,EAAmBL,GAGjBnE,KAAK2E,oBAAoB3E,KAAK2C,WAAWxC,cAC3CH,KAAKiC,6BAA+BjC,KAAKyC,0BAKpCzC,KAAKiC,+BA7GlB,kBA6HE,SAAKhB,GAA6B,IAAD,OAC/B,OAAOjB,KAAK4E,mBAAmB3D,GAAK,SAACkD,GAAD,OAAY,EAAKvC,QAAQmB,QAAQ8B,UAAU,KAAM,GAAIV,QA9H7F,mCAiIE,SAAsBlD,GACpBjB,KAAK4B,QAAQmB,QAAQ8B,UAAU,KAAM,GAAI5D,KAlI7C,oBAqIE,WAAmB,IAAZ6D,EAAW,wDAAF,EACd9E,KAAK4B,QAAQmB,QAAQgC,GAAGD,KAtI5B,qBAkJE,SAAQ7D,GAA6B,IAAD,OAClC,OAAOjB,KAAK4E,mBAAmB3D,GAAK,SAACkD,GAAD,OAAY,EAAKvC,QAAQmB,QAAQC,aAAa,KAAM,GAAImB,QAnJhG,sBAuJE,SAASlD,GAEP,OADAjB,KAAK4B,QAAQU,SAASQ,KAAO7B,EACtBiB,QAAQC,YAzJnB,oBA4JE,WACE,OAAOnC,KAAKkE,KAAK,OA7JrB,4BAkKE,SAAuBjD,GACrB,GAAGA,GAAkB,MAAXA,EAAI,GACZ,OAAO,EAGT,IAAI+D,EAAYhF,KAAKuD,YAAYtC,GACjC,SAAG+D,GAAaA,EAAUC,OAAOtE,gBAAkBX,KAAK2C,WAAWsC,OAAOtE,iBAxK9E,gCA+KE,WACE,QAAGX,KAAK+B,eAhLZ,yBAsLE,SAAYd,GACV,IACE,OAAO,IAAIiE,IAAI,IAAIC,IAAInF,KAAKoF,cAAcnE,KAC1C,MAAOoE,GACP,OAAO,QA1Lb,2BA8LE,SAAsBpE,GACpB,IACE,OAAOqE,YAA4BrE,GACnC,MAAM2C,GAEN,OADAC,QAAQC,MAAM,yBAA2B7C,GAClCA,KAnMb,0BAuME,SAAasE,GACX,IAAMC,GAAsB,OAAVD,QAAU,IAAVA,OAAA,EAAAA,EAAYpF,aAAc,IAC5C,OAAO,IAAI+E,IAAI,IAAIC,IAAIK,EAAWxF,KAAK2C,WAAWxC,eAzMtD,mCA4ME,SAA8Bc,EAAawE,GAEzC,IACE,GAAW,UAARxE,GAA2B,SAARA,GAA0B,WAARA,GAA4B,UAARA,EAAiB,CAC3E,IAAIyE,EAAU,IAAIC,MAAJ,sCAAyCF,EAAzC,6BAA0EzF,KAAK4B,QAAQU,SAASQ,KAAhG,+BAA2H8C,SAASC,WAAYC,MAC3J9F,KAAK8B,qBACN9B,KAAK8B,oBAAoB,sBAAuB2D,EAAcC,GAGhE7B,QAAQC,MAAM4B,IAGhB,MAAO9B,GACPC,QAAQC,MAAM,+BAAgCF,MAzNpD,oCA8NE,SAA+B3C,GAC3B,OAAOjB,KAAK+F,+BAA+BC,iBAAiB/E,KA/NlE,0CAmOE,WACE,IAAMgF,EAAWjG,KAAK6B,cAAcqE,QAAQ5E,GAC5C,OAAG2E,EACM,IAAIE,EAAyBF,GAE3B,IAAIG,IAxOnB,sBA4OE,WACE,OAAOpG,KAAK+F,+BAA+BM,WAAWrG,KAAK2C,WAAWO,cA7O1E,yHAcoC,QAdpC,2HAuPMiD,E,WAEF,WAAYF,GAAmB,yBAIdK,eAJa,EAC5BtG,KAAKsG,UAAY,IAAIzG,IAAQoG,EAAStF,e,8CAKxC,SAAWuC,GACT,OAAOlD,KAAKsG,UAAUjF,OAAO6B,K,8BAG/B,SAAiBjC,GACb,GAAIA,EAAIsF,WAAW,KACf,OAAOtF,EAGX,IAAIkD,EAASnE,KAAKwG,aAAavF,GAC/B,OAAGkD,GACMA,EAAO5B,SAAS5B,cAAc4F,WAAWvG,KAAKsG,UAAUnG,cACzDgE,EAAO5B,SAAWvC,KAAKsG,UAAUG,OAAOtC,EAAO5B,UAAUpC,YAGtDmD,YAAYa,EAAOrB,KAAK3C,aAE7Bc,EAAIN,cAAc4F,WAAWvG,KAAKsG,UAAUnG,YAK3Cc,EAJIjB,KAAKsG,UAAUG,OAAOxF,GAAKd,a,0BAO1C,SAAqBc,GACnB,IACE,OAAO,IAAIkE,IAAIlE,GACf,MAAOoE,GACL,OAAO,U,KAOXe,E,0FACF,SAAWlD,GACP,OAAOA,EAASwD,U,8BAGpB,SAAiBzF,GACf,OAAOA,M,uCCnTb,sGAAO,IAAM0F,EAAsB,OACtBC,EAAsB,OAE5B,SAASC,EAAoBZ,GAEhC,OAAIA,IAAaU,GAIbV,IAAaW,I,iCCTN,SAASE,EAA8BC,EAAQC,GAC5D,GAAc,MAAVD,EAAgB,MAAO,GAC3B,IAEIE,EAAKC,EAFLC,EAAS,GACTC,EAAaC,OAAOC,KAAKP,GAG7B,IAAKG,EAAI,EAAGA,EAAIE,EAAWtG,OAAQoG,IACjCD,EAAMG,EAAWF,GACbF,EAASO,QAAQN,IAAQ,IAC7BE,EAAOF,GAAOF,EAAOE,IAGvB,OAAOE,EAZT,mC,8FCGaK,EAAb,kDACE,WAAYC,GAAyB,uCAC7BC,aAAcD,GAFxB,U,OAAyCE,I,uECDpCC,E,yBAAAA,O,iBAAAA,I,eAAAA,I,eAAAA,I,kBAAAA,M,KAOE,IAAMC,EAAb,WAEE,WAAoBC,GAAsB,yBAAtBA,aAAqB,KAIzCC,UAAwB,GAN1B,yCAQE,SAAMrC,GAAkD,IAAD,uBAA7BsC,EAA6B,iCAA7BA,EAA6B,kBACrDhI,KAAKiI,KAAK,QAASvC,EAASsC,KAThC,kBAYE,SAAKtC,GAAkD,IAAD,uBAA7BsC,EAA6B,iCAA7BA,EAA6B,kBACpDhI,KAAKiI,KAAK,OAAQvC,EAASsC,KAb/B,qBAgBE,SAAQtC,GAAkD,IAAD,uBAA7BsC,EAA6B,iCAA7BA,EAA6B,kBACvDhI,KAAKiI,KAAK,OAAQvC,EAASsC,KAjB/B,mBAoBE,SAAMtC,GAAkD,IAAD,uBAA7BsC,EAA6B,iCAA7BA,EAA6B,kBACrDhI,KAAKkI,aAAaxC,EAASsC,GAE3BhI,KAAKiI,KAAK,QAASvC,EAASsC,KAvBhC,kBA+BE,SAAcG,EAAkBzC,GAC9B,GAAI1F,KAAKoI,kBAAkBD,EAASE,eAAgB,CAAC,IAAD,uBADFL,EACE,iCADFA,EACE,kBAClDnE,QAAQsE,GAAUzC,EAASsC,MAjCjC,+BAqCE,SAA0BG,GACxB,OAAQP,EAAWO,IAAaP,EAAWU,OAAM,aAtCrD,0BAyCE,SAAqB5C,GACnB,GAAI1F,KAAK8H,WAAT,CAI8B,KAA1B9H,KAAK+H,UAAUjH,QACjBd,KAAK+H,UAAUQ,OAAO,EAAG,GANmC,2BAAvBP,EAAuB,iCAAvBA,EAAuB,kBAS9DhI,KAAK+H,UAAU7D,KAAK,CAACwB,QAASA,EAAS8C,KAAM,IAAIC,KAAQC,aAAcV,SAlD3E,M,iCCDA,IAAIW,EAAwBtB,OAAOsB,sBAC/BC,EAAiBvB,OAAOwB,UAAUD,eAClCE,EAAmBzB,OAAOwB,UAAUE,qBAExC,SAASC,EAASC,GACjB,GAAY,OAARA,QAAwBC,IAARD,EACnB,MAAM,IAAIE,UAAU,yDAGrB,OAAO9B,OAAO4B,GA+CfG,EAAOC,QA5CP,WACC,IACC,IAAKhC,OAAOiC,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzClC,OAAOoC,oBAAoBF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIG,EAAQ,GACHxC,EAAI,EAAGA,EAAI,GAAIA,IACvBwC,EAAM,IAAMF,OAAOG,aAAazC,IAAMA,EAKvC,GAAwB,eAHXG,OAAOoC,oBAAoBC,GAAOE,KAAI,SAAUC,GAC5D,OAAOH,EAAMG,MAEHC,KAAK,IACf,OAAO,EAIR,IAAIC,EAAQ,GAIZ,MAHA,uBAAuB3J,MAAM,IAAIsD,SAAQ,SAAUsG,GAClDD,EAAMC,GAAUA,KAGf,yBADE3C,OAAOC,KAAKD,OAAOiC,OAAO,GAAIS,IAAQD,KAAK,IAM9C,MAAOlG,GAER,OAAO,GAIQqG,GAAoB5C,OAAOiC,OAAS,SAAUnC,EAAQJ,GAKtE,IAJA,IAAImD,EAEAC,EADAC,EAAKpB,EAAS7B,GAGTkD,EAAI,EAAGA,EAAIC,UAAUxJ,OAAQuJ,IAAK,CAG1C,IAAK,IAAIpD,KAFTiD,EAAO7C,OAAOiD,UAAUD,IAGnBzB,EAAe2B,KAAKL,EAAMjD,KAC7BmD,EAAGnD,GAAOiD,EAAKjD,IAIjB,GAAI0B,EAAuB,CAC1BwB,EAAUxB,EAAsBuB,GAChC,IAAK,IAAIhD,EAAI,EAAGA,EAAIiD,EAAQrJ,OAAQoG,IAC/B4B,EAAiByB,KAAKL,EAAMC,EAAQjD,MACvCkD,EAAGD,EAAQjD,IAAMgD,EAAKC,EAAQjD,MAMlC,OAAOkD,I,iCCxFO,SAASI,EAAeC,EAAUC,GAC/CD,EAAS5B,UAAYxB,OAAOsD,OAAOD,EAAW7B,WAC9C4B,EAAS5B,UAAU+B,YAAcH,EACjCA,EAASI,UAAYH,EAHvB,mC,iCCAA,kCAAO,IAAMI,EAAgB,Y,wHCehBC,EAAb,WAEE,aAAe,yBA+BEC,gCA/BH,EACZhL,KAAKgL,2BAA6B,IAAIC,IAA0B3C,QAHpE,qDAOE,SAAkB4C,GAChB,OAAO5C,OAAO4C,KARlB,+BAWE,SAAkBA,EAAcC,GAC9B7C,OAAO4C,GAAQC,IAZnB,8BAeE,SAAiBC,GACf,OAAO9C,OAAO+C,iBAAiBD,KAhBnC,6BAmBE,SAAgBA,GACd,OAAOE,SAAStL,KAAKqL,iBAAiBD,GAASG,MAAMxK,QAAQ,KAAM,OApBvE,mDAuBE,SAAsCqK,GACpC,IAAII,EAAmBxL,KAAKqL,iBAAiBD,GAASK,iBAAiB,sBAAwBnD,OAAO+C,iBAAiBD,GAASK,iBAAiB,aAEjJ,OAAOH,SAASE,EAAiBpL,MAAM,KAAK,KAAOoL,EAAiBpL,MAAM,KAAK,KAAO,IA1B1F,oBA6BE,WACE,OAAOkI,OAAOhG,WA9BlB,uBAmCE,WACE,OAAOtC,KAAKgL,6BApChB,sBAuCE,WACE,OAAO1C,OAAOoD,aAxClB,uBA2CE,WACE,OAAOpD,OAAOqD,cA5ClB,kBA+CE,SAAK1K,EAAckG,EAAiByE,GAClCtD,OAAOuD,KAAK5K,EAAKkG,EAAQyE,KAhD7B,sBAmDE,SAAS3K,GACPjB,KAAK6L,KAAK5K,EAAK,WApDnB,kBAuDE,WACE,OAAOqH,OAAOhG,SAAS2C,SAxD3B,oBA2DE,WACE,OAAOqD,OAAOhG,SAASC,WA5D3B,mBA+DE,WACE,OAAO+F,OAAOvF,UAhElB,sBAmEE,SAAS+I,EAAWC,GAClBzD,OAAO0D,SAASF,EAAGC,KApEvB,mBAuEE,WACE,OAAOzD,OAAO2D,UAxElB,sBA2EE,SAASH,EAAWC,GAClBzD,OAAO4D,SAASJ,EAAGC,KA5EvB,0BA+EE,SAAa9K,GACX,OAAOmD,YAAanD,KAhFxB,6BAmFE,SAAgBmK,GACd,GAAI5K,QAAMC,kBAAkB2K,GAC1B,MAAO,CACLG,MAAO,EACPY,OAAQ,GAIZ,IAAMC,EAAoBpM,KAAKqL,iBAAiBD,GAChD,MAAO,CACLG,MAAOD,SAASc,EAAab,MAAMxK,QAAQ,KAAM,KACjDoL,OAAQb,SAASc,EAAaD,OAAOpL,QAAQ,KAAM,QA9FzD,+BAkGE,WACE,OAAOuH,OAAOuD,KAAK,cAAe,cAnGtC,M,iCCfA,kCAAO,IAAMQ,EAAkB,O,wHCGlBC,EAAb,WACE,WAAY/H,GAAe,yBAgBnBgI,WAhBkB,EACxBvM,KAAKuM,MAAQvM,KAAKwM,eAAejI,GAAQ,IACvB,MAAfvE,KAAKuM,QACNvM,KAAKuM,MAAQ,IAJnB,uCASE,WACE,MAAqB,MAAlBvM,KAAKuM,MAAM,GACLvM,KAAKuM,MAAM1L,UAAU,GAErBb,KAAKuM,QAblB,sBAmBE,WACE,OAAIvM,KAAKuM,MAIY,MAAlBvM,KAAKuM,MAAM,GACLvM,KAAKuM,MAEL,IAAMvM,KAAKuM,MANXvM,KAAKuM,QArBlB,oBA2CE,SAAOhM,GACL,OAAGC,QAAMC,kBAAkBF,IAIpBP,KAAKG,WAAWQ,gBAAkBJ,EAASJ,WAAWQ,gBAhDjE,mBAmDE,WACE,OAAOH,QAAMkG,QAAQ1G,KAAKuM,SApD9B,4BAuDE,SAAuBhI,GACrB,IACE,OAAOe,YAA4Bf,GACnC,MAAMX,GAEN,OADAC,QAAQC,MAAM,0BAA4BS,GACnCA,MA5Db,wBA+BE,SAAiBkI,EAAaC,GAC5B,OAAGlM,QAAMC,kBAAkBgM,KACtBjM,QAAMC,kBAAkBiM,GAMpBD,EAAGpL,OAAOqL,OAvCvB,KCGaxH,EAAb,WAEE,WAAYjE,GAAW,yBAOf0L,kBAPc,OAiBLC,eAjBK,OAsBLC,kBAtBK,OA2BLN,WA3BK,EACpBvM,KAAK2M,aAAe1L,EACpBjB,KAAK4M,UAAY,IAAI/M,IAAQG,KAAK2M,aAAapK,UAC/CvC,KAAK6M,aAAe,IAAIC,IAAU9M,KAAK2M,aAAarI,QACpDtE,KAAKuM,MAAQ,IAAID,EAAQtM,KAAK2M,aAAapI,MAN/C,0CAWE,WACE,OAAOvE,KAAK2M,aAAaI,SAASpM,gBAZtC,kBAeE,WACE,OAAOX,KAAK2M,aAAa1H,OAAOtE,gBAhBpC,oBAoBE,WACE,OAAOX,KAAK4M,YArBhB,uBAyBE,WACE,OAAO5M,KAAK6M,eA1BhB,gBA8BE,WACE,OAAO7M,KAAKuM,QA/BhB,sBAkCE,WAEE,OADiBjJ,YAAYtD,KAAK2M,aAAa7J,QAnCnD,oBAuCE,SAAOvC,GACL,OAAGC,QAAMC,kBAAkBF,KAIpBP,KAAKiF,SAAW1E,EAAS0E,QACvBjF,KAAKkD,SAAS7B,OAAOd,EAAS2C,WAC9BlD,KAAKgN,YAAY3L,OAAOd,EAASyM,cACjChN,KAAKuE,KAAKlD,OAAOd,EAASgE,SA/CvC,+BAkDE,WACE,OAAOvE,KAAK2M,aAAa1H,OAASjF,KAAK2M,aAAapK,SAAWvC,KAAK2M,aAAarI,SAnDrF,+BAsDE,SAAkB2I,GAChB,IAAIC,EAAiBlN,KAAKgN,YAAYG,YAAYF,GAAW9M,WAC7D,OAAO,IAAI+E,EAAI,IAAIC,IAAInF,KAAK2M,aAAa1H,OAASjF,KAAK2M,aAAapK,SAAW2K,EAAiBlN,KAAK2M,aAAapI,SAxDtH,wCA2DE,WACE,OAAOvE,KAAK2M,aAAa1H,OAASjF,KAAK2M,aAAapK,YA5DxD,wBA+DE,SAAiB6K,EAASC,GACxB,OAAG7M,QAAMC,kBAAkB2M,KACtB5M,QAAMC,kBAAkB4M,GAMpBD,EAAG/L,OAAOgM,OAvEvB,M,gCCNe,SAASC,IAetB,OAdAA,EAAWjG,OAAOiC,QAAU,SAAUnC,GACpC,IAAK,IAAID,EAAI,EAAGA,EAAIoD,UAAUxJ,OAAQoG,IAAK,CACzC,IAAIH,EAASuD,UAAUpD,GAEvB,IAAK,IAAID,KAAOF,EACVM,OAAOwB,UAAUD,eAAe2B,KAAKxD,EAAQE,KAC/CE,EAAOF,GAAOF,EAAOE,IAK3B,OAAOE,IAGOoG,MAAMvN,KAAMsK,WAf9B,mC,gCCAA,g1CAAO,IAAMtJ,EAAY,YACZwM,EAAa,aACbC,EAAa,aACbC,EAAiB,iBACjBC,EAAgB,gBAChBC,EAAgB,gBAChBC,EAAoB,oBACpBC,EAA+B,+BAC/BC,EAAiB,iBACjBC,EAAsB,sBACtBC,EAAuB,uBACvBC,EAAiB,iBACjBC,EAAmB,mBACnBC,EAAmB,mBACnBC,EAAqB,qBACrBC,EAA2B,sBAC3BC,EAAuB,uBACvBC,EAAyB,yBACzBC,EAAsB,sBAEtBC,EAAY,YACZC,EAAgB,gBAChBC,EAAgB,gBAChBC,EAAmB,mBAEnBC,EAAsB,sBACtBC,EAAoB,oBAEpBC,EAAuB,uBAEvBC,EAAW,WACXC,EAAS,SACTC,EAAqB,qBACrBC,EAAmB,mBACnBC,EAAmB,sBACnBC,EAAe,eACfC,EAAc,cACdC,EAAc,aACdC,EAAkB,iBAClBC,EAAS,SACTC,EAA2B,2BAC3BC,EAAY,YACZC,EAAW,WACXC,EAAmB,oB,mBC1B9B1G,EAAOC,QAAU0G,EAAQ,IAARA,I,sGCVNjD,EAAb,WAEE,WAAYkD,GAA4B,IAAD,gCAwB/BC,QAAgD,GApB1B,OAH5BD,GAAqBA,GAAqB,IAAI/P,QAGzB,KACnB+P,EAAoBA,EAAkBnP,UAAU,IAG/CmP,GACCA,EAAkB5P,MAAM,KAAKsD,SAAQ,SAAAwM,GACjC,IAAIC,EAAWD,EAAY9P,MAAM,KAC7B6G,EAAMkJ,EAAS,GACfhF,EAAQgF,EAAS,GAClBA,EAASrP,OAAS,IACnBqK,EAAQgF,EAASC,MAAM,GAAGtG,KAAK,MAEjC,EAAKmG,QAAQhJ,EAAItG,eAAiB,CAC9B0P,aAAcpJ,EACdkE,MAAOA,MApBvB,gDA4BE,WACE,OAAO9D,OAAOiJ,OAAOtQ,KAAKiQ,WA7B9B,2BAgCE,SAAchD,GACZ,IAAIsD,EAAkBvQ,KAAKiQ,QAAQhD,EAAUtM,eAC7C,GAAI4P,EAGJ,OAAOjL,YAA4BiL,EAAgBpF,SArCvD,sBAwCE,WACE,IAAMqF,EAAYxQ,KAAKyQ,eACvB,OAAwB,IAArBD,EAAU1P,OACJ,GAEF,IAAM0P,EAAU5G,KAAI,SAAA8G,GAAC,OAAIA,EAAEL,aAAe,IAAMK,EAAEvF,SAAOrB,KAAK,OA7CzE,yBAgDE,SAAYmD,GACV,IAAI0D,EAAY,eAAO3Q,KAAKiQ,SAM5B,cALOU,EAAY,OAAC1D,QAAD,IAACA,OAAD,EAACA,EAAWtM,eAKxB,IAAImM,EAJYzF,OAAOC,KAAKqJ,GAAc/G,KAAI,SAAAqD,GACjD,IAAMsD,EAAkBI,EAAa1D,GACrC,MAAM,GAAN,OAAUsD,EAAgBF,aAA1B,YAA0CE,EAAgBpF,UAE1BrB,KAAK,QAvD7C,sBA0DE,SAASoB,GACP,OAAO7G,QAAQrE,KAAKiQ,QAAQ/E,EAAKvK,kBA3DrC,sBA8DE,SAASuK,EAAcC,GACrBnL,KAAKiQ,QAAQ/E,EAAKvK,eAAiB,CACjC0P,aAAcnF,EACdC,MAAOA,KAjEb,oBAqEE,SAAO5K,GACL,IAAIqQ,EAAQvJ,OAAOC,KAAKtH,KAAKiQ,SACzBY,EAAQxJ,OAAOC,KAAK/G,EAAS0P,SAEjC,GAAGW,EAAM9P,SAAW+P,EAAM/P,OACxB,OAAO,EAGT,IAAI,IAAIoG,EAAI,EAAGA,EAAI0J,EAAM9P,OAAQoG,IAAK,CACpC,IAAI+F,EAAY2D,EAAM1J,GAGtB,GAFWlH,KAAKiQ,QAAQhD,GAAW9B,SACxB5K,EAAS0P,QAAQhD,IAAc1M,EAAS0P,QAAQhD,GAAW9B,OAEpE,OAAO,EAIX,OAAO,IAtFX,mBAyFE,WACE,OAAsC,IAA/BnL,KAAKyQ,eAAe3P,WA1F/B,M,sFCHamK,EAAb,WACE,WAAYG,GAAe,IAAD,gCAIlB0F,cAJkB,OAmC1BC,OAAS,SAACpN,GAOR,OAAO,EAAKqN,WAAW,WAAYrN,IA1CX,KA6ChBqN,WAAa,SAACC,EAAmBtN,GAEzC,OADA,EAAKmN,SAAStO,iBAAiByO,EAAWtN,GACnC,CACLuN,QAAS,kCAAM,EAAKJ,gBAAX,aAAM,EAAeK,oBAAoBF,EAAWtN,MA/C/D3D,KAAK8Q,SAAW1F,EAFpB,0CAOE,SAAOzH,GACL,OAAO3D,KAAKgR,WAAW,SAAUrN,KARrC,oBAWE,SAAOA,GACL,OAAO3D,KAAKgR,WAAW,SAAUrN,KAZrC,mBAeE,SAAMA,GACJ,OAAO3D,KAAKgR,WAAW,QAASrN,KAhBpC,yBAmBE,SAAYA,GACV,OAAO3D,KAAKgR,WAAW,UAAWrN,KApBtC,2BAuBE,SAAcA,GACZ,OAAO3D,KAAKgR,WAAW,kBAAmBrN,KAxB9C,sBA4BE,SAASA,GACP,OAAO3D,KAAKgR,WAAW,WAAYrN,KA7BvC,gCAgCE,SAAmBA,GACjB,OAAO3D,KAAKgR,WAAW,aAAcrN,OAjCzC,M,sFCAagE,EAAb,WACI,WAA6ByJ,EACA3J,GAAyB,yBADzB2J,UACwB,KAAxB3J,SAFjC,2CAMI,SAAQR,GACJ,OAAOjH,KAAKoR,QAAQlL,QAAQe,KAPpC,qBAUI,SAAQA,EAAakE,GACjBnL,KAAKoR,QAAQhO,QAAQ6D,EAAKkE,KAXlC,qBAeI,SAAiBlE,GACb,IAAIkE,EAAQnL,KAAKkG,QAAQe,GACzB,IAAKkE,EACD,OAAO,KAGX,IACI,OAAOkG,KAAKC,MAAMnG,GACpB,MAAOvH,GAEL,OADA5D,KAAKyH,OAAO3D,MAAZ,wDAAmEmD,EAAnE,uBAAqFkE,GAASvH,GACvF,QAzBnB,qBA6BI,SAAQqD,EAAakE,GACjBnL,KAAKoD,QAAQ6D,EAAKoK,KAAKE,UAAUpG,MA9BzC,wBAkCI,SAAWlE,GACPjH,KAAKoR,QAAQI,WAAWvK,OAnChC,M,iCCKA,IAAIwK,EAAuB1B,EAAQ,KAEnC,SAAS2B,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CtI,EAAOC,QAAU,WACf,SAASwI,EAAKC,EAAOC,EAAUC,EAAe1P,EAAU2P,EAAcC,GACpE,GAAIA,IAAWT,EAAf,CAIA,IAAI7N,EAAM,IAAI+B,MACZ,mLAKF,MADA/B,EAAIsH,KAAO,sBACLtH,GAGR,SAASuO,IACP,OAAON,EAFTA,EAAKO,WAAaP,EAMlB,IAAIQ,EAAiB,CACnBC,MAAOT,EACPU,KAAMV,EACNW,KAAMX,EACNY,OAAQZ,EACRa,OAAQb,EACRc,OAAQd,EACRe,OAAQf,EAERgB,IAAKhB,EACLiB,QAASX,EACT/G,QAASyG,EACTkB,YAAalB,EACbmB,WAAYb,EACZc,KAAMpB,EACNqB,SAAUf,EACVgB,MAAOhB,EACPiB,UAAWjB,EACXkB,MAAOlB,EACPmB,MAAOnB,EAEPoB,eAAgB5B,EAChBC,kBAAmBF,GAKrB,OAFAW,EAAemB,UAAYnB,EAEpBA,I,iCCnDTjJ,EAAOC,QAFoB,gD,iBCT3B,IAAIoK,EAGJA,EAAK,WACJ,OAAOzT,KADH,GAIL,IAECyT,EAAIA,GAAK,IAAIC,SAAS,cAAb,GACR,MAAOrO,GAEc,kBAAXiD,SAAqBmL,EAAInL,QAOrCc,EAAOC,QAAUoK,G,gQClBXE,EAAe5D,EAAQ,IAEtB,SAASzK,EAA4BrE,GAC1C,IAAIA,EACF,OAAOA,EAKT,IAFA,IAAI2S,EAAaC,mBAAmB5S,GAE9BA,IAAQ2S,GACZ3S,EAAM2S,EACNA,EAAaC,mBAAmB5S,GAGlC,OAAO2S,EAsCF,SAASE,EAAmB3I,GAEjC,OAAG3K,QAAMuT,SAAS5I,GApCb,SAAuBlK,GAC5B,IAAIA,EACF,OAAOA,EAGT,IACE,OAAO+S,UAAU/S,GACjB,MAAO2C,GAEP,OADAC,QAAQC,MAAR,qDAA4D7C,IACrDA,GA4BAgT,CAAc9I,GACb3K,QAAM0T,SAAS/I,GAvB3B,SAAiCgJ,GAC/B,IAAIC,EAAQT,EAAa,GAAIQ,GAM7B,OAJA9M,OAAOC,KAAK8M,GAAO1Q,SAAQ,SAAAqO,GACzBqC,EAAMrC,GAAY+B,EAAmBM,EAAMrC,OAGtCqC,EAiBEC,CAAwBlJ,GACvB3K,QAAM8T,QAAQnJ,GAf1B,SAAgCoJ,GAE9B,IADA,IAAIH,EAAK,YAAOG,GACRrN,EAAI,EAAGA,EAAIkN,EAAMtT,OAAQoG,IAC/BkN,EAAMlN,GAAK4M,EAAmBM,EAAMlN,IAEtC,OAAOkN,EAWEI,CAAuBrJ,GAEvBA,EAIJ,SAASsJ,EAAaC,EAAiB5U,EAAcyE,GAC1D,IAAIoQ,EAAa,IAAIxP,IAAIuP,GAUzB,OARG5U,IACMA,EAAKyG,WAAW,OACjBzG,EAAO,IAAMA,GAEjB6U,EAAWpS,UAAYoS,EAAWpS,SAAWzC,GAAMiB,QAAQ,KAAM,MAGrE4T,EAAWpQ,KAAOA,GAAQ,GACnBoQ,EAAW7R,KAGb,SAAS8R,EAAc3T,EAAa4T,GACvC,OAAU,OAAH5T,QAAG,IAAHA,OAAA,EAAAA,EAAK6T,SAAS,MAAQ7T,EAAM,IAAM4T,EAAe5T,EAAM,IAAM4T,EAGjE,SAASzQ,EAAanD,GACzB,GAAGA,EAAIsF,WAAW,KACd,OAAO,EAGX,IAEI,OADA,IAAIpB,IAAIlE,IACD,EACT,MAAO2C,GACL,OAAO,GAMR,SAASN,EAAYrC,GACxB,OAAOA,EAAId,a,iBCpGf,SAAS4U,EAAoBrC,GACzB,MAA0B,kBAAXA,IAAwBsC,MAAMV,QAAQ5B,GAsBzDtJ,EAAOC,QAlBP,SAAS4L,EAAcC,EAAYC,EAAgBC,GAejD,OAdKF,IACHA,EAAa,IAEXE,IACFF,EAAa7D,KAAKC,MAAMD,KAAKE,UAAU2D,KAEzC7N,OAAOC,KAAK6N,GAAgBzR,SAAQ,SAASuD,GACvC8N,EAAoBG,EAAWjO,KAAS8N,EAAoBI,EAAelO,IAC7EgO,EAAcC,EAAWjO,GAAMkO,EAAelO,IAG9CiO,EAAWjO,GAAOkO,EAAelO,MAG9BiO","file":"static/js/hybrid-qa~launcher~orbit-main~orbit-qa.4b92b851.chunk.js","sourcesContent":["import {Check} from '@sparkware/app-utils';\nimport {HOME_PAGE} from '../../../themes/css-global-classes';\n\nexport class UriPath {\n constructor(path: string) {\n this._path = (path || '/').trim();\n }\n\n private readonly _path: string;\n toString(): string {\n if(this._path[0] !== '/') {\n return '/' + this._path;\n }\n\n return this._path;\n }\n\n getBase(): UriPath {\n let parts = this.toString().split('/');\n return new UriPath(parts[0] +'/' + parts[1]);\n }\n\n toArray(): string[] {\n let parts = this.toString().split('/').filter(part => part);\n return ['/', ...parts];\n }\n\n equals(theOther: UriPath): boolean {\n if(Check.isNullOrUndefined(theOther)) {\n return false;\n }\n return this._appendSlashToTheEnd(this.toString()).toLowerCase() === this._appendSlashToTheEnd(theOther.toString()).toLowerCase();\n }\n\n get isEmpty(): boolean {\n return this._path === '/';\n }\n\n toCssClassName(): string {\n\n let urlWithoutTrailingSlashes = this.toString();\n\n if(urlWithoutTrailingSlashes[0] === '/') {\n urlWithoutTrailingSlashes = urlWithoutTrailingSlashes.substring(1)\n }\n\n if(urlWithoutTrailingSlashes[urlWithoutTrailingSlashes.length - 1] === '/') {\n urlWithoutTrailingSlashes = urlWithoutTrailingSlashes.substring(0, urlWithoutTrailingSlashes.length - 1);\n }\n\n\n if(urlWithoutTrailingSlashes) {\n return urlWithoutTrailingSlashes.toLowerCase().replace(/\\//g, '-') + '-page';\n } else {\n return HOME_PAGE;\n }\n }\n\n static areEquals(p1: UriPath, p2: UriPath): boolean {\n if(Check.isNullOrUndefined(p1)) {\n if(Check.isNullOrUndefined(p2)) {\n return true;\n } else {\n return false;\n }\n } else {\n return p1.equals(p2);\n }\n }\n\n private _appendSlashToTheEnd(url: string): string {\n if(url[url.length - 1] !== '/') {\n url = url + '/';\n }\n\n return url;\n }\n\n append(other: UriPath | string): UriPath {\n if(!(other instanceof UriPath)) {\n other = new UriPath(other);\n }\n\n\n\n return new UriPath((this.toString() + other.toString()).replace(/\\/\\//g, '/'));\n }\n}\n","import {action, observable} from 'mobx';\nimport {Uri} from './uri/uri';\nimport {ILocationService} from './location.service.interface';\nimport {decodeUriComponentRecursive, isAbsolutUrl, sanitizeUrl} from '../../../utils/url-utils';\nimport {IStorageService} from '../storage/storage.service.interface';\nimport {UriPath} from './uri-path/uri-path';\n\nexport const ORBIT_LOCATION_OVERRIDE_BASE = 'orbit_location_override_base';\n\n\nexport class LocationService implements ILocationService {\n\n constructor(private _window: Partial, private _localStorage: IStorageService, private _sendTechnicalEvent?: (action: string, label?: string, value?: any) => void) {\n this._initCurrentUri();\n\n this._checkUrlIsNullString(this._window.location.pathname, 'constructor');\n\n this._window.addEventListener('popstate', () => {\n this._checkUrlIsNullString(this._window.location.pathname, 'popstate');\n this._updateCurrentUriAsync();\n });\n }\n\n private _previousUri: Uri = null;\n @observable.ref currentUri: Uri = null;\n\n @action.bound\n private _setCurrentUri(newUri: Uri) {\n this._previousUri = this.currentUri;\n this.currentUri = newUri;\n }\n\n\n private _initCurrentUri() {\n this._setCurrentUri(this._createNewUriForCurrentLocation());\n if(this._window.location.href !== this.currentUri.toString()) {\n this._window.history.replaceState(null, '', this.currentUri.toString());\n }\n }\n\n enableBasePathOverride(): void {\n const basePathName = this.currentUri.pathName.getBase().toString().toLowerCase();\n this._localStorage.setItem(ORBIT_LOCATION_OVERRIDE_BASE, basePathName.toString());\n }\n\n private _createNewUriForCurrentLocation(): Uri {\n let locationOverride = sanitizeUrl(this._window.location.href);\n return this.tryParseUrl(this._applyLocationOverride(locationOverride));\n }\n\n private _fireOnBeforeChangingLocation(targetUri: Uri) {\n this._onBeforeChangingLocationSubscribers.forEach(handler => {\n try {\n handler(targetUri);\n } catch (err) {\n console.error('OnBeforeChangingLocation handler failed!', err);\n }\n });\n }\n private _updateCurrentUriAsync(): Promise {\n let newUri = this._createNewUriForCurrentLocation();\n\n this._fireOnBeforeChangingLocation(newUri);\n\n // we set the current location async so we can give the spinner the chance to show up.\n return new Promise((resolve, reject) => {\n // Never remove this setTimeout- without this, while you click menu items to move between arenas, the spinner animation will not be smooth.\n setTimeout(() => {\n try {\n this._setCurrentUri(newUri);\n resolve();\n } catch (err) {\n reject(err);\n }\n }, 0);\n });\n\n }\n\n private _onBeforeChangingLocationSubscribers: Array<(targetUri: Uri) => void> = [];\n onBeforeChangingLocation(handler: (targetUri: Uri) => void): void {\n this._onBeforeChangingLocationSubscribers.push(handler);\n }\n\n\n private _isSameAsCurrentUrl(newUrl: string): boolean {\n\n let result:boolean;\n if(isAbsolutUrl(newUrl)) {\n result = Boolean(this._window.location.href === newUrl);\n } else {\n result = Boolean(newUrl === this._window.location.pathname + this._window.location.search + this._window.location.hash);\n }\n return result;\n }\n\n private _lastUpdateCurrentUriPromise: Promise = Promise.resolve();\n private _executeNavigation(url: string, historyApiCallback: (newUrl: string) => void) : Promise {\n url = (url || '').trim();\n url = url || '/';\n\n this._checkUrlIsNullString(url, 'push');\n\n if(this._isRedirectUrl(url)) {\n return this.redirect(url);\n } else {\n\n const newUrl = this._applyLocationOverride(url);\n\n if(!this._isSameAsCurrentUrl(newUrl)) {\n historyApiCallback(newUrl);\n }\n\n if(!this._isSameAsCurrentUrl(this.currentUri.toString())) {\n this._lastUpdateCurrentUriPromise = this._updateCurrentUriAsync();\n }\n\n // This is for making very quick subsequent calls to this function to happen in the order they were called.\n // related bug: BUG 1668336\n return this._lastUpdateCurrentUriPromise;\n\n }\n }\n\n /**\n * @param {string} url\n * url parameter can be a full url or just a relative url:\n * url parameter examples:\n * https://www.888casino.com/slots\n * /slots\n * /slots#filters=someFilter\n * #justTheHash\n * @param {boolean} forceHistoryPush\n * used by the \"browser-buttons-handler\" to overwrite the current url;\n */\n push(url: string): Promise {\n return this._executeNavigation(url, (newUrl) => this._window.history.pushState(null, '', newUrl));\n }\n\n pushWithoutValidation(url){\n this._window.history.pushState(null, '', url);\n }\n\n goBack(index = -1){\n this._window.history.go(index);\n }\n\n /**\n * @param {string} url\n * url parameter can be a full url or just a relative url:\n * url parameter examples:\n * https://www.888casino.com/slots\n * /slots\n * /slots#filters=someFilter\n * #justTheHash\n */\n replace(url: string): Promise {\n return this._executeNavigation(url, (newUrl) => this._window.history.replaceState(null, '', newUrl));\n }\n\n\n redirect(url: string): Promise {\n this._window.location.href = url;\n return Promise.resolve();\n }\n\n goHome(): Promise {\n return this.push('/');\n }\n\n\n\n private _isRedirectUrl(url: string): boolean {\n if(url && url[0] === '#') {\n return false;\n }\n\n let parsedUrl = this.tryParseUrl(url);\n if(parsedUrl && parsedUrl.origin.toLowerCase() !== this.currentUri.origin.toLowerCase()) {\n return true;\n } else {\n return false;\n }\n }\n\n get hasNavigationHistory(): boolean {\n if(this._previousUri) {\n return true;\n }\n return false;\n }\n\n tryParseUrl(url: string): Uri {\n try {\n return new Uri(new URL(this._tryDecodeUrl(url)));\n } catch (e) {\n return null;\n }\n }\n\n private _tryDecodeUrl(url: string): string {\n try {\n return decodeUriComponentRecursive(url);\n } catch(err) {\n console.error('Failed to decode url: ' + url);\n return url;\n }\n }\n\n buildFullUri(partialUri: string): Uri {\n const candidate = partialUri?.toString() || '/';\n return new Uri(new URL(candidate, this.currentUri.toString()));\n }\n\n private _checkUrlIsNullString(url: string, functionName: string): void {\n\n try {\n if(url === '/null' || url === 'null' || url === '/null/' || url === 'null/') {\n let message = new Error(`null route detected! Action=${functionName}; CurrentLocation=${this._window.location.href}; DocumentReferrer: ${document.referrer}`).stack;\n if(this._sendTechnicalEvent) {\n this._sendTechnicalEvent('NULL_ROUTE_DETECTED', functionName, message);\n }\n\n console.error(message);\n\n }\n } catch (err) {\n console.error('_checkUrlIsNullString Failed', err);\n }\n\n }\n\n private _applyLocationOverride(url: string): string {\n return this._getLocationOverrideStrategy().overrideLocation(url);\n }\n\n\n private _getLocationOverrideStrategy(): ILocationOverrideStrategy {\n const basePath = this._localStorage.getItem(ORBIT_LOCATION_OVERRIDE_BASE);\n if(basePath) {\n return new LocationOverrideStrategy(basePath);\n } else {\n return new NoLocationOverrideStrategy();\n }\n }\n\n get isHomePage(): boolean {\n return this._getLocationOverrideStrategy().isHomePage(this.currentUri.pathName);\n }\n}\n\ninterface ILocationOverrideStrategy {\n overrideLocation(url: string): string;\n isHomePage(pathName: UriPath): boolean;\n}\n\n\nclass LocationOverrideStrategy implements ILocationOverrideStrategy {\n\n constructor(basePath: string) {\n this._basePath = new UriPath(basePath.toLowerCase());\n }\n\n private readonly _basePath: UriPath;\n\n isHomePage(pathName: UriPath): boolean {\n return this._basePath.equals(pathName);\n }\n\n overrideLocation(url: string): string {\n if (url.startsWith('#')) {\n return url;\n }\n\n let newUrl = this._tryParseUrl(url);\n if(newUrl) {\n if (!newUrl.pathname.toLowerCase().startsWith(this._basePath.toString())) {\n newUrl.pathname = this._basePath.append(newUrl.pathname).toString();\n }\n\n return sanitizeUrl(newUrl.href.toString());\n } else {\n if(!url.toLowerCase().startsWith(this._basePath.toString())) {\n return this._basePath.append(url).toString();\n }\n }\n\n return url;\n }\n\n private _tryParseUrl(url): URL {\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n }\n\n}\n\n\nclass NoLocationOverrideStrategy implements ILocationOverrideStrategy {\n isHomePage(pathName: UriPath): boolean {\n return pathName.isEmpty;\n }\n\n overrideLocation(url: string): string {\n return url;\n }\n}","export const MINI_CIP_BASE_ROUTE = '/cip';\nexport const MINI_CIS_BASE_ROUTE = '/cis';\n\nexport function isMiniOrbitBasePath(basePath: string) {\n\n if (basePath === MINI_CIP_BASE_ROUTE) {\n return true;\n }\n\n if (basePath === MINI_CIS_BASE_ROUTE) {\n return true;\n }\n\n return false;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import {StorageServiceBase} from \"./storage-service-base\";\nimport {ILoggerService} from \"../logger/logger.service.interface\";\n\nexport class LocalStorageService extends StorageServiceBase {\n constructor(logger: ILoggerService) {\n super(localStorage, logger);\n }\n\n}\n","import {ILoggerService, LogError} from './logger.service.interface';\n\nenum LOG_LEVELS {\n DEBUG = 1,\n INFO = 2,\n WARN =3,\n ERROR = 4\n}\n\nexport class ConsoleLoggerService implements ILoggerService {\n\n constructor(private _debugMode: boolean) {\n\n }\n\n errorLogs: LogError[] = [];\n\n debug(message: string, ...optionalParams: any[]): void {\n this._log('debug', message, optionalParams);\n }\n\n info(message: string, ...optionalParams: any[]): void {\n this._log('info', message, optionalParams);\n }\n\n warning(message: string, ...optionalParams: any[]): void {\n this._log('warn', message, optionalParams);\n }\n\n error(message: string, ...optionalParams: any[]): void {\n this._addErrorLog(message, optionalParams);\n\n this._log('error', message, optionalParams);\n }\n\n\n /**\n * Private method, provides single point of access to the \"console.log\" API.\n * Prevents mess around the code and a clean way to prevent the output of the log or the severity level.\n */\n private _log(severity: string, message: string, ...optionalParams: any[]) {\n if (this._isConsoleEnabled(severity.toUpperCase())) {\n console[severity](message, optionalParams);\n }\n }\n\n private _isConsoleEnabled(severity: string): boolean {\n return LOG_LEVELS[severity] >= LOG_LEVELS[window['LOG_LEVEL']]\n }\n\n private _addErrorLog(message: string, ...optionalParams: any[]) {\n if(!this._debugMode) {\n return;\n }\n\n if (this.errorLogs.length === 30) {\n this.errorLogs.splice(0, 1);\n }\n\n this.errorLogs.push({message: message, date: new Date(), errorDetails: optionalParams});\n }\n\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export const ORBIT_VERSION = '3.2909.3';\n","import {IWindowService} from './window.service.interface';\nimport {isAbsolutUrl} from '../../../utils/url-utils';\nimport { CGP_OBJECT_NAME } from '../../app-bootstrap/constants';\nimport { API } from '../../../sdk/src/core/api';\nimport { EventListenerRegistration } from '../../../utils/event-listener-registration';\nimport {Check} from \"@sparkware/app-utils\";\n\ndeclare global {\n interface Window {\n LOG_LEVEL: string;\n [CGP_OBJECT_NAME]: API;\n [key: string]: any;\n }\n}\n\nexport class WindowService implements IWindowService {\n\n constructor() {\n this._eventListenerRegistration = new EventListenerRegistration(window);\n }\n\n\n getGlobalProperty(name: string): any {\n return window[name];\n }\n\n setGlobalProperty(name: string, value: any): void {\n window[name] = value;\n }\n\n getComputedStyle(element: HTMLElement): CSSStyleDeclaration {\n return window.getComputedStyle(element);\n }\n\n getElementWidth(element: HTMLElement): number {\n return parseInt(this.getComputedStyle(element).width.replace('px', ''));\n }\n\n getElementHorizontalTranslationAmount(element: HTMLElement): number {\n let elementTransform = this.getComputedStyle(element).getPropertyValue(\"-webkit-transform\") || window.getComputedStyle(element).getPropertyValue(\"transform\");\n // we need split(\",\")[12] and [4] to support ie\n return parseInt(elementTransform.split(\",\")[12] || elementTransform.split(\",\")[4]) || 0;\n }\n\n get location(): Location {\n return window.location;\n }\n\n private readonly _eventListenerRegistration: EventListenerRegistration;\n\n get subscribeTo(): EventListenerRegistration {\n return this._eventListenerRegistration;\n }\n\n get innerWidth(): number {\n return window.innerWidth;\n }\n\n get innerHeight(): number {\n return window.innerHeight;\n }\n\n open(url?: string, target?: string, features?: string): void {\n window.open(url, target, features);\n }\n\n openSelf(url?: string): void {\n this.open(url, '_self')\n }\n\n get origin(): string {\n return window.location.origin;\n }\n\n get pathname(): string {\n return window.location.pathname;\n }\n\n get history(): History {\n return window.history;\n }\n\n scrollTo(x: number, y: number): void {\n window.scrollTo(x, y);\n }\n\n get scrollY(): number {\n return window.scrollY;\n }\n\n scrollBy(x: number, y: number): void {\n window.scrollBy(x, y)\n }\n\n isAbsolutUrl(url: string): boolean {\n return isAbsolutUrl(url);\n }\n\n getComputedSize(element: HTMLElement): { width: number; height: number } {\n if (Check.isNullOrUndefined(element)) {\n return {\n width: 0,\n height: 0\n };\n }\n\n const elementStyle: any = this.getComputedStyle(element);\n return {\n width: parseInt(elementStyle.width.replace('px', '')),\n height: parseInt(elementStyle.height.replace('px', ''))\n };\n }\n\n createBlankWindow(): Window | null {\n return window.open('about:blank', '_blank');\n }\n}\n","export const CGP_OBJECT_NAME = 'CGP';\n\n\n","import {Check} from '@sparkware/app-utils';\nimport {decodeUriComponentRecursive} from '../../../../utils/url-utils';\n\nexport class UriHash {\n constructor(hash: string) {\n this._hash = this._tryDecodeHash(hash || '');\n if(this._hash === '#') {\n this._hash = '';\n }\n }\n\n\n get value(): string {\n if(this._hash[0] === '#') {\n return this._hash.substring(1);\n } else {\n return this._hash;\n }\n }\n\n private _hash: string;\n\n toString() {\n if(!this._hash) {\n return this._hash;\n }\n\n if(this._hash[0] === '#') {\n return this._hash;\n } else {\n return '#' + this._hash;\n }\n }\n\n static areEquals(h1: UriHash, h2: UriHash): boolean {\n if(Check.isNullOrUndefined(h1)) {\n if(Check.isNullOrUndefined(h2)) {\n return true;\n } else {\n return false;\n }\n } else {\n return h1.equals(h2);\n }\n }\n\n equals(theOther: UriHash) {\n if(Check.isNullOrUndefined(theOther)) {\n return false;\n }\n\n return this.toString().toLowerCase() === theOther.toString().toLowerCase();\n }\n\n get isEmpty(): boolean {\n return Check.isEmpty(this._hash);\n }\n\n private _tryDecodeHash(hash: string): string {\n try {\n return decodeUriComponentRecursive(hash);\n } catch(err) {\n console.error('Failed to decode hash: ' + hash);\n return hash;\n }\n }\n}\n","import {UriPath} from '../uri-path/uri-path';\nimport {UriParams} from '../uri-params/uri-params';\nimport {UriHash} from '../uri-hash/uri-hash';\nimport {Check} from '@sparkware/app-utils';\nimport {sanitizeUrl} from '../../../../utils/url-utils';\n\nexport class Uri {\n\n constructor(url: URL) {\n this._originalUrl = url;\n this._pathName = new UriPath(this._originalUrl.pathname);\n this._queryParams = new UriParams(this._originalUrl.search);\n this._hash = new UriHash(this._originalUrl.hash);\n }\n\n private _originalUrl: URL;\n\n get hostName(): string {\n return this._originalUrl.hostname.toLowerCase();\n }\n\n get origin(): string {\n return this._originalUrl.origin.toLowerCase();\n }\n\n private readonly _pathName: UriPath;\n get pathName(): UriPath {\n return this._pathName;\n }\n\n private readonly _queryParams: UriParams;\n get queryParams(): UriParams {\n return this._queryParams;\n }\n\n private readonly _hash: UriHash;\n get hash(): UriHash {\n return this._hash;\n }\n\n toString() {\n let ret:string = sanitizeUrl(this._originalUrl.href);\n return ret;\n }\n\n equals(theOther: Uri): boolean {\n if(Check.isNullOrUndefined(theOther)) {\n return false;\n }\n\n return this.origin === theOther.origin\n && this.pathName.equals(theOther.pathName)\n && this.queryParams.equals(theOther.queryParams)\n && this.hash.equals(theOther.hash);\n }\n\n getUrlWithoutHash() {\n return this._originalUrl.origin + this._originalUrl.pathname + this._originalUrl.search;\n }\n\n removeSearchParam(paramName: string): Uri {\n let newQueryParams = this.queryParams.removeParam(paramName).toString();\n return new Uri(new URL(this._originalUrl.origin + this._originalUrl.pathname + newQueryParams + this._originalUrl.hash));\n }\n\n getUrlWithoutSearchAndHash() {\n return this._originalUrl.origin + this._originalUrl.pathname;\n }\n\n static areEquals(u1: Uri, u2: Uri): boolean {\n if(Check.isNullOrUndefined(u1)) {\n if(Check.isNullOrUndefined(u2)) {\n return true;\n } else {\n return false;\n }\n } else {\n return u1.equals(u2);\n }\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export const HOME_PAGE = 'home-page';\nexport const LOBBY_PAGE = 'lobby-page';\nexport const SLOTS_PAGE = 'slots-page';\nexport const BLACKJACK_PAGE = 'blackjack-page';\nexport const ROULETTE_PAGE = 'roulette-page';\nexport const JACKPOTS_PAGE = 'jackpots-page';\nexport const CASINO_GAMES_PAGE = 'casino-games-page';\nexport const PROGRESSIVE_VIDEO_SLOTS_PAGE = 'progressive-video-slots-page';\nexport const NEW_GAMES_PAGE = 'new-games-page';\nexport const GAMING_HISTORY_PAGE = 'gaming-history-page';\nexport const SESSION_HISTORY_PAGE = 'session-history-page';\nexport const CHALLENGE_PAGE = 'challenge-page';\nexport const LIVE_CASINO_PAGE = 'live-casino-page';\nexport const VIDEO_POKER_PAGE = 'video-poker-page';\nexport const SCRATCH_CARDS_PAGE = 'scratch-cards-page';\nexport const EXCLUSIVE_888_GAMES_PAGE = '888-exclusive-games';\nexport const NEW_LIVE_CASINO_PAGE = 'live-casino-new-page';\nexport const INSTANT_WIN_GAMES_PAGE = 'instant-win-games-page';\nexport const VIRTUAL_SPORTS_PAGE = 'virtual-sports-page';\n\nexport const ORBIT_TAP = 'orbit-tap';\nexport const CGP_GAME_OPEN = 'cgp-game-open';\nexport const JACKPOTS_ITEM = 'jackpots-item';\nexport const LIVE_CASINO_ITEM = 'live-casino-item';\n\nexport const LIVE_STREAMING_ITEM = 'live-streaming-item';\nexport const STATIC_VIDEO_ITEM = 'static-video-item';\n\nexport const EXCLUSIVES_LIST_ICON = 'exclusives-list-icon';\n\nexport const MOVE_TOP = 'move-top';\nexport const STICKY = 'sticky';\nexport const ORBIT_OVERLAY_OPEN = 'orbit-overlay-open';\nexport const CGP_OVERLAY_OPEN = 'cgp-overlay-open';\nexport const EMBEDDED_HYBRID = 'cgp-embedded-hybrid';\nexport const MODAL_DIALOG = 'modal-dialog';\nexport const MAIN_SCREEN = 'main-screen';\nexport const MINI_ORBIT = 'mini-orbit';\nexport const USER_MENU_OPEN = 'user-menu-open';\nexport const ACTIVE = 'active';\nexport const LIVE_CASINO_PAGE_WRAPPER = 'live-casino-page-wrapper';\nexport const OPEN_MENU = 'open-menu';\nexport const DRAGGING = 'dragging';\nexport const SDK_CSS_OVERRIDE = 'sdk-css-override';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import {decodeUriComponentRecursive} from '../../../../utils/url-utils';\n\ninterface ParameterDescriptor {\n originalName: string;\n value: string;\n}\n\nexport class UriParams {\n\n constructor(queryParamsString: string) {\n queryParamsString = (queryParamsString || '').trim();\n\n\n if(queryParamsString[0] === '?') {\n queryParamsString = queryParamsString.substring(1);\n }\n\n if(queryParamsString) {\n queryParamsString.split('&').forEach(paramString => {\n let keyValue = paramString.split('=');\n let key = keyValue[0];\n let value = keyValue[1];\n if(keyValue.length > 2) {\n value = keyValue.slice(1).join('=');\n }\n this._params[key.toLowerCase()] = {\n originalName: key,\n value: value\n };\n });\n }\n }\n\n private _params: {[key: string]: ParameterDescriptor} = {};\n\n getAllParams(): ParameterDescriptor[] {\n return Object.values(this._params);\n }\n\n getParamValue(paramName: string): string {\n let paramDescriptor = this._params[paramName.toLowerCase()];\n if(!paramDescriptor) {\n return undefined;\n }\n return decodeUriComponentRecursive(paramDescriptor.value);\n }\n\n toString() {\n const allParams = this.getAllParams();\n if(allParams.length === 0) {\n return '';\n }\n return '?' + allParams.map(p => p.originalName + '=' + p.value).join('&');\n }\n\n removeParam(paramName: string): UriParams {\n let clonedParams = {...this._params};\n delete clonedParams[paramName?.toLowerCase()];\n const newQueryParams = Object.keys(clonedParams).map(paramName => {\n const paramDescriptor = clonedParams[paramName];\n return `${paramDescriptor.originalName}=${paramDescriptor.value}`;\n });\n return new UriParams(newQueryParams.join('&'));\n }\n\n hasParam(name: string): boolean {\n return Boolean(this._params[name.toLowerCase()]);\n }\n\n addParam(name: string, value: string) {\n this._params[name.toLowerCase()] = {\n originalName: name,\n value: value\n }\n }\n\n equals(theOther: UriParams): boolean {\n let keys1 = Object.keys(this._params);\n let keys2 = Object.keys(theOther._params);\n\n if(keys1.length !== keys2.length) {\n return false;\n }\n\n for(let i = 0; i < keys1.length; i++) {\n let paramName = keys1[i];\n let val1 = this._params[paramName].value;\n let val2 = theOther._params[paramName] && theOther._params[paramName].value;\n if (val1 !== val2) {\n return false;\n }\n }\n\n return true;\n }\n\n get isEmpty(): boolean {\n return this.getAllParams().length === 0;\n }\n}\n","export interface DomEventSubscription {\n dispose();\n}\n\nexport class EventListenerRegistration {\n constructor(element: any) {\n this._element = element;\n }\n\n private _element: any;\n\n scroll(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('scroll', handler);\n }\n\n resize(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('resize', handler);\n }\n\n click(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('click', handler);\n }\n\n postMessage(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('message', handler);\n }\n\n devicechanged(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('ondevicechanged', handler);\n\n }\n\n popstate(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('popstate', handler);\n }\n\n hardwareBackButton(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('backbutton', handler);\n }\n\n unload = (handler: EventListenerOrEventListenerObject): DomEventSubscription => {\n // Why use \"pagehide\" instead of unload\n // https://dev.azure.com/888holdings/GamingNDL/_git/ff235275-fba4-4733-a4ee-b6fd0d1639bf/pullrequest/38438\n // https://web.dev/bfcache/?utm_source=lighthouse&utm_medium=lr#never-use-the-unload-event\n\n // Later we should switch to visibilityChange which covers even more cases, but it's not supported below Safari 14:\n // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#sending_analytics_at_the_end_of_a_session\n return this._subscribe('pagehide', handler);\n }\n\n protected _subscribe = (eventName: string, handler: EventListenerOrEventListenerObject): DomEventSubscription => {\n this._element.addEventListener(eventName, handler);\n return {\n dispose: () => this._element?.removeEventListener(eventName, handler)\n }\n }\n\n}\n","import {IStorageService} from \"./storage.service.interface\";\nimport {ILoggerService} from \"../logger/logger.service.interface\";\nimport {Nullable, NullableString} from \"../../../common/types/nullable-types\";\n\nexport class StorageServiceBase implements IStorageService {\n constructor(private readonly storage: Storage,\n private readonly logger: ILoggerService) {\n\n }\n \n getItem(key: string): NullableString {\n return this.storage.getItem(key);\n }\n\n setItem(key: string, value: any): void {\n this.storage.setItem(key, value);\n }\n\n\n getJson(key: string): Nullable {\n let value = this.getItem(key);\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as T;\n } catch (err) {\n this.logger.error(`Failed to parse to JSON the local storage key ${key} with value ${value}`, err);\n return null;\n }\n }\n\n setJson(key: string, value: object): void {\n this.setItem(key, JSON.stringify(value));\n }\n\n\n removeItem(key: string): void {\n this.storage.removeItem(key);\n }\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\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 {Check} from '@sparkware/app-utils';\nconst overrideJson = require('json-override');\n\nexport function decodeUriComponentRecursive(url: string): string {\n if(!url) {\n return url\n }\n\n let decodedUrl = decodeURIComponent(url);\n\n while(url !== decodedUrl) {\n url = decodedUrl;\n decodedUrl = decodeURIComponent(url);\n }\n\n return decodedUrl;\n\n}\n\nexport function safeUriEncode(url: string): string {\n if(!url) {\n return url;\n }\n\n try {\n return encodeURI(url);\n } catch (err) {\n console.error(`Failed to URI encode the following string: ${url}`);\n return url;\n }\n\n\n}\n\nfunction encodeUriPropsForObject(obj: any): any {\n let clone = overrideJson({}, obj);\n\n Object.keys(clone).forEach(propName => {\n clone[propName] = encodeUriRecursive(clone[propName]);\n });\n\n return clone;\n}\n\nfunction encodeUriPropsForArray(arr: any): any {\n let clone = [...arr];\n for(let i = 0; i < clone.length; i++) {\n clone[i] = encodeUriRecursive(clone[i]);\n }\n return clone;\n}\n\n\nexport function encodeUriRecursive(value: any): any {\n\n if(Check.isString(value)) {\n return safeUriEncode(value);\n } else if(Check.isObject(value)) {\n return encodeUriPropsForObject(value);\n } else if(Check.isArray(value)) {\n return encodeUriPropsForArray(value);\n } else {\n return value;\n }\n}\n\nexport function joinUrlParts(baseUrl: string, path: string, hash?: string): string {\n let urlBuilder = new URL(baseUrl);\n\n if(path) {\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n urlBuilder.pathname = (urlBuilder.pathname + path).replace('//', '/');\n }\n\n urlBuilder.hash = hash || '';\n return urlBuilder.href;\n}\n\nexport function addQueryParam(url: string, queryParam: string): string {\n return url?.includes('?') ? (url + '&' + queryParam) : (url + '?' + queryParam);\n}\n\nexport function isAbsolutUrl(url: string): boolean {\n if(url.startsWith('#')) {\n return false;\n }\n\n try {\n new URL(url);\n return true;\n } catch (err) {\n return false;\n }\n}\n\n/** This method should be used to sanitize URLs. This is required in order to pass checkmarx scan.\nFor now it does minimal sanitization, but it can be expanded in the future, according to good practices to prevent security issues**/\nexport function sanitizeUrl(url: string): string {\n return url.toString();\n}","function isObjectAndNotArray(object) {\n return (typeof object === 'object' && !Array.isArray(object));\n}\n\n// 'createNew' defaults to false\nfunction overwriteKeys(baseObject, overrideObject, createNew) {\n if (!baseObject) {\n baseObject = {};\n }\n if (createNew) {\n baseObject = JSON.parse(JSON.stringify(baseObject));\n }\n Object.keys(overrideObject).forEach(function(key) {\n if (isObjectAndNotArray(baseObject[key]) && isObjectAndNotArray(overrideObject[key])) {\n overwriteKeys(baseObject[key], overrideObject[key]);\n }\n else {\n baseObject[key] = overrideObject[key];\n }\n });\n return baseObject;\n}\n\nmodule.exports = overwriteKeys;\n"],"sourceRoot":""}