@flarehr/apollo-customer-workplace-link 1.16.62301 → 1.17.63687

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/goober/dist/goober.esm.js","webpack:///../lib/atob.js","webpack:///../lib/index.js","webpack:///../src/index.js","webpack:///./services/api.ts","webpack:///./services/auth.ts","webpack:///./components/authFlow/index.tsx","webpack:///../lib/base64_url_decode.js","webpack:///./hooks/useAsyncEffect.ts","webpack:///./utils/network.ts","webpack:///./styles/index.ts","webpack:///../node_modules/goober/global/dist/goober-global.esm.js","webpack:///./components/loader/style.ts","webpack:///./components/loader/index.tsx","webpack:///./components/success/style.ts","webpack:///./components/success/index.tsx","webpack:///./components/error/style.ts","webpack:///./components/error/index.tsx","webpack:///./utils/window.ts","webpack:///./components/workplaceLink/style.ts","webpack:///./components/workplaceLink/index.tsx","webpack:///./index.tsx","webpack:///../node_modules/axios/lib/core/createError.js","webpack:///./assets/apple-store-badge.svg","webpack:///../node_modules/axios/lib/core/transformData.js","webpack:///../node_modules/axios/lib/env/data.js","webpack:///../node_modules/axios/lib/helpers/bind.js","webpack:///../src/authorization_request_handler.ts","webpack:///../node_modules/qr.js/lib/BitBuffer.js","webpack:///../node_modules/qr.js/lib/8BitByte.js","webpack:///../src/flags.ts","webpack:///../node_modules/axios/lib/helpers/spread.js","webpack:///../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///../node_modules/qr.js/lib/math.js","webpack:///../src/redirect_based_handler.ts","webpack:///../node_modules/qr.js/lib/Polynomial.js","webpack:///../src/token_request.ts","webpack:///../node_modules/base64-js/index.js","webpack:///../src/query_string_utils.ts","webpack:///../node_modules/qr.js/lib/util.js","webpack:///../node_modules/qrcode.react/lib/index.js","webpack:///../node_modules/axios/lib/helpers/isAxiosError.js","webpack:///../src/xhr.ts","webpack:///../node_modules/axios/lib/cancel/CancelToken.js","webpack:///../node_modules/axios/lib/core/enhanceError.js","webpack:///../node_modules/qr.js/lib/ErrorCorrectLevel.js","webpack:///../src/authorization_service_configuration.ts","webpack:///../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///../src/storage.ts","webpack:///../node_modules/axios/lib/axios.js","webpack:///../src/token_response.ts","webpack:///../src/authorization_request.ts","webpack:///../node_modules/axios/lib/core/mergeConfig.js","webpack:///../node_modules/axios/lib/core/settle.js","webpack:///../node_modules/axios/lib/defaults.js","webpack:///../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///../node_modules/axios/index.js","webpack:///../node_modules/axios/lib/cancel/isCancel.js","webpack:///../node_modules/axios/lib/helpers/buildURL.js","webpack:///../src/authorization_response.ts","webpack:///../node_modules/axios/lib/core/dispatchRequest.js","webpack:///../node_modules/axios/lib/core/buildFullPath.js","webpack:///../node_modules/axios/lib/helpers/combineURLs.js","webpack:///../src/util.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/axios/lib/core/InterceptorManager.js","webpack:///../node_modules/axios/lib/helpers/validator.js","webpack:///../src/PureComponent.js","webpack:///../src/memo.js","webpack:///../src/forwardRef.js","webpack:///../src/suspense.js","webpack:///../src/suspense-list.js","webpack:///../src/portals.js","webpack:///../src/Children.js","webpack:///../src/errors.ts","webpack:///../node_modules/qr.js/lib/QRCode.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///../node_modules/qr.js/lib/mode.js","webpack:///../node_modules/axios/lib/utils.js","webpack:///../node_modules/qr.js/lib/RSBlock.js","webpack:///../src/crypto_utils.ts","webpack:///../node_modules/axios/lib/cancel/Cancel.js","webpack:///./assets/google-play-badge.png","webpack:///../src/token_request_handler.ts","webpack:///../node_modules/axios/lib/core/Axios.js","webpack:///./assets/fireworks.png","webpack:///../node_modules/axios/lib/helpers/cookies.js","webpack:///../src/logger.ts","webpack:///./assets/cross-icon.svg","webpack:///../node_modules/axios/lib/helpers/parseHeaders.js","webpack:///../node_modules/axios/lib/adapters/xhr.js"],"names":["__webpack_require__","moduleId","installedModules","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","e","this","unshift","raw","slice","arguments","reduce","target","g","k","j","a","className","theme","f","test","apply","ref","as","u","InvalidCharacterError","message","InvalidTokenError","ContextProvider","props","getChildContext","context","children","rest","cloneElement","connectedCallback","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","_vdom","h","_props","toVdom","element","nodeName","nodeType","data","attributes","cn","childNodes","length","toCamelCase","vnode","slot","Slot","wrappedChildren","toLowerCase","_vdomComponent","hasAttribute","hydrate","render","_root","str","replace","_","toUpperCase","attributeChangedCallback","oldValue","newValue","disconnectedCallback","_this","_listener","stopPropagation","addEventListener","removeEventListener","window","querySelector","_goober","document","head","appendChild","createElement","innerHTML","id","firstChild","charCodeAt","exec","shift","indexOf","Error","atob","input","String","bs","buffer","bc","idx","output","charAt","fromCharCode","axiosInstance","configuration","AuthFlowState","token","options","pos","header","JSON","parse","decodeURIComponent","code","toString","err","base64_url_decode","split","useAsyncEffect","effect","deps","unmount","useEffect","cancelToken","axios","CancelToken","source","cancel","logRequestError","console","error","request","logResponseError","response","status","responseURL","stringify","initialiseApi","backendUrl","baseUrl","instance","onRequest","onRequestError","onResponse","onResponseError","interceptors","use","addInterceptors","baseURL","getOptions","accessToken","headers","Authorization","requestWorkplaceLink","result","post","isEstablished","linkRequest","createAuthDependencies","onStart","onComplete","onError","notifier","AuthorizationNotifier","authorizationHandler","RedirectRequestHandler","requestor","FetchRequestor","tokenHandler","BaseTokenRequestHandler","setAuthorizationNotifier","setAuthorizationListener","Promise","resolve","setTimeout","errorDescription","codeVerifier","internal","code_verifier","tokenResponse","makeTokenRequest","getAndValidateAccessToken","state","makeAuthorizationRequest","oidcConfig","config","fetchServiceConfiguration","openIdConnectUrl","AuthorizationRequest","client_id","clientId","redirect_uri","redirectUri","scope","response_type","RESPONSE_TYPE_CODE","extras","response_mode","prompt","option","DefaultCrypto","performAuthorizationRequest","AuthorizationServiceConfiguration","fetchFromIssuer","completeAuthIfPossible","tryHydrateOidcConfiguration","completeAuthorizationRequestIfPossible","authorizationRequest","TokenRequest","grant_type","GRANT_TYPE_AUTHORIZATION_CODE","refresh_token","undefined","performTokenRequest","isValid","handle","storageBackend","getItem","oidcConfigString","authorizationServiceConfigurationKey","configJson","ScreenReader","GlobalStyles","createGlobalStyles","ContextBox","minHeight","LoaderWrapper","PingPongLoadingBar","Loader","isActive","role","Wrapper","QRWrapper","Badges","SVG","PNG","BadgeLink","Hero","Success","src","fireworks","href","appleStore","googlePlay","CrossIcon","cross","AuthFlow","apolloAccessToken","useState","Loading","appState","setAppState","hasAttemptedComplete","setHasAttemptedComplete","authDependencies","setAuthDependencies","logError","Redirecting","decoded","jwtDecode","linkRequestId","profileId","establishWorkplaceLink","sub","Complete","authDeps","Returning","location","protocol","host","pathname","isLoading","Container","Component","tagName","propNames","PreactElement","inst","Reflect","construct","HTMLElement","shadow","attachShadow","constructor","observedAttributes","keys","propTypes","forEach","set","v","type","setAttribute","customElements","define","displayName","register","enhanceError","require","utils","defaults","fns","fn","thisArg","args","Array","listener","onAuthorizationComplete","BUILT_IN_PARAMETERS","crypto","buildRequestUrl","requestMap","responseType","extra","query","authorizationEndpoint","log","completeAuthorizationRequest","then","AuthorizationRequestHandler","QRBitBuffer","index","bufIndex","Math","floor","put","num","putBit","getLengthInBits","bit","push","QR8bitByte","MODE_8BIT_BYTE","getLength","write","IS_LOG","IS_PROFILE","callback","arr","normalizedName","QRMath","glog","LOG_TABLE","gexp","EXP_TABLE","authorizationRequestKey","AUTHORIZATION_REQUEST_HANDLE_KEY","locationLike","LocalStorageBackend","BasicQueryStringUtils","generateRandom","all","setItem","toJson","url","assign","json","currentUri","origin","queryParams","authorizationResponse","authorizationError","AuthorizationError","error_description","error_uri","AuthorizationResponse","removeItem","QRPolynomial","offset","math","multiply","mod","ratio","GRANT_TYPE_REFRESH_TOKEN","grantType","refreshToken","toStringMap","map","getLens","b64","len","validLen","encodeChunk","uint8","start","end","lookup","join","byteLength","lens","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","extraBytes","parts","maxChunkLength","len2","Uint8Array","useHash","parseQueryString","hash","search","params","trim","encoded","encodeURIComponent","Mode","Polynomial","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHTypeInfo","getBCHDigit","getBCHTypeNumber","digit","getPatternPosition","typeNumber","getMask","maskPattern","getErrorCorrectPolynomial","errorCorrectLength","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","getLostPoint","qrCode","moduleCount","getModuleCount","lostPoint","row","col","sameCount","dark","isDark","count","darkCount","abs","_typeof","obj","iterator","_extends","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","descriptor","configurable","writable","_createClass","Constructor","protoProps","staticProps","_possibleConstructorReturn","self","_assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_inherits","subClass","superClass","TypeError","_setPrototypeOf","convertStr","out","charcode","generatePath","margin","ops","y","cell","x","concat","excavateModules","excavation","w","getImageSettings","cells","imageSettings","size","numCells","includeMargin","defaultSize","scale","width","height","excavate","floorX","floorY","ceil","React","QRCodeImpl","ErrorCorrectLevel","DEFAULT_PROPS","level","bgColor","fgColor","SUPPORTS_PATH2D","Path2D","addPath","QRCodeCanvas","_React$PureComponent","_getPrototypeOf2","_len","_key","imgLoaded","setState","_image","complete","handleImageLoad","update","nextProps","_this$props$imageSett","_nextProps$imageSetti","_this$props","qrcode","addData","make","_canvas","canvas","ctx","getContext","calculatedImageSettings","pixelRatio","devicePixelRatio","fillStyle","fillRect","fill","rdx","cdx","drawImage","_this2","_this$props2","style","otherProps","canvasStyle","img","imgSrc","display","onLoad","_ref","Fragment","_ref2","PureComponent","QRCodeSVG","_React$PureComponent2","_this$props3","image","xlinkHref","preserveAspectRatio","fgPath","shapeRendering","viewBox","QRCode","renderAs","defaultProps","payload","isAxiosError","Requestor","xhr","settings","$","ajax","reject","jqXhr","textStatus","AppAuthError","JQueryRequestor","URL","requestInit","method","body","URLSearchParams","searchParams","append","isJsonDataType","dataType","fetch","contentType","text","statusText","promise","TestRequestor","executor","resolvePromise","_listeners","onfulfilled","_resolve","subscribe","unsubscribe","reason","Cancel","throwIfRequested","splice","toJSON","description","number","fileName","lineNumber","columnNumber","stack","L","M","Q","H","getHookState","currentComponent","currentHook","hooks","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_reducer","nextValue","action","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","current","useImperativeHandle","createHandle","factory","useCallback","useContext","provider","useDebugValue","formatter","useErrorBoundary","cb","errState","componentDidCatch","flushAfterPaintEffects","afterPaintEffects","component","invokeCleanup","invokeEffect","hook","comp","oldArgs","newArgs","some","arg","prevRaf","oldBeforeDiff","oldBeforeRender","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","requestAnimationFrame","raf","done","clearTimeout","timeout","HAS_RAF","cancelAnimationFrame","commitQueue","authorization_endpoint","tokenEndpoint","token_endpoint","revocationEndpoint","revocation_endpoint","userInfoEndpoint","userinfo_endpoint","endSessionEndpoint","end_session_endpoint","openIdIssuerUrl","fullUrl","StorageBackend","storage","localStorage","clear","Axios","mergeConfig","createInstance","defaultConfig","extend","instanceConfig","isCancel","VERSION","version","promises","spread","default","nowInSeconds","round","Date","getTime","access_token","tokenType","token_type","expires_in","expiresIn","parseInt","idToken","id_token","issuedAt","issued_at","TokenResponse","tokenError","errorUri","TokenError","usePkce","newState","setupCodeVerifier","deriveChallenge","catch","RESPONSE_TYPE_TOKEN","config1","config2","getMergedValue","isPlainObject","merge","isArray","mergeDeepProperties","prop","isUndefined","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","createError","validateStatus","setContentTypeIfUnset","adapter","normalizeHeaderName","DEFAULT_CONTENT_TYPE","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","XMLHttpRequest","process","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","isObject","rawValue","parser","encoder","isString","stringifySafely","transformResponse","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","common","isStandardBrowserEnv","resolveURL","msie","urlParsingNode","hostname","port","originURL","navigator","userAgent","requestURL","parsed","__CANCEL__","encode","val","paramsSerializer","serializedParams","isDate","toISOString","hashmarkIndex","throwIfCancellationRequested","signal","aborted","transformData","isAbsoluteURL","combineURLs","requestedURL","relativeURL","removeNode","node","parentNode","removeChild","normalizedProps","createVNode","original","vnodeId","createRef","getDomSibling","childIndex","sibling","updateParentDomPointers","child","base","enqueueRender","rerenderQueue","prevDebounce","debounceRendering","defer","queue","sort","b","oldVNode","oldDom","parentDom","diff","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","reorderChildren","placeChild","applyRef","toChildArray","nextDom","sibDom","outer","nextSibling","insertBefore","setStyle","setProperty","IS_NON_DIMENSIONAL","dom","useCapture","cssText","eventProxyCapture","eventProxy","removeAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","componentContext","newType","contextType","doRender","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getSnapshotBeforeUpdate","diffElementNodes","root","oldHtml","newHtml","localName","createTextNode","createElementNS","is","dangerouslySetInnerHTML","diffProps","checked","parentVNode","skipRemove","componentWillUnmount","replaceNode","createContext","defaultValue","contextId","Consumer","contextValue","Provider","subs","old","ctor","handled","getDerivedStateFromError","forceUpdate","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","eject","validators","thing","deprecatedWarnings","validator","formatMessage","opt","desc","opts","warn","assertOptions","schema","allowUnknown","shallowDiffers","memo","comparer","shouldUpdate","updateRef","Memoed","isReactComponent","forwardRef","Forwarded","clone","$$typeof","REACT_FORWARD_SYMBOL","Suspense","_suspenders","suspended","lazy","loader","Lazy","prom","SuspenseList","_next","_map","Portal","container","_container","_temp","before","createPortal","parent","textContent","preactRender","preactHydrate","empty","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","createFactory","isValidElement","REACT_ELEMENT_TYPE","preactCloneElement","unmountComponentAtNode","findDOMNode","isPureReactComponent","oldDiffHook","for","mapFn","Children","only","normalized","toArray","oldCatchError","oldUnmount","suspendingVNode","suspendingComponent","resolved","onResolved","onSuspensionComplete","suspendedVNode","removeOriginal","detachedParent","originalParent","pop","wasHydrating","detachedComponent","detachedClone","fallback","list","delete","revealOrder","delegated","wrappedUnsuspend","unsuspend","Map","reverse","CAMEL_PROPS","IS_DOM","onChangeInputType","oldEventHook","persist","nativeEvent","classNameDescriptor","class","oldVNodeHook","nonCustomElement","multiple","selected","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","readContext","unstable_batchedUpdates","flushSync","StrictMode","errorCorrectLevel","dataCache","dataList","BitByte","RSBlock","BitBuffer","util","proto","newData","rsBlocks","getRSBlocks","totalDataCount","dataCount","makeImpl","getBestMaskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","pattern","createMovieClip","target_mc","instance_name","depth","qr_mc","createEmptyMovieClip","beginFill","moveTo","lineTo","endFill","bits","inc","bitIndex","byteIndex","PAD0","PAD1","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","rsPoly","modPoly","modIndex","totalCodeCount","Preact","interopDefault","getElementById","firstElementChild","app","preRenderData","inlineDataElement","decodeURI","CLI_DATA","isFunction","FormData","ArrayBuffer","isView","isNumber","pipe","product","assignValue","stripBOM","content","QRRSBlock","ECL","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","bufferToString","CHARSET","urlSafe","base64","textEncodeLite","buf","bufView","HAS_CRYPTO","HAS_SUBTLE_CRYPTO","subtle","getRandomValues","random","digest","isTokenResponse","performRevokeTokenRequest","buildURL","dispatchRequest","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","expires","path","domain","secure","cookie","toGMTString","read","match","RegExp","remove","now","NATIVE_PROFILE_SUPPORT","performance","profile","propertyKey","originalCallable","startTime","duration","profileEnd","performProfile","ignoreDuplicateOf","line","substr","settle","cookies","buildFullPath","parseHeaders","isURLSameOrigin","onCanceled","onloadend","responseHeaders","getAllResponseHeaders","responseText","requestData","requestHeaders","auth","username","password","unescape","btoa","fullPath","open","onreadystatechange","readyState","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","send"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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 = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/|\\s\\s+|\\n/g,o=(e,t)=>{let r,l=\"\",a=\"\",n=\"\";for(let c in e){let s=e[c];\"object\"==typeof s?(r=t?t.replace(/([^,])+/g,e=>c.replace(/([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):c,a+=\"@\"==c[0]?\"f\"==c[1]?o(s,c):c+\"{\"+o(s,\"k\"==c[1]?\"\":t)+\"}\":o(s,r)):\"@\"==c[0]&&\"i\"==c[1]?l=c+\" \"+s+\";\":(c=c.replace(/[A-Z]/g,\"-$&\").toLowerCase(),n+=o.p?o.p(c,s):c+\":\"+s+\";\")}return n[0]?(r=t?t+\"{\"+n+\"}\":n,l+r+a):l+a},n={},c=e=>{let t=\"\";for(let r in e)t+=r+(\"object\"==typeof e[r]?c(e[r]):e[r]);return t},s=(e,t,r,s,i)=>{let p=\"object\"==typeof e?c(e):e,u=n[p]||(n[p]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(p));if(!n[u]){let t=\"object\"==typeof e?e:(e=>{let t,r=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]&&r.shift(),t[3]?r.unshift(r[0][t[3]]=r[0][t[3]]||{}):t[4]||(r[0][t[1]]=t[2]);return r[0]})(e);n[u]=o(i?{[\"@keyframes \"+u]:t}:t,r?\"\":\".\"+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(n[u],t,s),u},i=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function p(e){let r=this||{},l=e.call?e(r.p):e;return s(l.unshift?l.raw?i(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):l,t(r.target),r.g,r.o,r.k)}let u,f,d,g=p.bind({g:1}),b=p.bind({k:1});function h(e,t,r,l){o.p=t,u=e,f=r,d=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(o,n){let c=Object.assign({},o),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=p.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=n);let i=c.as||e;return delete c.as,d&&i[0]&&d(c),u(i,c)}return t?t(a):a}}export{p as css,r as extractCss,g as glob,b as keyframes,h as setup,j as styled};\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '17.0.2'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional arugment that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n","import axios, { AxiosInstance, AxiosRequestConfig, CancelTokenSource } from 'axios';\n\nimport { addInterceptors, logRequestError, logResponseError } from 'src/utils/network';\nimport { EstablishWorkplaceLinkRequest, RequestWorkplaceLinkResponse } from 'src/models';\n\nconst requestWorkplaceLinkEndpoint = 'customer-profile/backend/v1.0/workplace-link';\nconst establishWorkplaceLinkEndpoint = 'customer-profile/customer-backend/v1.0/workplace-link';\n\nlet axiosInstance: AxiosInstance | undefined;\n\nexport const initialiseApi = async (backendUrl: string) => {\n if (axiosInstance) {\n return axiosInstance;\n }\n\n const baseUrl = backendUrl.replace(/\\/?$/, '');\n\n axiosInstance = axios.create({\n baseURL: `${baseUrl}`\n });\n\n addInterceptors(axiosInstance, {\n onRequestError: logRequestError,\n onResponseError: logResponseError\n });\n\n return axiosInstance;\n};\n\nconst getOptions = (\n accessToken: string,\n cancelToken: CancelTokenSource\n): AxiosRequestConfig<unknown> => ({\n headers: {\n Authorization: `Bearer ${accessToken}`\n },\n cancelToken: cancelToken.token\n});\n\nexport const requestWorkplaceLink = async (\n accessToken: string,\n cancelToken: CancelTokenSource\n): Promise<RequestWorkplaceLinkResponse> => {\n if (!axiosInstance) throw new Error('Api has not been initialized');\n const result = await axiosInstance.post(\n requestWorkplaceLinkEndpoint,\n {},\n getOptions(accessToken, cancelToken)\n );\n\n if (result.status == 204) return { isEstablished: true };\n\n return { isEstablished: false, linkRequest: result?.data };\n};\n\nexport const establishWorkplaceLink = (\n accessToken: string,\n linkRequestId: string,\n profileId: string,\n cancelToken: CancelTokenSource\n): Promise<void> => {\n if (!axiosInstance) throw new Error('Api has not been initialized');\n const request: EstablishWorkplaceLinkRequest = {\n linkRequestId,\n profileId\n };\n return axiosInstance.post(\n establishWorkplaceLinkEndpoint,\n request,\n getOptions(accessToken, cancelToken)\n );\n};\n","import { AuthorizationRequest } from '@openid/appauth/built/authorization_request';\nimport {\n AuthorizationNotifier,\n AuthorizationRequestHandler\n} from '@openid/appauth/built/authorization_request_handler';\nimport { RedirectRequestHandler } from '@openid/appauth/built/redirect_based_handler';\nimport {\n AuthorizationServiceConfiguration,\n AuthorizationServiceConfigurationJson\n} from '@openid/appauth/built/authorization_service_configuration';\nimport { DefaultCrypto } from '@openid/appauth/built/crypto_utils';\nimport { FetchRequestor, Requestor } from '@openid/appauth/built/xhr';\nimport { GRANT_TYPE_AUTHORIZATION_CODE, TokenRequest } from '@openid/appauth/built/token_request';\nimport {\n BaseTokenRequestHandler,\n TokenRequestHandler\n} from '@openid/appauth/built/token_request_handler';\nimport { TokenResponse } from '@openid/appauth/built/token_response';\n\nimport { StringMap } from '@openid/appauth/built/types';\n\nexport interface AuthDependencies {\n authorizationHandler: RedirectRequestHandler;\n tokenHandler: TokenRequestHandler;\n requestor: Requestor;\n}\n\nexport interface OidcConfiguration {\n openIdConnectUrl: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n state: string;\n}\n\nconst AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request';\n\nconst authorizationServiceConfigurationKey = (handle: string) => {\n return `${handle}_appauth_authorization_service_configuration`;\n};\n\n/* Cached config */\nlet configuration: AuthorizationServiceConfiguration | undefined;\n\nexport const createAuthDependencies = async (\n onStart: () => void,\n onComplete: (accessToken?: string, state?: string) => Promise<void>,\n onError: (error: string) => void\n): Promise<AuthDependencies> => {\n const notifier = new AuthorizationNotifier();\n const authorizationHandler = new RedirectRequestHandler();\n const requestor = new FetchRequestor();\n const tokenHandler = new BaseTokenRequestHandler(requestor);\n authorizationHandler.setAuthorizationNotifier(notifier);\n\n notifier.setAuthorizationListener(async (request, response, error) => {\n onStart();\n\n //prevent loading flicker\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n if (error)\n return onError(`[AuthListener]: Auth response error received: ${error.errorDescription}`);\n\n if (!response) return await onComplete();\n\n let codeVerifier: string | undefined;\n if (request.internal && request.internal.code_verifier) {\n codeVerifier = request.internal.code_verifier;\n }\n\n if (!configuration) return onError('[AuthListener]: OIDC configuration not found');\n\n try {\n const tokenResponse = await makeTokenRequest(\n response.code,\n codeVerifier,\n tokenHandler,\n request,\n configuration\n );\n\n const accessToken = getAndValidateAccessToken(tokenResponse);\n if (!accessToken || !response.state)\n return onError('[AuthListener]: Could not resolve access token or state');\n\n return await onComplete(accessToken, response.state);\n } catch (e) {\n return onError(`[AuthListener]: Token code exchange failed: ${e}`);\n }\n });\n\n return {\n authorizationHandler,\n tokenHandler,\n requestor\n };\n};\n\nexport const makeAuthorizationRequest = async (\n requestor: Requestor,\n authorizationHandler: AuthorizationRequestHandler,\n oidcConfig: OidcConfiguration\n) => {\n const config = await fetchServiceConfiguration(oidcConfig.openIdConnectUrl, requestor);\n\n const extras: StringMap = { response_mode: 'fragment', prompt: 'login', option: 'signup' };\n\n // create a request\n const request = new AuthorizationRequest(\n {\n client_id: oidcConfig.clientId,\n redirect_uri: oidcConfig.redirectUri,\n scope: oidcConfig.scope,\n response_type: AuthorizationRequest.RESPONSE_TYPE_CODE,\n state: oidcConfig.state,\n extras\n },\n new DefaultCrypto(),\n true\n );\n\n authorizationHandler.performAuthorizationRequest(config, request);\n};\n\nexport const fetchServiceConfiguration = async (openIdConnectUrl: string, requestor: Requestor) => {\n const response = await AuthorizationServiceConfiguration.fetchFromIssuer(\n openIdConnectUrl,\n requestor\n );\n\n configuration = response;\n return response;\n};\n\nexport const completeAuthIfPossible = async (authorizationHandler: RedirectRequestHandler) => {\n await tryHydrateOidcConfiguration(authorizationHandler);\n await authorizationHandler.completeAuthorizationRequestIfPossible();\n};\n\nconst makeTokenRequest = async (\n code: string,\n codeVerifier: string | undefined,\n tokenHandler: TokenRequestHandler,\n authorizationRequest: AuthorizationRequest,\n oidcConfig: AuthorizationServiceConfiguration\n) => {\n const extras: StringMap = {};\n\n if (codeVerifier) {\n extras.code_verifier = codeVerifier;\n }\n\n const request = new TokenRequest({\n client_id: authorizationRequest.clientId,\n redirect_uri: authorizationRequest.redirectUri,\n grant_type: GRANT_TYPE_AUTHORIZATION_CODE,\n code,\n refresh_token: undefined,\n extras\n });\n const response = await tokenHandler.performTokenRequest(oidcConfig, request);\n return response;\n};\n\nconst getAndValidateAccessToken = (response: TokenResponse) => {\n if (response && response.isValid()) {\n return response.accessToken;\n }\n};\n\nconst tryHydrateOidcConfiguration = async (authorizationHandler: RedirectRequestHandler) => {\n try {\n const handle = await authorizationHandler.storageBackend.getItem(\n AUTHORIZATION_REQUEST_HANDLE_KEY\n );\n const oidcConfigString =\n handle &&\n (await authorizationHandler.storageBackend.getItem(\n authorizationServiceConfigurationKey(handle)\n ));\n\n if (oidcConfigString) {\n const configJson: AuthorizationServiceConfigurationJson = JSON.parse(oidcConfigString);\n configuration = new AuthorizationServiceConfiguration(configJson);\n }\n return true;\n } catch {\n return false;\n }\n};\n","import { Fragment, FunctionalComponent, h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport jwtDecode from 'jwt-decode';\nimport { useAsyncEffect } from 'src/hooks/useAsyncEffect';\nimport { establishWorkplaceLink, requestWorkplaceLink } from 'src/services/api';\nimport {\n AuthDependencies,\n completeAuthIfPossible,\n createAuthDependencies,\n makeAuthorizationRequest,\n OidcConfiguration\n} from 'src/services/auth';\nimport { AppConfig } from 'src/components/workplaceLink';\nimport { ApolloAccessTokenClaims } from 'src/models';\nimport Loader from 'src/components/loader';\nimport Success from 'src/components/success';\nimport Error from 'src/components/error';\nimport { getLocation } from 'src/utils/window';\n\nexport const enum AuthFlowState {\n Loading,\n Redirecting,\n Returning,\n Error,\n Complete\n}\n\nconst AuthFlow: FunctionalComponent<AppConfig> = ({ apolloAccessToken }) => {\n const [appState, setAppState] = useState<AuthFlowState>(AuthFlowState.Loading);\n const [hasAttemptedComplete, setHasAttemptedComplete] = useState(false);\n const [authDependencies, setAuthDependencies] = useState<AuthDependencies>();\n\n const logError = (error: string) => {\n console.error(`[Link Workplace]: ${error}`);\n };\n\n useAsyncEffect(async (cancelToken) => {\n const onStart = () => setAppState(AuthFlowState.Returning);\n\n const onError = (error: string) => {\n logError(error);\n setAppState(AuthFlowState.Error);\n };\n\n const onComplete = async (accessToken?: string, state?: string) => {\n if (!accessToken || !state) return setAppState(AuthFlowState.Redirecting);\n\n try {\n const decoded: ApolloAccessTokenClaims = jwtDecode(apolloAccessToken);\n await establishWorkplaceLink(accessToken, state, decoded.sub, cancelToken);\n setAppState(AuthFlowState.Complete);\n } catch (e) {\n const errorMessage = e as string;\n onError(`Error when trying to establish workplace link: ${errorMessage}`);\n }\n };\n\n const authDeps = await createAuthDependencies(onStart, onComplete, onError);\n setAuthDependencies(authDeps);\n }, []);\n\n useAsyncEffect(async () => {\n if (authDependencies) {\n await completeAuthIfPossible(authDependencies.authorizationHandler);\n //prevent loading flicker and wait for attempt\n await new Promise((resolve) => setTimeout(resolve, 1000));\n setHasAttemptedComplete(true);\n }\n }, [authDependencies]);\n\n useEffect(() => {\n if (authDependencies && appState === AuthFlowState.Loading && hasAttemptedComplete) {\n setAppState(AuthFlowState.Redirecting);\n }\n }, [authDependencies, appState, hasAttemptedComplete]);\n\n useAsyncEffect(\n async (cancelToken) => {\n if (authDependencies && appState === AuthFlowState.Redirecting) {\n try {\n const response = await requestWorkplaceLink(apolloAccessToken, cancelToken);\n\n if (response.isEstablished) return setAppState(AuthFlowState.Complete);\n\n if (response.linkRequest) {\n const oidcConfig: OidcConfiguration = {\n openIdConnectUrl: response.linkRequest.openIdConnectUrl,\n clientId: response.linkRequest.clientId,\n redirectUri: getLocation(),\n scope: `${response.linkRequest.clientId} openid`,\n state: response.linkRequest.linkRequestId\n };\n\n await makeAuthorizationRequest(\n authDependencies.requestor,\n authDependencies?.authorizationHandler,\n oidcConfig\n );\n } else {\n logError(`Invalid response when requesting a workplace link`);\n setAppState(AuthFlowState.Error);\n }\n } catch (e) {\n logError(`Could not redirect to OIDC provider: ${e}`);\n setAppState(AuthFlowState.Error);\n }\n }\n },\n [authDependencies, appState]\n );\n\n const isLoading =\n appState == AuthFlowState.Loading ||\n appState == AuthFlowState.Redirecting ||\n appState == AuthFlowState.Returning;\n\n return (\n <Fragment>\n {isLoading && <Loader isActive={isLoading} />}\n {appState == AuthFlowState.Error && <Error />}\n {appState == AuthFlowState.Complete && <Success />}\n </Fragment>\n );\n};\n\nexport default AuthFlow;\n","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","/* eslint-disable react-hooks/exhaustive-deps */\nimport axios, { CancelTokenSource } from 'axios';\nimport { Inputs, useEffect } from 'preact/hooks';\n\ntype AsyncEffect<T> = (cancelToken: CancelTokenSource) => Promise<T>;\ntype UnmountEffect = () => void;\n\nexport const useAsyncEffect = (\n effect: AsyncEffect<void>,\n deps: Inputs,\n unmount?: UnmountEffect\n): void => {\n useEffect(() => {\n const cancelToken = axios.CancelToken.source();\n\n effect(cancelToken);\n\n return () => {\n if (unmount) {\n unmount();\n }\n cancelToken.cancel();\n };\n }, deps);\n};\n","import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\ninterface Interceptors {\n onRequest?: (request: AxiosRequestConfig) => Promise<void> | void;\n onRequestError?: (error: AxiosError) => Promise<void> | void;\n onResponse?: (response: AxiosResponse) => Promise<void> | void;\n onResponseError?: (error: AxiosError) => Promise<void> | void;\n}\n\nexport const addInterceptors = (\n instance: AxiosInstance,\n { onRequest, onRequestError, onResponse, onResponseError }: Interceptors\n) => {\n instance.interceptors.request.use(\n async (request) => {\n onRequest && (await onRequest(request));\n return request;\n },\n async (error) => {\n onRequestError && (await onRequestError(error));\n throw error;\n }\n );\n\n instance.interceptors.response.use(\n async (response) => {\n onResponse && (await onResponse(response));\n return response;\n },\n async (error) => {\n onResponseError && (await onResponseError(error));\n throw error;\n }\n );\n};\n\nexport const logRequestError = ({ request }: AxiosError) =>\n console.error('[API] Request error:', request);\n\nexport const logResponseError = ({ response }: AxiosError) => {\n if (response) {\n const { status, request, data } = response;\n\n console.error('[API] Response error:', status, request.responseURL, JSON.stringify(data));\n }\n};\n","import { createGlobalStyles } from 'goober/global';\nimport { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const ScreenReader = styled.span([tw`sr-only`]);\n\nexport const GlobalStyles = createGlobalStyles`\n @import url('//fonts.googleapis.com/css?family=Poppins');\n\n workplace-link {\n font-family: 'Poppins', sans-serif;\n }\n`;\n\nexport const ContextBox = styled.div([\n tw`\n mx-4 grid-cols-1 flex flex-col items-center justify-center rounded\n md:m-auto\n `,\n {\n minHeight: '25rem'\n }\n]);\n","import{css as n,styled as l}from\"goober\";let o=n.bind({g:1});function r(){const n=l.call({g:1},\"div\").apply(null,arguments);return function(l){return n(l),null}}export{r as createGlobalStyles,o as glob};\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const LoaderWrapper = styled.div([tw`w-48 h-2 relative`]);\n\nexport const PingPongLoadingBar = styled.div`\n box-sizing: border-box;\n overflow: hidden;\n position: absolute;\n\n &:after,\n &:before {\n box-sizing: border-box;\n display: none;\n }\n\n &.is-active {\n width: 12.5rem;\n height: 0.5rem;\n left: 0;\n top: 0;\n }\n\n &.is-active:after,\n &.is-active:before {\n display: block;\n }\n\n &:before {\n width: 12.5rem;\n background-color: #c2c2c2;\n }\n\n &:after,\n &:before {\n content: '';\n height: 1.25rem;\n position: absolute;\n top: calc(50% - 10px);\n left: calc(50% - 100px);\n }\n\n &:after {\n width: 3.125rem;\n background-color: #28364a;\n animation: moveBarPingPong 0.8s cubic-bezier(0.53, -0.01, 0.54, 0.99) infinite alternate;\n width: 4rem;\n animation-name: moveBarPingPong;\n }\n\n @keyframes moveBarPingPong {\n 0% {\n left: calc(50% - 9rem);\n }\n to {\n left: calc(50% - -6rem);\n }\n }\n`;\n","import { FunctionalComponent, h } from 'preact';\nimport { ContextBox, ScreenReader } from 'src/styles';\nimport { LoaderWrapper, PingPongLoadingBar } from './style';\n\ninterface Props {\n isActive: boolean;\n className?: string;\n}\n\nconst Loader: FunctionalComponent<Props> = ({ isActive, className }) => {\n return (\n <ContextBox>\n <LoaderWrapper className={className}>\n {isActive && <ScreenReader role=\"alert\">Loading...</ScreenReader>}\n <PingPongLoadingBar className={isActive ? 'is-active' : ''} aria-hidden={true} />\n </LoaderWrapper>\n </ContextBox>\n );\n};\n\nexport default Loader;\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const Wrapper = styled.div`\n ${() => tw`flex flex-col items-center text-center m-8`}\n\n font-family: 'Poppins', sans-serif;\n color: #052d39;\n\n h1 {\n ${() => tw`text-2xl font-semibold my-2`}\n }\n\n h2 {\n ${() => tw`text-base font-normal my-0`}\n }\n\n h3 {\n ${() => tw`text-sm font-semibold my-0`}\n }\n\n p {\n ${() => tw` text-sm font-normal my-0`}\n }\n`;\n\nexport const QRWrapper = styled.div`\n ${() => tw`my-10`}\n`;\n\nexport const Badges = styled.div`\n ${() => tw`grid-cols-2`}\n`;\n\nexport const SVG = styled.img`\n ${() => tw`m-2 h-8 inline-block`}\n`;\n\nexport const PNG = styled.img`\n ${() => tw`m-2 h-12 inline-block`}\n`;\n\nexport const BadgeLink = styled.a``;\n\nexport const Hero = styled.img`\n ${() => tw`h-24 my-2`}\n`;\n","import { FunctionalComponent, h } from 'preact';\nimport { BadgeLink, Badges, Hero, PNG, QRWrapper, SVG, Wrapper } from './style';\nimport QRCode from 'qrcode.react';\nimport googlePlay from 'src/assets/google-play-badge.png';\nimport appleStore from 'src/assets/apple-store-badge.svg';\nimport fireworks from 'src/assets/fireworks.png';\nimport { ContextBox } from 'src/styles';\n\ninterface Props {\n className?: string;\n}\n\nconst GOOGLE_DOWNLOAD = 'https://play.google.com/store/apps/details?id=com.flarehr.payandbenefits';\nconst APPLE_DOWNLOAD = 'https://apps.apple.com/us/app/flare/id1587276031';\nconst QR_CODE_LINK = 'https://esjpe.app.link';\n\nconst Success: FunctionalComponent<Props> = () => {\n return (\n <ContextBox>\n <Wrapper>\n <Hero src={fireworks} />\n <h1>You’re registered!</h1>\n <h2>To start accessing your benefits, download the Flare app and sign in!</h2>\n <QRWrapper>\n <QRCode value={QR_CODE_LINK} />\n </QRWrapper>\n\n <h3>Download the Flare App</h3>\n <p>Available on iOS and Android</p>\n <Badges>\n <BadgeLink href={APPLE_DOWNLOAD}>\n <SVG src={appleStore} />\n </BadgeLink>\n <BadgeLink href={GOOGLE_DOWNLOAD}>\n <PNG src={googlePlay} />\n </BadgeLink>\n </Badges>\n </Wrapper>\n </ContextBox>\n );\n};\n\nexport default Success;\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const CrossIcon = styled.img`\n ${() => tw`h-28 mb-10`}\n`;\n\nexport const Wrapper = styled.div`\n ${() => tw`flex flex-col items-center text-center my-24 w-full`}\n\n h1 {\n ${() => tw`text-xl font-semibold mb-2`}\n }\n\n p {\n ${() => tw`text-base font-normal my-0`}\n }\n`;\n","import { FunctionalComponent, h } from 'preact';\nimport cross from 'src/assets/cross-icon.svg';\nimport { CrossIcon, Wrapper } from './style';\n\ninterface Props {\n className?: string;\n}\n\nconst Error: FunctionalComponent<Props> = () => {\n return (\n <Wrapper>\n <CrossIcon src={cross} />\n <h1>Something went wrong!</h1>\n <p>We’re having some difficulties.</p>\n <p>Please try again shortly.</p>\n </Wrapper>\n );\n};\n\nexport default Error;\n","export const getLocation = () =>\n `${window.location.protocol}//${window.location.host}${window.location.pathname}`;\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const Container = styled.div([tw`flex items-center justify-center`]);\n","import { setup } from 'goober';\nimport { FunctionalComponent, h } from 'preact';\nimport AuthFlow from 'src/components/authFlow';\nimport { useAsyncEffect } from 'src/hooks/useAsyncEffect';\nimport { initialiseApi } from 'src/services/api';\nimport { GlobalStyles } from 'src/styles';\nimport { Container } from './style';\n\ninterface WorkplaceLinkingProps {\n ['backend-url']: string;\n ['access-token']: string;\n}\n\nexport interface AppConfig {\n backendUrl: string;\n apolloAccessToken: string;\n}\n\nsetup(h);\n\nconst WorkplaceLink: FunctionalComponent<WorkplaceLinkingProps> = (props) => {\n const config = {\n backendUrl: props['backend-url'],\n apolloAccessToken: props['access-token']\n };\n\n useAsyncEffect(async () => {\n await initialiseApi(config.backendUrl);\n }, [config.backendUrl]);\n\n return (\n <div id=\"preact_root\">\n <GlobalStyles />\n <Container>\n <AuthFlow {...config} />\n </Container>\n </div>\n );\n};\n\nexport default WorkplaceLink;\n","import WorkplaceLink from './components/workplaceLink';\nimport register from 'preact-custom-element';\n\nregister(WorkplaceLink, 'workplace-link', ['backend-url', 'access-token'], {\n shadow: false\n});\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","module.exports = \"data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0ibGl2ZXR5cGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjExOS42NjQwNyIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDExOS42NjQwNyA0MCI+CiAgPHRpdGxlPkRvd25sb2FkX29uX3RoZV9BcHBfU3RvcmVfQmFkZ2VfVVMtVUtfUkdCX2Jsa180U1ZHXzA5MjkxNzwvdGl0bGU+CiAgPGc+CiAgICA8Zz4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTExMC4xMzQ3NywwSDkuNTM0NjhjLS4zNjY3LDAtLjcyOSwwLTEuMDk0NzMuMDAyLS4zMDYxNS4wMDItLjYwOTg2LjAwNzgxLS45MTg5NS4wMTI3QTEzLjIxNDc2LDEzLjIxNDc2LDAsMCwwLDUuNTE3MS4xOTE0MWE2LjY2NTA5LDYuNjY1MDksMCwwLDAtMS45MDA4OC42MjdBNi40Mzc3OSw2LjQzNzc5LDAsMCwwLDEuOTk3NTcsMS45OTcwNyw2LjI1ODQ0LDYuMjU4NDQsMCwwLDAsLjgxOTM1LDMuNjE4MTZhNi42MDExOSw2LjYwMTE5LDAsMCwwLS42MjUsMS45MDMzMiwxMi45OTMsMTIuOTkzLDAsMCwwLS4xNzkyLDIuMDAyQy4wMDU4Nyw3LjgzMDA4LjAwNDg5LDguMTM3NywwLDguNDQ0MzRWMzEuNTU4NmMuMDA0ODkuMzEwNS4wMDU4Ny42MTEzLjAxNTE1LjkyMTlhMTIuOTkyMzIsMTIuOTkyMzIsMCwwLDAsLjE3OTIsMi4wMDE5LDYuNTg3NTYsNi41ODc1NiwwLDAsMCwuNjI1LDEuOTA0M0E2LjIwNzc4LDYuMjA3NzgsMCwwLDAsMS45OTc1NywzOC4wMDFhNi4yNzQ0NSw2LjI3NDQ1LDAsMCwwLDEuNjE4NjUsMS4xNzg3LDYuNzAwODIsNi43MDA4MiwwLDAsMCwxLjkwMDg4LjYzMDgsMTMuNDU1MTQsMTMuNDU1MTQsMCwwLDAsMi4wMDM5LjE3NjhjLjMwOTA5LjAwNjguNjEyOC4wMTA3LjkxODk1LjAxMDdDOC44MDU2Nyw0MCw5LjE2OCw0MCw5LjUzNDY4LDQwSDExMC4xMzQ3N2MuMzU5NCwwLC43MjQ2LDAsMS4wODQtLjAwMi4zMDQ3LDAsLjYxNzItLjAwMzkuOTIxOS0uMDEwN2ExMy4yNzksMTMuMjc5LDAsMCwwLDItLjE3NjgsNi44MDQzMiw2LjgwNDMyLDAsMCwwLDEuOTA4Mi0uNjMwOCw2LjI3NzQyLDYuMjc3NDIsMCwwLDAsMS42MTcyLTEuMTc4Nyw2LjM5NDgyLDYuMzk0ODIsMCwwLDAsMS4xODE2LTEuNjE0Myw2LjYwNDEzLDYuNjA0MTMsMCwwLDAsLjYxOTEtMS45MDQzLDEzLjUwNjQzLDEzLjUwNjQzLDAsMCwwLC4xODU2LTIuMDAxOWMuMDAzOS0uMzEwNi4wMDM5LS42MTE0LjAwMzktLjkyMTkuMDA3OC0uMzYzMy4wMDc4LS43MjQ2LjAwNzgtMS4wOTM4VjkuNTM2MTNjMC0uMzY2MjEsMC0uNzI5NDktLjAwNzgtMS4wOTE3OSwwLS4zMDY2NCwwLS42MTQyNi0uMDAzOS0uOTIwOWExMy41MDcxLDEzLjUwNzEsMCwwLDAtLjE4NTYtMi4wMDIsNi42MTc3LDYuNjE3NywwLDAsMC0uNjE5MS0xLjkwMzMyLDYuNDY2MTksNi40NjYxOSwwLDAsMC0yLjc5ODgtMi43OTk4LDYuNzY3NTQsNi43Njc1NCwwLDAsMC0xLjkwODItLjYyNywxMy4wNDM5NCwxMy4wNDM5NCwwLDAsMC0yLS4xNzY3NmMtLjMwNDctLjAwNDg4LS42MTcyLS4wMTA3NC0uOTIxOS0uMDEyNjktLjM1OTQtLjAwMi0uNzI0Ni0uMDAyLTEuMDg0LS4wMDJaIiBzdHlsZT0iZmlsbDogI2E2YTZhNiIvPgogICAgICAgIDxwYXRoIGQ9Ik04LjQ0NDgzLDM5LjEyNWMtLjMwNDY4LDAtLjYwMi0uMDAzOS0uOTA0MjktLjAxMDdhMTIuNjg3MTQsMTIuNjg3MTQsMCwwLDEtMS44NjkxNC0uMTYzMSw1Ljg4MzgxLDUuODgzODEsMCwwLDEtMS42NTY3NC0uNTQ3OSw1LjQwNTczLDUuNDA1NzMsMCwwLDEtMS4zOTctMS4wMTY2LDUuMzIwODIsNS4zMjA4MiwwLDAsMS0xLjAyMDUxLTEuMzk2NSw1LjcyMTg2LDUuNzIxODYsMCwwLDEtLjU0My0xLjY1NzIsMTIuNDEzNTEsMTIuNDEzNTEsMCwwLDEtLjE2NjUtMS44NzVjLS4wMDYzNC0uMjEwOS0uMDE0NjQtLjkxMzEtLjAxNDY0LS45MTMxVjguNDQ0MzRTLjg4MTg1LDcuNzUyOTMuODg3Nyw3LjU0OThhMTIuMzcwMzksMTIuMzcwMzksMCwwLDEsLjE2NTUzLTEuODcyMDcsNS43NTU1LDUuNzU1NSwwLDAsMSwuNTQzNDYtMS42NjIxQTUuMzczNDksNS4zNzM0OSwwLDAsMSwyLjYxMTgzLDIuNjE3NjgsNS41NjU0Myw1LjU2NTQzLDAsMCwxLDQuMDE0MTcsMS41OTUyMWE1LjgyMzA5LDUuODIzMDksMCwwLDEsMS42NTMzMi0uNTQzOTRBMTIuNTg1ODksMTIuNTg1ODksMCwwLDEsNy41NDMuODg3MjFMOC40NDUzMi44NzVIMTExLjIxMzg3bC45MTMxLjAxMjdhMTIuMzg0OTMsMTIuMzg0OTMsMCwwLDEsMS44NTg0LjE2MjU5LDUuOTM4MzMsNS45MzgzMywwLDAsMSwxLjY3MDkuNTQ3ODUsNS41OTM3NCw1LjU5Mzc0LDAsMCwxLDIuNDE1LDIuNDE5OTMsNS43NjI2Nyw1Ljc2MjY3LDAsMCwxLC41MzUyLDEuNjQ4OTIsMTIuOTk1LDEyLjk5NSwwLDAsMSwuMTczOCwxLjg4NzIxYy4wMDI5LjI4MzIuMDAyOS41ODc0LjAwMjkuODkwMTQuMDA3OS4zNzUuMDA3OS43MzE5My4wMDc5LDEuMDkxNzlWMzAuNDY0OGMwLC4zNjMzLDAsLjcxNzgtLjAwNzksMS4wNzUyLDAsLjMyNTIsMCwuNjIzMS0uMDAzOS45Mjk3YTEyLjczMTI2LDEyLjczMTI2LDAsMCwxLS4xNzA5LDEuODUzNSw1LjczOSw1LjczOSwwLDAsMS0uNTQsMS42Nyw1LjQ4MDI5LDUuNDgwMjksMCwwLDEtMS4wMTU2LDEuMzg1Nyw1LjQxMjksNS40MTI5LDAsMCwxLTEuMzk5NCwxLjAyMjUsNS44NjE2OCw1Ljg2MTY4LDAsMCwxLTEuNjY4LjU0OTgsMTIuNTQyMTgsMTIuNTQyMTgsMCwwLDEtMS44NjkyLjE2MzFjLS4yOTI5LjAwNjgtLjU5OTYuMDEwNy0uODk3NC4wMTA3bC0xLjA4NC4wMDJaIi8+CiAgICAgIDwvZz4KICAgICAgPGcgaWQ9Il9Hcm91cF8iIGRhdGEtbmFtZT0iJmx0O0dyb3VwJmd0OyI+CiAgICAgICAgPGcgaWQ9Il9Hcm91cF8yIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgPGcgaWQ9Il9Hcm91cF8zIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgICA8cGF0aCBpZD0iX1BhdGhfIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgZD0iTTI0Ljc2ODg4LDIwLjMwMDY4YTQuOTQ4ODEsNC45NDg4MSwwLDAsMSwyLjM1NjU2LTQuMTUyMDYsNS4wNjU2Niw1LjA2NTY2LDAsMCwwLTMuOTkxMTYtMi4xNTc2OGMtMS42NzkyNC0uMTc2MjYtMy4zMDcxOSwxLjAwNDgzLTQuMTYyOSwxLjAwNDgzLS44NzIyNywwLTIuMTg5NzctLjk4NzMzLTMuNjA4NS0uOTU4MTRhNS4zMTUyOSw1LjMxNTI5LDAsMCwwLTQuNDcyOTIsMi43Mjc4N2MtMS45MzQsMy4zNDg0Mi0uNDkxNDEsOC4yNjk0NywxLjM2MTIsMTAuOTc2MDguOTI2OSwxLjMyNTM1LDIuMDEwMTgsMi44MDU4LDMuNDI3NjMsMi43NTMzLDEuMzg3MDYtLjA1NzUzLDEuOTA1MS0uODg0NDgsMy41Nzk0LS44ODQ0OCwxLjY1ODc2LDAsMi4xNDQ3OS44ODQ0OCwzLjU5MS44NTExLDEuNDg4MzgtLjAyNDE2LDIuNDI2MTMtMS4zMzEyNCwzLjMyMDUxLTIuNjY5MTRhMTAuOTYyLDEwLjk2MiwwLDAsMCwxLjUxODQyLTMuMDkyNTFBNC43ODIwNSw0Ljc4MjA1LDAsMCwxLDI0Ljc2ODg4LDIwLjMwMDY4WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgICAgPHBhdGggaWQ9Il9QYXRoXzIiIGRhdGEtbmFtZT0iJmx0O1BhdGgmZ3Q7IiBkPSJNMjIuMDM3MjUsMTIuMjEwODlhNC44NzI0OCw0Ljg3MjQ4LDAsMCwwLDEuMTE0NTItMy40OTA2Miw0Ljk1NzQ2LDQuOTU3NDYsMCwwLDAtMy4yMDc1OCwxLjY1OTYxLDQuNjM2MzQsNC42MzYzNCwwLDAsMC0xLjE0MzcxLDMuMzYxMzlBNC4wOTkwNSw0LjA5OTA1LDAsMCwwLDIyLjAzNzI1LDEyLjIxMDg5WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPGc+CiAgICAgICAgICA8cGF0aCBkPSJNNDIuMzAyMjcsMjcuMTM5NjVoLTQuNzMzNGwtMS4xMzY3MiwzLjM1NjQ1SDM0LjQyNzI3bDQuNDgzNC0xMi40MThoMi4wODNsNC40ODM0LDEyLjQxOEg0My40MzhaTTM4LjA1OTEsMjUuNTkwODJoMy43NTJsLTEuODQ5NjEtNS40NDcyN2gtLjA1MTc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik01NS4xNTk2OSwyNS45Njk3M2MwLDIuODEzNDgtMS41MDU4Niw0LjYyMTA5LTMuNzc4MzIsNC42MjEwOWEzLjA2OTMsMy4wNjkzLDAsMCwxLTIuODQ4NjMtMS41ODRoLS4wNDN2NC40ODQzOGgtMS44NTg0VjIxLjQ0MjM4SDQ4LjQzMDJ2MS41MDU4NmguMDM0MThhMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDIuODgyODEtMS42MDA1OUM1My42NDUsMjEuMzQ3NjYsNTUuMTU5NjksMjMuMTY0MDYsNTUuMTU5NjksMjUuOTY5NzNabS0xLjkxMDE2LDBjMC0xLjgzMy0uOTQ3MjctMy4wMzgwOS0yLjM5MjU4LTMuMDM4MDktMS40MTk5MiwwLTIuMzc1LDEuMjMwNDctMi4zNzUsMy4wMzgwOSwwLDEuODI0MjIuOTU1MDgsMy4wNDU5LDIuMzc1LDMuMDQ1OUM1Mi4zMDIyNywyOS4wMTU2Myw1My4yNDk1MywyNy44MTkzNCw1My4yNDk1MywyNS45Njk3M1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNNjUuMTI0NTMsMjUuOTY5NzNjMCwyLjgxMzQ4LTEuNTA1ODYsNC42MjEwOS0zLjc3ODMyLDQuNjIxMDlhMy4wNjkzLDMuMDY5MywwLDAsMS0yLjg0ODYzLTEuNTg0aC0uMDQzdjQuNDg0MzhoLTEuODU4NFYyMS40NDIzOEg1OC4zOTV2MS41MDU4NmguMDM0MThBMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDYxLjMxMiwyMS4zNDc2NkM2My42MDk4OCwyMS4zNDc2Niw2NS4xMjQ1MywyMy4xNjQwNiw2NS4xMjQ1MywyNS45Njk3M1ptLTEuOTEwMTYsMGMwLTEuODMzLS45NDcyNy0zLjAzODA5LTIuMzkyNTgtMy4wMzgwOS0xLjQxOTkyLDAtMi4zNzUsMS4yMzA0Ny0yLjM3NSwzLjAzODA5LDAsMS44MjQyMi45NTUwOCwzLjA0NTksMi4zNzUsMy4wNDU5QzYyLjI2NzExLDI5LjAxNTYzLDYzLjIxNDM4LDI3LjgxOTM0LDYzLjIxNDM4LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik03MS43MTA0NywyNy4wMzYxM2MuMTM3NywxLjIzMTQ1LDEuMzM0LDIuMDQsMi45Njg3NSwyLjA0LDEuNTY2NDEsMCwyLjY5MzM2LS44MDg1OSwyLjY5MzM2LTEuOTE4OTUsMC0uOTYzODctLjY3OTY5LTEuNTQxLTIuMjg5MDYtMS45MzY1MmwtMS42MDkzNy0uMzg3N2MtMi4yODAyNy0uNTUwNzgtMy4zMzg4Ny0xLjYxNzE5LTMuMzM4ODctMy4zNDc2NiwwLTIuMTQyNTgsMS44NjcxOS0zLjYxNDI2LDQuNTE4NTUtMy42MTQyNiwyLjYyNCwwLDQuNDIyODUsMS40NzE2OCw0LjQ4MzQsMy42MTQyNmgtMS44NzZjLS4xMTIzLTEuMjM5MjYtMS4xMzY3Mi0xLjk4NzMtMi42MzM3OS0xLjk4NzNzLTIuNTIxNDguNzU2ODQtMi41MjE0OCwxLjg1ODRjMCwuODc3OTMuNjU0MywxLjM5NDUzLDIuMjU0ODgsMS43OWwxLjM2ODE2LjMzNTk0YzIuNTQ3ODUuNjAyNTQsMy42MDY0NSwxLjYyNiwzLjYwNjQ1LDMuNDQyMzgsMCwyLjMyMzI0LTEuODUwNTksMy43NzgzMi00Ljc5Mzk1LDMuNzc4MzItMi43NTM5MSwwLTQuNjEzMjgtMS40MjA5LTQuNzMzNC0zLjY2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODMuMzQ2MjEsMTkuMjk5OHYyLjE0MjU4aDEuNzIxNjh2MS40NzE2OEg4My4zNDYyMXY0Ljk5MTIxYzAsLjc3NTM5LjM0NDczLDEuMTM2NzIsMS4xMDE1NiwxLjEzNjcyYTUuODA3NTIsNS44MDc1MiwwLDAsMCwuNjExMzMtLjA0M3YxLjQ2Mjg5YTUuMTAzNTEsNS4xMDM1MSwwLDAsMS0xLjAzMjIzLjA4NTk0Yy0xLjgzMywwLTIuNTQ3ODUtLjY4ODQ4LTIuNTQ3ODUtMi40NDQzNFYyMi45MTQwNkg4MC4xNjI2MlYyMS40NDIzOEg4MS40NzlWMTkuMjk5OFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODYuMDY1LDI1Ljk2OTczYzAtMi44NDg2MywxLjY3NzczLTQuNjM4NjcsNC4yOTM5NS00LjYzODY3LDIuNjI1LDAsNC4yOTQ5MiwxLjc5LDQuMjk0OTIsNC42Mzg2NywwLDIuODU2NDUtMS42NjExMyw0LjYzODY3LTQuMjk0OTIsNC42Mzg2N0M4Ny43MjYwOSwzMC42MDg0LDg2LjA2NSwyOC44MjYxNyw4Ni4wNjUsMjUuOTY5NzNabTYuNjk1MzEsMGMwLTEuOTU0MS0uODk1NTEtMy4xMDc0Mi0yLjQwMTM3LTMuMTA3NDJzLTIuNDAwMzksMS4xNjIxMS0yLjQwMDM5LDMuMTA3NDJjMCwxLjk2MTkxLjg5NDUzLDMuMTA2NDUsMi40MDAzOSwzLjEwNjQ1UzkyLjc2MDI3LDI3LjkzMTY0LDkyLjc2MDI3LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik05Ni4xODYwNiwyMS40NDIzOGgxLjc3MjQ2djEuNTQxaC4wNDNhMi4xNTk0LDIuMTU5NCwwLDAsMSwyLjE3NzczLTEuNjM1NzQsMi44NjYxNiwyLjg2NjE2LDAsMCwxLC42MzY3Mi4wNjkzNHYxLjczODI4YTIuNTk3OTQsMi41OTc5NCwwLDAsMC0uODM1LS4xMTIzLDEuODcyNjQsMS44NzI2NCwwLDAsMC0xLjkzNjUyLDIuMDgzdjUuMzcwMTJoLTEuODU4NFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNMTA5LjM4NDMsMjcuODM2OTFjLS4yNSwxLjY0MzU1LTEuODUwNTksMi43NzE0OC0zLjg5ODQ0LDIuNzcxNDgtMi42MzM3OSwwLTQuMjY4NTUtMS43NjQ2NS00LjI2ODU1LTQuNTk1NywwLTIuODM5ODQsMS42NDM1NS00LjY4MTY0LDQuMTkwNDMtNC42ODE2NCwyLjUwNDg4LDAsNC4wODAwOCwxLjcyMDcsNC4wODAwOCw0LjQ2NTgydi42MzY3MmgtNi4zOTQ1M3YuMTEyM2EyLjM1OCwyLjM1OCwwLDAsMCwyLjQzNTU1LDIuNTY0NDUsMi4wNDgzNCwyLjA0ODM0LDAsMCwwLDIuMDkwODItMS4yNzM0NFptLTYuMjgyMjMtMi43MDIxNWg0LjUyNjM3YTIuMTc3MywyLjE3NzMsMCwwLDAtMi4yMjA3LTIuMjk3ODVBMi4yOTIsMi4yOTIsMCwwLDAsMTAzLjEwMjA3LDI1LjEzNDc3WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJfR3JvdXBfNCIgZGF0YS1uYW1lPSImbHQ7R3JvdXAmZ3Q7Ij4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTM3LjgyNjE5LDguNzMxYTIuNjM5NjQsMi42Mzk2NCwwLDAsMSwyLjgwNzYyLDIuOTY0ODRjMCwxLjkwNjI1LTEuMDMwMjcsMy4wMDItMi44MDc2MiwzLjAwMkgzNS42NzA5MlY4LjczMVptLTEuMjI4NTIsNS4xMjNoMS4xMjVhMS44NzU4OCwxLjg3NTg4LDAsMCwwLDEuOTY3NzctMi4xNDYsMS44ODEsMS44ODEsMCwwLDAtMS45Njc3Ny0yLjEzMzc5aC0xLjEyNVoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTQxLjY4MDY4LDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDNDQuNTc1MjIsMTMuOTk0NjMsNDUuMDEzNjksMTMuNDI0MzIsNDUuMDEzNjksMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01MS41NzMyNiwxNC42OTc3NWgtLjkyMTg3bC0uOTMwNjYtMy4zMTY0MWgtLjA3MDMxbC0uOTI2NzYsMy4zMTY0MWgtLjkxMzA5bC0xLjI0MTIxLTQuNTAyOTNoLjkwMTM3bC44MDY2NCwzLjQzNmguMDY2NDFsLjkyNTc4LTMuNDM2aC44NTI1NGwuOTI1NzgsMy40MzZoLjA3MDMxbC44MDI3My0zLjQzNmguODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01My44NTM1NCwxMC4xOTQ4Mkg1NC43MDl2LjcxNTMzaC4wNjY0MWExLjM0OCwxLjM0OCwwLDAsMSwxLjM0Mzc1LS44MDIyNSwxLjQ2NDU2LDEuNDY0NTYsMCwwLDEsMS41NTg1OSwxLjY3NDh2Mi45MTVoLS44ODg2N1YxMi4wMDU4NmMwLS43MjM2My0uMzE0NDUtMS4wODM1LS45NzE2OC0xLjA4MzVhMS4wMzI5NCwxLjAzMjk0LDAsMCwwLTEuMDc1MiwxLjE0MTExdjIuNjM0MjhoLS44ODg2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTU5LjA5Mzc3LDguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02MS4yMTc3OSwxMi40NDQzNGEyLjEzMzQ2LDIuMTMzNDYsMCwxLDEsNC4yNDc1NiwwLDIuMTMzOCwyLjEzMzgsMCwxLDEtNC4yNDc1NiwwWm0zLjMzMywwYzAtLjk3NjA3LS40Mzg0OC0xLjU0Njg3LTEuMjA4LTEuNTQ2ODctLjc3MjQ2LDAtMS4yMDcuNTcwOC0xLjIwNywxLjU0Njg4LDAsLjk4Mzg5LjQzNDU3LDEuNTUwMjksMS4yMDcsMS41NTAyOUM2NC4xMTIzMiwxMy45OTQ2Myw2NC41NTA4LDEzLjQyNDMyLDY0LjU1MDgsMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02Ni40MDA5LDEzLjQyNDMyYzAtLjgxMDU1LjYwMzUyLTEuMjc3ODMsMS42NzQ4LTEuMzQ0MjRsMS4yMTk3My0uMDcwMzF2LS4zODg2N2MwLS40NzU1OS0uMzE0NDUtLjc0NDE0LS45MjE4Ny0uNzQ0MTQtLjQ5NjA5LDAtLjgzOTg0LjE4MjEzLS45Mzg0OC41MDA0OWgtLjg2MDM1Yy4wOTA4Mi0uNzczNDQuODE4MzYtMS4yNjk1MywxLjgzOTg0LTEuMjY5NTMsMS4xMjg5MSwwLDEuNzY1NjMuNTYyLDEuNzY1NjMsMS41MTMxOHYzLjA3NjY2aC0uODU1NDd2LS42MzI4MWgtLjA3MDMxYTEuNTE1LDEuNTE1LDAsMCwxLTEuMzUyNTQuNzA3QTEuMzYwMjYsMS4zNjAyNiwwLDAsMSw2Ni40MDA5LDEzLjQyNDMyWm0yLjg5NDUzLS4zODQ3N3YtLjM3NjQ2bC0xLjA5OTYxLjA3MDMxYy0uNjIwMTIuMDQxNS0uOTAxMzcuMjUyNDQtLjkwMTM3LjY0OTQxLDAsLjQwNTI3LjM1MTU2LjY0MTExLjgzNS42NDExMUExLjA2MTUsMS4wNjE1LDAsMCwwLDY5LjI5NTQzLDEzLjAzOTU1WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8cGF0aCBkPSJNNzEuMzQ4MTYsMTIuNDQ0MzRjMC0xLjQyMjg1LjczMTQ1LTIuMzI0MjIsMS44NjkxNC0yLjMyNDIyYTEuNDg0LDEuNDg0LDAsMCwxLDEuMzgwODYuNzloLjA2NjQxVjguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODUxNTZ2LS43MTE0M2gtLjA3MDMxYTEuNTYyODQsMS41NjI4NCwwLDAsMS0xLjQxNDA2Ljc4NTY0QzcyLjA3MTgsMTQuNzcyLDcxLjM0ODE2LDEzLjg3MDYxLDcxLjM0ODE2LDEyLjQ0NDM0Wm0uOTE4LDBjMCwuOTU1MDguNDUwMiwxLjUyOTc5LDEuMjAzMTMsMS41Mjk3OS43NDksMCwxLjIxMTkxLS41ODMsMS4yMTE5MS0xLjUyNTg4LDAtLjkzODQ4LS40Njc3Ny0xLjUyOTc5LTEuMjExOTEtMS41Mjk3OUM3Mi43MjEyMSwxMC45MTg0Niw3Mi4yNjYxMywxMS40OTcwNyw3Mi4yNjYxMywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTc5LjIzLDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDODIuMTI0NTMsMTMuOTk0NjMsODIuNTYzLDEzLjQyNDMyLDgyLjU2MywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTg0LjY2OTQ1LDEwLjE5NDgyaC44NTU0N3YuNzE1MzNoLjA2NjQxYTEuMzQ4LDEuMzQ4LDAsMCwxLDEuMzQzNzUtLjgwMjI1LDEuNDY0NTYsMS40NjQ1NiwwLDAsMSwxLjU1ODU5LDEuNjc0OHYyLjkxNUg4Ny42MDVWMTIuMDA1ODZjMC0uNzIzNjMtLjMxNDQ1LTEuMDgzNS0uOTcxNjgtMS4wODM1YTEuMDMyOTQsMS4wMzI5NCwwLDAsMC0xLjA3NTIsMS4xNDExMXYyLjYzNDI4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05My41MTUxNiw5LjA3MzczdjEuMTQxNmguOTc1NTl2Ljc0ODU0aC0uOTc1NTlWMTMuMjc5M2MwLC40NzE2OC4xOTQzNC42NzgyMi42MzY3Mi42NzgyMmEyLjk2NjU3LDIuOTY2NTcsMCwwLDAsLjMzODg3LS4wMjA1MXYuNzQwMjNhMi45MTU1LDIuOTE1NSwwLDAsMS0uNDgzNC4wNDU0MWMtLjk4ODI4LDAtMS4zODE4NC0uMzQ3NjYtMS4zODE4NC0xLjIxNTgydi0yLjU0M2gtLjcxNDg0di0uNzQ4NTRoLjcxNDg0VjkuMDczNzNaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05NS43MDQ2MSw4LjQzN2guODgwODZ2Mi40ODE0NWguMDcwMzFhMS4zODU2LDEuMzg1NiwwLDAsMSwxLjM3My0uODA2NjQsMS40ODMzOSwxLjQ4MzM5LDAsMCwxLDEuNTUwNzgsMS42Nzg3MXYyLjkwNzIzSDk4LjY5di0yLjY4OGMwLS43MTkyNC0uMzM1LTEuMDgzNS0uOTYyODktMS4wODM1YTEuMDUxOTQsMS4wNTE5NCwwLDAsMC0xLjEzMzc5LDEuMTQxNnYyLjYyOTg4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDQuNzYxMjUsMTMuNDgxOTNhMS44MjgsMS44MjgsMCwwLDEtMS45NTExNywxLjMwMjczQTIuMDQ1MzEsMi4wNDUzMSwwLDAsMSwxMDAuNzMsMTIuNDYwNDVhMi4wNzY4NSwyLjA3Njg1LDAsMCwxLDIuMDc2MTctMi4zNTI1NGMxLjI1MjkzLDAsMi4wMDg3OS44NTYsMi4wMDg3OSwyLjI3VjEyLjY4OGgtMy4xNzk2OXYuMDQ5OGExLjE5MDIsMS4xOTAyLDAsMCwwLDEuMTk5MjIsMS4yOSwxLjA3OTM0LDEuMDc5MzQsMCwwLDAsMS4wNzEyOS0uNTQ1OVptLTMuMTI2LTEuNDUxMTdoMi4yNzQ0MWExLjA4NjQ3LDEuMDg2NDcsMCwwLDAtMS4xMDg0LTEuMTY2NUExLjE1MTYyLDEuMTUxNjIsMCwwLDAsMTAxLjYzNTI3LDEyLjAzMDc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\"","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","module.exports = {\n \"version\": \"0.24.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AuthorizationRequest} from './authorization_request';\nimport {AuthorizationError, AuthorizationResponse} from './authorization_response';\nimport {AuthorizationServiceConfiguration} from './authorization_service_configuration';\nimport {Crypto} from './crypto_utils';\nimport {log} from './logger';\nimport {QueryStringUtils} from './query_string_utils';\nimport {StringMap} from './types';\n\n\n/**\n * This type represents a lambda that can take an AuthorizationRequest,\n * and an AuthorizationResponse as arguments.\n */\nexport type AuthorizationListener =\n (request: AuthorizationRequest,\n response: AuthorizationResponse|null,\n error: AuthorizationError|null) => void;\n\n/**\n * Represents a structural type holding both authorization request and response.\n */\nexport interface AuthorizationRequestResponse {\n request: AuthorizationRequest;\n response: AuthorizationResponse|null;\n error: AuthorizationError|null;\n}\n\n/**\n * Authorization Service notifier.\n * This manages the communication of the AuthorizationResponse to the 3p client.\n */\nexport class AuthorizationNotifier {\n private listener: AuthorizationListener|null = null;\n\n setAuthorizationListener(listener: AuthorizationListener) {\n this.listener = listener;\n }\n\n /**\n * The authorization complete callback.\n */\n onAuthorizationComplete(\n request: AuthorizationRequest,\n response: AuthorizationResponse|null,\n error: AuthorizationError|null): void {\n if (this.listener) {\n // complete authorization request\n this.listener(request, response, error);\n }\n }\n}\n\n// TODO(rahulrav@): add more built in parameters.\n/* built in parameters. */\nexport const BUILT_IN_PARAMETERS = ['redirect_uri', 'client_id', 'response_type', 'state', 'scope'];\n\n/**\n * Defines the interface which is capable of handling an authorization request\n * using various methods (iframe / popup / different process etc.).\n */\nexport abstract class AuthorizationRequestHandler {\n constructor(public utils: QueryStringUtils, protected crypto: Crypto) {}\n\n // notifier send the response back to the client.\n protected notifier: AuthorizationNotifier|null = null;\n\n /**\n * A utility method to be able to build the authorization request URL.\n */\n protected buildRequestUrl(\n configuration: AuthorizationServiceConfiguration,\n request: AuthorizationRequest) {\n // build the query string\n // coerce to any type for convenience\n let requestMap: StringMap = {\n 'redirect_uri': request.redirectUri,\n 'client_id': request.clientId,\n 'response_type': request.responseType,\n 'state': request.state,\n 'scope': request.scope\n };\n\n // copy over extras\n if (request.extras) {\n for (let extra in request.extras) {\n if (request.extras.hasOwnProperty(extra)) {\n // check before inserting to requestMap\n if (BUILT_IN_PARAMETERS.indexOf(extra) < 0) {\n requestMap[extra] = request.extras[extra];\n }\n }\n }\n }\n\n let query = this.utils.stringify(requestMap);\n let baseUrl = configuration.authorizationEndpoint;\n let url = `${baseUrl}?${query}`;\n return url;\n }\n\n /**\n * Completes the authorization request if necessary & when possible.\n */\n completeAuthorizationRequestIfPossible(): Promise<void> {\n // call complete authorization if possible to see there might\n // be a response that needs to be delivered.\n log(`Checking to see if there is an authorization response to be delivered.`);\n if (!this.notifier) {\n log(`Notifier is not present on AuthorizationRequest handler.\n No delivery of result will be possible`)\n }\n return this.completeAuthorizationRequest().then(result => {\n if (!result) {\n log(`No result is available yet.`);\n }\n if (result && this.notifier) {\n this.notifier.onAuthorizationComplete(result.request, result.response, result.error);\n }\n });\n }\n\n /**\n * Sets the default Authorization Service notifier.\n */\n setAuthorizationNotifier(notifier: AuthorizationNotifier): AuthorizationRequestHandler {\n this.notifier = notifier;\n return this;\n };\n\n /**\n * Makes an authorization request.\n */\n abstract performAuthorizationRequest(\n configuration: AuthorizationServiceConfiguration,\n request: AuthorizationRequest): void;\n\n /**\n * Checks if an authorization flow can be completed, and completes it.\n * The handler returns a `Promise<AuthorizationRequestResponse>` if ready, or a `Promise<null>`\n * if not ready.\n */\n protected abstract completeAuthorizationRequest(): Promise<AuthorizationRequestResponse|null>;\n}\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Global flags that control the behavior of App Auth JS. */\n\n/* Logging turned on ? */\nexport const IS_LOG = true;\n\n/* Profiling turned on ? */\nexport const IS_PROFILE = false;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AuthorizationRequest} from './authorization_request';\nimport {AuthorizationRequestHandler, AuthorizationRequestResponse} from './authorization_request_handler';\nimport {AuthorizationError, AuthorizationResponse} from './authorization_response'\nimport {AuthorizationServiceConfiguration} from './authorization_service_configuration';\nimport {Crypto, DefaultCrypto} from './crypto_utils';\nimport {log} from './logger';\nimport {BasicQueryStringUtils} from './query_string_utils';\nimport {LocalStorageBackend, StorageBackend} from './storage';\nimport {LocationLike} from './types';\n\n\n/** key for authorization request. */\nconst authorizationRequestKey =\n (handle: string) => {\n return `${handle}_appauth_authorization_request`;\n }\n\n/** key for authorization service configuration */\nconst authorizationServiceConfigurationKey =\n (handle: string) => {\n return `${handle}_appauth_authorization_service_configuration`;\n }\n\n/** key in local storage which represents the current authorization request. */\nconst AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request';\n\n/**\n * Represents an AuthorizationRequestHandler which uses a standard\n * redirect based code flow.\n */\nexport class RedirectRequestHandler extends AuthorizationRequestHandler {\n constructor(\n // use the provided storage backend\n // or initialize local storage with the default storage backend which\n // uses window.localStorage\n public storageBackend: StorageBackend = new LocalStorageBackend(),\n utils = new BasicQueryStringUtils(),\n public locationLike: LocationLike = window.location,\n crypto: Crypto = new DefaultCrypto()) {\n super(utils, crypto);\n }\n\n performAuthorizationRequest(\n configuration: AuthorizationServiceConfiguration,\n request: AuthorizationRequest) {\n const handle = this.crypto.generateRandom(10);\n\n // before you make request, persist all request related data in local storage.\n const persisted = Promise.all([\n this.storageBackend.setItem(AUTHORIZATION_REQUEST_HANDLE_KEY, handle),\n // Calling toJson() adds in the code & challenge when possible\n request.toJson().then(\n result =>\n this.storageBackend.setItem(authorizationRequestKey(handle), JSON.stringify(result))),\n this.storageBackend.setItem(\n authorizationServiceConfigurationKey(handle), JSON.stringify(configuration.toJson())),\n ]);\n\n persisted.then(() => {\n // make the redirect request\n let url = this.buildRequestUrl(configuration, request);\n log('Making a request to ', request, url);\n this.locationLike.assign(url);\n });\n }\n\n /**\n * Attempts to introspect the contents of storage backend and completes the\n * request.\n */\n protected completeAuthorizationRequest(): Promise<AuthorizationRequestResponse|null> {\n // TODO(rahulrav@): handle authorization errors.\n return this.storageBackend.getItem(AUTHORIZATION_REQUEST_HANDLE_KEY).then(handle => {\n if (handle) {\n // we have a pending request.\n // fetch authorization request, and check state\n return this.storageBackend\n .getItem(authorizationRequestKey(handle))\n // requires a corresponding instance of result\n // TODO(rahulrav@): check for inconsitent state here\n .then(result => JSON.parse(result!))\n .then(json => new AuthorizationRequest(json))\n .then(request => {\n // check redirect_uri and state\n let currentUri = `${this.locationLike.origin}${this.locationLike.pathname}`;\n let queryParams = this.utils.parse(this.locationLike, true /* use hash */);\n let state: string|undefined = queryParams['state'];\n let code: string|undefined = queryParams['code'];\n let error: string|undefined = queryParams['error'];\n log('Potential authorization request ', currentUri, queryParams, state, code, error);\n let shouldNotify = state === request.state;\n let authorizationResponse: AuthorizationResponse|null = null;\n let authorizationError: AuthorizationError|null = null;\n if (shouldNotify) {\n if (error) {\n // get additional optional info.\n let errorUri = queryParams['error_uri'];\n let errorDescription = queryParams['error_description'];\n authorizationError = new AuthorizationError({\n error: error,\n error_description: errorDescription,\n error_uri: errorUri,\n state: state\n });\n } else {\n authorizationResponse = new AuthorizationResponse({code: code, state: state});\n }\n // cleanup state\n return Promise\n .all([\n this.storageBackend.removeItem(AUTHORIZATION_REQUEST_HANDLE_KEY),\n this.storageBackend.removeItem(authorizationRequestKey(handle)),\n this.storageBackend.removeItem(authorizationServiceConfigurationKey(handle))\n ])\n .then(() => {\n log('Delivering authorization response');\n return {\n request: request,\n response: authorizationResponse,\n error: authorizationError\n } as AuthorizationRequestResponse;\n });\n } else {\n log('Mismatched request (state and request_uri) dont match.');\n return Promise.resolve(null);\n }\n });\n } else {\n return null;\n }\n });\n }\n}\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {StringMap} from './types';\n\nexport const GRANT_TYPE_AUTHORIZATION_CODE = 'authorization_code';\nexport const GRANT_TYPE_REFRESH_TOKEN = 'refresh_token';\n\n/**\n * Represents the Token Request as JSON.\n */\nexport interface TokenRequestJson {\n grant_type: string;\n code?: string;\n refresh_token?: string, redirect_uri: string;\n client_id: string;\n extras?: StringMap;\n}\n\n\n/**\n * Represents an Access Token request.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-4.1.3\n */\nexport class TokenRequest {\n clientId: string;\n redirectUri: string;\n grantType: string;\n code: string|undefined;\n refreshToken: string|undefined;\n extras: StringMap|undefined\n\n constructor(request: TokenRequestJson) {\n this.clientId = request.client_id;\n this.redirectUri = request.redirect_uri;\n this.grantType = request.grant_type;\n this.code = request.code;\n this.refreshToken = request.refresh_token;\n this.extras = request.extras;\n }\n\n /**\n * Serializes a TokenRequest to a JavaScript object.\n */\n toJson(): TokenRequestJson {\n return {\n grant_type: this.grantType,\n code: this.code,\n refresh_token: this.refreshToken,\n redirect_uri: this.redirectUri,\n client_id: this.clientId,\n extras: this.extras\n };\n }\n\n toStringMap(): StringMap {\n let map: StringMap = {\n grant_type: this.grantType,\n client_id: this.clientId,\n redirect_uri: this.redirectUri\n };\n\n if (this.code) {\n map['code'] = this.code;\n }\n\n if (this.refreshToken) {\n map['refresh_token'] = this.refreshToken;\n }\n\n // copy over extras\n if (this.extras) {\n for (let extra in this.extras) {\n if (this.extras.hasOwnProperty(extra) && !map.hasOwnProperty(extra)) {\n // check before inserting to requestMap\n map[extra] = this.extras[extra];\n }\n }\n }\n return map;\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {LocationLike, StringMap} from './types';\n\n\n/**\n * Query String Utilities.\n */\nexport interface QueryStringUtils {\n stringify(input: StringMap): string;\n parse(query: LocationLike, useHash?: boolean): StringMap;\n parseQueryString(query: string): StringMap;\n}\n\nexport class BasicQueryStringUtils implements QueryStringUtils {\n parse(input: LocationLike, useHash?: boolean) {\n if (useHash) {\n return this.parseQueryString(input.hash);\n } else {\n return this.parseQueryString(input.search);\n }\n }\n\n parseQueryString(query: string): StringMap {\n let result: StringMap = {};\n // if anything starts with ?, # or & remove it\n query = query.trim().replace(/^(\\?|#|&)/, '');\n let params = query.split('&');\n for (let i = 0; i < params.length; i += 1) {\n let param = params[i]; // looks something like a=b\n let parts = param.split('=');\n if (parts.length >= 2) {\n let key = decodeURIComponent(parts.shift()!);\n let value = parts.length > 0 ? parts.join('=') : null;\n if (value) {\n result[key] = decodeURIComponent(value);\n }\n }\n }\n return result;\n }\n\n stringify(input: StringMap) {\n let encoded: string[] = [];\n for (let key in input) {\n if (input.hasOwnProperty(key) && input[key]) {\n encoded.push(`${encodeURIComponent(key)}=${encodeURIComponent(input[key])}`)\n }\n }\n return encoded.join('&');\n }\n}\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require('react');\n\nvar PropTypes = require('prop-types'); // qr.js doesn't handle error level of zero (M) so we need to do it right,\n// thus the deep require.\n\n\nvar QRCodeImpl = require('qr.js/lib/QRCode');\n\nvar ErrorCorrectLevel = require('qr.js/lib/ErrorCorrectLevel'); // TODO: pull this off of the QRCode class type so it matches.\n\n\n// Convert from UTF-16, forcing the use of byte-mode encoding in our QR Code.\n// This allows us to encode Hanji, Kanji, emoji, etc. Ideally we'd do more\n// detection and not resort to byte-mode if possible, but we're trading off\n// a smaller library for a smaller amount of data we can potentially encode.\n// Based on http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/\nfunction convertStr(str) {\n var out = '';\n\n for (var i = 0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n\n if (charcode < 0x0080) {\n out += String.fromCharCode(charcode);\n } else if (charcode < 0x0800) {\n out += String.fromCharCode(0xc0 | charcode >> 6);\n out += String.fromCharCode(0x80 | charcode & 0x3f);\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n out += String.fromCharCode(0xe0 | charcode >> 12);\n out += String.fromCharCode(0x80 | charcode >> 6 & 0x3f);\n out += String.fromCharCode(0x80 | charcode & 0x3f);\n } else {\n // This is a surrogate pair, so we'll reconsitute the pieces and work\n // from that\n i++;\n charcode = 0x10000 + ((charcode & 0x3ff) << 10 | str.charCodeAt(i) & 0x3ff);\n out += String.fromCharCode(0xf0 | charcode >> 18);\n out += String.fromCharCode(0x80 | charcode >> 12 & 0x3f);\n out += String.fromCharCode(0x80 | charcode >> 6 & 0x3f);\n out += String.fromCharCode(0x80 | charcode & 0x3f);\n }\n }\n\n return out;\n}\n\nvar DEFAULT_PROPS = {\n size: 128,\n level: 'L',\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n includeMargin: false\n};\nvar PROP_TYPES = process.env.NODE_ENV !== 'production' ? {\n value: PropTypes.string.isRequired,\n size: PropTypes.number,\n level: PropTypes.oneOf(['L', 'M', 'Q', 'H']),\n bgColor: PropTypes.string,\n fgColor: PropTypes.string,\n includeMargin: PropTypes.bool,\n imageSettings: PropTypes.shape({\n src: PropTypes.string.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n excavate: PropTypes.bool,\n x: PropTypes.number,\n y: PropTypes.number\n })\n} : {};\nvar MARGIN_SIZE = 4; // This is *very* rough estimate of max amount of QRCode allowed to be covered.\n// It is \"wrong\" in a lot of ways (area is a terrible way to estimate, it\n// really should be number of modules covered), but if for some reason we don't\n// get an explicit height or width, I'd rather default to something than throw.\n\nvar DEFAULT_IMG_SCALE = 0.1;\n\nfunction generatePath(modules) {\n var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var ops = [];\n modules.forEach(function (row, y) {\n var start = null;\n row.forEach(function (cell, x) {\n if (!cell && start !== null) {\n // M0 0h7v1H0z injects the space with the move and drops the comma,\n // saving a char per operation\n ops.push(\"M\".concat(start + margin, \" \").concat(y + margin, \"h\").concat(x - start, \"v1H\").concat(start + margin, \"z\"));\n start = null;\n return;\n } // end of row, clean up or skip\n\n\n if (x === row.length - 1) {\n if (!cell) {\n // We would have closed the op above already so this can only mean\n // 2+ light modules in a row.\n return;\n }\n\n if (start === null) {\n // Just a single dark module.\n ops.push(\"M\".concat(x + margin, \",\").concat(y + margin, \" h1v1H\").concat(x + margin, \"z\"));\n } else {\n // Otherwise finish the current line.\n ops.push(\"M\".concat(start + margin, \",\").concat(y + margin, \" h\").concat(x + 1 - start, \"v1H\").concat(start + margin, \"z\"));\n }\n\n return;\n }\n\n if (cell && start === null) {\n start = x;\n }\n });\n });\n return ops.join('');\n} // We could just do this in generatePath, except that we want to support\n// non-Path2D canvas, so we need to keep it an explicit step.\n\n\nfunction excavateModules(modules, excavation) {\n return modules.slice().map(function (row, y) {\n if (y < excavation.y || y >= excavation.y + excavation.h) {\n return row;\n }\n\n return row.map(function (cell, x) {\n if (x < excavation.x || x >= excavation.x + excavation.w) {\n return cell;\n }\n\n return false;\n });\n });\n}\n\nfunction getImageSettings(props, cells) {\n var imageSettings = props.imageSettings,\n size = props.size,\n includeMargin = props.includeMargin;\n\n if (imageSettings == null) {\n return null;\n }\n\n var margin = includeMargin ? MARGIN_SIZE : 0;\n var numCells = cells.length + margin * 2;\n var defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n var scale = numCells / size;\n var w = (imageSettings.width || defaultSize) * scale;\n var h = (imageSettings.height || defaultSize) * scale;\n var x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n var y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n var excavation = null;\n\n if (imageSettings.excavate) {\n var floorX = Math.floor(x);\n var floorY = Math.floor(y);\n var ceilW = Math.ceil(w + x - floorX);\n var ceilH = Math.ceil(h + y - floorY);\n excavation = {\n x: floorX,\n y: floorY,\n w: ceilW,\n h: ceilH\n };\n }\n\n return {\n x: x,\n y: y,\n h: h,\n w: w,\n excavation: excavation\n };\n} // For canvas we're going to switch our drawing mode based on whether or not\n// the environment supports Path2D. We only need the constructor to be\n// supported, but Edge doesn't actually support the path (string) type\n// argument. Luckily it also doesn't support the addPath() method. We can\n// treat that as the same thing.\n\n\nvar SUPPORTS_PATH2D = function () {\n try {\n new Path2D().addPath(new Path2D());\n } catch (e) {\n return false;\n }\n\n return true;\n}();\n\nvar QRCodeCanvas =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(QRCodeCanvas, _React$PureComponent);\n\n function QRCodeCanvas() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, QRCodeCanvas);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(QRCodeCanvas)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_canvas\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_image\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n imgLoaded: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleImageLoad\", function () {\n _this.setState({\n imgLoaded: true\n });\n });\n\n return _this;\n }\n\n _createClass(QRCodeCanvas, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this._image && this._image.complete) {\n this.handleImageLoad();\n }\n\n this.update();\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this$props$imageSett, _nextProps$imageSetti;\n\n var currentSrc = (_this$props$imageSett = this.props.imageSettings) === null || _this$props$imageSett === void 0 ? void 0 : _this$props$imageSett.src;\n var nextSrc = (_nextProps$imageSetti = nextProps.imageSettings) === null || _nextProps$imageSetti === void 0 ? void 0 : _nextProps$imageSetti.src;\n\n if (currentSrc !== nextSrc) {\n this.setState({\n imgLoaded: false\n });\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: \"update\",\n value: function update() {\n var _this$props = this.props,\n value = _this$props.value,\n size = _this$props.size,\n level = _this$props.level,\n bgColor = _this$props.bgColor,\n fgColor = _this$props.fgColor,\n includeMargin = _this$props.includeMargin,\n imageSettings = _this$props.imageSettings; // We'll use type===-1 to force QRCode to automatically pick the best type\n\n var qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n qrcode.addData(convertStr(value));\n qrcode.make();\n\n if (this._canvas != null) {\n var canvas = this._canvas;\n var ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n var cells = qrcode.modules;\n\n if (cells === null) {\n return;\n }\n\n var margin = includeMargin ? MARGIN_SIZE : 0;\n var numCells = cells.length + margin * 2;\n var calculatedImageSettings = getImageSettings(this.props, cells);\n\n if (imageSettings != null && calculatedImageSettings != null) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n } // We're going to scale this so that the number of drawable units\n // matches the number of cells. This avoids rounding issues, but does\n // result in some potentially unwanted single pixel issues between\n // blocks, only in environments that don't support Path2D.\n\n\n var pixelRatio = window.devicePixelRatio || 1;\n canvas.height = canvas.width = size * pixelRatio;\n var scale = size / numCells * pixelRatio;\n ctx.scale(scale, scale); // Draw solid background, only paint dark modules.\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, numCells, numCells);\n ctx.fillStyle = fgColor;\n\n if (SUPPORTS_PATH2D) {\n // $FlowFixMe: Path2D c'tor doesn't support args yet.\n ctx.fill(new Path2D(generatePath(cells, margin)));\n } else {\n cells.forEach(function (row, rdx) {\n row.forEach(function (cell, cdx) {\n if (cell) {\n ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n }\n });\n });\n }\n\n if (this.state.imgLoaded && this._image && calculatedImageSettings != null) {\n ctx.drawImage(this._image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n value = _this$props2.value,\n size = _this$props2.size,\n level = _this$props2.level,\n bgColor = _this$props2.bgColor,\n fgColor = _this$props2.fgColor,\n style = _this$props2.style,\n includeMargin = _this$props2.includeMargin,\n imageSettings = _this$props2.imageSettings,\n otherProps = _objectWithoutProperties(_this$props2, [\"value\", \"size\", \"level\", \"bgColor\", \"fgColor\", \"style\", \"includeMargin\", \"imageSettings\"]);\n\n var canvasStyle = _objectSpread({\n height: size,\n width: size\n }, style);\n\n var img = null;\n var imgSrc = imageSettings && imageSettings.src;\n\n if (imageSettings != null && imgSrc != null) {\n img = React.createElement(\"img\", {\n src: imgSrc,\n style: {\n display: 'none'\n },\n onLoad: this.handleImageLoad,\n ref: function ref(_ref) {\n return _this2._image = _ref;\n }\n });\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"canvas\", _extends({\n style: canvasStyle,\n height: size,\n width: size,\n ref: function ref(_ref2) {\n return _this2._canvas = _ref2;\n }\n }, otherProps)), img);\n }\n }]);\n\n return QRCodeCanvas;\n}(React.PureComponent);\n\n_defineProperty(QRCodeCanvas, \"defaultProps\", DEFAULT_PROPS);\n\nif (process.env.NODE_ENV !== 'production') {\n QRCodeCanvas.propTypes = PROP_TYPES;\n}\n\nvar QRCodeSVG =\n/*#__PURE__*/\nfunction (_React$PureComponent2) {\n _inherits(QRCodeSVG, _React$PureComponent2);\n\n function QRCodeSVG() {\n _classCallCheck(this, QRCodeSVG);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(QRCodeSVG).apply(this, arguments));\n }\n\n _createClass(QRCodeSVG, [{\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n value = _this$props3.value,\n size = _this$props3.size,\n level = _this$props3.level,\n bgColor = _this$props3.bgColor,\n fgColor = _this$props3.fgColor,\n includeMargin = _this$props3.includeMargin,\n imageSettings = _this$props3.imageSettings,\n otherProps = _objectWithoutProperties(_this$props3, [\"value\", \"size\", \"level\", \"bgColor\", \"fgColor\", \"includeMargin\", \"imageSettings\"]); // We'll use type===-1 to force QRCode to automatically pick the best type\n\n\n var qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n qrcode.addData(convertStr(value));\n qrcode.make();\n var cells = qrcode.modules;\n\n if (cells === null) {\n return null;\n }\n\n var margin = includeMargin ? MARGIN_SIZE : 0;\n var numCells = cells.length + margin * 2;\n var calculatedImageSettings = getImageSettings(this.props, cells);\n var image = null;\n\n if (imageSettings != null && calculatedImageSettings != null) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n\n image = React.createElement(\"image\", {\n xlinkHref: imageSettings.src,\n height: calculatedImageSettings.h,\n width: calculatedImageSettings.w,\n x: calculatedImageSettings.x + margin,\n y: calculatedImageSettings.y + margin,\n preserveAspectRatio: \"none\"\n });\n } // Drawing strategy: instead of a rect per module, we're going to create a\n // single path for the dark modules and layer that on top of a light rect,\n // for a total of 2 DOM nodes. We pay a bit more in string concat but that's\n // way faster than DOM ops.\n // For level 1, 441 nodes -> 2\n // For level 40, 31329 -> 2\n\n\n var fgPath = generatePath(cells, margin);\n return React.createElement(\"svg\", _extends({\n shapeRendering: \"crispEdges\",\n height: size,\n width: size,\n viewBox: \"0 0 \".concat(numCells, \" \").concat(numCells)\n }, otherProps), React.createElement(\"path\", {\n fill: bgColor,\n d: \"M0,0 h\".concat(numCells, \"v\").concat(numCells, \"H0z\")\n }), React.createElement(\"path\", {\n fill: fgColor,\n d: fgPath\n }), image);\n }\n }]);\n\n return QRCodeSVG;\n}(React.PureComponent);\n\n_defineProperty(QRCodeSVG, \"defaultProps\", DEFAULT_PROPS);\n\nif (process.env.NODE_ENV !== 'production') {\n QRCodeSVG.propTypes = PROP_TYPES;\n}\n\nvar QRCode = function QRCode(props) {\n var renderAs = props.renderAs,\n otherProps = _objectWithoutProperties(props, [\"renderAs\"]);\n\n var Component = renderAs === 'svg' ? QRCodeSVG : QRCodeCanvas;\n return React.createElement(Component, otherProps);\n};\n\nQRCode.defaultProps = _objectSpread({\n renderAs: 'canvas'\n}, DEFAULT_PROPS);\nmodule.exports = QRCode;","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AppAuthError} from './errors';\n\n/**\n * An class that abstracts away the ability to make an XMLHttpRequest.\n */\nexport abstract class Requestor {\n abstract xhr<T>(settings: JQueryAjaxSettings): Promise<T>;\n}\n\n/**\n * Uses $.ajax to makes the Ajax requests.\n */\nexport class JQueryRequestor extends Requestor {\n xhr<T>(settings: JQueryAjaxSettings): Promise<T> {\n // NOTE: using jquery to make XHR's as whatwg-fetch requires\n // that I target ES6.\n const xhr = $.ajax(settings);\n return new Promise<T>((resolve, reject) => {\n xhr.then(\n (data, textStatus, jqXhr) => {\n resolve(data as T);\n },\n (jqXhr, textStatus, error) => {\n reject(new AppAuthError(error));\n });\n });\n }\n}\n\n\n/**\n * Uses fetch API to make Ajax requests\n */\nexport class FetchRequestor extends Requestor {\n xhr<T>(settings: JQueryAjaxSettings): Promise<T> {\n if (!settings.url) {\n return Promise.reject(new AppAuthError('A URL must be provided.'));\n }\n let url: URL = new URL(<string>settings.url);\n let requestInit: RequestInit = {};\n requestInit.method = settings.method;\n requestInit.mode = 'cors';\n\n if (settings.data) {\n if (settings.method && settings.method.toUpperCase() === 'POST') {\n requestInit.body = <string>settings.data;\n } else {\n let searchParams = new URLSearchParams(settings.data);\n searchParams.forEach((value, key) => {\n url.searchParams.append(key, value);\n });\n }\n }\n\n // Set the request headers\n requestInit.headers = {};\n if (settings.headers) {\n for (let i in settings.headers) {\n if (settings.headers.hasOwnProperty(i)) {\n requestInit.headers[i] = <string>settings.headers[i];\n }\n }\n }\n\n const isJsonDataType = settings.dataType && settings.dataType.toLowerCase() === 'json';\n\n // Set 'Accept' header value for json requests (Taken from\n // https://github.com/jquery/jquery/blob/e0d941156900a6bff7c098c8ea7290528e468cf8/src/ajax.js#L644\n // )\n if (isJsonDataType) {\n requestInit.headers['Accept'] = 'application/json, text/javascript, */*; q=0.01';\n }\n\n return fetch(url.toString(), requestInit).then(response => {\n if (response.status >= 200 && response.status < 300) {\n const contentType = response.headers.get('content-type');\n if (isJsonDataType || (contentType && contentType.indexOf('application/json') !== -1)) {\n return response.json();\n } else {\n return response.text();\n }\n } else {\n return Promise.reject(new AppAuthError(response.status.toString(), response.statusText));\n }\n });\n }\n}\n\n/**\n * Should be used only in the context of testing. Just uses the underlying\n * Promise to mock the behavior of the Requestor.\n */\nexport class TestRequestor extends Requestor {\n constructor(public promise: Promise<any>) {\n super();\n }\n xhr<T>(settings: JQueryAjaxSettings): Promise<T> {\n return this.promise; // unsafe cast\n }\n}\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {JQueryRequestor, Requestor} from './xhr';\n\n\n/**\n * Represents AuthorizationServiceConfiguration as a JSON object.\n */\nexport interface AuthorizationServiceConfigurationJson {\n authorization_endpoint: string;\n token_endpoint: string;\n revocation_endpoint: string;\n end_session_endpoint?: string;\n userinfo_endpoint?: string;\n}\n\n/**\n * The standard base path for well-known resources on domains.\n * See https://tools.ietf.org/html/rfc5785 for more information.\n */\nconst WELL_KNOWN_PATH = '.well-known';\n\n/**\n * The standard resource under the well known path at which an OpenID Connect\n * discovery document can be found under an issuer's base URI.\n */\nconst OPENID_CONFIGURATION = 'openid-configuration';\n\n/**\n * Configuration details required to interact with an authorization service.\n *\n * More information at https://openid.net/specs/openid-connect-discovery-1_0-17.html\n */\nexport class AuthorizationServiceConfiguration {\n authorizationEndpoint: string;\n tokenEndpoint: string;\n revocationEndpoint: string;\n userInfoEndpoint?: string;\n endSessionEndpoint?: string;\n\n constructor(request: AuthorizationServiceConfigurationJson) {\n this.authorizationEndpoint = request.authorization_endpoint;\n this.tokenEndpoint = request.token_endpoint;\n this.revocationEndpoint = request.revocation_endpoint;\n this.userInfoEndpoint = request.userinfo_endpoint;\n this.endSessionEndpoint = request.end_session_endpoint;\n }\n\n toJson() {\n return {\n authorization_endpoint: this.authorizationEndpoint,\n token_endpoint: this.tokenEndpoint,\n revocation_endpoint: this.revocationEndpoint,\n end_session_endpoint: this.endSessionEndpoint,\n userinfo_endpoint: this.userInfoEndpoint\n };\n }\n\n static fetchFromIssuer(openIdIssuerUrl: string, requestor?: Requestor):\n Promise<AuthorizationServiceConfiguration> {\n const fullUrl = `${openIdIssuerUrl}/${WELL_KNOWN_PATH}/${OPENID_CONFIGURATION}`;\n\n const requestorToUse = requestor || new JQueryRequestor();\n\n return requestorToUse\n .xhr<AuthorizationServiceConfigurationJson>({url: fullUrl, dataType: 'json', method: 'GET'})\n .then(json => new AuthorizationServiceConfiguration(json));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A subset of the `Storage` interface which we need for the backends to work.\n *\n * Essentially removes the indexable properties and readonly properties from\n * `Storage` in lib.dom.d.ts. This is so that a custom type can extend it for\n * testing.\n */\nexport interface UnderlyingStorage {\n readonly length: number;\n clear(): void;\n getItem(key: string): string|null;\n removeItem(key: string): void;\n setItem(key: string, data: string): void;\n}\n\n/**\n * Asynchronous storage APIs. All methods return a `Promise`.\n * All methods take the `DOMString`\n * IDL type (as it is the lowest common denominator).\n */\nexport abstract class StorageBackend {\n /**\n * When passed a key `name`, will return that key's value.\n */\n public abstract getItem(name: string): Promise<string|null>;\n\n /**\n * When passed a key `name`, will remove that key from the storage.\n */\n public abstract removeItem(name: string): Promise<void>;\n\n /**\n * When invoked, will empty all keys out of the storage.\n */\n public abstract clear(): Promise<void>;\n\n /**\n * The setItem() method of the `StorageBackend` interface,\n * when passed a key name and value, will add that key to the storage,\n * or update that key's value if it already exists.\n */\n public abstract setItem(name: string, value: string): Promise<void>;\n}\n\n/**\n * A `StorageBackend` backed by `localstorage`.\n */\nexport class LocalStorageBackend extends StorageBackend {\n private storage: UnderlyingStorage;\n constructor(storage?: UnderlyingStorage) {\n super();\n this.storage = storage || window.localStorage;\n }\n\n public getItem(name: string): Promise<string|null> {\n return new Promise<string|null>((resolve, reject) => {\n const value = this.storage.getItem(name);\n if (value) {\n resolve(value);\n } else {\n resolve(null);\n }\n });\n }\n\n public removeItem(name: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.storage.removeItem(name);\n resolve();\n });\n }\n\n public clear(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.storage.clear();\n resolve();\n });\n }\n\n public setItem(name: string, value: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.storage.setItem(name, value);\n resolve();\n });\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the access token types.\n * For more information see:\n * https://tools.ietf.org/html/rfc6749#section-7.1\n */\nexport type TokenType = 'bearer'|'mac';\n\n/**\n * Represents the TokenResponse as a JSON Object.\n */\nexport interface TokenResponseJson {\n access_token: string;\n token_type?: TokenType; /* treating token type as optional, as its going to be inferred. */\n expires_in?: string; /* lifetime in seconds. */\n refresh_token?: string;\n scope?: string;\n id_token?: string; /* https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse */\n issued_at?: number; /* when was it issued ? */\n}\n\n/**\n * Represents the possible error codes from the token endpoint.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-5.2\n */\nexport type ErrorType = 'invalid_request'|'invalid_client'|'invalid_grant'|'unauthorized_client'|\n 'unsupported_grant_type'|'invalid_scope';\n\n/**\n * Represents the TokenError as a JSON Object.\n */\nexport interface TokenErrorJson {\n error: ErrorType;\n error_description?: string;\n error_uri?: string;\n}\n\n// constants\nconst AUTH_EXPIRY_BUFFER = 10 * 60 * -1; // 10 mins in seconds\n\n/**\n * Returns the instant of time in seconds.\n */\nexport const nowInSeconds = () => Math.round(new Date().getTime() / 1000);\n\n/**\n * Represents the Token Response type.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-5.1\n */\nexport class TokenResponse {\n accessToken: string;\n tokenType: TokenType;\n expiresIn: number|undefined;\n refreshToken: string|undefined;\n scope: string|undefined;\n idToken: string|undefined;\n issuedAt: number;\n\n constructor(response: TokenResponseJson) {\n this.accessToken = response.access_token;\n this.tokenType = response.token_type || 'bearer';\n if (response.expires_in) {\n this.expiresIn = parseInt(response.expires_in, 10);\n }\n this.refreshToken = response.refresh_token;\n this.scope = response.scope;\n this.idToken = response.id_token;\n this.issuedAt = response.issued_at || nowInSeconds();\n }\n\n toJson(): TokenResponseJson {\n return {\n access_token: this.accessToken,\n id_token: this.idToken,\n refresh_token: this.refreshToken,\n scope: this.scope,\n token_type: this.tokenType,\n issued_at: this.issuedAt,\n expires_in: this.expiresIn?.toString()\n };\n }\n\n isValid(buffer: number = AUTH_EXPIRY_BUFFER): boolean {\n if (this.expiresIn) {\n let now = nowInSeconds();\n return now < this.issuedAt + this.expiresIn + buffer;\n } else {\n return true;\n }\n }\n}\n\n/**\n * Represents the Token Error type.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-5.2\n */\nexport class TokenError {\n error: ErrorType;\n errorDescription: string|undefined;\n errorUri: string|undefined;\n\n constructor(tokenError: TokenErrorJson) {\n this.error = tokenError.error;\n this.errorDescription = tokenError.error_description;\n this.errorUri = tokenError.error_uri;\n }\n\n toJson(): TokenErrorJson {\n return {\n error: this.error, error_description: this.errorDescription, error_uri: this.errorUri\n }\n }\n}\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Crypto, DefaultCrypto} from './crypto_utils';\nimport {log} from './logger';\nimport {StringMap} from './types';\n\n/**\n * Represents an AuthorizationRequest as JSON.\n */\nexport interface AuthorizationRequestJson {\n response_type: string;\n client_id: string;\n redirect_uri: string;\n scope: string;\n state?: string;\n extras?: StringMap;\n internal?: StringMap;\n}\n\n/**\n * Generates a cryptographically random new state. Useful for CSRF protection.\n */\nconst SIZE = 10; // 10 bytes\nconst newState = function(crypto: Crypto): string {\n return crypto.generateRandom(SIZE);\n};\n\n/**\n * Represents the AuthorizationRequest.\n * For more information look at\n * https://tools.ietf.org/html/rfc6749#section-4.1.1\n */\nexport class AuthorizationRequest {\n static RESPONSE_TYPE_TOKEN = 'token';\n static RESPONSE_TYPE_CODE = 'code';\n\n // NOTE:\n // Both redirect_uri and state are actually optional.\n // However AppAuth is more opionionated, and requires you to use both.\n\n clientId: string;\n redirectUri: string;\n scope: string;\n responseType: string;\n state: string;\n extras?: StringMap;\n internal?: StringMap;\n /**\n * Constructs a new AuthorizationRequest.\n * Use a `undefined` value for the `state` parameter, to generate a random\n * state for CSRF protection.\n */\n constructor(\n request: AuthorizationRequestJson,\n private crypto: Crypto = new DefaultCrypto(),\n private usePkce: boolean = true) {\n this.clientId = request.client_id;\n this.redirectUri = request.redirect_uri;\n this.scope = request.scope;\n this.responseType = request.response_type || AuthorizationRequest.RESPONSE_TYPE_CODE;\n this.state = request.state || newState(crypto);\n this.extras = request.extras;\n // read internal properties if available\n this.internal = request.internal;\n }\n\n setupCodeVerifier(): Promise<void> {\n if (!this.usePkce) {\n return Promise.resolve();\n } else {\n const codeVerifier = this.crypto.generateRandom(128);\n const challenge: Promise<string|undefined> =\n this.crypto.deriveChallenge(codeVerifier).catch(error => {\n log('Unable to generate PKCE challenge. Not using PKCE', error);\n return undefined;\n });\n return challenge.then(result => {\n if (result) {\n // keep track of the code used.\n this.internal = this.internal || {};\n this.internal['code_verifier'] = codeVerifier;\n this.extras = this.extras || {};\n this.extras['code_challenge'] = result;\n // We always use S256. Plain is not good enough.\n this.extras['code_challenge_method'] = 'S256';\n }\n });\n }\n }\n\n /**\n * Serializes the AuthorizationRequest to a JavaScript Object.\n */\n toJson(): Promise<AuthorizationRequestJson> {\n // Always make sure that the code verifier is setup when toJson() is called.\n return this.setupCodeVerifier().then(() => {\n return {\n response_type: this.responseType,\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n scope: this.scope,\n state: this.state,\n extras: this.extras,\n internal: this.internal\n };\n });\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the AuthorizationResponse as a JSON object.\n */\nexport interface AuthorizationResponseJson {\n code: string;\n state: string;\n}\n\n/**\n * Represents the AuthorizationError as a JSON object.\n */\nexport interface AuthorizationErrorJson {\n error: string;\n error_description?: string;\n error_uri?: string;\n state?: string;\n}\n\n/**\n * Represents the Authorization Response type.\n * For more information look at\n * https://tools.ietf.org/html/rfc6749#section-4.1.2\n */\nexport class AuthorizationResponse {\n code: string;\n state: string;\n\n constructor(response: AuthorizationResponseJson) {\n this.code = response.code;\n this.state = response.state;\n }\n\n toJson(): AuthorizationResponseJson {\n return {code: this.code, state: this.state};\n }\n}\n\n/**\n * Represents the Authorization error response.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-4.1.2.1\n */\nexport class AuthorizationError {\n error: string;\n errorDescription?: string;\n errorUri?: string;\n state?: string;\n\n constructor(error: AuthorizationErrorJson) {\n this.error = error.error;\n this.errorDescription = error.error_description;\n this.errorUri = error.error_uri;\n this.state = error.state;\n }\n\n toJson(): AuthorizationErrorJson {\n return {\n error: this.error,\n error_description: this.errorDescription,\n error_uri: this.errorUri,\n state: this.state\n };\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldParentVNode, i + 1);\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tc,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 2\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink[H:h]/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (\n\t\t\tvalue != null &&\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\n\t\t) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t(child === dom ||\n\t\t\t\t\t(nodeType ? child.localName == nodeType : child.nodeType == 3))\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value || (nodeType === 'progress' && !i))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(r[i], parentVNode, typeof vnode.type != 'function');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) removeNode(vnode._dom);\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/i\n\t\t: /fil|che|ra/i\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (i === 'value' && 'defaultValue' in props && value == null) {\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t\t// a default value\n\t\t\t\tcontinue;\n\t\t\t} else if (\n\t\t\t\ti === 'defaultValue' &&\n\t\t\t\t'value' in props &&\n\t\t\t\tprops.value == null\n\t\t\t) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: <select multiple value={[]} />\n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\t// Adding support for defaultValue in select tag\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tif (normalizedProps.multiple) {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t\t} else {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\t}\n\n\tif (type && props.class != props.className) {\n\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n","import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\t// We always have ref in props.ref, except for\n\t// mobx-react. It will call this function directly\n\t// and always pass ref as the second argument.\n\tfunction Forwarded(props, ref) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\tref = props.ref || ref;\n\t\treturn fn(\n\t\t\tclone,\n\t\t\t!ref || (typeof ref === 'object' && !('current' in ref)) ? null : ref\n\t\t);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function(vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._hydrating === true) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n","import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function() {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._temp) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild(child) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tinsertBefore(child, before) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tremoveChild(child) {\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t\t_this._container.removeChild(child);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._temp) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { _vnode: vnode, _container: container });\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the AppAuthError type.\n */\nexport class AppAuthError {\n constructor(public message: string, public extras?: any) {}\n}\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as base64 from 'base64-js';\n\nimport {AppAuthError} from './errors';\n\nconst HAS_CRYPTO = typeof window !== 'undefined' && !!(window.crypto as any);\nconst HAS_SUBTLE_CRYPTO = HAS_CRYPTO && !!(window.crypto.subtle as any);\nconst CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\nexport function bufferToString(buffer: Uint8Array) {\n let state = [];\n for (let i = 0; i < buffer.byteLength; i += 1) {\n let index = buffer[i] % CHARSET.length;\n state.push(CHARSET[index]);\n }\n return state.join('');\n}\n\nexport function urlSafe(buffer: Uint8Array): string {\n const encoded = base64.fromByteArray(new Uint8Array(buffer));\n return encoded.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\n// adapted from source: http://stackoverflow.com/a/11058858\n// this is used in place of TextEncode as the api is not yet\n// well supported: https://caniuse.com/#search=TextEncoder\nexport function textEncodeLite(str: string) {\n const buf = new ArrayBuffer(str.length);\n const bufView = new Uint8Array(buf);\n\n for (let i = 0; i < str.length; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return bufView;\n}\n\nexport interface Crypto {\n /**\n * Generate a random string\n */\n generateRandom(size: number): string;\n /**\n * Compute the SHA256 of a given code.\n * This is useful when using PKCE.\n */\n deriveChallenge(code: string): Promise<string>;\n}\n\n/**\n * The default implementation of the `Crypto` interface.\n * This uses the capabilities of the browser.\n */\nexport class DefaultCrypto implements Crypto {\n generateRandom(size: number) {\n const buffer = new Uint8Array(size);\n if (HAS_CRYPTO) {\n window.crypto.getRandomValues(buffer);\n } else {\n // fall back to Math.random() if nothing else is available\n for (let i = 0; i < size; i += 1) {\n buffer[i] = (Math.random() * CHARSET.length) | 0;\n }\n }\n return bufferToString(buffer);\n }\n\n deriveChallenge(code: string): Promise<string> {\n if (code.length < 43 || code.length > 128) {\n return Promise.reject(new AppAuthError('Invalid code length.'));\n }\n if (!HAS_SUBTLE_CRYPTO) {\n return Promise.reject(new AppAuthError('window.crypto.subtle is unavailable.'));\n }\n\n return new Promise((resolve, reject) => {\n crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => {\n return resolve(urlSafe(new Uint8Array(buffer)));\n }, error => reject(error));\n });\n }\n}\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","module.exports = \"data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAoYAAAD6CAYAAAA89YbqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANhJJREFUeNrsnQucFNWZt98xKHIxghKUL7iA65U1goFdXDUq+/lLolkjBCNqgkh0veTLt15Wk5glQRY3qysqaBTvgCYSkygaN2ZVbprVSGAELyGCIAwgw8AIA8MwA3Pp7X9BtTVtT1d1d1Xf5nl+v56Zvkx3dZ3qPk+957zvqYjFYgYAAAAAcAC7AAAAAAAQQwAAAABADAEAAAAAMQQAAAAAxBAAAAAAEEMAAAAAQAwBAAAAADEEAAAAAMQQAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAAAAxBAAAAAAEEMAAAAAQAwBAAAAADEEAAAAAMQQAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAAAAxBAAAAAAEEMAAAAAQAwBAAAAADEEAAAAAMQQAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAACAMqFLZ3mjY8eOHdCtW7fRXbt2PSn++xiaHgAAANJRX1//x9bW1prGxsa5Tz/9dFVneM8VsVisbN/cFVdc8R99+/b9Zv/+/QccdthhXTjEAQAAIBuqq6sbN23atLKmpub2J5988mnEsERQZLBfv36zjz322NORQQAAAAibbdu2tbzzzjuzH3rooSsRwyLm6quvfnTEiBHf6datWwWHLQAAAEQtiEuWLLl51qxZ0xDDIkJRwiFDhiwfNGhQr1T319bW2ooVK6yqqsq5iK1btzoXAAAAAC8DBgywHj16JP4ePHiwnXjiida9e/eUj6+srFy+YcOGUeUwD7HkxXDcuHFjTz311J+nGjZ+7bXXnIukEAAAACAXhg8fbueee64jicloDuLixYtPLHU5LGkxlBSOHDlyTvLQcdzc7YknniAiCAAAAKGjCGLcQZxoohcNLb/55pvfLuXklJIVw1RSuHv3bkcIFSUEAAAAiJIxY8Y4Fy+lHjksSTHUnMIzzzxztXf4WFI4ZcqUxBxCAAAAgKhR9PDGG29sN/9Qchi/rXspvp+SXPlEiSZIIQAAABQa5THIQeQiLv369et20003LUMM84BK0nizj5FCAAAAKCRykAcffLDdbcOGDRt6+eWXX48YRoiGkFWn0Hub5hQihQAAAFBIli5das8880y724477rhJiGGEaEUTb7KJso9JNAEAAIBiQGKo2skuGuEstahhSYmhlrnzXle0EAAAAKBYSB5SLrWoYcmI4RVXXPEf3oQTRQqpUwgAAADFhLvSmouihpdeeukZiGHI9O3b95ve6wwhAwAAQDHy+9//vt313r17/wtiGDL9+/dPlBd31z4GAAAAKDaUiOKlT58+pyKGIaJsZO8wMlIIAAAAxYpK6XmHkwcMGHAEYhgi3bp1G+29TnkaAAAAKGb+8pe/eD2mQkEuxDAkunbtehJiCAAAAKVCQ0NDu+vJQS7EMAfiO/MYDjEAAAAoFbwRw1LiAJoOAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAACAgHRhFwDkn6FDh9qECRPsnHPOsd69e1tjY2Pivm7dutm7775rc+bMseeee87q6uoCPefll19uAwcOzGp7Fi1a5FzE2Wef7Vxyxfuc2Wz/rbfemvi7UNvUEdqW8ePH22mnnWaf+9znbPv27Tm3X6p9oP+dNm1a1v8/a9YsW7duHR84AAhOLBYr+st111236Kmnnoq5l8GDB8e06cV86THoiNiJE8fETn/+B7HTf/uD2BfuHBc76vKzYwf27lH0284luktcKGIrV66MbdmyJeZHXBZjNTU1senTp8d69erl+9xr1qyJZcsTTzyReB79HQZxscto33i3f+fOne3uK9Q2JV9GjRoVq62tdS5B2m/Tpk2x22+/PVD7pWrDbdu2OcdMNvtQr53J/3LhwiXci1zF6y7xk8nrS8G5GEqOgBOnXmNnvDLR7Fsn26bjDrJNxx5kjecfbX0nftXOev3f7PifjLEDD+vBjupExMXAZs6cac8++6wdd9xxTpTJj4MPPtj69u1rV155pX344YdOlLGz0NLSUnTtp0ij2vDwww93LkHar1+/fjqxdSKI2bSfosnxDsV5/UzxRqEBAILCUHLI9L/mVuv21b+zpY0LLFaxPyqr3/FLbXODfeYzB9j/ufyL9qVLT7O1D82ztff8np3WCaSwsrLSjjzySOvevXu7+3bs2GG7d+9OdOQahuzSpYv16NEj8Vj91mXevHmOJGp4EvLbfhK7/v37f+q+jz/+2Gk/tZm3/bziL0HU/6r9NHVg+fLlGcvhD3/4Q+cCAIAYltLO7NXHen37X+ytbT3jHftO69p1aUIKY/svLdZmVS3b7aMuB9ig6//BBl52lr1z85P28bw/swPLWAqPPvrodrdrTtqSJUtsxowZnxI9/c+oUaPslltusSOOOMIOPfRQ5/ZDDjnELrrookBiqOe/9957A2+nd97d448/7kQoUzF69Gg7+eSTE9dfffXVDufshTGXr9Db1JEU7tq1y15++WWbMmXKp0RPc/wuvfRS+973vudIncRQKMr44osv2nnnnZeRHOr/r776avvlL3+ZsVQCACCGBeTIS75nqyt6OiLY0DDW+X3QwUsTUmie382xmK1q3mJdD+1ix8+60lre22zv/r9Z1rimhh1ZRjz55JNOpNDLxo0b7fzzz++wk1fCgZIGdPnRj35kN998sxMxlIhIOILiTd7IhHQJGhJcr4Tpcdm+TilskyRccufS0NBgtbW1TvJJR0kduv2nP/2pPfDAA3bPPffYmDFjHKkXGlpesGCBs81+SSlbtmxxphK4gjp79mwbMmQIHyoAiBTmGIZp2V84zZpi+69IDneNtT17hn9KCmP6sf96k7XY282bbOPgrjbi9Yl2wvRxzD8sExT1O+OMMxJDwpKKVatW2Re+8IXAkR8Jxg033OBIoWQS8tt+EjEN67vtt3TpUmeuYJBMX4mfMs8V+a2vr0/cLtHUCYMfra2t7eRxwIABzokCAABiWCLUHdg9IYXu7931Y21v0/CUUuj9XRdrtMV71lvLhcfb31dOsYE3n8sOLXEeffTRdkkDGt4dMWJERuVLhCKHSGHh20+RQslipu13//33O9HDpqamxG2nn366b2khDSErYunOQdWUgptuuimrRBQAAMSwAPQceno7KXR/N+4ca82Sww6k0Blq3v/YjW077K0Da6z7TWfZl1bcbod9+W/YsSVIcs09SeG4ceMylgoonvZTjcBs20+JI4o4uihqeNddd/n+n6LFSlDy/h/JRwCAGJYIdW2flsKEHNbF5bBxWFopTMw/rGizNa0f29uH7bC/fupKG7bgB3bI3w1iB5cQKn7sLWlSXV0dajIGlF77KdrnjRqOHDnS/zslLqLf/e532wmp5lOGUewbAAAx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\"","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AuthorizationServiceConfiguration} from './authorization_service_configuration';\nimport {AppAuthError} from './errors';\nimport {BasicQueryStringUtils, QueryStringUtils} from './query_string_utils';\nimport {RevokeTokenRequest} from './revoke_token_request';\nimport {TokenRequest} from './token_request';\nimport {TokenError, TokenErrorJson, TokenResponse, TokenResponseJson} from './token_response';\nimport {JQueryRequestor, Requestor} from './xhr';\n\n\n/**\n * Represents an interface which can make a token request.\n */\nexport interface TokenRequestHandler {\n /**\n * Performs the token request, given the service configuration.\n */\n performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest):\n Promise<TokenResponse>;\n\n performRevokeTokenRequest(\n configuration: AuthorizationServiceConfiguration,\n request: RevokeTokenRequest): Promise<boolean>;\n}\n\n/**\n * The default token request handler.\n */\nexport class BaseTokenRequestHandler implements TokenRequestHandler {\n constructor(\n public readonly requestor: Requestor = new JQueryRequestor(),\n public readonly utils: QueryStringUtils = new BasicQueryStringUtils()) {}\n\n private isTokenResponse(response: TokenResponseJson|\n TokenErrorJson): response is TokenResponseJson {\n return (response as TokenErrorJson).error === undefined;\n }\n\n performRevokeTokenRequest(\n configuration: AuthorizationServiceConfiguration,\n request: RevokeTokenRequest): Promise<boolean> {\n let revokeTokenResponse = this.requestor.xhr<boolean>({\n url: configuration.revocationEndpoint,\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: this.utils.stringify(request.toStringMap())\n });\n\n return revokeTokenResponse.then(response => {\n return true;\n });\n }\n\n performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest):\n Promise<TokenResponse> {\n let tokenResponse = this.requestor.xhr<TokenResponseJson|TokenErrorJson>({\n url: configuration.tokenEndpoint,\n method: 'POST',\n dataType: 'json', // adding implicit dataType\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: this.utils.stringify(request.toStringMap())\n });\n\n return tokenResponse.then(response => {\n if (this.isTokenResponse(response)) {\n return new TokenResponse(response);\n } else {\n return Promise.reject<TokenResponse>(\n new AppAuthError(response.error, new TokenError(response)));\n }\n });\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","module.exports = \"data:image/png;charset=utf-8;base64,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\"","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IS_LOG, IS_PROFILE} from './flags';\n\nexport function log(message: string, ...args: any[]) {\n if (IS_LOG) {\n let length = args ? args.length : 0;\n if (length > 0) {\n console.log(message, ...args);\n } else {\n console.log(message);\n }\n }\n};\n\n// check to see if native support for profiling is available.\nconst NATIVE_PROFILE_SUPPORT =\n typeof window !== 'undefined' && !!window.performance && !!console.profile;\n\n/**\n * A decorator that can profile a function.\n */\nexport function profile(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n if (IS_PROFILE) {\n return performProfile(target, propertyKey, descriptor);\n } else {\n // return as-is\n return descriptor;\n }\n}\n\nfunction performProfile(\n target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor {\n let originalCallable = descriptor.value;\n // name must exist\n let name = originalCallable.name;\n if (!name) {\n name = 'anonymous function';\n }\n if (NATIVE_PROFILE_SUPPORT) {\n descriptor.value = function(args: any[]) {\n console.profile(name);\n let startTime = window.performance.now();\n let result = originalCallable.call(this || window, ...args);\n let duration = window.performance.now() - startTime;\n console.log(`${name} took ${duration} ms`);\n console.profileEnd();\n return result;\n };\n } else {\n descriptor.value = function(args: any[]) {\n log(`Profile start ${name}`);\n let start = Date.now();\n let result = originalCallable.call(this || window, ...args);\n let duration = Date.now() - start;\n log(`Profile end ${name} took ${duration} ms.`);\n return result;\n };\n }\n return descriptor;\n}\n","module.exports = \"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjUiIGhlaWdodD0iMTI1IiBmaWxsPSJub25lIiB4bWxuczp2PSJodHRwczovL3ZlY3RhLmlvL25hbm8iPjxnIGNsaXAtcGF0aD0idXJsKCNBKSI+PHBhdGggZD0iTTYyLjQ5OSAxMTkuOTMyYzMxLjcxOSAwIDU3LjQzMi0yNS43MTMgNTcuNDMyLTU3LjQzMlM5NC4yMTggNS4wNjggNjIuNDk5IDUuMDY4IDUuMDY2IDMwLjc4MSA1LjA2NiA2Mi41czI1LjcxMyA1Ny40MzIgNTcuNDMyIDU3LjQzMnoiIGZpbGw9IiNlZWVmZWUiLz48cGF0aCBkPSJNNzMuMTQyIDYuMDY4YTU3LjQzIDU3LjQzIDAgMCAxIDMyLjgwNiAyNi43OTNjNy4xMjIgMTIuNzg1IDkuMDk1IDI3LjgwNiA1LjUxNiA0MS45OTZzLTEyLjQ0IDI2LjQ3OS0yNC43NzQgMzQuMzU3LTI3LjIwOSAxMC43NDktNDEuNTg5IDguMDI5YzcuNDY2IDIuMzY5IDE1LjMzOCAzLjE4NSAyMy4xMzEgMi4zOTlhNTcuNDMgNTcuNDMgMCAwIDAgMjIuMTg2LTYuOTcgNTcuNDQgNTcuNDQgMCAwIDAgMTcuNjA0LTE1LjE5NmM0Ljc3LTYuMjEzIDguMjE5LTEzLjMzNiAxMC4xMzQtMjAuOTNzMi4yNTgtMTUuNTAyIDEuMDA1LTIzLjIzMy00LjA3NS0xNS4xMjYtOC4yOTEtMjEuNzI3LTkuNzM4LTEyLjI3LTE2LjIyNi0xNi42NThhNTcuNDMgNTcuNDMgMCAwIDAtMjEuNTAyLTguODU5eiIgZmlsbD0iI2RiZDhkZCIvPjxwYXRoIGQ9Ik03Mi43NzMgNjIuNWwxOC4yMzMgMTguMjMzLTEwLjI3MiAxMC4yNzItMTguMjMzLTE4LjIzMy0xOC4yMzMgMTguMjMzLTEwLjI3Mi0xMC4yNzJMNTIuMjI5IDYyLjUgMzMuOTk2IDQ0LjI2N2wxMC4yNzItMTAuMjcyIDE4LjIzMyAxOC4yMzMgMTguMjMzLTE4LjIzMyAxMC4yNzIgMTAuMjcyTDcyLjc3MyA2Mi41eiIgZmlsbD0ic2lsdmVyIi8+PGcgZmlsbD0iIzMyM2M2YiI+PHBhdGggZD0iTTgwLjczMiA5MS44NWEuODYuODYgMCAwIDEtLjMyNC0uMDY0Yy0uMTAzLS4wNDItLjE5Ni0uMTA1LS4yNzQtLjE4M0w2Mi40OTkgNzMuOTY2IDQ0Ljg2NCA5MS42MDNjLS4xNTguMTU4LS4zNzMuMjQ3LS41OTcuMjQ3cy0uNDM5LS4wODktLjU5Ny0uMjQ3TDMzLjM5NyA4MS4zMzFjLS4xNTgtLjE1OC0uMjQ3LS4zNzMtLjI0Ny0uNTk3cy4wODktLjQzOS4yNDctLjU5N0w1MS4wMzMgNjIuNSAzMy4zOTYgNDQuODY1Yy0uMTU4LS4xNTgtLjI0Ny0uMzczLS4yNDctLjU5N3MuMDg5LS40MzkuMjQ3LS41OTdsMTAuMjcyLTEwLjI3MmMuMTU4LS4xNTguMzczLS4yNDcuNTk3LS4yNDdzLjQzOS4wODkuNTk3LjI0N2wxNy42MzcgMTcuNjM1IDE3LjYzNS0xNy42MzVjLjE1OC0uMTU4LjM3My0uMjQ3LjU5Ny0uMjQ3cy40MzkuMDg5LjU5Ny4yNDdMOTEuNiA0My42NzFjLjE1OC4xNTguMjQ3LjM3My4yNDcuNTk3cy0uMDg5LjQzOS0uMjQ3LjU5N0w3My45NjUgNjIuNSA5MS42IDgwLjEzNWMuMTU4LjE1OC4yNDcuMzczLjI0Ny41OTdzLS4wODkuNDM5LS4yNDcuNTk3TDgxLjMyOCA5MS42MDFhLjg0Ljg0IDAgMCAxLS41OTYuMjQ4ek02Mi40OTkgNzEuOTI3YS44My44MyAwIDAgMSAuMzIzLjA2NGMuMTAyLjA0My4xOTYuMTA0LjI3NC4xODNsMTcuNjM1IDE3LjYzNSA5LjA3OC05LjA3OC0xNy42MzUtMTcuNjM1Yy0uMTU4LS4xNTgtLjI0Ny0uMzczLS4yNDctLjU5N3MuMDg5LS40MzkuMjQ3LS41OTdMODkuODEgNDQuMjY3bC05LjA3OC05LjA3OC0xNy42MzUgMTcuNjM1Yy0uMTU4LjE1OC0uMzczLjI0Ny0uNTk3LjI0N3MtLjQzOS0uMDg5LS41OTctLjI0N0w0NC4yNjcgMzUuMTg5bC05LjA3OCA5LjA3OCAxNy42MzUgMTcuNjM1Yy4xNTguMTU4LjI0Ny4zNzMuMjQ3LjU5N3MtLjA4OS40MzktLjI0Ny41OTdMMzUuMTkgODAuNzMxbDkuMDc4IDkuMDc4IDE3LjYzNS0xNy42MzVjLjE1OC0uMTU4LjM3My0uMjQ3LjU5Ni0uMjQ3em0uMDAxIDQ4Ljg1QTU4LjI4IDU4LjI4IDAgMCAxIDUuMzQyIDUxLjEzMWMyLjI0OC0xMS4zMDQgNy43OTktMjEuNjg5IDE1Ljk0OS0yOS44MzlTMzkuODI2IDcuNTkxIDUxLjEzIDUuMzQzYTU4LjI4IDU4LjI4IDAgMCAxIDMzLjY3MSAzLjMxNiA1OC4yNyA1OC4yNyAwIDAgMSAyNi4xNTQgMjEuNDY0YzYuNDAzIDkuNTg0IDkuODIyIDIwLjg1MSA5LjgyMiAzMi4zNzctLjAxOCAxNS40NTEtNi4xNjMgMzAuMjY0LTE3LjA4OCA0MS4xODlTNzcuOTUgMTIwLjc2IDYyLjUgMTIwLjc3N3ptMC0xMTQuODY1YTU2LjU5IDU2LjU5IDAgMCAwLTQwLjAxMyA5Ni42MDJBNTYuNTkgNTYuNTkgMCAwIDAgMTE5LjA4OSA2Mi41Yy0uMDE3LTE1LjAwMy01Ljk4NS0yOS4zODYtMTYuNTkzLTM5Ljk5NUE1Ni42NSA1Ni42NSAwIDAgMCA2Mi41IDUuOTEyeiIvPjwvZz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJBIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDEyNXYxMjVIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=\"","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/goober/dist/goober.esm.js","webpack:///../lib/atob.js","webpack:///../lib/index.js","webpack:///../src/index.js","webpack:///./services/api.ts","webpack:///./services/auth.ts","webpack:///./components/authFlow/index.tsx","webpack:///../lib/base64_url_decode.js","webpack:///./hooks/useAsyncEffect.ts","webpack:///./utils/network.ts","webpack:///./styles/index.ts","webpack:///../node_modules/goober/global/dist/goober-global.esm.js","webpack:///./components/loader/style.ts","webpack:///./components/loader/index.tsx","webpack:///./components/success/style.ts","webpack:///./components/success/index.tsx","webpack:///./components/error/style.ts","webpack:///./components/error/index.tsx","webpack:///./utils/window.ts","webpack:///./components/workplaceLink/style.ts","webpack:///./components/workplaceLink/index.tsx","webpack:///./index.tsx","webpack:///../node_modules/axios/lib/core/createError.js","webpack:///./assets/apple-store-badge.svg","webpack:///../node_modules/axios/lib/core/transformData.js","webpack:///../node_modules/axios/lib/env/data.js","webpack:///../node_modules/axios/lib/helpers/bind.js","webpack:///../src/authorization_request_handler.ts","webpack:///../node_modules/qr.js/lib/BitBuffer.js","webpack:///../node_modules/qr.js/lib/8BitByte.js","webpack:///../src/flags.ts","webpack:///../node_modules/axios/lib/helpers/spread.js","webpack:///../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///../node_modules/qr.js/lib/math.js","webpack:///../src/redirect_based_handler.ts","webpack:///../node_modules/qr.js/lib/Polynomial.js","webpack:///../src/token_request.ts","webpack:///../node_modules/base64-js/index.js","webpack:///../src/query_string_utils.ts","webpack:///../node_modules/qr.js/lib/util.js","webpack:///../node_modules/qrcode.react/lib/index.js","webpack:///../node_modules/axios/lib/helpers/isAxiosError.js","webpack:///../src/xhr.ts","webpack:///../node_modules/axios/lib/cancel/CancelToken.js","webpack:///../node_modules/axios/lib/core/enhanceError.js","webpack:///../node_modules/qr.js/lib/ErrorCorrectLevel.js","webpack:///../src/authorization_service_configuration.ts","webpack:///../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///../src/storage.ts","webpack:///../node_modules/axios/lib/axios.js","webpack:///../src/token_response.ts","webpack:///../src/authorization_request.ts","webpack:///../node_modules/axios/lib/core/mergeConfig.js","webpack:///../node_modules/axios/lib/core/settle.js","webpack:///../node_modules/axios/lib/defaults.js","webpack:///../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///../node_modules/axios/index.js","webpack:///../node_modules/axios/lib/cancel/isCancel.js","webpack:///../node_modules/axios/lib/helpers/buildURL.js","webpack:///../src/authorization_response.ts","webpack:///../node_modules/axios/lib/core/dispatchRequest.js","webpack:///../node_modules/axios/lib/core/buildFullPath.js","webpack:///../node_modules/axios/lib/helpers/combineURLs.js","webpack:///../src/util.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/axios/lib/core/InterceptorManager.js","webpack:///../node_modules/axios/lib/helpers/validator.js","webpack:///../src/PureComponent.js","webpack:///../src/memo.js","webpack:///../src/forwardRef.js","webpack:///../src/suspense.js","webpack:///../src/suspense-list.js","webpack:///../src/portals.js","webpack:///../src/Children.js","webpack:///../src/errors.ts","webpack:///../node_modules/qr.js/lib/QRCode.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///../node_modules/qr.js/lib/mode.js","webpack:///../node_modules/axios/lib/utils.js","webpack:///../node_modules/qr.js/lib/RSBlock.js","webpack:///../src/crypto_utils.ts","webpack:///../node_modules/axios/lib/cancel/Cancel.js","webpack:///./assets/google-play-badge.png","webpack:///../src/token_request_handler.ts","webpack:///../node_modules/axios/lib/core/Axios.js","webpack:///./assets/fireworks.png","webpack:///../node_modules/axios/lib/helpers/cookies.js","webpack:///../src/logger.ts","webpack:///./assets/cross-icon.svg","webpack:///../node_modules/axios/lib/helpers/parseHeaders.js","webpack:///../node_modules/axios/lib/adapters/xhr.js"],"names":["__webpack_require__","moduleId","installedModules","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","e","this","unshift","raw","slice","arguments","reduce","target","g","k","j","a","className","theme","f","test","apply","ref","as","u","InvalidCharacterError","message","InvalidTokenError","ContextProvider","props","getChildContext","context","children","rest","cloneElement","connectedCallback","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","_vdom","h","_props","toVdom","element","nodeName","nodeType","data","attributes","cn","childNodes","length","toCamelCase","vnode","slot","Slot","wrappedChildren","toLowerCase","_vdomComponent","hasAttribute","hydrate","render","_root","str","replace","_","toUpperCase","attributeChangedCallback","oldValue","newValue","disconnectedCallback","_this","_listener","stopPropagation","addEventListener","removeEventListener","window","querySelector","_goober","document","head","appendChild","createElement","innerHTML","id","firstChild","charCodeAt","exec","shift","indexOf","Error","atob","input","String","bs","buffer","bc","idx","output","charAt","fromCharCode","axiosInstance","configuration","AuthFlowState","token","options","pos","header","JSON","parse","decodeURIComponent","code","toString","err","base64_url_decode","split","useAsyncEffect","effect","deps","unmount","useEffect","cancelToken","axios","CancelToken","source","cancel","logRequestError","console","error","request","logResponseError","response","status","responseURL","stringify","initialiseApi","backendUrl","baseUrl","instance","onRequest","onRequestError","onResponse","onResponseError","interceptors","use","addInterceptors","baseURL","getOptions","accessToken","headers","Authorization","requestWorkplaceLink","result","post","isEstablished","linkRequest","createAuthDependencies","onStart","onComplete","onError","notifier","AuthorizationNotifier","authorizationHandler","RedirectRequestHandler","requestor","FetchRequestor","tokenHandler","BaseTokenRequestHandler","setAuthorizationNotifier","setAuthorizationListener","Promise","resolve","setTimeout","errorDescription","codeVerifier","internal","code_verifier","tokenResponse","makeTokenRequest","getAndValidateAccessToken","state","makeAuthorizationRequest","oidcConfig","config","fetchServiceConfiguration","openIdConnectUrl","AuthorizationRequest","client_id","clientId","redirect_uri","redirectUri","scope","response_type","RESPONSE_TYPE_CODE","extras","response_mode","prompt","option","DefaultCrypto","performAuthorizationRequest","AuthorizationServiceConfiguration","fetchFromIssuer","completeAuthIfPossible","tryHydrateOidcConfiguration","completeAuthorizationRequestIfPossible","authorizationRequest","TokenRequest","grant_type","GRANT_TYPE_AUTHORIZATION_CODE","refresh_token","undefined","performTokenRequest","isValid","handle","storageBackend","getItem","oidcConfigString","authorizationServiceConfigurationKey","configJson","ScreenReader","GlobalStyles","createGlobalStyles","ContextBox","minHeight","LoaderWrapper","PingPongLoadingBar","Loader","isActive","role","Wrapper","QRWrapper","Badges","SVG","PNG","BadgeLink","Hero","Success","src","fireworks","href","appleStore","googlePlay","CrossIcon","cross","dispatchStepCompletionEvent","elements","component","getElementsByTagName","AuthFlow","apolloAccessToken","useState","Loading","appState","setAppState","hasAttemptedComplete","setHasAttemptedComplete","authDependencies","setAuthDependencies","logError","Redirecting","decoded","jwtDecode","linkRequestId","profileId","establishWorkplaceLink","sub","Complete","authDeps","Returning","location","protocol","host","pathname","isLoading","Container","Component","tagName","propNames","PreactElement","inst","Reflect","construct","HTMLElement","shadow","attachShadow","constructor","observedAttributes","keys","propTypes","forEach","set","v","type","setAttribute","customElements","define","displayName","register","enhanceError","require","utils","defaults","fns","fn","thisArg","args","Array","listener","onAuthorizationComplete","BUILT_IN_PARAMETERS","crypto","buildRequestUrl","requestMap","responseType","extra","query","authorizationEndpoint","log","completeAuthorizationRequest","then","AuthorizationRequestHandler","QRBitBuffer","index","bufIndex","Math","floor","put","num","putBit","getLengthInBits","bit","push","QR8bitByte","MODE_8BIT_BYTE","getLength","write","IS_LOG","IS_PROFILE","callback","arr","normalizedName","QRMath","glog","LOG_TABLE","gexp","EXP_TABLE","authorizationRequestKey","AUTHORIZATION_REQUEST_HANDLE_KEY","locationLike","LocalStorageBackend","BasicQueryStringUtils","generateRandom","all","setItem","toJson","url","assign","json","currentUri","origin","queryParams","authorizationResponse","authorizationError","AuthorizationError","error_description","error_uri","AuthorizationResponse","removeItem","QRPolynomial","offset","math","multiply","mod","ratio","GRANT_TYPE_REFRESH_TOKEN","grantType","refreshToken","toStringMap","map","getLens","b64","len","validLen","encodeChunk","uint8","start","end","lookup","join","byteLength","lens","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","extraBytes","parts","maxChunkLength","len2","Uint8Array","useHash","parseQueryString","hash","search","params","trim","encoded","encodeURIComponent","Mode","Polynomial","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHTypeInfo","getBCHDigit","getBCHTypeNumber","digit","getPatternPosition","typeNumber","getMask","maskPattern","getErrorCorrectPolynomial","errorCorrectLength","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","getLostPoint","qrCode","moduleCount","getModuleCount","lostPoint","row","col","sameCount","dark","isDark","count","darkCount","abs","_typeof","obj","iterator","_extends","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","descriptor","configurable","writable","_createClass","Constructor","protoProps","staticProps","_possibleConstructorReturn","self","_assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_inherits","subClass","superClass","TypeError","_setPrototypeOf","convertStr","out","charcode","generatePath","margin","ops","y","cell","x","concat","excavateModules","excavation","w","getImageSettings","cells","imageSettings","size","numCells","includeMargin","defaultSize","scale","width","height","excavate","floorX","floorY","ceil","React","QRCodeImpl","ErrorCorrectLevel","DEFAULT_PROPS","level","bgColor","fgColor","SUPPORTS_PATH2D","Path2D","addPath","QRCodeCanvas","_React$PureComponent","_getPrototypeOf2","_len","_key","imgLoaded","setState","_image","complete","handleImageLoad","update","nextProps","_this$props$imageSett","_nextProps$imageSetti","_this$props","qrcode","addData","make","_canvas","canvas","ctx","getContext","calculatedImageSettings","pixelRatio","devicePixelRatio","fillStyle","fillRect","fill","rdx","cdx","drawImage","_this2","_this$props2","style","otherProps","canvasStyle","img","imgSrc","display","onLoad","_ref","Fragment","_ref2","PureComponent","QRCodeSVG","_React$PureComponent2","_this$props3","image","xlinkHref","preserveAspectRatio","fgPath","shapeRendering","viewBox","QRCode","renderAs","defaultProps","payload","isAxiosError","Requestor","xhr","settings","$","ajax","reject","jqXhr","textStatus","AppAuthError","JQueryRequestor","URL","requestInit","method","body","URLSearchParams","searchParams","append","isJsonDataType","dataType","fetch","contentType","text","statusText","promise","TestRequestor","executor","resolvePromise","_listeners","onfulfilled","_resolve","subscribe","unsubscribe","reason","Cancel","throwIfRequested","splice","toJSON","description","number","fileName","lineNumber","columnNumber","stack","L","M","Q","H","getHookState","currentComponent","currentHook","hooks","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_reducer","nextValue","action","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","current","useImperativeHandle","createHandle","factory","useCallback","useContext","provider","useDebugValue","formatter","useErrorBoundary","cb","errState","componentDidCatch","flushAfterPaintEffects","afterPaintEffects","invokeCleanup","invokeEffect","hook","comp","oldArgs","newArgs","some","arg","prevRaf","oldBeforeDiff","oldBeforeRender","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","requestAnimationFrame","raf","done","clearTimeout","timeout","HAS_RAF","cancelAnimationFrame","commitQueue","authorization_endpoint","tokenEndpoint","token_endpoint","revocationEndpoint","revocation_endpoint","userInfoEndpoint","userinfo_endpoint","endSessionEndpoint","end_session_endpoint","openIdIssuerUrl","fullUrl","StorageBackend","storage","localStorage","clear","Axios","mergeConfig","createInstance","defaultConfig","extend","instanceConfig","isCancel","VERSION","version","promises","spread","default","nowInSeconds","round","Date","getTime","access_token","tokenType","token_type","expires_in","expiresIn","parseInt","idToken","id_token","issuedAt","issued_at","TokenResponse","tokenError","errorUri","TokenError","usePkce","newState","setupCodeVerifier","deriveChallenge","catch","RESPONSE_TYPE_TOKEN","config1","config2","getMergedValue","isPlainObject","merge","isArray","mergeDeepProperties","prop","isUndefined","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","createError","validateStatus","setContentTypeIfUnset","adapter","normalizeHeaderName","DEFAULT_CONTENT_TYPE","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","XMLHttpRequest","process","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","isObject","rawValue","parser","encoder","isString","stringifySafely","transformResponse","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","common","isStandardBrowserEnv","resolveURL","msie","urlParsingNode","hostname","port","originURL","navigator","userAgent","requestURL","parsed","__CANCEL__","encode","val","paramsSerializer","serializedParams","isDate","toISOString","hashmarkIndex","throwIfCancellationRequested","signal","aborted","transformData","isAbsoluteURL","combineURLs","requestedURL","relativeURL","removeNode","node","parentNode","removeChild","normalizedProps","createVNode","original","vnodeId","createRef","getDomSibling","childIndex","sibling","updateParentDomPointers","child","base","enqueueRender","rerenderQueue","prevDebounce","debounceRendering","defer","queue","sort","b","oldVNode","oldDom","parentDom","diff","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","reorderChildren","placeChild","applyRef","toChildArray","nextDom","sibDom","outer","nextSibling","insertBefore","setStyle","setProperty","IS_NON_DIMENSIONAL","dom","useCapture","cssText","eventProxyCapture","eventProxy","removeAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","componentContext","newType","contextType","doRender","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getSnapshotBeforeUpdate","diffElementNodes","root","oldHtml","newHtml","localName","createTextNode","createElementNS","is","dangerouslySetInnerHTML","diffProps","checked","parentVNode","skipRemove","componentWillUnmount","replaceNode","createContext","defaultValue","contextId","Consumer","contextValue","Provider","subs","old","ctor","handled","getDerivedStateFromError","forceUpdate","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","eject","validators","thing","deprecatedWarnings","validator","formatMessage","opt","desc","opts","warn","assertOptions","schema","allowUnknown","shallowDiffers","memo","comparer","shouldUpdate","updateRef","Memoed","isReactComponent","forwardRef","Forwarded","clone","$$typeof","REACT_FORWARD_SYMBOL","Suspense","_suspenders","suspended","lazy","loader","Lazy","prom","SuspenseList","_next","_map","Portal","container","_container","_temp","before","createPortal","parent","textContent","preactRender","preactHydrate","empty","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","createFactory","isValidElement","REACT_ELEMENT_TYPE","preactCloneElement","unmountComponentAtNode","findDOMNode","isPureReactComponent","oldDiffHook","for","mapFn","Children","only","normalized","toArray","oldCatchError","oldUnmount","suspendingVNode","suspendingComponent","resolved","onResolved","onSuspensionComplete","suspendedVNode","removeOriginal","detachedParent","originalParent","pop","wasHydrating","detachedComponent","detachedClone","fallback","list","delete","revealOrder","delegated","wrappedUnsuspend","unsuspend","Map","reverse","CAMEL_PROPS","IS_DOM","onChangeInputType","oldEventHook","persist","nativeEvent","classNameDescriptor","class","oldVNodeHook","nonCustomElement","multiple","selected","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","readContext","unstable_batchedUpdates","flushSync","StrictMode","errorCorrectLevel","dataCache","dataList","BitByte","RSBlock","BitBuffer","util","proto","newData","rsBlocks","getRSBlocks","totalDataCount","dataCount","makeImpl","getBestMaskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","pattern","createMovieClip","target_mc","instance_name","depth","qr_mc","createEmptyMovieClip","beginFill","moveTo","lineTo","endFill","bits","inc","bitIndex","byteIndex","PAD0","PAD1","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","rsPoly","modPoly","modIndex","totalCodeCount","Preact","interopDefault","getElementById","firstElementChild","app","preRenderData","inlineDataElement","decodeURI","CLI_DATA","isFunction","FormData","ArrayBuffer","isView","isNumber","pipe","product","assignValue","stripBOM","content","QRRSBlock","ECL","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","bufferToString","CHARSET","urlSafe","base64","textEncodeLite","buf","bufView","HAS_CRYPTO","HAS_SUBTLE_CRYPTO","subtle","getRandomValues","random","digest","isTokenResponse","performRevokeTokenRequest","buildURL","dispatchRequest","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","expires","path","domain","secure","cookie","toGMTString","read","match","RegExp","remove","now","NATIVE_PROFILE_SUPPORT","performance","profile","propertyKey","originalCallable","startTime","duration","profileEnd","performProfile","ignoreDuplicateOf","line","substr","settle","cookies","buildFullPath","parseHeaders","isURLSameOrigin","onCanceled","onloadend","responseHeaders","getAllResponseHeaders","responseText","requestData","requestHeaders","auth","username","password","unescape","btoa","fullPath","open","onreadystatechange","readyState","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","send"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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 = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/|\\s\\s+|\\n/g,o=(e,t)=>{let r,l=\"\",a=\"\",n=\"\";for(let c in e){let s=e[c];\"object\"==typeof s?(r=t?t.replace(/([^,])+/g,e=>c.replace(/([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):c,a+=\"@\"==c[0]?\"f\"==c[1]?o(s,c):c+\"{\"+o(s,\"k\"==c[1]?\"\":t)+\"}\":o(s,r)):\"@\"==c[0]&&\"i\"==c[1]?l=c+\" \"+s+\";\":(c=c.replace(/[A-Z]/g,\"-$&\").toLowerCase(),n+=o.p?o.p(c,s):c+\":\"+s+\";\")}return n[0]?(r=t?t+\"{\"+n+\"}\":n,l+r+a):l+a},n={},c=e=>{let t=\"\";for(let r in e)t+=r+(\"object\"==typeof e[r]?c(e[r]):e[r]);return t},s=(e,t,r,s,i)=>{let p=\"object\"==typeof e?c(e):e,u=n[p]||(n[p]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(p));if(!n[u]){let t=\"object\"==typeof e?e:(e=>{let t,r=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]&&r.shift(),t[3]?r.unshift(r[0][t[3]]=r[0][t[3]]||{}):t[4]||(r[0][t[1]]=t[2]);return r[0]})(e);n[u]=o(i?{[\"@keyframes \"+u]:t}:t,r?\"\":\".\"+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(n[u],t,s),u},i=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function p(e){let r=this||{},l=e.call?e(r.p):e;return s(l.unshift?l.raw?i(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):l,t(r.target),r.g,r.o,r.k)}let u,f,d,g=p.bind({g:1}),b=p.bind({k:1});function h(e,t,r,l){o.p=t,u=e,f=r,d=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(o,n){let c=Object.assign({},o),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=p.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=n);let i=c.as||e;return delete c.as,d&&i[0]&&d(c),u(i,c)}return t?t(a):a}}export{p as css,r as extractCss,g as glob,b as keyframes,h as setup,j as styled};\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '17.0.2'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional arugment that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n","import axios, { AxiosInstance, AxiosRequestConfig, CancelTokenSource } from 'axios';\n\nimport { addInterceptors, logRequestError, logResponseError } from 'src/utils/network';\nimport { EstablishWorkplaceLinkRequest, RequestWorkplaceLinkResponse } from 'src/models';\n\nconst requestWorkplaceLinkEndpoint = 'customer-profile/backend/v1.0/workplace-link';\nconst establishWorkplaceLinkEndpoint = 'customer-profile/customer-backend/v1.0/workplace-link';\n\nlet axiosInstance: AxiosInstance | undefined;\n\nexport const initialiseApi = async (backendUrl: string) => {\n if (axiosInstance) {\n return axiosInstance;\n }\n\n const baseUrl = backendUrl.replace(/\\/?$/, '');\n\n axiosInstance = axios.create({\n baseURL: `${baseUrl}`\n });\n\n addInterceptors(axiosInstance, {\n onRequestError: logRequestError,\n onResponseError: logResponseError\n });\n\n return axiosInstance;\n};\n\nconst getOptions = (\n accessToken: string,\n cancelToken: CancelTokenSource\n): AxiosRequestConfig<unknown> => ({\n headers: {\n Authorization: `Bearer ${accessToken}`\n },\n cancelToken: cancelToken.token\n});\n\nexport const requestWorkplaceLink = async (\n accessToken: string,\n cancelToken: CancelTokenSource\n): Promise<RequestWorkplaceLinkResponse> => {\n if (!axiosInstance) throw new Error('Api has not been initialized');\n const result = await axiosInstance.post(\n requestWorkplaceLinkEndpoint,\n {},\n getOptions(accessToken, cancelToken)\n );\n\n if (result.status == 204) return { isEstablished: true };\n\n return { isEstablished: false, linkRequest: result?.data };\n};\n\nexport const establishWorkplaceLink = (\n accessToken: string,\n linkRequestId: string,\n profileId: string,\n cancelToken: CancelTokenSource\n): Promise<void> => {\n if (!axiosInstance) throw new Error('Api has not been initialized');\n const request: EstablishWorkplaceLinkRequest = {\n linkRequestId,\n profileId\n };\n return axiosInstance.post(\n establishWorkplaceLinkEndpoint,\n request,\n getOptions(accessToken, cancelToken)\n );\n};\n","import { AuthorizationRequest } from '@openid/appauth/built/authorization_request';\nimport {\n AuthorizationNotifier,\n AuthorizationRequestHandler\n} from '@openid/appauth/built/authorization_request_handler';\nimport { RedirectRequestHandler } from '@openid/appauth/built/redirect_based_handler';\nimport {\n AuthorizationServiceConfiguration,\n AuthorizationServiceConfigurationJson\n} from '@openid/appauth/built/authorization_service_configuration';\nimport { DefaultCrypto } from '@openid/appauth/built/crypto_utils';\nimport { FetchRequestor, Requestor } from '@openid/appauth/built/xhr';\nimport { GRANT_TYPE_AUTHORIZATION_CODE, TokenRequest } from '@openid/appauth/built/token_request';\nimport {\n BaseTokenRequestHandler,\n TokenRequestHandler\n} from '@openid/appauth/built/token_request_handler';\nimport { TokenResponse } from '@openid/appauth/built/token_response';\n\nimport { StringMap } from '@openid/appauth/built/types';\n\nexport interface AuthDependencies {\n authorizationHandler: RedirectRequestHandler;\n tokenHandler: TokenRequestHandler;\n requestor: Requestor;\n}\n\nexport interface OidcConfiguration {\n openIdConnectUrl: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n state: string;\n}\n\nconst AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request';\n\nconst authorizationServiceConfigurationKey = (handle: string) => {\n return `${handle}_appauth_authorization_service_configuration`;\n};\n\n/* Cached config */\nlet configuration: AuthorizationServiceConfiguration | undefined;\n\nexport const createAuthDependencies = async (\n onStart: () => void,\n onComplete: (accessToken?: string, state?: string) => Promise<void>,\n onError: (error: string) => void\n): Promise<AuthDependencies> => {\n const notifier = new AuthorizationNotifier();\n const authorizationHandler = new RedirectRequestHandler();\n const requestor = new FetchRequestor();\n const tokenHandler = new BaseTokenRequestHandler(requestor);\n authorizationHandler.setAuthorizationNotifier(notifier);\n\n notifier.setAuthorizationListener(async (request, response, error) => {\n onStart();\n\n //prevent loading flicker\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n if (error)\n return onError(`[AuthListener]: Auth response error received: ${error.errorDescription}`);\n\n if (!response) return await onComplete();\n\n let codeVerifier: string | undefined;\n if (request.internal && request.internal.code_verifier) {\n codeVerifier = request.internal.code_verifier;\n }\n\n if (!configuration) return onError('[AuthListener]: OIDC configuration not found');\n\n try {\n const tokenResponse = await makeTokenRequest(\n response.code,\n codeVerifier,\n tokenHandler,\n request,\n configuration\n );\n\n const accessToken = getAndValidateAccessToken(tokenResponse);\n if (!accessToken || !response.state)\n return onError('[AuthListener]: Could not resolve access token or state');\n\n return await onComplete(accessToken, response.state);\n } catch (e) {\n return onError(`[AuthListener]: Token code exchange failed: ${e}`);\n }\n });\n\n return {\n authorizationHandler,\n tokenHandler,\n requestor\n };\n};\n\nexport const makeAuthorizationRequest = async (\n requestor: Requestor,\n authorizationHandler: AuthorizationRequestHandler,\n oidcConfig: OidcConfiguration\n) => {\n const config = await fetchServiceConfiguration(oidcConfig.openIdConnectUrl, requestor);\n\n const extras: StringMap = { response_mode: 'fragment', prompt: 'login', option: 'signup' };\n\n // create a request\n const request = new AuthorizationRequest(\n {\n client_id: oidcConfig.clientId,\n redirect_uri: oidcConfig.redirectUri,\n scope: oidcConfig.scope,\n response_type: AuthorizationRequest.RESPONSE_TYPE_CODE,\n state: oidcConfig.state,\n extras\n },\n new DefaultCrypto(),\n true\n );\n\n authorizationHandler.performAuthorizationRequest(config, request);\n};\n\nexport const fetchServiceConfiguration = async (openIdConnectUrl: string, requestor: Requestor) => {\n const response = await AuthorizationServiceConfiguration.fetchFromIssuer(\n openIdConnectUrl,\n requestor\n );\n\n configuration = response;\n return response;\n};\n\nexport const completeAuthIfPossible = async (authorizationHandler: RedirectRequestHandler) => {\n await tryHydrateOidcConfiguration(authorizationHandler);\n await authorizationHandler.completeAuthorizationRequestIfPossible();\n};\n\nconst makeTokenRequest = async (\n code: string,\n codeVerifier: string | undefined,\n tokenHandler: TokenRequestHandler,\n authorizationRequest: AuthorizationRequest,\n oidcConfig: AuthorizationServiceConfiguration\n) => {\n const extras: StringMap = {};\n\n if (codeVerifier) {\n extras.code_verifier = codeVerifier;\n }\n\n const request = new TokenRequest({\n client_id: authorizationRequest.clientId,\n redirect_uri: authorizationRequest.redirectUri,\n grant_type: GRANT_TYPE_AUTHORIZATION_CODE,\n code,\n refresh_token: undefined,\n extras\n });\n const response = await tokenHandler.performTokenRequest(oidcConfig, request);\n return response;\n};\n\nconst getAndValidateAccessToken = (response: TokenResponse) => {\n if (response && response.isValid()) {\n return response.accessToken;\n }\n};\n\nconst tryHydrateOidcConfiguration = async (authorizationHandler: RedirectRequestHandler) => {\n try {\n const handle = await authorizationHandler.storageBackend.getItem(\n AUTHORIZATION_REQUEST_HANDLE_KEY\n );\n const oidcConfigString =\n handle &&\n (await authorizationHandler.storageBackend.getItem(\n authorizationServiceConfigurationKey(handle)\n ));\n\n if (oidcConfigString) {\n const configJson: AuthorizationServiceConfigurationJson = JSON.parse(oidcConfigString);\n configuration = new AuthorizationServiceConfiguration(configJson);\n }\n return true;\n } catch {\n return false;\n }\n};\n","import { Fragment, FunctionalComponent, h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport jwtDecode from 'jwt-decode';\nimport { useAsyncEffect } from 'src/hooks/useAsyncEffect';\nimport { establishWorkplaceLink, requestWorkplaceLink } from 'src/services/api';\nimport {\n AuthDependencies,\n completeAuthIfPossible,\n createAuthDependencies,\n makeAuthorizationRequest,\n OidcConfiguration\n} from 'src/services/auth';\nimport { AppConfig } from 'src/components/workplaceLink';\nimport { ApolloAccessTokenClaims } from 'src/models';\nimport Loader from 'src/components/loader';\nimport Success from 'src/components/success';\nimport Error from 'src/components/error';\nimport { dispatchStepCompletionEvent, getLocation } from 'src/utils/window';\n\nexport const enum AuthFlowState {\n Loading,\n Redirecting,\n Returning,\n Error,\n Complete\n}\n\nconst AuthFlow: FunctionalComponent<AppConfig> = ({ apolloAccessToken }) => {\n const [appState, setAppState] = useState<AuthFlowState>(AuthFlowState.Loading);\n const [hasAttemptedComplete, setHasAttemptedComplete] = useState(false);\n const [authDependencies, setAuthDependencies] = useState<AuthDependencies>();\n\n const logError = (error: string) => {\n console.error(`[Link Workplace]: ${error}`);\n };\n\n useAsyncEffect(async (cancelToken) => {\n const onStart = () => setAppState(AuthFlowState.Returning);\n\n const onError = (error: string) => {\n logError(error);\n setAppState(AuthFlowState.Error);\n };\n\n const onComplete = async (accessToken?: string, state?: string) => {\n if (!accessToken || !state) return setAppState(AuthFlowState.Redirecting);\n\n try {\n const decoded: ApolloAccessTokenClaims = jwtDecode(apolloAccessToken);\n await establishWorkplaceLink(accessToken, state, decoded.sub, cancelToken);\n setAppState(AuthFlowState.Complete);\n } catch (e) {\n const errorMessage = e as string;\n onError(`Error when trying to establish workplace link: ${errorMessage}`);\n }\n };\n\n const authDeps = await createAuthDependencies(onStart, onComplete, onError);\n setAuthDependencies(authDeps);\n }, []);\n\n useAsyncEffect(async () => {\n if (authDependencies) {\n await completeAuthIfPossible(authDependencies.authorizationHandler);\n //prevent loading flicker and wait for attempt\n await new Promise((resolve) => setTimeout(resolve, 1000));\n setHasAttemptedComplete(true);\n }\n }, [authDependencies]);\n\n useEffect(() => {\n if (authDependencies && appState === AuthFlowState.Loading && hasAttemptedComplete) {\n setAppState(AuthFlowState.Redirecting);\n }\n }, [authDependencies, appState, hasAttemptedComplete]);\n\n useAsyncEffect(\n async (cancelToken) => {\n if (authDependencies && appState === AuthFlowState.Redirecting) {\n try {\n const response = await requestWorkplaceLink(apolloAccessToken, cancelToken);\n\n if (response.isEstablished) return setAppState(AuthFlowState.Complete);\n\n if (response.linkRequest) {\n const oidcConfig: OidcConfiguration = {\n openIdConnectUrl: response.linkRequest.openIdConnectUrl,\n clientId: response.linkRequest.clientId,\n redirectUri: getLocation(),\n scope: `${response.linkRequest.clientId} openid`,\n state: response.linkRequest.linkRequestId\n };\n\n await makeAuthorizationRequest(\n authDependencies.requestor,\n authDependencies?.authorizationHandler,\n oidcConfig\n );\n } else {\n logError(`Invalid response when requesting a workplace link`);\n setAppState(AuthFlowState.Error);\n }\n } catch (e) {\n logError(`Could not redirect to OIDC provider: ${e}`);\n setAppState(AuthFlowState.Error);\n }\n }\n },\n [authDependencies, appState]\n );\n\n useEffect(() => {\n if (appState === AuthFlowState.Complete) {\n dispatchStepCompletionEvent();\n }\n }, [appState]);\n\n const isLoading =\n appState == AuthFlowState.Loading ||\n appState == AuthFlowState.Redirecting ||\n appState == AuthFlowState.Returning;\n\n return (\n <Fragment>\n {isLoading && <Loader isActive={isLoading} />}\n {appState == AuthFlowState.Error && <Error />}\n {appState == AuthFlowState.Complete && <Success />}\n </Fragment>\n );\n};\n\nexport default AuthFlow;\n","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","/* eslint-disable react-hooks/exhaustive-deps */\nimport axios, { CancelTokenSource } from 'axios';\nimport { Inputs, useEffect } from 'preact/hooks';\n\ntype AsyncEffect<T> = (cancelToken: CancelTokenSource) => Promise<T>;\ntype UnmountEffect = () => void;\n\nexport const useAsyncEffect = (\n effect: AsyncEffect<void>,\n deps: Inputs,\n unmount?: UnmountEffect\n): void => {\n useEffect(() => {\n const cancelToken = axios.CancelToken.source();\n\n effect(cancelToken);\n\n return () => {\n if (unmount) {\n unmount();\n }\n cancelToken.cancel();\n };\n }, deps);\n};\n","import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\ninterface Interceptors {\n onRequest?: (request: AxiosRequestConfig) => Promise<void> | void;\n onRequestError?: (error: AxiosError) => Promise<void> | void;\n onResponse?: (response: AxiosResponse) => Promise<void> | void;\n onResponseError?: (error: AxiosError) => Promise<void> | void;\n}\n\nexport const addInterceptors = (\n instance: AxiosInstance,\n { onRequest, onRequestError, onResponse, onResponseError }: Interceptors\n) => {\n instance.interceptors.request.use(\n async (request) => {\n onRequest && (await onRequest(request));\n return request;\n },\n async (error) => {\n onRequestError && (await onRequestError(error));\n throw error;\n }\n );\n\n instance.interceptors.response.use(\n async (response) => {\n onResponse && (await onResponse(response));\n return response;\n },\n async (error) => {\n onResponseError && (await onResponseError(error));\n throw error;\n }\n );\n};\n\nexport const logRequestError = ({ request }: AxiosError) =>\n console.error('[API] Request error:', request);\n\nexport const logResponseError = ({ response }: AxiosError) => {\n if (response) {\n const { status, request, data } = response;\n\n console.error('[API] Response error:', status, request.responseURL, JSON.stringify(data));\n }\n};\n","import { createGlobalStyles } from 'goober/global';\nimport { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const ScreenReader = styled.span([tw`sr-only`]);\n\nexport const GlobalStyles = createGlobalStyles`\n @import url('//fonts.googleapis.com/css?family=Poppins');\n\n workplace-link {\n font-family: 'Poppins', sans-serif;\n }\n`;\n\nexport const ContextBox = styled.div([\n tw`\n mx-4 grid-cols-1 flex flex-col items-center justify-center rounded\n md:m-auto\n `,\n {\n minHeight: '25rem'\n }\n]);\n","import{css as n,styled as l}from\"goober\";let o=n.bind({g:1});function r(){const n=l.call({g:1},\"div\").apply(null,arguments);return function(l){return n(l),null}}export{r as createGlobalStyles,o as glob};\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const LoaderWrapper = styled.div([tw`w-48 h-2 relative`]);\n\nexport const PingPongLoadingBar = styled.div`\n box-sizing: border-box;\n overflow: hidden;\n position: absolute;\n\n &:after,\n &:before {\n box-sizing: border-box;\n display: none;\n }\n\n &.is-active {\n width: 12.5rem;\n height: 0.5rem;\n left: 0;\n top: 0;\n }\n\n &.is-active:after,\n &.is-active:before {\n display: block;\n }\n\n &:before {\n width: 12.5rem;\n background-color: #c2c2c2;\n }\n\n &:after,\n &:before {\n content: '';\n height: 1.25rem;\n position: absolute;\n top: calc(50% - 10px);\n left: calc(50% - 100px);\n }\n\n &:after {\n width: 3.125rem;\n background-color: #28364a;\n animation: moveBarPingPong 0.8s cubic-bezier(0.53, -0.01, 0.54, 0.99) infinite alternate;\n width: 4rem;\n animation-name: moveBarPingPong;\n }\n\n @keyframes moveBarPingPong {\n 0% {\n left: calc(50% - 9rem);\n }\n to {\n left: calc(50% - -6rem);\n }\n }\n`;\n","import { FunctionalComponent, h } from 'preact';\nimport { ContextBox, ScreenReader } from 'src/styles';\nimport { LoaderWrapper, PingPongLoadingBar } from './style';\n\ninterface Props {\n isActive: boolean;\n className?: string;\n}\n\nconst Loader: FunctionalComponent<Props> = ({ isActive, className }) => {\n return (\n <ContextBox>\n <LoaderWrapper className={className}>\n {isActive && <ScreenReader role=\"alert\">Loading...</ScreenReader>}\n <PingPongLoadingBar className={isActive ? 'is-active' : ''} aria-hidden={true} />\n </LoaderWrapper>\n </ContextBox>\n );\n};\n\nexport default Loader;\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const Wrapper = styled.div`\n ${() => tw`flex flex-col items-center text-center m-8`}\n\n font-family: 'Poppins', sans-serif;\n color: #052d39;\n\n h1 {\n ${() => tw`text-2xl font-semibold my-2`}\n }\n\n h2 {\n ${() => tw`text-base font-normal my-0`}\n }\n\n h3 {\n ${() => tw`text-sm font-semibold my-0`}\n }\n\n p {\n ${() => tw` text-sm font-normal my-0`}\n }\n`;\n\nexport const QRWrapper = styled.div`\n ${() => tw`my-10`}\n`;\n\nexport const Badges = styled.div`\n ${() => tw`grid-cols-2`}\n`;\n\nexport const SVG = styled.img`\n ${() => tw`m-2 h-8 inline-block`}\n`;\n\nexport const PNG = styled.img`\n ${() => tw`m-2 h-12 inline-block`}\n`;\n\nexport const BadgeLink = styled.a``;\n\nexport const Hero = styled.img`\n ${() => tw`h-24 my-2`}\n`;\n","import { FunctionalComponent, h } from 'preact';\nimport { BadgeLink, Badges, Hero, PNG, QRWrapper, SVG, Wrapper } from './style';\nimport QRCode from 'qrcode.react';\nimport googlePlay from 'src/assets/google-play-badge.png';\nimport appleStore from 'src/assets/apple-store-badge.svg';\nimport fireworks from 'src/assets/fireworks.png';\nimport { ContextBox } from 'src/styles';\n\ninterface Props {\n className?: string;\n}\n\nconst GOOGLE_DOWNLOAD = 'https://play.google.com/store/apps/details?id=com.flarehr.payandbenefits';\nconst APPLE_DOWNLOAD = 'https://apps.apple.com/us/app/flare/id1587276031';\nconst QR_CODE_LINK = 'https://esjpe.app.link';\n\nconst Success: FunctionalComponent<Props> = () => {\n return (\n <ContextBox>\n <Wrapper>\n <Hero src={fireworks} />\n <h1>You’re registered!</h1>\n <h2>To start accessing your benefits, download the Flare app and sign in!</h2>\n <QRWrapper>\n <QRCode value={QR_CODE_LINK} />\n </QRWrapper>\n\n <h3>Download the Flare App</h3>\n <p>Available on iOS and Android</p>\n <Badges>\n <BadgeLink href={APPLE_DOWNLOAD}>\n <SVG src={appleStore} />\n </BadgeLink>\n <BadgeLink href={GOOGLE_DOWNLOAD}>\n <PNG src={googlePlay} />\n </BadgeLink>\n </Badges>\n </Wrapper>\n </ContextBox>\n );\n};\n\nexport default Success;\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const CrossIcon = styled.img`\n ${() => tw`h-28 mb-10`}\n`;\n\nexport const Wrapper = styled.div`\n ${() => tw`flex flex-col items-center text-center my-24 w-full`}\n\n h1 {\n ${() => tw`text-xl font-semibold mb-2`}\n }\n\n p {\n ${() => tw`text-base font-normal my-0`}\n }\n`;\n","import { FunctionalComponent, h } from 'preact';\nimport cross from 'src/assets/cross-icon.svg';\nimport { CrossIcon, Wrapper } from './style';\n\ninterface Props {\n className?: string;\n}\n\nconst Error: FunctionalComponent<Props> = () => {\n return (\n <Wrapper>\n <CrossIcon src={cross} />\n <h1>Something went wrong!</h1>\n <p>We’re having some difficulties.</p>\n <p>Please try again shortly.</p>\n </Wrapper>\n );\n};\n\nexport default Error;\n","export const getLocation = () =>\n `${window.location.protocol}//${window.location.host}${window.location.pathname}`;\n\nexport const getWebComponent = () => {\n const elements = document.getElementsByTagName('workplace-link');\n return elements.length > 0 ? elements[0] : undefined;\n};\n\nexport const dispatchStepCompletionEvent = () => {\n const component = getWebComponent();\n if (component) {\n component.dispatchEvent(\n new CustomEvent('step-completion', { detail: 'app-workplace-linking', bubbles: true })\n );\n }\n};\n","import { styled } from 'goober/macro';\nimport tw from 'twin.macro';\n\nexport const Container = styled.div([tw`flex items-center justify-center`]);\n","import { setup } from 'goober';\nimport { FunctionalComponent, h } from 'preact';\nimport AuthFlow from 'src/components/authFlow';\nimport { useAsyncEffect } from 'src/hooks/useAsyncEffect';\nimport { initialiseApi } from 'src/services/api';\nimport { GlobalStyles } from 'src/styles';\nimport { Container } from './style';\n\ninterface WorkplaceLinkingProps {\n ['backend-url']: string;\n ['access-token']: string;\n}\n\nexport interface AppConfig {\n backendUrl: string;\n apolloAccessToken: string;\n}\n\nsetup(h);\n\nconst WorkplaceLink: FunctionalComponent<WorkplaceLinkingProps> = (props) => {\n const config = {\n backendUrl: props['backend-url'],\n apolloAccessToken: props['access-token']\n };\n\n useAsyncEffect(async () => {\n await initialiseApi(config.backendUrl);\n }, [config.backendUrl]);\n\n return (\n <div id=\"preact_root\">\n <GlobalStyles />\n <Container>\n <AuthFlow {...config} />\n </Container>\n </div>\n );\n};\n\nexport default WorkplaceLink;\n","import WorkplaceLink from './components/workplaceLink';\nimport register from 'preact-custom-element';\n\nregister(WorkplaceLink, 'workplace-link', ['backend-url', 'access-token'], {\n shadow: false\n});\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","module.exports = \"data:image/svg+xml;charset=utf-8;base64,PHN2ZyBpZD0ibGl2ZXR5cGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjExOS42NjQwNyIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDExOS42NjQwNyA0MCI+CiAgPHRpdGxlPkRvd25sb2FkX29uX3RoZV9BcHBfU3RvcmVfQmFkZ2VfVVMtVUtfUkdCX2Jsa180U1ZHXzA5MjkxNzwvdGl0bGU+CiAgPGc+CiAgICA8Zz4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTExMC4xMzQ3NywwSDkuNTM0NjhjLS4zNjY3LDAtLjcyOSwwLTEuMDk0NzMuMDAyLS4zMDYxNS4wMDItLjYwOTg2LjAwNzgxLS45MTg5NS4wMTI3QTEzLjIxNDc2LDEzLjIxNDc2LDAsMCwwLDUuNTE3MS4xOTE0MWE2LjY2NTA5LDYuNjY1MDksMCwwLDAtMS45MDA4OC42MjdBNi40Mzc3OSw2LjQzNzc5LDAsMCwwLDEuOTk3NTcsMS45OTcwNyw2LjI1ODQ0LDYuMjU4NDQsMCwwLDAsLjgxOTM1LDMuNjE4MTZhNi42MDExOSw2LjYwMTE5LDAsMCwwLS42MjUsMS45MDMzMiwxMi45OTMsMTIuOTkzLDAsMCwwLS4xNzkyLDIuMDAyQy4wMDU4Nyw3LjgzMDA4LjAwNDg5LDguMTM3NywwLDguNDQ0MzRWMzEuNTU4NmMuMDA0ODkuMzEwNS4wMDU4Ny42MTEzLjAxNTE1LjkyMTlhMTIuOTkyMzIsMTIuOTkyMzIsMCwwLDAsLjE3OTIsMi4wMDE5LDYuNTg3NTYsNi41ODc1NiwwLDAsMCwuNjI1LDEuOTA0M0E2LjIwNzc4LDYuMjA3NzgsMCwwLDAsMS45OTc1NywzOC4wMDFhNi4yNzQ0NSw2LjI3NDQ1LDAsMCwwLDEuNjE4NjUsMS4xNzg3LDYuNzAwODIsNi43MDA4MiwwLDAsMCwxLjkwMDg4LjYzMDgsMTMuNDU1MTQsMTMuNDU1MTQsMCwwLDAsMi4wMDM5LjE3NjhjLjMwOTA5LjAwNjguNjEyOC4wMTA3LjkxODk1LjAxMDdDOC44MDU2Nyw0MCw5LjE2OCw0MCw5LjUzNDY4LDQwSDExMC4xMzQ3N2MuMzU5NCwwLC43MjQ2LDAsMS4wODQtLjAwMi4zMDQ3LDAsLjYxNzItLjAwMzkuOTIxOS0uMDEwN2ExMy4yNzksMTMuMjc5LDAsMCwwLDItLjE3NjgsNi44MDQzMiw2LjgwNDMyLDAsMCwwLDEuOTA4Mi0uNjMwOCw2LjI3NzQyLDYuMjc3NDIsMCwwLDAsMS42MTcyLTEuMTc4Nyw2LjM5NDgyLDYuMzk0ODIsMCwwLDAsMS4xODE2LTEuNjE0Myw2LjYwNDEzLDYuNjA0MTMsMCwwLDAsLjYxOTEtMS45MDQzLDEzLjUwNjQzLDEzLjUwNjQzLDAsMCwwLC4xODU2LTIuMDAxOWMuMDAzOS0uMzEwNi4wMDM5LS42MTE0LjAwMzktLjkyMTkuMDA3OC0uMzYzMy4wMDc4LS43MjQ2LjAwNzgtMS4wOTM4VjkuNTM2MTNjMC0uMzY2MjEsMC0uNzI5NDktLjAwNzgtMS4wOTE3OSwwLS4zMDY2NCwwLS42MTQyNi0uMDAzOS0uOTIwOWExMy41MDcxLDEzLjUwNzEsMCwwLDAtLjE4NTYtMi4wMDIsNi42MTc3LDYuNjE3NywwLDAsMC0uNjE5MS0xLjkwMzMyLDYuNDY2MTksNi40NjYxOSwwLDAsMC0yLjc5ODgtMi43OTk4LDYuNzY3NTQsNi43Njc1NCwwLDAsMC0xLjkwODItLjYyNywxMy4wNDM5NCwxMy4wNDM5NCwwLDAsMC0yLS4xNzY3NmMtLjMwNDctLjAwNDg4LS42MTcyLS4wMTA3NC0uOTIxOS0uMDEyNjktLjM1OTQtLjAwMi0uNzI0Ni0uMDAyLTEuMDg0LS4wMDJaIiBzdHlsZT0iZmlsbDogI2E2YTZhNiIvPgogICAgICAgIDxwYXRoIGQ9Ik04LjQ0NDgzLDM5LjEyNWMtLjMwNDY4LDAtLjYwMi0uMDAzOS0uOTA0MjktLjAxMDdhMTIuNjg3MTQsMTIuNjg3MTQsMCwwLDEtMS44NjkxNC0uMTYzMSw1Ljg4MzgxLDUuODgzODEsMCwwLDEtMS42NTY3NC0uNTQ3OSw1LjQwNTczLDUuNDA1NzMsMCwwLDEtMS4zOTctMS4wMTY2LDUuMzIwODIsNS4zMjA4MiwwLDAsMS0xLjAyMDUxLTEuMzk2NSw1LjcyMTg2LDUuNzIxODYsMCwwLDEtLjU0My0xLjY1NzIsMTIuNDEzNTEsMTIuNDEzNTEsMCwwLDEtLjE2NjUtMS44NzVjLS4wMDYzNC0uMjEwOS0uMDE0NjQtLjkxMzEtLjAxNDY0LS45MTMxVjguNDQ0MzRTLjg4MTg1LDcuNzUyOTMuODg3Nyw3LjU0OThhMTIuMzcwMzksMTIuMzcwMzksMCwwLDEsLjE2NTUzLTEuODcyMDcsNS43NTU1LDUuNzU1NSwwLDAsMSwuNTQzNDYtMS42NjIxQTUuMzczNDksNS4zNzM0OSwwLDAsMSwyLjYxMTgzLDIuNjE3NjgsNS41NjU0Myw1LjU2NTQzLDAsMCwxLDQuMDE0MTcsMS41OTUyMWE1LjgyMzA5LDUuODIzMDksMCwwLDEsMS42NTMzMi0uNTQzOTRBMTIuNTg1ODksMTIuNTg1ODksMCwwLDEsNy41NDMuODg3MjFMOC40NDUzMi44NzVIMTExLjIxMzg3bC45MTMxLjAxMjdhMTIuMzg0OTMsMTIuMzg0OTMsMCwwLDEsMS44NTg0LjE2MjU5LDUuOTM4MzMsNS45MzgzMywwLDAsMSwxLjY3MDkuNTQ3ODUsNS41OTM3NCw1LjU5Mzc0LDAsMCwxLDIuNDE1LDIuNDE5OTMsNS43NjI2Nyw1Ljc2MjY3LDAsMCwxLC41MzUyLDEuNjQ4OTIsMTIuOTk1LDEyLjk5NSwwLDAsMSwuMTczOCwxLjg4NzIxYy4wMDI5LjI4MzIuMDAyOS41ODc0LjAwMjkuODkwMTQuMDA3OS4zNzUuMDA3OS43MzE5My4wMDc5LDEuMDkxNzlWMzAuNDY0OGMwLC4zNjMzLDAsLjcxNzgtLjAwNzksMS4wNzUyLDAsLjMyNTIsMCwuNjIzMS0uMDAzOS45Mjk3YTEyLjczMTI2LDEyLjczMTI2LDAsMCwxLS4xNzA5LDEuODUzNSw1LjczOSw1LjczOSwwLDAsMS0uNTQsMS42Nyw1LjQ4MDI5LDUuNDgwMjksMCwwLDEtMS4wMTU2LDEuMzg1Nyw1LjQxMjksNS40MTI5LDAsMCwxLTEuMzk5NCwxLjAyMjUsNS44NjE2OCw1Ljg2MTY4LDAsMCwxLTEuNjY4LjU0OTgsMTIuNTQyMTgsMTIuNTQyMTgsMCwwLDEtMS44NjkyLjE2MzFjLS4yOTI5LjAwNjgtLjU5OTYuMDEwNy0uODk3NC4wMTA3bC0xLjA4NC4wMDJaIi8+CiAgICAgIDwvZz4KICAgICAgPGcgaWQ9Il9Hcm91cF8iIGRhdGEtbmFtZT0iJmx0O0dyb3VwJmd0OyI+CiAgICAgICAgPGcgaWQ9Il9Hcm91cF8yIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgPGcgaWQ9Il9Hcm91cF8zIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgICA8cGF0aCBpZD0iX1BhdGhfIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgZD0iTTI0Ljc2ODg4LDIwLjMwMDY4YTQuOTQ4ODEsNC45NDg4MSwwLDAsMSwyLjM1NjU2LTQuMTUyMDYsNS4wNjU2Niw1LjA2NTY2LDAsMCwwLTMuOTkxMTYtMi4xNTc2OGMtMS42NzkyNC0uMTc2MjYtMy4zMDcxOSwxLjAwNDgzLTQuMTYyOSwxLjAwNDgzLS44NzIyNywwLTIuMTg5NzctLjk4NzMzLTMuNjA4NS0uOTU4MTRhNS4zMTUyOSw1LjMxNTI5LDAsMCwwLTQuNDcyOTIsMi43Mjc4N2MtMS45MzQsMy4zNDg0Mi0uNDkxNDEsOC4yNjk0NywxLjM2MTIsMTAuOTc2MDguOTI2OSwxLjMyNTM1LDIuMDEwMTgsMi44MDU4LDMuNDI3NjMsMi43NTMzLDEuMzg3MDYtLjA1NzUzLDEuOTA1MS0uODg0NDgsMy41Nzk0LS44ODQ0OCwxLjY1ODc2LDAsMi4xNDQ3OS44ODQ0OCwzLjU5MS44NTExLDEuNDg4MzgtLjAyNDE2LDIuNDI2MTMtMS4zMzEyNCwzLjMyMDUxLTIuNjY5MTRhMTAuOTYyLDEwLjk2MiwwLDAsMCwxLjUxODQyLTMuMDkyNTFBNC43ODIwNSw0Ljc4MjA1LDAsMCwxLDI0Ljc2ODg4LDIwLjMwMDY4WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgICAgPHBhdGggaWQ9Il9QYXRoXzIiIGRhdGEtbmFtZT0iJmx0O1BhdGgmZ3Q7IiBkPSJNMjIuMDM3MjUsMTIuMjEwODlhNC44NzI0OCw0Ljg3MjQ4LDAsMCwwLDEuMTE0NTItMy40OTA2Miw0Ljk1NzQ2LDQuOTU3NDYsMCwwLDAtMy4yMDc1OCwxLjY1OTYxLDQuNjM2MzQsNC42MzYzNCwwLDAsMC0xLjE0MzcxLDMuMzYxMzlBNC4wOTkwNSw0LjA5OTA1LDAsMCwwLDIyLjAzNzI1LDEyLjIxMDg5WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPGc+CiAgICAgICAgICA8cGF0aCBkPSJNNDIuMzAyMjcsMjcuMTM5NjVoLTQuNzMzNGwtMS4xMzY3MiwzLjM1NjQ1SDM0LjQyNzI3bDQuNDgzNC0xMi40MThoMi4wODNsNC40ODM0LDEyLjQxOEg0My40MzhaTTM4LjA1OTEsMjUuNTkwODJoMy43NTJsLTEuODQ5NjEtNS40NDcyN2gtLjA1MTc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik01NS4xNTk2OSwyNS45Njk3M2MwLDIuODEzNDgtMS41MDU4Niw0LjYyMTA5LTMuNzc4MzIsNC42MjEwOWEzLjA2OTMsMy4wNjkzLDAsMCwxLTIuODQ4NjMtMS41ODRoLS4wNDN2NC40ODQzOGgtMS44NTg0VjIxLjQ0MjM4SDQ4LjQzMDJ2MS41MDU4NmguMDM0MThhMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDIuODgyODEtMS42MDA1OUM1My42NDUsMjEuMzQ3NjYsNTUuMTU5NjksMjMuMTY0MDYsNTUuMTU5NjksMjUuOTY5NzNabS0xLjkxMDE2LDBjMC0xLjgzMy0uOTQ3MjctMy4wMzgwOS0yLjM5MjU4LTMuMDM4MDktMS40MTk5MiwwLTIuMzc1LDEuMjMwNDctMi4zNzUsMy4wMzgwOSwwLDEuODI0MjIuOTU1MDgsMy4wNDU5LDIuMzc1LDMuMDQ1OUM1Mi4zMDIyNywyOS4wMTU2Myw1My4yNDk1MywyNy44MTkzNCw1My4yNDk1MywyNS45Njk3M1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNNjUuMTI0NTMsMjUuOTY5NzNjMCwyLjgxMzQ4LTEuNTA1ODYsNC42MjEwOS0zLjc3ODMyLDQuNjIxMDlhMy4wNjkzLDMuMDY5MywwLDAsMS0yLjg0ODYzLTEuNTg0aC0uMDQzdjQuNDg0MzhoLTEuODU4NFYyMS40NDIzOEg1OC4zOTV2MS41MDU4NmguMDM0MThBMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDYxLjMxMiwyMS4zNDc2NkM2My42MDk4OCwyMS4zNDc2Niw2NS4xMjQ1MywyMy4xNjQwNiw2NS4xMjQ1MywyNS45Njk3M1ptLTEuOTEwMTYsMGMwLTEuODMzLS45NDcyNy0zLjAzODA5LTIuMzkyNTgtMy4wMzgwOS0xLjQxOTkyLDAtMi4zNzUsMS4yMzA0Ny0yLjM3NSwzLjAzODA5LDAsMS44MjQyMi45NTUwOCwzLjA0NTksMi4zNzUsMy4wNDU5QzYyLjI2NzExLDI5LjAxNTYzLDYzLjIxNDM4LDI3LjgxOTM0LDYzLjIxNDM4LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik03MS43MTA0NywyNy4wMzYxM2MuMTM3NywxLjIzMTQ1LDEuMzM0LDIuMDQsMi45Njg3NSwyLjA0LDEuNTY2NDEsMCwyLjY5MzM2LS44MDg1OSwyLjY5MzM2LTEuOTE4OTUsMC0uOTYzODctLjY3OTY5LTEuNTQxLTIuMjg5MDYtMS45MzY1MmwtMS42MDkzNy0uMzg3N2MtMi4yODAyNy0uNTUwNzgtMy4zMzg4Ny0xLjYxNzE5LTMuMzM4ODctMy4zNDc2NiwwLTIuMTQyNTgsMS44NjcxOS0zLjYxNDI2LDQuNTE4NTUtMy42MTQyNiwyLjYyNCwwLDQuNDIyODUsMS40NzE2OCw0LjQ4MzQsMy42MTQyNmgtMS44NzZjLS4xMTIzLTEuMjM5MjYtMS4xMzY3Mi0xLjk4NzMtMi42MzM3OS0xLjk4NzNzLTIuNTIxNDguNzU2ODQtMi41MjE0OCwxLjg1ODRjMCwuODc3OTMuNjU0MywxLjM5NDUzLDIuMjU0ODgsMS43OWwxLjM2ODE2LjMzNTk0YzIuNTQ3ODUuNjAyNTQsMy42MDY0NSwxLjYyNiwzLjYwNjQ1LDMuNDQyMzgsMCwyLjMyMzI0LTEuODUwNTksMy43NzgzMi00Ljc5Mzk1LDMuNzc4MzItMi43NTM5MSwwLTQuNjEzMjgtMS40MjA5LTQuNzMzNC0zLjY2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODMuMzQ2MjEsMTkuMjk5OHYyLjE0MjU4aDEuNzIxNjh2MS40NzE2OEg4My4zNDYyMXY0Ljk5MTIxYzAsLjc3NTM5LjM0NDczLDEuMTM2NzIsMS4xMDE1NiwxLjEzNjcyYTUuODA3NTIsNS44MDc1MiwwLDAsMCwuNjExMzMtLjA0M3YxLjQ2Mjg5YTUuMTAzNTEsNS4xMDM1MSwwLDAsMS0xLjAzMjIzLjA4NTk0Yy0xLjgzMywwLTIuNTQ3ODUtLjY4ODQ4LTIuNTQ3ODUtMi40NDQzNFYyMi45MTQwNkg4MC4xNjI2MlYyMS40NDIzOEg4MS40NzlWMTkuMjk5OFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODYuMDY1LDI1Ljk2OTczYzAtMi44NDg2MywxLjY3NzczLTQuNjM4NjcsNC4yOTM5NS00LjYzODY3LDIuNjI1LDAsNC4yOTQ5MiwxLjc5LDQuMjk0OTIsNC42Mzg2NywwLDIuODU2NDUtMS42NjExMyw0LjYzODY3LTQuMjk0OTIsNC42Mzg2N0M4Ny43MjYwOSwzMC42MDg0LDg2LjA2NSwyOC44MjYxNyw4Ni4wNjUsMjUuOTY5NzNabTYuNjk1MzEsMGMwLTEuOTU0MS0uODk1NTEtMy4xMDc0Mi0yLjQwMTM3LTMuMTA3NDJzLTIuNDAwMzksMS4xNjIxMS0yLjQwMDM5LDMuMTA3NDJjMCwxLjk2MTkxLjg5NDUzLDMuMTA2NDUsMi40MDAzOSwzLjEwNjQ1UzkyLjc2MDI3LDI3LjkzMTY0LDkyLjc2MDI3LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik05Ni4xODYwNiwyMS40NDIzOGgxLjc3MjQ2djEuNTQxaC4wNDNhMi4xNTk0LDIuMTU5NCwwLDAsMSwyLjE3NzczLTEuNjM1NzQsMi44NjYxNiwyLjg2NjE2LDAsMCwxLC42MzY3Mi4wNjkzNHYxLjczODI4YTIuNTk3OTQsMi41OTc5NCwwLDAsMC0uODM1LS4xMTIzLDEuODcyNjQsMS44NzI2NCwwLDAsMC0xLjkzNjUyLDIuMDgzdjUuMzcwMTJoLTEuODU4NFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNMTA5LjM4NDMsMjcuODM2OTFjLS4yNSwxLjY0MzU1LTEuODUwNTksMi43NzE0OC0zLjg5ODQ0LDIuNzcxNDgtMi42MzM3OSwwLTQuMjY4NTUtMS43NjQ2NS00LjI2ODU1LTQuNTk1NywwLTIuODM5ODQsMS42NDM1NS00LjY4MTY0LDQuMTkwNDMtNC42ODE2NCwyLjUwNDg4LDAsNC4wODAwOCwxLjcyMDcsNC4wODAwOCw0LjQ2NTgydi42MzY3MmgtNi4zOTQ1M3YuMTEyM2EyLjM1OCwyLjM1OCwwLDAsMCwyLjQzNTU1LDIuNTY0NDUsMi4wNDgzNCwyLjA0ODM0LDAsMCwwLDIuMDkwODItMS4yNzM0NFptLTYuMjgyMjMtMi43MDIxNWg0LjUyNjM3YTIuMTc3MywyLjE3NzMsMCwwLDAtMi4yMjA3LTIuMjk3ODVBMi4yOTIsMi4yOTIsMCwwLDAsMTAzLjEwMjA3LDI1LjEzNDc3WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJfR3JvdXBfNCIgZGF0YS1uYW1lPSImbHQ7R3JvdXAmZ3Q7Ij4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTM3LjgyNjE5LDguNzMxYTIuNjM5NjQsMi42Mzk2NCwwLDAsMSwyLjgwNzYyLDIuOTY0ODRjMCwxLjkwNjI1LTEuMDMwMjcsMy4wMDItMi44MDc2MiwzLjAwMkgzNS42NzA5MlY4LjczMVptLTEuMjI4NTIsNS4xMjNoMS4xMjVhMS44NzU4OCwxLjg3NTg4LDAsMCwwLDEuOTY3NzctMi4xNDYsMS44ODEsMS44ODEsMCwwLDAtMS45Njc3Ny0yLjEzMzc5aC0xLjEyNVoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTQxLjY4MDY4LDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDNDQuNTc1MjIsMTMuOTk0NjMsNDUuMDEzNjksMTMuNDI0MzIsNDUuMDEzNjksMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01MS41NzMyNiwxNC42OTc3NWgtLjkyMTg3bC0uOTMwNjYtMy4zMTY0MWgtLjA3MDMxbC0uOTI2NzYsMy4zMTY0MWgtLjkxMzA5bC0xLjI0MTIxLTQuNTAyOTNoLjkwMTM3bC44MDY2NCwzLjQzNmguMDY2NDFsLjkyNTc4LTMuNDM2aC44NTI1NGwuOTI1NzgsMy40MzZoLjA3MDMxbC44MDI3My0zLjQzNmguODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01My44NTM1NCwxMC4xOTQ4Mkg1NC43MDl2LjcxNTMzaC4wNjY0MWExLjM0OCwxLjM0OCwwLDAsMSwxLjM0Mzc1LS44MDIyNSwxLjQ2NDU2LDEuNDY0NTYsMCwwLDEsMS41NTg1OSwxLjY3NDh2Mi45MTVoLS44ODg2N1YxMi4wMDU4NmMwLS43MjM2My0uMzE0NDUtMS4wODM1LS45NzE2OC0xLjA4MzVhMS4wMzI5NCwxLjAzMjk0LDAsMCwwLTEuMDc1MiwxLjE0MTExdjIuNjM0MjhoLS44ODg2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTU5LjA5Mzc3LDguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02MS4yMTc3OSwxMi40NDQzNGEyLjEzMzQ2LDIuMTMzNDYsMCwxLDEsNC4yNDc1NiwwLDIuMTMzOCwyLjEzMzgsMCwxLDEtNC4yNDc1NiwwWm0zLjMzMywwYzAtLjk3NjA3LS40Mzg0OC0xLjU0Njg3LTEuMjA4LTEuNTQ2ODctLjc3MjQ2LDAtMS4yMDcuNTcwOC0xLjIwNywxLjU0Njg4LDAsLjk4Mzg5LjQzNDU3LDEuNTUwMjksMS4yMDcsMS41NTAyOUM2NC4xMTIzMiwxMy45OTQ2Myw2NC41NTA4LDEzLjQyNDMyLDY0LjU1MDgsMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02Ni40MDA5LDEzLjQyNDMyYzAtLjgxMDU1LjYwMzUyLTEuMjc3ODMsMS42NzQ4LTEuMzQ0MjRsMS4yMTk3My0uMDcwMzF2LS4zODg2N2MwLS40NzU1OS0uMzE0NDUtLjc0NDE0LS45MjE4Ny0uNzQ0MTQtLjQ5NjA5LDAtLjgzOTg0LjE4MjEzLS45Mzg0OC41MDA0OWgtLjg2MDM1Yy4wOTA4Mi0uNzczNDQuODE4MzYtMS4yNjk1MywxLjgzOTg0LTEuMjY5NTMsMS4xMjg5MSwwLDEuNzY1NjMuNTYyLDEuNzY1NjMsMS41MTMxOHYzLjA3NjY2aC0uODU1NDd2LS42MzI4MWgtLjA3MDMxYTEuNTE1LDEuNTE1LDAsMCwxLTEuMzUyNTQuNzA3QTEuMzYwMjYsMS4zNjAyNiwwLDAsMSw2Ni40MDA5LDEzLjQyNDMyWm0yLjg5NDUzLS4zODQ3N3YtLjM3NjQ2bC0xLjA5OTYxLjA3MDMxYy0uNjIwMTIuMDQxNS0uOTAxMzcuMjUyNDQtLjkwMTM3LjY0OTQxLDAsLjQwNTI3LjM1MTU2LjY0MTExLjgzNS42NDExMUExLjA2MTUsMS4wNjE1LDAsMCwwLDY5LjI5NTQzLDEzLjAzOTU1WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8cGF0aCBkPSJNNzEuMzQ4MTYsMTIuNDQ0MzRjMC0xLjQyMjg1LjczMTQ1LTIuMzI0MjIsMS44NjkxNC0yLjMyNDIyYTEuNDg0LDEuNDg0LDAsMCwxLDEuMzgwODYuNzloLjA2NjQxVjguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODUxNTZ2LS43MTE0M2gtLjA3MDMxYTEuNTYyODQsMS41NjI4NCwwLDAsMS0xLjQxNDA2Ljc4NTY0QzcyLjA3MTgsMTQuNzcyLDcxLjM0ODE2LDEzLjg3MDYxLDcxLjM0ODE2LDEyLjQ0NDM0Wm0uOTE4LDBjMCwuOTU1MDguNDUwMiwxLjUyOTc5LDEuMjAzMTMsMS41Mjk3OS43NDksMCwxLjIxMTkxLS41ODMsMS4yMTE5MS0xLjUyNTg4LDAtLjkzODQ4LS40Njc3Ny0xLjUyOTc5LTEuMjExOTEtMS41Mjk3OUM3Mi43MjEyMSwxMC45MTg0Niw3Mi4yNjYxMywxMS40OTcwNyw3Mi4yNjYxMywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTc5LjIzLDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDODIuMTI0NTMsMTMuOTk0NjMsODIuNTYzLDEzLjQyNDMyLDgyLjU2MywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTg0LjY2OTQ1LDEwLjE5NDgyaC44NTU0N3YuNzE1MzNoLjA2NjQxYTEuMzQ4LDEuMzQ4LDAsMCwxLDEuMzQzNzUtLjgwMjI1LDEuNDY0NTYsMS40NjQ1NiwwLDAsMSwxLjU1ODU5LDEuNjc0OHYyLjkxNUg4Ny42MDVWMTIuMDA1ODZjMC0uNzIzNjMtLjMxNDQ1LTEuMDgzNS0uOTcxNjgtMS4wODM1YTEuMDMyOTQsMS4wMzI5NCwwLDAsMC0xLjA3NTIsMS4xNDExMXYyLjYzNDI4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05My41MTUxNiw5LjA3MzczdjEuMTQxNmguOTc1NTl2Ljc0ODU0aC0uOTc1NTlWMTMuMjc5M2MwLC40NzE2OC4xOTQzNC42NzgyMi42MzY3Mi42NzgyMmEyLjk2NjU3LDIuOTY2NTcsMCwwLDAsLjMzODg3LS4wMjA1MXYuNzQwMjNhMi45MTU1LDIuOTE1NSwwLDAsMS0uNDgzNC4wNDU0MWMtLjk4ODI4LDAtMS4zODE4NC0uMzQ3NjYtMS4zODE4NC0xLjIxNTgydi0yLjU0M2gtLjcxNDg0di0uNzQ4NTRoLjcxNDg0VjkuMDczNzNaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05NS43MDQ2MSw4LjQzN2guODgwODZ2Mi40ODE0NWguMDcwMzFhMS4zODU2LDEuMzg1NiwwLDAsMSwxLjM3My0uODA2NjQsMS40ODMzOSwxLjQ4MzM5LDAsMCwxLDEuNTUwNzgsMS42Nzg3MXYyLjkwNzIzSDk4LjY5di0yLjY4OGMwLS43MTkyNC0uMzM1LTEuMDgzNS0uOTYyODktMS4wODM1YTEuMDUxOTQsMS4wNTE5NCwwLDAsMC0xLjEzMzc5LDEuMTQxNnYyLjYyOTg4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDQuNzYxMjUsMTMuNDgxOTNhMS44MjgsMS44MjgsMCwwLDEtMS45NTExNywxLjMwMjczQTIuMDQ1MzEsMi4wNDUzMSwwLDAsMSwxMDAuNzMsMTIuNDYwNDVhMi4wNzY4NSwyLjA3Njg1LDAsMCwxLDIuMDc2MTctMi4zNTI1NGMxLjI1MjkzLDAsMi4wMDg3OS44NTYsMi4wMDg3OSwyLjI3VjEyLjY4OGgtMy4xNzk2OXYuMDQ5OGExLjE5MDIsMS4xOTAyLDAsMCwwLDEuMTk5MjIsMS4yOSwxLjA3OTM0LDEuMDc5MzQsMCwwLDAsMS4wNzEyOS0uNTQ1OVptLTMuMTI2LTEuNDUxMTdoMi4yNzQ0MWExLjA4NjQ3LDEuMDg2NDcsMCwwLDAtMS4xMDg0LTEuMTY2NUExLjE1MTYyLDEuMTUxNjIsMCwwLDAsMTAxLjYzNTI3LDEyLjAzMDc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\"","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","module.exports = {\n \"version\": \"0.24.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AuthorizationRequest} from './authorization_request';\nimport {AuthorizationError, AuthorizationResponse} from './authorization_response';\nimport {AuthorizationServiceConfiguration} from './authorization_service_configuration';\nimport {Crypto} from './crypto_utils';\nimport {log} from './logger';\nimport {QueryStringUtils} from './query_string_utils';\nimport {StringMap} from './types';\n\n\n/**\n * This type represents a lambda that can take an AuthorizationRequest,\n * and an AuthorizationResponse as arguments.\n */\nexport type AuthorizationListener =\n (request: AuthorizationRequest,\n response: AuthorizationResponse|null,\n error: AuthorizationError|null) => void;\n\n/**\n * Represents a structural type holding both authorization request and response.\n */\nexport interface AuthorizationRequestResponse {\n request: AuthorizationRequest;\n response: AuthorizationResponse|null;\n error: AuthorizationError|null;\n}\n\n/**\n * Authorization Service notifier.\n * This manages the communication of the AuthorizationResponse to the 3p client.\n */\nexport class AuthorizationNotifier {\n private listener: AuthorizationListener|null = null;\n\n setAuthorizationListener(listener: AuthorizationListener) {\n this.listener = listener;\n }\n\n /**\n * The authorization complete callback.\n */\n onAuthorizationComplete(\n request: AuthorizationRequest,\n response: AuthorizationResponse|null,\n error: AuthorizationError|null): void {\n if (this.listener) {\n // complete authorization request\n this.listener(request, response, error);\n }\n }\n}\n\n// TODO(rahulrav@): add more built in parameters.\n/* built in parameters. */\nexport const BUILT_IN_PARAMETERS = ['redirect_uri', 'client_id', 'response_type', 'state', 'scope'];\n\n/**\n * Defines the interface which is capable of handling an authorization request\n * using various methods (iframe / popup / different process etc.).\n */\nexport abstract class AuthorizationRequestHandler {\n constructor(public utils: QueryStringUtils, protected crypto: Crypto) {}\n\n // notifier send the response back to the client.\n protected notifier: AuthorizationNotifier|null = null;\n\n /**\n * A utility method to be able to build the authorization request URL.\n */\n protected buildRequestUrl(\n configuration: AuthorizationServiceConfiguration,\n request: AuthorizationRequest) {\n // build the query string\n // coerce to any type for convenience\n let requestMap: StringMap = {\n 'redirect_uri': request.redirectUri,\n 'client_id': request.clientId,\n 'response_type': request.responseType,\n 'state': request.state,\n 'scope': request.scope\n };\n\n // copy over extras\n if (request.extras) {\n for (let extra in request.extras) {\n if (request.extras.hasOwnProperty(extra)) {\n // check before inserting to requestMap\n if (BUILT_IN_PARAMETERS.indexOf(extra) < 0) {\n requestMap[extra] = request.extras[extra];\n }\n }\n }\n }\n\n let query = this.utils.stringify(requestMap);\n let baseUrl = configuration.authorizationEndpoint;\n let url = `${baseUrl}?${query}`;\n return url;\n }\n\n /**\n * Completes the authorization request if necessary & when possible.\n */\n completeAuthorizationRequestIfPossible(): Promise<void> {\n // call complete authorization if possible to see there might\n // be a response that needs to be delivered.\n log(`Checking to see if there is an authorization response to be delivered.`);\n if (!this.notifier) {\n log(`Notifier is not present on AuthorizationRequest handler.\n No delivery of result will be possible`)\n }\n return this.completeAuthorizationRequest().then(result => {\n if (!result) {\n log(`No result is available yet.`);\n }\n if (result && this.notifier) {\n this.notifier.onAuthorizationComplete(result.request, result.response, result.error);\n }\n });\n }\n\n /**\n * Sets the default Authorization Service notifier.\n */\n setAuthorizationNotifier(notifier: AuthorizationNotifier): AuthorizationRequestHandler {\n this.notifier = notifier;\n return this;\n };\n\n /**\n * Makes an authorization request.\n */\n abstract performAuthorizationRequest(\n configuration: AuthorizationServiceConfiguration,\n request: AuthorizationRequest): void;\n\n /**\n * Checks if an authorization flow can be completed, and completes it.\n * The handler returns a `Promise<AuthorizationRequestResponse>` if ready, or a `Promise<null>`\n * if not ready.\n */\n protected abstract completeAuthorizationRequest(): Promise<AuthorizationRequestResponse|null>;\n}\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Global flags that control the behavior of App Auth JS. */\n\n/* Logging turned on ? */\nexport const IS_LOG = true;\n\n/* Profiling turned on ? */\nexport const IS_PROFILE = false;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AuthorizationRequest} from './authorization_request';\nimport {AuthorizationRequestHandler, AuthorizationRequestResponse} from './authorization_request_handler';\nimport {AuthorizationError, AuthorizationResponse} from './authorization_response'\nimport {AuthorizationServiceConfiguration} from './authorization_service_configuration';\nimport {Crypto, DefaultCrypto} from './crypto_utils';\nimport {log} from './logger';\nimport {BasicQueryStringUtils} from './query_string_utils';\nimport {LocalStorageBackend, StorageBackend} from './storage';\nimport {LocationLike} from './types';\n\n\n/** key for authorization request. */\nconst authorizationRequestKey =\n (handle: string) => {\n return `${handle}_appauth_authorization_request`;\n }\n\n/** key for authorization service configuration */\nconst authorizationServiceConfigurationKey =\n (handle: string) => {\n return `${handle}_appauth_authorization_service_configuration`;\n }\n\n/** key in local storage which represents the current authorization request. */\nconst AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request';\n\n/**\n * Represents an AuthorizationRequestHandler which uses a standard\n * redirect based code flow.\n */\nexport class RedirectRequestHandler extends AuthorizationRequestHandler {\n constructor(\n // use the provided storage backend\n // or initialize local storage with the default storage backend which\n // uses window.localStorage\n public storageBackend: StorageBackend = new LocalStorageBackend(),\n utils = new BasicQueryStringUtils(),\n public locationLike: LocationLike = window.location,\n crypto: Crypto = new DefaultCrypto()) {\n super(utils, crypto);\n }\n\n performAuthorizationRequest(\n configuration: AuthorizationServiceConfiguration,\n request: AuthorizationRequest) {\n const handle = this.crypto.generateRandom(10);\n\n // before you make request, persist all request related data in local storage.\n const persisted = Promise.all([\n this.storageBackend.setItem(AUTHORIZATION_REQUEST_HANDLE_KEY, handle),\n // Calling toJson() adds in the code & challenge when possible\n request.toJson().then(\n result =>\n this.storageBackend.setItem(authorizationRequestKey(handle), JSON.stringify(result))),\n this.storageBackend.setItem(\n authorizationServiceConfigurationKey(handle), JSON.stringify(configuration.toJson())),\n ]);\n\n persisted.then(() => {\n // make the redirect request\n let url = this.buildRequestUrl(configuration, request);\n log('Making a request to ', request, url);\n this.locationLike.assign(url);\n });\n }\n\n /**\n * Attempts to introspect the contents of storage backend and completes the\n * request.\n */\n protected completeAuthorizationRequest(): Promise<AuthorizationRequestResponse|null> {\n // TODO(rahulrav@): handle authorization errors.\n return this.storageBackend.getItem(AUTHORIZATION_REQUEST_HANDLE_KEY).then(handle => {\n if (handle) {\n // we have a pending request.\n // fetch authorization request, and check state\n return this.storageBackend\n .getItem(authorizationRequestKey(handle))\n // requires a corresponding instance of result\n // TODO(rahulrav@): check for inconsitent state here\n .then(result => JSON.parse(result!))\n .then(json => new AuthorizationRequest(json))\n .then(request => {\n // check redirect_uri and state\n let currentUri = `${this.locationLike.origin}${this.locationLike.pathname}`;\n let queryParams = this.utils.parse(this.locationLike, true /* use hash */);\n let state: string|undefined = queryParams['state'];\n let code: string|undefined = queryParams['code'];\n let error: string|undefined = queryParams['error'];\n log('Potential authorization request ', currentUri, queryParams, state, code, error);\n let shouldNotify = state === request.state;\n let authorizationResponse: AuthorizationResponse|null = null;\n let authorizationError: AuthorizationError|null = null;\n if (shouldNotify) {\n if (error) {\n // get additional optional info.\n let errorUri = queryParams['error_uri'];\n let errorDescription = queryParams['error_description'];\n authorizationError = new AuthorizationError({\n error: error,\n error_description: errorDescription,\n error_uri: errorUri,\n state: state\n });\n } else {\n authorizationResponse = new AuthorizationResponse({code: code, state: state});\n }\n // cleanup state\n return Promise\n .all([\n this.storageBackend.removeItem(AUTHORIZATION_REQUEST_HANDLE_KEY),\n this.storageBackend.removeItem(authorizationRequestKey(handle)),\n this.storageBackend.removeItem(authorizationServiceConfigurationKey(handle))\n ])\n .then(() => {\n log('Delivering authorization response');\n return {\n request: request,\n response: authorizationResponse,\n error: authorizationError\n } as AuthorizationRequestResponse;\n });\n } else {\n log('Mismatched request (state and request_uri) dont match.');\n return Promise.resolve(null);\n }\n });\n } else {\n return null;\n }\n });\n }\n}\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {StringMap} from './types';\n\nexport const GRANT_TYPE_AUTHORIZATION_CODE = 'authorization_code';\nexport const GRANT_TYPE_REFRESH_TOKEN = 'refresh_token';\n\n/**\n * Represents the Token Request as JSON.\n */\nexport interface TokenRequestJson {\n grant_type: string;\n code?: string;\n refresh_token?: string, redirect_uri: string;\n client_id: string;\n extras?: StringMap;\n}\n\n\n/**\n * Represents an Access Token request.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-4.1.3\n */\nexport class TokenRequest {\n clientId: string;\n redirectUri: string;\n grantType: string;\n code: string|undefined;\n refreshToken: string|undefined;\n extras: StringMap|undefined\n\n constructor(request: TokenRequestJson) {\n this.clientId = request.client_id;\n this.redirectUri = request.redirect_uri;\n this.grantType = request.grant_type;\n this.code = request.code;\n this.refreshToken = request.refresh_token;\n this.extras = request.extras;\n }\n\n /**\n * Serializes a TokenRequest to a JavaScript object.\n */\n toJson(): TokenRequestJson {\n return {\n grant_type: this.grantType,\n code: this.code,\n refresh_token: this.refreshToken,\n redirect_uri: this.redirectUri,\n client_id: this.clientId,\n extras: this.extras\n };\n }\n\n toStringMap(): StringMap {\n let map: StringMap = {\n grant_type: this.grantType,\n client_id: this.clientId,\n redirect_uri: this.redirectUri\n };\n\n if (this.code) {\n map['code'] = this.code;\n }\n\n if (this.refreshToken) {\n map['refresh_token'] = this.refreshToken;\n }\n\n // copy over extras\n if (this.extras) {\n for (let extra in this.extras) {\n if (this.extras.hasOwnProperty(extra) && !map.hasOwnProperty(extra)) {\n // check before inserting to requestMap\n map[extra] = this.extras[extra];\n }\n }\n }\n return map;\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {LocationLike, StringMap} from './types';\n\n\n/**\n * Query String Utilities.\n */\nexport interface QueryStringUtils {\n stringify(input: StringMap): string;\n parse(query: LocationLike, useHash?: boolean): StringMap;\n parseQueryString(query: string): StringMap;\n}\n\nexport class BasicQueryStringUtils implements QueryStringUtils {\n parse(input: LocationLike, useHash?: boolean) {\n if (useHash) {\n return this.parseQueryString(input.hash);\n } else {\n return this.parseQueryString(input.search);\n }\n }\n\n parseQueryString(query: string): StringMap {\n let result: StringMap = {};\n // if anything starts with ?, # or & remove it\n query = query.trim().replace(/^(\\?|#|&)/, '');\n let params = query.split('&');\n for (let i = 0; i < params.length; i += 1) {\n let param = params[i]; // looks something like a=b\n let parts = param.split('=');\n if (parts.length >= 2) {\n let key = decodeURIComponent(parts.shift()!);\n let value = parts.length > 0 ? parts.join('=') : null;\n if (value) {\n result[key] = decodeURIComponent(value);\n }\n }\n }\n return result;\n }\n\n stringify(input: StringMap) {\n let encoded: string[] = [];\n for (let key in input) {\n if (input.hasOwnProperty(key) && input[key]) {\n encoded.push(`${encodeURIComponent(key)}=${encodeURIComponent(input[key])}`)\n }\n }\n return encoded.join('&');\n }\n}\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require('react');\n\nvar PropTypes = require('prop-types'); // qr.js doesn't handle error level of zero (M) so we need to do it right,\n// thus the deep require.\n\n\nvar QRCodeImpl = require('qr.js/lib/QRCode');\n\nvar ErrorCorrectLevel = require('qr.js/lib/ErrorCorrectLevel'); // TODO: pull this off of the QRCode class type so it matches.\n\n\n// Convert from UTF-16, forcing the use of byte-mode encoding in our QR Code.\n// This allows us to encode Hanji, Kanji, emoji, etc. Ideally we'd do more\n// detection and not resort to byte-mode if possible, but we're trading off\n// a smaller library for a smaller amount of data we can potentially encode.\n// Based on http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/\nfunction convertStr(str) {\n var out = '';\n\n for (var i = 0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n\n if (charcode < 0x0080) {\n out += String.fromCharCode(charcode);\n } else if (charcode < 0x0800) {\n out += String.fromCharCode(0xc0 | charcode >> 6);\n out += String.fromCharCode(0x80 | charcode & 0x3f);\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n out += String.fromCharCode(0xe0 | charcode >> 12);\n out += String.fromCharCode(0x80 | charcode >> 6 & 0x3f);\n out += String.fromCharCode(0x80 | charcode & 0x3f);\n } else {\n // This is a surrogate pair, so we'll reconsitute the pieces and work\n // from that\n i++;\n charcode = 0x10000 + ((charcode & 0x3ff) << 10 | str.charCodeAt(i) & 0x3ff);\n out += String.fromCharCode(0xf0 | charcode >> 18);\n out += String.fromCharCode(0x80 | charcode >> 12 & 0x3f);\n out += String.fromCharCode(0x80 | charcode >> 6 & 0x3f);\n out += String.fromCharCode(0x80 | charcode & 0x3f);\n }\n }\n\n return out;\n}\n\nvar DEFAULT_PROPS = {\n size: 128,\n level: 'L',\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n includeMargin: false\n};\nvar PROP_TYPES = process.env.NODE_ENV !== 'production' ? {\n value: PropTypes.string.isRequired,\n size: PropTypes.number,\n level: PropTypes.oneOf(['L', 'M', 'Q', 'H']),\n bgColor: PropTypes.string,\n fgColor: PropTypes.string,\n includeMargin: PropTypes.bool,\n imageSettings: PropTypes.shape({\n src: PropTypes.string.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n excavate: PropTypes.bool,\n x: PropTypes.number,\n y: PropTypes.number\n })\n} : {};\nvar MARGIN_SIZE = 4; // This is *very* rough estimate of max amount of QRCode allowed to be covered.\n// It is \"wrong\" in a lot of ways (area is a terrible way to estimate, it\n// really should be number of modules covered), but if for some reason we don't\n// get an explicit height or width, I'd rather default to something than throw.\n\nvar DEFAULT_IMG_SCALE = 0.1;\n\nfunction generatePath(modules) {\n var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var ops = [];\n modules.forEach(function (row, y) {\n var start = null;\n row.forEach(function (cell, x) {\n if (!cell && start !== null) {\n // M0 0h7v1H0z injects the space with the move and drops the comma,\n // saving a char per operation\n ops.push(\"M\".concat(start + margin, \" \").concat(y + margin, \"h\").concat(x - start, \"v1H\").concat(start + margin, \"z\"));\n start = null;\n return;\n } // end of row, clean up or skip\n\n\n if (x === row.length - 1) {\n if (!cell) {\n // We would have closed the op above already so this can only mean\n // 2+ light modules in a row.\n return;\n }\n\n if (start === null) {\n // Just a single dark module.\n ops.push(\"M\".concat(x + margin, \",\").concat(y + margin, \" h1v1H\").concat(x + margin, \"z\"));\n } else {\n // Otherwise finish the current line.\n ops.push(\"M\".concat(start + margin, \",\").concat(y + margin, \" h\").concat(x + 1 - start, \"v1H\").concat(start + margin, \"z\"));\n }\n\n return;\n }\n\n if (cell && start === null) {\n start = x;\n }\n });\n });\n return ops.join('');\n} // We could just do this in generatePath, except that we want to support\n// non-Path2D canvas, so we need to keep it an explicit step.\n\n\nfunction excavateModules(modules, excavation) {\n return modules.slice().map(function (row, y) {\n if (y < excavation.y || y >= excavation.y + excavation.h) {\n return row;\n }\n\n return row.map(function (cell, x) {\n if (x < excavation.x || x >= excavation.x + excavation.w) {\n return cell;\n }\n\n return false;\n });\n });\n}\n\nfunction getImageSettings(props, cells) {\n var imageSettings = props.imageSettings,\n size = props.size,\n includeMargin = props.includeMargin;\n\n if (imageSettings == null) {\n return null;\n }\n\n var margin = includeMargin ? MARGIN_SIZE : 0;\n var numCells = cells.length + margin * 2;\n var defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n var scale = numCells / size;\n var w = (imageSettings.width || defaultSize) * scale;\n var h = (imageSettings.height || defaultSize) * scale;\n var x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n var y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n var excavation = null;\n\n if (imageSettings.excavate) {\n var floorX = Math.floor(x);\n var floorY = Math.floor(y);\n var ceilW = Math.ceil(w + x - floorX);\n var ceilH = Math.ceil(h + y - floorY);\n excavation = {\n x: floorX,\n y: floorY,\n w: ceilW,\n h: ceilH\n };\n }\n\n return {\n x: x,\n y: y,\n h: h,\n w: w,\n excavation: excavation\n };\n} // For canvas we're going to switch our drawing mode based on whether or not\n// the environment supports Path2D. We only need the constructor to be\n// supported, but Edge doesn't actually support the path (string) type\n// argument. Luckily it also doesn't support the addPath() method. We can\n// treat that as the same thing.\n\n\nvar SUPPORTS_PATH2D = function () {\n try {\n new Path2D().addPath(new Path2D());\n } catch (e) {\n return false;\n }\n\n return true;\n}();\n\nvar QRCodeCanvas =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(QRCodeCanvas, _React$PureComponent);\n\n function QRCodeCanvas() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, QRCodeCanvas);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(QRCodeCanvas)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_canvas\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_image\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n imgLoaded: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleImageLoad\", function () {\n _this.setState({\n imgLoaded: true\n });\n });\n\n return _this;\n }\n\n _createClass(QRCodeCanvas, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this._image && this._image.complete) {\n this.handleImageLoad();\n }\n\n this.update();\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this$props$imageSett, _nextProps$imageSetti;\n\n var currentSrc = (_this$props$imageSett = this.props.imageSettings) === null || _this$props$imageSett === void 0 ? void 0 : _this$props$imageSett.src;\n var nextSrc = (_nextProps$imageSetti = nextProps.imageSettings) === null || _nextProps$imageSetti === void 0 ? void 0 : _nextProps$imageSetti.src;\n\n if (currentSrc !== nextSrc) {\n this.setState({\n imgLoaded: false\n });\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: \"update\",\n value: function update() {\n var _this$props = this.props,\n value = _this$props.value,\n size = _this$props.size,\n level = _this$props.level,\n bgColor = _this$props.bgColor,\n fgColor = _this$props.fgColor,\n includeMargin = _this$props.includeMargin,\n imageSettings = _this$props.imageSettings; // We'll use type===-1 to force QRCode to automatically pick the best type\n\n var qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n qrcode.addData(convertStr(value));\n qrcode.make();\n\n if (this._canvas != null) {\n var canvas = this._canvas;\n var ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n var cells = qrcode.modules;\n\n if (cells === null) {\n return;\n }\n\n var margin = includeMargin ? MARGIN_SIZE : 0;\n var numCells = cells.length + margin * 2;\n var calculatedImageSettings = getImageSettings(this.props, cells);\n\n if (imageSettings != null && calculatedImageSettings != null) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n } // We're going to scale this so that the number of drawable units\n // matches the number of cells. This avoids rounding issues, but does\n // result in some potentially unwanted single pixel issues between\n // blocks, only in environments that don't support Path2D.\n\n\n var pixelRatio = window.devicePixelRatio || 1;\n canvas.height = canvas.width = size * pixelRatio;\n var scale = size / numCells * pixelRatio;\n ctx.scale(scale, scale); // Draw solid background, only paint dark modules.\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, numCells, numCells);\n ctx.fillStyle = fgColor;\n\n if (SUPPORTS_PATH2D) {\n // $FlowFixMe: Path2D c'tor doesn't support args yet.\n ctx.fill(new Path2D(generatePath(cells, margin)));\n } else {\n cells.forEach(function (row, rdx) {\n row.forEach(function (cell, cdx) {\n if (cell) {\n ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n }\n });\n });\n }\n\n if (this.state.imgLoaded && this._image && calculatedImageSettings != null) {\n ctx.drawImage(this._image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n value = _this$props2.value,\n size = _this$props2.size,\n level = _this$props2.level,\n bgColor = _this$props2.bgColor,\n fgColor = _this$props2.fgColor,\n style = _this$props2.style,\n includeMargin = _this$props2.includeMargin,\n imageSettings = _this$props2.imageSettings,\n otherProps = _objectWithoutProperties(_this$props2, [\"value\", \"size\", \"level\", \"bgColor\", \"fgColor\", \"style\", \"includeMargin\", \"imageSettings\"]);\n\n var canvasStyle = _objectSpread({\n height: size,\n width: size\n }, style);\n\n var img = null;\n var imgSrc = imageSettings && imageSettings.src;\n\n if (imageSettings != null && imgSrc != null) {\n img = React.createElement(\"img\", {\n src: imgSrc,\n style: {\n display: 'none'\n },\n onLoad: this.handleImageLoad,\n ref: function ref(_ref) {\n return _this2._image = _ref;\n }\n });\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"canvas\", _extends({\n style: canvasStyle,\n height: size,\n width: size,\n ref: function ref(_ref2) {\n return _this2._canvas = _ref2;\n }\n }, otherProps)), img);\n }\n }]);\n\n return QRCodeCanvas;\n}(React.PureComponent);\n\n_defineProperty(QRCodeCanvas, \"defaultProps\", DEFAULT_PROPS);\n\nif (process.env.NODE_ENV !== 'production') {\n QRCodeCanvas.propTypes = PROP_TYPES;\n}\n\nvar QRCodeSVG =\n/*#__PURE__*/\nfunction (_React$PureComponent2) {\n _inherits(QRCodeSVG, _React$PureComponent2);\n\n function QRCodeSVG() {\n _classCallCheck(this, QRCodeSVG);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(QRCodeSVG).apply(this, arguments));\n }\n\n _createClass(QRCodeSVG, [{\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n value = _this$props3.value,\n size = _this$props3.size,\n level = _this$props3.level,\n bgColor = _this$props3.bgColor,\n fgColor = _this$props3.fgColor,\n includeMargin = _this$props3.includeMargin,\n imageSettings = _this$props3.imageSettings,\n otherProps = _objectWithoutProperties(_this$props3, [\"value\", \"size\", \"level\", \"bgColor\", \"fgColor\", \"includeMargin\", \"imageSettings\"]); // We'll use type===-1 to force QRCode to automatically pick the best type\n\n\n var qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n qrcode.addData(convertStr(value));\n qrcode.make();\n var cells = qrcode.modules;\n\n if (cells === null) {\n return null;\n }\n\n var margin = includeMargin ? MARGIN_SIZE : 0;\n var numCells = cells.length + margin * 2;\n var calculatedImageSettings = getImageSettings(this.props, cells);\n var image = null;\n\n if (imageSettings != null && calculatedImageSettings != null) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n\n image = React.createElement(\"image\", {\n xlinkHref: imageSettings.src,\n height: calculatedImageSettings.h,\n width: calculatedImageSettings.w,\n x: calculatedImageSettings.x + margin,\n y: calculatedImageSettings.y + margin,\n preserveAspectRatio: \"none\"\n });\n } // Drawing strategy: instead of a rect per module, we're going to create a\n // single path for the dark modules and layer that on top of a light rect,\n // for a total of 2 DOM nodes. We pay a bit more in string concat but that's\n // way faster than DOM ops.\n // For level 1, 441 nodes -> 2\n // For level 40, 31329 -> 2\n\n\n var fgPath = generatePath(cells, margin);\n return React.createElement(\"svg\", _extends({\n shapeRendering: \"crispEdges\",\n height: size,\n width: size,\n viewBox: \"0 0 \".concat(numCells, \" \").concat(numCells)\n }, otherProps), React.createElement(\"path\", {\n fill: bgColor,\n d: \"M0,0 h\".concat(numCells, \"v\").concat(numCells, \"H0z\")\n }), React.createElement(\"path\", {\n fill: fgColor,\n d: fgPath\n }), image);\n }\n }]);\n\n return QRCodeSVG;\n}(React.PureComponent);\n\n_defineProperty(QRCodeSVG, \"defaultProps\", DEFAULT_PROPS);\n\nif (process.env.NODE_ENV !== 'production') {\n QRCodeSVG.propTypes = PROP_TYPES;\n}\n\nvar QRCode = function QRCode(props) {\n var renderAs = props.renderAs,\n otherProps = _objectWithoutProperties(props, [\"renderAs\"]);\n\n var Component = renderAs === 'svg' ? QRCodeSVG : QRCodeCanvas;\n return React.createElement(Component, otherProps);\n};\n\nQRCode.defaultProps = _objectSpread({\n renderAs: 'canvas'\n}, DEFAULT_PROPS);\nmodule.exports = QRCode;","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AppAuthError} from './errors';\n\n/**\n * An class that abstracts away the ability to make an XMLHttpRequest.\n */\nexport abstract class Requestor {\n abstract xhr<T>(settings: JQueryAjaxSettings): Promise<T>;\n}\n\n/**\n * Uses $.ajax to makes the Ajax requests.\n */\nexport class JQueryRequestor extends Requestor {\n xhr<T>(settings: JQueryAjaxSettings): Promise<T> {\n // NOTE: using jquery to make XHR's as whatwg-fetch requires\n // that I target ES6.\n const xhr = $.ajax(settings);\n return new Promise<T>((resolve, reject) => {\n xhr.then(\n (data, textStatus, jqXhr) => {\n resolve(data as T);\n },\n (jqXhr, textStatus, error) => {\n reject(new AppAuthError(error));\n });\n });\n }\n}\n\n\n/**\n * Uses fetch API to make Ajax requests\n */\nexport class FetchRequestor extends Requestor {\n xhr<T>(settings: JQueryAjaxSettings): Promise<T> {\n if (!settings.url) {\n return Promise.reject(new AppAuthError('A URL must be provided.'));\n }\n let url: URL = new URL(<string>settings.url);\n let requestInit: RequestInit = {};\n requestInit.method = settings.method;\n requestInit.mode = 'cors';\n\n if (settings.data) {\n if (settings.method && settings.method.toUpperCase() === 'POST') {\n requestInit.body = <string>settings.data;\n } else {\n let searchParams = new URLSearchParams(settings.data);\n searchParams.forEach((value, key) => {\n url.searchParams.append(key, value);\n });\n }\n }\n\n // Set the request headers\n requestInit.headers = {};\n if (settings.headers) {\n for (let i in settings.headers) {\n if (settings.headers.hasOwnProperty(i)) {\n requestInit.headers[i] = <string>settings.headers[i];\n }\n }\n }\n\n const isJsonDataType = settings.dataType && settings.dataType.toLowerCase() === 'json';\n\n // Set 'Accept' header value for json requests (Taken from\n // https://github.com/jquery/jquery/blob/e0d941156900a6bff7c098c8ea7290528e468cf8/src/ajax.js#L644\n // )\n if (isJsonDataType) {\n requestInit.headers['Accept'] = 'application/json, text/javascript, */*; q=0.01';\n }\n\n return fetch(url.toString(), requestInit).then(response => {\n if (response.status >= 200 && response.status < 300) {\n const contentType = response.headers.get('content-type');\n if (isJsonDataType || (contentType && contentType.indexOf('application/json') !== -1)) {\n return response.json();\n } else {\n return response.text();\n }\n } else {\n return Promise.reject(new AppAuthError(response.status.toString(), response.statusText));\n }\n });\n }\n}\n\n/**\n * Should be used only in the context of testing. Just uses the underlying\n * Promise to mock the behavior of the Requestor.\n */\nexport class TestRequestor extends Requestor {\n constructor(public promise: Promise<any>) {\n super();\n }\n xhr<T>(settings: JQueryAjaxSettings): Promise<T> {\n return this.promise; // unsafe cast\n }\n}\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {JQueryRequestor, Requestor} from './xhr';\n\n\n/**\n * Represents AuthorizationServiceConfiguration as a JSON object.\n */\nexport interface AuthorizationServiceConfigurationJson {\n authorization_endpoint: string;\n token_endpoint: string;\n revocation_endpoint: string;\n end_session_endpoint?: string;\n userinfo_endpoint?: string;\n}\n\n/**\n * The standard base path for well-known resources on domains.\n * See https://tools.ietf.org/html/rfc5785 for more information.\n */\nconst WELL_KNOWN_PATH = '.well-known';\n\n/**\n * The standard resource under the well known path at which an OpenID Connect\n * discovery document can be found under an issuer's base URI.\n */\nconst OPENID_CONFIGURATION = 'openid-configuration';\n\n/**\n * Configuration details required to interact with an authorization service.\n *\n * More information at https://openid.net/specs/openid-connect-discovery-1_0-17.html\n */\nexport class AuthorizationServiceConfiguration {\n authorizationEndpoint: string;\n tokenEndpoint: string;\n revocationEndpoint: string;\n userInfoEndpoint?: string;\n endSessionEndpoint?: string;\n\n constructor(request: AuthorizationServiceConfigurationJson) {\n this.authorizationEndpoint = request.authorization_endpoint;\n this.tokenEndpoint = request.token_endpoint;\n this.revocationEndpoint = request.revocation_endpoint;\n this.userInfoEndpoint = request.userinfo_endpoint;\n this.endSessionEndpoint = request.end_session_endpoint;\n }\n\n toJson() {\n return {\n authorization_endpoint: this.authorizationEndpoint,\n token_endpoint: this.tokenEndpoint,\n revocation_endpoint: this.revocationEndpoint,\n end_session_endpoint: this.endSessionEndpoint,\n userinfo_endpoint: this.userInfoEndpoint\n };\n }\n\n static fetchFromIssuer(openIdIssuerUrl: string, requestor?: Requestor):\n Promise<AuthorizationServiceConfiguration> {\n const fullUrl = `${openIdIssuerUrl}/${WELL_KNOWN_PATH}/${OPENID_CONFIGURATION}`;\n\n const requestorToUse = requestor || new JQueryRequestor();\n\n return requestorToUse\n .xhr<AuthorizationServiceConfigurationJson>({url: fullUrl, dataType: 'json', method: 'GET'})\n .then(json => new AuthorizationServiceConfiguration(json));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A subset of the `Storage` interface which we need for the backends to work.\n *\n * Essentially removes the indexable properties and readonly properties from\n * `Storage` in lib.dom.d.ts. This is so that a custom type can extend it for\n * testing.\n */\nexport interface UnderlyingStorage {\n readonly length: number;\n clear(): void;\n getItem(key: string): string|null;\n removeItem(key: string): void;\n setItem(key: string, data: string): void;\n}\n\n/**\n * Asynchronous storage APIs. All methods return a `Promise`.\n * All methods take the `DOMString`\n * IDL type (as it is the lowest common denominator).\n */\nexport abstract class StorageBackend {\n /**\n * When passed a key `name`, will return that key's value.\n */\n public abstract getItem(name: string): Promise<string|null>;\n\n /**\n * When passed a key `name`, will remove that key from the storage.\n */\n public abstract removeItem(name: string): Promise<void>;\n\n /**\n * When invoked, will empty all keys out of the storage.\n */\n public abstract clear(): Promise<void>;\n\n /**\n * The setItem() method of the `StorageBackend` interface,\n * when passed a key name and value, will add that key to the storage,\n * or update that key's value if it already exists.\n */\n public abstract setItem(name: string, value: string): Promise<void>;\n}\n\n/**\n * A `StorageBackend` backed by `localstorage`.\n */\nexport class LocalStorageBackend extends StorageBackend {\n private storage: UnderlyingStorage;\n constructor(storage?: UnderlyingStorage) {\n super();\n this.storage = storage || window.localStorage;\n }\n\n public getItem(name: string): Promise<string|null> {\n return new Promise<string|null>((resolve, reject) => {\n const value = this.storage.getItem(name);\n if (value) {\n resolve(value);\n } else {\n resolve(null);\n }\n });\n }\n\n public removeItem(name: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.storage.removeItem(name);\n resolve();\n });\n }\n\n public clear(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.storage.clear();\n resolve();\n });\n }\n\n public setItem(name: string, value: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.storage.setItem(name, value);\n resolve();\n });\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the access token types.\n * For more information see:\n * https://tools.ietf.org/html/rfc6749#section-7.1\n */\nexport type TokenType = 'bearer'|'mac';\n\n/**\n * Represents the TokenResponse as a JSON Object.\n */\nexport interface TokenResponseJson {\n access_token: string;\n token_type?: TokenType; /* treating token type as optional, as its going to be inferred. */\n expires_in?: string; /* lifetime in seconds. */\n refresh_token?: string;\n scope?: string;\n id_token?: string; /* https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse */\n issued_at?: number; /* when was it issued ? */\n}\n\n/**\n * Represents the possible error codes from the token endpoint.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-5.2\n */\nexport type ErrorType = 'invalid_request'|'invalid_client'|'invalid_grant'|'unauthorized_client'|\n 'unsupported_grant_type'|'invalid_scope';\n\n/**\n * Represents the TokenError as a JSON Object.\n */\nexport interface TokenErrorJson {\n error: ErrorType;\n error_description?: string;\n error_uri?: string;\n}\n\n// constants\nconst AUTH_EXPIRY_BUFFER = 10 * 60 * -1; // 10 mins in seconds\n\n/**\n * Returns the instant of time in seconds.\n */\nexport const nowInSeconds = () => Math.round(new Date().getTime() / 1000);\n\n/**\n * Represents the Token Response type.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-5.1\n */\nexport class TokenResponse {\n accessToken: string;\n tokenType: TokenType;\n expiresIn: number|undefined;\n refreshToken: string|undefined;\n scope: string|undefined;\n idToken: string|undefined;\n issuedAt: number;\n\n constructor(response: TokenResponseJson) {\n this.accessToken = response.access_token;\n this.tokenType = response.token_type || 'bearer';\n if (response.expires_in) {\n this.expiresIn = parseInt(response.expires_in, 10);\n }\n this.refreshToken = response.refresh_token;\n this.scope = response.scope;\n this.idToken = response.id_token;\n this.issuedAt = response.issued_at || nowInSeconds();\n }\n\n toJson(): TokenResponseJson {\n return {\n access_token: this.accessToken,\n id_token: this.idToken,\n refresh_token: this.refreshToken,\n scope: this.scope,\n token_type: this.tokenType,\n issued_at: this.issuedAt,\n expires_in: this.expiresIn?.toString()\n };\n }\n\n isValid(buffer: number = AUTH_EXPIRY_BUFFER): boolean {\n if (this.expiresIn) {\n let now = nowInSeconds();\n return now < this.issuedAt + this.expiresIn + buffer;\n } else {\n return true;\n }\n }\n}\n\n/**\n * Represents the Token Error type.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-5.2\n */\nexport class TokenError {\n error: ErrorType;\n errorDescription: string|undefined;\n errorUri: string|undefined;\n\n constructor(tokenError: TokenErrorJson) {\n this.error = tokenError.error;\n this.errorDescription = tokenError.error_description;\n this.errorUri = tokenError.error_uri;\n }\n\n toJson(): TokenErrorJson {\n return {\n error: this.error, error_description: this.errorDescription, error_uri: this.errorUri\n }\n }\n}\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Crypto, DefaultCrypto} from './crypto_utils';\nimport {log} from './logger';\nimport {StringMap} from './types';\n\n/**\n * Represents an AuthorizationRequest as JSON.\n */\nexport interface AuthorizationRequestJson {\n response_type: string;\n client_id: string;\n redirect_uri: string;\n scope: string;\n state?: string;\n extras?: StringMap;\n internal?: StringMap;\n}\n\n/**\n * Generates a cryptographically random new state. Useful for CSRF protection.\n */\nconst SIZE = 10; // 10 bytes\nconst newState = function(crypto: Crypto): string {\n return crypto.generateRandom(SIZE);\n};\n\n/**\n * Represents the AuthorizationRequest.\n * For more information look at\n * https://tools.ietf.org/html/rfc6749#section-4.1.1\n */\nexport class AuthorizationRequest {\n static RESPONSE_TYPE_TOKEN = 'token';\n static RESPONSE_TYPE_CODE = 'code';\n\n // NOTE:\n // Both redirect_uri and state are actually optional.\n // However AppAuth is more opionionated, and requires you to use both.\n\n clientId: string;\n redirectUri: string;\n scope: string;\n responseType: string;\n state: string;\n extras?: StringMap;\n internal?: StringMap;\n /**\n * Constructs a new AuthorizationRequest.\n * Use a `undefined` value for the `state` parameter, to generate a random\n * state for CSRF protection.\n */\n constructor(\n request: AuthorizationRequestJson,\n private crypto: Crypto = new DefaultCrypto(),\n private usePkce: boolean = true) {\n this.clientId = request.client_id;\n this.redirectUri = request.redirect_uri;\n this.scope = request.scope;\n this.responseType = request.response_type || AuthorizationRequest.RESPONSE_TYPE_CODE;\n this.state = request.state || newState(crypto);\n this.extras = request.extras;\n // read internal properties if available\n this.internal = request.internal;\n }\n\n setupCodeVerifier(): Promise<void> {\n if (!this.usePkce) {\n return Promise.resolve();\n } else {\n const codeVerifier = this.crypto.generateRandom(128);\n const challenge: Promise<string|undefined> =\n this.crypto.deriveChallenge(codeVerifier).catch(error => {\n log('Unable to generate PKCE challenge. Not using PKCE', error);\n return undefined;\n });\n return challenge.then(result => {\n if (result) {\n // keep track of the code used.\n this.internal = this.internal || {};\n this.internal['code_verifier'] = codeVerifier;\n this.extras = this.extras || {};\n this.extras['code_challenge'] = result;\n // We always use S256. Plain is not good enough.\n this.extras['code_challenge_method'] = 'S256';\n }\n });\n }\n }\n\n /**\n * Serializes the AuthorizationRequest to a JavaScript Object.\n */\n toJson(): Promise<AuthorizationRequestJson> {\n // Always make sure that the code verifier is setup when toJson() is called.\n return this.setupCodeVerifier().then(() => {\n return {\n response_type: this.responseType,\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n scope: this.scope,\n state: this.state,\n extras: this.extras,\n internal: this.internal\n };\n });\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the AuthorizationResponse as a JSON object.\n */\nexport interface AuthorizationResponseJson {\n code: string;\n state: string;\n}\n\n/**\n * Represents the AuthorizationError as a JSON object.\n */\nexport interface AuthorizationErrorJson {\n error: string;\n error_description?: string;\n error_uri?: string;\n state?: string;\n}\n\n/**\n * Represents the Authorization Response type.\n * For more information look at\n * https://tools.ietf.org/html/rfc6749#section-4.1.2\n */\nexport class AuthorizationResponse {\n code: string;\n state: string;\n\n constructor(response: AuthorizationResponseJson) {\n this.code = response.code;\n this.state = response.state;\n }\n\n toJson(): AuthorizationResponseJson {\n return {code: this.code, state: this.state};\n }\n}\n\n/**\n * Represents the Authorization error response.\n * For more information look at:\n * https://tools.ietf.org/html/rfc6749#section-4.1.2.1\n */\nexport class AuthorizationError {\n error: string;\n errorDescription?: string;\n errorUri?: string;\n state?: string;\n\n constructor(error: AuthorizationErrorJson) {\n this.error = error.error;\n this.errorDescription = error.error_description;\n this.errorUri = error.error_uri;\n this.state = error.state;\n }\n\n toJson(): AuthorizationErrorJson {\n return {\n error: this.error,\n error_description: this.errorDescription,\n error_uri: this.errorUri,\n state: this.state\n };\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldParentVNode, i + 1);\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tc,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 2\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink[H:h]/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (\n\t\t\tvalue != null &&\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\n\t\t) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t(child === dom ||\n\t\t\t\t\t(nodeType ? child.localName == nodeType : child.nodeType == 3))\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value || (nodeType === 'progress' && !i))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(r[i], parentVNode, typeof vnode.type != 'function');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) removeNode(vnode._dom);\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/i\n\t\t: /fil|che|ra/i\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (i === 'value' && 'defaultValue' in props && value == null) {\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t\t// a default value\n\t\t\t\tcontinue;\n\t\t\t} else if (\n\t\t\t\ti === 'defaultValue' &&\n\t\t\t\t'value' in props &&\n\t\t\t\tprops.value == null\n\t\t\t) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: <select multiple value={[]} />\n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\t// Adding support for defaultValue in select tag\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tif (normalizedProps.multiple) {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t\t} else {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\t}\n\n\tif (type && props.class != props.className) {\n\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n","import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\t// We always have ref in props.ref, except for\n\t// mobx-react. It will call this function directly\n\t// and always pass ref as the second argument.\n\tfunction Forwarded(props, ref) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\tref = props.ref || ref;\n\t\treturn fn(\n\t\t\tclone,\n\t\t\t!ref || (typeof ref === 'object' && !('current' in ref)) ? null : ref\n\t\t);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function(vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._hydrating === true) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n","import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function() {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._temp) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild(child) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tinsertBefore(child, before) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tremoveChild(child) {\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t\t_this._container.removeChild(child);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._temp) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { _vnode: vnode, _container: container });\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the AppAuthError type.\n */\nexport class AppAuthError {\n constructor(public message: string, public extras?: any) {}\n}\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as base64 from 'base64-js';\n\nimport {AppAuthError} from './errors';\n\nconst HAS_CRYPTO = typeof window !== 'undefined' && !!(window.crypto as any);\nconst HAS_SUBTLE_CRYPTO = HAS_CRYPTO && !!(window.crypto.subtle as any);\nconst CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\nexport function bufferToString(buffer: Uint8Array) {\n let state = [];\n for (let i = 0; i < buffer.byteLength; i += 1) {\n let index = buffer[i] % CHARSET.length;\n state.push(CHARSET[index]);\n }\n return state.join('');\n}\n\nexport function urlSafe(buffer: Uint8Array): string {\n const encoded = base64.fromByteArray(new Uint8Array(buffer));\n return encoded.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\n// adapted from source: http://stackoverflow.com/a/11058858\n// this is used in place of TextEncode as the api is not yet\n// well supported: https://caniuse.com/#search=TextEncoder\nexport function textEncodeLite(str: string) {\n const buf = new ArrayBuffer(str.length);\n const bufView = new Uint8Array(buf);\n\n for (let i = 0; i < str.length; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return bufView;\n}\n\nexport interface Crypto {\n /**\n * Generate a random string\n */\n generateRandom(size: number): string;\n /**\n * Compute the SHA256 of a given code.\n * This is useful when using PKCE.\n */\n deriveChallenge(code: string): Promise<string>;\n}\n\n/**\n * The default implementation of the `Crypto` interface.\n * This uses the capabilities of the browser.\n */\nexport class DefaultCrypto implements Crypto {\n generateRandom(size: number) {\n const buffer = new Uint8Array(size);\n if (HAS_CRYPTO) {\n window.crypto.getRandomValues(buffer);\n } else {\n // fall back to Math.random() if nothing else is available\n for (let i = 0; i < size; i += 1) {\n buffer[i] = (Math.random() * CHARSET.length) | 0;\n }\n }\n return bufferToString(buffer);\n }\n\n deriveChallenge(code: string): Promise<string> {\n if (code.length < 43 || code.length > 128) {\n return Promise.reject(new AppAuthError('Invalid code length.'));\n }\n if (!HAS_SUBTLE_CRYPTO) {\n return Promise.reject(new AppAuthError('window.crypto.subtle is unavailable.'));\n }\n\n return new Promise((resolve, reject) => {\n crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => {\n return resolve(urlSafe(new Uint8Array(buffer)));\n }, error => reject(error));\n });\n }\n}\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","module.exports = \"data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAoYAAAD6CAYAAAA89YbqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANhJJREFUeNrsnQucFNWZt98xKHIxghKUL7iA65U1goFdXDUq+/lLolkjBCNqgkh0veTLt15Wk5glQRY3qysqaBTvgCYSkygaN2ZVbprVSGAELyGCIAwgw8AIA8MwA3Pp7X9BtTVtT1d1d1Xf5nl+v56Zvkx3dZ3qPk+957zvqYjFYgYAAAAAcAC7AAAAAAAQQwAAAABADAEAAAAAMQQAAAAAxBAAAAAAEEMAAAAAQAwBAAAAADEEAAAAAMQQAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAAAAxBAAAAAAEEMAAAAAQAwBAAAAADEEAAAAAMQQAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAAAAxBAAAAAAEEMAAAAAQAwBAAAAADEEAAAAAMQQAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAACAMqFLZ3mjY8eOHdCtW7fRXbt2PSn++xiaHgAAANJRX1//x9bW1prGxsa5Tz/9dFVneM8VsVisbN/cFVdc8R99+/b9Zv/+/QccdthhXTjEAQAAIBuqq6sbN23atLKmpub2J5988mnEsERQZLBfv36zjz322NORQQAAAAibbdu2tbzzzjuzH3rooSsRwyLm6quvfnTEiBHf6datWwWHLQAAAEQtiEuWLLl51qxZ0xDDIkJRwiFDhiwfNGhQr1T319bW2ooVK6yqqsq5iK1btzoXAAAAAC8DBgywHj16JP4ePHiwnXjiida9e/eUj6+srFy+YcOGUeUwD7HkxXDcuHFjTz311J+nGjZ+7bXXnIukEAAAACAXhg8fbueee64jicloDuLixYtPLHU5LGkxlBSOHDlyTvLQcdzc7YknniAiCAAAAKGjCGLcQZxoohcNLb/55pvfLuXklJIVw1RSuHv3bkcIFSUEAAAAiJIxY8Y4Fy+lHjksSTHUnMIzzzxztXf4WFI4ZcqUxBxCAAAAgKhR9PDGG29sN/9Qchi/rXspvp+SXPlEiSZIIQAAABQa5THIQeQiLv369et20003LUMM84BK0nizj5FCAAAAKCRykAcffLDdbcOGDRt6+eWXX48YRoiGkFWn0Hub5hQihQAAAFBIli5das8880y724477rhJiGGEaEUTb7KJso9JNAEAAIBiQGKo2skuGuEstahhSYmhlrnzXle0EAAAAKBYSB5SLrWoYcmI4RVXXPEf3oQTRQqpUwgAAADFhLvSmouihpdeeukZiGHI9O3b95ve6wwhAwAAQDHy+9//vt313r17/wtiGDL9+/dPlBd31z4GAAAAKDaUiOKlT58+pyKGIaJsZO8wMlIIAAAAxYpK6XmHkwcMGHAEYhgi3bp1G+29TnkaAAAAKGb+8pe/eD2mQkEuxDAkunbtehJiCAAAAKVCQ0NDu+vJQS7EMAfiO/MYDjEAAAAoFbwRw1LiAJoOAAAAABBDAAAAAEAMAQAAAAAxBAAAAADEEAAAAAAQQwAAAABADAEAAAAAMQQAAACAgHRhFwDkn6FDh9qECRPsnHPOsd69e1tjY2Pivm7dutm7775rc+bMseeee87q6uoCPefll19uAwcOzGp7Fi1a5FzE2Wef7Vxyxfuc2Wz/rbfemvi7UNvUEdqW8ePH22mnnWaf+9znbPv27Tm3X6p9oP+dNm1a1v8/a9YsW7duHR84AAhOLBYr+st111236Kmnnoq5l8GDB8e06cV86THoiNiJE8fETn/+B7HTf/uD2BfuHBc76vKzYwf27lH0284luktcKGIrV66MbdmyJeZHXBZjNTU1senTp8d69erl+9xr1qyJZcsTTzyReB79HQZxscto33i3f+fOne3uK9Q2JV9GjRoVq62tdS5B2m/Tpk2x22+/PVD7pWrDbdu2OcdMNvtQr53J/3LhwiXci1zF6y7xk8nrS8G5GEqOgBOnXmNnvDLR7Fsn26bjDrJNxx5kjecfbX0nftXOev3f7PifjLEDD+vBjupExMXAZs6cac8++6wdd9xxTpTJj4MPPtj69u1rV155pX344YdOlLGz0NLSUnTtp0ij2vDwww93LkHar1+/fjqxdSKI2bSfosnxDsV5/UzxRqEBAILCUHLI9L/mVuv21b+zpY0LLFaxPyqr3/FLbXODfeYzB9j/ufyL9qVLT7O1D82ztff8np3WCaSwsrLSjjzySOvevXu7+3bs2GG7d+9OdOQahuzSpYv16NEj8Vj91mXevHmOJGp4EvLbfhK7/v37f+q+jz/+2Gk/tZm3/bziL0HU/6r9NHVg+fLlGcvhD3/4Q+cCAIAYltLO7NXHen37X+ytbT3jHftO69p1aUIKY/svLdZmVS3b7aMuB9ig6//BBl52lr1z85P28bw/swPLWAqPPvrodrdrTtqSJUtsxowZnxI9/c+oUaPslltusSOOOMIOPfRQ5/ZDDjnELrrookBiqOe/9957A2+nd97d448/7kQoUzF69Gg7+eSTE9dfffXVDufshTGXr9Db1JEU7tq1y15++WWbMmXKp0RPc/wuvfRS+973vudIncRQKMr44osv2nnnnZeRHOr/r776avvlL3+ZsVQCACCGBeTIS75nqyt6OiLY0DDW+X3QwUsTUmie382xmK1q3mJdD+1ix8+60lre22zv/r9Z1rimhh1ZRjz55JNOpNDLxo0b7fzzz++wk1fCgZIGdPnRj35kN998sxMxlIhIOILiTd7IhHQJGhJcr4Tpcdm+TilskyRccufS0NBgtbW1TvJJR0kduv2nP/2pPfDAA3bPPffYmDFjHKkXGlpesGCBs81+SSlbtmxxphK4gjp79mwbMmQIHyoAiBTmGIZp2V84zZpi+69IDneNtT17hn9KCmP6sf96k7XY282bbOPgrjbi9Yl2wvRxzD8sExT1O+OMMxJDwpKKVatW2Re+8IXAkR8Jxg033OBIoWQS8tt+EjEN67vtt3TpUmeuYJBMX4mfMs8V+a2vr0/cLtHUCYMfra2t7eRxwIABzokCAABiWCLUHdg9IYXu7931Y21v0/CUUuj9XRdrtMV71lvLhcfb31dOsYE3n8sOLXEeffTRdkkDGt4dMWJERuVLhCKHSGHh20+RQslipu13//33O9HDpqamxG2nn366b2khDSErYunOQdWUgptuuimrRBQAAMSwAPQceno7KXR/N+4ca82Sww6k0Blq3v/YjW077K0Da6z7TWfZl1bcbod9+W/YsSVIcs09SeG4ceMylgoonvZTjcBs20+JI4o4uihqeNddd/n+n6LFSlDy/h/JRwCAGJYIdW2flsKEHNbF5bBxWFopTMw/rGizNa0f29uH7bC/fupKG7bgB3bI3w1iB5cQKn7sLWlSXV0dajIGlF77KdrnjRqOHDnS/zslLqLf/e532wmp5lOGUewbAAAx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\"","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AuthorizationServiceConfiguration} from './authorization_service_configuration';\nimport {AppAuthError} from './errors';\nimport {BasicQueryStringUtils, QueryStringUtils} from './query_string_utils';\nimport {RevokeTokenRequest} from './revoke_token_request';\nimport {TokenRequest} from './token_request';\nimport {TokenError, TokenErrorJson, TokenResponse, TokenResponseJson} from './token_response';\nimport {JQueryRequestor, Requestor} from './xhr';\n\n\n/**\n * Represents an interface which can make a token request.\n */\nexport interface TokenRequestHandler {\n /**\n * Performs the token request, given the service configuration.\n */\n performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest):\n Promise<TokenResponse>;\n\n performRevokeTokenRequest(\n configuration: AuthorizationServiceConfiguration,\n request: RevokeTokenRequest): Promise<boolean>;\n}\n\n/**\n * The default token request handler.\n */\nexport class BaseTokenRequestHandler implements TokenRequestHandler {\n constructor(\n public readonly requestor: Requestor = new JQueryRequestor(),\n public readonly utils: QueryStringUtils = new BasicQueryStringUtils()) {}\n\n private isTokenResponse(response: TokenResponseJson|\n TokenErrorJson): response is TokenResponseJson {\n return (response as TokenErrorJson).error === undefined;\n }\n\n performRevokeTokenRequest(\n configuration: AuthorizationServiceConfiguration,\n request: RevokeTokenRequest): Promise<boolean> {\n let revokeTokenResponse = this.requestor.xhr<boolean>({\n url: configuration.revocationEndpoint,\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: this.utils.stringify(request.toStringMap())\n });\n\n return revokeTokenResponse.then(response => {\n return true;\n });\n }\n\n performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest):\n Promise<TokenResponse> {\n let tokenResponse = this.requestor.xhr<TokenResponseJson|TokenErrorJson>({\n url: configuration.tokenEndpoint,\n method: 'POST',\n dataType: 'json', // adding implicit dataType\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: this.utils.stringify(request.toStringMap())\n });\n\n return tokenResponse.then(response => {\n if (this.isTokenResponse(response)) {\n return new TokenResponse(response);\n } else {\n return Promise.reject<TokenResponse>(\n new AppAuthError(response.error, new TokenError(response)));\n }\n });\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","module.exports = \"data:image/png;charset=utf-8;base64,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\"","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","/*\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the\n * License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n * express or implied. See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IS_LOG, IS_PROFILE} from './flags';\n\nexport function log(message: string, ...args: any[]) {\n if (IS_LOG) {\n let length = args ? args.length : 0;\n if (length > 0) {\n console.log(message, ...args);\n } else {\n console.log(message);\n }\n }\n};\n\n// check to see if native support for profiling is available.\nconst NATIVE_PROFILE_SUPPORT =\n typeof window !== 'undefined' && !!window.performance && !!console.profile;\n\n/**\n * A decorator that can profile a function.\n */\nexport function profile(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n if (IS_PROFILE) {\n return performProfile(target, propertyKey, descriptor);\n } else {\n // return as-is\n return descriptor;\n }\n}\n\nfunction performProfile(\n target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor {\n let originalCallable = descriptor.value;\n // name must exist\n let name = originalCallable.name;\n if (!name) {\n name = 'anonymous function';\n }\n if (NATIVE_PROFILE_SUPPORT) {\n descriptor.value = function(args: any[]) {\n console.profile(name);\n let startTime = window.performance.now();\n let result = originalCallable.call(this || window, ...args);\n let duration = window.performance.now() - startTime;\n console.log(`${name} took ${duration} ms`);\n console.profileEnd();\n return result;\n };\n } else {\n descriptor.value = function(args: any[]) {\n log(`Profile start ${name}`);\n let start = Date.now();\n let result = originalCallable.call(this || window, ...args);\n let duration = Date.now() - start;\n log(`Profile end ${name} took ${duration} ms.`);\n return result;\n };\n }\n return descriptor;\n}\n","module.exports = \"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjUiIGhlaWdodD0iMTI1IiBmaWxsPSJub25lIiB4bWxuczp2PSJodHRwczovL3ZlY3RhLmlvL25hbm8iPjxnIGNsaXAtcGF0aD0idXJsKCNBKSI+PHBhdGggZD0iTTYyLjQ5OSAxMTkuOTMyYzMxLjcxOSAwIDU3LjQzMi0yNS43MTMgNTcuNDMyLTU3LjQzMlM5NC4yMTggNS4wNjggNjIuNDk5IDUuMDY4IDUuMDY2IDMwLjc4MSA1LjA2NiA2Mi41czI1LjcxMyA1Ny40MzIgNTcuNDMyIDU3LjQzMnoiIGZpbGw9IiNlZWVmZWUiLz48cGF0aCBkPSJNNzMuMTQyIDYuMDY4YTU3LjQzIDU3LjQzIDAgMCAxIDMyLjgwNiAyNi43OTNjNy4xMjIgMTIuNzg1IDkuMDk1IDI3LjgwNiA1LjUxNiA0MS45OTZzLTEyLjQ0IDI2LjQ3OS0yNC43NzQgMzQuMzU3LTI3LjIwOSAxMC43NDktNDEuNTg5IDguMDI5YzcuNDY2IDIuMzY5IDE1LjMzOCAzLjE4NSAyMy4xMzEgMi4zOTlhNTcuNDMgNTcuNDMgMCAwIDAgMjIuMTg2LTYuOTcgNTcuNDQgNTcuNDQgMCAwIDAgMTcuNjA0LTE1LjE5NmM0Ljc3LTYuMjEzIDguMjE5LTEzLjMzNiAxMC4xMzQtMjAuOTNzMi4yNTgtMTUuNTAyIDEuMDA1LTIzLjIzMy00LjA3NS0xNS4xMjYtOC4yOTEtMjEuNzI3LTkuNzM4LTEyLjI3LTE2LjIyNi0xNi42NThhNTcuNDMgNTcuNDMgMCAwIDAtMjEuNTAyLTguODU5eiIgZmlsbD0iI2RiZDhkZCIvPjxwYXRoIGQ9Ik03Mi43NzMgNjIuNWwxOC4yMzMgMTguMjMzLTEwLjI3MiAxMC4yNzItMTguMjMzLTE4LjIzMy0xOC4yMzMgMTguMjMzLTEwLjI3Mi0xMC4yNzJMNTIuMjI5IDYyLjUgMzMuOTk2IDQ0LjI2N2wxMC4yNzItMTAuMjcyIDE4LjIzMyAxOC4yMzMgMTguMjMzLTE4LjIzMyAxMC4yNzIgMTAuMjcyTDcyLjc3MyA2Mi41eiIgZmlsbD0ic2lsdmVyIi8+PGcgZmlsbD0iIzMyM2M2YiI+PHBhdGggZD0iTTgwLjczMiA5MS44NWEuODYuODYgMCAwIDEtLjMyNC0uMDY0Yy0uMTAzLS4wNDItLjE5Ni0uMTA1LS4yNzQtLjE4M0w2Mi40OTkgNzMuOTY2IDQ0Ljg2NCA5MS42MDNjLS4xNTguMTU4LS4zNzMuMjQ3LS41OTcuMjQ3cy0uNDM5LS4wODktLjU5Ny0uMjQ3TDMzLjM5NyA4MS4zMzFjLS4xNTgtLjE1OC0uMjQ3LS4zNzMtLjI0Ny0uNTk3cy4wODktLjQzOS4yNDctLjU5N0w1MS4wMzMgNjIuNSAzMy4zOTYgNDQuODY1Yy0uMTU4LS4xNTgtLjI0Ny0uMzczLS4yNDctLjU5N3MuMDg5LS40MzkuMjQ3LS41OTdsMTAuMjcyLTEwLjI3MmMuMTU4LS4xNTguMzczLS4yNDcuNTk3LS4yNDdzLjQzOS4wODkuNTk3LjI0N2wxNy42MzcgMTcuNjM1IDE3LjYzNS0xNy42MzVjLjE1OC0uMTU4LjM3My0uMjQ3LjU5Ny0uMjQ3cy40MzkuMDg5LjU5Ny4yNDdMOTEuNiA0My42NzFjLjE1OC4xNTguMjQ3LjM3My4yNDcuNTk3cy0uMDg5LjQzOS0uMjQ3LjU5N0w3My45NjUgNjIuNSA5MS42IDgwLjEzNWMuMTU4LjE1OC4yNDcuMzczLjI0Ny41OTdzLS4wODkuNDM5LS4yNDcuNTk3TDgxLjMyOCA5MS42MDFhLjg0Ljg0IDAgMCAxLS41OTYuMjQ4ek02Mi40OTkgNzEuOTI3YS44My44MyAwIDAgMSAuMzIzLjA2NGMuMTAyLjA0My4xOTYuMTA0LjI3NC4xODNsMTcuNjM1IDE3LjYzNSA5LjA3OC05LjA3OC0xNy42MzUtMTcuNjM1Yy0uMTU4LS4xNTgtLjI0Ny0uMzczLS4yNDctLjU5N3MuMDg5LS40MzkuMjQ3LS41OTdMODkuODEgNDQuMjY3bC05LjA3OC05LjA3OC0xNy42MzUgMTcuNjM1Yy0uMTU4LjE1OC0uMzczLjI0Ny0uNTk3LjI0N3MtLjQzOS0uMDg5LS41OTctLjI0N0w0NC4yNjcgMzUuMTg5bC05LjA3OCA5LjA3OCAxNy42MzUgMTcuNjM1Yy4xNTguMTU4LjI0Ny4zNzMuMjQ3LjU5N3MtLjA4OS40MzktLjI0Ny41OTdMMzUuMTkgODAuNzMxbDkuMDc4IDkuMDc4IDE3LjYzNS0xNy42MzVjLjE1OC0uMTU4LjM3My0uMjQ3LjU5Ni0uMjQ3em0uMDAxIDQ4Ljg1QTU4LjI4IDU4LjI4IDAgMCAxIDUuMzQyIDUxLjEzMWMyLjI0OC0xMS4zMDQgNy43OTktMjEuNjg5IDE1Ljk0OS0yOS44MzlTMzkuODI2IDcuNTkxIDUxLjEzIDUuMzQzYTU4LjI4IDU4LjI4IDAgMCAxIDMzLjY3MSAzLjMxNiA1OC4yNyA1OC4yNyAwIDAgMSAyNi4xNTQgMjEuNDY0YzYuNDAzIDkuNTg0IDkuODIyIDIwLjg1MSA5LjgyMiAzMi4zNzctLjAxOCAxNS40NTEtNi4xNjMgMzAuMjY0LTE3LjA4OCA0MS4xODlTNzcuOTUgMTIwLjc2IDYyLjUgMTIwLjc3N3ptMC0xMTQuODY1YTU2LjU5IDU2LjU5IDAgMCAwLTQwLjAxMyA5Ni42MDJBNTYuNTkgNTYuNTkgMCAwIDAgMTE5LjA4OSA2Mi41Yy0uMDE3LTE1LjAwMy01Ljk4NS0yOS4zODYtMTYuNTkzLTM5Ljk5NUE1Ni42NSA1Ni42NSAwIDAgMCA2Mi41IDUuOTEyeiIvPjwvZz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJBIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDEyNXYxMjVIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=\"","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n"],"sourceRoot":""}