{"version":3,"sources":["webpack:///firebase-app.js","webpack:///webpack/bootstrap 01515248cd5e204c3247","webpack:///util/dist/cjs/index.js","webpack:///tmp/tmp-200660cAD3hoK2kLNh/node_modules/tslib/tslib.es6.js","webpack:///app/dist/esm/src/firebaseApp.js","webpack:///app/dist/esm/index.js","webpack:///(webpack)/buildin/global.js","webpack:///util/dist/cjs/src/constants.js","webpack:///tmp/tmp-200660cAD3hoK2kLNh/node_modules/process/browser.js","webpack:///util/dist/cjs/src/assert.js","webpack:///util/dist/cjs/src/crypt.js","webpack:///util/dist/cjs/src/json.js","webpack:///util/dist/cjs/src/obj.js","webpack:///app/index.js","webpack:///polyfill/dist/esm/index.js","webpack:///polyfill/dist/esm/src/polyfills/promise.js","webpack:///polyfill/node_modules/promise-polyfill/lib/index.js","webpack:///tmp/tmp-200660cAD3hoK2kLNh/node_modules/node-libs-browser/node_modules/timers-browserify/main.js","webpack:///tmp/tmp-200660cAD3hoK2kLNh/node_modules/setimmediate/setImmediate.js","webpack:///polyfill/dist/esm/src/shims/Array.js","webpack:///polyfill/dist/esm/src/shims/String.js","webpack:///util/dist/cjs/src/deepCopy.js","webpack:///util/dist/cjs/src/deferred.js","webpack:///util/dist/cjs/src/environment.js","webpack:///util/dist/cjs/src/errors.js","webpack:///util/dist/cjs/src/jwt.js","webpack:///util/dist/cjs/src/query.js","webpack:///util/dist/cjs/src/sha1.js","webpack:///util/dist/cjs/src/hash.js","webpack:///util/dist/cjs/src/subscribe.js","webpack:///util/dist/cjs/src/validation.js","webpack:///util/dist/cjs/src/utf8.js","webpack:///firebase-auth.js","webpack:///auth/index.js","webpack:///auth/dist/auth.js","webpack:///firebase-database.js","webpack:///database/dist/cjs/src/core/util/util.js","webpack:///database/dist/cjs/src/core/util/Path.js","webpack:///database/dist/cjs/src/core/snap/indexes/PriorityIndex.js","webpack:///database/dist/cjs/src/core/snap/ChildrenNode.js","webpack:///database/dist/cjs/src/core/snap/Node.js","webpack:///database/dist/cjs/src/core/util/validation.js","webpack:///database/dist/cjs/src/core/operation/Operation.js","webpack:///database/dist/cjs/src/core/view/Change.js","webpack:///database/dist/cjs/src/core/snap/indexes/KeyIndex.js","webpack:///database/dist/cjs/src/core/snap/nodeFromJSON.js","webpack:///database/dist/cjs/src/core/storage/storage.js","webpack:///database/dist/cjs/src/realtime/Constants.js","webpack:///database/dist/cjs/src/core/snap/indexes/Index.js","webpack:///database/dist/cjs/src/core/snap/LeafNode.js","webpack:///database/dist/cjs/src/core/util/SortedMap.js","webpack:///database/dist/cjs/src/core/Repo.js","webpack:///database/dist/cjs/src/core/view/CacheNode.js","webpack:///logger/dist/esm/index.js","webpack:///logger/dist/esm/src/logger.js","webpack:///database/dist/cjs/src/api/Reference.js","webpack:///database/dist/cjs/src/api/DataSnapshot.js","webpack:///database/dist/cjs/src/core/util/ImmutableTree.js","webpack:///database/dist/cjs/src/core/view/filter/IndexedFilter.js","webpack:///database/dist/cjs/src/core/stats/StatsManager.js","webpack:///database/dist/cjs/src/core/RepoManager.js","webpack:///database/dist/cjs/src/api/Database.js","webpack:///database/dist/cjs/src/core/util/libs/parser.js","webpack:///database/dist/cjs/src/core/RepoInfo.js","webpack:///database/dist/cjs/src/api/onDisconnect.js","webpack:///database/dist/cjs/src/api/Query.js","webpack:///database/dist/cjs/src/core/snap/snap.js","webpack:///database/dist/cjs/src/core/snap/indexes/ValueIndex.js","webpack:///database/dist/cjs/src/core/snap/IndexMap.js","webpack:///database/dist/cjs/src/core/snap/childSet.js","webpack:///database/dist/cjs/src/core/snap/comparators.js","webpack:///database/dist/cjs/src/core/snap/indexes/PathIndex.js","webpack:///database/dist/cjs/src/core/util/ServerValues.js","webpack:///database/dist/cjs/src/core/SparseSnapshotTree.js","webpack:///database/dist/cjs/src/core/util/CountedSet.js","webpack:///database/dist/cjs/src/core/operation/Overwrite.js","webpack:///database/dist/cjs/src/core/SyncPoint.js","webpack:///database/dist/cjs/src/core/view/ViewCache.js","webpack:///database/dist/cjs/src/core/stats/StatsListener.js","webpack:///database/dist/cjs/src/core/PersistentConnection.js","webpack:///database/dist/cjs/src/core/util/EventEmitter.js","webpack:///database/dist/cjs/src/realtime/Connection.js","webpack:///database/dist/cjs/src/realtime/BrowserPollConnection.js","webpack:///database/dist/cjs/src/realtime/WebSocketConnection.js","webpack:///database/dist/cjs/src/core/ServerActions.js","webpack:///database/dist/cjs/src/core/view/filter/RangedFilter.js","webpack:///database/index.js","webpack:///database/dist/cjs/index.js","webpack:///database/dist/cjs/src/core/storage/DOMStorageWrapper.js","webpack:///database/dist/cjs/src/core/storage/MemoryStorage.js","webpack:///database/dist/cjs/src/api/TransactionResult.js","webpack:///database/dist/cjs/src/core/util/NextPushId.js","webpack:///database/dist/cjs/src/core/view/EventRegistration.js","webpack:///database/dist/cjs/src/core/view/Event.js","webpack:///database/dist/cjs/src/core/SyncTree.js","webpack:///database/dist/cjs/src/core/operation/AckUserWrite.js","webpack:///database/dist/cjs/src/core/operation/ListenComplete.js","webpack:///database/dist/cjs/src/core/operation/Merge.js","webpack:///database/dist/cjs/src/core/view/View.js","webpack:///database/dist/cjs/src/core/view/ViewProcessor.js","webpack:///database/dist/cjs/src/core/view/ChildChangeAccumulator.js","webpack:///database/dist/cjs/src/core/view/CompleteChildSource.js","webpack:///database/dist/cjs/src/core/view/EventGenerator.js","webpack:///database/dist/cjs/src/core/WriteTree.js","webpack:///database/dist/cjs/src/core/CompoundWrite.js","webpack:///database/dist/cjs/src/core/SnapshotHolder.js","webpack:///database/dist/cjs/src/core/AuthTokenProvider.js","webpack:///database/dist/cjs/src/core/stats/StatsCollection.js","webpack:///database/dist/cjs/src/core/stats/StatsReporter.js","webpack:///database/dist/cjs/src/core/view/EventQueue.js","webpack:///database/dist/cjs/src/core/util/VisibilityMonitor.js","webpack:///database/dist/cjs/src/core/util/OnlineMonitor.js","webpack:///database/dist/cjs/src/realtime/TransportManager.js","webpack:///database/dist/cjs/src/realtime/polling/PacketReceiver.js","webpack:///database/dist/cjs/src/core/ReadonlyRestClient.js","webpack:///database/dist/cjs/src/core/view/QueryParams.js","webpack:///database/dist/cjs/src/core/view/filter/LimitedFilter.js","webpack:///database/dist/cjs/src/core/Repo_transaction.js","webpack:///database/dist/cjs/src/core/util/Tree.js","webpack:///database/dist/cjs/src/api/internal.js","webpack:///database/dist/cjs/src/api/test_access.js","webpack:///firebase-messaging.js","webpack:///messaging/index.js","webpack:///messaging/dist/esm/src/helpers/array-buffer-to-base64.js","webpack:///messaging/dist/esm/src/models/clean-v1-undefined.js","webpack:///messaging/dist/esm/src/models/token-details-model.js","webpack:///messaging/dist/esm/index.js","webpack:///messaging/dist/esm/src/models/errors.js","webpack:///messaging/dist/esm/src/models/db-interface.js","webpack:///messaging/dist/esm/src/models/fcm-details.js","webpack:///messaging/dist/esm/src/models/iid-model.js","webpack:///messaging/dist/esm/src/models/vapid-details-model.js","webpack:///messaging/dist/esm/src/controllers/controller-interface.js","webpack:///messaging/dist/esm/src/models/worker-page-message.js","webpack:///messaging/dist/esm/src/models/default-sw.js","webpack:///messaging/dist/esm/src/helpers/base64-to-array-buffer.js","webpack:///messaging/dist/esm/src/controllers/window-controller.js","webpack:///messaging/dist/esm/src/controllers/sw-controller.js","webpack:///firebase-storage.js","webpack:///storage/index.js","webpack:///storage/dist/esm/src/implementation/error.js","webpack:///storage/dist/esm/src/implementation/string.js","webpack:///storage/dist/esm/src/implementation/taskenums.js","webpack:///storage/dist/esm/src/implementation/object.js","webpack:///storage/dist/esm/src/implementation/promise_external.js","webpack:///storage/dist/esm/src/implementation/type.js","webpack:///storage/dist/esm/src/implementation/json.js","webpack:///storage/dist/esm/src/implementation/path.js","webpack:///storage/dist/esm/src/implementation/url.js","webpack:///storage/dist/esm/src/implementation/metadata.js","webpack:///storage/dist/esm/src/implementation/args.js","webpack:///storage/dist/esm/src/implementation/fs.js","webpack:///storage/dist/esm/src/implementation/array.js","webpack:///storage/dist/esm/src/implementation/requests.js","webpack:///storage/dist/esm/src/implementation/async.js","webpack:///storage/dist/esm/src/implementation/backoff.js","webpack:///storage/dist/esm/src/implementation/request.js","webpack:///storage/dist/esm/index.js","webpack:///storage/dist/esm/src/implementation/xhrio.js","webpack:///storage/dist/esm/src/implementation/constants.js","webpack:///storage/dist/esm/src/implementation/xhrio_network.js","webpack:///storage/dist/esm/src/implementation/xhriopool.js","webpack:///storage/dist/esm/src/implementation/location.js","webpack:///storage/dist/esm/src/implementation/blob.js","webpack:///storage/dist/esm/src/implementation/requestinfo.js","webpack:///storage/dist/esm/src/implementation/observer.js","webpack:///storage/dist/esm/src/tasksnapshot.js","webpack:///storage/dist/esm/src/task.js","webpack:///storage/dist/esm/src/reference.js","webpack:///storage/dist/esm/src/implementation/failrequest.js","webpack:///storage/dist/esm/src/implementation/requestmap.js","webpack:///storage/dist/esm/src/implementation/authwrapper.js","webpack:///storage/dist/esm/src/service.js"],"names":["firebase","window","self","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","6","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error","value","assert_1","assert","assertionError","crypt_1","base64","base64Decode","base64Encode","constants_1","CONSTANTS","deepCopy_1","deepCopy","deepExtend","patchProperty","deferred_1","Deferred","environment_1","getUA","isMobileCordova","isNodeSdk","isReactNative","errors_1","ErrorFactory","FirebaseError","patchCapture","json_1","jsonEval","stringify","jwt_1","decode","isAdmin","issuedAtTime","isValidFormat","isValidTimestamp","obj_1","clone","contains","every","extend","findKey","findValue","forEach","getAnyKey","getCount","getValues","isEmpty","isNonNullObject","map","safeGet","query_1","querystring","querystringDecode","sha1_1","Sha1","subscribe_1","async","createSubscribe","validation_1","errorPrefix","validateArgCount","validateCallback","validateContextObject","validateNamespace","utf8_1","stringLength","stringToByteArray","__webpack_exports__","__extends","b","__","this","constructor","extendStatics","create","__rest","e","t","indexOf","getOwnPropertySymbols","__decorate","decorators","target","key","desc","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","apply","__generator","body","verb","v","op","f","TypeError","_","y","label","ops","pop","trys","g","sent","throw","return","Symbol","iterator","__exportStar","__values","__read","ar","__spread","concat","__await","__asyncGenerator","a","q","resume","settle","fulfill","asyncIterator","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","k","default","__importDefault","__assign","setPrototypeOf","__proto__","Array","assign","createFirebaseNamespace","removeApp","callAppHooks","apps_","app","DEFAULT_ENTRY_NAME","initializeApp","options","undefined","firebaseApp_FirebaseAppImpl","namespace","getApps","keys","registerService","createService","serviceProperties","appHook","allowMultipleInstances","factories","appHooks","serviceNamespace","appArg","cjs","args","_i","_getService","bind","extendNamespace","props","eventName","serviceName","factoryName","useAsService","useService","apps","SDK_VERSION","INTERNAL","code","appErrors","obj","tokenListeners","FirebaseAppImpl","firebase_","isDeleted_","services_","name_","options_","getUid","getToken","addAuthTokenListener","callback","setTimeout","removeAuthTokenListener","filter","listener","checkDestroyed_","delete","_this","services","serviceKey","instanceKey","all","service","instanceIdentifier","instanceSpecifier","extendApp","log","errors","no-app","bad-app-name","duplicate-app","app-deleted","duplicate-service","sa-not-supported","invalid-app-argument","Function","eval","NODE_CLIENT","NODE_ADMIN","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","run","Item","array","noop","process","nextTick","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","assertion","message","str","out","charCodeAt","byteArrayToString","bytes","pos","c1","String","fromCharCode","c2","c3","c4","u","join","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","opt_webSafe","isArray","init_","byteToCharMap","byteToCharMapWebSafe_","byteToCharMap_","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","decodeStringToByteArray","charToByteMap","charToByteMapWebSafe_","charToByteMap_","charAt","haveByte4","byte4","O","utf8Bytes","JSON","parse","data","fn","objTo","objFrom","rv","opt_obj","res","opt_this","__WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__","__WEBPACK_IMPORTED_MODULE_1__src_shims_Array__","__WEBPACK_IMPORTED_MODULE_2__src_shims_String__","global","__global","setImmediate","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","promise","ret","newValue","finale","_unhandledRejectionFn","Handler","reason","ex","setTimeoutFunc","prom","arr","val","remaining","slice","race","values","warn","Timeout","id","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","task","tasksByHandle","nextHandle","registerImmediate","runIfPresent","currentlyRunningATask","doc","document","attachTo","getPrototypeOf","toString","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","Math","random","onGlobalMessage","event","source","addEventListener","attachEvent","MessageChannel","channel","port1","port2","createElement","html","documentElement","script","onreadystatechange","removeChild","appendChild","find","predicate","kValue","findIndex","startsWith","search","substr","Date","dateValue","getTime","prop","wrapCallback","catch","navigator","test","captureFake","captureStackTrace","ERROR_NAME","err_1","stack","pattern","template","fullCode","replace","match","token","header","claims","signature","parts","split","validSince","validUntil","now","floor","decoded","querystringParams","params","arrayVal","encodeURIComponent","tslib_1","hash_1","_super","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","compress_","buf","opt_offset","W","update","opt_length","lengthMinusBlock","inbuf","digest","totalBits","j","Hash","executor","onNoObservers","proxy","ObserverProxy","subscribe","onError","implementsAnyMethods","methods","methods_1","method","observers","unsubscribes","observerCount","finalized","forEachObserver","observer","complete","nextOrObserver","unsub","unsubscribeOne","finalError","sendOne","fnName","argumentNumber","optional","argName","context","minCount","maxCount","argCount","argError","high","webpackJsonpFirebase","78","79","ba","ca","da","splice","propertyIsEnumerable","ea","fa","ha","ka","la","unshift","ma","lb","$c","oa","$goog_Thenable","pa","qa","ra","sa","ta","ua","xa","ya","va","Aa","Da","Ea","Fa","za","Ga","Ha","Ia","Ja","Ka","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","w","Ua","x","Va","Ya","Za","$a","bb","ab","eb","style","display","src","contentWindow","open","write","location","protocol","host","origin","rb","parentNode","fb","gb","hb","ib","add","jb","Window","db","wa","kb","h","mb","nb","ob","pb","qb","z","A","sb","tb","ub","vb","Zb","yb","zb","Ab","xb","Bb","wb","E","Jc","Kc","Cb","Db","Ub","Eb","Fb","Gb","Hb","Ib","ia","ja","Jb","Kb","Lb","Mb","Sb","documentMode","Xb","La","Tb","max","exec","parseInt","C","type","dc","relatedTarget","button","screenY","screenX","clientY","clientX","metaKey","shiftKey","altKey","ctrlKey","pointerId","pointerType","changedTouches","srcElement","Qb","nodeName","fromElement","toElement","pageX","pageY","ec","defaultPrevented","ic","capture","hc","jc","kc","mc","lc","qc","rc","sc","fc","tc","uc","vc","nc","wc","cc","xc","pc","yc","ac","zc","D","Ac","removeEventListener","detachEvent","oc","Bc","Cc","keyCode","returnValue","Dc","handleEvent","F","Ec","Fc","Gc","Ic","R","T","Lc","set","Mc","Nc","Pc","substring","decodeURIComponent","Qc","Rc","Sc","Tc","Uc","Oc","Vc","isNaN","ad","Wc","bd","G","cd","dd","ed","decodeURI","encodeURI","fd","gd","hd","kd","jd","ld","toLowerCase","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","zd","Ad","Cd","Bd","Dd","Ed","Fd","Gd","Hd","Id","getElementById","Jd","cssText","className","htmlFor","Kd","setAttribute","lastIndexOf","Ld","md","Md","createTextNode","nodeType","Nd","Od","Pd","Qd","Number","Boolean","Rd","valueOf","isFinite","Td","Sd","Ud","H","B","Yb","Vd","href","Wd","Xd","Yd","Zd","$d","ae","be","ce","screen","availHeight","availWidth","width","height","top","left","resizable","statusbar","toolbar","de","scrollbars","standalone","noreferrer","createEvent","initMouseEvent","dispatchEvent","Pb","opener","noopener","focus","ee","closed","ge","readyState","he","ie","je","ke","le","me","ne","pe","sort","userAgent","I","qe","localStorage","re","setItem","removeItem","indexedDB","se","te","ue","ve","we","xe","ye","ze","___jsl","L","CP","Ae","onLine","connection","Be","Ce","visibilityState","De","Ee","toUTCString","Fe","J","He","K","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","continueUrl","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","jf","Ba","mf","nf","lf","of","kf","pf","sub","na","provider_id","sign_in_provider","is_anonymous","qf","iss","aud","exp","uf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","isNewUser","kind","rawUserInfo","providerId","profile","login","screenName","Ef","Ff","Gf","M","Hf","idToken","accessToken","oauthToken","oauthTokenSecret","Jf","id_token","access_token","secret","oauth_token_secret","postBody","requestUri","Mf","isOAuthProvider","Xa","N","sf","Nf","Of","credential","Pf","Qf","Rf","Sf","Tf","rf","Uf","Vf","EMAIL_LINK_SIGN_IN_METHOD","EMAIL_PASSWORD_SIGN_IN_METHOD","$f","ag","bg","Y","cg","temporaryProof","phoneNumber","sessionInfo","fg","auth","hg","ig","oauthAccessToken","oauthIdToken","jg","kg","lg","eventId","urlResponse","sessionId","mg","og","pg","qg","email","sg","tg","vg","wg","XMLHttpRequest","ActiveXObject","xg","yg","XDomainRequest","responseText","status","statusText","onload","onerror","onprogress","bc","ontimeout","zg","Ag","Cg","Dg","Ig","Lg","Kg","Jg","Gg","Q","Hg","Mg","Ng","Og","Headers","Pg","Qg","headers","Rg","Ug","toUpperCase","ug","Vg","Wg","FormData","Tg","setRequestHeader","responseType","withCredentials","Xg","Yg","send","abort","Zg","$g","ah","aa","bh","ch","Sg","Eg","dh","eh","hh","ih","gh","jh","kh","lh","mh","Ca","nh","oh","fh","ph","qh","rh","sh","th","uh","attributes","charset","vh","getElementsByTagName","tagName","wh","xh","secureTokenEndpoint","secureTokenTimeout","yh","secureTokenHeaders","zh","firebaseEndpoint","firebaseTimeout","Ah","firebaseHeaders","Bh","node","Dh","Eh","Fh","Ch","Gh","gapi","client","request","Ih","Hh","Jh","grant_type","refresh_token","Kh","Lh","Mh","rg","Nh","Oh","Ph","identifier","continueUri","allProviders","Qh","signinMethods","Rh","Sh","authorizedDomains","Th","Uh","gg","ai","ci","di","deleteProvider","ei","fi","needConfirmation","errorMessage","gi","If","returnIdpCredential","hi","Kf","ii","Lf","autoCreate","ji","ki","oobCode","S","returnSecureToken","endpoint","$","keyInvalid","ipRefererBlocked","INVALID_CUSTOM_TOKEN","CREDENTIAL_MISMATCH","MISSING_CUSTOM_TOKEN","INVALID_IDENTIFIER","MISSING_CONTINUE_URI","INVALID_EMAIL","INVALID_PASSWORD","USER_DISABLED","MISSING_PASSWORD","EMAIL_EXISTS","PASSWORD_LOGIN_DISABLED","INVALID_IDP_RESPONSE","FEDERATED_USER_ID_ALREADY_LINKED","INVALID_MESSAGE_PAYLOAD","INVALID_RECIPIENT_EMAIL","INVALID_SENDER","EMAIL_NOT_FOUND","EXPIRED_OOB_CODE","INVALID_OOB_CODE","MISSING_OOB_CODE","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","INVALID_ID_TOKEN","TOKEN_EXPIRED","USER_NOT_FOUND","CORS_UNSUPPORTED","DYNAMIC_LINK_NOT_ACTIVATED","INVALID_APP_ID","TOO_MANY_ATTEMPTS_TRY_LATER","WEAK_PASSWORD","OPERATION_NOT_ALLOWED","USER_CANCELLED","CAPTCHA_CHECK_FAILED","INVALID_APP_CREDENTIAL","INVALID_CODE","INVALID_PHONE_NUMBER","INVALID_SESSION_INFO","INVALID_TEMPORARY_PROOF","MISSING_APP_CREDENTIAL","MISSING_CODE","MISSING_PHONE_NUMBER","MISSING_SESSION_INFO","QUOTA_EXCEEDED","SESSION_EXPIRED","INVALID_CONTINUE_URI","MISSING_ANDROID_PACKAGE_NAME","MISSING_IOS_BUNDLE_ID","UNAUTHORIZED_DOMAIN","INVALID_OAUTH_CLIENT_ID","INVALID_CERT_HASH","ui","ti","wi","xi","yi","where","url","messageHandlersFilter","position","dontclear","restyle","setHideOnLeave","zi","ping","Ai","Bi","register","Ei","Di","Ci","Fi","Gi","Hi","Ii","Ji","fe","RegExp","Ki","Li","Ni","Oi","authEvent","Mi","webStorageSupport","Pi","reactNative","AsyncStorage","Qi","Ri","Ti","errorCode","onupgradeneeded","createObjectStore","keyPath","onsuccess","Ui","Vi","objectStore","Wi","transaction","Xi","Yi","cancel","Zi","$i","aj","bj","cj","dj","ej","sessionStorage","fj","Browser","gj","Node","hj","ReactNative","ij","Worker","jj","mj","lj","nj","kj","Si","pj","oj","qj","rj","sj","getItem","tj","X","uj","vj","oldValue","wj","yj","xj","zj","Aj","Bj","Cj","Uint8Array","Int32Array","Dj","Ej","Jj","gc","Hc","Bl","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Ij","Sj","ibi","apn","appDisplayName","Uj","Rj","Vj","Tj","handleOpenURL","ng","Wj","Yj","Xj","Zj","ak","bk","ck","dk","unknown","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","ek","vi","fk","gk","hk","ik","lk","nk","mk","ok","pk","qk","rk","user","sk","kk","tk","uk","vk","wk","yk","xk","stop","zk","Ak","refreshToken","Bk","expiresIn","Ck","expires_in","expirationTime","Dk","lastSignInTime","creationTime","Ek","Fk","uid","displayName","photoURL","Gk","Hk","apiKey","appName","authDomain","Ik","Jk","Kk","U","Lk","V","Mk","Nk","Ok","Pk","start","Qk","Rk","Sk","Tk","emailVerified","isAnonymous","createdAt","lastLoginAt","providerData","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","qi","dl","providerUserInfo","rawId","photoUrl","fl","el","additionalUserInfo","operationType","gl","reload","hl","il","jl","Z","kl","ll","ml","ga","nl","stsTokenManager","redirectEventId","ol","pl","ql","rl","sl","tl","vl","wl","xl","ul","yl","zl","Al","Cl","Ob","Dl","El","Fl","Gl","logFramework","Hl","Il","Jl","Kl","Nb","Ll","Ml","Nl","Ol","currentUser","Ql","_lat","Pl","Rl","theme","Sl","Tl","hasChildNodes","Ul","Vl","Wl","Xl","Yl","am","cm","grecaptcha","Infinity","Zl","render","bm","$l","dm","em","fm","gm","hm","im","jm","km","Element","lm","mm","App","nm","om","pm","verify","qm","rm","some","trim","Wa","Rb","Vb","Wb","parseFloat","compatMode","$b","freeze","2","3","4","preventDefault","clear","Xc","Yc","Zc","cellpadding","cellspacing","colspan","frameborder","maxlength","nonce","role","rowspan","usemap","valign","\"","\\","/","\b","\f","\n","\r","\t","\u000b","Ge","Ie","abcd","toJSON","argument-error","app-not-authorized","app-not-installed","captcha-check-failed","code-expired","cordova-not-ready","cors-unsupported","credential-already-in-use","custom-token-mismatch","requires-recent-login","dynamic-link-not-activated","email-already-in-use","expired-action-code","cancelled-popup-request","internal-error","invalid-app-credential","invalid-app-id","invalid-user-token","invalid-auth-event","invalid-verification-code","invalid-continue-uri","invalid-cordova-configuration","invalid-custom-token","invalid-email","invalid-api-key","invalid-cert-hash","invalid-credential","invalid-persistence-type","invalid-message-payload","invalid-oauth-provider","invalid-oauth-client-id","unauthorized-domain","invalid-action-code","wrong-password","invalid-phone-number","invalid-recipient-email","invalid-sender","invalid-verification-id","missing-android-pkg-name","auth-domain-config-required","missing-app-credential","missing-verification-code","missing-continue-uri","missing-iframe-start","missing-ios-bundle-id","missing-phone-number","missing-verification-id","account-exists-with-different-credential","network-request-failed","no-auth-event","no-such-provider","operation-not-allowed","operation-not-supported-in-this-environment","popup-blocked","popup-closed-by-user","provider-already-linked","quota-exceeded","redirect-cancelled-by-user","redirect-operation-pending","user-token-expired","too-many-requests","unauthorized-continue-uri","unsupported-persistence-type","user-cancelled","user-not-found","user-disabled","user-mismatch","user-signed-out","weak-password","web-storage-unsupported","signInMethod","Wf","Xf","password","Yf","Zf","PROVIDER_ID","dg","operation","eg","verificationId","verificationCode","recaptchaToken","PHONE_SIGN_IN_METHOD","unsubscribe","getResponseHeader","contentType","getAllResponseHeaders","Bg","Fg","credentials","cache","fetch","Request","text","append","entries","getResponse","response","mozResponseArrayBuffer","Content-Type","setApiKey","setToken","path","authType","Vh","Wh","Xh","deleteAttribute","requestType","Yh","Zh","$h","bi","li","newPassword","mi","ni","oi","pi","ri","recaptchaSiteKey","si","put","fbase_key","getAll","openCursor","NONE","Fj","Gj","Hj","jk","confirm","users","localId","passwordHash","languages","language","userLanguage","execute","firstChild","Persistence","LOCAL","SESSION","Auth","User","util_1","util_2","util_3","util_4","util_5","util_6","storage_1","util_7","logger_1","logClient","Logger","LUIDGenerator","sha1","sha1Bytes","buildLogMessage_","var_args","logger","firstLog_","enableLogging","logger_","persistent","logLevel","LogLevel","VERBOSE","SessionStorage","remove","logWrapper","prefix","fatal","warnIfPageIsSecure","warnAboutUnsupportedMethod","methodName","isInvalidJSONNumber","POSITIVE_INFINITY","NEGATIVE_INFINITY","executeWhenDOMReady","called_1","wrappedFn_1","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","each","bindCallback","doubleToIEEE754String","ln","bits","abs","pow","min","LN2","round","reverse","hexByteString","hexByte","isChromeExtensionContentScript","isWindowsStoreApp","Windows","UI","errorForServerCode","query","INTEGER_REGEXP_","intVal","exceptionGuard","callUserCallback","beingCrawled","exportPropGetter","fnGet","setTimeoutNonBlocking","time","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","getFront","getLength","popFront","getBack","pathString","toUrlEncodedString","begin","parent","pieces","child","childPathObj","childPieces","relativePath","outerPath","innerPath","outer","inner","comparePaths","right","leftKeys","rightKeys","cmp","equals","other","ValidationPath","errorPrefix_","parts_","byteLength_","checkValid_","last","MAX_PATH_LENGTH_BYTES","MAX_PATH_DEPTH","toErrorString","setNodeFromJSON","nodeFromJSON","setMaxNode","MAX_NODE","Index_1","Node_1","LeafNode_1","PriorityIndex","compare","aPriority","getPriority","bPriority","indexCmp","compareTo","isDefinedOn","indexedValueChanged","oldNode","newNode","minPost","NamedNode","MIN","maxPost","LeafNode","makePost","indexValue","priorityNode","Index","PRIORITY_INDEX","EMPTY_NODE","SortedMap_1","snap_1","PriorityIndex_1","KeyIndex_1","IndexMap_1","comparators_1","ChildrenNode","children_","priorityNode_","indexMap_","lazyHash_","validatePriorityNode","SortedMap","NAME_COMPARATOR","IndexMap","Default","isLeafNode","updatePriority","newPriorityNode","getImmediateChild","childName","getChild","front","hasChild","updateImmediateChild","newChildNode","namedNode","newChildren","newIndexMap","newPriority","removeFromIndexes","insert","addToIndexes","updateChild","newImmediateChild","numChildren","count","exportFormat","numKeys","maxKey","allIntegerKeys","forEachChild","childNode","hash","toHash_1","priorityHashText","childHash","getPredecessorChildName","index","idx","resolveIndex_","predecessor","getPredecessorKey","getFirstChildName","indexDefinition","minKey","getFirstChild","getLastChildName","getLastChild","action","inorderTraversal","wrappedNode","getIterator","getIteratorFrom","startPost","Wrap","peek","getNext","getReverseIterator","getReverseIteratorFrom","endPost","withIndex","KEY_INDEX","hasIndex","addIndex","isIndexed","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MaxNode","defineProperties","MAX","KeyIndex","__EMPTY_NODE","__childrenNodeConstructor","Path_1","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidKey","isValidPathString","isValidRootPathString","isValidPriority","priority","validateFirebaseDataArg","validateFirebaseData","path_","hasDotValue_1","hasActualChild_1","validateFirebaseMergePaths","mergePaths","curPath","prevPath","validateFirebaseMergeDataArg","validatePriority","validateEventType","eventType","validateKey","validatePathString","validateRootPathString","validateWritablePath","validateUrl","parsedUrl","repoInfo","validateCredential","cred","validateBoolean","bool","validateString","string","validateObject","validateObjectContainsKey","opt_type","OperationType","OperationSource","fromUser","fromServer","queryId","tagged","Server","forServerTaggedQuery","Change","snapshotNode","oldSnap","prevName","valueChange","snapshot","VALUE","childAddedChange","childKey","CHILD_ADDED","childRemovedChange","CHILD_REMOVED","childChangedChange","newSnapshot","oldSnapshot","CHILD_CHANGED","childMovedChange","CHILD_MOVED","json","ChildrenNode_1","jsonLeaf","USE_HINZE","node_1","jsonObj_1","childData","children_1","childrenHavePriority_1","hinzeJsonObj_1","childSet","childSet_1","buildChildSet","NAME_ONLY_COMPARATOR","sortedChildSet","getCompare",".priority","DOMStorageWrapper_1","MemoryStorage_1","createStoragefor","domStorageName","domStorage","DOMStorageWrapper","MemoryStorage","PersistentStorage","PROTOCOL_VERSION","VERSION_PARAM","TRANSPORT_SESSION_PARAM","REFERER_PARAM","FORGE_REF","FORGE_DOMAIN","LAST_SESSION_PARAM","WEBSOCKET","LONG_POLLING","oldWrapped","newWrapped","value_",".value","getValue","toHash","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","SortedMapIterator","startKey","comparator","isReverse_","resultGenerator_","nodeStack_","hasNext","LLRBNode","color","RED","copy","reverseTraversal","min_","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","nr","checkMaxDepth_","blackDepth","check_","BLACK","LLRBEmptyNode","comparator_","root_","rightParent","resultGenerator","ServerValues_1","nodeFromJSON_1","SparseSnapshotTree_1","SyncTree_1","SnapshotHolder_1","AuthTokenProvider_1","StatsManager_1","StatsReporter_1","StatsListener_1","EventQueue_1","PersistentConnection_1","ReadonlyRestClient_1","Database_1","Repo","repoInfo_","forceRestClient","dataUpdateCount","statsListener_","eventQueue_","EventQueue","nextWriteId_","interceptServerDataCallback_","onDisconnect_","SparseSnapshotTree","persistentConnection_","authTokenProvider","AuthTokenProvider","stats_","StatsManager","getCollection","server_","ReadonlyRestClient","onDataUpdate_","onConnectStatus_","authOverride","PersistentConnection","onServerInfoUpdate_","addTokenChangeListener","refreshAuthToken","statsReporter_","getOrCreateReporter","StatsReporter","transactions_init_","infoData_","SnapshotHolder","infoSyncTree_","SyncTree","startListening","tag","currentHashFn","onComplete","infoEvents","getNode","applyServerOverwrite","stopListening","updateInfo_","serverSyncTree_","listen","events","raiseEventsForChangedPath","unlisten","secure","serverTime","offsetNode","offset","generateServerValues","generateWithValues","timestamp","isMerge","taggedChildren","applyTaggedQueryMerge","taggedSnap","applyTaggedQueryOverwrite","changedChildren","applyServerMerge","snap","affectedPath","rerunTransactions_","interceptServerData_","connectStatus","runOnDisconnectEvents_","updates","updateSnapshot","getNextWriteId_","setWithPriority","newVal","log_","serverValues","newNodeUnresolved","resolveDeferredValueSnapshot","writeId","applyUserOverwrite","queueEvents","errorReason","success","clearEvents","ackUserWrite","callOnCompleteCallback","abortTransactions_","childrenToMerge","empty","changedKey","changedValue","writeId_1","applyUserMerge","merge","changedPath","resolvedOnDisconnectTree","resolveDeferredValueTree","forEachTree","Empty","onDisconnectCancel","forget","onDisconnectSet","onDisconnectPut","remember","onDisconnectSetWithPriority","onDisconnectUpdate","onDisconnectMerge","addEventCallbackForQuery","eventRegistration","addEventRegistration","raiseEventsAtPath","removeEventCallbackForQuery","removeEventRegistration","interrupt","stats","showDelta","StatsListener","longestName","reduce","previousValue","currentValue","stat","statsIncrementCounter","metric","incrementCounter","includeStat","__database","Database","CacheNode","node_","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","setLogLevel","level","instances","inst","defaultLogLevel","INFO","defaultLogHandler","instance","logType","toISOString","DEBUG","info","WARN","ERROR","_logLevel","_logHandler","debug","onDisconnect_1","TransactionResult_1","NextPushId_1","Query_1","Repo_1","QueryParams_1","SyncPoint_1","Reference","repo","QueryParams","DEFAULT","getKey","getParent","parentPath","getRoot","databaseProp","database","objectToMerge","newObjectToMerge","transactionUpdate","applyLocally","promiseComplete","committed","TransactionResult","startTransaction","setPriority","nextPushId","thennablePushRef","pushRef","onDisconnect","OnDisconnect","Query","__referenceConstructor","SyncPoint","DataSnapshot","ref_","index_","exportVal","exists","childPathString","childPath","childRef","hasChildren","getRef","emptyChildrenSingleton","EmptyChildren","ImmutableTree","children","fromObject","tree","childSnap","findRootMostMatchingPathAndValue","childExistingPathAndValue","findRootMostValueAndPath","subtree","childTree","toSet","newChild","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","nextChild","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","Change_1","IndexedFilter","optChangeAccumulator","oldChild","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","getIndex","StatsCollection_1","hashString","collections_","StatsCollection","creatorFunction","reporters_","parser_1","_staticInstance","RepoManager","repos_","useRestClient_","getInstance","dbUrl","databaseFromApp","parseRepoInfo","createRepo","deleteRepo","appRepos","toURLString","Reference_1","RepoManager_1","repo_","DatabaseInternals","checkDeleted_","refFromURL","apiName","parsedURL","goOffline","goOnline","ServerValue","TIMESTAMP",".sv","_a","decodePath","pathStringDecoded","piece","decodeQuery","queryString","results","segment","kv","RepoInfo_1","dataURL","parseURL","subdomain","domain","webSocketOnly","scheme","RepoInfo","port","colonInd","slashInd","questionMarkInd","queryParams","Constants_1","persistenceKey","internalHost","needsQueryParam","isCustomHost","isCacheableHost","isDemoHost","updateHost","newHost","connectionURL","connURL","pairs","ValueIndex_1","PathIndex_1","EventRegistration_1","queryParams_","orderByCalled_","validateQueryEndpoints_","startNode","endNode","hasStart","getIndexStartValue","hasEnd","getIndexEndValue","tooManyArgsError","wrongArgTypeError","getIndexStartName","getIndexEndName","PathIndex","VALUE_INDEX","validateLimit_","hasLimit","hasAnchoredLimit","validateNoPreviousOrderByCall_","getQueryParams","cancelCallbackOrContext","getCancelAndContextArgs_","onValueEvent","callbacks","onChildEvent","cancelCallback","container","ValueEventRegistration","ChildEventRegistration","valueCallback","userCallback","cancelOrContext","firstCall","onceCallback","limitToFirst","limit","limitToLast","orderByChild","parsedPath","newParams","orderBy","orderByKey","orderByPriority","orderByValue","startAt","endAt","equalTo","queryObject","getQueryObject","queryIdentifier","isEqual","sameRepo","samePath","sameQueryIdentifier","ValueIndex","valueNode","_defaultIndexMap","fallbackObject","indexes_","indexSet_","indexKey","sortedMap","existingChildren","childList","sawIndexedValue","iter","newIndex","indexName","newIndexSet","newIndexes","indexedChildren","existingSnap","SortedMap_2","LOG_2","Base12Num","num","current_","mask","bits_","nextBitIsOne","keyFn","mapSortFn","buildBalancedTree","low","middle","base12","root","buildPennant","chunkSize","attachPennant","pennant","isOne","indexPath_","extractChild","aChild","bChild","resolveDeferredValue","resolvedTree","rawPri","leafNode","childrenNode","CountedSet_1","CountedSet","self_1","prefixPath","func","Operation_1","Overwrite","OVERWRITE","operationForChild","CacheNode_1","ViewCache_1","View_1","views_","applyOperation","writesCache","optCompleteServerCache","view","events_1","serverCache","serverCacheComplete","eventCache","calcCompleteEventCache","eventCacheComplete","calcCompleteEventChildren","viewCache","ViewCache","View","getInitialEvents","cancelError","removed","cancelEvents","hadCompleteView","hasCompleteView","viewQueryId","getQuery","loadsAllData","getQueryViews","getCompleteServerCache","viewForQuery","getCompleteView","viewExistsForQuery","eventCache_","serverCache_","updateEventSnap","eventSnap","filtered","updateServerSnap","serverSnap","getEventCache","getCompleteEventSnap","getServerCache","getCompleteServerSnap","collection_","last_","newStats","delta","app_1","VisibilityMonitor_1","OnlineMonitor_1","Connection_1","ServerActions_1","RECONNECT_MIN_DELAY","RECONNECT_MAX_DELAY_DEFAULT","authTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens_","outstandingPuts_","outstandingPutCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","lastSessionId","establishConnectionTimer_","visible_","requestCBHash_","requestNumber_","realtime_","authToken_","forceTokenRefresh_","invalidAuthTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","scheduleConnect_","VisibilityMonitor","onVisible_","OnlineMonitor","onOnline_","sendRequest","onResponse","curReqNum","msg","isDefault","listenSpec","hashFn","sendListen_","req","payload","warnOnListenWarnings_","removeListen_","warnings","indexSpec","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","token_1","authMethod","requestData","onAuthRevoked_","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","reportStats","onDataMessage_","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","onReady_","handleTimestamp_","sendConnectStats_","restoreState_","establishConnection_","visible","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectSucceeded","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage_1","onReady_1","connId_1","nextConnectionId_","lastSessionId_1","canceled_1","connection_1","closeFn_1","sendRequestFn","forceRefresh","Connection","serverTimeOffset","normalizedPathString","statusCode","explanation","notifyForInvalidToken","queries","clientName","currentlyOnline","ServerActions","EventEmitter","allowedEvents_","listeners_","trigger","validateEventType_","eventData","getInitialEvent","et","TransportManager_1","onMessage_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","TransportManager","start_","conn","initialTransport","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeout_ms","healthyTimeout_","bytesReceived","markConnectionHealthy","bytesSent","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","dataMsg","sendData_","tryCleanupConnection","connId","onSecondaryControl_","controlData","cmd","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onPrimaryResponse_","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","ts","onConnectionEstablished_","tryStartUpgrade_","upgradeTransport","startUpgrade_","onMessage","closeConnections_","PacketReceiver_1","FIREBASE_LONGPOLL_START_PARAM","FIREBASE_LONGPOLL_CLOSE_COMMAND","FIREBASE_LONGPOLL_COMMAND_CB_NAME","FIREBASE_LONGPOLL_DATA_CB_NAME","FIREBASE_LONGPOLL_ID_PARAM","FIREBASE_LONGPOLL_PW_PARAM","FIREBASE_LONGPOLL_SERIAL_PARAM","FIREBASE_LONGPOLL_CALLBACK_ID_PARAM","FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM","FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET","FIREBASE_LONGPOLL_DATA_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM","BrowserPollConnection","transportSessionId","everConnected_","urlFn","curSegmentNum","myPacketOrderer","PacketReceiver","isClosed_","connectTimeoutTimer_","onClosed_","scriptTagHolder","FirebaseIFrameScriptHolder","command","arg1","arg2","incrementIncomingBytes_","sendNewPolls","closeAfter","pN","handleResponse","urlParams","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","isAvailable","shutdown_","myDisconnFrame","dataStr","base64data","MAX_URL_DATA_SIZE","enqueueSegment","pw","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","iframeContents","iframe","contentDocument","alive","innerHTML","myID","myPW","theURL","nodeRestRequest","newRequest_","curDataString","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","readyStateCB","loadCB","doNodeLongPoll","newScript_1","rstate","setWebSocketImpl","impl","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","device","User-Agent","platform","mySock","onopen","onclose","handleIncomingFrame","isOldAndroid","oldAndroidRegex","oldAndroidMatch","previouslyFailed","isInMemoryStorage","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","responsesRequiredToBeHealthy","healthyTimeout","IndexedFilter_1","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","matches","startName","endName","registerDatabase","unused","TEST_ACCESS","DataSnapshot_1","domStorage_","prefix_","prefixedName_","storedVal","cache_","PUSH_CHARS","lastPushTime","lastRandChars","duplicateTime","timeStampChars","Event_1","callback_","cancelCallback_","context_","respondsTo","change","DataEvent","getEventRunner","ctx","getEventType","cancelCB_1","cb_1","createCancelEvent","CancelEvent","hasAnyCallback","callbacks_","eventToCheck","cancelCB_2","cb_2","otherCount","otherKey","thisKey","getPath","AckUserWrite_1","ImmutableTree_1","ListenComplete_1","Merge_1","Overwrite_1","WriteTree_1","listenProvider_","syncPointTree_","pendingWriteTree_","WriteTree","tagToQueryMap_","queryToTagMap_","newData","addOverwrite","applyOperationToSyncPoints_","addMerge","changeTree","Merge","revert","getWrite","removeWrite","affectedTree_1","AckUserWrite","applyListenComplete","ListenComplete","queryKey","queryKeyForTag_","parseQueryKey_","queryPath","applyTaggedOperation_","applyTaggedListenComplete","foundAncestorDefaultView","pathToSyncPoint","sp","syncPoint","childSyncPoint","completeCache","viewAlreadyExists","makeQueryKey_","getNextQueryTag_","childWrites","setupListener_","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","collectDistinctViewsForSubTree_","newQuery","createListenerForView_","queryForListening_","tagForQuery_","queryToRemove","tagToRemove","removeTags_","writeIdsToExclude","writeTree","maybeChildSyncPoint","childMap","views_1","childViews","removedQuery","removedQueryKey","removedQueryTag","queriesToStop","queries_1","childQueries","queryToStop","splitIndex","nextQueryTag_","applyOperationHelper_","syncPointTree","applyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","affectedTree","ACK_USER_WRITE","LISTEN_COMPLETE","MERGE","ViewProcessor_1","EventGenerator_1","query_","initialViewCache","eventRegistrations_","indexFilter","getNodeFilter","processor_","ViewProcessor","initialServerCache","initialEventCache","newServerCache","newEventCache","viewCache_","eventGenerator_","EventGenerator","path_1","registration","maybeEvent","existing","completeServerCache","oldViewCache","assertIndexed","generateEventsForChanges_","changes","initialChanges","registrations","generateEventsForChanges","ChildChangeAccumulator_1","CompleteChildSource_1","ProcessorResult","filter_","newViewCache","filterServerNode","accumulator","ChildChangeAccumulator","overwrite","applyUserOverwrite_","applyServerOverwrite_","applyUserMerge_","applyServerMerge_","revertUserWrite_","ackUserWrite_","listenComplete_","getChanges","maybeAddValueEvent_","isLeafOrEmpty","oldCompleteSnap","generateEventCacheAfterServerEvent_","changePath","oldEventSnap","shadowingWrite","serverNode","completeChildren","completeEventChildren","completeNode","oldEventNode","updatedPriority","calcEventCacheAfterServerOverwrite","childChangePath","newEventChild","eventChildUpdate","calcCompleteChild","changedSnap","oldServerSnap","serverFilter","newServerNode","NO_COMPLETE_CHILD_SOURCE","WriteTreeCompleteChildSource","getCompleteChild","newEventSnap","cacheHasChild_","curViewCache","writePath","applyMerge_","viewMergeTree","serverChild","childMergeTree","isUnknownDeepMerge","ackPath","changedChildren_1","changedChildren_2","mergePath","serverCachePath","oldServerNode","oldEventCache","serverChildren","changeMap_","oldChange","oldType","NoCompleteChildSource_","getChildAfterChild","writes_","optCompleteServerCache_","completeServerData","nodes","calcIndexedSlice","eventRegistrations","moves","generateEventsForType_","filteredChanges","compareChanges_","materializedChange","materializeSingleChange_","aWrapped","bWrapped","CompoundWrite_1","visibleWrites_","CompoundWrite","allWrites_","lastWriteId_","WriteTreeRef","addWrite","addWrites","record","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","recordContainsPath_","resetTree_","getCompleteWriteData","getCompleteNode","treePath","includeHiddenWrites","childCompoundWrite","hasCompleteWrite","mergeAtPath","layerTree_","layeredCache","shadowingNode","subMerge","completeServerChildren","topLevelSet","merge_1","getCompleteChildren","existingEventSnap","existingServerSnap","childMerge","toIterate","writeRecord","DefaultFilter_","writes","treeRoot","compoundWrite","deepNode","treePath_","writeTree_","existingServerCache","rootmost","rootMostPath","newWrite","applySubtreeWrite_","priorityWrite_1","rootNode_","newSnapshotNode","app_","removeTokenChangeListener","counters_","amount","FIRST_STATS_MIN_TIME","FIRST_STATS_MAX_TIME","collection","statsToReport_","reportStats_","reportedStats","haveStatsToReport","eventLists_","recursionDepth_","eventDataList","currList","eventPath","EventList","raiseQueuedEventsMatchingPredicate_","sentAll","eventList","raise","events_","eventFn","EventEmitter_1","hidden","visibilityChange","online_","BrowserPollConnection_1","WebSocketConnection_1","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports_1","ALL_TRANSPORTS","transport","pendingResponses","currentResponseNum","closeAfterResponse","onClose","responseNum","requestNum","this_1","toProcess","getListenId_","listenId","thisListen","queryStringParamaters","toRestQueryStringParameters","restRequest_","status_1","queryStringParameters","authTokenData","authToken","xhr","LimitedFilter_1","RangedFilter_1","limitSet_","startSet_","startNameSet_","endSet_","endNameSet_","limit_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","isViewFromLeft","WIRE_PROTOCOL_CONSTANTS_","VIEW_FROM_LEFT","getLimit","copy_","newLimit","VIEW_FROM_RIGHT","WIRE_PROTOCOL_CONSTANTS","INDEX_START_VALUE","INDEX_START_NAME","INDEX_END_VALUE","INDEX_END_NAME","LIMIT","viewFrom","VIEW_FROM","INDEX","LimitedFilter","REST_CONSTANTS","REST_QUERY_CONSTANTS_","qs","ORDER_BY","START_AT","END_AT","LIMIT_TO_FIRST","LIMIT_TO_LAST","rangedFilter_","reverse_","fullLimitUpdateChild_","inRange","indexCompare_1","foundStartPost","changeAccumulator","indexCmp_1","newChildNamedNode","windowBoundary","oldChildSnap","compareNext","TransactionStatus","Tree_1","MAX_TRANSACTION_RETRIES_","transactionQueueTree_","Tree","watchRef","unwatcher","order","retryCount","abortReason","currentWriteId","currentInputSnapshot","currentOutputSnapshotRaw","currentOutputSnapshotResolved","currentState","getLatestState_","RUN","queueNode","subTree","nodeQueue","setValue","priorityForNode","sendReadyTransactions_","excludeSets","pruneCompletedTransactionsBelowNode_","buildTransactionQueue_","sendTransactionQueue_","setsToIgnore","txn","latestState","snapToSend","latestHash","SENT","dataToSend","pathToSend","COMPLETED","SENT_NEEDS_ABORT","NEEDS_ABORT","rootMostTransactionNode","getAncestorTransactionNode_","rerunTransactionQueue_","txnsToRerun","abortTransaction","currentNode","newDataNode","hasExplicitPriority","oldWriteId","newNodeResolved","lastInput","transactionNode","transactionQueue","aggregateTransactionQueuesForNode_","to","from","forEachAncestor","abortTransactionsOnNode_","forEachDescendant","lastSent","TreeNode","childCount","parent_","pathObj","updateParents_","includeSelf","childrenFirst","forEachImmediateDescendantWithValue","updateChild_","childEmpty","childExists","forceLongPolling","forceWebSockets","setSecurityDebugCallback","interceptServerData","DataConnection","simpleListen","echo","onEcho","RealTimeConnection","hijackHash","newHash","oldPut","opt_onComplete","opt_hash","ConnectionTarget","listens","firebaseRef","120","121","toBase64","arrayBuffer","uint8Version","handleDb","objectStoreNames","OLD_OBJECT_STORE_NAME","iidModel","iid_model","openCursorRequest","cursor","tokenDetails","deleteToken","fcmSenderId","fcmToken","fcmPushSet","continue","deleteDatabase","OLD_DB_NAME","cleanV1","ValidateInput","registerMessaging","factoryMethod","sw_controller","window_controller","namespaceExports","Messaging","errors__a","tslib_es6","CODES","AVAILABLE_IN_WINDOW","AVAILABLE_IN_SW","SHOULD_BE_INHERITED","BAD_SENDER_ID","INCORRECT_GCM_SENDER_ID","PERMISSION_DEFAULT","PERMISSION_BLOCKED","UNSUPPORTED_BROWSER","NOTIFICATIONS_BLOCKED","FAILED_DEFAULT_REGISTRATION","SW_REGISTRATION_EXPECTED","GET_SUBSCRIPTION_FAILED","INVALID_SAVED_TOKEN","SW_REG_REDUNDANT","TOKEN_SUBSCRIBE_FAILED","TOKEN_SUBSCRIBE_NO_TOKEN","TOKEN_SUBSCRIBE_NO_PUSH_SET","TOKEN_UNSUBSCRIBE_FAILED","TOKEN_UPDATE_FAILED","TOKEN_UPDATE_NO_TOKEN","USE_SW_BEFORE_GET_TOKEN","INVALID_DELETE_TOKEN","DELETE_TOKEN_NOT_FOUND","DELETE_SCOPE_NOT_FOUND","BG_HANDLER_FUNCTION_EXPECTED","NO_WINDOW_CLIENT_TO_MSG","UNABLE_TO_RESUBSCRIBE","NO_FCM_TOKEN_FOR_RESUBSCRIBE","FAILED_TO_DELETE_TOKEN","NO_SW_IN_REG","BAD_SCOPE","BAD_VAPID_KEY","BAD_SUBSCRIPTION","BAD_TOKEN","BAD_PUSH_SET","FAILED_DELETE_VAPID_KEY","INVALID_PUBLIC_VAPID_KEY","USE_PUBLIC_KEY_BEFORE_GET_TOKEN","PUBLIC_KEY_DECRYPTION_FAILED","ERROR_MAP","codes","db_interface_DBInterface","DBInterface","dbName","dbVersion","errorFactory_","DB_NAME_","dbVersion_","openDbPromise_","TRANSACTION_READ_WRITE","openDatabase","onDBUpgrade","closeDatabase","db_interface","array_buffer_to_base64","DEFAULT_PUBLIC_VAPID_KEY","SUBSCRIPTION_DETAILS","userVisibleOnly","applicationServerKey","fcm_details","ENDPOINT","iid_model_IIDModel","IIDModel","senderId","subscription","publicVapidKey","p256dh","fcmSubscribeBody","subscribeOptions","fcmTokenResponse","pushSet","updateToken","fcmUpdateBody","updateFetchRes","updateOptions","fetchResponse","fcmUnsubscribeBody","unsubscribeOptions","DB_NAME","DB_VERSION","swScope","vapidKey","token_details_model_TokenDetailsModel","TokenDetailsModel","evt","oldVersion","createIndex","unique","validateInputs_","PushSubscription","getTokenDetailsFromToken","getTokenDetailsFromSWScope","scopeRequest","saveTokenDetails","details","createTime","token_details_model","vapid_details_model_DB_NAME","vapid_details_model_DB_VERSION","vapid_details_model_VapidDetailsModel","VapidDetailsModel","getVapidFromSWScope","saveVapidDetails","deleteVapidDetails","vapid_details_model","SENDER_ID_OPTION_NAME","controller_interface_ControllerInterface","ControllerInterface","messagingSenderId_","tokenDetailsModel_","vapidDetailsModel_","iidModel_","currentPermission","swReg","pushSubscription","getNotificationPermission_","notification_permission","getSWRegistration_","getPublicVapidKey_","getPushSubscription","scope","manageExistingToken","getNewToken","isTokenValid","isTokenStillValid","updatedToken","allDetails","e_1","pushManager","getSubscription","requestPermission","swRegistration","useServiceWorker","usePublicVapidKey","b64PublicKey","optError","optCompleted","onTokenRefresh","setBackgroundMessageHandler","Notification","permission","getTokenDetailsModel","getVapidDetailsModel","getIIDModel","controller_interface","PARAMS","TYPE_OF_MSG","DATA","msgType","PUSH_MSG_RECEIVED","NOTIFICATION_CLICKED","createNewMsg","msgData","worker_page_message","TYPES_OF_MSG","default_sw","base64_to_array_buffer","base64String","padding","repeat","rawData","outputArray","window_controller_WindowController","WindowController","messageObserver_","tokenRefreshObserver_","onTokenRefresh_","registrationToUse_","manifestCheckPromise_","setupSWMessageListener_","isSupported_","manifestCheck_","manifestTag","querySelector","manifestContent","managePermissionResult","permissionPromise","ServiceWorkerRegistration","publicKey","publicVapidKeyToUse_","parsedKey","waitForRegistrationToActivate_","serviceWorker","installing","waiting","state","stateChangeListener","browserErrorMessage","workerPageMessage","pushMessage","sw_controller_SWController","SWController","onPush_","onSubChange_","onNotificationClick_","bgMessageHandler_","msgPayload","handleMsgPromise","hasVisibleClients_","hasVisibleClients","notification","sendMessageToWindowClients_","notificationDetails","getNotificationData_","notificationTitle_1","reg","showNotification","waitUntil","promiseChain","stopImmediatePropagation","clickAction","getWindowClient_","windowClient","clients","openWindow","internalMsg","attemptToMessageClient_","notificationInformation","URL","matchAll","includeUncontrolled","clientList","suitableClient","vapidKeyFromDatabase","esm","122","123","prependCode","FirebaseStorageError","Code","UNKNOWN","objectNotFound","OBJECT_NOT_FOUND","quotaExceeded","bucket","unauthenticated","UNAUTHENTICATED","unauthorized","UNAUTHORIZED","retryLimitExceeded","RETRY_LIMIT_EXCEEDED","error_canceled","CANCELED","invalidUrl","INVALID_URL","invalidDefaultBucket","INVALID_DEFAULT_BUCKET","cannotSliceBlob","CANNOT_SLICE_BLOB","serverFileWrongSize","SERVER_FILE_WRONG_SIZE","noDownloadURL","NO_DOWNLOAD_URL","invalidArgument","INVALID_ARGUMENT","invalidArgumentCount","argMin","argMax","real","countPart","plural","INVALID_ARGUMENT_COUNT","appDeleted","APP_DELETED","invalidRootOperation","INVALID_ROOT_OPERATION","invalidFormat","format","INVALID_FORMAT","internalError","INTERNAL_ERROR","formatValidator","stringFormat","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","dataFromString","StringData","utf8Bytes_","base64Bytes_","dataURLBytes_","dataURLContentType_","valid","lo","percentEncodedBytes_","hasMinus","hasUnder","invalidChar","hasPlus","hasSlash","string_DataURLParts","rest","endsWith","end","taskStateFromInternalTaskState","InternalTaskState","RUNNING","PAUSING","CANCELING","TaskState","PAUSED","SUCCESS","make","resolver","promise_external_resolve","promise_external_reject","isDef","isJustDef","isFunction","isObject","isNonArrayObject","isString","isNumber","isNativeBlob","isNativeBlobDefined","Blob","jsonObjectOrNull","path_parent","canonicalChildPath","component","lastComponent","makeNormalUrl","urlPart","domainBase","apiBaseUrl","makeDownloadUrl","downloadBase","makeUploadUrl","apiUploadBaseUrl","makeQueryString","encode","queryPart","nextPart","noXform_","xformPath","fullPath","getMappings","mappingsXformPath","xformSize","size","xformTokens","tokens","alt","mappings_","mappings","Mapping","nameMapping","xform","sizeMapping","addRef","authWrapper","generateRef","loc","location_Location","makeStorageReference","fromResource","resource","mapping","local","server","fromResourceString","resourceString","toResourceString","writable","metadataValidator","validate","specs","passed","minArgs","maxArgs","validator","and_","v1","v2","stringSpec","opt_validator","opt_optional","stringValidator","args_ArgSpec","uploadDataSpec","ArrayBuffer","metadataSpec","nonNegativeNumberSpec","looseObjectSpec","nullFunctionSpec","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","getBlob","sliceBlob","blob","webkitSlice","mozSlice","array_contains","elem","array_clone","arraylike","handlerCheck","cndn","metadataHandler","handler","sharedErrorHandler","errorHandler","newErr","getStatus","setServerResponseProp","serverResponseProp","objectErrorHandler","shared","getMetadata","fullServerUrl","maxOperationRetryTime","requestInfo","RequestInfo","updateMetadata","deleteObject","successCodes","determineContentType_","metadataForUpload_","opt_metadata","multipartUpload","bucketOnlyServerUrl","X-Goog-Upload-Protocol","boundary","metadataString","preBlobPart","postBlobPart","blob_FbsBlob","maxUploadRetryTime","uploadData","checkResumeHeader_","opt_allowed","createResumableUpload","X-Goog-Upload-Command","X-Goog-Upload-Header-Content-Length","X-Goog-Upload-Header-Content-Type","getResumableUploadStatus","sizeString","ResumableUploadStatus","continueResumableUpload","opt_status","opt_progressCallback","uploadStatus","newCurrent","current","bytesToUpload","total","bytesLeft","startByte","endByte","uploadCommand","X-Goog-Upload-Offset","progressCallback","async_async","argsToForward","canceled","cancelState","triggerCallback","triggeredCallback","callWithDelay","millis","timeoutId","hitTimeout","waitSeconds","waitMillis","wasTimeout","stopped","addAuthHeader_","addVersionHeader_","number","makeRequest","pool","request_NetworkRequest","additionalRetryCodes","factory","opt_url","service_Service","xhriopool_XhrIoPool","registerStorage","TaskEvent","Storage","reference_Reference","STORAGE_TYPE","ErrorCode","defaultMaxOperationRetryTime","defaultMaxUploadRetryTime","minSafeInteger","code_","message_","serverResponse_","codeProp","codeEquals","serverResponse","BUCKET_NOT_FOUND","PROJECT_NOT_FOUND","INVALID_CHECKSUM","INVALID_EVENT_NAME","NO_DEFAULT_BUCKET","opt_contentType","DataURLParts","STATE_CHANGED","xhrio_network_NetworkXhrIo","NetworkXhrIo","sent_","xhr_","errorCode_","NO_ERROR","sendPromise_","ABORT","NETWORK_ERROR","opt_body","opt_headers","getErrorCode","getResponseText","addUploadProgressListener","upload","removeUploadProgressListener","XhrIoPool","createXhrIo","Location","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","gsModify","httpModify","gsRegex","gsIndices","httpRegex","httpIndices","groups","regex","indices","postModify","group","captures","bucketValue","pathValue","opt_local","opt_writable","opt_xform","ArgSpec","FbsBlob","opt_elideCopy","blobType","data_","byteLength","size_","type_","realBlob","sliced","buffer","blobby","uint8Arrays","finalLength_1","merged_1","index_1","observer_Observer","Observer","opt_error","opt_complete","UploadTaskSnapshot","bytesTransferred","totalBytes","urls","task_UploadTask","UploadTask","transferred_","needToFetchStatus_","needToFetchMetadata_","observers_","error_","uploadUrl_","request_","chunkMultiplier_","resolve_","reject_","authWrapper_","location_","blob_","metadata_","resumable_","shouldDoResumable_","errorHandler_","completeTransitions_","transition_","metadataErrorHandler_","promise_","makeProgressCallback_","sizeBefore","loaded","updateProgress_","createResumable_","fetchStatus_","fetchMetadata_","continueUpload_","oneShotUpload_","resolveToken_","getAuthToken","createRequest","getPromise","statusRequest","uploadRequest","newStatus","increaseMultiplier_","metadataRequest","multipartRequest","transferred","old","notifyObservers_","wasPaused","externalState","completed","typeValidator","_p","nextOrObserverValidator","nextValidator","observerValidator","nextOrObserverMessage","makeBinder","binder","addObserver_","removeObserver_","binderNextOrObserverValidator","binderSpecs","notifyObserver_","finishPromise_","triggered","pause","newRef","newPath","throwIfRoot_","putString","getDownloadURL","failrequest_FailRequest","FailRequest","appDelete","requestmap_RequestMap","RequestMap","map_","id_","addRequest","unmap","authwrapper_AuthWrapper","AuthWrapper","maker","requestMaker","bucket_","deleted_","extractBucket_","storageRefMaker_","requestMaker_","pool_","service_","maxOperationRetryTime_","maxUploadRetryTime_","requestMap_","config","_error","deleteApp","setMaxUploadRetryTime","setMaxOperationRetryTime","NetworkRequest","errorCallback","pendingXhr_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","errorCallback_","progressCallback_","timeout_","doTheRequest","backoffCallback","progressListener","progressEvent","lengthComputable","RequestEndStatus","hitServer","isRetryStatusCode_","wasCanceled","successCode","backoffDone","requestWentThrough","wasSuccessCode","isFiveHundredCode","extraRetryCodes","isExtraRetryCode","isRequestSpecificRetryCode","opt_canceled","Service","authWrapperBucket","internals_","service_ServiceInternals","ServiceInternals"],"mappings":";;;;;AAKA,GAAIA,UAAW,WACL,GAAIC,OAA2B,KAAXA,EAAyBC,KAAOD,CACtD,OAAgB,UAAUE,GCgClC,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QA1DA,GAAAK,GAAAX,EAAA,oBACAA,GAAA,8BAAAY,EAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAAR,EAAA,EAAAS,KACQT,EAAAI,EAAAM,OAAoBV,IAC5BO,EAAAH,EAAAJ,GACAW,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IAEAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAS,GACAQ,OAAAC,UAAAC,eAAAb,KAAAG,EAAAT,KACAF,EAAAE,GAAAS,EAAAT,GAIA,KADAO,KAAAC,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SAEA,IAAAV,EACA,IAAAN,EAAA,EAAYA,EAAAM,EAAAI,OAA2BV,IACvCQ,EAAAb,IAAAsB,EAAAX,EAAAN,GAGA,OAAAQ,GAIA,IAAAX,MAGAc,GACAO,EAAA,EAgEA,OAnCAvB,GAAAwB,EAAAzB,EAGAC,EAAAyB,EAAAvB,EAGAF,EAAA0B,EAAA,SAAAvB,EAAAwB,EAAAC,GACA5B,EAAA6B,EAAA1B,EAAAwB,IACAT,OAAAY,eAAA3B,EAAAwB,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMA5B,EAAAkC,EAAA,SAAA9B,GACA,GAAAwB,GAAAxB,KAAA+B,WACA,WAA2B,MAAA/B,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAA0B,EAAAE,EAAA,IAAAA,GACAA,GAIA5B,EAAA6B,EAAA,SAAAO,EAAAC,GAAsD,MAAAnB,QAAAC,UAAAC,eAAAb,KAAA6B,EAAAC,IAGtDrC,EAAAsC,EAAA,GAGAtC,EAAAuC,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA,GAG9DxC,IAAAsB,EAAA,MDaM,SAAUlB,EAAQD,EAASH,GAEjC,YElGAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAC,GAAA5C,EAAA,GACAG,GAAA0C,OAAAD,EAAAC,OACA1C,EAAA2C,eAAAF,EAAAE,cACA,IAAAC,GAAA/C,EAAA,GACAG,GAAA6C,OAAAD,EAAAC,OACA7C,EAAA8C,aAAAF,EAAAE,aACA9C,EAAA+C,aAAAH,EAAAG,YACA,IAAAC,GAAAnD,EAAA,GACAG,GAAAiD,UAAAD,EAAAC,SACA,IAAAC,GAAArD,EAAA,GACAG,GAAAmD,SAAAD,EAAAC,SACAnD,EAAAoD,WAAAF,EAAAE,WACApD,EAAAqD,cAAAH,EAAAG,aACA,IAAAC,GAAAzD,EAAA,GACAG,GAAAuD,SAAAD,EAAAC,QACA,IAAAC,GAAA3D,EAAA,GACAG,GAAAyD,MAAAD,EAAAC,MACAzD,EAAA0D,gBAAAF,EAAAE,gBACA1D,EAAA2D,UAAAH,EAAAG,UACA3D,EAAA4D,cAAAJ,EAAAI,aACA,IAAAC,GAAAhE,EAAA,GACAG,GAAA8D,aAAAD,EAAAC,aACA9D,EAAA+D,cAAAF,EAAAE,cACA/D,EAAAgE,aAAAH,EAAAG,YACA,IAAAC,GAAApE,EAAA,GACAG,GAAAkE,SAAAD,EAAAC,SACAlE,EAAAmE,UAAAF,EAAAE,SACA,IAAAC,GAAAvE,EAAA,GACAG,GAAAqE,OAAAD,EAAAC,OACArE,EAAAsE,QAAAF,EAAAE,QACAtE,EAAAuE,aAAAH,EAAAG,aACAvE,EAAAwE,cAAAJ,EAAAI,cACAxE,EAAAyE,iBAAAL,EAAAK,gBACA,IAAAC,GAAA7E,EAAA,GACAG,GAAA2E,MAAAD,EAAAC,MACA3E,EAAA4E,SAAAF,EAAAE,SACA5E,EAAA6E,MAAAH,EAAAG,MACA7E,EAAA8E,OAAAJ,EAAAI,OACA9E,EAAA+E,QAAAL,EAAAK,QACA/E,EAAAgF,UAAAN,EAAAM,UACAhF,EAAAiF,QAAAP,EAAAO,QACAjF,EAAAkF,UAAAR,EAAAQ,UACAlF,EAAAmF,SAAAT,EAAAS,SACAnF,EAAAoF,UAAAV,EAAAU,UACApF,EAAAqF,QAAAX,EAAAW,QACArF,EAAAsF,gBAAAZ,EAAAY,gBACAtF,EAAAuF,IAAAb,EAAAa,IACAvF,EAAAwF,QAAAd,EAAAc,OACA,IAAAC,GAAA5F,EAAA,GACAG,GAAA0F,YAAAD,EAAAC,YACA1F,EAAA2F,kBAAAF,EAAAE,iBACA,IAAAC,GAAA/F,EAAA,GACAG,GAAA6F,KAAAD,EAAAC,IACA,IAAAC,GAAAjG,EAAA,GACAG,GAAA+F,MAAAD,EAAAC,MACA/F,EAAAgG,gBAAAF,EAAAE,eACA,IAAAC,GAAApG,EAAA,GACAG,GAAAkG,YAAAD,EAAAC,YACAlG,EAAAmG,iBAAAF,EAAAE,iBACAnG,EAAAoG,iBAAAH,EAAAG,iBACApG,EAAAqG,sBAAAJ,EAAAI,sBACArG,EAAAsG,kBAAAL,EAAAK,iBACA,IAAAC,GAAA1G,EAAA,GACAG,GAAAwG,aAAAD,EAAAC,aACAxG,EAAAyG,kBAAAF,EAAAE,mBFyHO,CAED,SAAUxG,EAAQyG,EAAqB7G,GAE7C,YG1LA,SAAA8G,GAAApF,EAAAqF,GAEA,QAAAC,KAAmBC,KAAAC,YAAAxF,EADnByF,EAAAzF,EAAAqF,GAEArF,EAAAP,UAAA,OAAA4F,EAAA7F,OAAAkG,OAAAL,IAAAC,EAAA7F,UAAA4F,EAAA5F,UAAA,GAAA6F,IAWA,QAAAK,GAAA/F,EAAAgG,GACA,GAAAC,KACA,QAAAjF,KAAAhB,GAAAJ,OAAAC,UAAAC,eAAAb,KAAAe,EAAAgB,IAAAgF,EAAAE,QAAAlF,GAAA,IACAiF,EAAAjF,GAAAhB,EAAAgB,GACA,UAAAhB,GAAA,kBAAAJ,QAAAuG,sBACA,OAAApH,GAAA,EAAAiC,EAAApB,OAAAuG,sBAAAnG,GAA4DjB,EAAAiC,EAAAvB,OAAcV,IAAAiH,EAAAE,QAAAlF,EAAAjC,IAAA,IAC1EkH,EAAAjF,EAAAjC,IAAAiB,EAAAgB,EAAAjC,IACA,OAAAkH,GAGA,QAAAG,GAAAC,EAAAC,EAAAC,EAAAC,GACA,GAAApG,GAAAD,EAAAsG,UAAAhH,OAAAiH,EAAAvG,EAAA,EAAAmG,EAAA,OAAAE,IAAA5G,OAAA+G,yBAAAL,EAAAC,GAAAC,CACA,oBAAAI,UAAA,kBAAAA,SAAAC,SAAAH,EAAAE,QAAAC,SAAAR,EAAAC,EAAAC,EAAAC,OACA,QAAAzH,GAAAsH,EAAA5G,OAAA,EAA4CV,GAAA,EAAQA,KAAAqB,EAAAiG,EAAAtH,MAAA2H,GAAAvG,EAAA,EAAAC,EAAAsG,GAAAvG,EAAA,EAAAC,EAAAkG,EAAAC,EAAAG,GAAAtG,EAAAkG,EAAAC,KAAAG,EACpD,OAAAvG,GAAA,GAAAuG,GAAA9G,OAAAY,eAAA8F,EAAAC,EAAAG,KAGA,QAAAI,GAAAC,EAAAC,GACA,gBAAAV,EAAAC,GAAmCS,EAAAV,EAAAC,EAAAQ,IAGnC,QAAAE,GAAAC,EAAAC,GACA,mBAAAP,UAAA,kBAAAA,SAAAQ,SAAA,MAAAR,SAAAQ,SAAAF,EAAAC,GAGA,QAAAE,GAAAC,EAAAC,EAAAC,EAAAC,GACA,WAAAD,MAAAE,UAAA,SAAAC,EAAAC,GACA,QAAAC,GAAAxG,GAAmC,IAAMyG,EAAAL,EAAAM,KAAA1G,IAA+B,MAAA2E,GAAY4B,EAAA5B,IACpF,QAAAgC,GAAA3G,GAAkC,IAAMyG,EAAAL,EAAA,MAAApG,IAAmC,MAAA2E,GAAY4B,EAAA5B,IACvF,QAAA8B,GAAAvI,GAA+BA,EAAA0I,KAAAN,EAAApI,EAAA8B,OAAA,GAAAmG,GAAA,SAAAG,GAAiEA,EAAApI,EAAA8B,SAAyB6G,KAAAL,EAAAG,GACzHF,GAAAL,IAAAU,MAAAb,EAAAC,QAAAQ,UAIA,QAAAK,GAAAd,EAAAe,GAGA,QAAAC,GAAA1H,GAAsB,gBAAA2H,GAAsB,MAAAT,IAAAlH,EAAA2H,KAC5C,QAAAT,GAAAU,GACA,GAAAC,EAAA,SAAAC,WAAA,kCACA,MAAAC,GAAA,IACA,GAAAF,EAAA,EAAAG,IAAA3C,EAAA2C,EAAA,EAAAJ,EAAA,YAAAA,EAAA,uBAAAvC,IAAAhH,KAAA2J,EAAAJ,EAAA,KAAAP,KAAA,MAAAhC,EAEA,QADA2C,EAAA,EAAA3C,IAAAuC,GAAA,EAAAvC,EAAA5E,QACAmH,EAAA,IACA,cAAAvC,EAAAuC,CAAuC,MACvC,QAAkC,MAAlCG,GAAAE,SAA2CxH,MAAAmH,EAAA,GAAAP,MAAA,EAC3C,QAAAU,EAAAE,QAAkCD,EAAAJ,EAAA,GAAWA,GAAA,EAAU,SACvD,QAAAA,EAAAG,EAAAG,IAAAC,MAAyCJ,EAAAK,KAAAD,KAAc,SACvD,SACA,GAAA9C,EAAA0C,EAAAK,OAAA/C,IAAAxG,OAAA,GAAAwG,IAAAxG,OAAA,UAAA+I,EAAA,QAAAA,EAAA,KAA6GG,EAAA,CAAO,UACpH,OAAAH,EAAA,MAAAvC,GAAAuC,EAAA,GAAAvC,EAAA,IAAAuC,EAAA,GAAAvC,EAAA,KAAgF0C,EAAAE,MAAAL,EAAA,EAAiB,OACjG,OAAAA,EAAA,IAAAG,EAAAE,MAAA5C,EAAA,IAAwD0C,EAAAE,MAAA5C,EAAA,GAAgBA,EAAAuC,CAAQ,OAChF,GAAAvC,GAAA0C,EAAAE,MAAA5C,EAAA,IAA8C0C,EAAAE,MAAA5C,EAAA,GAAgB0C,EAAAG,IAAAnJ,KAAA6I,EAAgB,OAC9EvC,EAAA,IAAA0C,EAAAG,IAAAC,MACAJ,EAAAK,KAAAD,KAAiC,UAEjCP,EAAAH,EAAApJ,KAAAqI,EAAAqB,GACS,MAAA3C,GAAYwC,GAAA,EAAAxC,GAAa4C,EAAA,EAAS,QAAUH,EAAAxC,EAAA,EACrD,KAAAuC,EAAA,QAAAA,GAAA,EAAmC,QAASnH,MAAAmH,EAAA,GAAAA,EAAA,UAAAP,MAAA,GAvB5C,GAAwGQ,GAAAG,EAAA3C,EAAAgD,EAAxGN,GAAaE,MAAA,EAAAK,KAAA,WAA6B,KAAAjD,EAAA,QAAAA,GAAA,EAA0B,OAAAA,GAAA,IAAe+C,QAAAF,OACnF,OAAAG,IAAgBlB,KAAAO,EAAA,GAAAa,MAAAb,EAAA,GAAAc,OAAAd,EAAA,IAAqD,kBAAAe,UAAAJ,EAAAI,OAAAC,UAAA,WAAoE,MAAA3D,QAAesD,EA0BxJ,QAAAM,GAAArJ,EAAArB,GACA,OAAAmC,KAAAd,GAAArB,EAAAiB,eAAAkB,KAAAnC,EAAAmC,GAAAd,EAAAc,IAGA,QAAAwI,GAAAjJ,GACA,GAAAL,GAAA,kBAAAmJ,SAAA9I,EAAA8I,OAAAC,UAAAvK,EAAA,CACA,OAAAmB,KAAAjB,KAAAsB,IAEAwH,KAAA,WAEA,MADAxH,IAAAxB,GAAAwB,EAAAd,SAAAc,MAAA,KACoBc,MAAAd,KAAAxB,KAAAkJ,MAAA1H,KAKpB,QAAAkJ,GAAAlJ,EAAAK,GACA,GAAAV,GAAA,kBAAAmJ,SAAA9I,EAAA8I,OAAAC,SACA,KAAApJ,EAAA,MAAAK,EACA,IAAAmG,GAAAV,EAAAjH,EAAAmB,EAAAjB,KAAAsB,GAAAmJ,IACA,KACA,eAAA9I,QAAA,MAAA8F,EAAA3H,EAAAgJ,QAAAE,MAAAyB,EAAA/J,KAAA+G,EAAArF,OAEA,MAAAD,GAAmB4E,GAAM5E,SACzB,QACA,IACAsF,MAAAuB,OAAA/H,EAAAnB,EAAA,SAAAmB,EAAAjB,KAAAF,GAEA,QAAiB,GAAAiH,EAAA,KAAAA,GAAA5E,OAEjB,MAAAsI,GAGA,QAAAC,KACA,OAAAD,MAAA3K,EAAA,EAA4BA,EAAA0H,UAAAhH,OAAsBV,IAClD2K,IAAAE,OAAAH,EAAAhD,UAAA1H,IACA,OAAA2K,GAGA,QAAAG,GAAAtB,GACA,MAAA5C,gBAAAkE,IAAAlE,KAAA4C,IAAA5C,MAAA,GAAAkE,GAAAtB,GAGA,QAAAuB,GAAAxC,EAAAC,EAAAE,GAIA,QAAAa,GAAA1H,GAAsBqI,EAAArI,KAAA7B,EAAA6B,GAAA,SAAA2H,GAAgC,UAAAb,SAAA,SAAAqC,EAAAtE,GAAqCuE,EAAArK,MAAAiB,EAAA2H,EAAAwB,EAAAtE,IAAA,GAAAwE,EAAArJ,EAAA2H,OAC3F,QAAA0B,GAAArJ,EAAA2H,GAA2B,IAAMT,EAAAmB,EAAArI,GAAA2H,IAAiB,MAAAvC,GAAYkE,EAAAF,EAAA,MAAAhE,IAC9D,QAAA8B,GAAApB,GAAsBA,EAAArF,gBAAAwI,GAAAnC,QAAAC,QAAAjB,EAAArF,MAAAkH,GAAAL,KAAAiC,EAAAvC,GAAAsC,EAAAF,EAAA,MAAAtD,GACtB,QAAAyD,GAAA9I,GAA6B4I,EAAA,OAAA5I,GAC7B,QAAAuG,GAAAvG,GAA4B4I,EAAA,QAAA5I,GAC5B,QAAA6I,GAAAzB,EAAAF,GAA2BE,EAAAF,GAAAyB,EAAAjK,QAAAiK,EAAAvK,QAAAwK,EAAAD,EAAA,MAAAA,EAAA,OAR3B,IAAAX,OAAAe,cAAA,SAAA1B,WAAA,uCACA,IAAA3J,GAAAkK,EAAAxB,EAAAU,MAAAb,EAAAC,OAAAyC,IACA,OAAAjL,MAAiBuJ,EAAA,QAAAA,EAAA,SAAAA,EAAA,UAAAvJ,EAAAsK,OAAAe,eAAA,WAAsF,MAAAzE,OAAe5G,EAStH,QAAAsL,GAAA9J,GAGA,QAAA+H,GAAA1H,EAAA6H,GAAyBlI,EAAAK,KAAA7B,EAAA6B,GAAA,SAAA2H,GAAgC,OAAAvH,OAAoBK,MAAAwI,EAAAtJ,EAAAK,GAAA2H,IAAAN,KAAA,WAAArH,GAAgD6H,IAAAF,OAF7H,GAAAxJ,GAAAiC,CACA,OAAAjC,MAAiBuJ,EAAA,QAAAA,EAAA,iBAAAtC,GAA4C,KAAAA,KAAWsC,EAAA,UAAAvJ,EAAAsK,OAAAC,UAAA,WAAqD,MAAA3D,OAAe5G,EAI5I,QAAAuL,GAAA/J,GACA,IAAA8I,OAAAe,cAAA,SAAA1B,WAAA,uCACA,IAAAxI,GAAAK,EAAA8I,OAAAe,cACA,OAAAlK,KAAAjB,KAAAsB,GAAA,kBAAAiJ,KAAAjJ,KAAA8I,OAAAC,YAGA,QAAAiB,GAAAC,EAAAC,GAEA,MADA7K,QAAAY,eAAgCZ,OAAAY,eAAAgK,EAAA,OAAuCnJ,MAAAoJ,IAAwBD,EAAAC,MAC/FD,EAGA,QAAAE,GAAAC,GACA,GAAAA,KAAA9J,WAAA,MAAA8J,EACA,IAAApL,KACA,UAAAoL,EAAA,OAAAC,KAAAD,GAAA/K,OAAAE,eAAAb,KAAA0L,EAAAC,KAAArL,EAAAqL,GAAAD,EAAAC,GAEA,OADArL,GAAAsL,QAAAF,EACApL,EAGA,QAAAuL,GAAAH,GACA,MAAAA,MAAA9J,WAAA8J,GAA4CE,QAAAF,GH+B5C/K,OAAOY,eAAe+E,EAAqB,cAAgBlE,OAAO,IACjCkE,EAA+B,UAAIC,EACrC9G,EAAoB0B,EAAEmF,EAAqB,WAAY,WAAa,MAAOwF,KACzExF,EAA4B,OAAIQ,EAChCR,EAAgC,WAAIa,EACpCb,EAA6B,QAAIuB,EACjCvB,EAAgC,WAAI0B,EACpC1B,EAA+B,UAAI8B,EACnC9B,EAAiC,YAAI6C,EACrC7C,EAAkC,aAAIgE,EACtChE,EAA8B,SAAIiE,EAClCjE,EAA4B,OAAIkE,EAChClE,EAA8B,SAAIoE,EAClCpE,EAA6B,QAAIsE,EACjCtE,EAAsC,iBAAIuE,EAC1CvE,EAAsC,iBAAI8E,EAC1C9E,EAAmC,cAAI+E,EACvC/E,EAA0C,qBAAIgF,EAC9ChF,EAAkC,aAAImF,EGjOvEnF,EAAA,gBAAAuF;;;;;;;;;;;;;;AAgBA,GAAAjF,GAAAjG,OAAAoL,iBACMC,uBAAgBC,QAAA,SAAA9K,EAAAqF,GAAsCrF,EAAA6K,UAAAxF,IAC5D,SAAArF,EAAAqF,GAAqB,OAAAzE,KAAAyE,KAAA3F,eAAAkB,KAAAZ,EAAAY,GAAAyE,EAAAzE,KAQrB+J,EAAAnL,OAAAuL,QAAA,SAAAlF,GACA,OAAAjG,GAAAjB,EAAA,EAAA6B,EAAA6F,UAAAhH,OAA4CV,EAAA6B,EAAO7B,IAAA,CACnDiB,EAAAyG,UAAA1H,EACA,QAAAiC,KAAAhB,GAAAJ,OAAAC,UAAAC,eAAAb,KAAAe,EAAAgB,KAAAiF,EAAAjF,GAAAhB,EAAAgB,IAEA,MAAAiF,KHyXO,CACA,CACA,CACA,CAED,SAAUnH,EAAQyG,EAAqB7G,GAE7C,YIzPA,SAAA0M,KA8CA,QAAAC,GAAAhL,GAEAiL,EADAC,EAAAlL,GACA,gBACAkL,GAAAlL,GAKA,QAAAmL,GAAAnL,GAKA,MAJAA,MAAAoL,EACAhI,EAAA8H,EAAAlL,IACAe,EAAA,UAA6Bf,SAE7BkL,EAAAlL,GAMA,QAAAqL,GAAAC,EAAAtL,OACAuL,KAAAvL,EACAA,EAAAoL,EAGA,gBAAApL,IAAA,KAAAA,GACAe,EAAA,gBAAuCf,OAAA,KAGvCoD,EAAA8H,EAAAlL,IACAe,EAAA,iBAAoCf,QAEpC,IAAAmL,GAAA,GAAAK,GAAAF,EAAAtL,EAAAyL,EAGA,OAFAP,GAAAlL,GAAAmL,EACAF,EAAAE,EAAA,UACAA,EAKA,QAAAO,KAEA,MAAAnM,QAAAoM,KAAAT,GAAAnH,IAAA,SAAA/D,GAAuD,MAAAkL,GAAAlL,KASvD,QAAA4L,GAAA5L,EAAA6L,EAAAC,EAAAC,EAAAC,GAEAC,EAAAjM,IACAe,EAAA,qBAAwCf,SAGxCiM,EAAAjM,GAAA6L,EAEAE,IACAG,EAAAlM,GAAA+L,EAEAL,IAAAjI,QAAA,SAAA0H,GACAY,EAAA,SAAAZ,KAIA,IAAAgB,GAAA,SAAAC,GAQA,WAPA,KAAAA,IAAoCA,EAAAjB,KACpC,kBAAAiB,GAAApM,IAGAe,EAAA,wBAA+Cf,SAG/CoM,EAAApM,KAiBA,YAdAuL,KAAAO,GACAvM,OAAA8M,EAAA,YAAAF,EAAAL,GAGAL,EAAAzL,GAAAmM,EAEAX,EAAAhM,UAAAQ,GAAA,WAEA,OADAsM,MACAC,EAAA,EAA4BA,EAAAnG,UAAAhH,OAAuBmN,IACnDD,EAAAC,GAAAnG,UAAAmG,EAGA,OADAjH,MAAAkH,EAAAC,KAAAnH,KAAAtF,GACA8H,MAAAxC,KAAA0G,EAAAM,OAEAH,EAOA,QAAAO,GAAAC,GACApN,OAAA8M,EAAA,YAAAZ,EAAAkB,GAEA,QAAA1B,GAAAE,EAAAyB,GACArN,OAAAoM,KAAAM,GAAAxI,QAAA,SAAAoJ,GAEA,GAAAC,GAAAC,EAAA5B,EAAA0B,EACA,QAAAC,GAGAZ,EAAAY,IACAZ,EAAAY,GAAAF,EAAAzB,KAMA,QAAA4B,GAAA5B,EAAAnL,GACA,kBAAAA,EACA,WAEA,IAAAgN,GAAAhN,CAEA,OADAmL,GAAAG,QACA0B,EAtKA,GAAA9B,MACAe,KACAC,KAEAT,GAGAjL,YAAA,EACA6K,gBACAF,MACA8B,KAAA,KACA5F,gBACA6F,YAAA,SACAC,UACAvB,kBACAb,0BACA2B,kBACAlI,gBAAA6H,EAAA,gBACA/J,aAAA+J,EAAA,aACArB,YACAiB,YACAc,eACA1F,gBACAzF,WAAAyK,EAAA,YAiJA,OApIA9M,QAAA8M,EAAA,eAAAZ,EAAA,UAAAA,GAEAlM,OAAAY,eAAAsL,EAAA,QACAnL,IAAAoL,IAqBAnM,OAAA8M,EAAA,eAAAlB,EAAA,MAAAK,GA4GAC,EAEA,QAAA1K,GAAAqM,EAAAd,GACA,KAAAe,GAAA5H,OAAA2H,EAAAd,GJ8EA/M,OAAOY,eAAe+E,EAAqB,cAAgBlE,OAAO,GAGlE,IAAIqL,GAAMhO,EAAoB,GInZ9B+E,EAAA,SAAAkK,EAAApH,GACA,MAAA3G,QAAAC,UAAAC,eAAAb,KAAA0O,EAAApH,IAEAkF,EAAA,YAGAmC,KAKA/B,EAAA,WACA,QAAAgC,GAAAlC,EAAAtL,EAAAyN,GACAnI,KAAAmI,IACAnI,KAAAoI,GAAA,EACApI,KAAAqI,KACArI,KAAAsI,EAAA5N,EACAsF,KAAAuI,EAAAtO,OAAA8M,EAAA,UAAAf,GACAhG,KAAA6H,UACAW,OAAA,WAAiC,aACjCC,SAAA,WAAmC,MAAA1G,SAAAC,QAAA,OACnC0G,qBAAA,SAAAC,GACAV,EAAAjO,KAAA2O,GAEAC,WAAA,WAAwC,MAAAD,GAAA,OAAyB,IAEjEE,wBAAA,SAAAF,GACAV,IAAAa,OAAA,SAAAC,GAA4E,MAAAA,KAAAJ,MA6G5E,MAzGA1O,QAAAY,eAAAqN,EAAAhO,UAAA,QACAc,IAAA,WAEA,MADAgF,MAAAgJ,IACAhJ,KAAAsI,GAEAvN,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqN,EAAAhO,UAAA,WACAc,IAAA,WAEA,MADAgF,MAAAgJ,IACAhJ,KAAAuI,GAEAxN,YAAA,EACAD,cAAA,IAEAoN,EAAAhO,UAAA+O,OAAA,WACA,GAAAC,GAAAlJ,IACA,WAAA+B,SAAA,SAAAC,GACAkH,EAAAF,IACAhH,MAEAO,KAAA,WACA2G,EAAAf,EAAAN,SAAAnC,UAAAwD,EAAAZ,EACA,IAAAa,KAMA,OALAlP,QAAAoM,KAAA6C,EAAAb,GAAAlK,QAAA,SAAAiL,GACAnP,OAAAoM,KAAA6C,EAAAb,EAAAe,IAAAjL,QAAA,SAAAkL,GACAF,EAAAnP,KAAAkP,EAAAb,EAAAe,GAAAC,QAGAtH,QAAAuH,IAAAH,EAAA1K,IAAA,SAAA8K,GACA,MAAAA,GAAA1B,SAAAoB,cAGA1G,KAAA,WACA2G,EAAAd,GAAA,EACAc,EAAAb,QAiBAH,EAAAhO,UAAAgN,EAAA,SAAAxM,EAAA8O,GAMA,OALA,KAAAA,IAA4CA,EAAA1D,GAC5C9F,KAAAgJ,IACAhJ,KAAAqI,EAAA3N,KACAsF,KAAAqI,EAAA3N,QAEAsF,KAAAqI,EAAA3N,GAAA8O,GAAA,CAKA,GAAAC,GAAAD,IAAA1D,EACA0D,MACAvD,GACAsD,EAAAvJ,KAAAmI,EAAAN,SAAAlB,UAAAjM,GAAAsF,UAAA0J,UAAAvC,KAAAnH,MAAAyJ,EACAzJ,MAAAqI,EAAA3N,GAAA8O,GAAAD,EAEA,MAAAvJ,MAAAqI,EAAA3N,GAAA8O,IAMAtB,EAAAhO,UAAAwP,UAAA,SAAArC,GACA,GAAA6B,GAAAlJ,IAEA/F,QAAA8M,EAAA,YAAA/G,KAAAqH,GAUAA,EAAAQ,UAAAR,EAAAQ,SAAAa,uBACAT,EAAA9J,QAAA,SAAA4K,GACAG,EAAArB,SAAAa,qBAAAK,KAEAd,OAOAC,EAAAhO,UAAA8O,EAAA,WACAhJ,KAAAoI,GACA3M,EAAA,eAAkCf,KAAAsF,KAAAsI,KAGlCJ,IAIAhC,GAAAhM,UAAAQ,MAAAwL,EAAAhM,UAAA8L,SACAE,EAAAhM,UAAA+O,QACAzN,QAAAmO,IAAA,KAwLA,IAAAC,IACAC,SAAA,iFAEAC,eAAA,6BACAC,gBAAA,8CACAC,cAAA,+CACAC,oBAAA,sDACAC,mBAAA,0LAIAC,uBAAA,2EAGApC,EAAA,GAAAhB,GAAA,8BAAA6C,ECpWA7Q,GAAA0B,EAAAmF,EAAA,4BAAAjH,IAgBA,IAAAA,GAAA8M,GACA7F,GAAA,WLyxBO,CACA,CACC,CAEF,SAAUzG,EAAQD,GM9yBxB,GAAAoK,EAGAA,GAAA,WACA,MAAAtD,QAGA,KAEAsD,KAAA8G,SAAA,qBAAAC,MAAA,QACC,MAAAhK,GAED,gBAAAzH,KACA0K,EAAA1K,GAOAO,EAAAD,QAAAoK,GNozBQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAUnK,EAAQD,EAASH,GAEjC,YOp0BAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAI9CxC,EAAAiD,WAIAmO,aAAA,EAIAC,YAAA,EAIA3C,YAAA,sBP41BQ,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAUzO,EAAQD,GQz3BxB,QAAAsR,KACA,KAAAC,OAAA,mCAEA,QAAAC,KACA,KAAAD,OAAA,qCAsBA,QAAAE,GAAAC,GACA,GAAAC,IAAAjC,WAEA,MAAAA,YAAAgC,EAAA,EAGA,KAAAC,IAAAL,IAAAK,IAAAjC,WAEA,MADAiC,GAAAjC,WACAA,WAAAgC,EAAA,EAEA,KAEA,MAAAC,GAAAD,EAAA,GACK,MAAAvK,GACL,IAEA,MAAAwK,GAAAvR,KAAA,KAAAsR,EAAA,GACS,MAAAvK,GAET,MAAAwK,GAAAvR,KAAA0G,KAAA4K,EAAA,KAMA,QAAAE,GAAAC,GACA,GAAAC,IAAAC,aAEA,MAAAA,cAAAF,EAGA,KAAAC,IAAAN,IAAAM,IAAAC,aAEA,MADAD,GAAAC,aACAA,aAAAF,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAA1K,GACL,IAEA,MAAA2K,GAAA1R,KAAA,KAAAyR,GACS,MAAA1K,GAGT,MAAA2K,GAAA1R,KAAA0G,KAAA+K,KAYA,QAAAG,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAAtR,OACAuR,EAAAD,EAAAnH,OAAAoH,GAEAC,GAAA,EAEAD,EAAAvR,QACAyR,KAIA,QAAAA,KACA,IAAAJ,EAAA,CAGA,GAAAK,GAAAb,EAAAO,EACAC,IAAA,CAGA,KADA,GAAAM,GAAAJ,EAAAvR,OACA2R,GAAA,CAGA,IAFAL,EAAAC,EACAA,OACAC,EAAAG,GACAL,GACAA,EAAAE,GAAAI,KAGAJ,IAAA,EACAG,EAAAJ,EAAAvR,OAEAsR,EAAA,KACAD,GAAA,EACAL,EAAAU,IAiBA,QAAAG,GAAAf,EAAAgB,GACA5L,KAAA4K,MACA5K,KAAA4L,QAYA,QAAAC,MAhKA,GAOAhB,GACAG,EARAc,EAAA3S,EAAAD,YAgBA,WACA,IAEA2R,EADA,kBAAAjC,YACAA,WAEA4B,EAEK,MAAAnK,GACLwK,EAAAL,EAEA,IAEAQ,EADA,kBAAAC,cACAA,aAEAP,EAEK,MAAArK,GACL2K,EAAAN,KAuDA,IAEAU,GAFAC,KACAF,GAAA,EAEAG,GAAA,CAyCAQ,GAAAC,SAAA,SAAAnB,GACA,GAAA5D,GAAAzB,MAAAzE,UAAAhH,OAAA,EACA,IAAAgH,UAAAhH,OAAA,EACA,OAAAV,GAAA,EAAuBA,EAAA0H,UAAAhH,OAAsBV,IAC7C4N,EAAA5N,EAAA,GAAA0H,UAAA1H,EAGAiS,GAAArR,KAAA,GAAA2R,GAAAf,EAAA5D,IACA,IAAAqE,EAAAvR,QAAAqR,GACAR,EAAAY,IASAI,EAAAzR,UAAAwR,IAAA,WACA1L,KAAA4K,IAAApI,MAAA,KAAAxC,KAAA4L,QAEAE,EAAAE,MAAA,UACAF,EAAAG,SAAA,EACAH,EAAAI,OACAJ,EAAAK,QACAL,EAAAM,QAAA,GACAN,EAAAO,YAIAP,EAAAQ,GAAAT,EACAC,EAAAS,YAAAV,EACAC,EAAAU,KAAAX,EACAC,EAAAW,IAAAZ,EACAC,EAAAY,eAAAb,EACAC,EAAAa,mBAAAd,EACAC,EAAAc,KAAAf,EACAC,EAAAe,gBAAAhB,EACAC,EAAAgB,oBAAAjB,EAEAC,EAAAiB,UAAA,SAAArS,GAAqC,UAErCoR,EAAAkB,QAAA,SAAAtS,GACA,KAAA+P,OAAA,qCAGAqB,EAAAmB,IAAA,WAA2B,WAC3BnB,EAAAoB,MAAA,SAAAC,GACA,KAAA1C,OAAA,mCAEAqB,EAAAsB,MAAA,WAA4B,WR24BtB,SAAUjU,EAAQD,EAASH,GAEjC,YSpjCAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAQ,GAAAnD,EAAA,GAMAG,GAAA0C,OAAA,SAAAyR,EAAAC,GACA,IAAAD,EACA,KAAAnU,GAAA2C,eAAAyR,IAQApU,EAAA2C,eAAA,SAAAyR,GACA,MAAA7C,OAAA,sBACAvO,EAAAC,UAAAyL,YACA,6BACA0F,KT6kCM,SAAUnU,EAAQD,EAASH,GAEjC,YUpmCAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAiE,GAAA,SAAA4N,GAGA,OADAC,MAAAnS,EAAA,EACAjC,EAAA,EAAmBA,EAAAmU,EAAAzT,OAAgBV,IAAA,CACnC,GAAAoB,GAAA+S,EAAAE,WAAArU,EACAoB,GAAA,IACAgT,EAAAnS,KAAAb,EAEAA,EAAA,MACAgT,EAAAnS,KAAAb,GAAA,MACAgT,EAAAnS,KAAA,GAAAb,EAAA,KAEA,cAAAA,IACApB,EAAA,EAAAmU,EAAAzT,QACA,cAAAyT,EAAAE,WAAArU,EAAA,KAEAoB,EAAA,aAAAA,IAAA,UAAA+S,EAAAE,aAAArU,IACAoU,EAAAnS,KAAAb,GAAA,OACAgT,EAAAnS,KAAAb,GAAA,UACAgT,EAAAnS,KAAAb,GAAA,SACAgT,EAAAnS,KAAA,GAAAb,EAAA,MAGAgT,EAAAnS,KAAAb,GAAA,OACAgT,EAAAnS,KAAAb,GAAA,SACAgT,EAAAnS,KAAA,GAAAb,EAAA,KAGA,MAAAgT,IAQAE,EAAA,SAAAC,GAGA,IADA,GAAAH,MAAAI,EAAA,EAAApT,EAAA,EACAoT,EAAAD,EAAA7T,QAAA,CACA,GAAA+T,GAAAF,EAAAC,IACA,IAAAC,EAAA,IACAL,EAAAhT,KAAAsT,OAAAC,aAAAF,OAEA,IAAAA,EAAA,KAAAA,EAAA,KACA,GAAAG,GAAAL,EAAAC,IACAJ,GAAAhT,KAAAsT,OAAAC,cAAA,GAAAF,IAAA,KAAAG,OAEA,IAAAH,EAAA,KAAAA,EAAA,KAEA,GAAAG,GAAAL,EAAAC,KACAK,EAAAN,EAAAC,KACAM,EAAAP,EAAAC,KACAO,IAAA,EAAAN,IAAA,OAAAG,IAAA,OAAAC,IAAA,KAAAC,GACA,KACAV,GAAAhT,KAAAsT,OAAAC,aAAA,OAAAI,GAAA,KACAX,EAAAhT,KAAAsT,OAAAC,aAAA,YAAAI,QAEA,CACA,GAAAH,GAAAL,EAAAC,KACAK,EAAAN,EAAAC,IACAJ,GAAAhT,KAAAsT,OAAAC,cAAA,GAAAF,IAAA,OAAAG,IAAA,KAAAC,IAGA,MAAAT,GAAAY,KAAA,IAGAlV,GAAA6C,QAMAkH,EAAA,KAMAnD,EAAA,KAMAkD,EAAA,KAMAM,EAAA,KAMA+K,kBAAA,iEAKAC,mBACA,MAAAtO,MAAAqO,kBAAA,OAMAE,2BACA,MAAAvO,MAAAqO,kBAAA,OAUAG,mBAAA,kBAAAC,MAUAC,gBAAA,SAAAC,EAAAC,GACA,IAAArJ,MAAAsJ,QAAAF,GACA,KAAAlE,OAAA,gDAEAzK,MAAA8O,GAKA,QAJAC,GAAAH,EACA5O,KAAAgP,EACAhP,KAAAiP,EACAC,KACA9V,EAAA,EAAuBA,EAAAuV,EAAA7U,OAAkBV,GAAA,GACzC,GAAA+V,GAAAR,EAAAvV,GACAgW,EAAAhW,EAAA,EAAAuV,EAAA7U,OACAuV,EAAAD,EAAAT,EAAAvV,EAAA,KACAkW,EAAAlW,EAAA,EAAAuV,EAAA7U,OACAyV,EAAAD,EAAAX,EAAAvV,EAAA,KACAoW,EAAAL,GAAA,EACAM,GAAA,EAAAN,IAAA,EAAAE,GAAA,EACAK,GAAA,GAAAL,IAAA,EAAAE,GAAA,EACAI,EAAA,GAAAJ,CACAD,KACAK,EAAA,GACAP,IACAM,EAAA,KAGAR,EAAAlV,KAAA+U,EAAAS,GAAAT,EAAAU,GAAAV,EAAAW,GAAAX,EAAAY,IAEA,MAAAT,GAAAd,KAAA,KAUAwB,aAAA,SAAAjB,EAAAC,GAGA,MAAA5O,MAAAwO,qBAAAI,EACAiB,KAAAlB,GAEA3O,KAAA0O,gBAAA/O,EAAAgP,GAAAC,IAUAkB,aAAA,SAAAnB,EAAAC,GAGA,MAAA5O,MAAAwO,qBAAAI,EACAH,KAAAE,GAEAjB,EAAA1N,KAAA+P,wBAAApB,EAAAC,KAiBAmB,wBAAA,SAAApB,EAAAC,GACA5O,KAAA8O,GAKA,QAJAkB,GAAApB,EACA5O,KAAAiQ,EACAjQ,KAAAkQ,EACAhB,KACA9V,EAAA,EAAuBA,EAAAuV,EAAA7U,QAAkB,CACzC,GAAAqV,GAAAa,EAAArB,EAAAwB,OAAA/W,MACAgW,EAAAhW,EAAAuV,EAAA7U,OACAuV,EAAAD,EAAAY,EAAArB,EAAAwB,OAAA/W,IAAA,IACAA,CACA,IAAAkW,GAAAlW,EAAAuV,EAAA7U,OACAyV,EAAAD,EAAAU,EAAArB,EAAAwB,OAAA/W,IAAA,KACAA,CACA,IAAAgX,GAAAhX,EAAAuV,EAAA7U,OACAuW,EAAAD,EAAAJ,EAAArB,EAAAwB,OAAA/W,IAAA,EAEA,MADAA,EACA,MAAA+V,GAAA,MAAAE,GAAA,MAAAE,GAAA,MAAAc,EACA,KAAA5F,QAEA,IAAA+E,GAAAL,GAAA,EAAAE,GAAA,CAEA,IADAH,EAAAlV,KAAAwV,GACA,IAAAD,EAAA,CACA,GAAAE,GAAAJ,GAAA,MAAAE,GAAA,CAEA,IADAL,EAAAlV,KAAAyV,GACA,IAAAY,EAAA,CACA,GAAAX,GAAAH,GAAA,MAAAc,CACAnB,GAAAlV,KAAA0V,KAIA,MAAAR,IAOAoB,EAAA,WACA,IAAAtQ,KAAAiP,EAAA,CACAjP,KAAAiP,KACAjP,KAAAkQ,KACAlQ,KAAAgP,KACAhP,KAAAiQ,IAEA,QAAA7W,GAAA,EAA2BA,EAAA4G,KAAAsO,aAAAxU,OAA8BV,IACzD4G,KAAAiP,EAAA7V,GAAA4G,KAAAsO,aAAA6B,OAAA/W,GACA4G,KAAAkQ,EAAAlQ,KAAAiP,EAAA7V,MACA4G,KAAAgP,EAAA5V,GAAA4G,KAAAuO,qBAAA4B,OAAA/W,GACA4G,KAAAiQ,EAAAjQ,KAAAgP,EAAA5V,MAEAA,GAAA4G,KAAAqO,kBAAAvU,SACAkG,KAAAkQ,EAAAlQ,KAAAuO,qBAAA4B,OAAA/W,MACA4G,KAAAiQ,EAAAjQ,KAAAsO,aAAA6B,OAAA/W,UAWAF,EAAA+C,aAAA,SAAAsR,GACA,GAAAgD,GAAA5Q,EAAA4N,EACA,OAAArU,GAAA6C,OAAA2S,gBAAA6B,GAAA,IAWArX,EAAA8C,aAAA,SAAAuR,GACA,IACA,MAAArU,GAAA6C,OAAA+T,aAAAvC,GAAA,GAEA,MAAAlN,GACA7E,QAAAC,MAAA,wBAAA4E,GAEA,cV6nCM,SAAUlH,EAAQD,EAASH,GAEjC,YW35CA,SAAAqE,GAAAmQ,GACA,MAAAiD,MAAAC,MAAAlD,GAQA,QAAAlQ,GAAAqT,GACA,MAAAF,MAAAnT,UAAAqT,GAjBAzW,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAU9CxC,EAAAkE,WASAlE,EAAAmE,aX07CM,SAAUlE,EAAQD,EAASH,GAEjC,YY/8CAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAE9CxC,EAAA4E,SAAA,SAAAkK,EAAApH,GACA,MAAA3G,QAAAC,UAAAC,eAAAb,KAAA0O,EAAApH,IAEA1H,EAAAwF,QAAA,SAAAsJ,EAAApH,GACA,GAAA3G,OAAAC,UAAAC,eAAAb,KAAA0O,EAAApH,GACA,MAAAoH,GAAApH,IAUA1H,EAAAiF,QAAA,SAAA6J,EAAA2I,GACA,OAAA/P,KAAAoH,GACA/N,OAAAC,UAAAC,eAAAb,KAAA0O,EAAApH,IACA+P,EAAA/P,EAAAoH,EAAApH,KAUA1H,EAAA8E,OAAA,SAAA4S,EAAAC,GAIA,MAHA3X,GAAAiF,QAAA0S,EAAA,SAAAjQ,EAAAlF,GACAkV,EAAAhQ,GAAAlF,IAEAkV,GAOA1X,EAAA2E,MAAA,SAAAmK,GACA,MAAA9O,GAAA8E,UAA4BgK,IAS5B9O,EAAAsF,gBAAA,SAAAwJ,GACA,sBAAAA,IAAA,OAAAA,GAEA9O,EAAAqF,QAAA,SAAAyJ,GACA,OAAApH,KAAAoH,GACA,QAEA,WAEA9O,EAAAmF,SAAA,SAAA2J,GACA,GAAA8I,GAAA,CACA,QAAAlQ,KAAAoH,GACA8I,GAEA,OAAAA,IAEA5X,EAAAuF,IAAA,SAAAuJ,EAAAlF,EAAAiO,GACA,GAAAC,KACA,QAAApQ,KAAAoH,GACAgJ,EAAApQ,GAAAkC,EAAAxJ,KAAAyX,EAAA/I,EAAApH,KAAAoH,EAEA,OAAAgJ,IAEA9X,EAAA+E,QAAA,SAAA+J,EAAA2I,EAAAM,GACA,OAAArQ,KAAAoH,GACA,GAAA2I,EAAArX,KAAA2X,EAAAjJ,EAAApH,KAAAoH,GACA,MAAApH,IAKA1H,EAAAgF,UAAA,SAAA8J,EAAA2I,EAAAM,GACA,GAAArQ,GAAA1H,EAAA+E,QAAA+J,EAAA2I,EAAAM,EACA,OAAArQ,IAAAoH,EAAApH,IAEA1H,EAAAkF,UAAA,SAAA4J,GACA,OAAApH,KAAAoH,GACA,MAAApH,IAGA1H,EAAAoF,UAAA,SAAA0J,GACA,GAAAgJ,MACA5X,EAAA,CACA,QAAAwH,KAAAoH,GACAgJ,EAAA5X,KAAA4O,EAAApH,EAEA,OAAAoQ,IAUA9X,EAAA6E,MAAA,SAAAiK,EAAA2I,GACA,OAAA/P,KAAAoH,GACA,GAAA/N,OAAAC,UAAAC,eAAAb,KAAA0O,EAAApH,KACA+P,EAAA/P,EAAAoH,EAAApH,IACA,QAIA,YZu+CQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAUzH,EAAQD,EAASH,GapnDjCA,EAAA,IACAI,EAAAD,QAAAH,EAAA,GAAAmM,Sb2oDM,SAAU/L,EAAQyG,EAAqB7G,GAE7C,YACAkB,QAAOY,eAAe+E,EAAqB,cAAgBlE,OAAO,GAC7C,IAAIwV,GAAuDnY,EAAoB,IAE3EoY,GAD+DpY,EAAoBkC,EAAEiW,GACpCnY,EAAoB,KclqD9FqY,GdmqDkFrY,EAAoBkC,EAAEkW,GcnqDxGpY,EAAA,IAAAA,GAAAkC,EAAAmW,Id8rDM,SAAUjY,EAAQD,EAASH,Ie9rDjC,SAAAsY,GAeA,GAAAC,GAAA,WACA,YAAAD,EACA,MAAAA,EAEA,aAAAzY,EACA,MAAAA,EAEA,uBAAAC,MACA,MAAAA,KAEA,MAAA4R,OAAA,oCAGA,oBAAA1I,WAEAuP,EAAA,QAAAvP,QAAAhJ,EAAA,OfqsD6BO,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,cAC4B,SAASwY,GgBpuDrC,QAAA1F,MAGA,QAAA1E,GAAAwJ,EAAAhP,GACA,kBACAgP,EAAAnO,MAAAb,EAAAb,YAIA,QAAAiB,GAAA4O,GACA,KAAA3Q,eAAA+B,IACA,SAAAgB,WAAA,uCACA,sBAAA4N,GAAA,SAAA5N,WAAA,iBACA/C,MAAAwR,OAAA,EACAxR,KAAAyR,UAAA,EACAzR,KAAA0R,WAAAzL,GACAjG,KAAA2R,KAEAC,EAAAjB,EAAA3Q,MAGA,QAAA6R,GAAAhZ,EAAAiZ,GACA,SAAAjZ,EAAA2Y,QACA3Y,IAAA6Y,MAEA,QAAA7Y,EAAA2Y,OAEA,WADA3Y,GAAA8Y,EAAA3X,KAAA8X,EAGAjZ,GAAA4Y,UAAA,EACA1P,EAAAgQ,EAAA,WACA,GAAAC,GAAA,IAAAnZ,EAAA2Y,OAAAM,EAAAG,YAAAH,EAAAI,UACA,WAAAF,EAEA,YADA,IAAAnZ,EAAA2Y,OAAAxP,EAAAC,GAAA6P,EAAAK,QAAAtZ,EAAA6Y,OAGA,IAAAU,EACA,KACAA,EAAAJ,EAAAnZ,EAAA6Y,QACK,MAAArR,GAEL,WADA4B,GAAA6P,EAAAK,QAAA9R,GAGA2B,EAAA8P,EAAAK,QAAAC,KAIA,QAAApQ,GAAAnJ,EAAAwZ,GACA,IAEA,GAAAA,IAAAxZ,EACA,SAAAkK,WAAA,4CACA,IACAsP,IACA,gBAAAA,IAAA,kBAAAA,IACA,CACA,GAAA9P,GAAA8P,EAAA9P,IACA,IAAA8P,YAAAtQ,GAIA,MAHAlJ,GAAA2Y,OAAA,EACA3Y,EAAA6Y,OAAAW,MACAC,GAAAzZ,EAEO,sBAAA0J,GAEP,WADAqP,GAAAzK,EAAA5E,EAAA8P,GAAAxZ,GAIAA,EAAA2Y,OAAA,EACA3Y,EAAA6Y,OAAAW,EACAC,EAAAzZ,GACG,MAAAwH,GACH4B,EAAApJ,EAAAwH,IAIA,QAAA4B,GAAApJ,EAAAwZ,GACAxZ,EAAA2Y,OAAA,EACA3Y,EAAA6Y,OAAAW,EACAC,EAAAzZ,GAGA,QAAAyZ,GAAAzZ,GACA,IAAAA,EAAA2Y,QAAA,IAAA3Y,EAAA8Y,EAAA7X,QACAiI,EAAAgQ,EAAA,WACAlZ,EAAA4Y,UACA1P,EAAAwQ,EAAA1Z,EAAA6Y,SAKA,QAAAtY,GAAA,EAAAqS,EAAA5S,EAAA8Y,EAAA7X,OAA+CV,EAAAqS,EAASrS,IACxDyY,EAAAhZ,IAAA8Y,EAAAvY,GAEAP,GAAA8Y,EAAA,KAGA,QAAAa,GAAAP,EAAAC,EAAAC,GACAnS,KAAAiS,YAAA,kBAAAA,KAAA,KACAjS,KAAAkS,WAAA,kBAAAA,KAAA,KACAlS,KAAAmS,UASA,QAAAP,GAAAjB,EAAA9X,GACA,GAAAyJ,IAAA,CACA,KACAqO,EACA,SAAAjV,GACA4G,IACAA,GAAA,EACAN,EAAAnJ,EAAA6C,KAEA,SAAA+W,GACAnQ,IACAA,GAAA,EACAL,EAAApJ,EAAA4Z,MAGG,MAAAC,GACH,GAAApQ,EAAA,MACAA,IAAA,EACAL,EAAApJ,EAAA6Z,IAhIA,GAAAC,GAAA/J,UAoIA7G,GAAA7H,UAAA,eAAAgY,GACA,MAAAlS,MAAAuC,KAAA,KAAA2P,IAGAnQ,EAAA7H,UAAAqI,KAAA,SAAA0P,EAAAC,GACA,GAAAU,GAAA,GAAA5S,MAAAC,YAAA4L,EAGA,OADAgG,GAAA7R,KAAA,GAAAwS,GAAAP,EAAAC,EAAAU,IACAA,GAGA7Q,EAAA7H,UAAA,iBAAAyO,GACA,GAAA1I,GAAAD,KAAAC,WACA,OAAAD,MAAAuC,KACA,SAAA7G,GACA,MAAAuE,GAAA+B,QAAA2G,KAAApG,KAAA,WACA,MAAA7G,MAGA,SAAA+W,GACA,MAAAxS,GAAA+B,QAAA2G,KAAApG,KAAA,WACA,MAAAtC,GAAAgC,OAAAwQ,QAMA1Q,EAAAuH,IAAA,SAAAuJ,GACA,UAAA9Q,GAAA,SAAAC,EAAAC,GAOA,QAAA+O,GAAA5X,EAAA0Z,GACA,IACA,GAAAA,IAAA,gBAAAA,IAAA,kBAAAA,IAAA,CACA,GAAAvQ,GAAAuQ,EAAAvQ,IACA,sBAAAA,GAQA,WAPAA,GAAAjJ,KACAwZ,EACA,SAAAA,GACA9B,EAAA5X,EAAA0Z,IAEA7Q,GAKA+E,EAAA5N,GAAA0Z,EACA,KAAAC,GACA/Q,EAAAgF,GAEO,MAAA0L,GACPzQ,EAAAyQ,IA1BA,IAAAG,OAAA,KAAAA,EAAA/Y,OACA,SAAAiJ,WAAA,+BACA,IAAAiE,GAAAzB,MAAArL,UAAA8Y,MAAA1Z,KAAAuZ,EACA,QAAA7L,EAAAlN,OAAA,MAAAkI,MA2BA,QA1BA+Q,GAAA/L,EAAAlN,OA0BAV,EAAA,EAAmBA,EAAA4N,EAAAlN,OAAiBV,IACpC4X,EAAA5X,EAAA4N,EAAA5N,OAKA2I,EAAAC,QAAA,SAAAtG,GACA,MAAAA,IAAA,gBAAAA,MAAAuE,cAAA8B,EACArG,EAGA,GAAAqG,GAAA,SAAAC,GACAA,EAAAtG,MAIAqG,EAAAE,OAAA,SAAAvG,GACA,UAAAqG,GAAA,SAAAC,EAAAC,GACAA,EAAAvG,MAIAqG,EAAAkR,KAAA,SAAAC,GACA,UAAAnR,GAAA,SAAAC,EAAAC,GACA,OAAA7I,GAAA,EAAAqS,EAAAyH,EAAApZ,OAAwCV,EAAAqS,EAASrS,IACjD8Z,EAAA9Z,GAAAmJ,KAAAP,EAAAC,MAMAF,EAAAgQ,EACA,kBAAAR,IACA,SAAAZ,GACAY,EAAAZ,KAEA,SAAAA,GACAgC,EAAAhC,EAAA,IAGA5O,EAAAwQ,EAAA,SAAAhX,GACA,mBAAAC,mBACAA,QAAA2X,KAAA,wCAAA5X,IAIApC,EAAAD,QAAA6I,IhB4uD6BzI,KAAKJ,EAASH,EAAoB,IAAIwY,eAI7D,SAAUpY,EAAQD,EAASH,IiBj+DjC,SAAAsY,GAiBA,QAAA+B,GAAAC,EAAAC,GACAtT,KAAAuT,EAAAF,EACArT,KAAAwT,SAAAF,EAnBA,GAAA9Q,GAAA4H,SAAAlQ,UAAAsI,KAIAtJ,GAAA0P,WAAA,WACA,UAAAwK,GAAA5Q,EAAAlJ,KAAAsP,WAAAhQ,EAAAkI,WAAAmK,eAEA/R,EAAAua,YAAA,WACA,UAAAL,GAAA5Q,EAAAlJ,KAAAma,YAAA7a,EAAAkI,WAAA4S,gBAEAxa,EAAA+R,aACA/R,EAAAwa,cAAA,SAAAlI,GACAA,GACAA,EAAAmI,SAQAP,EAAAlZ,UAAA0Z,MAAAR,EAAAlZ,UAAA2Z,IAAA,aACAT,EAAAlZ,UAAAyZ,MAAA,WACA3T,KAAAwT,SAAAla,KAAAV,EAAAoH,KAAAuT,IAIAra,EAAA4a,OAAA,SAAAC,EAAAC,GACA/I,aAAA8I,EAAAE,GACAF,EAAAG,EAAAF,GAGA9a,EAAAib,SAAA,SAAAJ,GACA9I,aAAA8I,EAAAE,GACAF,EAAAG,GAAA,GAGAhb,EAAAkb,EAAAlb,EAAAmb,OAAA,SAAAN,GACA9I,aAAA8I,EAAAE,EAEA,IAAAD,GAAAD,EAAAG,CACAF,IAAA,IACAD,EAAAE,EAAArL,WAAA,WACAmL,EAAAO,GACAP,EAAAO,KACKN,KAKLjb,EAAA,IAIAG,EAAAqY,aAAA,mBAAA1Y,YAAA0Y,kBACA,KAAAF,KAAAE,cACAvR,WAAAuR,aACArY,EAAAqb,eAAA,mBAAA1b,YAAA0b,oBACA,KAAAlD,KAAAkD,gBACAvU,WAAAuU,iBjBq+D6Bjb,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,IkBpiEjC,SAAAsY,EAAAvF,IAAA,SAAAuF,EAAApL,GACA,YAYA,SAAAsL,GAAA5I,GAEA,kBAAAA,KACAA,EAAAyB,SAAA,GAAAzB,GAIA,QADA3B,GAAAzB,MAAAzE,UAAAhH,OAAA,GACAV,EAAA,EAAqBA,EAAA4N,EAAAlN,OAAiBV,IACtC4N,EAAA5N,GAAA0H,UAAA1H,EAAA,EAGA,IAAAob,IAAkB7L,WAAA3B,OAGlB,OAFAyN,GAAAC,GAAAF,EACAG,EAAAD,GACAA,IAGA,QAAAH,GAAA1C,SACA4C,GAAA5C,GAGA,QAAAnG,GAAA8I,GACA,GAAA7L,GAAA6L,EAAA7L,SACA3B,EAAAwN,EAAAxN,IACA,QAAAA,EAAAlN,QACA,OACA6O,GACA,MACA,QACAA,EAAA3B,EAAA,GACA,MACA,QACA2B,EAAA3B,EAAA,GAAAA,EAAA,GACA,MACA,QACA2B,EAAA3B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACA,MACA,SACA2B,EAAAnG,MAAAyD,EAAAe,IAKA,QAAA4N,GAAA/C,GAGA,GAAAgD,EAGAjM,WAAAgM,EAAA,EAAA/C,OACS,CACT,GAAA2C,GAAAC,EAAA5C,EACA,IAAA2C,EAAA,CACAK,GAAA,CACA,KACAnJ,EAAA8I,GACiB,QACjBD,EAAA1C,GACAgD,GAAA,KApEA,IAAAxD,EAAAE,aAAA,CAIA,GAIAoD,GAJAD,EAAA,EACAD,KACAI,GAAA,EACAC,EAAAzD,EAAA0D,SAoJAC,EAAA/a,OAAAgb,gBAAAhb,OAAAgb,eAAA5D,EACA2D,QAAApM,WAAAoM,EAAA3D,EAGU,wBAAA6D,SAAA5b,KAAA+X,EAAAvF,SArFV,WACA6I,EAAA,SAAA9C,GACA/F,EAAAC,SAAA,WAA0C6I,EAAA/C,SAI1C,WAGA,GAAAR,EAAA8D,cAAA9D,EAAA+D,cAAA,CACA,GAAAC,IAAA,EACAC,EAAAjE,EAAAkE,SAMA,OALAlE,GAAAkE,UAAA,WACAF,GAAA,GAEAhE,EAAA8D,YAAA,QACA9D,EAAAkE,UAAAD,EACAD,MAIA,WAKA,GAAAG,GAAA,gBAAAC,KAAAC,SAAA,IACAC,EAAA,SAAAC,GACAA,EAAAC,SAAAxE,GACA,gBAAAuE,GAAAlF,MACA,IAAAkF,EAAAlF,KAAAnQ,QAAAiV,IACAZ,GAAAgB,EAAAlF,KAAAsC,MAAAwC,EAAA1b,SAIAuX,GAAAyE,iBACAzE,EAAAyE,iBAAA,UAAAH,GAAA,GAEAtE,EAAA0E,YAAA,YAAAJ,GAGAhB,EAAA,SAAA9C,GACAR,EAAA8D,YAAAK,EAAA3D,EAAA,SAmDKR,EAAA2E,eA/CL,WACA,GAAAC,GAAA,GAAAD,eACAC,GAAAC,MAAAX,UAAA,SAAAK,GAEAhB,EADAgB,EAAAlF,OAIAiE,EAAA,SAAA9C,GACAoE,EAAAE,MAAAhB,YAAAtD,OA2CKiD,GAAA,sBAAAA,GAAAsB,cAAA,UAvCL,WACA,GAAAC,GAAAvB,EAAAwB,eACA3B,GAAA,SAAA9C,GAGA,GAAA0E,GAAAzB,EAAAsB,cAAA,SACAG,GAAAC,mBAAA,WACA5B,EAAA/C,GACA0E,EAAAC,mBAAA,KACAH,EAAAI,YAAAF,GACAA,EAAA,MAEAF,EAAAK,YAAAH,OAIA,WACA5B,EAAA,SAAA9C,GACAjJ,WAAAgM,EAAA,EAAA/C,OA8BAmD,EAAAzD,eACAyD,EAAAT,mBACC,mBAAA1b,UAAA,KAAAwY,EAAArR,KAAAqR,EAAAxY,QlBwiE4BS,KAAKJ,EAASH,EAAoB,IAAKA,EAAoB,MAIlF,SAAUI,EAAQD,GmBjtExBqM,MAAArL,UAAAyc,MACA1c,OAAAY,eAAA0K,MAAArL,UAAA,QACAwB,MAAA,SAAAkb,GAEA,SAAA5W,KACA,SAAA+C,WAAA,gCAEA,IAAAnI,GAAAX,OAAA+F,MAEAyL,EAAA7Q,EAAAd,SAAA,CAEA,sBAAA8c,GACA,SAAA7T,WAAA,+BAOA,KAJA,GAAApB,GAAAb,UAAA,GAEAmE,EAAA,EAEAA,EAAAwG,GAAA,CAKA,GAAAoL,GAAAjc,EAAAqK,EACA,IAAA2R,EAAAtd,KAAAqI,EAAAkV,EAAA5R,EAAArK,GACA,MAAAic,EAGA5R,SAYAM,MAAArL,UAAA4c,WACA7c,OAAAY,eAAA0K,MAAArL,UAAA,aACAwB,MAAA,SAAAkb,GAEA,SAAA5W,KACA,SAAA+C,WAAA,gCAEA,IAAAnI,GAAAX,OAAA+F,MAEAyL,EAAA7Q,EAAAd,SAAA,CAEA,sBAAA8c,GACA,SAAA7T,WAAA,+BAOA,KAJA,GAAApB,GAAAb,UAAA,GAEAmE,EAAA,EAEAA,EAAAwG,GAAA,CAKA,GAAAoL,GAAAjc,EAAAqK,EACA,IAAA2R,EAAAtd,KAAAqI,EAAAkV,EAAA5R,EAAArK,GACA,MAAAqK,EAGAA,KAGA,anBivEM,SAAU9L,EAAQD,GoB3zExB4U,OAAA5T,UAAA6c,aACAjJ,OAAA5T,UAAA6c,WAAA,SAAAC,EAAApJ,GACA,MAAA5N,MAAAiX,QAAArJ,KAAA,KAAAA,EAAAoJ,EAAAld,UAAAkd,KpBy1EM,SAAU7d,EAAQD,EAASH,GAEjC,YqB51EA,SAAAsD,GAAAX,GACA,MAAAY,OAAA2J,GAAAvK,GAeA,QAAAY,GAAAqE,EAAAkV,GACA,KAAAA,YAAA5b,SACA,MAAA4b,EAEA,QAAAA,EAAA5V,aACA,IAAAiX,MAGA,GAAAC,GAAAtB,CACA,WAAAqB,MAAAC,EAAAC,UACA,KAAAnd,YACAgM,KAAAtF,IACAA,KAEA,MACA,KAAA4E,OAEA5E,IACA,MACA,SAEA,MAAAkV,GAEA,OAAAwB,KAAAxB,GACAA,EAAA1b,eAAAkd,KAGA1W,EAAA0W,GAAA/a,EAAAqE,EAAA0W,GAAAxB,EAAAwB,IAEA,OAAA1W,GAIA,QAAApE,GAAAyL,EAAAqP,EAAA3b,GACAsM,EAAAqP,GAAA3b,EAtDAzB,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAO9CxC,EAAAmD,WA4CAnD,EAAAoD,aAKApD,EAAAqD,iBrBw3EM,SAAUpD,EAAQD,EAASH,GAEjC,YsBl7EAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAe,GAAA,WACA,QAAAA,KACA,GAAAyM,GAAAlJ,IACAA,MAAAmS,QAAA,GAAApQ,SAAA,SAAAC,EAAAC,GACAiH,EAAAlH,UACAkH,EAAAjH,WAkCA,MAxBAxF,GAAAvC,UAAAod,aAAA,SAAA3O,GACA,GAAAO,GAAAlJ,IACA,iBAAAvE,EAAAC,GACAD,EACAyN,EAAAjH,OAAAxG,GAGAyN,EAAAlH,QAAAtG,GAEA,kBAAAiN,KAGAO,EAAAiJ,QAAAoF,MAAA,cAGA,IAAA5O,EAAA7O,OACA6O,EAAAlN,GAGAkN,EAAAlN,EAAAC,MAKAe,IAEAvD,GAAAuD,YtB08EM,SAAUtD,EAAQD,EAASH,GAEjC,YuBt/EAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAQ,GAAAnD,EAAA,GAKAG,GAAAyD,MAAA,WACA,yBAAA6a,YACA,gBAAAA,WAAA,UACAA,UAAA,UAGA,IAWAte,EAAA0D,gBAAA,WACA,gBAAAhE,MACAA,EAAA,SAAAA,EAAA,UAAAA,EAAA,WACA,oDAAA6e,KAAAve,EAAAyD,UAOAzD,EAAA4D,cAAA,WACA,sBAAA0a,YAAA,gBAAAA,UAAA,SAOAte,EAAA2D,UAAA,WACA,WAAAX,EAAAC,UAAAmO,cAAA,IAAApO,EAAAC,UAAAoO,avB+gFM,SAAUpR,EAAQD,EAASH,GAEjC,YwBrkFA,SAAAmE,GAAAwa,GACA,GAAA9d,GAAA+d,CAEA,OADAA,GAAAD,EACA9d,EARAK,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAkc,GAAA,gBACAD,EAAAlN,MACAkN,iBAOAze,GAAAgE,cACA,IAAAD,GAAA,WACA,QAAAA,GAAA6K,EAAAwF,GAKA,GAJAtN,KAAA8H,OACA9H,KAAAsN,UAGAqK,EAEAA,EAAA3X,KAAAhD,EAAA9C,UAAAiG,YAEA,CACA,GAAA0X,GAAApN,MAAAjI,MAAAxC,KAAAc,UACAd,MAAAtF,KAAAkd,EAEA3d,OAAAY,eAAAmF,KAAA,SACAhF,IAAA,WACA,MAAA6c,GAAAC,UAKA,MAAA7a,KAEA/D,GAAA+D,gBAEAA,EAAA/C,UAAAD,OAAAkG,OAAAsK,MAAAvQ,WACA+C,EAAA/C,UAAA+F,YAAAhD,EACAA,EAAA/C,UAAAQ,KAAAkd,CACA,IAAA5a,GAAA,WACA,QAAAA,GAAAuM,EAAAhC,EAAAqC,GACA5J,KAAAuJ,UACAvJ,KAAAuH,cACAvH,KAAA4J,SAEA5J,KAAA+X,QAAA,gBAgCA,MA7BA/a,GAAA9C,UAAAiG,OAAA,SAAA2H,EAAA4I,OACAzK,KAAAyK,IACAA,KAEA,IAEApD,GAFA0K,EAAAhY,KAAA4J,OAAA9B,GACAmQ,EAAAjY,KAAAuJ,QAAA,IAAAzB,CAGAwF,OADArH,KAAA+R,EACA,QAGAA,EAAAE,QAAAlY,KAAA+X,QAAA,SAAAI,EAAAvX,GACA,GAAAlF,GAAAgV,EAAA9P,EACA,YAAAqF,KAAAvK,OAAA,IAAAkF,EAAA,OAIA0M,EAAAtN,KAAAuH,YAAA,KAAA+F,EAAA,KAAA2K,EAAA,IACA,IAAA1c,GAAA,GAAA0B,GAAAgb,EAAA3K,EAGA,QAAA+J,KAAA3G,GACAA,EAAAvW,eAAAkd,IAAA,MAAAA,EAAArE,OAAA,KAGAzX,EAAA8b,GAAA3G,EAAA2G,GAEA,OAAA9b,IAEAyB,IAEA9D,GAAA8D,gBxBmlFM,SAAU7D,EAAQD,EAASH,GAEjC,YyBrpFAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAI,GAAA/C,EAAA,IACAoE,EAAApE,EAAA,GAWAG,GAAAqE,OAAA,SAAA6a,GACA,GAAAC,MAAmBC,KAAa5H,KAAW6H,EAAA,EAC3C,KACA,GAAAC,GAAAJ,EAAAK,MAAA,IACAJ,GAAAlb,EAAAC,SAAAtB,EAAAE,aAAAwc,EAAA,SACAF,EAAAnb,EAAAC,SAAAtB,EAAAE,aAAAwc,EAAA,SACAD,EAAAC,EAAA,GACA9H,EAAA4H,EAAA,YACAA,GAAA,EAEA,MAAAjY,IACA,OACAgY,SACAC,SACA5H,OACA6H,cAcArf,EAAAyE,iBAAA,SAAAya,GACA,GAAAM,GAAAC,EAAAL,EAAApf,EAAAqE,OAAA6a,GAAAE,OAAAM,EAAAnD,KAAAoD,OAAA,GAAA3B,OAAAE,UAAA,IAgBA,OAfA,gBAAAkB,KACAA,EAAAne,eAAA,OACAue,EAAAJ,EAAA,IAEAA,EAAAne,eAAA,SACAue,EAAAJ,EAAA,KAGAK,EADAL,EAAAne,eAAA,OACAme,EAAA,IAIAI,EAAA,OAGAE,GAAAF,GAAAC,GAAAC,GAAAF,GAAAE,GAAAD,GAYAzf,EAAAuE,aAAA,SAAA2a,GACA,GAAAE,GAAApf,EAAAqE,OAAA6a,GAAAE,MACA,uBAAAA,MAAAne,eAAA,OACAme,EAAA,IAEA,MAaApf,EAAAwE,cAAA,SAAA0a,GACA,GAAAU,GAAA5f,EAAAqE,OAAA6a,GAAAE,EAAAQ,EAAAR,MACA,SAAAQ,EAAAP,aACAD,GACA,gBAAAA,IACAA,EAAAne,eAAA,QAYAjB,EAAAsE,QAAA,SAAA4a,GACA,GAAAE,GAAApf,EAAAqE,OAAA6a,GAAAE,MACA,uBAAAA,KAAA,IAAAA,EAAA,QzB8qFM,SAAUnf,EAAQD,EAASH,GAEjC,Y0B5xFAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAkC,GAAA7E,EAAA,GASAG,GAAA0F,YAAA,SAAAma,GACA,GAAAC,KAWA,OAVApb,GAAAO,QAAA4a,EAAA,SAAAnY,EAAAlF,GACA6J,MAAAsJ,QAAAnT,GACAA,EAAAyC,QAAA,SAAA8a,GACAD,EAAAhf,KAAAkf,mBAAAtY,GAAA,IAAAsY,mBAAAD,MAIAD,EAAAhf,KAAAkf,mBAAAtY,GAAA,IAAAsY,mBAAAxd,MAGAsd,EAAAlf,OAAA,IAAAkf,EAAA5K,KAAA,SAQAlV,EAAA2F,kBAAA,SAAAD,GACA,GAAAoJ,KAQA,OAPApJ,GAAAsZ,QAAA,UAAAO,MAAA,KACAta,QAAA,SAAAia,GACA,GAAAA,EAAA,CACA,GAAAxX,GAAAwX,EAAAK,MAAA,IACAzQ,GAAApH,EAAA,IAAAA,EAAA,MAGAoH,I1BqzFM,SAAU7O,EAAQD,EAASH,GAEjC,Y2B91FAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACAqgB,EAAArgB,EAAA,IAyBAgG,EAAA,SAAAsa,GAEA,QAAAta,KACA,GAAAmK,GAAAmQ,EAAA/f,KAAA0G,WAOAkJ,GAAAoQ,KAMApQ,EAAAqQ,KAOArQ,EAAAsQ,KAMAtQ,EAAAuQ,KAIAvQ,EAAAwQ,EAAA,EAIAxQ,EAAAyQ,EAAA,EACAzQ,EAAA0Q,UAAA,GACA1Q,EAAAuQ,EAAA,MACA,QAAArgB,GAAA,EAAuBA,EAAA8P,EAAA0Q,YAAqBxgB,EAC5C8P,EAAAuQ,EAAArgB,GAAA,CAGA,OADA8P,GAAA2Q,QACA3Q,EAkLA,MA7NAiQ,GAAAtZ,UAAAd,EAAAsa,GA6CAta,EAAA7E,UAAA2f,MAAA,WACA7Z,KAAAsZ,EAAA,cACAtZ,KAAAsZ,EAAA,cACAtZ,KAAAsZ,EAAA,cACAtZ,KAAAsZ,EAAA,aACAtZ,KAAAsZ,EAAA,cACAtZ,KAAA0Z,EAAA,EACA1Z,KAAA2Z,EAAA,GAQA5a,EAAA7E,UAAA4f,EAAA,SAAAC,EAAAC,GACAA,IACAA,EAAA,EAEA,IAAAC,GAAAja,KAAAwZ,CAEA,oBAAAO,GACA,OAAA3gB,GAAA,EAA2BA,EAAA,GAAQA,IASnC6gB,EAAA7gB,GACA2gB,EAAAtM,WAAAuM,IAAA,GACAD,EAAAtM,WAAAuM,EAAA,OACAD,EAAAtM,WAAAuM,EAAA,MACAD,EAAAtM,WAAAuM,EAAA,GACAA,GAAA,MAIA,QAAA5gB,GAAA,EAA2BA,EAAA,GAAQA,IACnC6gB,EAAA7gB,GACA2gB,EAAAC,IAAA,GACAD,EAAAC,EAAA,OACAD,EAAAC,EAAA,MACAD,EAAAC,EAAA,GACAA,GAAA,CAIA,QAAA5gB,GAAA,GAAwBA,EAAA,GAAQA,IAAA,CAChC,GAAAkH,GAAA2Z,EAAA7gB,EAAA,GAAA6gB,EAAA7gB,EAAA,GAAA6gB,EAAA7gB,EAAA,IAAA6gB,EAAA7gB,EAAA,GACA6gB,GAAA7gB,GAAA,YAAAkH,GAAA,EAAAA,IAAA,IASA,OAFAwC,GAAAmC,EALAb,EAAApE,KAAAsZ,EAAA,GACAxZ,EAAAE,KAAAsZ,EAAA,GACA9e,EAAAwF,KAAAsZ,EAAA,GACA7e,EAAAuF,KAAAsZ,EAAA,GACAjZ,EAAAL,KAAAsZ,EAAA,GAGAlgB,EAAA,EAAuBA,EAAA,GAAQA,IAAA,CAC/BA,EAAA,GACAA,EAAA,IACA0J,EAAArI,EAAAqF,GAAAtF,EAAAC,GACAwK,EAAA,aAGAnC,EAAAhD,EAAAtF,EAAAC,EACAwK,EAAA,YAIA7L,EAAA,IACA0J,EAAAhD,EAAAtF,EAAAC,GAAAqF,EAAAtF,GACAyK,EAAA,aAGAnC,EAAAhD,EAAAtF,EAAAC,EACAwK,EAAA,WAGA,IAAA3E,IAAA8D,GAAA,EAAAA,IAAA,IAAAtB,EAAAzC,EAAA4E,EAAAgV,EAAA7gB,GAAA,UACAiH,GAAA5F,EACAA,EAAAD,EACAA,EAAA,YAAAsF,GAAA,GAAAA,IAAA,GACAA,EAAAsE,EACAA,EAAA9D,EAEAN,KAAAsZ,EAAA,GAAAtZ,KAAAsZ,EAAA,GAAAlV,EAAA,WACApE,KAAAsZ,EAAA,GAAAtZ,KAAAsZ,EAAA,GAAAxZ,EAAA,WACAE,KAAAsZ,EAAA,GAAAtZ,KAAAsZ,EAAA,GAAA9e,EAAA,WACAwF,KAAAsZ,EAAA,GAAAtZ,KAAAsZ,EAAA,GAAA7e,EAAA,WACAuF,KAAAsZ,EAAA,GAAAtZ,KAAAsZ,EAAA,GAAAjZ,EAAA,YAEAtB,EAAA7E,UAAAggB,OAAA,SAAAvM,EAAAwM,GAEA,SAAAxM,EAAA,KAGA1H,KAAAkU,IACAA,EAAAxM,EAAA7T,OAQA,KANA,GAAAsgB,GAAAD,EAAAna,KAAA4Z,UACA3e,EAAA,EAEA8e,EAAA/Z,KAAAuZ,EACAc,EAAAra,KAAA0Z,EAEAze,EAAAkf,GAAA,CAKA,MAAAE,EACA,KAAApf,GAAAmf,GACApa,KAAA8Z,EAAAnM,EAAA1S,GACAA,GAAA+E,KAAA4Z,SAGA,oBAAAjM,IACA,KAAA1S,EAAAkf,GAIA,GAHAJ,EAAAM,GAAA1M,EAAAF,WAAAxS,KACAof,IACApf,EACAof,GAAAra,KAAA4Z,UAAA,CACA5Z,KAAA8Z,EAAAC,GACAM,EAAA,CAEA,YAKA,MAAApf,EAAAkf,GAIA,GAHAJ,EAAAM,GAAA1M,EAAA1S,KACAof,IACApf,EACAof,GAAAra,KAAA4Z,UAAA,CACA5Z,KAAA8Z,EAAAC,GACAM,EAAA,CAEA,QAKAra,KAAA0Z,EAAAW,EACAra,KAAA2Z,GAAAQ,IAGApb,EAAA7E,UAAAogB,OAAA,WACA,GAAAA,MACAC,EAAA,EAAAva,KAAA2Z,CAEA3Z,MAAA0Z,EAAA,GACA1Z,KAAAka,OAAAla,KAAAyZ,EAAA,GAAAzZ,KAAA0Z,GAGA1Z,KAAAka,OAAAla,KAAAyZ,EAAAzZ,KAAA4Z,WAAA5Z,KAAA0Z,EAAA,IAGA,QAAAtgB,GAAA4G,KAAA4Z,UAAA,EAAwCxgB,GAAA,GAASA,IACjD4G,KAAAuZ,EAAAngB,GAAA,IAAAmhB,EACAA,GAAA,GAEAva,MAAA8Z,EAAA9Z,KAAAuZ,EAEA,QADAte,GAAA,EACA7B,EAAA,EAAuBA,EAAA,EAAOA,IAC9B,OAAAohB,GAAA,GAA4BA,GAAA,EAAQA,GAAA,EACpCF,EAAArf,GAAA+E,KAAAsZ,EAAAlgB,IAAAohB,EAAA,MACAvf,CAGA,OAAAqf,IAEAvb,GACCqa,EAAAqB,KACDvhB,GAAA6F,Q3Bs3FM,SAAU5F,EAAQD,EAASH,GAEjC,Y4BnnGAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GA0B9C,IAAA+e,GAAA,WACA,QAAAA,KAKAza,KAAA4Z,WAAA,EAEA,MAAAa,KAEAvhB,GAAAuhB,Q5B2oGM,SAAUthB,EAAQD,EAASH,GAEjC,Y6BvrGA,SAAAmG,GAAAwb,EAAAC,GACA,GAAAC,GAAA,GAAAC,GAAAH,EAAAC,EACA,OAAAC,GAAAE,UAAA3T,KAAAyT,GA0KA,QAAA3b,GAAA0R,EAAAoK,GACA,kBAEA,OADA/T,MACAC,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CD,EAAAC,GAAAnG,UAAAmG,EAEAlF,SAAAC,SAAA,GACAO,KAAA,WACAoO,EAAAnO,UAAA,GAAAwE,KAEAuQ,MAAA,SAAA9b,GACAsf,GACAA,EAAAtf,MASA,QAAAuf,GAAAhT,EAAAiT,GACA,mBAAAjT,IAAA,OAAAA,EACA,QAEA,QAAAf,GAAA,EAAAiU,EAAAD,EAAyChU,EAAAiU,EAAAphB,OAAuBmN,IAAA,CAChE,GAAAkU,GAAAD,EAAAjU,EACA,IAAAkU,IAAAnT,IAAA,kBAAAA,GAAAmT,GACA,SAGA,SAEA,QAAAtP,MAtNA5R,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAa9CxC,EAAAgG,iBAKA,IAAA2b,GAAA,WAMA,QAAAA,GAAAH,EAAAC,GACA,GAAAzR,GAAAlJ,IACAA,MAAAob,aACApb,KAAAqb,gBACArb,KAAAsb,cAAA,EAEAtb,KAAAwU,KAAAzS,QAAAC,UACAhC,KAAAub,WAAA,EACAvb,KAAA2a,gBAIA3a,KAAAwU,KACAjS,KAAA,WACAmY,EAAAxR,KAEAqO,MAAA,SAAAlX,GACA6I,EAAAzN,MAAA4E,KAyIA,MAtIAwa,GAAA3gB,UAAAkI,KAAA,SAAA1G,GACAsE,KAAAwb,gBAAA,SAAAC,GACAA,EAAArZ,KAAA1G,MAGAmf,EAAA3gB,UAAAuB,MAAA,SAAAA,GACAuE,KAAAwb,gBAAA,SAAAC,GACAA,EAAAhgB,WAEAuE,KAAA2T,MAAAlY,IAEAof,EAAA3gB,UAAAwhB,SAAA,WACA1b,KAAAwb,gBAAA,SAAAC,GACAA,EAAAC,aAEA1b,KAAA2T,SAQAkH,EAAA3gB,UAAA4gB,UAAA,SAAAa,EAAAlgB,EAAAigB,GACA,GACAD,GADAvS,EAAAlJ,IAEA,QAAAiG,KAAA0V,OACA1V,KAAAxK,OACAwK,KAAAyV,EACA,KAAAjR,OAAA,oBAIAgR,GADAT,EAAAW,GAAA,4BACAA,GAIAvZ,KAAAuZ,EACAlgB,QACAigB,gBAGAzV,KAAAwV,EAAArZ,OACAqZ,EAAArZ,KAAAyJ,OAEA5F,KAAAwV,EAAAhgB,QACAggB,EAAAhgB,MAAAoQ,OAEA5F,KAAAwV,EAAAC,WACAD,EAAAC,SAAA7P,EAEA,IAAA+P,GAAA5b,KAAA6b,eAAA1U,KAAAnH,UAAAob,UAAAthB,OAqBA,OAjBAkG,MAAAub,WACAvb,KAAAwU,KAAAjS,KAAA,WACA,IACA2G,EAAA4S,WACAL,EAAAhgB,MAAAyN,EAAA4S,YAGAL,EAAAC,WAGA,MAAArb,OAMAL,KAAAob,UAAAphB,KAAAyhB,GACAG,GAIAf,EAAA3gB,UAAA2hB,eAAA,SAAAziB,OACA6M,KAAAjG,KAAAob,eAAAnV,KAAAjG,KAAAob,UAAAhiB,WAGA4G,MAAAob,UAAAhiB,GACA4G,KAAAsb,eAAA,EACA,IAAAtb,KAAAsb,mBAAArV,KAAAjG,KAAA2a,eACA3a,KAAA2a,cAAA3a,QAGA6a,EAAA3gB,UAAAshB,gBAAA,SAAA7K,GACA,IAAA3Q,KAAAub,UAMA,OAAAniB,GAAA,EAAuBA,EAAA4G,KAAAob,UAAAthB,OAA2BV,IAClD4G,KAAA+b,QAAA3iB,EAAAuX,IAMAkK,EAAA3gB,UAAA6hB,QAAA,SAAA3iB,EAAAuX,GACA,GAAAzH,GAAAlJ,IAEAA,MAAAwU,KAAAjS,KAAA,WACA,OAAA0D,KAAAiD,EAAAkS,eAAAnV,KAAAiD,EAAAkS,UAAAhiB,GACA,IACAuX,EAAAzH,EAAAkS,UAAAhiB,IAEA,MAAAiH,GAIA,mBAAA7E,kBAAAC,OACAD,QAAAC,MAAA4E,OAMAwa,EAAA3gB,UAAAyZ,MAAA,SAAApY,GACA,GAAA2N,GAAAlJ,IACAA,MAAAub,YAGAvb,KAAAub,WAAA,MACAtV,KAAA1K,IACAyE,KAAA8b,WAAAvgB,GAGAyE,KAAAwU,KAAAjS,KAAA,WACA2G,EAAAkS,cAAAnV,GACAiD,EAAAyR,kBAAA1U,OAGA4U,IAoBA3hB,GAAA+F,S7B2tGM,SAAU9F,EAAQD,EAASH,GAEjC,Y8B/2GA,SAAAqG,GAAA4c,EAAAC,EAAAC,GACA,GAAAC,GAAA,EACA,QAAAF,GACA,OACAE,EAAAD,EAAA,eACA,MACA,QACAC,EAAAD,EAAA,iBACA,MACA,QACAC,EAAAD,EAAA,eACA,MACA,QACAC,EAAAD,EAAA,iBACA,MACA,SACA,KAAAzR,OAAA,mEAEA,GAAAhP,GAAAugB,EAAA,WAEA,OADAvgB,IAAA0gB,EAAA,aAUA,QAAA3c,GAAAwc,EAAAC,EAAA9V,EAAA+V,GACA,KAAAA,GAAA/V,IAEA,gBAAAA,GAEA,KAAAsE,OAAArL,EAAA4c,EAAAC,EAAAC,GACA,uCAIA,QAAA5c,GAAA0c,EAAAC,EAAAtT,EAAAuT,GACA,KAAAA,GAAAvT,IAEA,kBAAAA,GACA,KAAA8B,OAAArL,EAAA4c,EAAAC,EAAAC,GACA,6BAGA,QAAA3c,GAAAyc,EAAAC,EAAAG,EAAAF,GACA,KAAAA,GAAAE,KAEA,gBAAAA,IAAA,OAAAA,GACA,KAAA3R,OAAArL,EAAA4c,EAAAC,EAAAC,GACA,mCAzFAjiB,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAU9CxC,EAAAmG,iBAAA,SAAA2c,EAAAK,EAAAC,EAAAC,GACA,GAAAC,EAOA,IANAD,EAAAF,EACAG,EAAA,YAAAH,EAEAE,EAAAD,IACAE,EAAA,IAAAF,EAAA,uBAAAA,GAEAE,EAAA,CACA,GAAA/gB,GAAAugB,EACA,4BACAO,GACA,IAAAA,EAAA,4BACA,YACAC,EACA,GACA,MAAA/R,OAAAhP,KAiCAvC,EAAAkG,cAgBAlG,EAAAsG,oBAQAtG,EAAAoG,mBAQApG,EAAAqG,yB9B46GM,SAAUpG,EAAQD,EAASH,GAEjC,Y+BzgHAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAC,GAAA5C,EAAA,GAcAG,GAAAyG,kBAAA,SAAA4N,GAEA,OADAC,MAAAnS,EAAA,EACAjC,EAAA,EAAmBA,EAAAmU,EAAAzT,OAAgBV,IAAA,CACnC,GAAAoB,GAAA+S,EAAAE,WAAArU,EAEA,IAAAoB,GAAA,OAAAA,GAAA,OACA,GAAAiiB,GAAAjiB,EAAA,KACApB,KACAuC,EAAAC,OAAAxC,EAAAmU,EAAAzT,OAAA,2CAEAU,EAAA,OAAAiiB,GAAA,KADAlP,EAAAE,WAAArU,GAAA,OAGAoB,EAAA,IACAgT,EAAAnS,KAAAb,EAEAA,EAAA,MACAgT,EAAAnS,KAAAb,GAAA,MACAgT,EAAAnS,KAAA,GAAAb,EAAA,KAEAA,EAAA,OACAgT,EAAAnS,KAAAb,GAAA,OACAgT,EAAAnS,KAAAb,GAAA,SACAgT,EAAAnS,KAAA,GAAAb,EAAA,MAGAgT,EAAAnS,KAAAb,GAAA,OACAgT,EAAAnS,KAAAb,GAAA,UACAgT,EAAAnS,KAAAb,GAAA,SACAgT,EAAAnS,KAAA,GAAAb,EAAA,KAGA,MAAAgT,IAOAtU,EAAAwG,aAAA,SAAA6N,GAEA,OADAlS,GAAA,EACAjC,EAAA,EAAmBA,EAAAmU,EAAAzT,OAAgBV,IAAA,CACnC,GAAAoB,GAAA+S,EAAAE,WAAArU,EACAoB,GAAA,IACAa,IAEAb,EAAA,KACAa,GAAA,EAEAb,GAAA,OAAAA,GAAA,OAEAa,GAAA,EACAjC,KAGAiC,GAAA,EAGA,MAAAA,U/BkiHa6J;;;;;;;AgCrnHb,IACQwX,sBAAsB,IAExBC,GACA,SAAUxjB,EAAQD,EAASH,GCOjCA,EAAA,KDgBM6jB,GACA,SAAUzjB,EAAQD,EAASH,IEjCjC,SAAAsY,IAAA,WAEyB,QAAAhY,GAAA+K,GAAc,sBAAAA,GAAyB,QAAAyY,GAAAzY,GAAe,uBAAAA,GAA0B,QAAA0Y,MACzG,QAAAC,GAAA3Y,GAAe,GAAAtE,SAAAsE,EAAe,cAAAtE,EAAA,KAAAsE,EAAye,YAApd,IAAAA,YAAAmB,OAAA,aAAoC,IAAAnB,YAAAnK,QAAA,MAAA6F,EAAgC,IAAAtF,GAAAP,OAAAC,UAAAgb,SAAA5b,KAAA8K,EAAwC,uBAAA5J,EAAA,cAAuC,sBAAAA,GAAA,gBAAA4J,GAAAtK,YAAA,KAAAsK,EAAA4Y,YAAA,KAAA5Y,EAAA6Y,uBAAA7Y,EAAA6Y,qBAAA,uBAA6K,yBAAAziB,OAAA,KAAA4J,EAAA9K,UAAA,KAAA8K,EAAA6Y,uBAAA7Y,EAAA6Y,qBAAA,6BACnX,gBAAAnd,OAAA,KAAAsE,EAAA9K,KAAA,cAAiE,OAAAwG,GAAS,QAAAod,GAAA9Y,GAAe,cAAAA,EAAgB,QAAA+Y,GAAA/Y,GAAe,eAAA2Y,EAAA3Y,GAAqB,QAAAgZ,GAAAhZ,GAAe,GAAAtE,GAAAid,EAAA3Y,EAAY,gBAAAtE,GAAA,UAAAA,GAAA,gBAAAsE,GAAAtK,OAAyD,QAAAmB,GAAAmJ,GAAc,kBAAA2Y,EAAA3Y,GAAwB,QAAAC,GAAAD,GAAc,GAAAtE,SAAAsE,EAAe,iBAAAtE,GAAA,MAAAsE,GAAA,YAAAtE,EAA6F,QAAAud,GAAAjZ,EAAAtE,EAAAtF,GAAmB,MAAA4J,GAAA9K,KAAAkJ,MAAA4B,EAAA+C,KAAArG,WACpZ,QAAAwc,GAAAlZ,EAAAtE,EAAAtF,GAAmB,IAAA4J,EAAA,KAAAqG,QAAoB,MAAA3J,UAAAhH,OAAA,CAAuB,GAAAW,GAAA8K,MAAArL,UAAA8Y,MAAA1Z,KAAAwH,UAAA,EAA8C,mBAAkB,GAAAtG,GAAA+K,MAAArL,UAAA8Y,MAAA1Z,KAAAwH,UAA+E,OAAnCyE,OAAArL,UAAAqjB,QAAA/a,MAAAhI,EAAAC,GAAmC2J,EAAA5B,MAAA1C,EAAAtF,IAAqB,kBAAkB,MAAA4J,GAAA5B,MAAA1C,EAAAgB,YAA6B,QAAAC,GAAAqD,EAAAtE,EAAAtF,GAAmH,MAAjGuG,GAAAqJ,SAAAlQ,UAAAiN,OAAA,IAAAiD,YAAAlQ,UAAAiN,MAAA5G,QAAA,eAAA8c,EAAAC,EAAiGvc,EAAAyB,MAAA,KAAA1B,WACpY,QAAA0c,GAAApZ,EAAAtE,GAAiB,GAAAtF,GAAA+K,MAAArL,UAAA8Y,MAAA1Z,KAAAwH,UAAA,EAA8C,mBAAkB,GAAAhB,GAAAtF,EAAAwY,OAA0C,OAA1BlT,GAAA9F,KAAAwI,MAAA1C,EAAAgB,WAA0BsD,EAAA5B,MAAAxC,KAAAF,IAAqE,QAAAQ,GAAA8D,EAAAtE,GAAgB,QAAAtF,MAAcA,EAAAN,UAAA4F,EAAA5F,UAAwBkK,EAAAqZ,GAAA3d,EAAA5F,UAAiBkK,EAAAlK,UAAA,GAAAM,GAAkB4J,EAAAlK,UAAA+F,YAAAmE,EAA0BA,EAAAsZ,GAAA,SAAAtZ,EAAA5J,EAAAsI,GAAqB,OAAArI,GAAA8K,MAAAzE,UAAAhH,OAAA,GAAAuG,EAAA,EAAwCA,EAAAS,UAAAhH,OAAmBuG,IAAA5F,EAAA4F,EAAA,GAAAS,UAAAT,EAAwB,OAAAP,GAAA5F,UAAAM,GAAAgI,MAAA4B,EAAA3J,IAAmC,QAAAkjB,GAAAvZ,GAAeA,EAAAlK,UAAAqI,KAAA6B,EAAAlK,UAAAqI,KAAkC6B,EAAAlK,UAAA0jB,gBAAA,EAA8B,QAAAC,GAAAzZ,GAAe,IAAAA,EAAA,QAAe,KAAI,QAAAA,EAAAwZ,eAAyB,MAAA9d,GAAS,UAAW,QAAAqO,GAAA/J,GAAc,GAAAqG,MAAAkN,kBAAAlN,MAAAkN,kBAAA3X,KAAAmO,OAA2D,CAAK,GAAArO,GAAA2K,QAAAqN,KAAoBhY,KAAAE,KAAA8X,MAAAhY,GAAkBsE,IAAApE,KAAAsN,QAAAlJ,EAAA0J,IAAsE,QAAAgQ,GAAA1Z,EAAAtE,GAAiBsE,IAAAqU,MAAA,KAAgB,QAAAje,GAAA,GAAAC,EAAA2J,EAAAtK,OAAA,EAAAuG,EAAA,EAA8BA,EAAA5F,EAAI4F,IAAA7F,GAAA4J,EAAA/D,MAAAP,EAAAhG,OAAAgG,EAAAO,GAAA,KAAmC8N,GAAA7U,KAAA0G,KAAAxF,EAAA4J,EAAA3J,IAA+D,QAAAsjB,GAAA3Z,EAAAtE,GAAiB,SAAAge,GAAA,WAAA1Z,EAAA,KAAAA,EAAA,IAAAmB,MAAArL,UAAA8Y,MAAA1Z,KAAAwH,UAAA,IAAgF,QAAAkd,GAAA5Z,EAAAtE,GAAiBE,KAAAxF,EAAA4J,EAASpE,KAAA8C,EAAAhD,EAASE,KAAAF,EAAA,EAASE,KAAAoE,EAAA,KAA+H,QAAA6Z,GAAA7Z,EAAAtE,GAAiBsE,EAAAtB,EAAAhD,GAAO,IAAAsE,EAAAtE,IAAAsE,EAAAtE,MAAAsC,KAAAgC,QAAAtE,GAAmC,QAAAoe,KAAcle,KAAAF,EAAAE,KAAAoE,EAAA,KAAoL,QAAA+Z,KAAc,GAAA/Z,GAAAga,GAAAte,EAAA,IAAsE,OAAtDsE,OAAAtE,EAAAsE,YAAAhC,KAAAgC,QAAAtE,EAAA,MAAAA,EAAAsC,KAAA,MAAsDtC,EAAS,QAAAue,KAAcre,KAAAoC,KAAApC,KAAAF,EAAAE,KAAAoE,EAAA,KAC/iD,QAAAka,GAAAla,EAAAtE,GAAiB,GAAAtF,GAAA4J,EAAAtK,OAAAW,EAAApB,EAAA+K,KAAAqU,MAAA,IAAArU,CAAoC,OAAA5J,EAAQ,GAAAA,IAAKA,MAAAC,IAAAqF,EAAAxG,SAAA,GAAAmB,EAAAD,KAAA4J,GAElE,QAAAma,GAAAna,GAAeA,EAAA,CAAY,OAATtE,GAAA0e,GAAShkB,EAAA4J,EAAAtK,OAAAW,EAAApB,EAAA+K,KAAAqU,MAAA,IAAArU,EAAA/D,EAAA,EAA4CA,EAAA7F,EAAI6F,IAAA,GAAAA,IAAA5F,IAAAqF,EAAAxG,SAAA,GAAAmB,EAAA4F,KAAA+D,GAAA,CAAwCtE,EAAAO,CAAI,MAAA+D,GAAQtE,GAAA,EAAK,SAAAA,EAAA,KAAAzG,EAAA+K,KAAA+L,OAAArQ,GAAAsE,EAAAtE,GAAsC,QAAA2e,GAAAra,EAAAtE,GAAiB,UAAA4e,GAAAta,EAAAtE,GAAkB,QAAA6e,GAAAva,EAAAtE,GAAiBA,EAAA4e,GAAAta,EAAAtE,EAAU,IAAAtF,EAAmD,QAA7CA,EAAA,GAAAsF,IAAAyF,MAAArL,UAAA8iB,OAAA1jB,KAAA8K,EAAAtE,EAAA,GAA6CtF,EAAS,QAAAokB,GAAAxa,EAAAtE,GAAiB,GAAAtF,GAAA,CAAQ8jB,GAAAla,EAAA,SAAA3J,EAAA4F,GAAmBP,EAAAxG,SAAA,GAAAmB,EAAA4F,EAAA+D,IAAA,GAAAmB,MAAArL,UAAA8iB,OAAA1jB,KAAA8K,EAAA/D,EAAA,GAAAvG,QAAAU,MAA0E,QAAAqkB,GAAAza,GAAe,MAAAmB,OAAArL,UAAA+J,OAAAzB,SAAA1B,WACza,QAAAge,GAAA1a,GAAe,GAAAtE,GAAAsE,EAAAtK,MAAe,MAAAgG,EAAA,CAAQ,OAAAtF,GAAA+K,MAAAzF,GAAArF,EAAA,EAAuBA,EAAAqF,EAAIrF,IAAAD,EAAAC,GAAA2J,EAAA3J,EAAc,OAAAD,GAAS,SAAU,QAAAukB,GAAA3a,EAAAtE,GAAiB,OAAAtF,GAAA4J,EAAAqU,MAAA,MAAAhe,EAAA,GAAA4F,EAAAkF,MAAArL,UAAA8Y,MAAA1Z,KAAAwH,UAAA,GAAuET,EAAAvG,QAAA,EAAAU,EAAAV,QAAqBW,GAAAD,EAAAJ,QAAAiG,EAAAjG,OAAwB,OAAAK,GAAAD,EAAA4T,KAAA,MACvO,QAAA4Q,GAAA5a,GAAe,MAAA6a,IAAAxH,KAAArT,KAAwB,GAAAA,EAAA7D,QAAA,OAAA6D,IAAA8T,QAAAgH,GAAA,WAA8C,GAAA9a,EAAA7D,QAAA,OAAA6D,IAAA8T,QAAAiH,GAAA,UAA6C,GAAA/a,EAAA7D,QAAA,OAAA6D,IAAA8T,QAAAkH,GAAA,UAA6C,GAAAhb,EAAA7D,QAAA,OAAA6D,IAAA8T,QAAAmH,GAAA,YAA+C,GAAAjb,EAAA7D,QAAA,OAAA6D,IAAA8T,QAAAoH,GAAA,WAA8C,GAAAlb,EAAA7D,QAAA,QAAA6D,IAAA8T,QAAAqH,GAAA,SAAgDnb,GAA7SA,EAA8X,QAAAob,GAAApb,EAAAtE,GAAgB,UAAAsE,EAAA7D,QAAAT,GAAuB,QAAA2f,GAAArb,EAAAtE,GAAiB,MAAAsE,GAAAtE,GAAA,EAAAsE,EAAAtE,EAAA,IAA2G,QAAA4f,GAAAtb,GAAc,MAAAob,GAAAG,GAAAvb,GAAgB,QAAAwb,GAAAxb,EAAAtE,GAAiB,OAAAtF,KAAA4J,GAAAtE,EAAAxG,SAAA,GAAA8K,EAAA5J,KAAA4J,GAAuC,QAAAyb,GAAAzb,GAAe,OAAAtE,KAAAsE,GAAA,QAAwB,UAAS,QAAA0b,GAAA1b,GAAe,GAAQ5J,GAARsF,IAAW,KAAAtF,IAAA4J,GAAAtE,EAAAtF,GAAA4J,EAAA5J,EAAqB,OAAAsF,GAA2H,QAAAigB,GAAA3b,EAAAtE,GAAiB,OAAAtF,GAAAC,EAAA4F,EAAA,EAAgBA,EAAAS,UAAAhH,OAAmBuG,IAAA,CAAK5F,EAAAqG,UAAAT,EAAe,KAAA7F,IAAAC,GAAA2J,EAAA5J,GAAAC,EAAAD,EAAqB,QAAAsI,GAAA,EAAYA,EAAAkd,GAAAlmB,OAAYgJ,IAAAtI,EAAAwlB,GAAAld,GAAA7I,OAAAC,UAAAC,eAAAb,KAAAmB,EAAAD,KAAA4J,EAAA5J,GAAAC,EAAAD,KAAqE,QAAAwX,GAAA5N,GAAea,GAAA2D,WAAA,WAAwB,KAAAxE,IAAS,GAC1kC,QAAA6b,KAAc,GAAA7b,GAAAa,GAAA+Q,cAC6H,QADtG,KAAA5R,GAAA,mBAAAxL,gBAAAuc,aAAAvc,OAAAkd,mBAAA4J,EAAA,YAAAtb,EAAA,WAA8H,GAAAA,GAAA2Q,SAAAqB,cAAA,SAAuChS,GAAA8b,MAAAC,QAAA,OAAuB/b,EAAAgc,IAAA,GAASrL,SAAAuB,gBAAAI,YAAAtS,EAAwC,IAAAtE,GAAAsE,EAAAic,aAAsBjc,GAAAtE,EAAAiV,SAAa3Q,EAAAkc,OAASlc,EAAAmc,MAAA,IAAYnc,EAAAuP,OAAU,IAAAnZ,GAAA,gBAAAib,KAAAC,SAAAjb,EAAA,SAAAqF,EAAA0gB,SAAAC,SAAA,IAAA3gB,EAAA0gB,SAAAC,SAAA,KAAA3gB,EAAA0gB,SAAAE,IAAgHtc,GAAArD,EAAA,SAAAqD,GAAgB,KAAA3J,GAAA2J,EAAAuc,QAAAlmB,GAAA2J,EAAAsM,MACpdlW,GAAAwF,KAAAkW,MAAAX,aAAyBvV,MAAOF,EAAAgW,iBAAA,UAAA1R,GAAA,GAAmCpE,KAAAkW,SAAclW,KAAAmW,OAAYhB,YAAA,WAAuBrV,EAAAqV,YAAA3a,EAAAC,WAAuB,KAAA2J,IAAAsb,EAAA,aAAAA,EAAA,SAAsD,GAAA5f,GAAA,GAAAsE,GAAA5J,KAAgBC,EAAAD,CAA0F,OAArFsF,GAAAoW,MAAAX,UAAA,WAA6B,YAAA/a,EAAA4H,KAAA,CAAoB5H,IAAA4H,IAAS,IAAAgC,GAAA5J,EAAAomB,EAAWpmB,GAAAomB,GAAA,KAAUxc,MAAM,SAAAA,GAAmB3J,EAAA2H,MAAQwe,GAAAxc,GAAM3J,IAAA2H,KAAStC,EAAAqW,MAAAhB,YAAA,IAAwB,yBAAAJ,WAAA,sBAAAA,UAAAqB,cAAA,mBAAAhS,GAAyG,GAAAtE,GAAAiV,SAAAqB,cAAA,SACtdtW,GAAA0W,mBAAA,WAAgC1W,EAAA0W,mBAAA,KAA0B1W,EAAA+gB,WAAApK,YAAA3W,GAA4BA,EAAA,KAAOsE,IAAIA,EAAA,MAAQ2Q,SAAAuB,gBAAAI,YAAA5W,IAAwC,SAAAsE,GAAaa,GAAA2D,WAAAxE,EAAA,IAAoB,QAAA0c,GAAA1c,EAAAtE,GAAiBihB,IAAAC,IAASC,KAAAF,KAAAE,IAAA,GAAiB7C,GAAA8C,IAAA9c,EAAAtE,GAAmB,QAAAkhB,KAAc,QAAA/b,GAAAlD,QAAA+L,IAAAvN,QAAA,kBAAmD,GAAA6D,GAAAa,GAAAlD,QAAAC,YAAA,GAAgC+e,IAAA,WAAc3c,EAAA7B,KAAA4e,QAAYJ,IAAA,WAAmB,GAAA3c,GAAA+c,GAASlmB,EAAAgK,GAAAsM,eAAAtM,GAAAmc,QAAAnc,GAAAmc,OAAAlnB,YAAAwlB,EAAA,SAAAza,GAAAmc,OAAAlnB,UAAAqX,cAAAtM,GAAAsM,cAAA8P,QAAApB,KAAAoB,GAAAjd,IAAAa,GAAAsM,aAAAnN,IAA2K,QAAA+c,KAAc,OAAA/c,GAAUA,EAAA+Z,KAAO,CAAE,IAAI/Z,IAAA9K,KAAA8K,EAAAtE,GAAc,MAAAA,GAASkS,EAAAlS,GAAMme,EAAAqD,GAAAld,GAAS6c,IAAA,EAAO,QAAAhe,GAAAmB,EAAAtE,GAAmF,GAAnEE,KAAAoE,EAAAmd,GAAUvhB,KAAA5G,MAAA,GAAc4G,KAAA8C,EAAA9C,KAAAF,EAAAE,KAAAxF,EAAA,KAA0BwF,KAAAsD,EAAAtD,KAAAwhB,GAAA,EAAiBpd,GAAA0Y,EAAA,IAAa,GAAAtiB,GAAAwF,IAAWoE,GAAA9K,KAAAwG,EAAA,SAAAsE,GAAqBqZ,GAAAjjB,EAAAinB,GAAArd,IAAW,SAAAA,GAAa,KAAAA,YAAAsd,KAAA,IAA0B,GAAAtd,YAAAqG,OAAA,KAAArG,EAA8B,MAAAqG,OAAA,qBAAkC,MAAApK,IAAUod,GAAAjjB,EAAAmnB,GAAAvd,KAAa,MAAA3J,GAASgjB,GAAAzd,KAAA2hB,GAAAlnB,IAAkC,QAAAmnB,KAAc5hB,KAAAoC,KAAApC,KAAA8C,EAAA9C,KAAAF,EAAAE,KAAAsD,EAAAtD,KAAAoE,EAAA,KAA2CpE,KAAAxF,GAAA,EACj/B,QAAAomB,GAAAxc,EAAAtE,EAAAtF,GAAmB,GAAAC,GAAAonB,GAAA7mB,KAAiC,OAAlBP,GAAA6I,EAAAc,EAAM3J,EAAAqF,IAAMrF,EAAAqI,EAAAtI,EAAMC,EAAS,QAAAqnB,GAAA1d,GAAc,GAAAA,YAAAnB,GAAA,MAAAmB,EAA2B,IAAAtE,GAAA,GAAAmD,GAAA6Z,EAA2B,OAAXW,IAAA3d,EAAA2hB,GAAArd,GAAWtE,EAAS,QAAAiiB,GAAA3d,GAAc,UAAAnB,GAAA,SAAAnD,EAAAtF,GAA2BA,EAAA4J,KAAO,QAAA4d,GAAA5d,EAAAtE,EAAAtF,GAAmBynB,GAAA7d,EAAAtE,EAAAtF,EAAA,OAAAsmB,EAAAtD,EAAA1d,EAAAsE,IAA4B,QAAA8d,GAAA9d,GAAe,UAAAnB,GAAA,SAAAnD,EAAAtF,GAA2B,GAAAC,GAAA2J,EAAAtK,OAAAuG,IAAoB,IAAA5F,EAAA,OAAuEY,GAAvEyH,EAAA,SAAAsB,EAAA5J,GAA6BC,IAAI4F,EAAA+D,GAAA5J,EAAO,GAAAC,GAAAqF,EAAAO,IAAWmhB,EAAA,SAAApd,GAAe5J,EAAA4J,IAAK7J,EAAA,EAAOA,EAAA6J,EAAAtK,OAAWS,IAAAc,EAAA+I,EAAA7J,GAAAynB,EAAA3mB,EAAAmiB,EAAA1a,EAAAvI,GAAAinB,OAA2B1hB,GAAAO,KAC3Z,QAAA8hB,GAAA/d,GAAe,UAAAnB,GAAA,SAAAnD,GAAyB,GAAAtF,GAAA4J,EAAAtK,OAAAW,IAAoB,IAAAD,EAAA,OAAsFgnB,GAAtFnhB,EAAA,SAAA+D,EAAA/D,EAAAyC,GAA+BtI,IAAIC,EAAA2J,GAAA/D,GAAQ+hB,IAAA,EAAA1mB,MAAAoH,IAAgBsf,IAAA,EAAA3P,OAAA3P,GAAgB,GAAAtI,GAAAsF,EAAArF,IAAWqI,EAAA,EAAOA,EAAAsB,EAAAtK,OAAWgJ,IAAA0e,EAAApd,EAAAtB,GAAAkf,EAAAR,EAAAhE,EAAAnd,EAAAyC,GAAA,GAAA0a,EAAAnd,EAAAyC,GAAA,QAAuChD,GAAArF,KAC3M,QAAA4nB,IAAAje,EAAAtE,GAAiB,GAAAsE,KAAAmd,GAAA,GAAAnd,EAAA5J,EAAA,CAAmB,GAAAA,GAAA4J,EAAA5J,CAAU,IAAAA,EAAAsF,EAAA,CAAQ,OAAArF,GAAA,EAAA4F,EAAA,KAAAyC,EAAA,KAAA0e,EAAAhnB,EAAAsF,EAAgC0hB,MAAAhnB,IAAAC,IAAA+mB,EAAApd,OAAA/D,EAAAmhB,KAAAnhB,GAAA,EAAA5F,KAAwC+mB,IAAApf,KAAA/B,IAAAyC,EAAA0e,EAAkBnhB,KAAA7F,EAAA4J,GAAAmd,IAAA,GAAA9mB,EAAA4nB,GAAA7nB,EAAAsF,IAAAgD,GAAArI,EAAAqI,EAAArI,EAAA2H,MAAA5H,EAAAsI,IAAAtI,EAAAsI,EAAArI,KAAA2H,KAAA3H,EAAA2H,WAAAkgB,GAAA9nB,GAAA+nB,GAAA/nB,EAAA6F,EAAAshB,GAAA7hB,KAAgGsE,EAAA5J,EAAA,SAASijB,IAAArZ,EAAAud,GAAA7hB,GAAgB,QAAA0iB,IAAApe,EAAAtE,GAAiBsE,EAAAtE,GAAAsE,KAAAqd,IAAArd,KAAAud,IAAAc,GAAAre,GAA6BA,EAAAtB,EAAAsB,EAAAtB,EAAAV,KAAAtC,EAAAsE,EAAAtE,IAAqBsE,EAAAtB,EAAAhD,EAC5U,QAAA4iB,IAAAte,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAA4F,GAAAugB,EAAA,eAAkO,OAAzMvgB,GAAA+D,EAAA,GAAAnB,GAAA,SAAAmB,EAAAod,GAAwBnhB,EAAAiD,EAAAxD,EAAA,SAAAtF,GAAkB,IAAI,GAAA6F,GAAAP,EAAAxG,KAAAmB,EAAAD,EAAkB4J,GAAA/D,GAAK,MAAAsiB,GAASnB,EAAAmB,KAAMve,EAAG/D,EAAAP,EAAAtF,EAAA,SAAAsF,GAAkB,IAAI,GAAAO,GAAA7F,EAAAlB,KAAAmB,EAAAqF,OAAkB,KAAAO,GAAAP,YAAA4hB,IAAAF,EAAA1hB,GAAAsE,EAAA/D,GAAsC,MAAAsiB,GAASnB,EAAAmB,KAAMnB,IAAKnhB,EAAA+D,EAAA5J,EAAA4J,EAAQoe,GAAApe,EAAA/D,GAAQA,EAAA+D,EACvP,QAAAqZ,IAAArZ,EAAAtE,EAAAtF,GAAmB4J,KAAAmd,KAAAnd,IAAA5J,IAAAsF,EAAA6hB,GAAAnnB,EAAA,GAAAuI,WAAA,qCAAAqB,IAAA,EAAA6d,GAAAznB,EAAA4J,EAAAwe,GAAAxe,EAAAye,GAAAze,OAAAhL,EAAAoB,EAAA4J,IAAAtE,EAAAsE,EAAA5J,EAAA,KAAAioB,GAAAre,GAAAtE,GAAA6hB,IAAAnnB,YAAAknB,KAAAoB,GAAA1e,EAAA5J,KAAmK,QAAAynB,IAAA7d,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAA2J,YAAAnB,GAAA,MAAAuf,IAAApe,EAAAwc,EAAA9gB,GAAAgd,EAAAtiB,GAAA,KAAAC,KAAA,CAAsD,IAAAojB,EAAAzZ,GAAA,MAAAA,GAAA7B,KAAAzC,EAAAtF,EAAAC,IAAA,CAAiC,IAAA4J,EAAAD,GAAA,IAAY,GAAA/D,GAAA+D,EAAA7B,IAAa,IAAAtH,EAAAoF,GAAA,MAAA0iB,IAAA3e,EAAA/D,EAAAP,EAAAtF,EAAAC,IAAA,EAAgC,MAAAqI,GAAS,MAAAtI,GAAAlB,KAAAmB,EAAAqI,IAAA,EAAsB,SAC1X,QAAAigB,IAAA3e,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB,QAAAyC,GAAAsB,GAAc7J,OAAA,EAAAE,EAAAnB,KAAA+G,EAAA+D,IAAsB,QAAAod,GAAApd,GAAc7J,OAAA,EAAAC,EAAAlB,KAAA+G,EAAA+D,IAAsB,GAAA7J,IAAA,CAAS,KAAIuF,EAAAxG,KAAA8K,EAAAod,EAAA1e,GAAc,MAAAzH,GAASyH,EAAAzH,IAAM,QAAAonB,IAAAre,GAAeA,EAAAod,IAAApd,EAAAod,GAAA,EAAAV,EAAA1c,EAAA4e,GAAA5e,IAAyB,QAAAke,IAAAle,GAAe,GAAAtE,GAAA,IAA+D,OAApDsE,GAAAtE,MAAAsE,EAAAtE,EAAAsE,EAAAtE,IAAAsC,KAAAtC,EAAAsC,KAAA,MAAoCgC,EAAAtE,IAAAsE,EAAAtB,EAAA,MAAgBhD,EAC/P,QAAAyiB,IAAAne,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAAD,GAAAmnB,IAAA7hB,QAAAtF,EAAA,KAAyB4J,KAAAd,EAAOc,IAAA5J,EAAA4J,EAAAd,GAAA,CAAa,IAAAxD,EAAAsE,EAAAtE,EAAAsE,EAAA5J,EAAA,KAAAyoB,GAAAnjB,EAAAtF,EAAAC,OAA4B,KAASqF,EAAAtF,EAAAsF,EAAAwD,EAAAhK,KAAAwG,EAAAgD,GAAAmgB,GAAAnjB,EAAAtF,EAAAC,GAA4B,MAAA4F,GAAS6iB,GAAA5pB,KAAA,KAAA+G,GAAgB4d,EAAA4D,GAAA/hB,GAAS,QAAAmjB,IAAA7e,EAAAtE,EAAAtF,GAAmBsF,GAAA2hB,GAAArd,EAAAd,EAAAhK,KAAA8K,EAAAtB,EAAAtI,GAAA4J,EAAAtE,GAAAsE,EAAAtE,EAAAxG,KAAA8K,EAAAtB,EAAAtI,GAA2C,QAAAsoB,IAAA1e,EAAAtE,GAAiBsE,EAAAd,GAAA,EAAOwd,EAAA,WAAc1c,EAAAd,GAAA4f,GAAA5pB,KAAA,KAAAwG,KAAiC,QAAA4hB,IAAAtd,GAAe+J,EAAA7U,KAAA0G,KAAAoE,GAAkD,QAAA+e,MAAc,GAAAC,KAAAC,GAAArjB,KAAAsjB,MAAAtjB,KAAAsjB,MAAAC,KAAAvjB,MAA4CA,KAAA6d,GAAA7d,KAAA6d,GAAgB7d,KAAA2d,GAAA3d,KAAA2d,GAAkD,QAAA6F,IAAApf,GAAe,IAAAA,EAAAyZ,KAAAzZ,EAAAyZ,IAAA,EAAAzZ,EAAA8Z,KAAA,GAAAkF,IAAA,CAAkC,GAAAtjB,GAAAsE,EAAAkf,MAAAlf,EAAAkf,MAAAC,GAA0B,OAAAH,IAAAhf,EAAAuZ,IAAA,EAAAvZ,EAAAuZ,GAAA7jB,OAAA,KAAA2Q,OAAArG,EAAA,6JAAmMif,IAAAvjB,IAA4F,QAAA2jB,IAAArf,GAA0B,MAAXqf,IAAA,KAAArf,GAAWA,EAAoB,QAAAsf,IAAAtf,EAAAtE,GAAiB,GAAAtF,GAAAmpB,EAAS,OAAA1pB,QAAAC,UAAAC,eAAAb,KAAAkB,EAAA4J,GAAA5J,EAAA4J,GAAA5J,EAAA4J,GAAAtE,EAAAsE,GAAkR,QAAAwf,MAAc,GAAAxf,GAAAa,GAAA8P,QAAiB,OAAA3Q,KAAAyf,iBAAA,GAE1sC,QAAAC,IAAA1f,GAAe,MAAAsf,IAAAtf,EAAA,WAAuB,OAAAtE,GAAA,EAAAtF,EAAAupB,GAAAC,GAAAlW,IAAA2K,MAAA,KAAAhe,EAAAspB,GAAA3f,EAAA0J,IAAA2K,MAAA,KAAApY,EAAAoV,KAAAwO,IAAAzpB,EAAAV,OAAAW,EAAAX,QAAAgJ,EAAA,EAAqG,GAAAhD,GAAAgD,EAAAzC,EAAUyC,IAAA,CAAK,GAAA0e,GAAAhnB,EAAAsI,IAAA,GAAAvI,EAAAE,EAAAqI,IAAA,EAA0B,IAAuF,GAApF0e,EAAA,iBAAA0C,KAAA1C,KAAA,aAA0CjnB,EAAA,iBAAA2pB,KAAA3pB,KAAA,aAA0C,GAAAinB,EAAA,GAAA1nB,QAAA,GAAAS,EAAA,GAAAT,OAAA,KAAwCgG,GAAA2f,EAAA,GAAA+B,EAAA,GAAA1nB,OAAA,EAAAqqB,SAAA3C,EAAA,UAAAjnB,EAAA,GAAAT,OAAA,EAAAqqB,SAAA5pB,EAAA,SAAAklB,EAAA,GAAA+B,EAAA,GAAA1nB,OAAA,GAAAS,EAAA,GAAAT,SAAA2lB,EAAA+B,EAAA,GAAAjnB,EAAA,IAA8HinB,IAAA,GAAOjnB,IAAA,SAAO,GAAAuF,GAAY,UAAAA,IACtF,QAAAskB,IAAAhgB,EAAAtE,GAAgBE,KAAAqkB,KAAAjgB,EAAYpE,KAAAF,EAAAE,KAAAW,OAAAb,EAAqBE,KAAAijB,IAAA,EAAgD,QAAAqB,IAAAlgB,EAAAtE,GAA2Q,GAA1PskB,GAAA9qB,KAAA0G,KAAAoE,IAAAigB,KAAA,IAAyBrkB,KAAAukB,cAAAvkB,KAAAF,EAAAE,KAAAW,OAAA,KAA2CX,KAAAwkB,OAAAxkB,KAAAykB,QAAAzkB,KAAA0kB,QAAA1kB,KAAA2kB,QAAA3kB,KAAA4kB,QAAA,EAAkE5kB,KAAAY,IAAA,GAAYZ,KAAA6kB,QAAA7kB,KAAA8kB,SAAA9kB,KAAA+kB,OAAA/kB,KAAAglB,SAAA,EAAuDhlB,KAAAilB,UAAA,EAAiBjlB,KAAAklB,YAAA,GAAoBllB,KAAAoE,EAAA,KAAYA,EAAA,CAAM,GAAA5J,GAAAwF,KAAAqkB,KAAAjgB,EAAAigB,KAAA5pB,EAAA2J,EAAA+gB,eAAA/gB,EAAA+gB,eAAA,OAA+G,IAA5CnlB,KAAAW,OAAAyD,EAAAzD,QAAAyD,EAAAghB,WAAmCplB,KAAAF,IAASA,EAAAsE,EAAAmgB,eAAsB,GAAAc,GAAA,CAAOjhB,EAAA,CAAG,IAAIqf,GAAA3jB,EAAAwlB,SAAe,IAAAjlB,IAAA,CAAS,MAAA+D,GAAQ,MAAAtB,IAAUzC,GAAA,EAAKA,IAAAP,EAAA,WAAa,aAAAtF,EAAAsF,EACt7BsE,EAAAmhB,YAAA,YAAA/qB,IAAAsF,EAAAsE,EAAAohB,UAA6CxlB,MAAAukB,cAAAzkB,EAAqB,OAAArF,GAAAuF,KAAA4kB,YAAA,KAAAxgB,EAAAwgB,QAAAxgB,EAAAwgB,QAAAxgB,EAAAqhB,MAAAzlB,KAAA2kB,YAAA,KAAAvgB,EAAAugB,QAAAvgB,EAAAugB,QAAAvgB,EAAAshB,MAAA1lB,KAAA0kB,QAAAtgB,EAAAsgB,SAAA,EAAA1kB,KAAAykB,QAAArgB,EAAAqgB,SAAA,IAAAzkB,KAAA4kB,YAAA,KAAAnqB,EAAAmqB,QAAAnqB,EAAAmqB,QAAAnqB,EAAAgrB,MAAAzlB,KAAA2kB,YAAA,KAAAlqB,EAAAkqB,QAAAlqB,EAAAkqB,QAAAlqB,EAAAirB,MAAA1lB,KAAA0kB,QAAAjqB,EAAAiqB,SAAA,EAAA1kB,KAAAykB,QAAAhqB,EAAAgqB,SAAA,GAA6TzkB,KAAAwkB,OAAApgB,EAAAogB,OAAqBxkB,KAAAY,IAAAwD,EAAAxD,KAAA,GAAmBZ,KAAAglB,QAAA5gB,EAAA4gB,QAAuBhlB,KAAA+kB,OAAA3gB,EAAA2gB,OAAqB/kB,KAAA8kB,SAAA1gB,EAAA0gB,SAAyB9kB,KAAA6kB,QAC5ezgB,EAAAygB,QAAU7kB,KAAAilB,UAAA7gB,EAAA6gB,WAAA,EAA8BjlB,KAAAklB,YAAA7rB,EAAA+K,EAAA8gB,aAAA9gB,EAAA8gB,YAAAS,GAAAvhB,EAAA8gB,cAAA,GAAsEllB,KAAAoE,IAASA,EAAAwhB,kBAAA5lB,KAAAxF,KAAuX,QAAAqrB,IAAAzhB,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuBL,KAAA+I,SAAA3E,EAAgBpE,KAAA4a,MAAA,KAAgB5a,KAAAogB,IAAAtgB,EAAWE,KAAAqkB,KAAA7pB,EAAYwF,KAAA8lB,UAAArrB,EAAiBuF,KAAA+jB,GAAA1jB,EAAUL,KAAAY,MAAAmlB,GAAc/lB,KAAAwd,GAAAxd,KAAA4e,IAAA,EAAmB,QAAAoH,IAAA5hB,GAAeA,EAAAoZ,IAAA,EAAQpZ,EAAA2E,SAAA,KAAgB3E,EAAAwW,MAAA,KAAaxW,EAAAgc,IAAA,KAAWhc,EAAA2f,GAAA,KAAW,QAAAkC,IAAA7hB,GAAepE,KAAAogB,IAAAhc,EAAWpE,KAAAoE,KAAUpE,KAAAF,EAAA,EAAiN,QAAAomB,IAAA9hB,EAAAtE,GAAiB,GAAAtF,GAAAsF,EAAAukB,IAAa7pB,KAAA4J,MAAAua,EAAAva,IAAA5J,GAAAsF,KAAAkmB,GAAAlmB,GAAA,GAAAsE,IAAA5J,GAAAV,eAAAsK,KAAA5J,GAAA4J,EAAAtE,MAAwE,QAAAqmB,IAAA/hB,EAAAtE,EAAAtF,EAAAC,GAAqB,OAAA4F,GAAA,EAAYA,EAAA+D,EAAAtK,SAAWuG,EAAA,CAAK,GAAAyC,GAAAsB,EAAA/D,EAAW,KAAAyC,EAAA0a,IAAA1a,EAAAiG,UAAAjJ,GAAAgD,EAAAgjB,WAAAtrB,GAAAsI,EAAAihB,IAAAtpB,EAAA,MAAA4F,GAA0D,SAAgE,QAAA+lB,IAAAhiB,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB,GAAA5F,KAAA+R,KAAA6Z,GAAAjiB,EAAAtE,EAAAtF,EAAAC,EAAA4F,OAA2B,IAAA8c,EAAArd,GAAA,OAAAgD,GAAA,EAA0BA,EAAAhD,EAAAhG,OAAWgJ,IAAAsjB,GAAAhiB,EAAAtE,EAAAgD,GAAAtI,EAAAC,EAAA4F,OAAqB7F,GAAA8rB,GAAA9rB,GAAA4J,KAAAmiB,IAAAC,GAAApiB,EAAAtE,EAAAtF,EAAA6J,EAAA5J,OAAAqrB,UAAArrB,EAAA4F,GAAAomB,GAAAriB,EAAAtE,EAAAtF,GAAA,EAAAC,EAAA4F,GAC/zC,QAAAomB,IAAAriB,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,GAAyB,IAAAhD,EAAA,KAAA2K,OAAA,qBAAwC,IAAA+W,GAAAnd,EAAAhE,OAAAylB,UAAAzlB,EAAA9F,EAAAmsB,GAAAtiB,EAA6E,IAA1C7J,IAAA6J,EAAAuiB,IAAApsB,EAAA,GAAA0rB,IAAA7hB,IAAuB5J,EAAAD,EAAA2mB,IAAAphB,EAAAtF,EAAAC,EAAA+mB,EAAA1e,IAAmBtI,EAAAogB,MAAA,CAAmD,GAAtCngB,EAAAmsB,KAAOpsB,EAAAogB,MAAAngB,EAAUA,EAAA2lB,IAAAhc,EAAQ3J,EAAAsO,SAAAvO,EAAa4J,EAAA0R,iBAAA+Q,KAAAxmB,EAAAmhB,OAAA,KAAAnhB,OAAA,GAAA+D,EAAA0R,iBAAAhW,KAAArF,EAAA4F,OAAwF,IAAA+D,EAAA2R,YAAA3R,EAAA2R,YAAA+Q,GAAAhnB,MAAArF,OAAwD,KAAA2J,EAAAmI,cAAAnI,EAAAsI,eAAyD,KAAAjC,OAAA,oDAAzDrG,GAAAmI,YAAA9R,GAA+HssB,MAChd,QAAAH,MAAc,GAAAxiB,GAAA4iB,GAAAlnB,EAAAmnB,GAAA,SAAAzsB,GAA0B,MAAA4J,GAAA9K,KAAAwG,EAAAsgB,IAAAtgB,EAAAiJ,SAAAvO,IAAkC,SAAAA,GAA0C,KAA7BA,EAAA4J,EAAA9K,KAAAwG,EAAAsgB,IAAAtgB,EAAAiJ,SAAAvO,IAA6B,MAAAA,GAAgB,OAAAsF,GAAS,QAAAumB,IAAAjiB,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB,GAAA8c,EAAArd,GAAA,OAAAgD,GAAA,EAAqBA,EAAAhD,EAAAhG,OAAWgJ,IAAAujB,GAAAjiB,EAAAtE,EAAAgD,GAAAtI,EAAAC,EAAA4F,OAAqB7F,GAAA8rB,GAAA9rB,GAAA4J,KAAAmiB,IAAAW,GAAA9iB,EAAAtE,EAAAtF,EAAA6J,EAAA5J,OAAAqrB,UAAArrB,EAAA4F,GAAAomB,GAAAriB,EAAAtE,EAAAtF,GAAA,EAAAC,EAAA4F,GACzN,QAAA8mB,IAAA/iB,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAsB,GAAA8c,EAAArd,GAAA,OAAAgD,GAAA,EAAqBA,EAAAhD,EAAAhG,OAAWgJ,IAAAqkB,GAAA/iB,EAAAtE,EAAAgD,GAAAtI,EAAAC,EAAA4F,OAAoB5F,GAAA4J,EAAA5J,OAAAqrB,UAAArrB,EAAAD,EAAA8rB,GAAA9rB,GAAA4J,KAAAmiB,KAAAniB,IAAA+J,GAAArO,GAAAgO,KAAA1J,OAAAtB,EAAAsB,IAAAtE,IAAA,GAAAtF,EAAA2rB,GAAArjB,EAAAtI,EAAAC,EAAA4F,MAAA2lB,GAAAljB,EAAAtI,IAAA+K,MAAArL,UAAA8iB,OAAA1jB,KAAAwJ,EAAAtI,EAAA,MAAAsI,EAAAhJ,eAAAsK,KAAAtE,GAAAsE,EAAAtE,QAAAsE,MAAAsiB,GAAAtiB,MAAAtE,EAAAsE,IAAAtE,MAAAsE,GAAA,EAAAtE,IAAAsE,EAAA+hB,GAAArmB,EAAAtF,EAAAC,EAAA4F,KAAA7F,GAAA,EAAA4J,EAAAtE,EAAAsE,GAAA,OAAAgjB,GAAA5sB,IAC1E,QAAA4sB,IAAAhjB,GAAe,mBAAAA,UAAAoZ,GAAA,CAAiC,GAAA1d,GAAAsE,EAAAgc,GAAY,IAAAtgB,KAAAymB,IAAAL,GAAApmB,EAAAqO,EAAA/J,OAAsB,CAAK,GAAA5J,GAAA4J,EAAAigB,KAAA5pB,EAAA2J,EAAAwW,KAAuB9a,GAAAunB,oBAAAvnB,EAAAunB,oBAAA7sB,EAAAC,EAAA2J,EAAA0hB,SAAAhmB,EAAAwnB,YAAAxnB,EAAAwnB,YAAAR,GAAAtsB,GAAAC,GAAAqF,EAAAyM,aAAAzM,EAAA4M,gBAAA5M,EAAA4M,eAAAjS,GAAqJssB,MAAKvsB,EAAAksB,GAAA5mB,KAAAomB,GAAA1rB,EAAA4J,GAAA,GAAA5J,EAAAsF,IAAAtF,EAAA4lB,IAAA,KAAAtgB,EAAA6mB,IAAA,OAAAX,GAAA5hB,KAA4D,QAAA0iB,IAAA1iB,GAAe,MAAAA,KAAAmjB,OAAAnjB,GAAAmjB,GAAAnjB,GAAA,KAAAA,EACnV,QAAAojB,IAAApjB,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAA4F,IAAA,CAAS,KAAA+D,EAAAsiB,GAAAtiB,MAAAtE,EAAAsE,IAAAtE,OAAA,IAAAA,IAAAmE,SAAAG,EAAA,EAAuDA,EAAAtE,EAAAhG,OAAWsK,IAAA,CAAK,GAAAtB,GAAAhD,EAAAsE,EAAWtB,MAAAgjB,SAAAtrB,IAAAsI,EAAA0a,KAAA1a,EAAA2kB,GAAA3kB,EAAArI,GAAA4F,MAAA,IAAAyC,GAAgD,MAAAzC,GAAS,QAAAonB,IAAArjB,EAAAtE,GAAiB,GAAAtF,GAAA4J,EAAA2E,SAAAtO,EAAA2J,EAAA2f,IAAA3f,EAAAgc,GAA2C,OAAZhc,GAAAwa,IAAAwI,GAAAhjB,GAAY5J,EAAAlB,KAAAmB,EAAAqF,GACrO,QAAAknB,IAAA5iB,EAAAtE,GAAiB,GAAAsE,EAAAoZ,GAAA,QAAiB,KAAAyJ,GAAA,CAAQ,IAAAnnB,EAAAsE,EAAA,CAAStE,GAAA,iBAAqB,QAAAtF,GAAAyK,GAAAxK,EAAA,EAAgBA,EAAAqF,EAAAhG,OAAWW,IAAA,UAAAD,IAAAsF,EAAArF,KAAA,CAA0BqF,EAAA,IAAO,MAAAsE,GAAQtE,EAAAtF,EAA8B,GAA1BC,EAAAqF,EAAIA,EAAA,GAAAwkB,IAAA7pB,EAAAuF,MAAiBxF,GAAA,IAAK,EAAAC,EAAAitB,aAAA,IAAAjtB,EAAAktB,aAAA,CAA0CvjB,EAAA,CAAG,GAAA/D,IAAA,CAAS,OAAA5F,EAAAitB,QAAA,IAAoBjtB,EAAAitB,SAAA,CAAa,MAAAtjB,GAAQ,MAAAod,GAASnhB,GAAA,GAAKA,OAAA,IAAA5F,EAAAktB,eAAAltB,EAAAktB,aAAA,GAAkD,IAALltB,KAAK4F,EAAAP,IAAUO,EAAEA,IAAAwgB,WAAApmB,EAAAT,KAAAqG,EAAkC,KAAT+D,IAAAigB,KAAShkB,EAAA5F,EAAAX,OAAA,EAAiB,GAAAuG,EAAKA,IAAA,CAAKP,IAAArF,EAAA4F,EAAS,IAAAyC,GAAA0kB,GAAA/sB,EAAA4F,GAAA+D,GAAA,EAAAtE,EAAsBtF,MAAAsI,EAAO,IAAAzC,EAAA,EAAQA,EAAA5F,EAAAX,OAAWuG,IAAAP,IAAArF,EAAA4F,GAAAyC,EAAA0kB,GAAA/sB,EAAA4F,GAAA+D,GAAA,EAAAtE,GAAAtF,KAAAsI,EAAsC,MAAAtI,GAAS,MAAAitB,IAAArjB,EAC1f,GAAAkgB,IAAAxkB,EAAAE,OAAgB,QAAA0mB,IAAAtiB,GAAuB,MAARA,KAAAuiB,IAAQviB,YAAA6hB,IAAA7hB,EAAA,KAAoF,QAAAkiB,IAAAliB,GAAe,MAAAnJ,GAAAmJ,MAAiBA,EAAAwjB,MAAAxjB,EAAAwjB,IAAA,SAAA9nB,GAA0B,MAAAsE,GAAAyjB,YAAA/nB,KAA0BsE,EAAAwjB,KAAc,QAAAE,MAAa3E,GAAA7pB,KAAA0G,MAAcA,KAAAmO,EAAA,GAAA8X,IAAAjmB,MAAoBA,KAAA2jB,GAAA3jB,KAAaA,KAAAuf,GAAA,KAE5G,QAAAiH,IAAApiB,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB+D,EAAA+J,EAAA+S,IAAAphB,EAAAgO,GAAAtT,GAAA,EAAAC,EAAA4F,GAA4B,QAAA6mB,IAAA9iB,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB+D,EAAA+J,EAAA+S,IAAAphB,EAAAgO,GAAAtT,GAAA,EAAAC,EAAA4F,GACvP,QAAA0nB,IAAA3jB,EAAAtE,EAAAtF,EAAAC,GAAwC,KAAnBqF,EAAAsE,EAAA+J,EAAA/J,EAAAtE,EAAAgO,KAAmB,QAAehO,KAAAmE,QAAa,QAAA5D,IAAA,EAAAyC,EAAA,EAAiBA,EAAAhD,EAAAhG,SAAWgJ,EAAA,CAAK,GAAA0e,GAAA1hB,EAAAgD,EAAW,IAAA0e,MAAAhE,IAAAgE,EAAAsE,SAAAtrB,EAAA,CAA2B,GAAAD,GAAAinB,EAAAzY,SAAA1N,EAAAmmB,EAAAuC,IAAAvC,EAAApB,GAA+BoB,GAAA5C,IAAAsH,GAAA9hB,EAAA+J,EAAAqT,GAAgBnhB,GAAA,IAAA9F,EAAAjB,KAAA+B,EAAAZ,IAAA4F,GAAuB,MAAAA,IAAA,GAAA5F,EAAAwoB,GAAmB,QAAA+E,IAAA5jB,EAAAtE,EAAAtF,GAAmB,GAAAS,EAAAmJ,GAAA5J,IAAA4J,EAAArD,EAAAqD,EAAA5J,QAAsB,KAAA4J,GAAA,kBAAAA,GAAAyjB,YAAiE,KAAApd,OAAA,4BAAjErG,GAAArD,EAAAqD,EAAAyjB,YAAAzjB,GAA+G,mBAAAtE,GAAA,EAAAmF,GAAA2D,WAAAxE,EAAAtE,GAAA,GAAoD,QAAAmoB,IAAA7jB,GAAe,GAAAtE,GAAA,IAAW,WAAAmD,GAAA,SAAAzI,EAAAC,IAAyD,IAA9BqF,EAAAkoB,GAAA,WAAgBxtB,MAAA,KAAU4J,KAAI3J,EAAAgQ,MAAA,gCAA6C7P,EAAA,SAAAwJ,GAAmC,KAAlBa,IAAAgG,aAAAnL,GAAkBsE,IAAY,QAAA8jB,IAAA9jB,GAAe,GAAAA,EAAA+jB,GAAA,kBAAA/jB,GAAA+jB,EAAA,MAAA/jB,GAAA+jB,GAA4C,IAAA9uB,EAAA+K,GAAA,MAAAA,GAAAqU,MAAA,GAA2B,IAAA2E,EAAAhZ,GAAA,CAAU,OAAAtE,MAAAtF,EAAA4J,EAAAtK,OAAAW,EAAA,EAA4BA,EAAAD,EAAIC,IAAAqF,EAAA9F,KAAAoK,EAAA3J,GAAiB,OAAAqF,GAASA,KAAKtF,EAAA,CAAI,KAAAC,IAAA2J,GAAAtE,EAAAtF,KAAA4J,EAAA3J,EAAuB,OAAAqF,GAAS,QAAA8iB,IAAAxe,GAAe,GAAAA,EAAAgkB,GAAA,kBAAAhkB,GAAAgkB,EAAA,MAAAhkB,GAAAgkB,GAA4C,KAAAhkB,EAAA+jB,GAAA,kBAAA/jB,GAAA+jB,EAAA,CAAiC,GAAA/K,EAAAhZ,IAAA/K,EAAA+K,GAAA,CAAgB,GAAAtE,KAASsE,KAAAtK,MAAW,QAAAU,GAAA,EAAYA,EAAA4J,EAAI5J,IAAAsF,EAAA9F,KAAAQ,EAAc,OAAAsF,GAASA,KAAKtF,EAAA,CAAI,QAAAC,KAAA2J,GAAAtE,EAAAtF,KAAAC,CAAwB,OAAAqF,IAC1+B,QAAA+iB,IAAAze,EAAAtE,GAAiB,GAAAsE,EAAAjG,SAAA,kBAAAiG,GAAAjG,QAAAiG,EAAAjG,QAAA2B,MAAA,QAA+D,IAAAsd,EAAAhZ,IAAA/K,EAAA+K,GAAAxB,GAAAwB,EAAAtE,MAAA,QAAkC,QAAAtF,GAAAooB,GAAAxe,GAAA3J,EAAAytB,GAAA9jB,GAAA/D,EAAA5F,EAAAX,OAAAgJ,EAAA,EAA4CA,EAAAzC,EAAIyC,IAAAhD,EAAAxG,SAAA,GAAAmB,EAAAqI,GAAAtI,KAAAsI,GAAAsB,GAAmC,QAAAikB,IAAAjkB,EAAAtE,GAAiBE,KAAAF,KAAUE,KAAAoE,KAAUpE,KAAAxF,EAAA,CAAS,IAAAA,GAAAsG,UAAAhH,MAAuB,MAAAU,EAAA,CAAQ,GAAAA,EAAA,OAAAiQ,OAAA,6BAAiD,QAAAhQ,GAAA,EAAYA,EAAAD,EAAIC,GAAA,EAAAuF,KAAAsoB,IAAAxnB,UAAArG,GAAAqG,UAAArG,EAAA,QAA2C,IAAA2J,EAAA,GAAAA,YAAAikB,IAAA,IAAA7tB,EAAA4J,EAAAgkB,IAAA3tB,EAAA,EAA6CA,EAAAD,EAAAV,OAAWW,IAAAuF,KAAAsoB,IAAA9tB,EAAAC,GAAA2J,EAAApJ,IAAAR,EAAAC,SAA+B,KAAAA,IAAA2J,GAAApE,KAAAsoB,IAAA7tB,EAAA2J,EAAA3J,IACha,QAAA8tB,IAAAnkB,GAAe,GAAAA,EAAA5J,GAAA4J,IAAAtK,OAAA,CAAoB,OAAAgG,GAAA,EAAAtF,EAAA,EAAgBsF,EAAAsE,IAAAtK,QAAa,CAAE,GAAAW,GAAA2J,IAAAtE,EAAa0oB,IAAApkB,EAAAtE,EAAArF,KAAA2J,IAAA5J,KAAAC,GAAwBqF,IAAIsE,IAAAtK,OAAAU,EAAa,GAAA4J,EAAA5J,GAAA4J,IAAAtK,OAAA,CAAoB,GAAAuG,KAAS,KAAA7F,EAAAsF,EAAA,EAAUA,EAAAsE,IAAAtK,QAAaW,EAAA2J,IAAAtE,GAAA0oB,GAAAnoB,EAAA5F,KAAA2J,IAAA5J,KAAAC,EAAA4F,EAAA5F,GAAA,GAAAqF,GAA2CsE,KAAAtK,OAAAU,GAC/J,QAAAguB,IAAApkB,EAAAtE,GAAiB,MAAA7F,QAAAC,UAAAC,eAAAb,KAAA8K,EAAAtE,GAAgL,QAAA2oB,IAAArkB,EAAAtE,GAAiB,GAAAsE,EAAA,CAAMA,IAAAqU,MAAA,IAAe,QAAAje,GAAA,EAAYA,EAAA4J,EAAAtK,OAAWU,IAAA,CAAK,GAAAC,GAAA2J,EAAA5J,GAAA+F,QAAA,KAAAF,EAAA,IAA+B,OAAA5F,EAAA,CAAS,GAAAqI,GAAAsB,EAAA5J,GAAAkuB,UAAA,EAAAjuB,EAA0B4F,GAAA+D,EAAA5J,GAAAkuB,UAAAjuB,EAAA,OAAsBqI,GAAAsB,EAAA5J,EAAYsF,GAAAgD,EAAAzC,EAAAsoB,mBAAAtoB,EAAA6X,QAAA,kBAAsD,QAAA0Q,IAAAxkB,EAAAtE,GAAgF,GAA/DE,KAAAF,EAAAE,KAAA3G,EAAA2G,KAAAxF,EAAA,GAAwBwF,KAAA5G,EAAA,KAAY4G,KAAAwhB,EAAAxhB,KAAAsD,EAAA,GAAiBtD,KAAA8C,GAAA,EAAUsB,YAAAwkB,IAAA,CAAoB5oB,KAAA8C,MAAA,KAAAhD,IAAAsE,EAAAtB,EAAwB+lB,GAAA7oB,KAAAoE,EAAA5J,GAAawF,KAAA3G,EAAA+K,EAAA/K,EAAW2G,KAAAF,EAAAsE,EAAAtE,EAAWgpB,GAAA9oB,KAAAoE,EAAAhL,GAAa4G,KAAAsD,EAAAc,EAAAd,EAAWxD,EAAAsE,GAAM,IAAA5J,GAAA,GAAAuuB,GAAavuB,KAAAsF,EAAAtF,EAAQsF,EAAAsE,IAAA5J,EAAA4J,EAAA,GAAAikB,IAAAvoB,EAAAsE,GAAA5J,EAAAsF,OAA+BkpB,GAAAhpB,KAAAxF,GAAWwF,KAAAwhB,EAAApd,EAAAod,MAAWpd,KAAA5J,GAAA4J,EAAA0J,IAAAqK,MAAA8Q,MAAAjpB,KAAA8C,IAAAhD,EAAA+oB,GAAA7oB,KAAAxF,EAAA,WAAAwF,KAAA3G,EAAA6vB,GAAA1uB,EAAA,QAAAwF,KAAAF,EAAAopB,GAAA1uB,EAAA,WAAAsuB,GAAA9oB,KAAAxF,EAAA,IAAAwF,KAAAsD,EAAA4lB,GAAA1uB,EAAA,WAAAwuB,GAAAhpB,KAAAxF,EAAA,WAAAwF,KAAAwhB,EAAA0H,GAAA1uB,EAAA,UAAAwF,KAAA8C,IAAAhD,EAAAE,KAAAoE,EAAA,GAAA2kB,IAAA,KAAA/oB,KAAA8C,IAEjxB,QAAA+lB,IAAAzkB,EAAAtE,EAAAtF,GAAmB4J,EAAA5J,IAAA0uB,GAAAppB,GAAA,GAAAA,EAAiBsE,EAAA5J,IAAA4J,EAAA5J,EAAA4J,EAAA5J,EAAA0d,QAAA,UAAgC,QAAA4Q,IAAA1kB,EAAAtE,GAAiB,GAAAA,EAAA,CAAkB,GAAZA,KAAYqpB,MAAArpB,IAAA,EAAAA,EAAA,KAAA2K,OAAA,mBAAA3K,EAAmDsE,GAAAhL,EAAA0G,MAAMsE,GAAAhL,EAAA,KAAc,QAAA4vB,IAAA5kB,EAAAtE,EAAAtF,GAAmBsF,YAAAipB,KAAA3kB,IAAAtE,EAAAspB,GAAAhlB,MAAAtB,KAAAtI,IAAAsF,EAAAupB,GAAAvpB,EAAAwpB,KAAAllB,IAAA,GAAA2kB,IAAAjpB,EAAAsE,EAAAtB,IAAwE,QAAAymB,IAAAnlB,EAAAtE,EAAAtF,GAAkB4J,IAAAkkB,IAAAxoB,EAAAtF,GAAa,QAAAgvB,IAAAplB,EAAAtE,GAAiB,MAAAsE,KAAApJ,IAAA8E,GAAkB,QAAA2pB,IAAArlB,GAAe,MAAAA,aAAAwkB,IAAA,GAAAA,IAAAxkB,GAAA,GAAAwkB,IAAAxkB,MAAA,IAAkD,QAAAslB,IAAAtlB,EAAAtE,GAAiB,GAAAtF,GAAA,GAAAouB,IAAA,YAA8D,OAApCC,IAAAruB,EAAA,SAAc4J,IAAA5J,EAAAsF,EAAAsE,GAAWtE,IAAAtF,EAAA8I,EAAAxD,GAAWtF,EAC3d,QAAA0uB,IAAA9kB,EAAAtE,GAAiB,MAAAsE,GAAAtE,EAAA6pB,UAAAvlB,EAAA8T,QAAA,iBAAAyQ,mBAAAvkB,GAAA,GAAyE,QAAAilB,IAAAjlB,EAAAtE,EAAAtF,GAAmB,MAAAnB,GAAA+K,MAAAwlB,UAAAxlB,GAAA8T,QAAApY,EAAA+pB,IAAArvB,IAAA4J,IAAA8T,QAAA,uBAA6E,QAAA9T,GAAA,KAAoB,QAAAylB,IAAAzlB,GAAiC,MAAlBA,KAAAqJ,WAAA,GAAkB,KAAArJ,GAAA,MAAA8Q,SAAA,QAAA9Q,GAAA8Q,SAAA,IAAsH,QAAA6T,IAAA3kB,EAAAtE,GAAiBE,KAAAF,EAAAE,KAAAoE,EAAA,KAAmBpE,KAAAxF,EAAA4J,GAAA,KAAepE,KAAA8C,IAAAhD,EACxZ,QAAAgqB,IAAA1lB,GAAeA,UAAA,GAAAikB,IAAAjkB,EAAAtE,EAAA,EAAAsE,EAAA5J,GAAAiuB,GAAArkB,EAAA5J,EAAA,SAAAsF,EAAAtF,GAAiD4J,EAAA8c,IAAAyH,mBAAA7oB,EAAAoY,QAAA,YAAA1d,MAAqD,QAAAuvB,IAAA3lB,GAAe,GAAAtE,GAAA8iB,GAAAxe,EAAY,aAAAtE,EAAA,KAAA2K,OAAA,qBAA2D,IAAAjQ,GAAA,GAAAuuB,IAAA,YAA0B3kB,GAAA8jB,GAAA9jB,EAAQ,QAAA3J,GAAA,EAAYA,EAAAqF,EAAAhG,OAAWW,IAAA,CAAK,GAAA4F,GAAAP,EAAArF,GAAAqI,EAAAsB,EAAA3J,EAAkB0iB,GAAAra,GAAAuQ,GAAA7Y,EAAA6F,EAAAyC,GAAAtI,EAAA0mB,IAAA7gB,EAAAyC,GAA2B,MAAAtI,GACtT,QAAAwvB,IAAA5lB,EAAAtE,GAAiBgqB,GAAA1lB,GAAMtE,EAAAmqB,GAAA7lB,EAAAtE,GAAU0oB,GAAApkB,IAAAtE,OAAAsE,EAAA5J,EAAA,KAAA4J,EAAAtE,GAAAsE,IAAApJ,IAAA8E,GAAAhG,OAAAsK,MAAAokB,GAAApkB,EAAAtE,aAAAsE,GAAAtE,KAAAsE,EAAA5J,IAAA4J,IAAAtK,OAAA,EAAAsK,EAAA5J,GAAA+tB,GAAAnkB,KAA8J,QAAA8lB,IAAA9lB,EAAAtE,GAAiC,MAAhBgqB,IAAA1lB,GAAMtE,EAAAmqB,GAAA7lB,EAAAtE,GAAU0oB,GAAApkB,IAAAtE,KAC4I,QAAAuT,IAAAjP,EAAAtE,EAAAtF,GAAmBwvB,GAAA5lB,EAAAtE,GAAQ,EAAAtF,EAAAV,SAAAsK,EAAA5J,EAAA,KAAA4J,IAAAkkB,IAAA2B,GAAA7lB,EAAAtE,GAAAgf,EAAAtkB,IAAA4J,EAAAtE,GAAAtF,EAAAV,QACjG,QAAAmwB,IAAA7lB,EAAAtE,GAAsD,MAArCA,IAAAgO,GAAY1J,EAAAtB,IAAAhD,IAAAqqB,eAAyBrqB,EAAS,QAAAspB,IAAAhlB,EAAAtE,GAAiBA,IAAAsE,EAAAtB,IAAAgnB,GAAA1lB,KAAA5J,EAAA,KAAA4J,IAAAjG,QAAA,SAAAiG,EAAAtE,GAAmD,GAAAtF,GAAAsF,EAAAqqB,aAAsBrqB,IAAAtF,IAAAwvB,GAAAhqB,KAAAF,GAAAuT,GAAArT,KAAAxF,EAAA4J,KAAgCA,IAAKA,EAAAtB,EAAAhD,EAAgC,QAAAsqB,MAAcpqB,KAAAoE,EAAA,GAAUpE,KAAAF,EAAAuqB,GAAmI,QAAAC,IAAAlmB,GAAe,MAAAA,aAAAgmB,KAAAhmB,EAAAnE,cAAAmqB,IAAAhmB,EAAAtE,IAAAuqB,GAAAjmB,KAA4D2Z,EAAA,uCAAA3Z,EAAA,KAAiD,oBAAmC,QAAAmmB,IAAAnmB,GAAe,GAAAtE,GAAA,GAAAsqB,GAAmB,OAANtqB,GAAAsE,IAAMtE,EAAgB,QAAA0qB,MAAcxqB,KAAAoE,EAAA,GAAUpE,KAAAF,EAAA2qB,GAAgJ,QAAAC,IAAAtmB,GAAe,MAAAA,aAAAomB,KAAApmB,EAAAnE,cAAAuqB,IAAApmB,EAAAtE,IAAA2qB,GAAArmB,KAA4D2Z,EAAA,oDAAA3Z,EAAA,aAAA2Y,EAAA3Y,IAA6E,iCAChrC,QAAAumB,IAAAvmB,EAAAtE,GAAiB,GAAAtF,GAAA8vB,GAAAlmB,EAAY,KAAAwmB,GAAAnT,KAAAjd,GAAA,KAAAiQ,OAAA,sCAAAjQ,EAAiV,OAA7Q4J,GAAA5J,EAAA0d,QAAA2S,GAAA,SAAAzmB,EAAA/D,GAA6B,IAAApG,OAAAC,UAAAC,eAAAb,KAAAwG,EAAAO,GAAA,KAAAoK,OAAA,kBAAApK,EAAA,yBAAA7F,EAAA,gDAAAgW,KAAAnT,UAAAyC,GAAmL,OAAPsE,GAAAtE,EAAAO,GAAO+D,YAAAgmB,IAAAE,GAAAlmB,GAAA8U,mBAAA9U,EAAA0J,MAA6Dgd,GAAA1mB,GAC9W,QAAA0mB,IAAA1mB,GAAe,GAAAtE,GAAA,GAAA0qB,GAAmB,OAAN1qB,GAAAsE,IAAMtE,EAAU,QAAAirB,MAAc/qB,KAAAoE,EAAA,GAAUpE,KAAAF,EAAAkrB,GAAqI,QAAAC,IAAA7mB,GAAe,MAAAA,aAAA2mB,KAAA3mB,EAAAnE,cAAA8qB,IAAA3mB,EAAAtE,IAAAkrB,GAAA5mB,KAA4D2Z,EAAA,yCAAA3Z,EAAA,aAAA2Y,EAAA3Y,IAAkE,sBACtV,QAAA8mB,IAAA9mB,GAAe,MAAAA,aAAA2mB,IAAA3mB,GAA4BA,IAAAkZ,GAAAlZ,EAAAmf,KAAAnf,EAAA0J,GAAwBqd,GAAA1T,KAAArT,OAAA,2BAA0CgnB,GAAAhnB,IAAuB,QAAAgnB,IAAAhnB,GAAe,GAAAtE,GAAA,GAAAirB,GAAmB,OAANjrB,GAAAsE,IAAMtE,EAA2B,QAAAurB,MAAcrrB,KAAAoE,EAAA,GAAUpE,KAAAF,EAAAwrB,GAAsI,QAAAC,IAAAnnB,GAAe,MAAAA,aAAAinB,KAAAjnB,EAAAnE,cAAAorB,IAAAjnB,EAAAtE,IAAAwrB,GAAAlnB,KAA4D2Z,EAAA,0CAAA3Z,EAAA,aAAA2Y,EAAA3Y,IAAmE,uBAAsC,QAAAonB,IAAApnB,GAAe,GAAAtE,GAAA,GAAAurB,GAAmB,OAANvrB,GAAAsE,IAAMtE,EAAiD,QAAA2rB,IAAArnB,GAAe,GAAAtE,GAAAiV,QAAe,OAAA1b,GAAA+K,GAAAtE,EAAA4rB,eAAAtnB,KAAkC,QAAAunB,IAAAvnB,EAAAtE,GAAiB8f,EAAA9f,EAAA,SAAAA,EAAArF,GAAmBqF,KAAAwd,KAAAxd,IAAAyjB,MAAoB,SAAA9oB,EAAA2J,EAAA8b,MAAA0L,QAAA9rB,EAAA,SAAArF,EAAA2J,EAAAynB,UAAA/rB,EAAA,OAAArF,EAAA2J,EAAA0nB,QAAAhsB,EAAAisB,GAAA5xB,eAAAM,GAAA2J,EAAA4nB,aAAAD,GAAAtxB,GAAAqF,GAAA,GAAArF,EAAAwxB,YAAA,eAAAxxB,EAAAwxB,YAAA,WAAA7nB,EAAA4nB,aAAAvxB,EAAAqF,GAAAsE,EAAA3J,GAAAqF,IAE9tB,QAAAosB,IAAA9nB,EAAAtE,EAAAtF,GAAmB,GAAAC,GAAAqG,UAAAT,EAAA0U,SAAAjS,EAAArI,EAAA,GAAAqT,GAAA0T,EAAA/mB,EAAA,EAAiD,KAAA0xB,IAAA3K,MAAA9mB,MAAA8mB,EAAA6C,MAAA,CAAgF,GAAnDvhB,GAAA,IAAAA,GAAU0e,EAAA9mB,MAAAoI,EAAA9I,KAAA,UAAAglB,EAAAwC,EAAA9mB,MAAA,KAAyC8mB,EAAA6C,KAAA,CAAWvhB,EAAA9I,KAAA,UAAAglB,EAAAwC,EAAA6C,MAAA,IAAiC,IAAA9pB,KAASwlB,GAAAxlB,EAAAinB,SAAQjnB,GAAA8pB,KAAc7C,EAAAjnB,EAAIuI,EAAA9I,KAAA,KAAY8I,IAAAsL,KAAA,IAAsH,MAAzGtL,GAAAzC,EAAA+V,cAAAtT,GAAqB0e,IAAAnoB,EAAAmoB,GAAA1e,EAAA+oB,UAAArK,EAAArE,EAAAqE,GAAA1e,EAAA+oB,UAAArK,EAAApT,KAAA,KAAAud,GAAA7oB,EAAA0e,IAA8D,EAAA/mB,EAAAX,QAAAsyB,GAAA/rB,EAAAyC,EAAArI,GAAsBqI,EACrW,QAAAspB,IAAAhoB,EAAAtE,EAAAtF,GAAmB,QAAAC,GAAAD,GAAcA,GAAAsF,EAAA4W,YAAArd,EAAAmB,GAAA4J,EAAAioB,eAAA7xB,MAA6C,OAAA6F,GAAA,EAAYA,EAAA7F,EAAAV,OAAWuG,IAAA,CAAK,GAAAyC,GAAAtI,EAAA6F,IAAW+c,EAAAta,IAAAuB,EAAAvB,IAAA,EAAAA,EAAAwpB,SAAA7xB,EAAAqI,GAAAF,GAAA2pB,GAAAzpB,GAAAgc,EAAAhc,KAAArI,IAAoD,QAAA8xB,IAAAnoB,GAAe,GAAAA,GAAA,gBAAAA,GAAAtK,OAAA,CAAiC,GAAAuK,EAAAD,GAAA,wBAAAA,GAAA2P,MAAA,gBAAA3P,GAAA2P,IAAiE,IAAA9Y,EAAAmJ,GAAA,wBAAAA,GAAA2P,KAAwC,SAAU,QAAAyY,IAAApoB,GAAe,GAAAtE,KAAwB,OAAf2sB,IAAA,GAAAC,IAAAtoB,EAAAtE,GAAeA,EAAAsO,KAAA,IAAkB,QAAAse,OACrY,QAAAD,IAAAroB,EAAAtE,EAAAtF,GAAmB,SAAAsF,EAAAtF,EAAAR,KAAA,YAA0B,CAAK,mBAAA8F,GAAA,CAAuB,GAAAqd,EAAArd,GAAA,CAAU,GAAArF,GAAAqF,CAAQA,GAAArF,EAAAX,OAAWU,EAAAR,KAAA,IAAY,QAAAqG,GAAA,GAAAyC,EAAA,EAAiBA,EAAAhD,EAAIgD,IAAAtI,EAAAR,KAAAqG,GAAAosB,GAAAroB,EAAA3J,EAAAqI,GAAAtI,GAAA6F,EAAA,GAA6C,YAAZ7F,GAAAR,KAAA,KAAmB,KAAA8F,YAAAgO,SAAAhO,YAAA6sB,SAAA7sB,YAAA8sB,UAAgF,CAAKpyB,EAAAR,KAAA,KAAYqG,EAAA,EAAK,KAAA5F,IAAAqF,GAAA7F,OAAAC,UAAAC,eAAAb,KAAAwG,EAAArF,IAAA,mBAAAqI,EAAAhD,EAAArF,MAAAD,EAAAR,KAAAqG,GAAAwsB,GAAApyB,EAAAD,KAAAR,KAAA,KAAAyyB,GAAAroB,EAAAtB,EAAAtI,GAAA6F,EAAA,IAAiJ,YAAZ7F,GAAAR,KAAA,KAA3O8F,IAAAgtB,UAA+P,aAAAhtB,IAAiB,aAAA+sB,GAAA/sB,EAAAtF,EAAsB,MAAM,cAAAA,EAAAR,KAAA+yB,SAAAjtB,KACveqpB,MAAArpB,KAAAgO,GAAA,OAA4B,MAAM,eAAAtT,EAAAR,KAAA8F,EAAAgO,GAAiC,MAAM,gBAAAtT,EAAAR,KAAA,OAA+B,MAAM,cAAAyQ,OAAA,uBAAA3K,MAC9G,QAAA+sB,IAAAzoB,EAAAtE,GAAiBA,EAAA9F,KAAA,IAAAoK,EAAA8T,QAAA8U,GAAA,SAAA5oB,GAAoC,GAAAtE,GAAAmtB,GAAA7oB,EAAgF,OAApEtE,OAAA,aAAAsE,EAAAqJ,WAAA,IAAAyH,SAAA,IAAA+B,OAAA,GAAAgW,GAAA7oB,GAAAtE,GAAoEA,IAAS,KAAQ,QAAAotB,MAAc,GAAA9oB,GAAA+oB,IAAU,OAAAC,OAAAC,IAAA,IAAAA,IAAA,YAAA5V,KAAArT,GAA4C,QAAAkpB,MAAc,MAAAroB,IAAArM,QAAAqM,GAAArM,OAAA4nB,SAAA+M,MAAA10B,WAAA2nB,UAAA3nB,KAAA2nB,SAAA+M,MAAA,GAAqF,QAAAC,IAAAppB,EAAAtE,GAAiBA,KAAAmF,GAAArM,MAAc,IAAA4B,GAAA,aAAoB4J,KAAA5J,EAAAywB,GAAAC,GAAA9mB,KAAiBtE,EAAA0gB,SAAA+M,KAAA/yB,EACjY,QAAAizB,IAAArpB,EAAAtE,GAAiB,GAAArF,GAAAD,IAAW,KAAAC,IAAA2J,GAAA,GAAA3J,IAAAqF,GAAA,SAAAsE,GAAA3J,UAAAqF,GAAArF,GAAAD,EAAAR,KAAAS,OAA2D,IAAA0iB,EAAA/Y,EAAA3J,IAAA,CAAkB2J,EAAA,CAAG,GAAA/D,OAAA,GAAayC,EAAAsB,EAAA3J,GAAA+mB,EAAA1hB,EAAArF,EAAkB,KAAA4F,IAAAyC,GAAA,KAAAzC,IAAAmhB,KAAA1e,EAAAzC,KAAAmhB,EAAAnhB,GAAA,CAAsCA,GAAA,CAAK,MAAA+D,GAAQ,IAAA/D,IAAAmhB,GAAA,KAAAnhB,IAAAyC,IAAA,CAAyBzC,GAAA,CAAK,MAAA+D,GAAQ/D,GAAA,EAAKA,GAAA7F,EAAAR,KAAAS,OAAa,gBAAA2J,GAAA3J,IAAA,MAAA2J,EAAA3J,IAAA,MAAAqF,EAAArF,GAAA,EAAAgzB,GAAArpB,EAAA3J,GAAAqF,EAAArF,IAAAX,QAAAU,EAAAR,KAAAS,GAAA2J,EAAA3J,KAAAqF,EAAArF,IAAAD,EAAAR,KAAAS,OAA2GD,GAAAR,KAAAS,EAAe,KAAAA,IAAAqF,GAAArF,IAAA2J,IAAA5J,EAAAR,KAAAS,EAA6B,OAAAD,GAC7Y,QAAAkzB,MAAc,GAAAtpB,GAAA+oB,IAA+F,UAArF/oB,EAAAupB,GAAAvpB,IAAAwpB,GAAA,MAAAxpB,IAAA+T,MAAA,yBAAA/T,EAAAtK,OAAAqqB,SAAA/f,EAAA,cAAqF,GAAAA,GAAAgpB,IAAAC,MAAA,EAAAA,KAAgC,QAAAQ,IAAAzpB,GAAwC,MAAzBA,OAAA+oB,MAAAhD,iBAAyB/lB,EAAA+T,MAAA,YAAA/T,EAAA+T,MAAA,UAAA/T,EAAA+T,MAAA,qBAAA/T,EAAA+T,MAAA,eAAA/T,EAAA+T,MAAA,kBAAA/T,EAAA+T,MAAA,aAAqJ,QAAA2V,IAAA1pB,GAAeA,KAAAa,GAAArM,MAAc,KAAIwL,EAAAuP,QAAU,MAAA7T,KACrX,QAAAiuB,IAAA3pB,EAAAtE,EAAAtF,GAAmB,GAAAC,GAAAgb,QAAAoD,MAAA,IAAApD,KAAAC,SAA+C5V,MAAA,IAAStF,KAAA,GAAS,IAAA6F,IAAAzH,OAAAo1B,OAAAC,YAAAzzB,GAAA,EAAAsI,GAAAlK,OAAAo1B,OAAAE,WAAApuB,GAAA,CAAuEA,IAAGquB,MAAAruB,EAAAsuB,OAAA5zB,EAAA6zB,IAAA,EAAAhuB,IAAA,EAAAiuB,KAAA,EAAAxrB,IAAA,EAAA0d,UAAA,EAAA+N,WAAA,EAAAC,WAAA,EAAAC,SAAA,GAA4Fj0B,EAAA2yB,KAAAhD,cAAoB1vB,IAAAqF,EAAAa,OAAAlG,EAAA+kB,EAAAhlB,EAAA,YAAAsF,EAAAa,OAAA,WAAmDgtB,GAAAR,OAAAuB,KAAAtqB,KAAA,mBAAAtE,EAAA6uB,YAAA,GAAuDn0B,EAAA4J,GAAA,IAAQA,EAAAtE,KAAAsE,MAAc3J,EAAA7B,OAASkH,EAAAtF,YAAAuwB,IAAAvwB,EAAA0wB,OAAA,KAAA1wB,EAAA+yB,KAAA/yB,EAAA+yB,KAAA/yB,EAAAsT,IAAoEtT,EAAA4J,EAAAzD,QAAAnG,EAAAmG,OAAqBN,IAChf,KAAAmhB,IAAApd,GAAA,OAAAod,GAAqB,8CAAAnhB,EAAArG,KAAAwnB,EAAA,IAAApd,EAAAod,GAAqE,MAAM,mDAAsD,SAAAnhB,EAAArG,KAAAwnB,EAAA,KAAApd,EAAAod,GAAA,MAAiC,GAAAA,GAAAnhB,EAAA+N,KAAA,IACoT,KADlSsR,EAAA,YAAAA,EAAA,UAAAA,EAAA,SAAAA,EAAA,SAAAA,EAAA,UAAAjlB,EAAA+c,WAAA/c,EAAA+c,UAAAoX,YAAAp0B,GAAA,SAAAA,GAAAgnB,EAAA/mB,EAAAsa,SAAAqB,cAAA,KAAAtW,YAAAirB,KAAAjrB,YAAAirB,MAAAjrB,IAAAwd,GAAAxd,EAAAyjB,KAAAzjB,EAAAgO,GAAAqd,GAAA1T,KAAA3X,OAAA,2BAAAA,EAAAsrB,GAAAtrB,IAAA0hB,EAAA+L,KAAAtC,GAAAnrB,GAAA0hB,EAAAwK,aAAA,SAAAxxB,GAAA4J,EAAAyqB,YACzMrN,EAAAwK,aAAA,oBAAA5nB,EAAA2Q,SAAA+Z,YAAA,cAAA1qB,EAAA2qB,eAAA,cAAAt0B,EAAA,GAAA+mB,EAAAwN,cAAA5qB,GAAAod,MAAmIpd,EAAAyqB,YAAArN,EAAA/mB,EAAA6lB,KAAA,GAAA9lB,EAAAgnB,GAAApd,EAAA6mB,GAAAnrB,GAAA0hB,IAAAyN,IAAAzP,EAAApb,EAAA,OAAuDA,EAAA,IAAAA,EAAA8T,QAAA,iBAAAsJ,EAAA0N,OAAA,KAAA3E,GAAA,2CAAAnmB,EAAA,0FAAuL4a,EAAA5a,GAAA,KAAAA,EAAAonB,GAAApnB,GAAAod,EAAAzM,SAAAwL,MAAAgL,GAAAnnB,IAAAod,EAAAzM,SAAApB,WAAA6N,EAAA/mB,EAAA6lB,KAAA2K,GAAAnrB,GAAAtF,EAAAgnB,KAAApd,EAAA+qB,WAAA3N,EAAA0N,OAAA,MAA0H1N,EAAA,IAASA,EAAA4N,QAAU,MAAA70B,IAAU,MAAAinB,GACxgB,QAAA6N,IAAAjrB,GAAe,UAAAnB,GAAA,SAAAnD,GAAyB,QAAAtF,KAAaytB,GAAA,KAAA1lB,KAAA,WAAwB,GAAA6B,MAAAkrB,OAAoB,MAAA90B,IAApBsF,OAAsC,MAAAtF,OAA2D,QAAA+0B,MAAc,GAAAnrB,GAAA,IAAW,WAAAnB,GAAA,SAAAnD,GAAyB,YAAAmF,GAAA8P,SAAAya,WAAA1vB,KAAAsE,EAAA,WAAoDtE,KAAIumB,GAAAztB,OAAA,OAAAwL,MAAsBxJ,EAAA,SAAAkF,GAAoC,KAAnBqnB,IAAAvuB,OAAA,OAAAwL,GAAmBtE,IAClV,QAAA2vB,MAAc,MAAAC,QAAA,IAAAH,KAAAhtB,KAAA,WAAuC,UAAAU,GAAA,SAAAmB,EAAAtE,GAA2B,GAAAtF,GAAAyK,GAAA8P,SAAAta,EAAAmO,WAAA,WAAyC9I,EAAA2K,MAAA,qCAA4C,IAAMjQ,GAAAsb,iBAAA,yBAA4C7K,aAAAxQ,GAAgB2J,MAAI,OAAO2d,EAAAtX,MAAA,uDAAiE,QAAAilB,IAAAtrB,GAAwB,MAATA,MAAA+oB,OAAS,UAAAwC,OAAAvrB,EAAA+lB,cAAAhS,MAAA,6BAA4E,QAAAyX,MAAc,GAAAxrB,GAAAa,GAAArM,MAAe,KAAI,SAAAwL,QAAAiqB,KAAsB,MAAAvuB,GAAS,UACvd,QAAA+vB,MAAc,sBAAA5qB,IAAArM,QAAA,kBAAAqM,IAAAmQ,cAAsE,QAAA0a,MAAc,MAAAn3B,IAAAkP,SAAA1N,eAAA,6BAAAxB,GAAAkP,SAAA1N,eAAA,eAAA01B,KAAA,mBAA6I,QAAAE,MAAc,GAAA3rB,GAAA0rB,IAAW,uBAAA1rB,GAAA,SAAAA,EACxQ,QAAAupB,IAAAvpB,GAAe,GAAAtE,GAAAsE,EAAA+lB,aAAsB,OAAA3K,GAAA1f,EAAA,WAAA0f,EAAA1f,EAAA,SAAA0f,EAAA1f,EAAA,kBAA2D0f,EAAA1f,EAAA,uBAAoC0f,EAAA1f,EAAA,SAAA0f,EAAA1f,EAAA,iBAA2C0f,EAAA1f,EAAA,gBAA6B0f,EAAA1f,EAAA,YAAA4uB,GAA6BlP,EAAA1f,EAAA,gBAA6B0f,EAAA1f,EAAA,2BAAwC0f,EAAA1f,EAAA,kBAA8B0f,EAAA1f,EAAA,YAAA0f,EAAA1f,EAAA,YAAA0f,EAAA1f,EAAA,WAAA0f,EAAA1f,EAAA,YAAA0f,EAAA1f,EAAA,aAAA0f,EAAA1f,EAAA,WAAA0f,EAAA1f,EAAA,SAAoH0f,EAAA1f,EAAA,sBAAkCsE,IAAA+T,MAAA,qCACle,GAAA/T,EAAAtK,OAAAsK,EAAA,GAA2D,QAAnCwpB,GAAe,SAAqF,QAAAoC,IAAA5rB,EAAAtE,GAAiBA,OAAQ,IAAaO,GAAb7F,KAAAC,IAAgB,KAAA4F,IAAA/E,IAAAb,EAAAa,GAAA+E,KAAA,CAAwB,KAAAA,EAAA,EAAQA,EAAAP,EAAAhG,OAAWuG,QAAA,KAAA5F,EAAAqF,EAAAO,YAAA5F,GAAAqF,EAAAO,IAAA7F,EAAAR,KAAA8F,EAAAO,IAAyL,OAAzH7F,GAAAy1B,OAASnwB,EAAAtF,EAAIsF,EAAAhG,SAAAgG,GAAA,qBAAmCtF,EAAAs1B,KAAO,YAAAt1B,GAAAC,EAAA0yB,KAAA3yB,EAAAmzB,GAAAlzB,IAAA,WAAAD,IAAAC,EAAA0yB,KAAA3yB,EAAAmzB,GAAAlzB,GAAA,IAAAD,GAAkEA,EAAA,WAAA4J,EAAA,IAAAtE,EAAAsO,KAAA,KAAsC,QAAA+e,MAAa,MAAAloB,IAAAuS,WAAAvS,GAAAuS,UAAA0Y,WAAA,GAC5b,QAAAC,IAAA/rB,EAAAtE,GAAgBsE,IAAAqU,MAAA,KAAe3Y,KAAAmF,EAAO,QAAAzK,GAAA,EAAYA,EAAA4J,EAAAtK,QAAA,gBAAAgG,IAAA,MAAAA,EAAwCtF,IAAAsF,IAAAsE,EAAA5J,GAAsC,OAAxBA,IAAA4J,EAAAtK,SAAAgG,MAAA,IAAwBA,EAAS,QAAAswB,MAAc,IAAI,GAAAhsB,GAAAa,GAAAorB,aAAAvwB,EAAAwwB,IAA4B,IAAAlsB,EAAA,MAAAA,GAAAmsB,QAAAzwB,EAAA,KAAAsE,EAAAosB,WAAA1wB,IAAAotB,QAAAjoB,GAAAwrB,UAAmE,MAAAj2B,GAAS,MAAAq1B,SAAA5qB,GAAAwrB,UAA2B,SAAS,QAAAC,MAAc,OAAAC,MAAA,sBAAAhB,MAAAD,QAAAK,MAAAK,OAAAP,KAAmE,QAAAc,MAAc,gBAAAhB,MAAA,WAAAA,KAAsC,QAAAA,MAAc,MAAA1qB,IAAAub,UAAAvb,GAAAub,SAAAC,UAAA,KAC1b,QAAAmQ,IAAAxsB,GAAwB,MAATA,MAAA+oB,MAASU,GAAAzpB,IAAAupB,GAAAvpB,IAAAsqB,GAA8B,QAAAmC,IAAAzsB,GAAe,gBAAAA,EAAA,KAAAooB,GAAApoB,GAAwC,QAAA0sB,IAAA1sB,GAAe,GAAQ5J,GAARsF,IAAW,KAAAtF,IAAA4J,KAAAjK,eAAAK,IAAA,OAAA4J,EAAA5J,QAAA,KAAA4J,EAAA5J,KAAAsF,EAAAtF,GAAA4J,EAAA5J,GAAwE,OAAAsF,GAAS,QAAAixB,IAAA3sB,GAAe,UAAAA,EAAA,MAAAoM,MAAAC,MAAArM,GAAiC,QAAAksB,IAAAlsB,GAAe,MAAAA,IAAAqR,QAAAoD,MAAA,IAAApD,KAAAC,UAAoD,QAAAsb,IAAA5sB,GAAwB,MAATA,MAAA+oB,KAAS,UAAAQ,GAAAvpB,OAAA+lB,cAAAhS,MAAA,oBACnW,QAAA8Y,MAAc,GAAA7sB,GAAAa,GAAAisB,MAAe,IAAA9sB,KAAA+oB,EAAA,OAAArtB,KAAAsE,GAAA+oB,EAAA,GAAA/oB,EAAA+oB,EAAArtB,GAAAiB,EAAAqD,EAAA+oB,EAAArtB,GAAAiB,MAAAqD,EAAA+oB,EAAArtB,GAAAqxB,EAAA/sB,EAAA+oB,EAAArtB,GAAAqxB,MAAA/sB,EAAA+oB,EAAArtB,GAAAiB,EAAAqD,EAAA+oB,EAAArtB,GAAAqxB,EAAAltB,SAAAG,EAAAgtB,GAAA,OAAA52B,GAAA,EAAsHA,EAAA4J,EAAAgtB,GAAAt3B,OAAcU,IAAA4J,EAAAgtB,GAAA52B,GAAA,KAAiB,QAAA62B,MAAc,GAAAjtB,GAAAa,GAAAuS,SAAkB,QAAApT,GAAA,iBAAAA,GAAAktB,SAAAX,MAAA,sBAAAhB,UAAA,KAAAvrB,EAAAmtB,YAAAntB,EAAAktB,OAAyH,QAAAE,IAAAptB,EAAAtE,GAAiB,GAAAsE,EAAAtE,EAAA,KAAA2K,OAAA,8CAAkEzK,MAAAxF,EAAA4J,EAASpE,KAAAF,IAASsE,EAAA+oB,KAAMrtB,EAAAgwB,KAAO9vB,KAAAoE,EAAAypB,GAAAzpB,IAAA,gBAAAtE,EACpY,QAAA2xB,MAAc,GAAArtB,GAAAa,GAAA8P,QAAiB,QAAA3Q,OAAA,KAAAA,EAAAstB,iBAAA,WAAAttB,EAAAstB,gBAAiF,QAAAC,MAAc,GAAAvtB,GAAAa,GAAA8P,SAAAjV,EAAA,IAAwB,OAAA2xB,QAAArtB,EAAA0d,IAAA,GAAA7e,GAAA,SAAAzI,GAAuCsF,EAAA,WAAa2xB,OAAArtB,EAAAijB,oBAAA,mBAAAvnB,GAAA,GAAAtF,MAA4D4J,EAAA0R,iBAAA,mBAAAhW,GAAA,KAA4ClF,EAAA,SAAAJ,GAAgE,KAA/C4J,GAAAijB,oBAAA,mBAAAvnB,GAAA,GAA+CtF,IAC3a,QAAAo3B,IAAAxtB,GAAe,IAAI,GAAAtE,GAAA,GAAAoX,MAAAiN,SAAA/f,EAAA,IAA+B,KAAA+kB,MAAArpB,EAAAsX,aAAA,SAAAK,KAAArT,GAAA,MAAAtE,GAAA+xB,cAAiE,MAAAr3B,IAAU,YAAY,QAAAs3B,MAAc,SAAA3B,GAAA,uBAAAlrB,MAAAkrB,GAAA,kBAAAlrB,KAA8Q,QAAA8sB,IAAA3tB,EAAAtE,EAAAtF,GAAkBw3B,GAAA/3B,OAAAY,eAAAuJ,EAAAtE,GAA8BhF,cAAA,EAAAC,YAAA,EAAAW,MAAAlB,IAAsC4J,EAAAtE,GAAAtF,EAAS,QAAAy3B,IAAA7tB,EAAAtE,GAAgB,GAAAA,EAAA,OAAAtF,KAAAsF,KAAA3F,eAAAK,IAAAu3B,GAAA3tB,EAAA5J,EAAAsF,EAAAtF,IAAqD,QAAA03B,IAAA9tB,GAAe,GAAAtE,KAAgB,OAAPmyB,IAAAnyB,EAAAsE,GAAOtE,EAAS,QAAAqyB,IAAA/tB,GAAe,GAAQ5J,GAARsF,IAAW,KAAAtF,IAAA4J,KAAAjK,eAAAK,KAAAsF,EAAAtF,GAAA4J,EAAA5J,GAA4C,OAAAsF,GACvrB,QAAAsyB,IAAAhuB,EAAAtE,GAAiB,IAAAA,MAAAhG,OAAA,QAA0B,KAAAsK,EAAA,QAAe,QAAA5J,GAAA,EAAYA,EAAAsF,EAAAhG,OAAWU,IAAA,CAAK,GAAAC,GAAA2J,EAAAtE,EAAAtF,GAAc,aAAAC,GAAA,OAAAA,GAAA,KAAAA,EAAA,SAAyC,SAAS,QAAA43B,IAAAjuB,GAAe,GAAAtE,GAAAsE,CAAQ,oBAAAA,IAAA,MAAAA,EAAA,CAAgCtE,EAAA,UAAAsE,QAAqB,QAAA5J,KAAA4J,GAAA2tB,GAAAjyB,EAAAtF,EAAA63B,GAAAjuB,EAAA5J,KAA+B,MAAAsF,GAAU,QAAAwyB,IAAAluB,GAAe,GAAAtE,MAAQtF,EAAA4J,EAAAmuB,IAAA93B,EAAA2J,EAAAouB,GAAyB,MAARpuB,IAAAquB,MAAQruB,GAAAsuB,KAAAl4B,EAAA,KAAAiQ,OAAA,8BAA4D3K,GAAA6yB,IAAAl4B,GAAA,KAAcqF,EAAA8yB,IAAAp4B,GAAA,KAAcu3B,GAAA/xB,KAAA6yB,GAAAzuB,GAAa2tB,GAAA/xB,KAAA8yB,GAAAT,GAAAvyB,IAAoI,QAAAqxB,IAAA/sB,EAAAtE,GAAgBE,KAAA8H,KAAAirB,GAAA3uB,EAAepE,KAAAsN,QAAAxN,GAAAkzB,GAAA5uB,IAAA,GAA0J,QAAA6uB,IAAA7uB,GAAe,GAAAtE,GAAAsE,KAAA0D,IAAgB,OAAAhI,GAAA,GAAAqxB,IAAArxB,EAAA4oB,UAAAqK,GAAAj5B,QAAAsK,EAAAkJ,SAAA,KAcrS,QAAA4lB,IAAA9uB,GAAe,GAAAtE,GAAAsE,EAAA+uB,GAAY,aAAArzB,EAAA,SAAAqxB,IAAA,uBAA8D,oBAAArxB,IAAA,gBAAAA,OAAAhG,OAAA,SAAAq3B,IAAA,uBAA2FnxB,MAAAwhB,EAAA1hB,EAASE,KAAAF,EAAAE,KAAAoE,EAAA,KAAmBpE,KAAAsD,GAAA,CAAU,IAAA9I,GAAA4J,EAAAgvB,GAAY,IAAA54B,GAAA,gBAAAA,GAAA,CAA2BsF,EAAAtF,EAAA64B,GAAQ,IAAA54B,GAAAD,EAAA84B,GAAoB,IAAR94B,IAAA+4B,IAAQ,gBAAAzzB,MAAAhG,OAAA,CAA2C,GAATkG,KAAAoE,EAAAtE,MAAS,KAAArF,GAAA,iBAAAA,GAAA,SAAA02B,IAAA,iBAAAmC,GAAA,8CAA0I,IAAXtzB,KAAAsD,IAAA7I,MAAW,KAAAD,IAAA,gBACz6BA,IAAA,gBAAAA,OAAAV,QAAA,SAAAq3B,IAAA,iBAAAoC,GAAA,uDAAkIvzB,MAAAF,EAAAtF,GAAA,SAAe,CAAK,YAAAsF,EAAA,SAAAqxB,IAAA,iBAAAkC,GAAA,uDAAkH,aAAA54B,OAAA,KAAAD,EAAA,SAAA22B,IAAA,iCAA4F,aAAA32B,EAAA,SAAA22B,IAAA,iBAAAiC,GAAA,sDAAkI,IAAZpzB,KAAA8C,EAAA,MAAYhD,EAAAsE,EAAAovB,MAAA,gBACte1zB,IAAA,oBAAAA,IAAA2zB,MAAA3zB,EAAAhG,OAAAkG,KAAA8C,EAAAhD,MAAgE,aAAAA,EAAA,SAAAqxB,IAAA,iBAAAsC,GAAA,4DAAmH,aAAA3zB,EAAA,SAAAqxB,IAAA,iBAAAqC,GAAA,sDAA8H,cAARpvB,IAAAsvB,MAAQ,iBAAAtvB,GAAA,SAAA+sB,IAAA,iBAAAuC,GAAA,8CAA+H1zB,MAAAxF,IAAA4J,EACrT,QAAAuvB,IAAAvvB,GAAe,GAAAtE,KAASA,GAAA8zB,YAAAxvB,EAAAod,EAAkB1hB,EAAA+zB,mBAAAzvB,EAAA5J,GAAyBsF,EAAAg0B,mBAAA1vB,OAAAtE,EAAAi0B,sBAAA3vB,EAAAtE,IAAAk0B,kBAAA5vB,EAAAd,GAAgFxD,EAAAm0B,YAAA7vB,EAAAtB,CAAkB,QAAAtI,KAAAsF,GAAA,OAAAA,EAAAtF,UAAAsF,GAAAtF,EAAwC,OAAAsF,GAAU,QAAAo0B,IAAA9vB,GAAe,MAAA+vB,IAAA/vB,EAAA,SAAAA,GAAyC,MAAjBA,KAAA8Q,SAAA,IAAiB,EAAA9Q,EAAAtK,OAAAsK,EAAA,IAAAA,IAA0BgK,KAAA,IAAgC,QAAAgmB,IAAAhwB,GAAe,GAAAtE,GAAA,EAAsD,OAA7Cu0B,IAAAjwB,EAAA,SAAAA,GAAiBtE,GAAAgO,OAAAC,aAAA3J,KAA4BtE,EAAS,QAAAu0B,IAAAjwB,EAAAtE,GAAiB,QAAAtF,GAAAsF,GAAc,KAAKrF,EAAA2J,EAAAtK,QAAW,CAAE,GAAAU,GAAA4J,EAAA+L,OAAA1V,KAAA4F,EAAAi0B,GAAA95B,EAA4B,UAAA6F,EAAA,MAAAA,EAAoB,mBAAAoX,KAAAjd,GAAA,KAAAiQ,OAAA,oCAAAjQ,GAA8E,MAAAsF,GAASy0B,IAAK,QAAA95B,GAAA,IAAa,CAAE,GAAA4F,GAAA7F,GAAA,GAAAsI,EAAAtI,EAAA,GAAAgnB,EAAAhnB,EAAA,IAAAD,EAAAC,EAAA,GAAmC,SAAAD,IAAA,IAAA8F,EAAA,KAAwBP,GAAAO,GAAA,EAAAyC,GAAA,GAAa,IAAA0e,IAAA1hB,EAAAgD,GAAA,MAAA0e,GAAA,OAAAjnB,GAAAuF,EAAA0hB,GAAA,MAAAjnB,KACtyB,QAAAg6B,MAAc,IAAAC,GAAA,CAAQA,MAAMF,KAAM,QAAAlwB,GAAA,EAAY,GAAAA,EAAKA,IAAAowB,GAAApwB,GAAA,oEAAA+L,OAAA/L,GAAAkwB,GAAAE,GAAApwB,MAAA,IAAAA,IAAAkwB,GAAA,oEAAAnkB,OAAA/L,QAAmM,QAAAqwB,IAAArwB,GAAepE,KAAAxF,EAAA4J,EAAAswB,IAAaC,KAAK30B,KAAAoE,IAAAwwB,aAAAxwB,EAAAzL,UAAAyL,EAAAzL,SAAAk8B,kBAAA,KAAoE70B,KAAAF,IAAAsE,EAAA0wB,cAAA,aAAA90B,KAAAoE,EAAsF,QAAA2wB,IAAA3wB,GAA8B,GAAfA,IAAAqU,MAAA,KAAe,GAAArU,EAAAtK,OAAA,WAA2BsK,KAAA,EAAO,QAAAtE,IAAA,EAAAsE,EAAAtK,OAAA,KAAAU,EAAA,EAA+BA,EAAAsF,EAAItF,IAAA4J,GAAA,GAAW,KAAI,GAAA3J,GAAA+V,KAAAC,MAAA2jB,GAAAhwB,GAAwB,IAAA3J,EAAAi6B,KAAAj6B,EAAAu6B,KAAAv6B,EAAAw6B,KAAAx6B,EAAAy6B,IAAA,UAAAT,IAAAh6B,GAA+C,MAAA4F,IAAU,YAAma,QAAA80B,IAAA/wB,GAAe,OAAAtE,KAAAs1B,IAAA,GAAAA,GAAAt1B,GAAAmf,IAAA7a,EAAA,MAAAgxB,IAAAt1B,EAA4C,aAAa,QAAAu1B,IAAAjxB,GAAe,GAAAtE,KAASA,GAAA,gBAAAw1B,GAAqBx1B,EAAA,cAAAy1B,GAAmBz1B,EAAA,cAAA01B,GAAmB11B,EAAA,eAAA21B,EAAoB,IAAAj7B,GAAA4J,KAAAsxB,GAAe,KAAI,GAAAl7B,EAAA,MAAAsF,GAAAtF,GAAA,GAAAsF,GAAAtF,GAAA4J,GAAA,GAAAuxB,IAAAvxB,EAAuC,aAAAA,EAAAwxB,IAAA,UAAAC,IAAAzxB,GAA+C,MAAA3J,IAAU,YACzzC,QAAAo7B,IAAAzxB,GAAe,GAAAtE,GAAAsE,EAAAsxB,GAAY,KAAA51B,GAAAsE,EAAAwxB,IAAA,CAAc,GAAAp7B,GAAAu6B,GAAA3wB,EAAAwxB,IAAgBp7B,MAAA4J,IAAAtE,EAAAtF,EAAA4J,GAAgB,IAAAtE,EAAA,KAAA2K,OAAA,gCAAmD,cAAA3K,GAAA,UAAAA,MAAA,MAAsCtF,GAAA,MAAK,KAAA4J,EAAA0xB,UAAAt7B,IAAA4J,EAAA0xB,UAAA,0CAAA1xB,EAAA2xB,OAAAv7B,GAAA,GAA0Gu3B,GAAA/xB,KAAA,aAAAF,GAAuBiyB,GAAA/xB,KAAA,YAAAxF,GAAsB,QAAAm7B,IAAAvxB,GAAeyxB,GAAAv8B,KAAA0G,KAAAoE,GAAgBA,EAAA2sB,GAAA3sB,EAAA4xB,aAAA,MAA0BjE,GAAA/xB,KAAA,UAAAqyB,GAAAjuB,QACvX,QAAAkxB,IAAAlxB,GAA+B,GAAhBuxB,GAAAr8B,KAAA0G,KAAAoE,GAAgB,gBAAApE,KAAAi2B,WAAA,KAAAxrB,OAAA,wBAAiF,QAAA+qB,IAAApxB,GAA+B,GAAhBuxB,GAAAr8B,KAAA0G,KAAAoE,GAAgB,cAAApE,KAAAi2B,WAAA,KAAAxrB,OAAA,uBAAqEsnB,IAAA/xB,KAAA,WAAAA,KAAAk2B,SAAAl2B,KAAAk2B,QAAAC,OAAA,MAAmE,QAAAZ,IAAAnxB,GAA+B,GAAhBuxB,GAAAr8B,KAAA0G,KAAAoE,GAAgB,cAAApE,KAAAi2B,WAAA,KAAAxrB,OAAA,wBACtT,QAAAgrB,IAAArxB,GAA+B,GAAhBuxB,GAAAr8B,KAAA0G,KAAAoE,GAAgB,eAAApE,KAAAi2B,WAAA,KAAAxrB,OAAA,uBAAsEsnB,IAAA/xB,KAAA,WAAAoE,EAAAgyB,YAAA,MAA+C,QAAAC,IAAAjyB,GAAepE,KAAAoE,EAAAqlB,GAAArlB,GAAc,QAAAkyB,IAAAlyB,GAAe,GAAAtE,GAAA2pB,GAAArlB,GAAA5J,EAAAgvB,GAAA1pB,EAAA,QAAArF,EAAA+uB,GAAAC,GAAAjvB,GAAA,OAAqE,OAAvBsF,GAAA0pB,GAAA1pB,EAAA,gBAAuB0pB,GAAAC,GAAA3pB,GAAA,SAAAA,GAAArF,GAAAD,GAAA4J,EAAqC,QAAAmyB,IAAAnyB,EAAAtE,GAAiB,MAAAsE,GAAA7B,KAAA,SAAA6B,GAA0B,GAAAA,EAAAoyB,IAAA,CAAS,GAAAh8B,GAAAu6B,GAAA3wB,EAAAoyB,IAAe,KAAAh8B,GAAAsF,GAAAtF,IAAA,SAAA22B,IAAA,gBAA2C,OAAA/sB,GAAS,SAAA+sB,IAAA,mBAA8Bv2B,EAAA,SAAAwJ,GAAgB,KAAAA,MAAA0D,MAAA1D,EAAA0D,MAAAirB,GAAA,oBAAA5B,IAAA,iBAAA/sB,IAC/c,QAAAqyB,IAAAryB,EAAAtE,EAAAtF,GAAmB,GAAAsF,EAAA42B,SAAA52B,EAAA62B,YAAA72B,EAAA42B,SAAA3E,GAAA/xB,KAAA,UAAAF,EAAA42B,SAAA52B,EAAA62B,aAAA5E,GAAA/xB,KAAA,cAAAF,EAAA62B,iBAAsH,KAAA72B,EAAA82B,aAAA92B,EAAA+2B,iBAAgH,SAAA1F,IAAA,oDAAhHY,IAAA/xB,KAAA,cAAAF,EAAA82B,YAAA7E,GAAA/xB,KAAA,SAAAF,EAAA+2B,kBAAsL9E,GAAA/xB,KAAA,aAAAoE,GAAuB2tB,GAAA/xB,KAAA,eAAAxF,GACpR,QAAAs8B,IAAA1yB,GAAe,GAAAtE,KAA6J,OAApJsE,GAAAsyB,UAAA52B,EAAAi3B,SAAA3yB,EAAAsyB,SAAkCtyB,EAAAuyB,cAAA72B,EAAAk3B,aAAA5yB,EAAAuyB,aAA8CvyB,EAAA6yB,SAAAn3B,EAAAo3B,mBAAA9yB,EAAA6yB,QAA0Cn3B,EAAAm2B,WAAA7xB,EAAA6xB,YAAiCkB,SAAApN,MAAAjqB,GAAAs3B,WAAA,oBACG,QAAAC,IAAAjzB,EAAAtE,GAAiBE,KAAAknB,GAAApnB,MAAcmyB,GAAAjyB,MAAQi2B,WAAA7xB,EAAAkzB,iBAAA,IAAkCt3B,KAAAiiB,MAAWjiB,KAAA6f,IAAAsV,GAAA/wB,QAAkB4a,IAAA,KAAWhf,KAAAu3B,GAAA,KAAoE,QAAAC,IAAApzB,GAAcizB,GAAA/9B,KAAA0G,KAAAoE,EAAAqzB,IAAmBz3B,KAAAoE,KACjH,QAAAszB,MAAcF,GAAAl+B,KAAA0G,KAAA,gBAC3W,QAAA23B,IAAAvzB,GAAe,IAAAA,EAAA,SAAA+sB,IAAA,oFAAuG,IAAArxB,GAAAsE,CAAgC,OAAxBC,GAAAD,KAAAtE,EAAAsE,EAAAuyB,cAAwB,GAAAe,KAAAE,WAAA,KAAA93B,GAAkC,QAAA+3B,MAAcL,GAAAl+B,KAAA0G,KAAA,cAA8G,QAAA83B,IAAA1zB,GAAe,IAAAA,EAAA,SAAA+sB,IAAA,oFAAuG,IAAArxB,GAAAsE,CAAgC,OAAxBC,GAAAD,KAAAtE,EAAAsE,EAAAuyB,cAAwB,GAAAkB,KAAAD,WAAA,KAAA93B,GAC1c,QAAAi4B,MAAcP,GAAAl+B,KAAA0G,KAAA,cAA0BA,KAAAie,GAAA,WAAuG,QAAA+Z,IAAA5zB,EAAAtE,GAAiB,GAAAtF,GAAA4J,CAA4C,OAApCC,GAAAD,KAAA5J,EAAA4J,EAAAsyB,QAAA52B,EAAAsE,EAAAuyB,cAAoC,GAAAoB,KAAAH,WAAAp9B,EAAAsF,GAA+B,QAAAm4B,MAAcZ,GAAA/9B,KAAA0G,KAAA,cAAAk4B,IACzP,QAAAC,IAAA/zB,EAAAtE,GAAiB,GAAAtF,GAAA4J,CAAoD,IAA5CC,EAAA7J,QAAUo8B,WAAAxyB,EAAAyyB,iBAAA/2B,KAAkCtF,EAAAo8B,aAAAp8B,EAAAq8B,iBAAA,SAAA1F,IAAA,gGAAmJ,WAAAsF,IAAA,cAAAj8B,EAAA,eAA6C,QAAA49B,IAAAh0B,EAAAtE,EAAAtF,GAAmBwF,KAAAoE,IAASpE,KAAAF,IAASiyB,GAAA/xB,KAAA,yBAAgC+xB,GAAA/xB,KAAA,eAAAxF,IAAA8V,GAAA+nB,0BAAA/nB,GAAA+nB,0BAAA/nB,GAAAgoB,+BAE1U,QAAAhoB,MAAa2hB,GAAAjyB,MAAQi2B,WAAA,WAAAqB,iBAAA,IAA2C,QAAAiB,IAAAn0B,EAAAtE,GAAyB,KAARA,EAAA04B,GAAA14B,IAAQ,SAAAqxB,IAAA,uCAA0D,WAAAiH,IAAAh0B,EAAAtE,EAAAwQ,GAAA+nB,2BAA+C,QAAAG,IAAAp0B,GAAeA,EAAAkyB,GAAAlyB,GAAQA,EAAA,GAAAiyB,IAAAjyB,EAAY,IAAAtE,GAAA0pB,GAAAplB,IAAA,gBAA8B,mBAAAolB,GAAAplB,IAAA,gBAAAtE,IAAA,KACnQ,QAAA24B,IAAAr0B,GAAe,KAAAA,EAAAib,IAAAjb,EAAAgb,IAAAhb,EAAAoa,IAAApa,EAAAs0B,GAAA,SAAAvH,IAAA,iBAA0DnxB,MAAAoE,IAAS2tB,GAAA/xB,KAAA,sBAA6B+xB,GAAA/xB,KAAA,wBAC6G,QAAA24B,IAAAv0B,GAAe,MAAAA,KAAAoa,IAAApa,IAAAs0B,GAAsBE,eAAAx0B,IAAAoa,GAAAqa,YAAAz0B,IAAAs0B,IAA0CI,YAAA10B,IAAAib,GAAAvX,KAAA1D,IAAAgb,IAC3S,QAAA2Z,IAAA30B,GAAe,IAAIpE,KAAAoE,KAAAzL,GAAAqgC,OAA0B,MAAAl5B,GAAS,SAAAqxB,IAAA,sOAAmPc,GAAAjyB,MAAQi2B,WAAA,QAAAqB,iBAAA,IAElN,QAAA2B,IAAA70B,EAAAtE,GAAiB,IAAAsE,EAAA,SAAA+sB,IAAA,0BAA6C,KAAArxB,EAAA,SAAAqxB,IAAA,4BAA+C,WAAAsH,KAAepZ,GAAAjb,EAAAgb,GAAAtf,IAC3N,QAAAo5B,IAAA90B,GAAe,GAAAA,EAAAw0B,gBAAAx0B,EAAAy0B,YAAA,UAAAJ,KAAkDja,GAAApa,EAAAw0B,eAAAF,EAAAt0B,EAAAy0B,aAAsC,IAAA/4B,GAAAsE,KAAA6xB,UAAsB,KAAAn2B,GAAA,aAAAA,EAAA,WAAkC,IAAAtF,GAAA4J,KAAA+0B,iBAAA1+B,EAAA2J,KAAAyyB,gBAAoDzyB,QAAAg1B,YAAoB,KAAI,OAAAt5B,GAAU,uBAAAk4B,IAAA5zB,EAAA5J,EAAiC,0BAAAm9B,IAAAn9B,EAAiC,wBAAAs9B,IAAAt9B,EAA+B,yBAAA29B,IAAA39B,EAAAC,EAAkC,mBAAA+8B,IAAA13B,GAAA83B,WAAAxzB,EAAA5J,IAA0C,MAAA6F,GAAS,aAC3a,QAAAg5B,IAAAj1B,GAAe,IAAAA,EAAAkzB,gBAAA,SAAAnG,IAAA,0BAA8D,QAAAmI,IAAAl1B,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAA4F,GAArEL,KAAAF,EAAAsE,EAASpE,KAAAxF,EAAAsF,GAAA,KAAeE,KAAA8C,EAAAtI,GAAA,KAAewF,KAAAsD,EAAA7I,GAAA,KAAeuF,KAAAoE,EAAA/D,GAAA,MAAeL,KAAA8C,IAAA9C,KAAAoE,EAA6H,SAAA+sB,IAAA,qBAA1G,IAAAnxB,KAAA8C,GAAA9C,KAAAoE,EAAA,SAAA+sB,IAAA,qBAAoD,IAAAnxB,KAAA8C,IAAA9C,KAAAsD,EAAA,SAAA6tB,IAAA,sBAAyN,QAAAoI,IAAAn1B,GAAuB,MAARA,SAAQA,EAAAigB,KAAA,GAAAiV,IAAAl1B,EAAAigB,KAAAjgB,EAAAo1B,QAAAp1B,EAAAq1B,YAAAr1B,EAAAs1B,UAAAt1B,EAAA3I,OAAAw3B,GAAA7uB,EAAA3I,QAAA,KAA4F,QAAAk+B,MAAc35B,KAAAF,EAAA,KAAYE,KAAAoE,KAA2S,QAAAw1B,IAAAx1B,GAAe,GAAAtE,GAAA,sBAAAtF,MAAA,GAAAC,EAAAgvB,GAAArlB,EAA6CA,GAAA3J,EAAAqF,EAAMrF,IAAAD,EAAM,oBAAAC,EAAAD,EAAAukB,EAAA,qMAAA3a,GAAA,QAAA3J,GAAA,SAAAA,EAAAD,EAAAukB,EAAA,qKAAA3a,GAAAtE,EAAA,8CACz8BqxB,GAAA73B,KAAA0G,KAAAF,EAAAtF,GAAyB,QAAAq/B,IAAAz1B,EAAAtE,EAAAtF,GAAmB22B,GAAA73B,KAAA0G,KAAAoE,EAAA5J,GAAiB4J,EAAAtE,MAAQsE,EAAA8d,IAAA6P,GAAA/xB,KAAA,QAAAoE,EAAA8d,IAA2B9d,EAAAs0B,GAAA3G,GAAA/xB,KAAA,cAAAoE,EAAAs0B,GAA+Bt0B,EAAAwzB,YAAA7F,GAAA/xB,KAAA,aAAAoE,EAAAwzB,YAC/H,QAAAkC,IAAA11B,GAAe,GAAAA,EAAA0D,KAAA,CAAW,GAAAhI,GAAAsE,EAAA0D,MAAA,EAAiB,IAAAhI,EAAAS,QAAAwyB,MAAAjzB,IAAA4oB,UAAAqK,GAAAj5B,QAA6C,IAAAU,IAAOo9B,WAAAsB,GAAA90B,GAAkB,IAAAA,EAAA21B,MAAAv/B,EAAA0nB,GAAA9d,EAAA21B,UAAwB,KAAA31B,EAAAy0B,YAAwC,UAAA1H,IAAArxB,EAAAsE,EAAAkJ,aAAA,GAAxC9S,GAAAk+B,EAAAt0B,EAAAy0B,YAA+E,UAAAgB,IAAA/5B,EAAAtF,EAAA4J,EAAAkJ,SAA6B,YAA8F,QAAA0sB,OAAmC,QAAAC,IAAA71B,GAAe,MAAAA,GAAA5J,IAAA4J,EAAA5J,EAAA4J,EAAAtE,KAAgC,QAAAo6B,OACra,QAAAC,IAAA/1B,GAAe,IAAAA,EAAAtB,GAAA,mBAAAs3B,iBAAA,mBAAAC,eAAA,CAAgF,OAAAv6B,IAAA,gFAAAtF,EAAA,EAA+FA,EAAAsF,EAAWtF,IAAA,CAAK,GAAAC,GAAAqF,EAAAtF,EAAW,KAAI,UAAA6/B,eAAA5/B,GAAA2J,EAAAtB,EAAArI,EAAkC,MAAA4F,KAAW,KAAAoK,OAAA,8FAA2G,MAAArG,GAAAtB,EAAqB,QAAAw3B,OAC1Y,QAAAC,MAAcv6B,KAAAoE,EAAA,GAAAo2B,gBAA0Bx6B,KAAAwvB,WAAA,EAAkBxvB,KAAAwW,mBAAA,KAA6BxW,KAAAy6B,aAAA,GAAqBz6B,KAAA06B,QAAA,EAAe16B,KAAA26B,WAAA,GAAmB36B,KAAAoE,EAAAw2B,OAAA75B,EAAAf,KAAAinB,GAAAjnB,MAA8BA,KAAAoE,EAAAy2B,QAAA95B,EAAAf,KAAAsiB,GAAAtiB,MAA+BA,KAAAoE,EAAA02B,WAAA/5B,EAAAf,KAAA+6B,GAAA/6B,MAAkCA,KAAAoE,EAAA42B,UAAAj6B,EAAAf,KAAA2lB,GAAA3lB,MAEjM,QAAAi7B,IAAA72B,EAAAtE,GAAiBsE,EAAAorB,WAAA1vB,EAAesE,EAAAoS,oBAAApS,EAAAoS,qBAA6H,QAAA0kB,IAAA92B,EAAAtE,EAAAtF,GAAmBwF,KAAA6Z,MAAAzV,EAAAtE,EAAAtF,MAAA,WAAoJ,QAAA2gC,IAAA/2B,GAAepE,KAAA8C,EAAAsB,EAASpE,KAAAF,EAAAE,KAAAxF,EAAAwF,KAAAoE,EAAA,KAA0B,QAAAg3B,IAAAh3B,EAAAtE,GAAiBE,KAAAtF,KAAA0J,EAAYpE,KAAAtE,MAAAoE,EAAmK,QAAAu7B,IAAAj3B,GAAe,MAAAA,GAAA5J,EAAA4J,EAAA5J,EAAkB4J,IAAAi3B,GAAAj3B,MAAsB2Z,EAAA,iCAAoC,MAC7rB,QAAAud,IAAAl3B,GAAem3B,QAAA,GAAAJ,IAAA,IAAAK,GAAA,IAAAD,MAAA/gC,EAAAihC,GAAsC,IAAA37B,EAAM,MAAAA,EAAA07B,GAAAp3B,IAAA,CAAetE,EAAA,GAAAq7B,IAAA/2B,EAAY,IAAA5J,GAAA4J,EAAA6nB,YAAA,KAAAxxB,EAAA2J,EAAA6S,OAAAzc,EAAA,EAAyCA,GAAA8gC,GAAAl3B,EAAA6S,OAAA,EAAAzc,IAAoBA,EAAAsF,IAAAtF,EAAAsF,MAActF,EAAAsF,EAAArF,GAAAqF,EAASA,EAAAsE,EAAA5J,EAAMghC,GAAAp3B,GAAAtE,EAAQ,MAAAA,GAAU,QAAA47B,IAAAt3B,EAAAtE,GAAgBsE,KAAAuF,IAAAgyB,GAAA77B,MAAA,IAAuB,QAAA87B,IAAAx3B,GAAepE,KAAA8C,EAAAsB,EAA+H,QAAAy3B,IAAAz3B,GAAe0jB,GAAAxuB,KAAA0G,MAAaA,KAAA5G,EAAAgL,EAASpE,KAAAwvB,WAAAsM,GAAmB97B,KAAA06B,OAAA,EAAc16B,KAAAy6B,aAAAz6B,KAAA26B,WAAA,GAAqC36B,KAAAwW,mBAAA,KAA6BxW,KAAAsD,EAAA,GAAAy4B,SAAmB/7B,KAAAF,EAAA,KAAYE,KAAAwhB,EAAA,MAAaxhB,KAAAxF,EAAA,GAAUwF,KAAAoE,GAAA,EAAUpE,KAAA8C,EAAAw4B,GAAA,yBAInR,QAAAU,IAAA53B,GAAeA,EAAAoS,oBAAApS,EAAAoS,mBAAAld,KAAA8K,GAAoD,QAAA63B,IAAA73B,GAAe0jB,GAAAxuB,KAAA0G,MAAaA,KAAAk8B,QAAA,GAAA7T,IAAoBroB,KAAAmnB,EAAA/iB,GAAA,KAAepE,KAAAxF,GAAA,EAAUwF,KAAA+hB,EAAA/hB,KAAAoE,EAAA,KAAmBpE,KAAAwhB,EAAAxhB,KAAAw3B,EAAAx3B,KAAA3G,EAAA,GAAwB2G,KAAA8C,EAAA9C,KAAAmwB,EAAAnwB,KAAA5G,EAAA4G,KAAAupB,GAAA,EAA+BvpB,KAAAsD,EAAA,EAAStD,KAAA3F,EAAA,KAAY2F,KAAAzF,EAAA4hC,GAAUn8B,KAAA4C,EAAA5C,KAAAsQ,GAAA,EACjiB,QAAA8rB,IAAAh4B,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB,GAAA+D,IAAA,KAAAqG,OAAA,0DAAArG,EAAA/K,EAAA,YAAmFyG,EAAatF,OAAA6hC,cAAA,MAA0Bj4B,EAAA/K,EAAAyG,EAAMsE,EAAAod,EAAA,GAAOpd,EAAAozB,EAAAh9B,EAAM4J,EAAAmlB,GAAA,EAAOnlB,EAAA5J,GAAA,EAAO4J,MAAA+iB,EAAA/iB,EAAA+iB,EAAA/iB,IAAAk4B,GAAAl4B,IAAuBA,EAAA2d,EAAAkY,GAAA71B,EAAA+iB,EAAA/iB,EAAA+iB,EAAAmV,IAAuBl4B,IAAAoS,mBAAAzV,EAAAqD,EAAA2e,GAAA3e,EAAiC,KAAIs3B,GAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAAA,gBAAAA,EAAA+rB,GAAA,EAAA/rB,IAAAkc,KAAA9lB,EAAAsF,EAAAgO,IAAA,GAAA1J,EAAA+rB,GAAA,EAAkE,MAAA3O,GAA8D,MAArDka,IAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAAA,sBAAAod,EAAAlU,cAA6CkvB,IAAAp4B,EAAAod,GAAe1hB,EAAArF,GAAA,EAAQ,IAAAqI,GAAA,GAAAulB,IAAAjkB,EAAA83B,QAAwB77B,IAAAwiB,GAAAxiB,EAAA,SAAA+D,EAAAtE,GAAsBgD,EAAAwlB,IAAAxoB,EAAAsE,KAAa/D,EAAAke,EAAAzb,EAAAslB,KAAY3tB,EAAAwK,GAAAw3B,UAAA38B,YAC3dmF,IAAAw3B,UAAWhe,EAAAie,GAAAliC,IAAA6F,GAAA5F,GAAAqI,EAAAwlB,IAAA,kEAAyFxlB,EAAA3E,QAAA,SAAAiG,EAAAtE,GAAwBE,KAAAoE,EAAAu4B,iBAAA78B,EAAAsE,IAA6BA,GAAIA,EAAA7J,IAAA6J,IAAAw4B,aAAAx4B,EAAA7J,GAA4B,mBAAA6J,UAAAy4B,kBAAAz4B,EAAAkM,IAAAlM,IAAAy4B,gBAAAz4B,EAAAkM,EAA8E,KAAIwsB,GAAA14B,GAAA,EAAAA,EAAAd,IAAAc,EAAAxB,EAAAm6B,GAAA34B,KAAAs3B,GAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAAA,oBAAAA,EAAAd,EAAA,0BAAAc,EAAAxB,IAAAwB,EAAAxB,GAAAwB,IAAAoH,QAAApH,EAAAd,EAAAc,IAAA42B,UAAAj6B,EAAAqD,EAAAqa,GAAAra,MAAA/J,EAAA2tB,GAAA5jB,EAAAqa,GAAAra,EAAAd,EAAAc,IAAAs3B,GAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAAA,oBAAAA,EAAAhL,GAAA,EAAAgL,IAAA44B,KAAAl9B,GAAAsE,EAAAhL,GAAA,EAAwN,MAAAooB,GAASka,GAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAC5e,eAAAod,EAAAlU,UAAAkvB,GAAAp4B,EAAAod,IAAoC,QAAAub,IAAA34B,GAAe,MAAAgpB,KAAAtJ,GAAA,oBAAA1f,GAAAoH,aAAA,KAAApH,EAAA42B,UAAkE,QAAAxc,IAAApa,GAAe,sBAAAA,EAAA+lB,cAA8N,QAAAqS,IAAAp4B,EAAAtE,GAAiBsE,EAAA5J,GAAA,EAAO4J,QAAAtB,GAAA,EAAAsB,IAAA64B,QAAA74B,EAAAtB,GAAA,GAAiCsB,EAAAod,EAAA1hB,EAAMo9B,GAAA94B,GAAM+4B,GAAA/4B,GACva,QAAA84B,IAAA94B,GAAeA,EAAAmlB,IAAAnlB,EAAAmlB,GAAA,EAAAnlB,EAAA4qB,cAAA,YAAA5qB,EAAA4qB,cAAA,UACf,QAAAoO,IAAAh5B,GAAe,GAAAA,EAAA5J,OAAA,KAAA6iC,GAAA,GAAAj5B,EAAA2d,EAAA,OAAAub,GAAAl5B,IAAA,GAAAm5B,GAAAn5B,GAAAs3B,GAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAAA,iDAAqH,IAAAA,EAAAhL,GAAA,GAAAkkC,GAAAl5B,GAAA4jB,GAAA5jB,EAAA2e,GAAA,EAAA3e,OAAmC,IAAAA,EAAA4qB,cAAA,uBAAAsO,GAAAl5B,GAAA,CAAsDs3B,GAAAt3B,EAAAtE,EAAAy8B,GAAAn4B,EAAA,qBAAgCA,EAAA5J,GAAA,CAAO,KAAI,GAAAsF,GAAAy9B,GAAAn5B,EAAYA,GAAA,OAAAtE,GAAY,mEAAAtF,IAAA,CAAyE,MAAA4J,EAAQ,SAAA5J,GAAA,EAAa,GAAAC,EAAM,MAAAA,EAAAD,GAAA,CAAW,GAAA6F,EAAM,IAAAA,EAAA,IAAAP,EAAA,CAAY,GAAAgD,IAAAsB,EAAA/K,EAAAyU,IAAAqK,MAAA8Q,IAAA,QAAqC,KAAAnmB,GAAAmC,GAAApM,MAAAoM,GAAApM,KAAA2nB,SAAA,CAAgC,GAAAgB,GAAAvc,GAAApM,KAAA2nB,SAAAC,QACte3d,GAAA0e,EAAAvK,OAAA,EAAAuK,EAAA1nB,OAAA,GAAyBuG,GAAAm9B,GAAA/lB,KAAA3U,IAAAqnB,cAAA,IAAiC1vB,EAAA4F,EAAI,GAAA5F,EAAA2J,EAAA4qB,cAAA,YAAA5qB,EAAA4qB,cAAA,eAA4D,CAAK,IAAI,GAAAz0B,GAAA,EAAA+iC,GAAAl5B,OAAAu2B,WAAA,GAAgC,MAAAt/B,GAASqgC,GAAAt3B,EAAAtE,EAAA,uBAAAzE,EAAAiS,SAAA/S,EAAA,GAA6C6J,EAAAod,EAAAjnB,EAAA,KAAAgjC,GAAAn5B,GAAA,IAAqB84B,GAAA94B,IAAO,QAAQ+4B,GAAA/4B,KAAQ,QAAA+4B,IAAA/4B,EAAAtE,GAAiB,GAAAsE,IAAA,CAAQ04B,GAAA14B,EAAM,IAAA5J,GAAA4J,IAAA3J,EAAA2J,EAAA2d,EAAA,GAAAjF,EAAA,IAA2B1Y,KAAA,KAASA,EAAA2d,EAAA,KAASjiB,GAAAsE,EAAA4qB,cAAA,QAA4B,KAAIx0B,EAAAgc,mBAAA/b,EAAuB,MAAA4F,IAAS+D,IAAAtE,IAAAsE,EAAAuF,IAAA8zB,GAAA,qDAAAp9B,EAAAiN,YAAA,MACjZ,QAAAwvB,IAAA14B,GAAeA,OAAAxB,IAAAwB,IAAA42B,UAAA,MAA+B52B,EAAA/J,IAAA4K,GAAAgG,aAAA7G,EAAA/J,GAAA+J,EAAA/J,EAAA,MAAoC,QAAAijC,IAAAl5B,GAAe,MAAAA,SAAAorB,WAAA,EAA4B,QAAA+N,IAAAn5B,GAAe,IAAI,SAAAk5B,GAAAl5B,OAAAs2B,QAAA,EAA6B,MAAA56B,GAAS,UAAU,QAAA49B,IAAAt5B,GAAe,IAAI,MAAAA,SAAAq2B,aAAA,GAA+B,MAAA36B,GAAS,MAAA47B,IAAAt3B,EAAAtE,EAAA,6BAAAA,EAAAwN,SAAA,IAC+K,QAAAivB,IAAAn4B,EAAAtE,GAAiB,MAAAA,GAAA,KAAAsE,EAAAozB,EAAA,IAAApzB,EAAA/K,EAAA,IAAAkkC,GAAAn5B,GAAA,IAK3b,QAAAu5B,IAAAv5B,EAAAtE,GAAiBE,KAAAsD,KAAUtD,KAAA4C,EAAAwB,EAASpE,KAAA3F,EAAAyF,GAAA,KAAeE,KAAA8C,EAAA9C,KAAAoE,GAAA,EAAiBpE,KAAAxF,MAAA,GAAcwF,KAAAmO,EAAAnO,KAAA+hB,EAAA/hB,KAAA5G,GAAA,EAAwB4G,KAAAwhB,EAAA,EAASxhB,KAAAF,EAAA,KAAYE,KAAA3G,EAAA,EAA8T,QAAAukC,IAAAx5B,EAAAtE,EAAAtF,GAAmB4J,KAAA,EAAOA,EAAA5J,IAAM4J,EAAAtB,GAAAhD,EAAO+9B,GAAAz5B,GACpe,QAAA05B,IAAA15B,GAAe,GAAAA,IAAA,CAAQ,IAAAA,EAAA+J,EAAA,SAAA4vB,IAAA35B,EAAwBA,GAAA+J,GAAA,GAA6D,QAAA6vB,IAAA55B,EAAAtE,GAAiBm+B,GAAA75B,EAAA,KAAAtE,MAAA,IAAoB,QAAAm+B,IAAA75B,EAAAtE,EAAAtF,EAAAC,GAAqB2J,EAAAd,EAAAtJ,MAAA8F,EAAAtF,EAAAC,IAAkB2J,KAAAy5B,GAAAz5B,GAA0K,QAAA85B,IAAA95B,GAAe,MAAA+5B,IAAA/5B,EAAAd,EAAA,SAAAc,GAA0B,MAAAnJ,GAAAmJ,EAAA,MAC3Y,QAAAy5B,IAAAz5B,GAAe,GAAAA,EAAAod,GAAApd,KAAA85B,GAAA95B,GAAA,CAAoB,GAAAtE,GAAAsE,EAAAod,EAAAhnB,EAAA4jC,GAAAt+B,EAAkBtF,KAAAyK,GAAAgG,aAAAzQ,EAAA4J,SAAAg6B,IAAAt+B,IAAsCsE,EAAAod,EAAA,EAAMpd,EAAAtE,IAAAsE,EAAAtE,EAAAzG,UAAA+K,GAAAtE,GAA0BA,EAAAsE,EAAA5J,CAAM,QAAAC,GAAAD,GAAA,EAAe4J,EAAAd,EAAAxJ,SAAAsK,EAAAhL,GAAiB,CAAE,GAAAiH,GAAA+D,EAAAd,EAAAlJ,QAAA0I,EAAAzC,EAAA,GAAAmhB,EAAAnhB,EAAA,EAAuC,IAAPA,IAAA,GAAOyC,EAAAsB,EAAAtB,EAAA0e,EAAA1e,EAAA,IAAiB,GAAAvI,GAAAuI,EAAAxJ,KAAA+G,GAAA+D,EAAA/J,EAAAyF,OAAuB,KAAAvF,IAAA6J,EAAAtB,EAAAsB,EAAAtB,IAAAvI,GAAAuF,GAAAvF,YAAAkQ,QAAArG,EAAA5J,EAAAsF,EAAAvF,IAA0DsjB,EAAA/d,IAAA,kBAAAmF,IAAAlD,SAAAjC,YAAAmF,IAAAlD,WAAAtH,GAAA,EAAA2J,EAAAhL,GAAA,GAA4E,MAAAiC,GAASyE,EAAAzE,EAAA+I,EAAAtB,GAAA,EAAAo7B,GAAA95B,KAAA5J,GAAA,IAA0B4J,EAAA5J,EAAAsF,EAAMrF,IAAAF,EAAAwG,EAAAqD,EAAA7J,EAAA6J,GAAA,GAAA3J,EAAAsG,EAAAqD,EAAA7J,EAAA6J,GAAA,GAAAtE,YAAA69B,KAAAM,GAAAn+B,EAAAvF,EAAAE,GAAAqF,EAAAiiB,GAAA,GAAAjiB,EAAAyC,KAAAhI,EAAAE,IAAgFD,IAAAsF,EACjf,GAAAu+B,IAAAv+B,GAAAs+B,GAAAt+B,EAAAsE,GAAAtE,EAAAsE,EAAAod,EAAA1hB,EAAAsE,GAA6B,QAAA25B,MAAc5vB,EAAA7U,KAAA0G,MAA8G,QAAAs+B,MAAcnwB,EAAA7U,KAAA0G,MAAoG,QAAAq+B,IAAAj6B,GAAepE,KAAAoE,EAAAa,GAAA2D,WAAA7H,EAAAf,KAAAxF,EAAAwF,MAAA,GAAsCA,KAAAF,EAAAsE,EAA8E,QAAAm6B,IAAAn6B,GAAe,GAAAtE,MAAQtF,EAAAsF,EAAAiV,mBAAAta,EAAAiwB,GAAAtmB,GAAA/D,EAAA0U,SAAAqB,cAAA,UAAAtT,GAAsEogB,GAAA7iB,EAAAoe,OAAA,IAAe+C,EAAA,GAAAmc,IAAAa,GAAA17B,GAAAvI,EAAA,KAAAc,EAAA,MAAAyE,EAAA0L,QAAA1L,EAAA0L,QAAA,GAC1X,OADib,GAAAnQ,IAAAd,EAAA3B,OAAAgQ,WAAA,WAAqC61B,GAAAp+B,GAAA,EAAS,IAAA+D,GAAA,GAAAs6B,IAAAC,GAAA,sCAAAlkC,EAAyDqjC,IAAAtc,GAAMoc,GAAApc,GAAA,EAAApd,IAAW/I,GAAAyH,EAAA2b,GAAAlkB,GAAY8F,EAAAu6B,OAAAv6B,EAAAmW,mBAAA,WAAyCnW,EAAAmvB,YAAA,UAAAnvB,EAAAmvB,YAAA,YAAAnvB,EAAAmvB,aAAAiP,GAAAp+B,EAAAP,EAAAspB,KAAA,EAAA7uB,GAAAinB,EAAA2F,MAA0F9mB,EAAAw6B,QAAA,WAAqB4D,GAAAp+B,GAAA,EAAA9F,EAAW,IAAA6J,GAAA,GAAAs6B,IAAAE,GAAA,8BACx1BnkC,EAAGqjC,IAAAtc,GAAMoc,GAAApc,GAAA,EAAApd,IAAYtB,EAAAhD,EAAA++B,eAAmB9e,EAAAjd,GAAMuhB,KAAA,kBAAAya,QAAA,UAAyCnT,GAAAtrB,EAAAyC,GAAQzC,EAAA+f,IAAAsK,GAAAtmB,GAAY26B,GAAAvkC,GAAAkc,YAAArW,GAAqBmhB,EAAS,QAAAud,IAAA36B,GAAe,GAAAtE,EAAM,QAAAA,GAAAsE,GAAA2Q,UAAAiqB,qBAAA,aAAAl/B,EAAAhG,OAAAgG,EAAA,GAAAsE,EAAAkS,gBAAyF,QAAAkoB,MAAc,GAAAx+B,WAAAkjB,GAAA,CAAkB,GAAA9e,GAAApE,KAAAkjB,EAAc9e,IAAA,UAAAA,EAAA66B,SAAAR,GAAAr6B,GAAA,EAAApE,KAAAye,KACrS,QAAAggB,IAAAr6B,EAAAtE,EAAAtF,GAAmB,MAAAA,GAAAyK,GAAAgG,aAAAzQ,GAA2B4J,EAAAw2B,OAAA9d,EAAY1Y,EAAAy2B,QAAA/d,EAAa1Y,EAAAoS,mBAAAsG,EAAwBhd,GAAAlH,OAAAgQ,WAAA,WAAgCxE,KAAAyc,YAAAzc,EAAAyc,WAAApK,YAAArS,IAA6C,GAAkB,QAAAs6B,IAAAt6B,EAAAtE,GAAiB,GAAAtF,GAAA,yBAAA4J,EAAA,GAAqCtE,KAAAtF,GAAA,KAAAsF,GAAeqO,EAAA7U,KAAA0G,KAAAxF,GAAewF,KAAA8H,KAAA1D,EAAoB,QAAA86B,IAAA96B,GAAepE,KAAA8C,EAAAsB,EACrT,QAAA+6B,IAAA/6B,EAAAtE,EAAAtF,GAA8e,GAA3dwF,KAAAF,EAAAsE,EAASA,EAAAtE,MAAQE,KAAA5G,EAAAgL,EAAAg7B,qBAAA,8CAA4Ep/B,KAAA3G,EAAA+K,EAAAi7B,oBAAAC,GAAgCt/B,KAAA8C,EAAAgd,EAAA1b,EAAAm7B,oBAAAC,IAAoCx/B,KAAAsD,EAAAc,EAAAq7B,kBAAA,8DAAyFz/B,KAAAwhB,EAAApd,EAAAs7B,iBAAAC,GAA6B3/B,KAAAoE,EAAA0b,EAAA1b,EAAAw7B,iBAAAC,IAAiCrlC,IAAAwF,KAAAoE,EAAA,oBAAA5J,EAAAwF,KAAA8C,EAAA,oBAAAtI,GAA+DA,EAAA,QAAAs1B,OAAet1B,EAAAyK,GAAAm1B,gBAAA5/B,GAAA7B,GAAAkP,SAAAi4B,MAAAnnC,GAAAkP,SAAAi4B,KAAA1F,kBACzZvK,KAAA,SAAAsB,IAAA,2EAA8FnxB,MAAAxF,MAAA,GAAcq1B,KAAA7vB,KAAAxF,EAAA,GAAAohC,IAAA/iC,MAAAk3B,KAAA/vB,KAAAxF,EAAA,GAAA0kC,IAAA1kC,GAAAwF,KAAAxF,EAAA,GAAA8/B,IAAqN,QAAAyF,IAAA37B,EAAAtE,GAAiBA,EAAAsE,IAAA,qBAAAtE,QAAAsE,KAAA,qBAClV,QAAA47B,IAAA57B,EAAAtE,GAAiBA,GAAAsE,IAAA,oBAAAtE,EAAAsE,EAAAtB,EAAA,oBAAAhD,UAAAsE,KAAA,0BAAAA,GAAAtB,EAAA,qBAAwH,QAAAm9B,IAAA77B,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,EAAA0e,GAA2B6P,MAAA3D,MAAAmC,KAAAzrB,EAAArD,EAAAqD,EAAA7J,EAAA6J,IAAA87B,QAAA,GAAAj9B,GAAA,SAAAmB,EAAAtE,GAAyDqgC,GAAA/7B,EAAAtE,MAAQsE,EAAArD,EAAAqD,EAAA+J,EAAA/J,MAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,EAAA0e,IAAAhnB,KAAA,MAGrO,QAAA2lC,IAAA/7B,EAAAtE,KAAiBlH,OAAAwnC,UAAoBC,YAAYC,QAAAl8B,KAAmBa,GAAAs7B,IAAA,aAAiB3nC,OAAAwnC,UAAiBC,YAAYC,QAAAl8B,IAAAtE,EAAA2K,MAAA,sBAAqEuzB,GAAAO,GAAzB5T,GAAA6V,IAAa5F,OAAA2F,MAAY,WAAoBzgC,EAAA2K,MAAA,wBAE3M,QAAAg2B,IAAAr8B,EAAAtE,GAAiB,UAAAmD,GAAA,SAAAzI,EAAAC,GAA2B,iBAAAqF,EAAA4gC,YAAA5gC,EAAA6gC,eAAA,sBAAA7gC,EAAA4gC,YAAA5gC,EAAAgI,KAAAm4B,GAAA77B,IAAAhL,EAAA,QAAA8f,mBAAA9U,EAAAtE,GAAA,SAAAsE,GAAgJA,IAAA3I,MAAAhB,EAAAmmC,GAAAx8B,MAAA4yB,cAAA5yB,EAAAu8B,cAAAnmC,EAAA4J,GAAA3J,EAAA,GAAA02B,IAAA,mBAAA12B,EAAA,GAAA02B,IAAA,4BAAsH,OAAApH,MAAAjqB,GAAAsE,EAAAtB,EAAAsB,EAAA/K,EAAA2B,OAAAP,EAAA,GAAA02B,IAAA,qBAClT,QAAA0P,IAAAz8B,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,GAAyB,GAAA0e,GAAAiI,GAAArlB,EAAAd,EAAAxD,EAAgBypB,IAAA/H,EAAA,MAAApd,EAAAtE,GAAegD,GAAAymB,GAAA/H,EAAA,KAAAmT,QAA6B,IAAAp6B,GAAA,OAAAC,CAAe,IAAAD,EAAA,OAAAc,KAAAZ,KAAAN,eAAAkB,IAAAkuB,GAAA/H,EAAAnmB,EAAAZ,EAAAY,GAAqD,WAAA4H,GAAA,SAAAnD,EAAAgD,GAA2Bm9B,GAAA77B,EAAAod,KAAA,SAAApd,GAA8BA,IAAA3I,MAAAqH,EAAA89B,GAAAx8B,EAAA/D,QAAsBP,EAAAsE,GAAAtB,EAAA,GAAAquB,IAAA,4BAA2C32B,EAAAD,MAAA,GAAAiyB,GAAAsE,GAAAr2B,IAAA2J,MAAAod,EAAAxmB,SAAuC,QAAA8lC,IAAA18B,GAAe,IAAA28B,GAAAtpB,KAAArT,EAAA21B,OAAA,SAAA5I,IAAA,iBAAmD,QAAA6P,IAAA58B,GAAe,SAAAA,IAAA08B,GAAA18B,GAC3Y,QAAA68B,IAAA78B,EAAAtE,GAAiB,MAAA+B,IAAAuC,EAAA88B,IAAeC,WAAArhC,EAAAshC,YAAAzQ,KAAArD,KAAA,qBAAsD/qB,KAAA,SAAA6B,GAAmB,MAAAA,GAAAi9B,mBAA4B,QAAAC,IAAAl9B,EAAAtE,GAAiB,MAAA+B,IAAAuC,EAAA88B,IAAeC,WAAArhC,EAAAshC,YAAAzQ,KAAArD,KAAA,qBAAsD/qB,KAAA,SAAA6B,GAAmB,MAAAA,GAAAm9B,oBAA6B,QAAAC,IAAAp9B,GAAe,MAAAvC,IAAAuC,EAAAq9B,OAAgBl/B,KAAA,SAAA6B,GAAmB,MAAAA,GAAAs9B,wBAAiC,QAAAC,IAAAv9B,GAAe,IAAAA,EAAAoyB,IAAA,SAAArF,IAAA,kBAC7W,QAAAyQ,IAAAx9B,GAAe,GAAAA,EAAAy0B,aAAAz0B,EAAAw0B,gBAAoC,IAAAx0B,EAAAy0B,cAAAz0B,EAAAw0B,eAAA,SAAAzH,IAAA,sBAAoE,CAAK,IAAA/sB,EAAA00B,YAAA,SAAA3H,IAAA,0BAAyD,KAAA/sB,EAAA0D,KAAA,SAAAqpB,IAAA,8BACwP,QAAA0Q,IAAAz9B,EAAAtE,GAAiB,MAAA+B,IAAAuC,EAAA09B,GAAAhiC,GAC9b,QAAAiiC,IAAA39B,EAAAtE,EAAAtF,GAAmB,MAAAqH,IAAAuC,EAAA49B,IAAetL,QAAA52B,EAAAmiC,eAAAznC,IAA6B,QAAA0nC,IAAA99B,GAAe,IAAAA,EAAAgzB,aAAAhzB,EAAAs1B,YAAAt1B,EAAA+yB,SAAA,SAAAhG,IAAA,kBAC9E,QAAAgR,IAAA/9B,GAAe,GAAAtE,GAAA,IAAwS,IAA7RsE,EAAAg+B,kBAAAh+B,EAAA0D,KAAA,2CAAAhI,EAAAg6B,GAAA11B,IAAA,oCAAAA,EAAAi+B,cAAAj+B,EAAA0D,KAAA,4BAAAhI,EAAAg6B,GAAA11B,IAAA,gBAAAA,EAAAi+B,cAAAj+B,EAAA0D,KAAA,uBAAAhI,EAAAg6B,GAAA11B,MAAAi+B,eAAAviC,EAAAwiC,GAAAl+B,EAAAi+B,eAA6RviC,EAAA,KAAAA,EAAa,KAAAsE,EAAAoyB,IAAA,SAAArF,IAAA,kBAAwC,QAAAoR,IAAAn+B,EAAAtE,GAA0C,MAAzBA,GAAA0iC,qBAAA,EAAyB3gC,GAAAuC,EAAAq+B,GAAA3iC,GAAiB,QAAA4iC,IAAAt+B,EAAAtE,GAA0C,MAAzBA,GAAA0iC,qBAAA,EAAyB3gC,GAAAuC,EAAAu+B,GAAA7iC,GACjd,QAAA8iC,IAAAx+B,EAAAtE,GAA0D,MAAzCA,GAAA0iC,qBAAA,EAAyB1iC,EAAA+iC,YAAA,EAAgBhhC,GAAAuC,EAAA0+B,GAAAhjC,GAAiB,QAAAijC,IAAA3+B,GAAe,IAAAA,EAAA4+B,QAAA,SAAA7R,IAAA,uBAM1F,QAAAtvB,IAAAuC,EAAAtE,EAAAtF,GAAkB,IAAA43B,GAAA53B,EAAAsF,EAAAmjC,GAAA,MAAAlhB,GAAA,GAAAoP,IAAA,kBAAgD,IAAA9wB,GAAA5F,EAAAqF,EAAAgjB,IAAA,MAAqB,OAAAhB,GAAAtnB,GAAA+H,KAAAzC,EAAA0f,GAAAjd,KAAA,WAAoE,MAA9BzC,GAAA+B,IAAArH,EAAA0oC,mBAAA,GAA8BrC,GAAAz8B,EAAAtE,EAAAqjC,SAAA1oC,EAAAD,EAAAsF,EAAAkkB,GAAAlkB,EAAA8hB,KAAA,KAA0Crf,KAAA,SAAA6B,GAAmB,MAAA/D,GAAA+D,IAAW7B,KAAAzC,EAAAiyB,GAAAxvB,KAAA,WAA4B,IAAAzC,EAAAsjC,EAAA,MAAA/iC,EAAiB,MAAAP,EAAAsjC,IAAA/iC,IAAA,SAAA8wB,IAAA,iBAA6C,OAAA9wB,GAAAP,EAAAsjC,KAAgB,QAAAd,IAAAl+B,GAAe,MAAAw8B,KAAWnlC,OAAOmO,SAAS0D,QAAAlJ,IAAU0D,KAAA,IAAAwF,QAAAlJ,KACjY,QAAAw8B,IAAAx8B,EAAAtE,GAAiB,GAAAtF,IAAA4J,EAAA3I,OAAA2I,EAAA3I,MAAAmO,QAAAxF,EAAA3I,MAAAmO,OAAA,QAAqD6I,QAAA,GAAahY,GAAO4oC,WAAA,kBAAAC,iBAAA,qBAAoE,IAAA9oC,EAAAC,EAAAD,GAAA,GAAA22B,IAAA12B,EAAAD,IAAA,WAAAA,EAAoCA,GAAA4J,EAAA3I,OAAA2I,EAAA3I,MAAA6R,SAAA,GAA+B7S,GAAG8oC,qBAAA,uBAAAC,oBAAA,wBAAAC,qBAAA,iBAAAC,mBAAA,gBAAAC,qBAAA,iBAAAC,cAAA,gBAAAC,iBAAA,iBAAAC,cAAA,gBACpOC,iBAAA,iBAAAC,aAAA,uBAAAC,wBAAA,wBAAAC,qBAAA,qBAAAC,iCAAA,4BAAAC,wBAAA,0BAAAC,wBAAA,0BAAAC,eAAA,iBAAAC,gBAAA,iBAAAC,iBAAA,sBAAAC,iBAAA,sBAAAC,iBAAA,iBAAAC,+BAAA,wBACAC,iBAAA,qBAAAC,cAAA,qBAAAC,eAAA,qBAAAC,iBAAA,mBAAAC,2BAAA,6BAAAC,eAAA,iBAAAC,4BAAA,oBAAAC,cAAA,gBAAAC,sBAAA,wBAAAC,eAAA,iBAAAC,qBAAA,uBAAAC,uBAAA,yBAAAC,aAAA,4BACAC,qBAAA,uBAAAC,qBAAA,0BAAAC,wBAAA,qBAAAC,uBAAA,yBAAAC,aAAA,4BAAAC,qBAAA,uBAAAC,qBAAA,0BAAAC,eAAA,iBAAAC,gBAAA,eAAAC,qBAAA,uBAAAC,6BAAA,2BAAAC,sBAAA,wBACAC,oBAAA,4BAAAC,wBAAA,0BAAAC,kBAAA,qBAAyIxmB,EAAAtlB,EAAAqF,OAAYA,KAAAtF,EAAA2d,MAAA,2BAAArY,EAAAhG,OAAAgG,EAAA,SAA6D,QAAAO,KAAA5F,GAAA,OAAAD,EAAA+F,QAAAF,GAAA,UAAA8wB,IAAA12B,EAAA4F,GAAAP,EAAyE,QAAjBA,GAAAsE,IAAAtE,EAAA+wB,GAAAzsB,IAAiB,GAAA+sB,IAAA,iBAAArxB,GAC3R,QAAA0mC,IAAApiC,GAAe,OAAAtE,KAAA2mC,IAAA,GAAAA,GAAA3mC,GAAAuT,KAAAjP,EAAA,MAAAA,GAAAqiC,GAAA3mC,IAAgD2/B,iBAAAr7B,EAAAwb,GAAAwf,oBAAAh7B,EAAA6b,GAAgD,aAAqD,QAAAymB,IAAAtiC,GAAepE,KAAAF,EAAAsE,EAASpE,KAAAoE,EAAA,KAAYpE,KAAAggB,GAAA2mB,GAAA3mC,MACxM,QAAA2mC,IAAAviC,GAAe,MAAAwiC,MAAArkC,KAAA,WAA4B,UAAAU,GAAA,SAAAnD,EAAAtF,GAA2B21B,GAAA,6BAAA7P,MAAqCumB,MAAA9xB,SAAArS,KAAAokC,IAAA1iC,EAAAtE,EAAAinC,sBAAA5W,GAAA,4CAAA0O,YAA4G3e,OAAO8mB,SAAA,WAAA3Y,IAAA,SAAAF,MAAA,MAAAC,OAAA,QAA2D6Y,WAAA,GAAc,SAAAxsC,GAAa,QAAA4F,KAAa4K,aAAAnI,GAAgBhD,IAAIsE,IAAA3J,EAAM2J,IAAA8iC,SAAaC,gBAAA,GAAoB,IAAArkC,GAAA8F,WAAA,WAA4BpO,EAAAiQ,MAAA,mBAA0B28B,GAAApsC,MAAWP,GAAA4sC,KAAAhnC,GAAAkC,KAAAlC,EAAA,WAA4B7F,EAAAiQ,MAAA,0BACzd,QAAA68B,IAAAljC,EAAAtE,GAAiB,MAAAsE,GAAA4b,GAAAzd,KAAA,WAA4B,UAAAU,GAAA,SAAAzI,GAAyB4J,IAAA44B,KAAAl9B,EAAAukB,KAAAvkB,EAAAtF,EAAA21B,GAAA,iDAAuE,QAAAoX,IAAAnjC,EAAAtE,GAAiBsE,EAAA4b,GAAAzd,KAAA,WAAqB6B,IAAAojC,SAAA,YAAA1nC,EAAAqwB,GAAA,+CACnL,QAAAyW,MAAc,MAAAa,SAAA,GAAAxkC,GAAA,SAAAmB,EAAAtE,GAAqC,GAAAuxB,KAAA,CAAS,GAAA72B,GAAA,WAAiBy2B,KAAKd,GAAA,6BAA+BxnB,SAAAvE,EAAA42B,UAAA,WAAgC/J,KAAKnxB,EAAA2K,MAAA,mBAA0Be,QAAAk8B,GAAA1sC,QAAqB,IAAAm1B,GAAA,uBAAA/rB,QAAgC,IAAA+rB,GAAA,aAAA31B,QAA2B,CAAK,GAAAC,GAAA,cAAAgb,KAAAoD,MAAA,IAAApD,KAAAC,SAA6DzQ,IAAAxK,GAAA,WAAgB01B,GAAA,aAAA31B,IAAAsF,EAAA2K,MAAA,mBAA8ChQ,EAAAkwB,GAAAgd,IAAS/M,OAAAngC,IAAWqnB,EAAAyc,GAAA9jC,IAAAG,EAAA,WAAsBkF,EAAA2K,MAAA,yBAA6B3K,GAAA2K,MAAA,oBAA+B7P,EAAA,SAAAwJ,GACje,KADkfqjC,IACvf,KAAKrjC,KAAY,QAAAwjC,IAAAxjC,EAAAtE,EAAAtF,GAAmBwF,KAAA5G,EAAAgL,EAASpE,KAAAsD,EAAAxD,EAASE,KAAAwhB,EAAAhnB,EAASwF,KAAA8C,EAAA,KAAY9C,KAAAoE,EAAAslB,GAAA1pB,KAAA5G,EAAA,mBAAoCmwB,GAAAvpB,KAAAoE,EAAA,SAAApE,KAAAsD,GAA0BimB,GAAAvpB,KAAAoE,EAAA,UAAApE,KAAAwhB,GAA2BxhB,KAAAF,EAAA,KAAYE,KAAAxF,KAAmO,QAAAqtC,IAAAzjC,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuBL,KAAAzF,EAAA6J,EAASpE,KAAAmO,EAAArO,EAASE,KAAAxF,IAASwF,KAAA3G,EAAAoB,EAASuF,KAAAwhB,EAAAxhB,KAAAsD,EAAAtD,KAAA5G,EAAA,KAA0B4G,KAAAoE,EAAA/D,EAASL,KAAA8C,EAAA,KAExH,QAAAglC,IAAA1jC,GAAe,IAAI,MAAAzL,IAAAkN,IAAAzB,GAAA40B,OAAAja,KAAmC,MAAAjf,GAAS,UACxb,QAAAioC,IAAA3jC,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuBL,KAAAmO,EAAA/J,EAASpE,KAAA8C,EAAAhD,EAASE,KAAAF,EAAAtF,EAASwF,KAAAxF,EAAAC,GAAA,KAAeuF,KAAAwhB,EAAAnhB,GAAA,KAAeL,KAAAzF,EAAAyF,KAAA3F,EAAA2F,KAAA4C,EAAA,KAA0B5C,KAAAsD,KAAUtD,KAAA3G,EAAA2G,KAAAoE,EAAA,KACpH,QAAA4jC,IAAA5jC,GAAe,GAAAtE,GAAAwtB,IAAW,OAAAkU,IAAAp9B,GAAA7B,KAAA,SAAA6B,GAA8BA,EAAA,CAAG,GAAA5J,GAAAivB,GAAA3pB,GAAAO,EAAA7F,GAAkBA,KAAAsF,CAAM,QAAAgD,GAAA,EAAYA,EAAAsB,EAAAtK,OAAWgJ,IAAA,CAAK,GAAA0e,GAAApd,EAAAtB,GAAWvI,EAAAC,EAAQa,EAAAgF,CAA6M,IAArM,GAAAmhB,EAAAjhB,QAAA,uBAAAhG,EAAAkvB,GAAAjI,GAAA1hB,GAAAvF,GAAA,oBAAAc,EAAA,QAAAA,GAAA,SAAAA,EAAAd,GAAA,EAAA0tC,GAAAxwB,KAAA+J,GAAAjnB,KAAAinB,OAAA/I,MAAA,KAAArK,KAAA,OAAA7T,EAAA2tC,OAAA,UAAA1mB,EAAA,IAAAA,EAAA,UAAA/J,KAAAld,IAAqMA,EAAA,CAAM6J,GAAA,CAAK,MAAAA,IAASA,GAAA,EAAK,IAAAA,EAAA,SAAAw1B,IAAAtM,QACxW,QAAA6a,IAAA/jC,GAAe,MAAAA,GAAA/K,EAAA+K,EAAA/K,GAAkB+K,EAAA/K,EAAAk2B,KAAAhtB,KAAA,WAAyB,IAAA6B,EAAA/J,EAAA,CAAS,GAAAyF,GAAAsE,EAAA5J,IAAA4J,EAAAod,EAAA/mB,EAAAqtC,GAAA1jC,EAAAtE,GAAAO,EAAA,GAAAunC,IAAAxjC,EAAA+J,EAAA/J,EAAAtB,EAAAsB,EAAAtE,EAAgDO,GAAAyC,EAAAhD,EAAMO,EAAAP,EAAAtF,EAAM6F,EAAA7F,EAAAskB,EAAArkB,OAAc2J,EAAA/J,EAAAgG,KAAiB+D,EAAAhL,EAAA,GAAAstC,IAAAtiC,EAAA/J,GAAgB+tC,GAAAhkC,KAAQA,EAAA/K,GAGtL,QAAAgvC,IAAAjkC,GAA+E,MAAhEA,GAAA7J,IAAA6J,EAAAxB,EAAAwB,EAAA5J,EAAAw1B,GAAA5rB,EAAA5J,EAAAstC,GAAA1jC,EAAAtE,IAAA,KAAAsE,EAAA7J,EAAA,GAAA4kC,IAAA/6B,EAAAtB,EAAA0jC,GAAApiC,EAAAod,GAAApd,EAAAxB,IAAgEwB,EAAA7J,EAC/E,QAAA+tC,IAAAlkC,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,EAAA0e,EAAAjnB,EAAAc,EAAAsnB,GAA6F,MAA5Dve,GAAA,GAAAyjC,IAAAzjC,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAoB+D,EAAAhL,EAAA0J,EAAMsB,EAAAd,EAAAke,EAAMpd,EAAAod,EAAAjnB,EAAM6J,EAAAtE,EAAAggB,EAAAzkB,GAAA,MAAgB+I,EAAAtB,EAAA6f,EAAMve,KAAoB,QAAAgkC,IAAAhkC,GAAe,IAAAA,EAAAhL,EAAA,KAAAqR,OAAA,kCAAuD88B,IAAAnjC,EAAAhL,EAAA,SAAA0G,GAAmB,GAAAtF,KAAS,IAAAsF,KAAAyoC,UAAA,CAAmB,GAAA9tC,IAAA,CAA2B,KAAlBqF,EAAAy5B,GAAAz5B,EAAAyoC,WAAkB/tC,EAAA,EAAQA,EAAA4J,EAAAd,EAAAxJ,OAAaU,IAAAC,EAAA2J,EAAAd,EAAA9I,GAAAsF,IAAArF,CAAiD,OAA9BD,MAAKA,EAAAkgC,OAAAjgC,EAAA,cAAyBqnB,EAAAtnB,GAA6B,MAAjBA,GAAAkgC,OAAA,QAAiB5Y,EAAAtnB,KACpW,QAAAguC,IAAApkC,GAAe,GAAAtE,IAAOukB,KAAA,oBAA0B,OAAA8jB,IAAA/jC,GAAA7B,KAAA,WAA6B,MAAA+kC,IAAAljC,EAAAhL,EAAA0G,KAAiByC,KAAA,SAAA6B,GAAmB,GAAAA,KAAAtK,YAAA,KAAAsK,EAAA,GAAAqkC,kBAAA,MAAArkC,GAAA,GAAAqkC,iBAA0F,MAAAh+B,WAAwG,QAAAi+B,IAAAtkC,GAAmG,GAApFpE,KAAAoE,KAAAzL,GAAAkP,SAAA8gC,aAAAhwC,GAAAkP,SAAA8gC,YAAAC,cAAoF5oC,KAAAoE,EAAA,SAAA+sB,IAAA,yEAAiGnxB,MAAAqkB,KAAA,eAAqQ,QAAAwkB,MAAc7oC,KAAAoE,KAAUpE,KAAAqkB,KAAA,WAAwM,QAAAykB,MAAc,IAAI,GAAA1kC,KAAAa,GAAAwrB,UAAoB,MAAA3wB,GAASsE,GAAA,EAAK,IAAAA,EAAA,SAAA+sB,IAAA,0BAA6CnxB,MAAA8C,KAAU9C,KAAAxF,KAAUwF,KAAAoE,EAAA,EAASpE,KAAAwhB,EAAAvc,GAAAwrB,UAAmBzwB,KAAAqkB,KAAA,YAA6B,QAAA0kB,IAAA3kC,GAAe,UAAAnB,GAAA,SAAAnD,EAAAtF,GAA2B,GAAAC,GAAA2J,EAAAod,EAAAlB,KAAA,2BAA2C7lB,GAAAogC,QAAA,SAAAz2B,GAAsB5J,EAAAiQ,MAAArG,EAAAzD,OAAAqoC,aAA8BvuC,EAAAwuC,gBAAA,SAAA7kC,GAA8BA,IAAAzD,OAAA/G,MAAkB,KAAIwK,EAAA8kC,kBAAA,wBAA4CC,QAAA,cAAsB,MAAArmC,GAAStI,EAAAsI,KAAOrI,EAAA2uC,UAAA,SAAAhlC,GAAwBtE,EAAAsE,EAAAzD,OAAA/G,WACj7C,QAAAyvC,IAAAjlC,GAAgC,MAAjBA,GAAAd,IAAAc,EAAAd,EAAAylC,GAAA3kC,IAAiBA,EAAAd,EAAW,QAAAgmC,IAAAllC,GAAe,MAAAA,GAAAmlC,YAAA,wBAA6C,QAAAC,IAAAplC,EAAAtE,GAAiB,MAAAsE,GAAAqlC,aAAA,wBAAA3pC,EAAA,wBAAwE,QAAA4pC,IAAAtlC,GAAe,UAAAnB,GAAA,SAAAnD,EAAAtF,GAA2B4J,EAAAglC,UAAA,SAAAhlC,GAAwBA,KAAAzD,OAAAb,EAAAsE,EAAAzD,OAAA/G,QAAAkG,KAAoCsE,EAAAy2B,QAAA,SAAAz2B,GAAsB5J,EAAAiQ,MAAArG,EAAAzD,OAAAqoC,eAIhN,QAAAW,IAAAvlC,GAAe,QAAAtE,KAAsJ,MAAzIsE,GAAAtE,EAAAmoB,GAAA,KAAA1lB,KAAAxB,EAAAqD,EAAA8jB,GAAA9jB,IAAA7B,KAAA,SAAAzC,GAA6C,EAAAA,EAAAhG,QAAA8I,GAAAwB,EAAA5J,EAAA,SAAA4J,GAA8BA,EAAAtE,OAAOyC,KAAAzC,GAAAlF,EAAA,SAAAwJ,GAAwB,cAAAA,EAAAkJ,SAAAxN,MAA+BsE,EAAAtE,EAAWsE,EAAAtE,GAAAsE,EAAAtE,EAAA8pC,OAAA,cAA8B9pC,IAAK,QAAA+pC,MAAc,IAAAC,KAAA,CAAU,WAAAha,KAAA,SAAAqB,IAAA,yEAAsG,UAAAA,IAAA,2BAAwCnxB,KAAAoE,EAAA2lC,MAAApxC,GAAAkP,SAAAi4B,KAAAzP,aAAiDrwB,KAAAqkB,KAAA,eAAyB,QAAA0lB,MAAc,IAAI,GAAA3lC,GAAAa,GAAAorB,aAAAvwB,EAAAwwB,IAAkE,OAAtClsB,OAAAmsB,QAAAzwB,EAAA,KAAAsE,EAAAosB,WAAA1wB,IAAsCsE,EAAS,MAAA5J,GAAS,aACrpB,QAAAsvC,MAAc,GAAA1lC,GAAA,QAAA0rB,IAA0F,MAAvE1rB,EAAA2lC,MAAA3lC,GAAAzL,GAAAkP,SAAAi4B,MAAAnnC,GAAAkP,SAAAi4B,KAAAzP,cAAuE,QAAe,KAAI,MAAAjsB,GAAAmsB,QAAA,aAAAnsB,EAAAosB,WAAA,YAAuD,MAAA1wB,GAAS,UAClF,QAAAkqC,MAAchqC,KAAAqkB,KAAA,cAAoK,QAAA4lB,MAAc,IAAAC,KAAA,CAAU,WAAApa,KAAA,SAAAqB,IAAA,2EAAwG,UAAAA,IAAA,2BAAwCnxB,KAAAoE,EAAA+lC,MAAAxxC,GAAAkP,SAAAi4B,KAAAsK,eAAmDpqC,KAAAqkB,KAAA,iBAA2B,QAAA8lB,MAAc,IAAI,GAAA/lC,GAAAa,GAAAmlC,eAAAtqC,EAAAwwB,IAAoE,OAAtClsB,OAAAmsB,QAAAzwB,EAAA,KAAAsE,EAAAosB,WAAA1wB,IAAsCsE,EAAS,MAAA5J,GAAS,aACznB,QAAA0vC,MAAc,GAAA9lC,GAAA,QAAA0rB,IAA4F,MAAzE1rB,EAAA+lC,MAAA/lC,GAAAzL,GAAAkP,SAAAi4B,MAAAnnC,GAAAkP,SAAAi4B,KAAAsK,gBAAyE,QAAe,KAAI,MAAAhmC,GAAAmsB,QAAA,aAAAnsB,EAAAosB,WAAA,YAAuD,MAAA1wB,GAAS,UAC3K,QAAAuqC,MAAc,GAAAjmC,KAASA,GAAAkmC,QAAAC,GAAanmC,EAAAomC,KAAAC,GAAUrmC,EAAAsmC,YAAAC,GAAiBvmC,EAAAwmC,OAAAC,GAAY7qC,KAAAoE,IAAA0rB,MAAmI,QAAAgb,IAAA1mC,GAAe,GAAAtE,GAAA,GAAAqxB,IAAA,4BAAA32B,EAAA,GAAA22B,IAAA,+BAAgF/sB,GAAA,CAAG,IAAA3J,IAAAswC,IAAA,GAAAA,GAAAtwC,IAAA2J,EAAA,CAAyB,GAAA3J,IAAA,CAAS,MAAA2J,GAAQ3J,GAAA,EAAK,IAAAA,GAAA,gBAAA2J,GAAA,KAAAtE,EAAmC,QAAAgwB,MAAa,iCAAA1rB,EAAA,KAAA5J,EAA4C,MAAM,wBAAA4J,EAAA,KAAA5J,EAAkC,MAAM,aAAA41B,MAAA,SAAAhsB,EAAA,KAAA5J,IAC3f,QAAAwwC,MAAc,GAAA5mC,KAAA4sB,GAAA7D,QAAAyC,MAAA9vB,EAAA8wB,KAAAp2B,EAAA41B,IAAyCpwB,MAAAzF,EAAA6J,EAASpE,KAAAwhB,EAAA1hB,EAASE,KAAA3G,EAAAmB,EAASwF,KAAAoE,KAAU6mC,QAAA,GAAAZ,KAAgBjmC,EAAA6mC,EAAK,KAAI,IAAA/d,MAAA4E,OAAA7sB,GAAAwrB,UAAA,GAAAh2B,GAAA,GAAA2J,KAAAgpB,MAA6C8d,SAAA,GAAApC,KAAAruC,EAAAywC,EAA0BlrC,MAAAsD,EAAA7I,EAAS,MAAA4F,GAASL,KAAAsD,EAAA,GAAAulC,IAAA7oC,KAAAwhB,GAAA,EAAwB,IAAIxhB,KAAA5G,EAAA,GAAAgL,KAAA+a,GAAkB,MAAA9e,GAASL,KAAA5G,EAAA,GAAAyvC,IAAc7oC,KAAAmO,EAAA,GAAA06B,IAAc7oC,KAAA8C,EAAA/B,EAAAf,KAAAyjB,GAAAzjB,MAAuBA,KAAAF,KAAiB,QAAAqrC,MAA8B,MAAhBC,SAAA,GAAAJ,KAAgBI,GAAU,QAAAC,IAAAjnC,EAAAtE,GAAiB,OAAAA,GAAU,oBAAAsE,GAAAhL,CAA0B,kBAAAgL,GAAA+J,CAAuB,eAAA/J,GAAAd,GAC7b,QAAAgoC,IAAAlnC,EAAAtE,GAAiB,kBAAAsE,EAAA1J,MAAAoF,EAAA,IAAAA,EAAA,IAAsC,QAAAyrC,IAAAnnC,EAAAtE,EAAAtF,GAAmB,GAAAC,GAAA6wC,GAAAxrC,EAAAtF,GAAA6F,EAAAgrC,GAAAjnC,EAAAtE,EAAAstB,EAA0B,OAAAhpB,GAAApJ,IAAA8E,EAAAtF,GAAA+H,KAAA,SAAAO,GAAmC,GAAA0e,GAAA,IAAW,KAAIA,EAAAuP,GAAA9rB,GAAAorB,aAAAmb,QAAA/wC,IAAgC,MAAAF,IAAU,GAAAinB,IAAA1e,EAAA,MAAAmC,IAAAorB,aAAAG,WAAA/1B,GAAA2J,EAAAkkB,IAAAxoB,EAAA0hB,EAAAhnB,EAA0DgnB,IAAA1e,GAAA,gBAAAzC,EAAAgkB,MAAApf,GAAAorB,aAAAG,WAAA/1B,KAAkI,QAAAgxC,IAAArnC,EAAAtE,EAAAtF,GAAyD,MAAtCA,GAAA8wC,GAAAxrC,EAAAtF,GAAU,SAAAsF,EAAAstB,IAAAhpB,EAAAtE,EAAAtF,GAAA,MAA4B6wC,GAAAjnC,EAAAtE,EAAAstB,GAAAse,EAAAlxC,GAE5P,QAAAmxC,IAAAvnC,GAAewnC,GAAAxnC,GAAMA,EAAA5J,EAAAiZ,YAAA,WAA2B,OAAA3T,KAAAsE,KAAA,CAAkB,GAAA5J,GAAAyK,GAAAorB,aAAAmb,QAAA1rC,GAAArF,EAAA2J,EAAAtE,IAAyCtF,IAAAC,IAAA2J,EAAAtE,KAAAtF,IAAA,GAAA8pB,KAA0BD,KAAA,UAAAzjB,IAAAd,EAAAa,OAAA/H,OAAAizC,SAAApxC,EAAA4X,SAAA7X,EAAA4J,GAAA,IAA8DA,EAAAqf,GAAAjpB,MAAY,KAAM,QAAAoxC,IAAAxnC,GAAeA,EAAA5J,IAAAkZ,cAAAtP,EAAA5J,GAAA4J,EAAA5J,EAAA,MAEjI,QAAAsxC,IAAA1nC,GAAepE,KAAAoE,IAASpE,KAAAF,EAAAqrC,KAAgD,QAAAY,IAAA3nC,GAAe,MAAAA,GAAAtE,EAAA9E,IAAAgxC,GAAA5nC,KAAA7B,KAAA,SAAA6B,GAAwC,MAAAm1B,IAAAn1B,KAAgB,QAAA6nC,MAAcjsC,KAAAoE,EAAA+mC,KAAa,QAAAe,MAAclsC,KAAAF,GAAA,EAAW,QAAAqsC,IAAA/nC,EAAAtE,GAAiBE,KAAAF,GAAA,EAAUE,KAAAF,EAAAssC,GAAUpsC,KAAA8C,EAAAmC,GAAAonC,WAAA,GAAAA,YAAArsC,KAAAF,GAAAyF,MAAAvF,KAAAF,GAAyDE,KAAAsD,EAAAtD,KAAAxF,EAAA,EAAgBwF,KAAAoE,KAAUpE,KAAA5G,EAAAgL,EAASpE,KAAAwhB,EAAA1hB,EAASE,KAAA3G,EAAA4L,GAAAqnC,WAAA,GAAAA,YAAA,IAAA/mC,MAAA,QAAiD,KAAAgnC,QAAAtnC,GAAAqnC,WAAA,GAAAA,YAAAE,QAAwDxsC,KAAA6Z,QACltB,QAAA4yB,IAAAroC,GAAe,OAAAtE,GAAAsE,EAAAtB,EAAAtI,EAAA4J,EAAA/K,EAAAoB,EAAA,EAAA4F,EAAA,EAA4BA,EAAAP,EAAAhG,QAAWU,EAAAC,KAAAqF,EAAAO,IAAA,GAAAP,EAAAO,EAAA,OAAAP,EAAAO,EAAA,MAAAP,EAAAO,EAAA,GAAAA,EAAA,EAAA5F,CAAmD,KAAAqF,EAAA,GAAS,GAAAA,EAAKA,IAAA,CAAKO,EAAA,EAAA7F,EAAAsF,EAAA,IAAYrF,EAAA,EAAAD,EAAAsF,EAAA,EAAW,IAAAgD,IAAA,EAAAtI,EAAAsF,EAAA,OAAAO,IAAA,EAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,IAAAA,IAAA,KAAAmhB,GAAA,EAAAhnB,EAAAsF,EAAA,MAAArF,IAAA,GAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,IAAAA,IAAA,KAA+GD,GAAAsF,GAAAgD,EAAA0e,EAAA,EAAW/mB,EAAA,EAAA2J,IAAA,GAAW/D,EAAA,EAAA+D,IAAA,EAAW,IAAA7J,GAAA,EAAA6J,IAAA,GAAA/I,EAAA,EAAA+I,IAAA,GAAAue,EAAA,EAAAve,IAAA,GAAAsoC,EAAA,EAAAtoC,IAAA,GAAAuoC,EAAA,EAAAvoC,IAAA,EAAwE,KAAXtB,EAAA,EAAAsB,IAAA,GAAWtE,EAAA,EAAQ,GAAAA,EAAKA,IAAA,CAAK,GAAA8sC,KAAAnyC,IAAA,EAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,MAAAA,EAAA4F,EAAA5F,EAAAF,EAAA8F,EAAA9F,GAAA,CAAqEinB,GAAAmB,EAAA+pB,GAAA/pB,EAAAgqB,EAAa7pC,MAAA6f,IAAA,EAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,KAAAA,IAC/c,GAAAA,GAAA,MAAYnB,KAAA,EAAA+qB,GAAAzsC,IAAA,EAAgB0hB,EAAA1e,GAAA0e,GAAA,EAAAhnB,EAAAsF,IAAA,KAAqBgD,EAAA6pC,EAAKA,EAAAD,EAAMA,EAAA/pB,EAAKA,EAAAtnB,EAAAmmB,EAAA,EAAQnmB,EAAAd,EAAIA,EAAA8F,EAAIA,EAAA5F,EAAIA,EAAA+mB,EAAAorB,EAAA,EAASxoC,IAAA,GAAAA,IAAA,GAAA3J,EAAA,EAAkB2J,IAAA,GAAAA,IAAA,GAAA/D,EAAA,EAAkB+D,IAAA,GAAAA,IAAA,GAAA7J,EAAA,EAAkB6J,IAAA,GAAAA,IAAA,GAAA/I,EAAA,EAAkB+I,IAAA,GAAAA,IAAA,GAAAue,EAAA,EAAkBve,IAAA,GAAAA,IAAA,GAAAsoC,EAAA,EAAmBtoC,IAAA,GAAAA,IAAA,GAAAuoC,EAAA,EAAmBvoC,IAAA,GAAAA,IAAA,GAAAtB,EAAA,EAC9N,QAAA+pC,IAAAzoC,EAAAtE,EAAAtF,OAAmB,KAAAA,MAAAsF,EAAAhG,OAAyB,IAAAW,GAAA,EAAA4F,EAAA+D,EAAA5J,CAAc,IAAAnB,EAAAyG,GAAA,KAAarF,EAAAD,GAAI4J,EAAAtB,EAAAzC,KAAAP,EAAA2N,WAAAhT,KAAA4F,GAAA+D,EAAAtE,IAAA2sC,GAAAroC,GAAA/D,EAAA,OAAgD,KAAA+c,EAAAtd,GAAkK,KAAA2K,OAAA,kCAAlK,MAAmBhQ,EAAAD,GAAI,CAAE,GAAAsI,GAAAhD,EAAArF,IAAa,sBAAAqI,IAAA,GAAAA,GAAA,KAAAA,OAAA,EAAAA,IAAA,KAAA2H,OAAA,+BAA6FrG,GAAAtB,EAAAzC,KAAAyC,EAAWzC,GAAA+D,EAAAtE,IAAA2sC,GAAAroC,GAAA/D,EAAA,IAAwE+D,EAAA5J,EAAA6F,EAAM+D,EAAAd,GAAA9I,EAEtJ,QAAAsyC,MAAcX,GAAA7yC,KAAA0G,KAAA,EAAA+sC,IAA4H,QAAAC,IAAA5oC,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuBL,KAAAmO,EAAA/J,EAASpE,KAAA5G,EAAA0G,EAASE,KAAA3G,EAAAmB,EAASwF,KAAAzF,EAAAE,GAAA,KAAeuF,KAAA3F,EAAAgG,GAAA,KAAeL,KAAAwhB,EAAA1hB,EAAA,IAAAtF,EAAewF,KAAA4C,EAAA,GAAAqpC,IAAcjsC,KAAAsD,EAAA,GAAAwoC,IAAA9rC,KAAAwhB,GAAsBxhB,KAAA8C,EAAA,KAAY9C,KAAAF,KAAUE,KAAAoE,EAAApE,KAAAxF,EAAA,KAAmB,QAAAyyC,IAAA7oC,GAAe,UAAA+sB,IAAA,gCAAA/sB,GAEpd,QAAA8oC,MAAc,OAAA9oC,GAAA,GAAAtE,KAAkB,EAAAsE,GAAItE,EAAA9F,KAAA,iEAAAmW,OAAAsF,KAAAoD,MAAA,GAAApD,KAAAC,YAAAtR,GAAmH,OAAAtE,GAAAsO,KAAA,IAAkB,QAAA++B,IAAA/oC,GAAe,GAAAtE,GAAA,GAAAgtC,GAAaD,IAAA/sC,EAAAsE,GAAQA,IAAK,IAAA5J,GAAA,EAAAsF,EAAAwD,CAAY,IAAAxD,EAAAtF,EAAAqyC,GAAA/sC,EAAAstC,GAAA,GAAAttC,EAAAtF,GAAAqyC,GAAA/sC,EAAAstC,GAAAttC,OAAAtF,EAAA,IAA6C,QAAAC,GAAA,GAAa,IAAAA,EAAMA,IAAAqF,EAAAgD,EAAArI,GAAA,IAAAD,KAAA,GAA8B,KAANiyC,GAAA3sC,GAAMrF,EAAAD,EAAA,EAAUC,EAAAqF,EAAA1G,EAAMqB,IAAA,OAAA4F,GAAA,GAAiB,GAAAA,EAAKA,GAAA,EAAA+D,EAAA5J,KAAAsF,EAAAsE,EAAA3J,IAAA4F,EAAA,GAA0B,OAAA6zB,IAAA9vB,GAI9a,QAAAipC,IAAAjpC,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAA4F,GAAA6sC,KAAApqC,EAAA,GAAAw2B,IAAAx5B,EAAArF,EAAA,KAAA4F,EAAA,GAAA8wB,IAAA,kBAAA3P,EAAA2O,GAAA,wBAAAlrB,GAAsF,oBAAAuc,GAAA,SAAA2P,IAAA,gCAAoE,IAAA52B,GAAA41B,GAAA,wBAAAlrB,IAAA5J,IAAwC,IAAA8xB,KAAAhD,cAAAhS,MAAA,oBAAA9c,EAAAiyC,IAAA9rB,MAAuD,KAAA2L,KAAAhD,cAAAhS,MAAA,WAAmD,MAAA4J,GAAA,GAAAoP,IAAA,+CAAnD91B,GAAAkyC,IAAA/rB,EAAuHjnB,IAAAc,EAAAmyC,eAAAjzC,GAAwB8F,EAAA8sC,GAAA9sC,GAAQhF,EAAAq+B,UAAAr5B,CAAc,IAAAsiB,GAAA2lB,GAAAlkC,EAAA+J,EAAA/J,EAAAhL,EAAAgL,EAAA/K,EAAAyG,EAAAtF,EAAA,KAAAC,EAAA2J,EAAA7J,EAAAc,EAAA+I,EAAA/J,EAA2C,OAAA+J,GAAA0Y,KAAAva,KAAA,WAA8B,GAAAzC,GAC5fsE,EAAAod,CAAI,OAAApd,GAAAxB,EAAAwB,EAAAkkB,IAAA0jB,GAAAlpC,EAAAshB,IAAAtkB,KAA6ByC,KAAA,WAAkB,GAAAzC,GAAAqwB,GAAA,yCAAAlrB,GAAoD,sBAAAnF,GAAA,SAAAqxB,IAAA,gCAAsE,IAAA32B,GAAA,IAAWsF,GAAA,SAAAA,GAAc,GAAAA,EAAA,CAAkD,sBAA5CtF,EAAA21B,GAAA,qCAAAlrB,KAA4C,SAAAksB,IAAA,gCAAsE32B,GAAAmoB,OAAK,CAAwC,sBAAnCnoB,EAAA21B,GAAA,4BAAAlrB,KAAmC,SAAAksB,IAAA,gCAAsErxB,GAAAqtB,KAAMrtB,OAAAqY,MAAA,kCAAArY,EAAAqY,MAAA,iCACvb/T,IAAA5J,EAAAmoB,EAAA7iB,EAAA,wCAAkD,QAAA2tC,IAAArpC,EAAAtE,GAAiB,OAAAtF,GAAA,EAAYA,EAAA4J,EAAAtE,EAAAhG,OAAaU,IAAA,IAAQ4J,EAAAtE,EAAAtF,GAAAsF,GAAU,MAAArF,KAAW,QAAAizC,IAAAtpC,GAAgI,MAAjHA,GAAAtB,IAAAsB,EAAAtB,EAAAsB,EAAA0Y,KAAAva,KAAA,WAAiC,UAAAU,GAAA,SAAAnD,GAAyB,QAAAtF,GAAAC,GAA2B,MAAbqF,GAAArF,GAAK2J,EAAA0a,GAAAtkB,IAAQ,EAAS4J,EAAAia,GAAA7jB,GAAQmzC,GAAAvpC,QAAWA,EAAAtB,EAAW,QAAA8qC,IAAAxpC,GAAe,GAAAtE,GAAA,IAAW,OAAAisC,IAAA3nC,EAAAd,GAAAf,KAAA,SAAA/H,GAA0C,MAAVsF,GAAAtF,EAAIA,EAAA4J,EAAAd,EAAMmoC,GAAAjxC,EAAAsF,EAAAksC,GAAAxxC,EAAA4J,KAAsB7B,KAAA,WAAkB,MAAAzC,KAChX,QAAA6tC,IAAAvpC,GAAe,QAAAtE,MAAcrF,GAAA,EAAK4F,KAAAupC,SAAcgE,GAAAxpC,GAAA7B,KAAA,SAAA9H,GAAuB,GAAA4F,GAAA7F,CAAQ,IAAAC,GAAAqF,KAAAgnC,IAAA,CAAgB,GAAAhkC,GAAA,IAAWzC,GAAAi2B,GAAAx2B,EAAAgnC,MAAY,GAAAzmC,EAAAE,QAAA,uBAAAuC,EAAA2mB,GAAAppB,GAAAyC,EAAAiuB,GAAAvH,GAAA1mB,EAAA,wBAAAA,KAAA,gBAAAA,GAAAmwB,GAAAnwB,GAAA,SAAAw2B,IAAA7+B,EAAAqF,EAAArF,EAAAD,EAAA,UAAAsI,GAAA,GAAAw2B,IAAA7+B,EAAAqF,EAAArF,EAAAD,EAAA6F,EAAA5F,EAAA6I,IAAuKjD,EAAAyC,GAAAtI,EAAOizC,GAAArpC,EAAA/D,KAAU,GAAA7F,GAAA,GAAA8+B,IAAA,4BAAAnI,IAAA,kBAAA12B,GAAA,EAAA4F,EAAA4nB,GAAA,KAAA1lB,KAAA,WAA6F,MAAAqrC,IAAAxpC,GAAA7B,KAAA,WAA6B9H,GAAAgzC,GAAArpC,EAAA5J,OAAasI,EAAAmC,GAAA4oC,aAAoB5oC,IAAA4oC,cAAA,SAAAzpC,GACra,GADic,GAAAA,EAAA+lB,cAAA5pB,QAAA4vB,GAAA,wBACrelrB,IAAAklB,cAAA,QAAArqB,GAA4BgnC,IAAA1iC,IAAQ,kBAAAtB,GAAA,IAA6BA,EAAAsB,GAAK,MAAA7J,GAASiB,QAAAC,MAAAlB,KAAmBuzC,QAAA,GAAAnU,KAAgBmU,GAAAhzB,UAAAhb,GAAgP,QAAAiuC,IAAA3pC,GAAepE,KAAAoE,IAASpE,KAAAF,EAAAqrC,KAAwD,QAAA6C,IAAA5pC,GAAe,MAAAA,GAAAtE,EAAAwoB,IAAA2lB,GAAA,UAAA7pC,KAAiC,QAAA8pC,IAAA9pC,GAAe,MAAAqnC,IAAArnC,EAAAtE,EAAAmuC,GAAA7pC,KAAsB,QAAA+pC,IAAA/pC,GAAe,MAAAA,GAAAtE,EAAA9E,IAAAizC,GAAA7pC,KAAA7B,KAAA,SAAA6B,GAAwC,iBAAAA,IAAsB,QAAAgqC,IAAAhqC,EAAAtE,EAAAtF,GAAmBwF,KAAA4C,EAAAwB,EAASpE,KAAA3G,EAAAyG,EAASE,KAAAmO,EAAA3T,EAASwF,KAAAwhB,KAAUxhB,KAAA8C,GAAA,EAAU9C,KAAA5G,EAAA2H,EAAAf,KAAAzF,EAAAyF,MAAsBA,KAAAxF,EAAA,GAAA6zC,IAAcruC,KAAA3F,EAAA,GAAAi0C,IAActuC,KAAAsD,EAAA,GAAAyqC,IAAA/tC,KAAA3G,EAAA,IAAA2G,KAAAmO,GAAiCnO,KAAAF,KAAUE,KAAAF,EAAAyuC,QAAAvuC,KAAAxF,EAAsBwF,KAAAF,EAAA0uC,kBAAAxuC,KAAAxF,EAAgCwF,KAAAF,EAAA2uC,gBAAAzuC,KAAAxF,EAA8BwF,KAAAF,EAAA4uC,kBAAA1uC,KAAAxF,EAAgCwF,KAAAF,EAAA6uC,eAAA3uC,KAAA3F,EAA6B2F,KAAAF,EAAA8uC,aAAA5uC,KAAA3F,EAA2B2F,KAAAF,EAAA+uC,eAAA7uC,KAAA3F,EAA6B2F,KAAAoE,EAAA0qC,GAAA9uC,KAAA4C,EAAA5C,KAAA3G,EAAA2G,KAAAmO,EAAA4gC,IAAmC,QAAAD,IAAA1qC,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAA4F,GAAA1H,GAAAiP,aAAA,IAAiC,OAAA8nB,MAAA,GAAAsd,IAAA5oC,EAAAtE,EAAAtF,EAAA6F,EAAA5F,GAAA,GAAAstC,IAAA3jC,EAAAtE,EAAAtF,EAAA6F,EAAA5F,GAC17B,QAAAu0C,IAAA5qC,GAAeA,EAAAtB,IAAAsB,EAAAtB,GAAA,EAAAsB,IAAAia,GAAAja,EAAAhL,GAA0B,IAAA0G,GAAAsE,GAAU,OAAAA,KAAA0Y,KAAAliB,EAAA,SAAAJ,GAAgD,KAAlB4J,MAAAtE,GAAAsE,EAAAyV,QAAkBrf,IAAW,QAAAy0C,IAAA7qC,GAAeA,IAAA+e,MAAA6rB,GAAA5qC,GAAAxJ,EAAA,SAAAkF,GAA8B,GAAAtF,GAAA,GAAA8+B,IAAA,4BAAAnI,IAAA,+CAA4F+d,IAAApvC,IAAAsE,EAAA7J,EAAAC,KAAgB4J,IAAAqe,MAAA0sB,GAAA/qC,EAAA5J,GAEnE,QAAA40C,IAAAhrC,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,GAAyB,MAAAsB,KAAAoe,GAAA1iB,EAAAtF,EAAAC,EAAA,WAA+B2J,EAAAtB,IAAAsB,EAAAtB,GAAA,EAAAsB,IAAAia,GAAAja,EAAAhL,KAA0B,WAAYgL,EAAAyV,SAAUxZ,EAAAyC,GAAM,QAAAosC,IAAA9qC,GAAe,SAAAA,GAAA,0BAAAA,EAAA0D,MAE5Z,QAAAunC,IAAAjrC,EAAAtE,EAAAtF,GAAmB,GAAAC,GAAAqF,EAAA,IAAAtF,CAA2C,OAA7B80C,IAAA70C,KAAA60C,GAAA70C,GAAA,GAAA2zC,IAAAhqC,EAAAtE,EAAAtF,IAA6B80C,GAAA70C,GAAa,QAAA4zC,MAAcruC,KAAAF,EAAA,KAAYE,KAAA8C,KAAU9C,KAAAxF,KAAUwF,KAAAoE,EAAA,KAAYpE,KAAAsD,GAAA,EACkO,QAAA6rC,IAAA/qC,GAAeA,EAAAd,IAAAc,EAAAd,GAAA,EAAAisC,GAAAnrC,GAAA,cACtX,QAAAorC,IAAAprC,EAAAtE,EAAAtF,GAAmBA,IAAA8mB,GAAAxhB,MAAAtF,EAAgB,IAAAC,GAAAqF,EAAAgD,EAAAzC,EAAAP,EAAAwD,EAAAR,IAAAhD,IAAAqY,MAAA,YAA2C3d,GAAAC,EAAA4F,GAAAkC,KAAA,SAAAzC,GAAwByvC,GAAAnrC,EAAAtB,EAAAhD,EAAA,QAAelF,EAAA,SAAAkF,GAAgByvC,GAAAnrC,EAAAtB,EAAA,KAAAhD,KAAiB,QAAA2vC,IAAArrC,EAAAtE,GAA6C,GAA5BsE,EAAAtE,EAAA,WAAe,MAAAiiB,GAAAjiB,IAAasE,EAAA5J,EAAAV,OAAA,OAAAU,GAAA,EAA0BA,EAAA4J,EAAA5J,EAAAV,OAAaU,IAAA4J,EAAA5J,KAAAsF,GAAc,QAAA4vC,IAAAtrC,EAAAtE,GAA6C,GAA5BsE,EAAAtE,EAAA,WAAe,MAAAgiB,GAAAhiB,IAAasE,EAAAtB,EAAAhJ,OAAA,OAAAU,GAAA,EAA0BA,EAAA4J,EAAAtB,EAAAhJ,OAAaU,IAAA4J,EAAAtB,EAAAtI,GAAAsF,GAAc,QAAAyvC,IAAAnrC,EAAAtE,EAAAtF,EAAAC,GAAqBqF,EAAArF,EAAAg1C,GAAArrC,EAAA3J,GAAAi1C,GAAAtrC,EAAA5J,GAAAk1C,GAAAtrC,GAA0BurC,KAAA,OAAYvrC,EAAAtB,KAAOsB,EAAA5J,KACpS,QAAAo1C,IAAAxrC,GAAe,GAAAtE,GAAA,GAAAqxB,IAAA,UAAuB/sB,UAAAwlC,SAAkBxlC,IAAA6jB,GAAA4nB,GAAA70C,OAAAuH,KAAA,WAAiC6B,EAAAtE,GAAAyvC,GAAAnrC,GAAA,OAAAtE,KAAuB,QAAAwuC,OACxO,QAAAwB,IAAA1rC,EAAAtE,GAAiB,GAAAtF,GAAA4J,EAAA5J,EAAAC,EAAA2J,EAAAtE,CAAgBA,GAAAwhB,GAAA7mB,EAAAD,GAAA4J,EAAAtB,EAAAsB,EAAAd,GAAAf,KAAA,SAAA6B,GAAoCtE,EAAAqd,GAAA1iB,EAAA2J,EAAA,KAAA5J,KAAiBI,EAAA,SAAAwJ,GAAgBtE,EAAAqd,GAAA1iB,EAAA,KAAA2J,EAAA5J,KAAoB,QAAAu1C,IAAA3rC,EAAAtE,GAAiBE,KAAAoE,EAAAtE,EAASiyB,GAAA/xB,KAAA,iBAAAoE,GAA0G,QAAA4rC,IAAA5rC,EAAAtE,EAAAtF,EAAAC,GAAqB,UAAAs+B,IAAA30B,GAAAkb,GAAAxf,EAAAtF,GAAA+H,KAAA,SAAA6B,GAA2C,UAAA2rC,IAAA3rC,EAAA3J,KAAsB,QAAAw1C,IAAA7rC,EAAAtE,EAAAtF,GAA+F,GAA5EwF,KAAAwhB,EAAApd,EAASpE,KAAA5G,EAAA0G,EAASE,KAAAsD,EAAA9I,EAASwF,KAAAxF,EAAA,IAAWwF,KAAA8C,EAAA,KAAY9C,KAAAF,EAAA,KAAYE,KAAAoE,EAAApE,KAAAxF,EAAcwF,KAAA8C,EAAA9C,KAAAxF,EAAA,KAAAiQ,OAAA,2DAAkJ,QAAAylC,IAAA9rC,EAAAtE,GAAiB,MAAAA,IAAAsE,MAAA5J,EAAA4J,EAAAd,MAA0BxD,EAAAsE,IAAMA,KAAA,EAAOA,MAAAtB,IAAAsB,MAAAtB,GAAmBhD,GAAS,QAAAqwC,IAAA/rC,EAAAtE,GAAiBsE,EAAAgsC,OAAShsC,EAAAtE,EAAAmoB,GAAAioB,GAAA9rC,EAAAtE,IAAAyC,KAAA,WAAgC,MAAAovB,QAAYpvB,KAAA,WAAkB,MAAA6B,GAAAod,MAAajf,KAAA,WAAkB4tC,GAAA/rC,GAAA,KAASxJ,EAAA,SAAAkF,GAAgBsE,EAAAhL,EAAA0G,IAAAqwC,GAAA/rC,GAAA,KACruB,QAAAisC,IAAAjsC,GAAepE,KAAA8C,EAAAsB,EAASpE,KAAAF,EAAAE,KAAAoE,EAAA,KAAmBpE,KAAAxF,EAAA,EAAyH,QAAA81C,IAAAlsC,EAAAtE,GAAiB,GAAAtF,GAAAsF,EAAA02B,IAAA/7B,EAAAqF,EAAAywC,YAA4BzwC,GAAA0wC,GAAA1wC,EAAA2wC,WAAkBrsC,EAAAtE,EAAAtF,EAAM4J,EAAA5J,EAAAsF,EAAMsE,IAAA3J,EAAM,QAAA+1C,IAAApsC,GAAe,MAAAuwB,MAAA,IAAAxQ,SAAA/f,EAAA,IACxU,QAAAssC,IAAAtsC,EAAAtE,GAAiB,MAAA2gC,IAAAr8B,EAAAtB,EAAAhD,GAAAyC,KAAA,SAAAzC,GAA8F,MAA5DsE,GAAAtE,IAAAk3B,aAAmB5yB,EAAA5J,EAAAg2C,GAAA1wC,EAAA6wC,YAAqBvsC,IAAAtE,EAAA6gC,eAA2BhK,YAAAvyB,EAAAtE,EAAA8wC,eAAAxsC,EAAA5J,EAAA+1C,aAAAnsC,OAAqDxJ,EAAA,SAAAkF,GAA8D,KAA9C,2BAAAA,EAAAgI,OAAA1D,IAAA,MAA8CtE,IAAkR,QAAA+wC,IAAAzsC,EAAAtE,GAAiBE,KAAAoE,KAAA,KAAepE,KAAAF,KAAA,KAAemyB,GAAAjyB,MAAQ8wC,eAAAlf,GAAA9xB,GAAA,MAAAixC,aAAAnf,GAAAxtB,GAAA,QAAsD,QAAA4sC,IAAA5sC,GAAe,UAAAysC,IAAAzsC,MAAAtE,GAA8F,QAAAmxC,IAAA7sC,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,GAAyBmvB,GAAAjyB,MAAQkxC,IAAA9sC,EAAA+sC,YAAA12C,GAAA,KAAA22C,SAAA/wC,GAAA,KAAA05B,MAAAv/B,GAAA,KAAAq+B,YAAA/1B,GAAA,KAAAmzB,WAAAn2B,IAA4F,QAAAuxC,IAAAjtC,EAAAtE,GAAiBskB,GAAA9qB,KAAA0G,KAAAoE,EAAe,QAAA5J,KAAAsF,GAAAE,KAAAxF,GAAAsF,EAAAtF,GACl3B,QAAA82C,IAAAltC,EAAAtE,EAAAtF,GAAmBwF,KAAAmnB,KAAUnnB,KAAAupB,EAAAnlB,EAAAmtC,OAAgBvxC,KAAA3F,EAAA+J,EAAAotC,QAAiBxxC,KAAA+hB,EAAA3d,EAAAqtC,YAAA,KAA0BrtC,EAAAzL,GAAAiP,YAAAooB,GAAAr3B,GAAAiP,aAAA,KAAqD5H,KAAAF,EAAA,GAAAq/B,IAAAn/B,KAAAupB,EAAAid,GAAAuI,IAAA3qC,GAA+BpE,KAAAwhB,EAAA,GAAA6uB,IAAArwC,KAAAF,GAAsB4xC,GAAA1xC,KAAAF,EAAA02B,KAAc8Z,GAAAtwC,KAAAwhB,EAAA1hB,GAAaiyB,GAAA/xB,KAAA,eAAAA,KAAAwhB,EAAApd,GAAgCutC,GAAA3xC,KAAAxF,OAAestB,GAAAxuB,KAAA0G,MAAaA,KAAAmwB,GAAA,EAAUnwB,KAAA+hB,GAAA2O,OAAA1wB,KAAAoE,EAAAirC,GAAArvC,KAAA+hB,EAAA/hB,KAAAupB,EAAAvpB,KAAA3F,IAAgD2F,KAAAw3B,KAAUx3B,KAAA5G,EAAA,KAAY4G,KAAA3G,EAAAu4C,GAAA5xC,MAAgBA,KAAA6xC,EAAA9wC,EAAAf,KAAA2e,GAAA3e,KAAuB,IAAAvF,GAAAuF,IAAWA,MAAAod,GAAA,KAAapd,KAAAge,GAAA,SAAA5Z,GAAoB3J,EAAAk6B,GAAAvwB,EAAAod,IAAWxhB,KAAAia,EAAA,KAAYja,KAAAsQ,KAAUtQ,KAAA+d,GAAA,SAAA3Z,GAAoB0tC,GAAAr3C,EACjf2J,EAAAtB,IAAM9C,KAAA+xC,EAAA,KAAmH,QAAAC,IAAA5tC,EAAAtE,GAAiBsE,EAAA6V,GAAAkN,GAAA/iB,EAAA6V,EAAA,sBAAA7V,EAAA4Z,KAAuC5Z,EAAA6V,EAAAna,IAAAsmB,GAAAtmB,EAAA,sBAAAsE,EAAA4Z,IAA0C,QAAA8zB,IAAA1tC,EAAAtE,GAAiBsE,EAAAkM,EAAAxQ,EAAMkgC,GAAA57B,EAAAtE,EAAAnH,GAAAiP,YAAAooB,GAAAr3B,GAAAiP,YAAAxD,EAAAkM,GAAA,MAA6G,QAAA2hC,IAAA7tC,EAAAtE,GAAiBsE,EAAA2tC,GAAA5qB,GAAA/iB,EAAA2tC,EAAA,mBAAA3tC,EAAA2Z,KAAoC3Z,EAAA2tC,EAAAjyC,IAAAsmB,GAAAtmB,EAAA,mBAAAsE,EAAA2Z,IACpZ,QAAAm0B,IAAA9tC,GAAe,IAAI,MAAAzL,IAAAkN,IAAAzB,EAAA/J,GAAA2+B,OAAgC,MAAAl5B,GAAS,SAAAqxB,IAAA,sFAAA/sB,EAAA/J,EAAA,OAA8G,QAAAu3C,IAAAxtC,GAAe,UAAA6rC,IAAA,WAAyB,MAAA7rC,GAAA0jB,GAAA,IAAe,SAAA1jB,GAAa,SAAAA,GAAA,+BAAAA,EAAA0D,OAAsD,WAAY,GAAAhI,GAAAsE,EAAAod,EAAAhnB,EAAAm6B,KAAA,GAAqB,UAAA70B,IAAA,IAAiB,QAAAqyC,IAAA/tC,GAAeA,EAAA7J,GAAA6J,EAAA/K,EAAAyG,IAAAsE,EAAA/K,EAAA+4C,QAAAjrB,GAAA/iB,EAAA,eAAAA,EAAAytC,GAAAzrB,GAAAhiB,EAAA,eAAAA,EAAAytC,IAA2E,QAAAQ,IAAAjuC,GAAe+iB,GAAA/iB,EAAA,eAAAA,EAAAytC,GAAwBztC,EAAA/K,EAAA+2C,OACvd,QAAAsB,IAAAttC,EAAAtE,GAAiBsE,EAAA0Z,GAAAhe,EAAOiyB,GAAA3tB,EAAA,OAAAtE,GAAc,QAAAwyC,IAAAluC,EAAAtE,GAAiB8e,EAAAxa,EAAAozB,EAAA,SAAApzB,GAAmB,MAAAA,IAAAtE,IAAc,QAAAyyC,IAAAnuC,GAAe,OAAAtE,MAAAtF,EAAA,EAAiBA,EAAA4J,EAAAozB,EAAA19B,OAAaU,IAAAsF,EAAA9F,KAAAoK,EAAAozB,EAAAh9B,GAAA4J,GAAsB,OAAA+d,GAAAriB,GAAAyC,KAAA,WAA6B,MAAA6B,KAAW,QAAAouC,IAAApuC,GAAeA,QAAA+rB,IAAA/rB,EAAA+rB,GAAA,EAAA/rB,IAAA0W,UAAA1W,IAClN,QAAAutC,IAAAvtC,EAAAtE,GAAiBmyB,GAAA7tB,GAAK8sC,IAAApxC,EAAAoxC,IAAAC,YAAArxC,EAAAqxC,aAAA,KAAAC,SAAAtxC,EAAAsxC,UAAA,KAAArX,MAAAj6B,EAAAi6B,OAAA,KAAA0Y,cAAA3yC,EAAA2yC,gBAAA,EAAA5Z,YAAA/4B,EAAA+4B,aAAA,KAAA6Z,YAAA5yC,EAAA4yC,cAAA,EAAAjxC,SAAA,GAAAovC,IAAA/wC,EAAA6yC,UAAA7yC,EAAA8yC,aAAAC,kBAA6R,QAAAC,OAAe,QAAAC,IAAA3uC,GAAe,MAAA0d,KAAAvf,KAAA,WAA2B,GAAA6B,EAAA7J,EAAA,SAAA42B,IAAA,iBAAqC,QAAA6hB,IAAA5uC,GAAe,MAAA+vB,IAAA/vB,EAAAyuC,aAAA,SAAAzuC,GAAqC,MAAAA,GAAA6xB,aACrc,QAAAgd,IAAA7uC,EAAAtE,GAAiBA,IAAAozC,GAAA9uC,EAAAtE,EAAAm2B,YAAA7xB,EAAAyuC,aAAA74C,KAAA8F,IAA+C,QAAAozC,IAAA9uC,EAAAtE,GAAiB8e,EAAAxa,EAAAyuC,aAAA,SAAAzuC,GAA8B,MAAAA,GAAA6xB,YAAAn2B,IAAyB,QAAAqzC,IAAA/uC,EAAAtE,EAAAtF,IAAmB,OAAAsF,GAAAtF,IAAA4J,EAAAjK,eAAA2F,IAAAiyB,GAAA3tB,EAAAtE,EAAAtF,GAC3J,QAAA44C,IAAAhvC,EAAAtE,GAAiBsE,GAAAtE,IAAAmyB,GAAA7tB,GAAY8sC,IAAApxC,EAAAoxC,IAAAC,YAAArxC,EAAAqxC,YAAAC,SAAAtxC,EAAAsxC,SAAArX,MAAAj6B,EAAAi6B,MAAA0Y,cAAA3yC,EAAA2yC,cAAA5Z,YAAA/4B,EAAA+4B,YAAA6Z,YAAA5yC,EAAA4yC,YAAAG,kBAAwK/yC,EAAA2B,SAAAswB,GAAA3tB,EAAA,WAAA4sC,GAAAlxC,EAAA2B,WAAAswB,GAAA3tB,EAAA,cAAAysC,KAAAjuC,GAAA9C,EAAA+yC,aAAA,SAAA/yC,GAAgGmzC,GAAA7uC,EAAAtE,KAAQsE,EAAAod,EAAA1hB,EAAA0hB,EAAAuQ,GAAA3tB,EAAA,eAAAA,EAAAod,EAAApd,IAC7S,QAAAivC,IAAAjvC,GAAe,MAAAA,GAAA0jB,IAAAvlB,KAAA,SAAAzC,GAA8B,GAAAtF,GAAA4J,EAAAsuC,WAAoB,OAAAY,IAAAlvC,EAAAtE,GAAAyC,KAAA,WAAyD,MAA1B/H,IAAA24C,GAAA/uC,EAAA,kBAA0BtE,MAE1H,QAAAyzC,IAAAnvC,EAAAtE,GAAiBA,EAAA02B,KAAApyB,EAAA0Z,IAAAhe,EAAA02B,MAAA8Z,GAAAlsC,EAAAod,EAAA1hB,GAAAsE,EAAA4qB,cAAA,GAAAqiB,IAAA,iBAAAK,GAAAttC,EAAAtE,EAAA02B,KAAA2c,GAAA/uC,EAAA,eAAAA,EAAAod,EAAApd,IAA4G,QAAAkvC,IAAAlvC,EAAAtE,GAAiB,MAAA+B,IAAAuC,EAAAtE,EAAA0zC,IAAiB9c,QAAA52B,IAAUyC,KAAAxB,EAAAqD,EAAAoiB,GAAApiB,IAEzK,QAAAqvC,IAAArvC,GAAe,OAAAA,IAAAsvC,mBAAAtvC,EAAAtK,OAAAq6B,GAAA/vB,EAAA,SAAAA,GAAwD,UAAA6sC,IAAA7sC,EAAAuvC,MAAAvvC,EAAA6xB,WAAA7xB,EAAA21B,MAAA31B,EAAA+sC,YAAA/sC,EAAAwvC,SAAAxvC,EAAAy0B,kBACvE,QAAAgb,IAAAzvC,EAAAtE,GAAiB,MAAAuzC,IAAAjvC,GAAA7B,KAAA,WAA6B,GAAAkc,EAAAu0B,GAAA5uC,GAAAtE,GAAA,MAAAyyC,IAAAnuC,GAAA7B,KAAA,WAA4C,SAAA4uB,IAAA,+BAC4H,QAAA2iB,IAAA1vC,EAAAtE,EAAAtF,GAAmB,GAAAC,GAAAy+B,GAAAp5B,EAAoB,OAARA,GAAAu1B,GAAAv1B,GAAQoyB,IAAWyd,KAAAvrC,EAAAwzB,WAAAn9B,EAAAs5C,mBAAAj0C,EAAAk0C,cAAAx5C,IAA2D,QAAAy5C,IAAA7vC,EAAAtE,GAAyB,MAARyzC,IAAAnvC,EAAAtE,GAAQsE,EAAA8vC,SAAA3xC,KAAA,WAAkC,MAAA6B,KAO9X,QAAA+vC,IAAA/vC,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB,IAAAqwB,KAAA,MAAA3O,GAAA,GAAAoP,IAAA,+CAAwE,IAAA/sB,EAAAhL,IAAAiH,EAAA,MAAA0hB,GAAA3d,EAAAhL,EAAyB,IAAA0J,GAAAqyB,GAAA36B,EAAAy7B,YAAAzU,EAAA8O,GAAAlsB,EAAA8sC,IAAA,OAAA32C,EAAA,OAAgDq2B,MAAAhB,OAAAxrB,EAAA2d,GAAAvnB,EAAA88B,kBAAA/8B,EAAA+tC,GAAAlkC,EAAA2d,EAAA3d,EAAAmlB,EAAAnlB,EAAA/J,EAAAyF,EAAAtF,EAAA,KAAAgnB,EAAA7oB,GAAAiP,aAAA,MAAiG,IAAAvM,GAAA0yB,GAAAxzB,EAAAuI,KAAAwb,GAAAxb,KAAA4b,GAC7I,OADyKjkB,OAAA8H,KAAA,WAA4B,GAAN6xC,GAAAhwC,IAAM/D,EAAA,MAAA+D,GAAA0jB,IAAAvlB,KAAA,gBAAsCA,KAAA,WAAkB,MAAA6sC,IAAAhrC,IAAA/I,EAAAyE,EAAAtF,EAAAgnB,IAAAjnB,KAA2BgI,KAAA,WAAkB,UAAAU,GAAA,SAAAzI,EAAAC,GAA2B2J,EAAA+Y,GAAArd,EAAA,QAAAqxB,IAAA,2BAAA/sB,EAAAd,GAAA,MACjcc,EAAAtB,EAAAtI,EAAM4J,EAAAxB,EAAAnI,EAAM2J,EAAAd,EAAAke,EAAMpd,EAAA5J,EAAA4J,IAAAma,GAAAna,EAAAtE,EAAAzE,EAAAmmB,OAAsBjf,KAAA,SAAA6B,GAA4B,MAAT/I,IAAAyyB,GAAAzyB,GAAS+I,EAAA8tB,GAAA9tB,GAAA,OAAoBxJ,EAAA,SAAAwJ,GAAyB,KAAT/I,IAAAyyB,GAAAzyB,GAAS+I,IAAW+jB,GAAA/jB,EAAA3J,EAAA4F,GAC5H,QAAAg0C,IAAAjwC,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuB,IAAAqwB,KAAA,MAAA3O,GAAA,GAAAoP,IAAA,+CAAwE,IAAA/sB,EAAAhL,IAAAiH,EAAA,MAAA0hB,GAAA3d,EAAAhL,EAAyB,IAAA0J,GAAA,KAAA0e,EAAA8O,GAAAlsB,EAAA8sC,IAAA,MAAqU,OAAxSz2C,OAAA8H,KAAA,WAA4B,GAAN6xC,GAAAhwC,IAAM/D,EAAA,MAAA+D,GAAA0jB,IAAAvlB,KAAA,gBAAsCA,KAAA,WAAwB,MAAN6B,GAAAkwC,EAAA9yB,EAAM+wB,GAAAnuC,KAAa7B,KAAA,SAAAzC,GAA0D,MAAvCsE,GAAA2Y,KAAAjd,EAAAsE,EAAA2Y,GAAAjd,MAAAwoB,IAAAisB,GAAAnwC,EAAAggB,IAAAtkB,EAAAsE,IAAuCtE,IAASyC,KAAA,WAAkB,MAAA6B,KAAA+vB,GAAAr0B,EAAAtF,EAAAgnB,KAAqB5mB,EAAA,SAAAkF,GAAoB,GAAJgD,EAAAhD,EAAIsE,EAAA2Y,GAAA,MAAAy3B,IAAApwC,EAAA2Y,GAAwB,MAAAja,KAASP,KAAA,WAAkB,GAAAO,EAAA,KAAAA,KAAgBqlB,GAAA/jB,EAAA3J,EAAA4F,GAC7b,QAAA+zC,IAAAhwC,GAAe,IAAAA,QAAA+rB,EAAA,CAAe,GAAA/rB,QAAA+rB,EAAA,SAAAgB,IAAA,iBAA2C,UAAAA,IAAA,gCAEzE,QAAAhJ,IAAA/jB,EAAAtE,EAAAtF,GAAkB,GAAAC,GAAAg6C,GAAArwC,EAAAtE,EAAAtF,EAAwD,OAAxC4J,GAAA+iB,EAAAntB,KAAAS,GAAYA,EAAAi6C,GAAA,WAAgB/1B,EAAAva,EAAA+iB,EAAA1sB,KAAYA,EAAS,QAAAg6C,IAAArwC,EAAAtE,EAAAtF,GAAmB,MAAA4J,GAAAhL,IAAAoB,GAAAsF,EAAA8pC,SAAA7nB,EAAA3d,EAAAhL,IAAA0G,EAAAlF,EAAA,SAAAkF,GAAgL,MAA7HA,GAAA,sBAAAA,EAAAgI,MAAA,2BAAAhI,EAAAgI,OAAA1D,EAAAhL,GAAAgL,EAAA4qB,cAAA,GAAAqiB,IAAA,oBAAAjtC,EAAAhL,EAAA0G,GAA6HA,IAEtR,QAAA60C,IAAAvwC,GAAe,IAAAA,EAAAmtC,OAAA,WAAyB,IAAAzxC,IAAOyxC,OAAAntC,EAAAmtC,OAAAE,WAAArtC,EAAAqtC,WAAAD,QAAAptC,EAAAotC,SAA0Dh3C,IAAM,MAAA4J,EAAAwwC,iBAAAxwC,EAAAwwC,gBAAAje,aAAAvyB,EAAAwwC,gBAAAhE,gBAAqO,WAArOp2C,GAAAg8B,IAAApyB,EAAAwwC,gBAAAje,YAAAn8B,EAAA+1C,aAAAnsC,EAAAwwC,gBAAArE,cAAA,KAAA/1C,EAAAi2C,WAAArsC,EAAAwwC,gBAAAhE,eAAAjc,MAAA,GAAsP,IAAAl6B,GAAA,GAAA62C,IAAAxxC,EAAAtF,EAAA4J,EAA6H,OAAzGA,GAAAyuC,cAAAjwC,GAAAwB,EAAAyuC,aAAA,SAAAzuC,GAA6CA,GAAA6uC,GAAAx4C,EAAAy3B,GAAA9tB,MAAiBA,EAAAywC,kBAAAp6C,EAAA65C,EAAAlwC,EAAAywC,iBAA2Cp6C,EACle,QAAAq6C,IAAA1wC,EAAAtE,EAAAtF,EAAAC,GAAqB,GAAA4F,GAAA,GAAAixC,IAAAltC,EAAAtE,EAAyC,OAAvBtF,KAAA6F,EAAA0c,GAAAviB,GAAYC,GAAAq3C,GAAAzxC,EAAA5F,GAAW4F,EAAA6zC,SAAA3xC,KAAA,WAAkC,MAAAlC,KAAY,QAAA00C,IAAA3wC,GAAepE,KAAAoE,IAASpE,KAAAF,EAAAqrC,KAAqD,QAAAqJ,IAAApwC,GAAe,MAAAqnC,IAAArnC,EAAAtE,EAAAy0C,GAAAnwC,KAAsB,QAAA4wC,IAAA5wC,EAAAtE,GAAiB,MAAAsE,GAAAtE,EAAA9E,IAAAu5C,GAAAnwC,KAAA7B,KAAA,SAAA6B,GAA+D,MAAvBA,IAAAtE,IAAAsE,EAAAqtC,WAAA3xC,GAAuB60C,GAAAvwC,SAAoB,QAAA6wC,IAAA7wC,GAAepE,KAAAoE,IAASpE,KAAAF,EAAAqrC,KAAYnrC,KAAAxF,EAAA,KAAYwF,KAAA8C,EAAAoyC,GAAAl1C,MAAgBA,KAAAF,EAAAyM,YAAA4oC,GAAA,SAAAn1C,KAAAoE,EAAArD,EAAAf,KAAAsD,EAAAtD,OAAgR,QAAAo1C,IAAAhxC,EAAAtE,GAAiB,GAAArF,GAAAD,IAAW,KAAAC,IAAAswC,OAAAtwC,KAAAqF,GAAAtF,EAAAR,KAAAyxC,GAAArnC,EAAAtE,EAAAq1C,GAAApK,GAAAtwC,IAAA2J,KAA4E,OAAvB5J,GAAAR,KAAAyxC,GAAArnC,EAAAtE,EAAAu1C,GAAAjxC,MAAuB8d,EAAA1nB,GAC1vB,QAAA06C,IAAA9wC,GAAe,GAAAtE,GAAAq1C,GAAA,SAAA36C,EAAA26C,GAAA,WAAA16C,EAAA06C,GAAA,OAA+C,OAAA5J,IAAAnnC,EAAAtE,IAAAsE,KAAA7B,KAAA,WAAqC,MAAA6B,GAAAtE,EAAA9E,IAAAR,EAAA4J,OAAsB7B,KAAA,SAAAlC,GAAmB,MAAAA,GAAA7F,EAAA4J,EAAAtE,EAAA9E,IAAAP,EAAA2J,KAAA7B,KAAA,SAAA/H,GAA2C,MAAAA,GAAAC,EAAA2J,EAAAtE,EAAA9E,IAAA8E,EAAAsE,KAAA7B,KAAA,SAAA/H,GAA2C,MAAAA,GAAAsF,EAAAsE,EAAAtE,EAAA9E,IAAAq6C,GAAAjxC,KAAA7B,KAAA,SAAA6B,GAA4C,MAAAA,GAAA+wC,GAAA/wC,GAAAtE,UAAuByC,KAAA,SAAAzC,GAAyB,MAANsE,GAAA5J,EAAAsF,EAAMs1C,GAAAhxC,EAAAtE,EAAAstB,KAAiBxyB,EAAA,WAAewJ,EAAA5J,IAAA4J,EAAA5J,EAAAsF,KAAuD,QAAAq1C,IAAA/wC,GAAe,OAAO1J,KAAA,WAAA0yB,EAAAhpB,GACpN,QAAAkxC,IAAAlxC,GAAe,MAAAmxC,IAAAnxC,EAAA,WAAuB,MAAAA,GAAAtE,EAAAwoB,IAAA+sB,GAAAjxC,EAAA5J,EAAA4yB,EAAAhpB,OAA+B,QAAAoxC,IAAApxC,EAAAtE,GAAiB,MAAAy1C,IAAAnxC,EAAA,WAAuB,MAAAA,GAAAtE,EAAAwoB,IAAAlkB,EAAA5J,EAAAsF,EAAAskB,IAAAhgB,OAAgC,QAAAqxC,IAAArxC,GAAe,MAAAmxC,IAAAnxC,EAAA,WAAuB,MAAAqnC,IAAArnC,EAAAtE,EAAAsE,EAAA5J,EAAA4J,OAC1Y,QAAAsxC,IAAAtxC,EAAAtE,GAAiB,MAAAy1C,IAAAnxC,EAAA,WAAuB,MAAAA,GAAAtE,EAAA9E,IAAAoJ,EAAA5J,EAAA4J,KAAA7B,KAAA,SAAA6B,GAAgE,MAAvBA,IAAAtE,IAAAsE,EAAAqtC,WAAA3xC,GAAuB60C,GAAAvwC,WAAqB,QAAAmxC,IAAAnxC,EAAAtE,GAAmC,MAAlBsE,GAAAtB,EAAAsB,EAAAtB,EAAAP,KAAAzC,KAAkBsE,EAAAtB,EAAY,QAAA6yC,IAAAvxC,GAAyC,GAA1BpE,KAAA3G,GAAA,EAAU04B,GAAA/xB,KAAA,MAAAoE,IAAgB6+B,GAAAjjC,MAAAgG,UAAAi9B,GAAAjjC,MAAAgG,QAAAurC,OAAgK,SAAApgB,IAAA,kBAAhK/sB,GAAAzL,GAAAiP,YAAAooB,GAAAr3B,GAAAiP,aAAA,KAAA5H,KAAAF,EAAA,GAAAq/B,IAAA8D,GAAAjjC,MAAAgG,SAAAi9B,GAAAjjC,MAAAgG,QAAAurC,OAAA/K,GAAAuI,IAAA3qC,GAAoMpE,KAAAw3B,KAAUx3B,KAAAzF,KAAUyF,KAAAmwB,KAAUnwB,KAAA41C,GAAAj9C,GAAAkP,SAAA3I,gBAAA6B,EAAAf,KAAA+lB,GAAA/lB,OAA2DA,KAAAsQ,MAAA,GAActQ,KAAAivB,GAAAt2B,GAAAkP,SAAA3I,gBAAA6B,EAAAf,KAAA6lB,GAAA7lB,OAA2D61C,GAAA71C,KAAA,MAAcA,KAAAwhB,EAAA,GAAAyzB,IAAAhS,GAAAjjC,MAAAgG,QAAAurC,OAAA,IAAAtO,GAAAjjC,MAAAtF,MAAuDsF,KAAAupB,EAAA,GAAAwrB,IAAA9R,GAAAjjC,MAAAgG,QAAAurC,OAChoB,IAAAtO,GAAAjjC,MAAAtF,MAAkBsF,KAAA6xC,EAAAzpB,GAAApoB,KAAA81C,GAAA91C,OAAwBA,KAAA5G,EAAAgvB,GAAApoB,KAAA+1C,GAAA/1C,OAAwBA,KAAAia,GAAA,EAAUja,KAAAod,GAAArc,EAAAf,KAAA2sC,GAAA3sC,MAAwBA,KAAA2e,GAAA5d,EAAAf,KAAAqd,GAAArd,MAAwBA,KAAA8d,GAAA/c,EAAAf,KAAAqtB,GAAArtB,MAAwBA,KAAA+d,GAAAhd,EAAAf,KAAAumB,GAAAvmB,MAAwBA,KAAAge,GAAAjd,EAAAf,KAAA0sC,GAAA1sC,MAAwBg2C,GAAAh2C,MAASA,KAAA6H,YAAiB7H,KAAA6H,SAAA,OAAA9G,EAAAf,KAAAiJ,OAAAjJ,MAA4CA,KAAA6H,SAAAouC,aAAAl1C,EAAAf,KAAA+mB,GAAA/mB,MAA2CA,KAAA3F,EAAA,EAASytB,GAAAxuB,KAAA0G,MAAak2C,GAAAl2C,MAASA,KAAAmnB,KAAkB,QAAAgvB,IAAA/xC,GAAeggB,GAAA9qB,KAAA0G,KAAA,uBAAmCA,KAAAwhB,EAAApd,EAAiB,QAAAgyC,IAAAhyC,GAAeggB,GAAA9qB,KAAA0G,KAAA,oBAAgCA,KAAA8C,EAAAsB,EAExd,QAAA8xC,IAAA9xC,GAAenK,OAAAY,eAAAuJ,EAAA,MAA8BpJ,IAAA,WAAe,MAAAgF,MAAAq9B,MAAiB/U,IAAA,SAAAlkB,GAAiBpE,KAAA20B,GAAAvwB,IAAWrJ,YAAA,IAAiBqJ,EAAA2tC,EAAA,KAAgK,QAAAsE,IAAAjyC,GAAe,MAAAA,GAAAkyC,IAAAv0B,EAAA,GAAAoP,IAAA,gCACzS,QAAA6kB,IAAA5xC,GAAe,GAAAtE,GAAAmjC,GAAA7+B,GAAA4B,QAAAyrC,WAAAj3C,EAAAyoC,GAAA7+B,GAAA4B,QAAAurC,MAAoDzxC,IAAA4wB,OAAAtsB,EAAAkyC,GAAAlyC,EAAAytC,EAAAtvC,KAAA,WAAmC,IAAA6B,EAAA/K,EAAA,CAA+D,GAAtD+K,IAAAirC,GAAAvvC,EAAAtF,EAAAyoC,GAAA7+B,GAAA1J,MAAsB0J,IAAA0W,UAAA1W,GAAiBytC,GAAAztC,IAAAouC,GAAAX,GAAAztC,IAAeA,EAAA2d,EAAA,CAAQywB,GAAApuC,EAAA2d,EAAQ,IAAAtnB,GAAA2J,EAAA2d,CAAUtnB,GAAAk6B,GAAAvwB,EAAAi5B,MAAa2U,GAAAv3C,EAAA2J,GAAQ3J,EAAA2J,EAAA2d,EAAM+vB,GAAAr3C,EAAA2J,EAAA+iB,GAAU8qB,GAAAx3C,EAAA2J,GAAQA,EAAA2d,EAAA,KAAS,MAAA3d,SAK5C,QAAAmyC,IAAAnyC,EAAAtE,GAAiB,GAAAtF,KAA+F,OAAtFA,GAAA+2C,OAAAtO,GAAA7+B,GAAA4B,QAAAurC,OAA6B/2C,EAAAi3C,WAAAxO,GAAA7+B,GAAA4B,QAAAyrC,WAAqCj3C,EAAAg3C,QAAAvO,GAAA7+B,GAAA1J,KAAoB0J,EAAAytC,EAAAtvC,KAAA,WAA2B,MAAAuyC,IAAAt6C,EAAAsF,EAAAsE,EAAAmlB,EAAAnlB,EAAA2a,QAA0Bxc,KAAA,SAAAzC,GAAmB,MAAA+xC,IAAAztC,IAAAtE,EAAAoxC,KAAAW,GAAAztC,GAAA8sC,KAAAkC,GAAAvB,GAAAztC,GAAAtE,GAAAsE,EAAAiZ,GAAAvd,KAAmD+1C,GAAAzxC,EAAAtE,GAAQ0yC,GAAA1yC,GAAMsE,EAAAiZ,GAAAvd,MAAeyC,KAAA,WAAkBi0C,GAAApyC,KACne,QAAAyxC,IAAAzxC,EAAAtE,GAAiB+xC,GAAAztC,KAAAkuC,GAAAT,GAAAztC,KAAAua,IAAAwI,GAAA0qB,GAAAztC,GAAA,eAAAA,EAAA0Z,IAAAqJ,GAAA0qB,GAAAztC,GAAA,cAAAA,EAAA2Z,IAAAoJ,GAAA0qB,GAAAztC,GAAA,kBAAAA,EAAA4Z,IAAAq0B,GAAAR,GAAAztC,KAAqHtE,MAAA03B,EAAAx9B,KAAAoK,EAAAua,IAAAyH,GAAAtmB,EAAA,eAAAsE,EAAA0Z,IAAAsI,GAAAtmB,EAAA,cAAAsE,EAAA2Z,IAAAqI,GAAAtmB,EAAA,kBAAAsE,EAAA4Z,IAAA,EAAA5Z,EAAA/J,GAAA83C,GAAAryC,IAAiHiyB,GAAA3tB,EAAA,cAAAtE,GAAqBA,MAAA60B,GAAAvwB,EAAAi5B,MAAA2U,GAAAlyC,EAAAsE,GAAA0tC,GAAAhyC,EAAAsE,EAAA+iB,GAAA8qB,GAAAnyC,EAAAsE,IAC5Q,QAAAqyC,IAAAryC,GAAe,GAAAtE,GAAAk1C,GAAA5wC,EAAAmlB,EAAA0Z,GAAA7+B,GAAA4B,QAAAyrC,YAAAlvC,KAAA,SAAAzC,GAAyE,OAAlBsE,EAAA2d,EAAAjiB,OAAAid,GAAA3Y,EAAAmlB,GAAkBirB,GAAApwC,EAAAmlB,IAAiB,OAAAnB,IAAAhkB,EAAAtE,GAAc,QAAAg2C,IAAA1xC,GAAe,GAAAtE,GAAAmjC,GAAA7+B,GAAA4B,QAAAyrC,WAAAj3C,EAAAi8C,GAAAryC,GAAA7B,KAAA,WAAsD,MAAAmzC,IAAAtxC,EAAAod,EAAA1hB,KAAiByC,KAAA,SAAAzC,GAAmB,MAAAA,MAAAid,GAAA3Y,EAAAmlB,EAAAnlB,EAAA2d,IAAA3d,EAAA2d,EAAAuyB,GAAA,QAAAx0C,EAAAw0C,GAAA,MAAAx0C,IAAAo0C,SAAA3xC,KAAA,WAAgF,MAAAizC,IAAApxC,EAAAod,EAAA1hB,GAAAyC,KAAA,WAAiC,MAAAzC,OAAWlF,EAAA,SAAAJ,GAAgB,qCAAAA,EAAAsN,KAAAhI,EAAA21C,GAAArxC,EAAAod,MAAsD,OAAQjf,KAAA,SAAAzC,GAAmB+1C,GAAAzxC,EAAAtE,GAAA,OAAgB,OAAAsoB,IAAAhkB,EAAA5J,GAC7c,QAAAu7C,IAAA3xC,GAAe,MAAAA,GAAAytC,EAAAtvC,KAAA,WAA2B,MAAA6B,GAAAyY,OAAcjiB,EAAA,cAAgB2H,KAAA,WAAkB,IAAA6B,EAAA/K,EAAA,MAAA+K,GAAAgZ,OAAsBxiB,EAAA,cAAgB2H,KAAA,WAAkB,IAAA6B,EAAA/K,EAAA,CAAS+K,EAAA6V,GAAA,CAAO,IAAAna,GAAAsE,EAAAod,CAAU1hB,KAAAyM,YAAA4oC,GAAA,SAAAr1C,EAAAsE,IAAAgZ,OAE5K,QAAAs5B,IAAAtyC,EAAAtE,GAAiB,GAAAtF,GAAA,KAAAC,EAAA,IAAkB,OAAA2tB,IAAAhkB,EAAAtE,EAAAyC,KAAA,SAAAzC,GAA8C,MAAhBtF,GAAA0+B,GAAAp5B,GAAQrF,EAAA46B,GAAAv1B,GAAQy2C,GAAAnyC,EAAAtE,KAAeyC,KAAA,WAAkB,MAAA2vB,KAAWyd,KAAAkC,GAAAztC,GAAAwzB,WAAAp9B,EAAAu5C,mBAAAt5C,EAAAu5C,cAAA,cAIsL,QAAA/Q,IAAA7+B,GAAc,MAAAA,GAAAyB,IAAa,QAAAgsC,IAAAztC,GAAc,MAAAA,GAAAuyC,YAA4E,QAAAC,IAAAxyC,GAAe,MAAAytC,IAAAztC,IAAAytC,GAAAztC,GAAAyyC,MAAA,KACvb,QAAAL,IAAApyC,GAAe,GAAAA,EAAA6V,EAAA,CAAQ,OAAAna,GAAA,EAAYA,EAAAsE,EAAA7J,EAAAT,OAAagG,IAAAsE,EAAA7J,EAAAuF,IAAAsE,EAAA7J,EAAAuF,GAAA82C,GAAAxyC,GAA4B,IAAAA,EAAAkM,IAAAlM,EAAAoE,UAAApE,EAAA+rB,EAAAr2B,OAAA,IAAAsK,EAAAkM,EAAAlM,EAAAoE,SAAA1I,EAAA,EAAuDA,EAAAsE,EAAA+rB,EAAAr2B,OAAagG,IAAAsE,EAAA+rB,EAAArwB,IAAAsE,EAAA+rB,EAAArwB,GAAA82C,GAAAxyC,KACmD,QAAA0yC,IAAA1yC,EAAAtE,GAAiBsE,EAAA+rB,EAAAn2B,KAAA8F,GAAYsoB,GAAAhkB,IAAAhL,EAAAmJ,KAAA,YAAwB6B,EAAA/K,GAAAolB,EAAAra,EAAA+rB,EAAArwB,IAAAsE,EAAAkM,IAAAlM,EAAAoE,WAAApE,EAAAkM,EAAAlM,EAAAoE,SAAA1I,EAAA82C,GAAAxyC,QACb,QAAAgkB,IAAAhkB,EAAAtE,GAAwD,MAAxCsE,GAAAozB,EAAAx9B,KAAA8F,GAAYA,EAAA40C,GAAA,WAAgB/1B,EAAAva,EAAAozB,EAAA13B,KAAYA,EAEuH,QAAAi3C,IAAA3yC,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,GAA2I,GAAlHivB,GAAA/xB,KAAA,oBAA2BA,KAAAF,EAAAE,KAAAxF,EAAA,KAAmBwF,KAAAzF,GAAA,EAAUyF,KAAA3G,EAAAyG,EAASE,KAAAoE,EAAA5J,IAAWw8C,MAAA,QAAA3yB,KAAA,SAA4BrkB,KAAAsD,KAAUtD,KAAAoE,EAAA6yC,IAAA,SAAA9lB,IAAA,6HAAwL,IAAhCnxB,KAAAwhB,EAAA,cAAAxhB,KAAAoE,EAAA8yC,KAAgCjyC,GAAA8P,SAAA,SAAAoc,IAAA,0IAAsK,KAAA1F,GAAA3rB,KAAAE,KAAAwhB,GACn4BiK,GAAA3rB,GAAAq3C,gBAAA,SAAAhmB,IAAA,+FAAkInxB,MAAAmO,EAAA,GAAAgxB,IAAA/6B,EAAAtB,GAAA,KAAAzC,GAAA,MAAiCL,KAAA3F,EAAAI,GAAA,WAAqB,YAAa,IAAA+mB,GAAAxhB,IAAWA,MAAA5G,IAAU,IAAAmB,GAAAyF,KAAAoE,EAAAgzC,GAAiBp3C,MAAAoE,EAAAgzC,IAAA,SAAAhzC,GAA+B,GAARizC,GAAA71B,EAAApd,GAAQ,kBAAA7J,KAAA6J,OAA8B,oBAAA7J,GAAA,CAA6B,GAAAuF,GAAAqwB,GAAA51B,EAAA0K,GAAa,mBAAAnF,MAAAsE,IAA8B,IAAA/I,GAAA2E,KAAAoE,EAAAkzC,GAAiBt3C,MAAAoE,EAAAkzC,IAAA,WAAiC,GAAXD,GAAA71B,EAAA,MAAW,kBAAAnmB,WAA6B,oBAAAA,GAAA,CAA6B,GAAA+I,GAAA+rB,GAAA90B,EAAA4J,GAAa,mBACzeb,UAA+E,QAAAizC,IAAAjzC,EAAAtE,GAAiB,OAAAtF,GAAA,EAAYA,EAAA4J,EAAAhL,EAAAU,OAAaU,IAAA,IAAQ4J,EAAAhL,EAAAoB,GAAAsF,GAAU,MAAArF,KAAW,QAAA88C,IAAAnzC,EAAAtE,GAAiB8e,EAAAxa,EAAAhL,EAAA,SAAAgL,GAAmB,MAAAA,IAAAtE,IAAc,QAAA03C,IAAApzC,EAAAtE,GAAyD,MAAxCsE,GAAAd,EAAAtJ,KAAA8F,GAAYA,EAAA40C,GAAA,WAAgB/1B,EAAAva,EAAAd,EAAAxD,KAAYA,EAGjQ,QAAA23C,IAAArzC,GAAe,GAAAA,EAAA7J,EAAA,SAAA42B,IAAA,mEACf,QAAAumB,MAAc13C,KAAAF,EAAAmF,GAAA0yC,WAAAC,IAAA,EAA+B53C,KAAAxF,EAAA,KAAYwF,KAAAoE,EAAA,QAAAqR,KAAAoD,MAAA,IAAApD,KAAAC,UACzD,QAAAmiC,IAAAzzC,EAAAtE,GAAiB,UAAAmD,GAAA,SAAAzI,EAAAC,GAA2B,GAAA42B,KAAA,IAAApsB,GAAA0yC,YAAA73C,IAAAsE,EAAA5J,IAAA4J,EAAAtE,EAAA,CAAyCmF,GAAAb,KAAA,WAAkB,GAAAa,GAAA0yC,WAAA,CAAiBvzC,EAAA5J,EAAAsF,CAAM,IAAAO,GAAA4E,GAAA0yC,WAAAG,MAA0B7yC,IAAA0yC,WAAAG,OAAA,SAAAh4C,EAAAtF,GAAiD,MAAfsF,GAAAO,EAAAP,EAAAtF,GAAS4J,EAAAtE,IAAMA,GAAUtF,QAAIC,GAAA,GAAA02B,IAAA,yBAAgClsB,IAAAb,KAAe,IAAA/D,GAAAsqB,GAAAotB,IAAand,OAAAx2B,IAAA+vC,GAAAr0C,GAAA,IAAsBgiB,GAAAyc,GAAAl+B,IAAAzF,EAAA,WAAsBH,EAAA,GAAA02B,IAAA,2EAA+E32B,SAASC,GAAA,GAAA02B,IAAA,6BACvZ,QAAA6mB,MAA8B,MAAhBC,SAAA,GAAAP,KAAgBO,GAAU,QAAAC,IAAA9zC,EAAAtE,EAAAtF,GAAmB,IAAIwF,KAAA8C,EAAAtI,GAAA7B,GAAAkN,MAAyB,MAAA/C,GAAS,SAAAquB,IAAA,2EAAwF,IAAAnxB,KAAA8C,EAAAkD,UAAAhG,KAAA8C,EAAAkD,QAAAurC,OAAiE,SAAApgB,IAAA,kBAAjE32B,GAAAwF,KAAA8C,EAAAkD,QAAAurC,MAAqG,IAAA92C,GAAAuF,KAAAK,EAAA,IAAkB,KAAIA,EAAAL,KAAA8C,EAAAk2B,OAAAja,KAAqB,MAAAjc,IAAUzC,EAAA1H,GAAAiP,YAAAooB,GAAAr3B,GAAAiP,YAAAvH,GAAA,KAAuD02C,GAAAz9C,KAAA0G,KAAAxF,EAAA4J,EAAAtE,EAAA,WAA8B,IAAI,GAAAsE,GAAA3J,EAAAqI,EAAAk2B,OAAAqE,KAAsB,MAAA7b,GAASpd,EAAA,KAAO,MAAAA,IAAS/D,EAAAmmC,GAAAuI,KAAoB,QAAAoJ,IAAA/zC,EAAAtE,EAAAtF,EAAAC,GAAqB2J,EAAA,CAAG5J,EAAA+K,MAAArL,UAAA8Y,MAAA1Z,KAAAkB,EAAwC,QAAR6F,GAAA,EAAQyC,GAAA,EAAA0e,EAAA,EAAiBA,EAAA1hB,EAAAhG,OAAW0nB,IAAA,GAAA1hB,EAAA0hB,GAAAtF,SAAApZ,GAAA,MAA0B,CAAK,GAAAA,EAAA,SAAAquB,IAAA,kGAAoH9wB,KAAe,GAAXyC,EAAAhD,EAAAhG,OAAWU,EAAAV,OAAAuG,GAAAyC,EAAAtI,EAAAV,OAAAW,EAAA,aAAA4F,GAAAyC,EAAA,GAAAzC,EAAA,aAAAA,EAAA,aAAAA,EAAA,IAAAyC,EAAA,0BAAAtI,EAAAV,OAAA,QAA8H,CAAK,IAAAuG,EAAA,EAAQA,EAAA7F,EAAAV,OAAWuG,IAAA,GAAAyC,EAAAhD,EAAAO,GAAA6b,cAAA,KAAA1hB,EAAA6F,IAAAP,EAAAO,GAAAm2B,EAAAh8B,EAAA6F,MAAAyC,EAAA,CAAgE,GAAPhD,IAAAO,GAAO,EAAAA,MAAA+3C,GAAAt+C,OAAA,SAAAq3B,IAAA,iBACn8B,kEAAmE32B,GAAA49C,GAAA/3C,GAAQ5F,KAAA,GAAAD,EAAA,eAAAsF,EAAApF,KAAA,IAAAoF,EAAApF,KAAA,oBAAAoF,EAAAmyB,EAAA,GAAuE,MAAA7tB,GAAQ3J,EAAA,MAAQ,GAAAA,EAAA,SAAA02B,IAAA,iBAAA/sB,EAAA,YAAA3J,GAAmI,QAAAs3C,IAAA3tC,EAAAtE,GAAgB,OAAOpF,KAAA0J,GAAA,GAAA6tB,EAAA,iBAAA/V,WAAApc,EAAA02B,EAAAn9B,GAAgD,QAAAg/C,MAAc,OAAO39C,KAAA,mBAAAu3B,EAAA,YAAA/V,UAAA,EAAAsa,EAAA3Z,GACjY,QAAA5C,IAAA7V,EAAAtE,GAAgB,OAAOpF,KAAA0J,GAAA,GAAA6tB,EAAA,iBAAA/V,WAAApc,EAAA02B,EAAAnyB,GAAgD,QAAAi0C,IAAAl0C,EAAAtE,GAAiB,OAAOpF,KAAA0J,GAAA,GAAA6tB,EAAA,aAAA/V,WAAApc,EAAA02B,EAAAv7B,GAA4C,QAAAs9C,IAAAn0C,EAAAtE,GAAiB,OAAOpF,KAAA0J,GAAA,GAAA6tB,EAAA,OAAA/V,WAAApc,EAAA02B,EAAAtZ,GAAuC,QAAAs7B,MAAc,OAAO99C,KAAA,GAAAu3B,EAAA,kBAAA/V,UAAA,EAAAsa,EAAA,SAAApyB,GAAsD,SAAAA,eAAAq0C,YAAoC,QAAAC,MAAc,OAAOh+C,KAAA,OAAAu3B,EAAA,+BAAA/V,UAAA,EAAAsa,EAAA,SAAApyB,GAAuE,SAAAA,eAAAuxC,OACrZ,QAAAgD,MAAc,OAAOj+C,KAAA,MAAAu3B,EAAA,8BAAA/V,UAAA,EAAAsa,EAAA,SAAApyB,GAAqE,SAAAA,eAAAzL,IAAAkN,IAAA+yC,OAA6C,QAAAC,IAAAz0C,GAAe,OAAO1J,KAAA0J,IAAA,0BAAA6tB,EAAA7tB,EAAA,WAAAA,EAAA,mCAAA8X,UAAA,EAAAsa,EAAA,SAAA12B,GAAiH,IAAAA,EAAA,QAAe,IAAAtF,IAAA4J,GAAAtE,EAAAm2B,aAAA7xB,CAA2B,UAAAtE,EAAAqe,KAAA3jB,KACxT,QAAAs+C,MAAc,OAAOp+C,KAAA,eAAAu3B,EAAA,wBAAA/V,UAAA,EAAAsa,EAAA,SAAApyB,GAAwE,SAAAA,KAAA6xB,YAAA7xB,EAAAjK,gBAAAiK,EAAAjK,eAAA,sBAAmF,QAAA4+C,MAAc,OAAOr+C,KAAA,sBAAAu3B,EAAA,yDAAA/V,UAAA,EAAAsa,EAAA,SAAApyB,GAAgH,SAAAA,GAAA/K,EAAA+K,EAAAigB,OAAAppB,EAAAmJ,EAAA40C,WAAsC,QAAAtN,IAAAtnC,EAAAtE,EAAAtF,EAAAC,GAAoB,OAAOC,KAAAF,GAAA,GAAAy3B,EAAA7tB,EAAA6tB,EAAA,OAAAnyB,EAAAmyB,EAAA/V,WAAAzhB,EAAA+7B,EAAA,SAAAh8B,GAAuD,MAAA4J,GAAAoyB,EAAAh8B,IAAAsF,EAAA02B,EAAAh8B,KAAyB,QAAAk+B,IAAAt0B,EAAAtE,GAAgB,OAAAtF,KAAAsF,GAAA,CAAgB,GAAArF,GAAAqF,EAAAtF,GAAAE,IAAgB0J,GAAA3J,GAAAw+C,GAAAx+C,EAAA2J,EAAA5J,GAAAsF,EAAAtF,GAAAggB,IAAwB,QAAA85B,IAAAlwC,EAAAtE,EAAAtF,EAAAC,GAAoB2J,EAAAtE,GAAAm5C,GAAAn5C,EAAAtF,EAAAC,GAAe,QAAAw+C,IAAA70C,EAAAtE,EAAAtF,GAAmB,QAAAC,KAAa,GAAA2J,GAAAmB,MAAArL,UAAA8Y,MAAA1Z,KAAAwH,UAAsD,OAAVq3C,IAAA93C,EAAA7F,EAAA4J,GAAUtE,EAAA0C,MAAAxC,KAAAoE,GAAuB,IAAA5J,EAAA,MAAAsF,EAAe,IAAAgD,GAAAzC,EAAA64C,GAAA90C,EAAc,KAAAtB,IAAAhD,GAAArF,EAAAqI,GAAAhD,EAAAgD,EAAqB,KAAAA,IAAAhD,GAAA5F,UAAAO,EAAAP,UAAA4I,GAAAhD,EAAA5F,UAAA4I,EAAmD,OAAArI,GAAS,QAAAy+C,IAAA90C,GAA8B,MAAfA,KAAAqU,MAAA,KAAerU,IAAAtK,OAAA,GA7R1yB,GACAwJ,IADA3K,GAAAI,EAAA,GAAAmM,QACAm4B,UAAiBp4B,GAAAjF,KAE6TsjB,GAAA,oBAAA7N,KAAAC,WAAA,GAAA6N,GAAA,EAE3LoR,GAAAzd,KAAA0B,KAAA,WAA4B,UAAA1B,MAA6jB5W,GAAA6N,EAAA1D,OAAW0D,EAAAjU,UAAAQ,KAAA,cAAyJ4F,EAAAwd,EAAA3P,GAAQ2P,EAAA5jB,UAAAQ,KAAA,iBAA4LsjB,EAAA9jB,UAAAc,IAAA,WAA4B,KAAAgF,KAAAF,EAAA,CAAaE,KAAAF,GAAS,IAAAsE,GAAApE,KAAAoE,CAAapE,MAAAoE,IAAAhC,KAAcgC,EAAAhC,KAAA,SAAYgC,GAAApE,KAAAxF,GAAgB,OAAA4J,GAAsG,IAAAkd,IAAA,GAAAtD,GAAA,WAAyB,UAAAK,IAAc,SAAAja,GAAaA,EAAAyV,SAAYqE,GAAAhkB,UAAAgnB,IAAA,SAAA9c,EAAAtE,GAA+B,GAAAtF,GAAA8mB,GAAAtmB,KAAeR,GAAA8tB,IAAAlkB,EAAAtE,GAAWE,KAAAF,EAAAE,KAAAF,EAAAsC,KAAA5H,EAAAwF,KAAAoE,EAAA5J,EAA8BwF,KAAAF,EAAAtF,GAAkJ6jB,EAAAnkB,UAAAouB,IAAA,SAAAlkB,EAAAtE,GAA+BE,KAAAoE,IAASpE,KAAAF,IAASE,KAAAoC,KAAA,MAAgBic,EAAAnkB,UAAA2f,MAAA,WAA8B7Z,KAAAoC,KAAApC,KAAAF,EAAAE,KAAAoE,EAAA,KAA8B,IAK7uCub,IAL6uCjB,GAAAnZ,MAAArL,UAAAqG,QAAA,SAAA6D,EAAAtE,GAA6C,MAAAyF,OAAArL,UAAAqG,QAAAjH,KAAA8K,EAAAtE,MAAA,KAAgD,SAAAsE,EAAAtE,GAAe,GAAAzG,EAAA+K,GAAA,MAAA/K,GAAAyG,IAAA,GAAAA,EAAAhG,OAAAsK,EAAA7D,QAAAT,EAAA,KAAmD,QAAAtF,GAAA,EAAYA,EAAA4J,EAAAtK,OAAWU,IAAA,GAAAA,IAAA4J,MAAA5J,KAAAsF,EAAA,MAAAtF,EAAiC,WAASoI,GAAA2C,MAAArL,UAAAiE,QAAA,SAAAiG,EAAAtE,EAAAtF,GAA2C+K,MAAArL,UAAAiE,QAAA7E,KAAA8K,EAAAtE,EAAAtF,IAAoC,SAAA4J,EAAAtE,EAAAtF,GAAiB,OAAAC,GAAA2J,EAAAtK,OAAAuG,EAAAhH,EAAA+K,KAAAqU,MAAA,IAAArU,EAAAtB,EAAA,EAA4CA,EAAArI,EAAIqI,QAAAzC,IAAAP,EAAAxG,KAAAkB,EAAA6F,EAAAyC,KAAAsB,IAEzjE+vB,GAAA5uB,MAAArL,UAAAuE,IAAA,SAAA2F,EAAAtE,GAAyC,MAAAyF,OAAArL,UAAAuE,IAAAnF,KAAA8K,EAAAtE,MAAA,KAA4C,SAAAsE,EAAAtE,GAAe,OAAAtF,GAAA4J,EAAAtK,OAAAW,EAAA8K,MAAA/K,GAAA6F,EAAAhH,EAAA+K,KAAAqU,MAAA,IAAArU,EAAAtB,EAAA,EAAuDA,EAAAtI,EAAIsI,QAAAzC,KAAA5F,EAAAqI,GAAAhD,EAAAxG,SAAA,GAAA+G,EAAAyC,KAAAsB,GAA2C,OAAA3J,IAAS0jC,GAAA54B,MAAArL,UAAAi/C,KAAA,SAAA/0C,EAAAtE,GAAuC,MAAAyF,OAAArL,UAAAi/C,KAAA7/C,KAAA8K,EAAAtE,MAAA,KAA6C,SAAAsE,EAAAtE,GAAe,OAAAtF,GAAA4J,EAAAtK,OAAAW,EAAApB,EAAA+K,KAAAqU,MAAA,IAAArU,EAAA/D,EAAA,EAA4CA,EAAA7F,EAAI6F,IAAA,GAAAA,IAAA5F,IAAAqF,EAAAxG,SAAA,GAAAmB,EAAA4F,KAAA+D,GAAA,QAAgD,WAEzJ2f,GAAAjW,OAAA5T,UAAAk/C,KAAA,SAAAh1C,GAAyC,MAAAA,GAAAg1C,QAAgB,SAAAh1C,GAAa,uCAAA8f,KAAA9f,GAAA,IACE8a,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,QAAAN,GAAA,aAA8J7a,GAAA,CAAG,GAAAi1C,IAAAp0C,GAAAuS,SAAmB,IAAA6hC,GAAA,CAAO,GAAA9hB,IAAA8hB,GAAAnpB,SAAoB,IAAAqH,GAAA,CAAO5X,GAAA4X,EAAM,MAAAnzB,IAASub,GAAA,GAAoM,GAAgW0B,IAGr2BN,GAHqgBf,GAAA,gGAAAvH,MAAA,KAGhNwI,IAAA,EAAA7C,GAAA,GAAAF,GAAuYqD,GAAA,EAAAE,GAAA,EAAAE,GAAA,CAAsFC,GAAA1nB,UAAA2f,MAAA,WAA8B7Z,KAAA8C,EAAA9C,KAAAF,EAAAE,KAAAsD,EAAAtD,KAAAoE,EAAA,KAAiCpE,KAAAxF,GAAA,EAAW,IAAAqnB,IAAA,GAAA7D,GAAA,WAAyB,UAAA4D,IAAc,SAAAxd,GAAaA,EAAAyV,SAEl6B5W,GAAA/I,UAAAqI,KAAA,SAAA6B,EAAAtE,EAAAtF,GAAiC,MAAAkoB,IAAA1iB,KAAA/E,EAAAmJ,KAAA,KAAAnJ,EAAA6E,KAAA,KAAAtF,IAA2CmjB,EAAA1a,GAAMK,GAAAL,EAAA/I,UAAcoJ,GAAAoxC,GAAA,SAAAtwC,EAAAtE,GAAiD,MAA9BsE,GAAAwc,EAAAxc,IAAAtE,GAAYsE,EAAA5J,GAAA,EAAOgoB,GAAAxiB,KAAAoE,GAAWpE,MAAasD,GAAA1I,EAAA,SAAAwJ,EAAAtE,GAAkB,MAAA4iB,IAAA1iB,KAAA,KAAAoE,EAAAtE,IAA0BwD,GAAAsmC,OAAA,SAAAxlC,GAAqBpE,KAAAoE,GAAAmd,IAAAT,EAAA,WAA0CuB,GAAAriB,KAAhB,GAAA0hB,IAAAtd,KAA2BpE,OAEzOsD,GAAAsf,GAAA,SAAAxe,GAAiBpE,KAAAoE,EAAAmd,GAAU9D,GAAAzd,KAAAyhB,GAAArd,IAAed,GAAAuf,GAAA,SAAAze,GAAiBpE,KAAAoE,EAAAmd,GAAU9D,GAAAzd,KAAA2hB,GAAAvd,IAE/Dd,GAAA0f,GAAA,WAAgB,OAAA5e,GAAUA,EAAAke,GAAAtiB,OAAWuiB,GAAAviB,KAAAoE,EAAApE,KAAAoE,EAAApE,KAAA5G,EAA0B4G,MAAAwhB,GAAA,EACvC,IAAA0B,IAAAlR,CAAwC1R,GAAAohB,GAAAvT,GAAQuT,GAAAxnB,UAAAQ,KAAA,QAAqH,IAAA0oB,IAAA,EAAAC,KAAeF,IAAAjpB,UAAA2jB,IAAA,EAA+SsF,GAAAjpB,UAAAgkB,GAAA,WAA2B,GAAAle,KAAA2d,GAAA,KAAgB3d,KAAA2d,GAAA7jB,QAAekG,KAAA2d,GAAAvjB,WAAuDqpB,GAAA,KAAA3G,CAAsG,IAA+QkH,IAA/QsyB,GAAA52B,EAAA,SAAA0N,GAAA1N,EAAA,YAAAA,EAAA,QAAAk2B,GAAAl2B,EAAA,QAAAuP,GAAA2mB,IAAAxoB,GAAA/H,GAAA3F,EAAA,YAAAF,EAAAG,GAAAwK,cAAA,YAAAzK,EAAA,YAAAA,EAAA,YAAAA,EAAA,WAAAA,EAAA,QAAA45B,GAAA95B,EAAAG,GAAAwK,cAAA,YAAAzK,EAAA,OAC19Btb,GAAA,CAAG,GAAA4e,IAAA,GAAAu2B,GAAA,WAAwB,GAAAn1C,GAAAub,EAAS,OAAA0F,IAAA,qBAA8BnB,KAAA9f,GAAWwxC,GAAA,kBAAA1xB,KAAA9f,GAAsCgpB,GAAA,mCAA2ClJ,KAAA9f,GAAWk1C,GAAA,gBAAAp1B,KAAA9f,GAAoCkyC,GAAA,yBAAApyB,KAAA9f,OAAA,KAAqE,IAArBm1C,KAAAv2B,GAAAu2B,MAAA,OAAqBnsB,GAAA,CAAM,GAAAosB,IAAA51B,IAAY,UAAA41B,OAAAC,WAAAz2B,IAAA,CAAgCgB,GAAAw1B,GAAA1rC,EAAc,MAAA1J,IAAS4f,GAAAhB,GAAM,GACwHqK,IADxH1J,MAC+HvB,GAAAnd,GAAA8P,QAChesY,IAAAjL,IAAAgL,GAAAxJ,OAAA,cAAAxB,GAAAs3B,WAAAv1B,SAAAH,GAAA,aAAsE,IAAA21B,IAAA1/C,OAAA2/C,QAAA,SAAAx1C,GAAkC,MAAAA,IAAU6iB,IAAAmG,IAAA,IAAAC,GAAA0N,GAAA3N,KAAAtJ,GAAA,KAAA+C,GAAA,WAAsD,IAAA5hB,GAAA6Q,mBAAA7b,OAAAY,eAAA,QAAwD,IAAAuJ,IAAA,EAAAtE,EAAA7F,OAAAY,kBAAmC,WAAYG,IAAA,WAAeoJ,GAAA,IAA2E,OAAnEa,IAAA6Q,iBAAA,OAAAgH,EAAAhd,GAAgCmF,GAAAoiB,oBAAA,OAAAvK,EAAAhd,GAAmCsE,IAAwEggB,IAAAlqB,UAAAM,EAAA,WAAyBwF,KAAAijB,IAAA,GAErT3iB,EAAAgkB,GAAAF,GAAQ,IAAAuB,IAAAg0B,IAAWE,EAAA,QAAAC,EAAA,MAAAC,EAAA,SAA8Bz1B,IAAApqB,UAAAM,EAAA,WAA0B8pB,GAAA7G,GAAAjjB,EAAAlB,KAAA0G,KAAmB,IAAAoE,GAAApE,KAAAoE,CAAa,IAAAA,EAAA41C,eAAA51C,EAAA41C,qBAAuC,IAAA51C,EAAAujB,aAAA,EAAAoT,GAAA,KAAgC32B,EAAA4gB,SAAA,KAAA5gB,EAAAsjB,SAAA,KAAAtjB,EAAAsjB,WAAAtjB,EAAAsjB,SAAA,GAA0D,MAAA5nB,MAAYwkB,GAAApqB,UAAAoJ,EAAA,WAA0B,MAAAtD,MAAAoE,EAAe,IAAAmiB,IAAA,2BAAA9Q,KAAAC,SAAA,GAAAqQ,GAAA,CAAyTE,IAAA/rB,UAAAgnB,IAAA,SAAA9c,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAqC,GAAAyC,GAAAsB,MAAmBA,EAAApE,KAAAoE,EAAAtB,MAAYsB,EAAApE,KAAAoE,EAAAtB,MAAA9C,KAAAF,IAA6B,IAAA0hB,GAAA2E,GAAA/hB,EAAAtE,EAAArF,EAAA4F,EAA6F,QAA3E,EAAAmhB,GAAA1hB,EAAAsE,EAAAod,GAAAhnB,IAAAsF,EAAA8e,IAAA,KAAA9e,EAAA,GAAA+lB,IAAA/lB,EAAAE,KAAAogB,IAAAtd,IAAArI,EAAA4F,GAAAP,EAAA8e,GAAApkB,EAAA4J,EAAApK,KAAA8F,IAA2EA,EAAgP,IAAA6mB,IAAA,mBAAAlR,KAAAC,SAAA,GAAA6R,MAAgDR,GAAA,EAOxoCa,GAAA,4BAAAnS,KAAAC,WAAA,EAAiOpV,GAAAwnB,GAAA3E,IAAQ2E,GAAA5tB,UAAAqsB,KAAA,EAAmBuB,GAAA5tB,UAAA4b,iBAAA,SAAA1R,EAAAtE,EAAAtF,EAAAC,GAA+C2rB,GAAApmB,KAAAoE,EAAAtE,EAAAtF,EAAAC,IAAkBqtB,GAAA5tB,UAAAmtB,oBAAA,SAAAjjB,EAAAtE,EAAAtF,EAAAC,GAAkD0sB,GAAAnnB,KAAAoE,EAAAtE,EAAAtF,EAAAC,IACpbqtB,GAAA5tB,UAAA80B,cAAA,SAAA5qB,GAAsC,GAAAtE,GAAAtF,EAAAwF,KAAAuf,EAAgB,IAAA/kB,EAAA,IAAAsF,KAActF,EAAEA,IAAA+kB,GAAAzf,EAAA9F,KAAAQ,EAAiBA,GAAAwF,KAAA2jB,EAAU,IAAAlpB,GAAA2J,EAAAigB,MAAAjgB,CAAgB,IAAA/K,EAAA+K,KAAA,GAAAggB,IAAAhgB,EAAA5J,OAAqB,IAAA4J,YAAAggB,IAAAhgB,EAAAzD,OAAAyD,EAAAzD,QAAAnG,MAA4C,CAAK,GAAA6F,GAAA+D,CAAQA,GAAA,GAAAggB,IAAA3pB,EAAAD,GAAaulB,EAAA3b,EAAA/D,GAAa,GAALA,GAAA,EAAKP,EAAA,OAAAgD,GAAAhD,EAAAhG,OAAA,EAA0B,GAAAgJ,EAAKA,IAAA,CAAK,GAAA0e,GAAApd,EAAAtE,IAAAgD,EAAezC,GAAA0nB,GAAAvG,EAAA/mB,GAAA,EAAA2J,IAAA/D,EAA8D,GAA5CmhB,EAAApd,EAAAtE,EAAAtF,EAAQ6F,EAAA0nB,GAAAvG,EAAA/mB,GAAA,EAAA2J,IAAA/D,EAAkBA,EAAA0nB,GAAAvG,EAAA/mB,GAAA,EAAA2J,IAAA/D,EAAkBP,EAAA,IAAAgD,EAAA,EAAaA,EAAAhD,EAAAhG,OAAWgJ,IAAA0e,EAAApd,EAAAtE,IAAAgD,GAAAzC,EAAA0nB,GAAAvG,EAAA/mB,GAAA,EAAA2J,IAAA/D,CAAiC,OAAAA,IACnYynB,GAAA5tB,UAAAgkB,GAAA,WAA6C,GAAnB4J,GAAArK,GAAAS,GAAA5kB,KAAA0G,MAAmBA,KAAAmO,EAAA,CAAW,GAAA3T,GAAA4J,EAAApE,KAAAmO,EAAArO,EAAA,CAAmB,KAAAtF,IAAA4J,KAAA,CAAc,OAAA3J,GAAA2J,IAAA5J,GAAA6F,EAAA,EAAqBA,EAAA5F,EAAAX,OAAWuG,MAAAP,EAAAkmB,GAAAvrB,EAAA4F,UAAiB+D,KAAA5J,GAAc4J,EAAAtE,KAAOE,KAAAuf,GAAA,MAEuVjc,GAAA+kB,GAAAnuB,UAAeoJ,GAAA6kB,EAAA,WAAeI,GAAAvoB,KAAS,QAAAoE,MAAAtE,EAAA,EAAiBA,EAAAE,KAAAoE,EAAAtK,OAAgBgG,IAAAsE,EAAApK,KAAAgG,KAAAF,EAAAE,KAAAoE,EAAAtE,IAA8B,OAAAsE,IAAUd,GAAA8kB,EAAA,WAAwB,MAATG,IAAAvoB,MAASA,KAAAoE,EAAAH,UAC9nBX,GAAA22C,MAAA,WAAmBj6C,KAAAF,KAAUE,KAAAxF,EAAAwF,KAAAoE,EAAAtK,OAAA,GAA6PwJ,GAAAtI,IAAA,SAAAoJ,EAAAtE,GAAoB,MAAA0oB,IAAAxoB,KAAAF,EAAAsE,GAAApE,KAAAF,EAAAsE,GAAAtE,GAAiCwD,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAAoB0oB,GAAAxoB,KAAAF,EAAAsE,KAAApE,KAAAxF,IAAAwF,KAAAoE,EAAApK,KAAAoK,IAAwCpE,KAAAF,EAAAsE,GAAAtE,GAC3YwD,GAAAnF,QAAA,SAAAiG,EAAAtE,GAAwB,OAAAtF,GAAAwF,KAAAooB,IAAA3tB,EAAA,EAAuBA,EAAAD,EAAAV,OAAWW,IAAA,CAAK,GAAA4F,GAAA7F,EAAAC,GAAAqI,EAAA9C,KAAAhF,IAAAqF,EAAyB+D,GAAA9K,KAAAwG,EAAAgD,EAAAzC,EAAAL,OAAwF,IAAAipB,IAAA,0HAChLL,IAAA1uB,UAAAgb,SAAA,WAAiC,GAAA9Q,MAAAtE,EAAAE,KAAAxF,CAAkBsF,IAAAsE,EAAApK,KAAAqvB,GAAAvpB,EAAAo6C,IAAA,OAA2B,IAAA1/C,GAAAwF,KAAAF,CAAkW,QAArVtF,GAAA,QAAAsF,KAAAsE,EAAApK,KAAA,OAAA8F,EAAAE,KAAA3G,IAAA+K,EAAApK,KAAAqvB,GAAAvpB,EAAAo6C,IAAA,QAAA91C,EAAApK,KAAAkf,mBAAA1e,EAAAsT,IAAAoK,QAAA,uBAAiI,eAAA1d,EAAAwF,KAAA5G,IAAAgL,EAAApK,KAAA,IAAAQ,EAAAsT,MAAoDtT,EAAAwF,KAAAsD,KAAAtD,KAAAF,GAAA,KAAAtF,EAAA2V,OAAA,IAAA/L,EAAApK,KAAA,KAAAoK,EAAApK,KAAAqvB,GAAA7uB,EAAA,KAAAA,EAAA2V,OAAA,GAAAgqC,GAAAC,IAAA,MAA0F5/C,EAAAwF,QAAAoE,MAAApK,KAAA,IAAAQ,IAAqCA,EAAAwF,KAAAwhB,IAAApd,EAAApK,KAAA,IAAAqvB,GAAA7uB,EAAAkjB,KAAiCtZ,EAAAgK,KAAA,IAE5I,IAAA8rC,IAAA,YAAAE,GAAA,UAAAD,GAAA,SAAA7wB,GAAA,UAAA5L,GAAA,IAC2Bpa,IAAAylB,GAAA7uB,UAAeoJ,GAAA4d,IAAA,SAAA9c,EAAAtE,GAAoBgqB,GAAA9pB,MAASA,KAAAxF,EAAA,KAAY4J,EAAA6lB,GAAAjqB,KAAAoE,EAAa,IAAA5J,GAAAwF,KAAAoE,EAAApJ,IAAAoJ,EAA8D,OAA1C5J,IAAAwF,KAAAoE,EAAAkkB,IAAAlkB,EAAA5J,MAAsBA,EAAAR,KAAA8F,GAAUE,KAAAF,GAAA,EAAUE,MACnTsD,GAAA22C,MAAA,WAAmBj6C,KAAAoE,EAAApE,KAAAxF,EAAA,KAAmBwF,KAAAF,EAAA,GAA8DwD,GAAAnF,QAAA,SAAAiG,EAAAtE,GAAwBgqB,GAAA9pB,MAASA,KAAAoE,EAAAjG,QAAA,SAAA3D,EAAAC,GAA6BmI,GAAApI,EAAA,SAAAA,GAAgB4J,EAAA9K,KAAAwG,EAAAtF,EAAAC,EAAAuF,OAAmBA,OAAOA,OAAQsD,GAAA8kB,EAAA,WAAe0B,GAAA9pB,KAAS,QAAAoE,GAAApE,KAAAoE,EAAA+jB,IAAAroB,EAAAE,KAAAoE,EAAAgkB,IAAA5tB,KAAAC,EAAA,EAA2CA,EAAAqF,EAAAhG,OAAWW,IAAA,OAAA4F,GAAA+D,EAAA3J,GAAAqI,EAAA,EAAuBA,EAAAzC,EAAAvG,OAAWgJ,IAAAtI,EAAAR,KAAA8F,EAAArF,GAAiB,OAAAD,IACpe8I,GAAA6kB,EAAA,SAAA/jB,GAAgB0lB,GAAA9pB,KAAS,IAAAF,KAAS,IAAAzG,EAAA+K,GAAA8lB,GAAAlqB,KAAAoE,KAAAtE,EAAA+e,EAAA/e,EAAAE,KAAAoE,EAAApJ,IAAAivB,GAAAjqB,KAAAoE,UAAqD,CAAKA,EAAApE,KAAAoE,EAAA+jB,GAAa,QAAA3tB,GAAA,EAAYA,EAAA4J,EAAAtK,OAAWU,IAAAsF,EAAA+e,EAAA/e,EAAAsE,EAAA5J,IAAiB,MAAAsF,IAAUwD,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAA6H,MAAzGgqB,IAAA9pB,MAASA,KAAAxF,EAAA,KAAY4J,EAAA6lB,GAAAjqB,KAAAoE,GAAa8lB,GAAAlqB,KAAAoE,KAAApE,KAAAF,GAAAE,KAAAoE,EAAApJ,IAAAoJ,GAAAtK,QAA2CkG,KAAAoE,EAAAkkB,IAAAlkB,GAAAtE,IAAkBE,KAAAF,GAAA,EAAUE,MAAasD,GAAAtI,IAAA,SAAAoJ,EAAAtE,GAAqC,MAAjBsE,KAAApE,KAAAmoB,EAAA/jB,MAAiB,EAAAA,EAAAtK,OAAAsK,EAAA,GAAA0J,GAAAhO,GAC1UwD,GAAA4R,SAAA,WAAsB,GAAAlV,KAAAxF,EAAA,MAAAwF,MAAAxF,CAAwB,KAAAwF,KAAAoE,EAAA,QAAoB,QAAAA,MAAAtE,EAAAE,KAAAoE,EAAAgkB,IAAA5tB,EAAA,EAA8BA,EAAAsF,EAAAhG,OAAWU,IAAA,CAAK,GAAAC,GAAAqF,EAAAtF,GAAA6F,EAAA6Y,mBAAAze,EAAAqT,GAA2CrT,GAAAuF,KAAAmoB,EAAA1tB,EAAY,QAAAqI,GAAA,EAAYA,EAAArI,EAAAX,OAAWgJ,IAAA,CAAK,GAAA0e,GAAAnhB,CAAQ,MAAA5F,EAAAqI,KAAA0e,GAAA,IAAAtI,mBAAAze,EAAAqI,GAAAgL,KAAqD1J,EAAApK,KAAAwnB,IAAW,MAAAxhB,MAAAxF,EAAA4J,EAAAgK,KAAA,KAAgO,IAAA+d,KAAAiB,IAAA,IAAAC,EAA2DjD,IAAAlwB,UAAAojB,IAAA,EAAmB8M,GAAAlwB,UAAAqpB,GAAA,WAA2B,MAAAvjB,MAAAoE,GAAegmB,GAAAlwB,UAAAgb,SAAA,WAAiC,eAAalV,KAAAoE,EAAA,IAAmK,IAAAimB,MAAqDE,IAAA,IAAyCC,GAAAtwB,UAAAojB,IAAA,EAAmBkN,GAAAtwB,UAAAqpB,GAAA,WAA2B,MAAAvjB,MAAAoE,GAAeomB,GAAAtwB,UAAAgb,SAAA,WAAiC,4BAA0BlV,KAAAoE,EAAA,IAC/oB,IAAAymB,IAAA,YAAgBD,GAAA,8DAAAH,KAC7TM,IAAA7wB,UAAAojB,IAAA,EAAmByN,GAAA7wB,UAAAqpB,GAAA,WAA2B,MAAAvjB,MAAAoE,GAAe2mB,GAAA7wB,UAAAgb,SAAA,WAAiC,iBAAelV,KAAAoE,EAAA,IAAsL,IAAA+mB,IAAA,qDACvPH,KAAqDI,IAAA,eAAoDC,GAAAnxB,UAAAojB,IAAA,EAAmB+N,GAAAnxB,UAAAqpB,GAAA,WAA2B,MAAAvjB,MAAAoE,GAAeinB,GAAAnxB,UAAAgb,SAAA,WAAiC,kBAAgBlV,KAAAoE,EAAA,IAAwL,IAAAknB,MAAqDE,IAAA,mBAAsBA,GAAA,IAAOA,GAAA,OAC3lB,IAAAO,KAAQsuB,YAAA,cAAAC,YAAA,cAAAC,QAAA,UAAAC,YAAA,cAAApsB,OAAA,SAAAqsB,UAAA,YAAAC,MAAA,QAAAC,KAAA,OAAAC,QAAA,UAAAv2B,KAAA,OAAAw2B,OAAA,SAAAC,OAAA,SAAA3sB,MAAA,SAIwJlB,IAAQ8tB,IAAA,MAAAC,KAAA,OAAAC,IAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,WAAwGvuB,GAAA,SAAAvV,KAAA,6DAOhJwwB,GAAA,uCAE4KvZ,GAAA,UAAAd,GAAA,SAEnOtyB,IAAQmtB,GAAA,mBAAAI,GAAA,iBAIjF2I,IAAAt3B,UAAAc,IAAA,WAA4B,MAAAgF,MAAAoE,EAAApE,KAAAF,EAAAE,KAAAxF,EAC2L,IAAUw3B,IAAVwpB,KAAiB,KAAI,GAAAC,MAAUxhD,QAAAY,eAAA4gD,GAAA,QAAiC3gD,cAAA,EAAAC,YAAA,EAAAW,MAAA,IAAwCzB,OAAAY,eAAA4gD,GAAA,QAAiC3gD,cAAA,EAAAC,YAAA,EAAAW,MAAA,IAAwCs2B,GAAA,GAAAypB,GAAAC,KAAc,MAAAt3C,GAAS4tB,IAAA,EACkB,GAAAU,IAAA,eAAAH,GAAA,QAAAC,GAAA,WAAAC,GAAA,cAAAG,GAAA,QAAAD,GAAA,YAAAG,GAAA,OAAAD,GAAA,WAA4KvyB,GAAA6wB,GAAA1mB,OAAW0mB,GAAAj3B,UAAAkqB,EAAA,WAAyB,OAAOtc,KAAA9H,KAAA8H,KAAAwF,QAAAtN,KAAAsN,UAAsC6jB,GAAAj3B,UAAAyhD,OAAA,WAA8B,MAAA37C,MAAAokB,IAC5sB,IAAA2O,IAAA,QAAAC,IAAmB4oB,iBAAA,GAAAC,qBAAA,6LAAAC,oBAAA,qJAAAC,uBAAA,kKACnBC,eAAA,+EAAAC,oBAAA,kCAAAC,mBAAA,iCAAAC,4BAAA,uEAAAC,wBAAA,wDAAAC,wBAAA,6GACAC,6BAAA,+FAAAC,uBAAA,0DAAAC,sBAAA,gCAAAC,0BAAA,mFAAAC,iBAAA,kCAAAC,yBAAA,sIACAC,iBAAA,qEAAAC,qBAAA,sLAAAC,qBAAA,kCAAAC,4BAAA,qLACAC,uBAAA,uDAAAC,gCAAA,gOAAAC,uBAAA,wEAAAC,gBAAA,wCAAAC,kBAAA,sEACAC,oBAAA,kDAAAC,qBAAA,4DAAAC,2BAAA,oFAAAC,0BAAA,+KAAAC,yBAAA,uGACAC,0BAAA,0FAAAC,sBAAA,+IAAAC,sBAAA,2GAAAC,iBAAA,gEAAAC,uBAAA,gPACAC,0BAAA,4GAAAC,iBAAA,6KAAAC,0BAAA,2EAAAC,2BAAA,2FACAC,8BAAA,8HAAAC,yBAAA,gIAAAC,4BAAA,6EAAAC,uBAAA,kDAAAC,uBAAA,kCACAC,wBAAA,oEAAAC,uBAAA,wEAAAC,0BAAA,uEAAA10C,cAAA,iDAAA20C,2CAAA,wJACAC,yBAAA,8FAAAC,gBAAA,kCAAAC,mBAAA,6DAAAC,wBAAA,yJAAAC,8CAAA,kLACAC,gBAAA,4FAAAC,uBAAA,yEAAAC,0BAAA,kEAAAC,iBAAA,4DAAAC,6BAAA,2EAAAC,6BAAA,mDACA9zC,QAAA,+BAAA+zC,qBAAA,yEAAAC,oBAAA,0FAAAC,4BAAA,2GAAAC,+BAAA,2EAAAC,iBAAA,oEACAC,iBAAA,4FAAAC,gBAAA,0DAAAC,gBAAA,+EAAAC,kBAAA,GAAAC,gBAAA,kDAAAC,0BAAA,gFAGA7sB,GAAA,UAAAM,GAAA,kBAAAF,GAAA,MAAAL,GAAA,MAAAG,GAAA,aAAAC,GAAA,iBAAAF,GAAA,cAAAI,GAAA,WAAgbe,GAAA,KAAAF,GAAA,IACxCG,IAAAv6B,UAAA4I,EAAA,WAA0B,MAAA9C,MAAAF,EAA+N,IAAAo4B,IAAA,kHAAAzf,MAAA,KAAAgf,IAAA,4DAAArC,IAAwMxM,IAAI5J,GAAA,SAAAV,GAAA,IAAAI,GAAA,IAAAO,GAAA,eAAAjN,GAAAylB,IAAkD3O,IAAK9J,GAAA,KAAAV,GAAA,IAAAI,GAAA,IAAAO,GAAA,aAAAjN,GAAAylB,IAA4C1O,IAAK/J,GAAA,KAAAV,GAAA,IAAAI,GAAA,IAAAO,GAAA,aAAAjN,GAAAylB,IAA4C2iB,IAAKp7B,GAAA,OAAAV,GAAA,IAAAI,GAAA,IAAAO,GAAA,cAAAjN,GAAAkmB,KAA+VtC,GAAA,UAAAF,GAAA,YACl7Bp1B,GAAAq1B,GAAAE,IAC5Sv1B,EAAAg1B,GAAAK,IAAuKr1B,EAAAk1B,GAAAG,IAA8Gr1B,EAAAi1B,GAAAI,IACjPr1B,EAAAm1B,GAAAE,IACoOc,GAAAv8B,UAAAikB,GAAA,SAAA/Z,GAA4B,MAAAm+B,IAAAn+B,EAAA0yB,GAAA92B,QAAuBy2B,GAAAv8B,UAAAM,EAAA,SAAA4J,EAAAtE,GAA6B,GAAAtF,GAAAs8B,GAAA92B,KAA2B,OAAZxF,GAAAk8B,QAAA52B,EAAY4iC,GAAAt+B,EAAA5J,IAC1di8B,GAAAv8B,UAAA4I,EAAA,SAAAsB,EAAAtE,GAA4C,MAAAy2B,IAAAqM,GAAAx+B,EAAf0yB,GAAA92B,OAAeF,IAC5C22B,GAAAv8B,UAAAkqB,EAAA,WAA0B,GAAAhgB,IAAO6xB,WAAAj2B,KAAAi2B,WAAAiqB,aAAAlgD,KAAAkgD,aAA6M,OAAlJlgD,MAAA02B,UAAAtyB,EAAAg1B,aAAAp5B,KAAA02B,SAA4C12B,KAAA22B,cAAAvyB,EAAA+0B,iBAAAn5B,KAAA22B,aAAwD32B,KAAAi3B,SAAA7yB,EAAAyyB,iBAAA72B,KAAAi3B,QAA8C7yB,GAAwIizB,GAAAn9B,UAAAikC,GAAA,SAAA/5B,GAA0C,MAAdpE,MAAAiiB,GAAAnC,EAAA1b,GAAcpE,MAAwDM,EAAAk3B,GAAAH,IACxdG,GAAAt9B,UAAA+jB,GAAA,SAAA7Z,GAAwD,MAA7Bqa,GAAAze,KAAAoE,MAAApE,KAAAoE,EAAApK,KAAAoK,GAA6BpE,MAAaw3B,GAAAt9B,UAAAmoB,GAAA,WAA0B,MAAAvD,GAAA9e,KAAAoE,IAAmBozB,GAAAt9B,UAAA09B,WAAA,SAAAxzB,EAAAtE,GAAqC,IAAAsE,IAAAtE,EAAA,SAAAqxB,IAAA,yFAAgH,WAAAsF,IAAAz2B,KAAAi2B,YAA+BS,QAAAtyB,GAAA,KAAAuyB,YAAA72B,GAAA,MAAoCE,KAAAi2B,aAA6D31B,EAAAo3B,GAAAF,IAAQzF,GAAA2F,GAAA,8BAAmC3F,GAAA2F,GAAA,0CAClNp3B,EAAAu3B,GAAAL,IAAQzF,GAAA8F,GAAA,4BAAiC9F,GAAA8F,GAAA,sCAC9Mv3B,EAAAy3B,GAAAP,IAAQzF,GAAAgG,GAAA,4BAAiChG,GAAAgG,GAAA,sCAAoLz3B,EAAA23B,GAAAZ,IAAStF,GAAAkG,GAAA,6BAAkClG,GAAAkG,GAAA,wCAEnUG,GAAAl+B,UAAAikB,GAAA,SAAA/Z,GAA4B,MAAApE,MAAAkgD,cAAA5vC,GAAA+nB,0BAAAx2B,GAAAuC,EAAA+7C,IAA8DpmB,MAAA/5B,KAAAoE,EAAA4+B,QAAAhjC,KAAAF,IAA4B+B,GAAAuC,EAAAg8C,IAAUrmB,MAAA/5B,KAAAoE,EAAAi8C,SAAArgD,KAAAF,KAAgCs4B,GAAAl+B,UAAAM,EAAA,SAAA4J,EAAAtE,GAA6B,MAAAE,MAAAkgD,cAAA5vC,GAAA+nB,0BAAAx2B,GAAAuC,EAAAk8C,IAA8D5pB,QAAA52B,EAAAi6B,MAAA/5B,KAAAoE,EAAA4+B,QAAAhjC,KAAAF,IAAsC+B,GAAAuC,EAAAm8C,IAAU7pB,QAAA52B,EAAAi6B,MAAA/5B,KAAAoE,EAAAi8C,SAAArgD,KAAAF,KAA0Cs4B,GAAAl+B,UAAA4I,EAAA,SAAAsB,EAAAtE,GAA6B,MAAAy2B,IAAAv2B,KAAAme,GAAA/Z,GAAAtE,IAAyBs4B,GAAAl+B,UAAAkqB,EAAA,WAA0B,OAAO2V,MAAA/5B,KAAAoE,EAAAi8C,SAAArgD,KAAAF,EAAAogD,aAAAlgD,KAAAkgD,eACvHjuB,GAAA3hB,IAAKkwC,YAAA,aAAyBvuB,GAAA3hB,IAAK+nB,0BAAA,cAAwCpG,GAAA3hB,IAAKgoB,8BAAA,aACvPG,GAAAv+B,UAAAikB,GAAA,SAAA/Z,GAA4B,MAAAA,GAAAkb,GAAAqZ,GAAA34B,QAAuBy4B,GAAAv+B,UAAAM,EAAA,SAAA4J,EAAAtE,GAA6B,GAAAtF,GAAAm+B,GAAA34B,KAA2B,OAAZxF,GAAAk8B,QAAA52B,EAAY+B,GAAAuC,EAAAq8C,GAAAjmD,IAAkBi+B,GAAAv+B,UAAA4I,EAAA,SAAAsB,EAAAtE,GAA6B,GAAAtF,GAAAm+B,GAAA34B,KAAgD,OAAjCxF,GAAAkmD,UAAA,SAAqBt8C,EAAAvC,GAAAuC,EAAAu8C,GAAAnmD,GAAY+7B,GAAAnyB,EAAAtE,IACxV24B,GAAAv+B,UAAAkqB,EAAA,WAA0B,GAAAhgB,IAAO6xB,WAAA,QAAiL,OAA7Jj2B,MAAAoE,EAAAib,KAAAjb,EAAAw8C,eAAA5gD,KAAAoE,EAAAib,IAAwCrf,KAAAoE,EAAAgb,KAAAhb,EAAAy8C,iBAAA7gD,KAAAoE,EAAAgb,IAA0Cpf,KAAAoE,EAAAoa,KAAApa,EAAAw0B,eAAA54B,KAAAoE,EAAAoa,IAAwCxe,KAAAoE,EAAAs0B,IAAAt0B,EAAAy0B,YAAA74B,KAAAoE,EAAAs0B,GAAmCt0B,GAElN20B,GAAA7+B,UAAAolB,GAAA,SAAAlb,EAAAtE,GAA8B,GAAAtF,GAAAwF,KAAAoE,EAAAtE,CAAe,OAAAgiB,GAAAhiB,EAAAk5C,UAAAz2C,KAAA,SAAA9H,GAAsC,IAAApB,EAAAoB,GAAA,SAAA02B,IAAA,yJAA+K,QAAArxB,EAAAukB,MAAe,sBAAAwd,IAAArnC,GAA8Bq+B,YAAAz0B,EAAA08C,eAAArmD,IAA+B8H,KAAA,SAAA6B,GAA0D,MAAvC,kBAAAtE,GAAA+Z,OAAA/Z,EAAA+Z,QAAuCzV,GAAS,SAAAA,GAAoD,KAAvC,kBAAAtE,GAAA+Z,OAAA/Z,EAAA+Z,QAAuCzV,GAAW,kBAAA+sB,IAAA,iBAChd,8FAAuOc,GAAA8G,IAAMynB,YAAA,UAAsBvuB,GAAA8G,IAAMgoB,qBAAA,UAEqEznB,GAAAp/B,UAAAkqB,EAAA,WAA0B,OAAOC,KAAArkB,KAAAF,EAAA05B,QAAAx5B,KAAAxF,EAAAi/B,YAAAz5B,KAAA8C,EAAA42B,UAAA15B,KAAAsD,EAAA7H,MAAAuE,KAAAoE,GAAApE,KAAAoE,EAAAggB,KAAiP,IAAA0pB,IAAA,IAAYnU,IAAAz/B,UAAA4gB,UAAA,SAAA1W,GAAmC,GAAAtE,GAAAE,IAAWA,MAAAoE,EAAApK,KAAAoK,GAAepE,KAAAF,IAAAE,KAAAF,EAAA,SAAAsE,GAA4B,OAAA5J,GAAA,EAAYA,EAAAsF,EAAAsE,EAAAtK,OAAaU,IAAAsF,EAAAsE,EAAA5J,GAAA4J,IAAc,mBAAAA,EAAA+rB,GAAA,2BAAAlrB,MAAAb,EAAA,KAAApE,KAAAF,KAA2E65B,GAAAz/B,UAAA8mD,YAAA,SAAA58C,GAAqCwa,EAAA5e,KAAAoE,EAAA,SAAAtE,GAAsB,MAAAA,IAAAsE,KACj2B9D,EAAAs5B,GAAAzI,IAA8J7wB,EAAAu5B,GAAA1I,IAAQ0I,GAAA3/B,UAAAkqB,EAAA,WAA0B,GAAAhgB,IAAO0D,KAAA9H,KAAA8H,KAAAwF,QAAAtN,KAAAsN,QAAqCtN,MAAA+5B,QAAA31B,EAAA21B,MAAA/5B,KAAA+5B,OAAiC/5B,KAAA64B,cAAAz0B,EAAAy0B,YAAA74B,KAAA64B,YAAmD,IAAA/4B,GAAAE,KAAA43B,YAAA53B,KAAA43B,WAAAxT,GAAsD,OAAXtkB,IAAAigB,EAAA3b,EAAAtE,GAAWsE,GAAUy1B,GAAA3/B,UAAAyhD,OAAA,WAA+B,MAAA37C,MAAAokB,IAC9K,IAAA2c,IAAA,yEAAgG/G,IAAA9/B,UAAAM,EAAA,IAA4D,IAAA8hC,GAAsBh8B,GAAA45B,GAAAF,IAASE,GAAAhgC,UAAAkK,EAAA,WAA0B,GAAAA,GAAA+1B,GAAAn6B,KAAe,OAAAoE,GAAA,GAAAi2B,eAAAj2B,GAAA,GAAAg2B,iBAAkDF,GAAAhgC,UAAA4F,EAAA,WAA0B,GAAAsE,KAAqC,OAA5B+1B,IAAAn6B,QAAAoE,EAAA,MAAAA,EAAA,OAA4BA,GACvNk4B,GAAA,GAAApC,IAAyB55B,EAAAg6B,GAAAN,IAASM,GAAApgC,UAAAkK,EAAA,WAA0B,GAAAA,GAAA,GAAAg2B,eAAyB,uBAAAh2B,GAAA,MAAAA,EAAkC,uBAAAo2B,gBAAA,UAAAD,GAAoD,MAAA9vB,OAAA,wBAAqC6vB,GAAApgC,UAAA4F,EAAA,WAA0B,UAC5VwD,GAAAi3B,GAAArgC,UAAeoJ,GAAAgd,KAAA,SAAAlc,EAAAtE,EAAAtF,GAAuB,SAAAA,MAAA,KAAAiQ,OAAA,qCAAiEzK,MAAAoE,EAAAkc,KAAAlc,EAAAtE,IACrXwD,GAAA05B,KAAA,SAAA54B,GAAmB,GAAAA,EAAA,oBAAAA,GAA0C,KAAAqG,OAAA,gCAA1CzK,MAAAoE,EAAA44B,KAAA54B,OAA4FpE,MAAAoE,EAAA44B,QAAoB15B,GAAA25B,MAAA,WAAmBj9B,KAAAoE,EAAA64B,SAAgB35B,GAAAq5B,iBAAA,aAAgCr5B,GAAA29C,kBAAA,SAAA78C,GAAgC,sBAAAA,EAAA+lB,cAAAnqB,KAAAoE,EAAA88C,YAAA,IAA6D59C,GAAA2jB,GAAA,WAAgBjnB,KAAA06B,OAAA,IAAgB16B,KAAAy6B,aAAAz6B,KAAAoE,EAAAq2B,aAAsCQ,GAAAj7B,KAAA,IAAYsD,GAAAgf,GAAA,WAAgBtiB,KAAA06B,OAAA,IAAgB16B,KAAAy6B,aAAA,GAAqBQ,GAAAj7B,KAAA,IAAYsD,GAAAqiB,GAAA,WAAgB3lB,KAAAsiB,MACtchf,GAAAy3B,GAAA,WAAgB/6B,KAAA06B,OAAA,IAAgBO,GAAAj7B,KAAA,IAA2FsD,GAAA69C,sBAAA,WAAmC,uBAAAnhD,KAAAoE,EAAA88C,aAA8FhmB,GAAAhhC,UAAAkK,EAAA,IAAoB,IAAAg9C,IAAA,CAASlmB,IAAAhhC,UAAA2f,MAAA,SAAAzV,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAuC,gBAAAA,IAAA+gD,KAAyB3mD,GAAAk6B,WAAQ30B,MAAAoE,GAA2Gg3B,GAAAlhC,UAAAgb,SAAA,WAAiC,MAAAlV,MAAAtF,KAAkB,IAAA+iC,IAAA,GAAArC,IAAA,cAAAimB,GAAA,GAAAjmB,IAAA,eAAAK,GAAA,GAAAL,IAAA,cAAAO,GAAA,GAAAP,IAAA,WAA0MD,IAAAjhC,UAAAyP,IAAA,SAAAvF,EAAAtE,EAAAtF,GAAiC,GAAA4J,EAAA1I,OAAA2/B,GAAAr7B,MAAAtE,MAAA,IAAAT,EAAA6E,YAAAsE,EAAA,GAAA82B,IAAA92B,EAAAtE,EAAAgO,GAAA9N,KAAA8C,GAAAtI,IAAA4J,IAAA5J,KAAAwF,KAA4FxF,GAAEA,IAAA4J,EAAQ,IAAAo3B,OAASD,GAAA,IACxlBj7B,GAAAs7B,GAAA5B,IAAS4B,GAAA1hC,UAAAkK,EAAA,WAA0B,UAAAy3B,IAAA77B,KAAA8C,IAAuB84B,GAAA1hC,UAAA4F,EAAA,SAAAsE,GAA2B,kBAAkB,MAAAA,SAA0P9D,EAAAu7B,GAAA/T,GAAQ,IAAAgU,IAAA,CAASx4B,IAAAu4B,GAAA3hC,UACnnBoJ,GAAAgd,KAAA,SAAAlc,EAAAtE,GAAqB,GAAAE,KAAAwvB,YAAAsM,GAAA,KAAA97B,MAAAi9B,QAAAxyB,MAAA,+BAAgFzK,MAAAwhB,EAAApd,EAASpE,KAAAxF,EAAAsF,EAASE,KAAAwvB,WAAA,EAAkBwM,GAAAh8B,OAAUsD,GAAA05B,KAAA,SAAA54B,GAAmB,MAAApE,KAAAwvB,WAAA,KAAAxvB,MAAAi9B,QAAAxyB,MAAA,8BAA8EzK,MAAAoE,GAAA,CAAU,IAAAtE,IAAOo8B,QAAAl8B,KAAAsD,EAAA6X,OAAAnb,KAAAwhB,EAAA8/B,gBAAA,GAAAC,UAAA,GAA8Dn9C,KAAAtE,EAAA4C,KAAA0B,GAAcpE,KAAA5G,EAAAooD,MAAA,GAAAC,SAAAzhD,KAAAxF,EAAAsF,IAAAyC,KAAAvC,KAAAskB,GAAAnd,KAAAnH,WAAAuiB,GAAApb,KAAAnH,QACjVsD,GAAA25B,MAAA,WAAmBj9B,KAAAy6B,aAAA,GAAqBz6B,KAAAsD,EAAA,GAAAy4B,SAAmB/7B,KAAA06B,OAAA,EAAc,GAAA16B,KAAAwvB,YAAAxvB,KAAAoE,GAAA,GAAApE,KAAAwvB,aAAAxvB,KAAAwvB,WAAA,EAAAxvB,KAAAoE,GAAA,EAAA43B,GAAAh8B,OAAuFA,KAAAwvB,WAAAsM,IAAoBx4B,GAAAghB,GAAA,SAAAlgB,GAAiBpE,KAAAoE,IAAApE,KAAAF,IAAAE,KAAAF,EAAAsE,EAAA83B,QAAAl8B,KAAAwvB,WAAA,EAAAwM,GAAAh8B,YAAAoE,IAAApE,KAAAwvB,WAAA,EAAAwM,GAAAh8B,WAAAoE,KAAAs9C,OAAAn/C,KAAAvC,KAAA6mB,GAAA1f,KAAAnH,KAAAoE,GAAApE,KAAAuiB,GAAApb,KAAAnH,UAAqKsD,GAAAujB,GAAA,SAAAziB,EAAAtE,GAAmBE,KAAAoE,IAAApE,KAAA06B,OAAAt2B,EAAAs2B,OAAA16B,KAAA26B,WAAAv2B,EAAAu2B,WAAA36B,KAAAy6B,aAAA36B,EAAAE,KAAAwvB,WAAA,EAAAwM,GAAAh8B,QAC7XsD,GAAAif,GAAA,SAAAne,GAAiB,GAAAtE,GAAAE,KAAA8C,CAAahD,MAAA6J,IAAA03C,GAAA,uBAAArhD,KAAAxF,EAAA4J,YAAAqG,OAAArG,EAAAqG,MAAArG,IAAyEpE,KAAAoE,IAAApE,KAAAwvB,WAAA,EAAAwM,GAAAh8B,QAAsCsD,GAAAq5B,iBAAA,SAAAv4B,EAAAtE,GAAiCE,KAAAsD,EAAAq+C,OAAAv9C,EAAAtE,IAAoBwD,GAAA29C,kBAAA,SAAA78C,GAAgC,MAAApE,MAAAF,EAAAE,KAAAF,EAAA9E,IAAAoJ,EAAA+lB,gBAAA,KAAA/lB,EAAApE,KAAA8C,IAAAsB,EAAAuF,IAAA03C,GAAA,gFAAArhD,KAAAxF,MAAA,SAClO8I,GAAA69C,sBAAA,WAAmC,IAAAnhD,KAAAF,EAAA,CAAY,GAAAsE,GAAApE,KAAA8C,CAA6H,OAAhHsB,MAAAuF,IAAA03C,GAAA,qFAAArhD,KAAAxF,MAAA,IAAgH,GAAS4J,IAAK,QAAAtE,GAAAE,KAAAF,EAAA8hD,UAAApnD,EAAAsF,EAAAsC,QAAsC5H,EAAA8H,MAAQ9H,IAAAkB,MAAA0I,EAAApK,KAAAQ,EAAA,QAAAA,EAAA,IAAAA,EAAAsF,EAAAsC,MAA6C,OAAAgC,GAAAgK,KAAA,SAA6R9N,EAAA27B,GAAAnU,GAAQ,IAAAqU,IAAA,EAAUF,IAAA/hC,UAAA4F,EAAAw7B,GAAA,iBAAoC,IAAAkC,IAAA,YAAAd,IAAA,aAG9bp5B,IAAA24B,GAAA/hC,UAAeoJ,GAAAmb,GAAA,eAAgB,KAAA4e,IAAAr9B,KAAAoE,IAAApE,KAAAwhB,EAAA,mBAAAxhB,KAAAsD,EAAA,eAAAo4B,GAAA17B,KAAAF,EAAAy8B,GAAAv8B,UAAAwhB,IAAAxhB,KAAAgvB,cAAA,WAAAhvB,KAAAi9B,MAAA,KACvH35B,GAAA25B,MAAA,WAAmBj9B,KAAAoE,GAAApE,KAAAxF,IAAAkhC,GAAA17B,KAAAF,EAAAy8B,GAAAv8B,KAAA,aAAAA,KAAAxF,GAAA,EAAAwF,KAAA8C,GAAA,EAAA9C,KAAAoE,EAAA64B,QAAAj9B,KAAA8C,GAAA,EAAA9C,KAAAgvB,cAAA,YAAAhvB,KAAAgvB,cAAA,SAAAmO,GAAAn9B,QAAkKsD,GAAA4a,GAAA,WAAgBle,KAAAoE,IAAApE,KAAAxF,IAAAwF,KAAAxF,GAAA,EAAAwF,KAAA8C,GAAA,EAAA9C,KAAAoE,EAAA64B,QAAAj9B,KAAA8C,GAAA,GAAAq6B,GAAAn9B,MAAA,IAA6Ei8B,GAAAxe,GAAAS,GAAA5kB,KAAA0G,OAAqBsD,GAAAyf,GAAA,WAAgB/iB,KAAA6d,KAAA7d,KAAAmwB,GAAAnwB,KAAA5G,GAAA4G,KAAA8C,EAAAs6B,GAAAp9B,WAAAsmB,OAAsDhjB,GAAAgjB,GAAA,WAAgB8W,GAAAp9B,OAI/csD,GAAAu+C,YAAA,WAAyB,IAAI,IAAA7hD,KAAAoE,EAAA,WAAuB,gBAAApE,MAAAoE,EAAA,MAAApE,MAAAoE,EAAA09C,QAA8C,QAAA9hD,KAAAzF,GAAe,IAAA4hC,IAAA,iBAAAn8B,MAAAoE,EAAAq2B,YAA+C,gDAAAz6B,MAAAoE,EAAA,MAAApE,MAAAoE,EAAA29C,uBAA6F,GAAA39C,GAAApE,KAAAF,CAA6F,OAAhFsE,MAAAuF,IAAA8zB,GAAA,iBAAAz9B,KAAAzF,EAAA,4CAAgF,KAAY,MAAAuF,GAAS,MAAA47B,IAAA17B,KAAAF,EAAA,yBAAAA,EAAAwN,SAAA,OAKvOqwB,GAAAzjC,UAAA0vC,OAAA,SAAAxlC,GAAgC,GAAApE,KAAAoE,EAAApE,KAAAxF,YAAAmjC,KAAA39B,KAAAxF,EAAAovC,aAAgD,CAAK,GAAA5pC,KAAAF,EAAA,CAAW,GAAAA,GAAAE,KAAAF,QAAaE,MAAAF,EAAcsE,EAAAtE,EAAA8pC,OAAAxlC,GAAA,KAAAtE,EAAAzG,GAAAyG,EAAA8pC,SAAyC5pC,KAAA4C,EAAA5C,KAAA4C,EAAAtJ,KAAA0G,KAAA3F,EAAA2F,WAAAmO,GAAA,EAA0CnO,KAAAoE,MAAA,GAAAk6B,IAAAt+B,MAAA89B,GAAA99B,MAAA49B,GAAA59B,MAAA,EAAAoE,MAAkDu5B,GAAAzjC,UAAAK,EAAA,SAAA6J,EAAAtE,GAA6BE,KAAA5G,GAAA,EAAUwkC,GAAA59B,KAAAoE,EAAAtE,IACxX69B,GAAAzjC,UAAAitB,EAAA,WAA0B2W,GAAA99B,MAAS49B,GAAA59B,MAAA,SAAyG29B,GAAAzjC,UAAAqI,KAAA,SAAA6B,EAAAtE,EAAAtF,GAAkC,GAAAC,GAAA4F,EAAAyC,EAAA,GAAAG,GAAA,SAAAmB,EAAAtE,GAA8BrF,EAAA2J,EAAI/D,EAAAP,GAA8D,OAAxDm+B,IAAAj+B,KAAAvF,EAAA,SAAA2J,GAAsBA,YAAAk6B,IAAAx7B,EAAA8mC,SAAAvpC,EAAA+D,KAAkCtB,EAAAP,KAAA6B,EAAAtE,EAAAtF,IAAsBmjB,EAAAggB,IAEnSr9B,EAAAy9B,GAAA5vB,GAAQ4vB,GAAA7jC,UAAAoT,QAAA,6BAAkDywB,GAAA7jC,UAAAQ,KAAA,qBAAkE4F,EAAAg+B,GAAAnwB,GAAQmwB,GAAApkC,UAAAoT,QAAA,wBAA6CgxB,GAAApkC,UAAAQ,KAAA,gBAAgG2jC,GAAAnkC,UAAAM,EAAA,WAA4C,YAAlB4jC,IAAAp+B,KAAAoE,GAAkBpE,KAAAF,EAAe,IAAAs+B,OAEpNQ,GAAA,EAAAD,GAAA,CAA8Gr+B,GAAAo+B,GAAAvwB,GAAgC7N,EAAA4+B,GAAAlF,IAASkF,GAAAhlC,UAAAkK,EAAA,WAA0B,UAAApE,MAAA8C,GAAmBo8B,GAAAhlC,UAAA4F,EAAA,WAA0B,SAErO,IAAAogC,IAAA1J,GAAA,UAAA8I,GAAA,GAAA9N,IAAA,SAAAgO,IAA0CwiB,eAAA,qCAAmDriB,GAAA,GAAAnO,IAAA,SAAAqO,IAAwBmiB,eAAA,mBAE9R7iB,IAAAjlC,UAAAK,EAAA,SAAA6J,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,GAAqC,GAAA+sB,WAAA,KAAA5qB,GAAAu8C,WAAA,KAAAv8C,GAAA82B,aAAA,KAAA92B,GAAAw8C,SAAA,SAAAtwB,IAAA,qLAA0S,IAAA3P,GAAA,GAAAya,IAAAj8B,KAAAxF,EAAqB,IAAAsI,EAAA,CAAM0e,EAAAle,EAAAmS,KAAAwO,IAAA,EAAAnhB,EAAkB,IAAAvI,GAAAqO,WAAA,WAA4B4Y,EAAAwN,cAAA,YAA2BlsB,GAAI0jB,GAAAhF,EAAA,sBAA2BjnB,GAAA0Q,aAAA1Q,EAAmB,IAAA6J,GAAA,IAAW,KAAIA,EACpfoM,KAAAC,MAAAitB,GAAA19B,QAAA,KAA2B,MAAA2iB,GAASve,EAAA,KAAOtE,KAAAsE,KAAU8iB,GAAA1F,EAAA,mBAAwBjnB,GAAA0Q,aAAA1Q,GAAmBipB,GAAAxjB,QAAWknB,GAAA1F,EAAA,qBAA0BjnB,GAAA0Q,aAAA1Q,GAAmBipB,GAAAxjB,MAASF,KAAA,QAAas8B,GAAA5a,EAAApd,EAAA5J,EAAAC,EAAA4F,GAAe,IAAAmgC,IAAAjW,GAAA,yDAAgEgW,GAAA,QAAA9qB,KAAAoD,MAAA,IAAApD,KAAAC,SAE7PypB,IAAAjlC,UAAAiU,EAAA,SAAA/J,EAAAtE,EAAAtF,EAAAC,EAAA4F,GAAmC,GAAAyC,GAAA9C,IAAWkgC,IAAA39B,KAAA,WAAmB3J,OAAAwnC,KAAAC,OAAA4hB,UAAAn/C,EAAAhD,EAAkC,IAAA0hB,GAAA5oB,OAAAwnC,KAAApH,KAAAvwB,UAAkC7P,QAAAwnC,KAAApH,KAAAkpB,SAAA,MAAgCtpD,OAAAwnC,KAAAC,OAAAC,SAA4B6hB,KAAA/9C,EAAA+W,OAAA3gB,EAAAkI,KAAAjI,EAAAyhC,QAAA77B,EAAA+hD,SAAA,OAAAz5C,SAAA,SAAAvE,GAAsExL,OAAAwnC,KAAApH,KAAAkpB,SAAA1gC,GAA6B1hB,KAAAsE,QAAWxJ,EAAA,SAAAwJ,GAAgBtE,MAAMrE,OAAO6R,QAAAlJ,KAAAkJ,SAAA,yBAIjG6xB,GAAAjlC,UAAAinB,GAAA,WAA2B,MAAAtf,IAAA7B,KAAAqiD,QAAsBljB,GAAAjlC,UAAAunB,GAAA,SAAArd,EAAAtE,GAA8B,MAAA+B,IAAA7B,KAAAsiD,IAAkB5rB,QAAAtyB,EAAA21B,MAAAj6B,KAAqBq/B,GAAAjlC,UAAAwnB,GAAA,SAAAtd,EAAAtE,GAA8B,MAAA+B,IAAA7B,KAAAugD,IAAkB7pB,QAAAtyB,EAAAi8C,SAAAvgD,IAAwB,IAAAyiD,KAAQpR,YAAA,eAAAyC,SAAA,YAAiDtwC,IAAA67B,GAAAjlC,UACleoJ,GAAAqe,GAAA,SAAAvd,EAAAtE,GAAmB,GAAAtF,IAAOk8B,QAAAtyB,GAAU3J,IAA2G,OAArGmlB,GAAA2iC,GAAA,SAAAn+C,EAAAtB,GAAoB,GAAAzC,GAAAP,EAAAgD,EAAW,QAAAzC,EAAA5F,EAAAT,KAAAoK,GAAAtB,IAAAhD,KAAAtF,EAAAsI,GAAAzC,KAAsC5F,EAAAX,SAAAU,EAAAgoD,gBAAA/nD,GAAgCoH,GAAA7B,KAAAsiD,GAAA9nD,IAAqB8I,GAAAyd,GAAA,SAAA3c,EAAAtE,GAAoE,MAAjDsE,IAAGq+C,YAAA,iBAAA1oB,MAAA31B,GAAsC2b,EAAA3b,EAAAtE,GAAQ+B,GAAA7B,KAAA0iD,GAAAt+C,IAAqBd,GAAA0d,GAAA,SAAA5c,EAAAtE,GAAkE,MAA/CsE,IAAGq+C,YAAA,eAAA1oB,MAAA31B,GAAoC2b,EAAA3b,EAAAtE,GAAQ+B,GAAA7B,KAAA2iD,GAAAv+C,IAAqBd,GAAAwd,GAAA,SAAA1c,EAAAtE,GAAoE,MAAjDsE,IAAGq+C,YAAA,eAAA/rB,QAAAtyB,GAAsC2b,EAAA3b,EAAAtE,GAAQ+B,GAAA7B,KAAA4iD,GAAAx+C,IAAuDd,GAAAgc,GAAA,SAAAlb,GAAiB,MAAAvC,IAAA7B,KAAA6iD,GAAAz+C,IAGpVd,GAAA+1C,GAAA,SAAAj1C,EAAAtE,GAAmB,MAAA+B,IAAA7B,KAAA8iD,IAAkB9f,QAAA5+B,EAAA2+C,YAAAjjD,KAA2BwD,GAAAub,GAAA,SAAAza,GAAiB,MAAAvC,IAAA7B,KAAAgjD,IAAkBhgB,QAAA5+B,KAAad,GAAAmc,GAAA,SAAArb,GAAiB,MAAAvC,IAAA7B,KAAAijD,IAAkBjgB,QAAA5+B,IAC/R,IAW2H2qC,IAX3HkU,IAAQ9f,SAAA,iBAAA3jB,EAAAujB,GAAAK,EAAA,SAAyC4f,IAAK7f,SAAA,gBAAA3jB,EAAAujB,GAAAhR,EAAA,SAAA3tB,GAA4C,IAAAA,EAAA21B,QAAA31B,EAAAq+C,YAAA,SAAAtxB,IAAA,oBAA4D+xB,IAAK/f,SAAA,gBAAA3jB,EAAA,SAAApb,GAA6C,GAAN08B,GAAA18B,IAAMA,EAAAi8C,SAAA,SAAAlvB,IAAA,kBAA6CY,EAAA4P,GAAA9/B,GAAA,GAAWq/B,IAAKiC,SAAA,iBAAyBggB,IAAKhgB,SAAA,gBAAAF,GAAA,YAAuCjB,IAAKmB,SAAA,iBAAAF,GAAA,4BAAAzjB,EAAA,SAAApb,GAAuE,IAAA+Y,EAAA/Y,EAAA69B,gBAAA,SAAA9Q,IAAA,oBAAyDgvB,IAAKhd,SAAA,kBAC5dF,GAAA,mBAAAzjB,EAAAshB,GAAA/O,EAAA4P,GAAA9/B,GAAA,GAAqCy+C,IAAKnd,SAAA,kBAAAF,GAAA,6BAAAzjB,EAAAshB,GAAA/O,EAAA4P,GAAA9/B,GAAA,GAA0E2xC,IAAKrQ,SAAA,kBAA0Bwf,IAAKxf,SAAA,yBAAAF,GAAA,eAAAzjB,EAAA,SAAApb,GAAkE,mBAAAA,EAAAq+C,YAAA,SAAAtxB,IAAA,iBAA+D2P,IAAA18B,IAAMg/B,EAAA,SAAWwf,IAAKzf,SAAA,yBAAAF,GAAA,yBAAAzjB,EAAA,SAAApb,GAA4E,mBAAAA,EAAAq+C,YAAA,SAAAtxB,IAAA,mBAAgEiS,EAAA,SAAWsf,IAAKvf,SAAA,yBAAAF,GAAA,eAC3czjB,EAAA,SAAApb,GAAc,qBAAAA,EAAAq+C,YAAA,SAAAtxB,IAAA,iBAAiE2P,IAAA18B,IAAMg/B,EAAA,SAAW3B,IAAK7f,IAAA,EAAAuhB,SAAA,mBAAArgB,GAAA,OAA2CsgC,IAAKxhC,IAAA,EAAAuhB,SAAA,oBAAArgB,GAAA,MAAAiP,EAAA,SAAA3tB,GAA0D,IAAAA,EAAAi/C,iBAAA,SAAAlyB,IAAA,oBAAuD2xB,IAAK3f,SAAA,gBAAA3jB,EAAAujB,GAAAK,EAAA,SAAwCtB,IAAKqB,SAAA,uBAAAF,GAAA,gCAAAG,EAAA,eAAmFkf,IAAKnf,SAAA,iBAAAF,GAAA,WAAAzjB,EAAAwhB,GAAAn/B,GAAA,GAAkD0+C,IAAKpd,SAAA,iBAAAF,GAAA,WAAAzjB,EAAA,SAAApb,GACvc,GAD6f48B,GAAA58B,IAC7fA,EAAAi8C,SAAA,SAAAlvB,IAAA,kBAA6CY,EAAA4P,GAAA9/B,GAAA,GAAWwgD,IAAKlf,SAAA,gBAAApR,EAAA4P,GAAA9/B,GAAA,GAAmC4gC,IAAKU,SAAA,kBAAA3jB,EAAA0iB,GAAAnQ,EAAAoQ,GAAAtgC,GAAA,GAA0CihC,IAAKK,SAAA,kBAAA3jB,EAAA0iB,GAAAnQ,EAAA,SAAA3tB,GAA8C,GAAAA,EAAAi+B,cAAA,kBAAAj+B,EAAAi+B,aAAA,SAAAlR,IAAA,iBAAkF,IAAA/sB,EAAAi+B,aAAA,KAAAC,IAAAl+B,EAAAi+B,aAA2C,KAAAj+B,EAAAoyB,IAAA,SAAArF,IAAA,mBAAwCtvB,GAAA,GAAM8gC,IAAKQ,SAAA,kBAAA3jB,EAAA,SAAApb,GAA+C,GAAN89B,GAAA99B,IAAMA,EAAAsyB,QAAA,SAAAvF,IAAA,mBAA6CY,EAAAoQ,GAAAtgC,GAAA,GAAWyhD,IAAKngB,SAAA,oBAC9d3jB,EAAA,SAAApb,GAAc,IAAAA,EAAAgU,MAAA,SAAA+Y,IAAA,yBAAiDY,EAAA4P,GAAA9/B,GAAA,GAAWu+C,IAAKjd,SAAA,iBAAA3jB,EAAA,SAAApb,GAA8C,GAAN08B,GAAA18B,IAAMA,EAAAi8C,SAAA,SAAAlvB,IAAA,mBAA8CY,EAAA4P,GAAA9/B,GAAA,GAAWghD,IAAK1f,SAAA,oBAAA3jB,EAAAoiB,GAAA7P,EAAA4P,IAAuC8e,IAAKtd,SAAA,oBAAA3jB,EAAA,SAAApb,GAA2C,IAAAA,EAAAsyB,QAAA,SAAAvF,IAAA,iBAA4CyQ,IAAAx9B,IAAM2tB,EAAA,SAAA3tB,GAAe,GAAAA,EAAAw0B,eAAA,KAAAx0B,GAAA0D,KAAA,4BAAAgyB,GAAA11B,EAAmEu9B,IAAAv9B,KAAOu8C,IAAK38B,IAAI8gB,eAAA,kBAAgC3B,SAAA,oBAAA3jB,EAAAoiB,GAAA7P,EAAA4P,IAMzI8E,IAAQvd,IAAItJ,GAAA,8DAAAK,GAAA,8CAAA5M,GAAA,KAAyH6mC,IAAKt6B,GAAA,8EAAAK,GAAA,8DAAA5M,GAAA,KAAyJ8mC,IAAKv6B,GAAA,kFAAAK,GAAA,2DAAA5M,GAAA,KACne07B,IAAAvI,GAAA,2BAE6H,IAAAmB,IAAApd,GAAA,sDAA6Dmd,GAAA,GAAAlW,IAAA,SAAA4V,GAAA,GAAA5V,IAAA,UAAAiW,GAAA,IAElIG,IAAA1tC,UAAAgb,SAAA,WAA+L,MAA9JlV,MAAA8C,EAAAymB,GAAAvpB,KAAAoE,EAAA,IAAApE,KAAA8C,GAAAknB,GAAAhqB,KAAAoE,IAAA,KAA6CpE,KAAAF,EAAAypB,GAAAvpB,KAAAoE,EAAA,MAAApE,KAAAF,GAAAkqB,GAAAhqB,KAAAoE,IAAA,OAAiDpE,KAAAxF,EAAAV,OAAAyvB,GAAAvpB,KAAAoE,EAAA,KAAApE,KAAAxF,EAAA4T,KAAA,MAAA4b,GAAAhqB,KAAAoE,IAAA,MAAgEpE,QAAAoE,GACzXyjC,GAAA3tC,UAAAgb,SAAA,WAAiC,GAAA9Q,GAAAslB,GAAA1pB,KAAAzF,EAAA,mBAAsG,IAAlEgvB,GAAAnlB,EAAA,SAAApE,KAAAmO,GAAqBob,GAAAnlB,EAAA,UAAApE,KAAAxF,GAAsB+uB,GAAAnlB,EAAA,WAAApE,KAAA3G,GAAuB2G,KAAAoE,EAAAkzB,gBAAA,CAA2B,GAAAx3B,GAAAE,KAAAoE,CAAa,KAAI,GAAA5J,GAAA7B,GAAAkN,IAAA7F,KAAAxF,GAAAw+B,OAAAqE,KAAuC,MAAA9iC,GAASC,EAAA,KAAOsF,EAAAy3B,GAAA/8B,EAAO+uB,GAAAnlB,EAAA,aAAApE,KAAAoE,EAAA6xB,YAAoCn2B,EAAAE,KAAAoE,EAAS5J,EAAAs2B,GAAAhxB,EAAAmiB,GAAW,QAAAxnB,KAAAD,KAAAC,GAAAD,KAAAC,EAAoCA,GAAAqF,EAAAonB,GAAO1sB,EAAAslB,EAAAtlB,EAAQ,QAAA6F,GAAA,EAAYA,EAAA5F,EAAAX,OAAWuG,IAAA,CAAK,GAAAyC,GAAArI,EAAA4F,EAAWyC,KAAAtI,aAAAsI,GAAoBhD,EAAA+f,IAAA/f,EAAAy3B,KAAA/8B,EAAAsF,EAAA+f,MAAArlB,EAAAsF,EAAA+f,IAAA/f,EAAAy3B,IAAqC1X,EAAArlB,IAAA+uB,GAAAnlB,EAAA,mBAAAysB,GAAAr2B,IAC/P,GADoS,kBAAAwF,MAAAoE,EAAAie,KACjeviB,EAAAE,KAAAoE,EAAAie,KAAAviB,EAAAhG,QAAAyvB,GAAAnlB,EAAA,SAAAtE,EAAAsO,KAAA,OAAoDpO,KAAA5G,EAAAmwB,GAAAnlB,EAAA,cAAApE,KAAA5G,GAAA4wB,GAAA5lB,IAAA,eAAuDpE,KAAAsD,EAAAimB,GAAAnlB,EAAA,UAAApE,KAAAsD,GAAA0mB,GAAA5lB,IAAA,WAA+CpE,KAAAwhB,EAAA+H,GAAAnlB,EAAA,IAAApE,KAAAwhB,GAAAwI,GAAA5lB,IAAA,KAAmCpE,KAAAF,EAAA,OAAA0hB,KAAAxhB,MAAAF,EAAAE,KAAAF,EAAA3F,eAAAqnB,KAAAgI,GAAAplB,EAAAod,IAAA+H,GAAAnlB,EAAAod,EAAAxhB,KAAAF,EAAA0hB,GAAuK,OAApFxhB,MAAA8C,EAAAymB,GAAAnlB,EAAA,MAAApE,KAAA8C,GAAAknB,GAAA5lB,IAAA,OAAuCod,EAAAsmB,GAAA9nC,KAAAxF,GAAagnB,EAAA1nB,QAAAyvB,GAAAnlB,EAAA,KAAAod,EAAApT,KAAA,MAAgChK,MAGnKd,GAAAykC,GAAA7tC,UAAeoJ,GAAAib,GAAA,SAAAna,EAAAtE,EAAAtF,GAAqB,GAAAC,GAAA,GAAA02B,IAAA,wBAAA9wB,EAAA,GAAA8wB,IAAA,2BAAAruB,EAAA9C,KAAAwhB,GAAA,CAAmF,OAAAxhB,MAAA8c,KAAAva,KAAA,WAAiCimC,GAAA1lC,GAAAP,KAAA,SAAA/H,GAAuBA,IAAA4J,GAAA0pB,GAAA1pB,GAAAtE,EAAAO,GAAAmhB,GAAA,OAA0B5mB,EAAA,cAAgB2H,KAAA,WAAkB,IAAAif,EAAA,MAAA6N,IAAAjrB,KAAmB7B,KAAA,WAAkB,IAAAif,EAAA,MAAAyG,IAAAztB,GAAA+H,KAAA,WAAmCzC,EAAArF,QACpf6I,GAAA6f,GAAA,WAAgB,GAAA/e,GAAA+oB,IAAU,QAAAyD,GAAAxsB,KAAA4sB,GAAA5sB,IAAsBd,GAAAmf,GAAA,WAAgB,UAChEnf,GAAAkf,GAAA,SAAApe,EAAAtE,EAAAtF,EAAAC,EAAA4F,EAAAyC,EAAA0e,GAA6B,IAAApd,EAAA,MAAA2d,GAAA,GAAAoP,IAAA,iBAAuC,IAAA3P,IAAAoP,KAAA,MAAA5wB,MAAA8c,KAAAliB,EAAA,SAAAkF,GAA2CguB,GAAA1pB,GAAM/D,EAAAP,KAAKrF,IAAAqnB,GAAU9hB,MAAAoE,IAAApE,KAAAoE,EAAA4jC,GAAAK,GAAAroC,OAA8B,IAAAzF,GAAAyF,IAAW,OAAAA,MAAAoE,EAAA7B,KAAA,WAA8B,GAAAzC,GAAAvF,EAAAuiB,KAAAliB,EAAA,SAAAkF,GAAsC,KAAXguB,IAAA1pB,GAAM/D,EAAAP,GAAKA,GAAe,OAAJrF,KAAIqF,IAASyC,KAAA,WAAkB82B,GAAA7+B,GAAMgnB,GAAuDgM,GAAhD8a,GAAA/tC,EAAA4T,EAAA5T,EAAAuI,EAAAvI,EAAAuF,IAAAtF,EAAA,KAAAsI,EAAAvI,EAAAC,MAAA,GAAAD,EAAAinB,GAAgDpd,KAASxJ,EAAA,SAAAwJ,GAAkE,KAAlD,+BAAAA,EAAA0D,OAAAvN,EAAA6J,EAAA,MAAkDA,KACzUd,GAAA6wB,GAAA,SAAA/vB,EAAAtE,EAAAtF,GAAqBwF,KAAAoE,IAAApE,KAAAoE,EAAA4jC,GAAAK,GAAAroC,OAA8B,IAAAvF,GAAAuF,IAAW,OAAAA,MAAAoE,EAAA7B,KAAA,WAA8B82B,GAAAv5B,GAAsD0tB,GAAhD8a,GAAA7tC,EAAA0T,EAAA1T,EAAAqI,EAAArI,EAAAqF,EAAAsE,EAAAtE,EAAAwtB,KAAA9yB,EAAAC,EAAAD,MAAA,GAAAC,EAAA+mB,MAAsD5mB,EAAA,SAAAwJ,GAAkE,KAAlD,+BAAAA,EAAA0D,OAAArN,EAAA2J,EAAA,MAAkDA,KAAYd,GAAAwZ,GAAA,WAAgB,GAAA1Y,GAAApE,IAAW,OAAAmoC,IAAAnoC,MAAAuC,KAAA,WAAgC,MAAA6B,GAAAhL,EAAA4mB,KAAcplB,EAAA,WAAwB,KAATwJ,KAAA,KAAS,GAAA+sB,IAAA,6BAA0C7tB,GAAAogB,GAAA,WAAgB,UAE/PpgB,GAAA+a,GAAA,SAAAja,GAAiBpE,KAAAsD,EAAAtJ,KAAAoK,IAAgBd,GAAAwb,GAAA,SAAA1a,GAAiBwa,EAAA5e,KAAAsD,EAAA,SAAAxD,GAAsB,MAAAA,IAAAsE,KAA4Od,GAAAolC,GAAAxuC,UAAeoJ,GAAAtI,IAAA,SAAAoJ,GAAkB,MAAA0d,GAAA9hB,KAAAoE,EAAAonC,QAAApnC,IAAA7B,KAAA,SAAA6B,GAA6C,MAAAA,IAAA2sB,GAAA3sB,MAAmBd,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAAoB,MAAAgiB,GAAA9hB,KAAAoE,EAAAmsB,QAAAnsB,EAAAysB,GAAA/wB,MAAmCwD,GAAAooC,EAAA,SAAAtnC,GAAgB,MAAA0d,GAAA9hB,KAAAoE,EAAAosB,WAAApsB,KAAgCd,GAAAggB,GAAA,aAAkBhgB,GAAA4Z,GAAA,aAA+D5Z,GAAAulC,GAAA3uC,UAAeoJ,GAAAtI,IAAA,SAAAoJ,GAAkB,MAAA0d,GAAA9hB,KAAAoE,OAAqBd,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAAgC,MAAZE,MAAAoE,KAAAtE,EAAYgiB,KAAYxe,GAAAooC,EAAA,SAAAtnC,GAAiC,aAAjBpE,MAAAoE,KAAiB0d,KAAYxe,GAAAggB,GAAA,aAAkBhgB,GAAA4Z,GAAA,YAAyL,IAAAguB,GACvyB5nC,IAAAwlC,GAAA5uC,UAC5VoJ,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAAoB,GAAArF,GAAAD,GAAA,EAAA6F,EAAAL,IAAkB,OAAAqpC,IAAArpC,MAAAuC,KAAA,SAAAzC,GAAoD,MAAnBrF,GAAAqF,EAAIA,EAAAwpC,GAAAE,GAAA/uC,GAAA,IAAeivC,GAAA5pC,EAAA9E,IAAAoJ,MAAoB7B,KAAA,SAAAO,GAAmB,GAAA0e,GAAA8nB,GAAAE,GAAA/uC,GAAA,GAAmB,OAAAqI,MAAApH,MAAAoE,EAAA4pC,GAAAloB,EAAA+hC,IAAAzgD,MAAmCzC,EAAA+D,IAAM5J,GAAA,EAAKsI,KAAKA,EAAA0gD,UAAAp/C,EAActB,EAAApH,MAAAoE,EAAU4pC,GAAAloB,EAAAN,IAAApe,OAAoBP,KAAA,WAAkBlC,EAAAyC,EAAAsB,GAAAtE,IAAS40C,GAAA,WAAgBl6C,GAAA6F,EAAA+D,OAAYd,GAAAtI,IAAA,SAAAoJ,GAAkB,MAAAilC,IAAArpC,MAAAuC,KAAA,SAAAzC,GAAiC,MAAA4pC,IAAAJ,GAAAE,GAAA1pC,GAAA,IAAA9E,IAAAoJ,MAA+B7B,KAAA,SAAA6B,GAAmB,MAAAA,MAAA1I,SAC/Y4H,GAAAooC,EAAA,SAAAtnC,GAAgB,GAAAtE,IAAA,EAAAtF,EAAAwF,IAAgB,OAAAqpC,IAAArpC,MAAAuC,KAAA,SAAA9H,GAA4C,MAAXqF,IAAA,EAAKtF,EAAA4J,IAAMslC,GAAAJ,GAAAE,GAAA/uC,GAAA,WAAA2J,MAAqC7B,KAAA,iBAAkB/H,GAAAsI,EAAAsB,KAAcswC,GAAA,WAAgB50C,GAAAtF,EAAA4J,OACjKd,GAAA4kB,GAAA,WAAgB,GAAA9jB,GAAApE,IAAW,OAAAqpC,IAAArpC,MAAAuC,KAAA,SAAA6B,GAAiC,GAAAtE,GAAAwpC,GAAAE,GAAAplC,GAAA,GAAmB,OAAAtE,GAAA2jD,OAAA/Z,GAAA5pC,EAAA2jD,UAAA,GAAAxgD,GAAA,SAAAmB,EAAA5J,GAAmD,GAAAC,MAAA4F,EAAAP,EAAA4jD,YAA0BrjD,GAAA+oC,UAAA,SAAAtpC,IAAwBA,IAAAa,OAAA/G,SAAAa,EAAAT,KAAA8F,EAAApE,OAAAoE,EAAA,YAAAsE,EAAA3J,IAA4D4F,EAAAw6B,QAAA,SAAAz2B,GAAsB5J,EAAAiQ,MAAArG,EAAAzD,OAAAqoC,iBAAgCzmC,KAAA,SAAAzC,GAAmB,GAAAtF,MAAQC,IAAM,OAAA2J,IAAA,CAAW,IAAA3J,EAAA,EAAQA,EAAAqF,EAAAhG,OAAWW,IAAAD,EAAAsF,EAAArF,GAAA+oD,WAAA1jD,EAAArF,GAAAiB,KAAiCjB,GAAAgzB,GAAArpB,EAAAtB,EAAAtI,GAAY4J,EAAAtB,EAAAtI,EAAM,MAAAC,MAAY6I,GAAAggB,GAAA,SAAAlf,GAAiB,GAAApE,KAAAxF,EAAAV,QAAA6vC,GAAA3pC,MAA2BA,KAAAxF,EAAAR,KAAAoK,IAChdd,GAAA4Z,GAAA,SAAA9Y,GAAiBwa,EAAA5e,KAAAxF,EAAA,SAAAsF,GAAsB,MAAAA,IAAAsE,IAAc,GAAApE,KAAAxF,EAAAV,QAAAkG,KAAAF,GAAAE,KAAAF,EAAA8pC,OAAA,eACgJtmC,GAAAumC,GAAA3vC,UAAeoJ,GAAAtI,IAAA,SAAAoJ,GAAkB,GAAAtE,GAAAE,IAAW,OAAA8hB,KAAAvf,KAAA,WAAgD,MAAAwuB,IAArBjxB,EAAAsE,EAAAonC,QAAApnC,OAAqCd,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAAoB,GAAAtF,GAAAwF,IAAW,OAAA8hB,KAAAvf,KAAA,WAA2B,GAAA9H,GAAAo2B,GAAA/wB,EAAY,QAAArF,EAAAD,EAAAkxC,EAAAtnC,GAAA5J,EAAA4J,EAAAmsB,QAAAnsB,EAAA3J,MAAoC6I,GAAAooC,EAAA,SAAAtnC,GAAgB,GAAAtE,GAAAE,IAAW,OAAA8hB,KAAAvf,KAAA,WAA2BzC,EAAAsE,EAAAosB,WAAApsB,MACjdd,GAAAggB,GAAA,SAAAlf,GAAiBa,GAAArM,QAAAwtB,GAAAnhB,GAAArM,OAAA,UAAAwL,IAAoCd,GAAA4Z,GAAA,SAAA9Y,GAAiBa,GAAArM,QAAAuuB,GAAAliB,GAAArM,OAAA,UAAAwL,IAAyEd,GAAA0mC,GAAA9vC,UAAeoJ,GAAAtI,IAAA,WAAiB,MAAA8mB,GAAA,OAAgBxe,GAAAglB,IAAA,WAAiB,MAAAxG,MAAYxe,GAAAooC,EAAA,WAAe,MAAA5pB,MAAYxe,GAAAggB,GAAA,aAAkBhgB,GAAA4Z,GAAA,aAClE5Z,GAAA2mC,GAAA/vC,UAAeoJ,GAAAtI,IAAA,SAAAoJ,GAAkB,GAAAtE,GAAAE,IAAW,OAAA8hB,KAAAvf,KAAA,WAAgD,MAAAwuB,IAArBjxB,EAAAsE,EAAAonC,QAAApnC,OAAqCd,GAAAglB,IAAA,SAAAlkB,EAAAtE,GAAoB,GAAAtF,GAAAwF,IAAW,OAAA8hB,KAAAvf,KAAA,WAA2B,GAAA9H,GAAAo2B,GAAA/wB,EAAY,QAAArF,EAAAD,EAAAkxC,EAAAtnC,GAAA5J,EAAA4J,EAAAmsB,QAAAnsB,EAAA3J,MAAoC6I,GAAAooC,EAAA,SAAAtnC,GAAgB,GAAAtE,GAAAE,IAAW,OAAA8hB,KAAAvf,KAAA,WAA2BzC,EAAAsE,EAAAosB,WAAApsB,MAAqBd,GAAAggB,GAAA,aACxehgB,GAAA4Z,GAAA,YAA4G,IAAA+tB,IACsNG,GADtNb,IAAWnd,EAAAyc,GAAA1qB,GAAA8qB,IAAWQ,IAAKrd,EAAAyc,GAAA1qB,GAAA8qB,IAAWU,IAAKvd,EAAAsb,GAAAvpB,GAAA6qB,IAAWa,IAAKzd,EAAAyc,GAAA1qB,GAAA6qB,IAAYe,IAAQ/hB,GAAA,QAAA26B,KAAA,OAAAt6B,GAAA,UAE4H/lB,IAAA0nC,GAAA9wC,UAAeoJ,GAAAtI,IAAA,SAAAoJ,EAAAtE,GAAoB,MAAAurC,IAAArrC,KAAAoE,EAAAgpB,GAAApyB,IAAAswC,GAAAlnC,EAAAtE,KAC1VwD,GAAAglB,IAAA,SAAAlkB,EAAAtE,EAAAtF,GAAsB,GAAAC,GAAA6wC,GAAAlnC,EAAA5J,GAAA6F,EAAAL,KAAA8C,EAAAuoC,GAAArrC,KAAAoE,EAAAgpB,EAAoC,OAAAtqB,GAAAwlB,IAAA7tB,EAAAqF,GAAAyC,KAAA,WAAkC,MAAAO,GAAA9H,IAAAP,KAAgB8H,KAAA,SAAAzC,GAAmB,SAAAsE,EAAAgpB,IAAA/sB,EAAAP,EAAArF,GAAAqF,MAA4BwD,GAAAiJ,YAAA,SAAAnI,EAAAtE,EAAAtF,GAA8B4J,EAAAknC,GAAAlnC,EAAAtE,GAAUE,KAAA3G,IAAA2G,KAAAF,EAAAsE,GAAAa,GAAAorB,aAAAmb,QAAApnC,IAA8Cyb,EAAA7f,KAAAoE,KAAAinC,GAAArrC,KAAA,SAAAsjB,GAAAtjB,KAAA8C,GAAA9C,KAAAwhB,IAAA0L,OAAA4E,OAAA7sB,GAAAwrB,YAAAzwB,KAAA3G,GAAAsyC,GAAA3rC,OAAgGA,KAAAoE,OAAApE,KAAAoE,SAA0BpE,KAAAoE,KAAApK,KAAAQ,IAC3W8I,GAAAoJ,eAAA,SAAAtI,EAAAtE,EAAAtF,GAAiC4J,EAAAknC,GAAAlnC,EAAAtE,GAAUE,KAAAoE,OAAAwa,EAAA5e,KAAAoE,KAAA,SAAAA,GAAqC,MAAAA,IAAA5J,IAAY,GAAAwF,KAAAoE,KAAAtK,cAAAkG,MAAAoE,MAAyCyb,EAAA7f,KAAAoE,KAAAinC,GAAArrC,KAAA,SAAAkd,GAAAld,KAAA8C,GAAA8oC,GAAA5rC,QACrIsD,GAAAmgB,GAAA,SAAArf,GAAiB,GAAAA,KAAAd,EAAA,CAAW,GAAAxD,GAAAsE,IAAAxD,GAAc,UAAAd,EAAA,OAAAtF,KAAAwF,MAAAoE,EAAA,CAAgC,GAAA3J,GAAAuF,KAAAF,EAAAtF,OAAgB,KAAAC,MAAA,KAAiC,IAAA4F,GAAA4E,GAAAorB,aAAAmb,QAAAhxC,EAAgC6F,KAAA5F,IAAAuF,KAAAF,EAAAtF,GAAA6F,EAAAL,KAAA2f,GAAAnlB,QAAgC,OAAAsF,EAAAS,QAAA,cAAAP,KAAAoE,EAAAtE,GAAA,CAA8G,OAAhE,KAAAsE,MAAAinC,GAAArrC,KAAA,SAAAkd,GAAAld,KAAA8C,GAAA8oC,GAAA5rC,MAAgEA,KAAAzF,EAAA,GAAAC,EAAAyK,GAAAorB,aAAAmb,QAAA1rC,IAAArF,EAAA2J,IAAAiO,YAAA7X,EAAA,OAAAC,EAAAwK,GAAAorB,aAAAE,QAAAzwB,EAAArF,GAAAwK,GAAAorB,aAAAG,WAAA1wB,OAAgI,IAAAE,KAAAF,OAAArF,OAAA,KAAA2J,MAAA,MAAyD,IAAAtB,GAAA9C,IAAWxF,GAAA,eAAa,KAC1f4J,OAAAtB,EAAAhD,OAAAmF,GAAAorB,aAAAmb,QAAA1rC,KAAAgD,EAAAhD,KAAAmF,GAAAorB,aAAAmb,QAAA1rC,GAAAgD,EAAA6c,GAAA7f,KAA2FstB,IAAAC,IAAA,IAAAA,IAAApoB,GAAAorB,aAAAmb,QAAA1rC,KAAAsE,IAAAiO,UAAAjO,IAAAiO,WAAAjO,IAAAynC,SAAAjjC,WAAApO,EAAA,IAAAA,SAA2GoI,IAAAwB,EAAArD,EAAAf,KAAA2f,GAAA3f,QAA2BsD,GAAAqc,GAAA,SAAAvb,GAAiBpE,KAAAoE,MAAAxB,GAAA5C,KAAAoE,KAAA,SAAAA,GAAmCA,MAA2C,IAA+ZmoC,IAA/ZP,IAAQtxC,KAAA,YAAA0yB,EAAA,QAA8Z9sB,GAAA6rC,GAAAD,GAAS,QAAAE,IAAA,GAAAwX,GAAAxX,GAAA,EAAAyX,MAAAC,GAAA,EAAiCA,GAAAF,GAAME,KAAAD,GAAAC,IAAA,CAAc,IAAA1W,IAAAvuB,EAAA,IAAAglC,GAAkB1X,IAAAjyC,UAAA2f,MAAA,WAA8B7Z,KAAAsD,EAAAtD,KAAAxF,EAAA,EAAgBwF,KAAAoE,EAAAa,GAAAqnC,WAAA,GAAAA,YAAAtsC,KAAAwhB,GAAA1C,EAAA9e,KAAAwhB,GAIp2B,IAAAgrB,KAAA,gfACA,gMAAkOlsC,GAAAwsC,GAAAX,GAAS,IAAAY,KAAA,uFAA2UzpC,IAAA0pC,GAAA9yC,UACtjBoJ,GAAAwZ,GAAA,WAAgB,MAAA9c,MAAAoe,GAAApe,KAAAoe,GAAApe,KAAAoe,GAAAqR,KAAAltB,KAAA,WAAoD,qBAAA4tB,IAAA,2BAAAlrB,IAAA,KAAAgoC,IAAA,kDAAmH,aAAA9c,GAAA,wBAAAlrB,IAAA,KAAAgoC,IAAA,4CAA2G,sBAAA9c,IAAA,qCAAAlrB,IAAA,KAAAgoC,IAAA,6CAAwH,sBAAA9c,IAAA,4BAAAlrB,IAAA,KAAAgoC,IAAA,iDACzZ,WAAY,SAAA9b,IAAA,wBACb7tB,GAAAib,GAAA,SAAAna,EAAAtE,GAA2E,MAAxDA,GAAA,GAAAqxB,IAAA,gDAAwDrP,KAAYxe,GAAAkf,GAAA,WAAgB,MAAAT,GAAA,GAAAoP,IAAA,iDAAgE7tB,GAAAogB,GAAA,WAAgB,UAAUpgB,GAAA6f,GAAA,WAAgB,UAAU7f,GAAAmf,GAAA,WAAgB,UAC3Onf,GAAA6wB,GAAA,SAAA/vB,EAAAtE,EAAAtF,GAAqB,GAAAwF,KAAAxF,EAAA,MAAAunB,GAAA,GAAAoP,IAAA,8BAAwD,IAAA12B,GAAAuF,KAAAK,EAAA4E,GAAA8P,SAAAjS,EAAA,KAAA0e,EAAA,KAAAjnB,EAAA,KAAAc,EAAA,IAAoD,OAAA2E,MAAAxF,EAAAsnB,IAAAvf,KAAA,WAAwC,MAAN82B,IAAAv5B,GAAM4tC,GAAAjzC,KAAa8H,KAAA,WAAkB,MAAA8qC,IAAA5yC,EAAA2J,EAAAtE,EAAAtF,KAAmB+H,KAAA,WAAkB,UAAAU,GAAA,SAAAmB,EAAAtE,GAA2B0hB,EAAA,WAAa,GAAA1hB,GAAAqwB,GAAA,mCAAAlrB,GAAwI,OAA1Fb,KAAI,kBAAAtE,QAA2BrF,EAAA2J,GAAA,kBAAA3J,GAAA2J,EAAAuP,QAAAlZ,EAAA2J,EAAAuP,QAAAlZ,EAAA2J,EAAA,OAA2D,GAAU3J,EAAA4jB,GAAAmD,GAAQjnB,EAAA,WAAauI,MAAAmlB,GAAA,KAAA1lB,KAAA,WAA8BzC,EAAA,GAAAqxB,IAAA,mCAC1d91B,EAAA,WAAao2B,MAAAl3B,KAAW8F,EAAAyV,iBAAA,SAAAvb,GAAA,GAAkC4yB,KAAAhD,cAAAhS,MAAA,YAAA9X,EAAAyV,iBAAA,mBAAAza,GAAA,KAAgFT,EAAA,SAAAwJ,GAAiB,MAAAwpC,IAAAnzC,GAAA8H,KAAA,WAA6B,KAAA6B,SAAaswC,GAAA,WAAgBn6C,GAAA8F,EAAAgnB,oBAAA,SAAA9sB,GAAA,GAAwCc,GAAAgF,EAAAgnB,oBAAA,mBAAAhsB,GAAA,GAAkDyH,KAAA8mC,SAAcpoB,GAAA/mB,EAAAqkB,GAAA0C,GAAW/mB,EAAAD,EAAA,QAKtM8I,GAAA+a,GAAA,SAAAja,GAAiBpE,KAAAF,EAAA9F,KAAAoK,GAAespC,GAAA1tC,MAAApF,EAAA,SAAAkF,GAAuB,uCAAAA,EAAAgI,OAAAhI,EAAA,GAAAw5B,IAAA,4BAAAnI,IAAA,kBAAA/sB,EAAAtE,OAAmHwD,GAAAwb,GAAA,SAAA1a,GAAiBwa,EAAA5e,KAAAF,EAAA,SAAAA,GAAsB,MAAAA,IAAAsE,IAAmD,IAAA6pC,KAAQvzC,KAAA,kBAAA0yB,EAAA,UAC9YghB,IAAAl0C,UAAA2f,MAAA,WAA8B7Z,KAAA8C,GAAA,EAAU9C,KAAAoE,EAAA0a,GAAA9e,KAAA5G,GAAkB4G,KAAAoE,EAAA0qC,GAAA9uC,KAAA4C,EAAA5C,KAAA3G,EAAA2G,KAAAmO,IAC1DigC,GAAAl0C,UAAA4gB,UAAA,SAAA1W,GAAgE,GAA7Bqa,EAAAze,KAAAwhB,EAAApd,IAAApE,KAAAwhB,EAAAxnB,KAAAoK,IAA6BpE,KAAA8C,EAAA,CAAY,GAAAhD,GAAAE,IAAWmuC,IAAAnuC,KAAAsD,GAAAf,KAAA,SAAA6B,GAA4BA,EAAA8pC,GAAApuC,EAAAwD,GAAAf,KAAA,WAA0BysC,GAAAlvC,GAAAlF,EAAA,SAAAwJ,GAAoB,GAAA5J,GAAA,GAAA8+B,IAAA,4BAAAnI,IAAA,+CAA4F+d,IAAA9qC,IAAAtE,EAAAvF,EAAAC,OAAgBy0C,GAAAnvC,KAAQlF,EAAA,WAAeq0C,GAAAnvC,OAAUsuC,GAAAl0C,UAAA8mD,YAAA,SAAA58C,GAAqCwa,EAAA5e,KAAAwhB,EAAA,SAAA1hB,GAAsB,MAAAA,IAAAsE,KACzWgqC,GAAAl0C,UAAAK,EAAA,SAAA6J,GAA2B,IAAAA,EAAA,SAAA+sB,IAAA,qBAAwC,QAAArxB,IAAA,EAAAtF,EAAA,EAAiBA,EAAAwF,KAAAwhB,EAAA1nB,OAAgBU,IAAA,CAAK,GAAAC,GAAAuF,KAAAwhB,EAAAhnB,EAAgB,IAAAC,EAAAonB,GAAAzd,EAAAtE,EAAAsE,EAAA5J,GAAA,EAAkBsF,EAAAE,KAAAF,EAAAsE,EAAAtE,OAAA0hB,EAAApd,EAAA3J,GAA0BqF,GAAA,CAAK,QAAkB,MAAXqvC,IAAAnvC,KAAAxF,GAAWsF,EAAU,IAAAikD,IAAA,GAAAvyB,IAAA,SAAAqe,GAAA,GAAAre,IAAA,QAA0C4c,IAAAl0C,UAAA2iB,GAAA,WAA2B,MAAA7c,MAAAxF,EAAAqiB,MAC3QuxB,GAAAl0C,UAAAi6B,GAAA,SAAA/vB,EAAAtE,EAAAtF,GAAgC,GAAA6F,GAAA5F,EAAAuF,IAAa,OAAAguC,IAAAhuC,KAAAsD,GAAAf,KAAA,WAAkC,MAAA9H,GAAA2J,EAAA+vB,GAAA/vB,EAAAtE,EAAAtF,GAAAI,EAAA,SAAAwJ,GAAmC,GAAA8qC,GAAA9qC,GAAA,SAAA+sB,IAAA,8CAAwE,OAAJ9wB,GAAA+D,EAAI8pC,GAAAzzC,EAAA6I,GAAAf,KAAA,WAA+B,KAAAlC,OAAWkC,KAAA,WAAkB,MAAA9H,GAAA2J,EAAAsf,KAAA,GAAAzgB,GAAA,cAAkCirC,GAAAzzC,EAAA6I,GAAAf,KAAA,WAA0B,MAAA9H,GAAAoiB,OAActa,KAAA,cAAmB3H,EAAA,mBAAuBwzC,GAAAl0C,UAAAqkB,GAAA,SAAAna,EAAAtE,EAAAtF,EAAAC,GAAkC,MAAAuF,MAAAoE,EAAAma,GAAA/jB,EAAA,SAAAA,GAA+B4J,EAAA+Y,GAAArd,EAAA,KAAAtF,EAAAC,IAAiBspD,GAAA/oD,OAAY,IAAAs0C,MACzTjB,IAAAn0C,UAAA2f,MAAA,WAA8B7Z,KAAAF,EAAA,KAAYE,KAAAoE,IAAApE,KAAAoE,EAAAwlC,SAAA5pC,KAAAoE,EAAA,OACzLiqC,GAAAn0C,UAAAsnB,EAAA,SAAApd,EAAAtE,GAA6B,GAAAsE,EAAA,CAAMpE,KAAA6Z,QAAa7Z,KAAAsD,GAAA,CAAU,IAAA9I,GAAA4J,EAAAtE,EAAArF,EAAA2J,EAAA5J,EAAA6F,EAAA+D,KAAA,gCAAAA,IAAA0D,KAAAhF,EAAAsB,KAAA,oDAAAA,IAAA0D,IAAoI,YAAAtN,GAAA6F,GAAAyC,EAAAsB,KAAAmrC,GAAAvvC,MAAA,OAAAoE,KAAA0d,KAAAhiB,EAAAwhB,GAAA9mB,EAAAC,GAAA+0C,GAAAxvC,KAAAoE,EAAAtE,GAAAiiB,EAAA,GAAAoP,IAAA,wBAAAoe,GAAAvvC,MAAA,aAAA8hB,SAAoIC,GAAA,GAAAoP,IAAA,wBAElUkd,GAAAn0C,UAAA2iB,GAAA,WAA2B,GAAAzY,GAAApE,IAAW,WAAAiD,GAAA,SAAAnD,EAAAtF,GAA2B4J,EAAAtE,EAAAsE,EAAAtE,IAAAyC,KAAAzC,EAAAtF,IAAA4J,EAAAtB,EAAA9I,KAAA8F,GAAAsE,EAAA5J,EAAAR,KAAAQ,GAAAo1C,GAAAxrC,OAAsLkqC,GAAAp0C,UAAAsnB,EAAA,SAAApd,EAAAtE,GAA6B,GAAAsE,EAAA,CAAM,GAAA5J,GAAA4J,EAAAtE,EAAArF,EAAA2J,EAAA5J,CAAgB4J,MAAAtE,EAAAqd,GAAA/Y,EAAAtE,EAAA,KAAAsE,MAAA5J,GAAAsnB,KAAAhiB,EAAAwhB,GAAA9mB,EAAAC,GAAAq1C,GAAA1rC,EAAAtE,GAAAiiB,EAAA,GAAAoP,IAAA,2BAAkFpP,GAAA,GAAAoP,IAAA,wBAC7M4e,GAAA71C,UAAA8pD,QAAA,SAAA5/C,GAA6D,MAA5BA,GAAA60B,GAAAj5B,KAAA4gD,eAAAx8C,GAA4BpE,KAAAoE,MAAgS6rC,GAAA/1C,UAAAk4C,MAAA,WAA8BpyC,KAAAoE,EAAApE,KAAAxF,EAAc21C,GAAAnwC,MAAA,IACxjBiwC,GAAA/1C,UAAAk2C,KAAA,WAA6BpwC,KAAAF,IAAAE,KAAAF,EAAA8pC,SAAA5pC,KAAAF,EAAA,OAA2FuwC,GAAAn2C,UAAAkqB,EAAA,WAA0B,OAAOmtB,OAAAvxC,KAAA8C,EAAAhD,EAAAywC,aAAAvwC,KAAAoE,EAAAuyB,YAAA32B,KAAAF,EAAA8wC,eAAA5wC,KAAAxF,IAC2F61C,GAAAn2C,UAAAuO,SAAA,SAAArE,GAAwC,MAANA,OAAMpE,KAAAF,IAAAE,KAAAoE,EAAA2d,EAAA,GAAAoP,IAAA,uBAAA/sB,IAAApE,KAAAF,GAAA60B,KAAA30B,KAAAxF,EAAA,IAAAwF,KAAAoE,EAAAssC,GAAA1wC,MAAkG0gC,WAAA,gBAAAC,cAAA3gC,KAAAoE,IAAgD0d,EAAA,MAAAA,GAAa6U,YAAA32B,KAAAF,EAAA8wC,eAAA5wC,KAAAxF,EAAA+1C,aAAAvwC,KAAAoE,KAAmNysC,GAAA32C,UAAAkqB,EAAA,WAA0B,OAAOwuB,YAAA5yC,KAAAF,EAAA6yC,UAAA3yC,KAAAoE,IAA+N9D,EAAA+wC,GAAAjtB,IAE53B9jB,EAAAgxC,GAAAxpB,IAAQwpB,GAAAp3C,UAAAy6B,GAAA,SAAAvwB,GAA4BpE,KAAAod,GAAAhZ,EAAU27B,GAAA//B,KAAAF,EAAAsE,IAAcktC,GAAAp3C,UAAAmjC,GAAA,WAA2B,MAAAr9B,MAAAod,IAAwMk0B,GAAAp3C,UAAA6kB,GAAA,WAA2B,MAAAD,GAAA9e,KAAAsQ,IAA+GghC,GAAAp3C,UAAAykB,GAAA,WAA2B3e,KAAA3G,EAAAyG,IAAAE,KAAA3G,EAAA+2C,OAAApwC,KAAA3G,EAAA+4C,UAG3MrgB,GAAAuf,GAAAp3C,UAAA,yBAEuEoJ,GAAAguC,GAAAp3C,UAAeoJ,GAAA4wC,OAAA,WAAoB,GAAA9vC,GAAApE,IAAW,OAAAmoB,IAAAnoB,KAAA+yC,GAAA/yC,MAAAuC,KAAA,WAAuC,MAAA8wC,IAAAjvC,GAAA7B,KAAA,WAA6B,MAAAgwC,IAAAnuC,KAAa7B,KAAAuwC,QAC1UxvC,GAAAwkB,EAAA,SAAA1jB,GAAgB,GAAAtE,GAAAE,IAAW,OAAAmoB,IAAAnoB,KAAA+yC,GAAA/yC,MAAAuC,KAAA,WAAuC,MAAAzC,GAAA0hB,EAAA/Y,SAAArE,KAAuB7B,KAAA,SAAA6B,GAAmB,IAAAA,EAAA,SAAA+sB,IAAA,iBAA2J,OAAvH/sB,GAAAuyB,aAAA72B,EAAAge,KAAA4zB,GAAA5xC,EAAAsE,EAAAuyB,aAAA72B,EAAAkvB,cAAA,GAAAqiB,IAAA,kBAAmF8B,GAAArzC,EAAA,eAAAsE,EAAAmsC,cAAoCnsC,EAAAuyB,gBAC9YrzB,GAAAmF,SAAA,SAAArE,GAA8a,MAAvZo3C,IAAA,4GAAAA,GAAA,gIAAAhgD,UAAA,kBAAAA,SAAA2X,MAAA3X,QAAA2X,KAAA,2GAAuZnT,KAAA8nB,EAAA1jB,IAE9ad,GAAAkjB,GAAA,SAAApiB,GAA2B,KAAVA,IAAA6/C,SAAU7/C,EAAAtK,OAAA,SAAAq3B,IAAA,iBAA+C/sB,KAAA,GAAOutC,GAAA3xC,MAASkxC,IAAA9sC,EAAA8/C,QAAA/S,YAAA/sC,EAAA+sC,YAAAC,SAAAhtC,EAAAwvC,SAAA7Z,MAAA31B,EAAA21B,MAAA0Y,gBAAAruC,EAAAquC,cAAA5Z,YAAAz0B,EAAAy0B,YAAA+Z,YAAAxuC,EAAAwuC,YAAAD,UAAAvuC,EAAAuuC,WAAsL,QAAA7yC,GAAA2zC,GAAArvC,GAAA5J,EAAA,EAAoBA,EAAAsF,EAAAhG,OAAWU,IAAAy4C,GAAAjzC,KAAAF,EAAAtF,GAAkB24C,IAAAnzC,KAAA,gBAAAA,KAAA+5B,OAAA31B,EAAA+/C,cAAAnkD,KAAA6yC,cAAA7yC,KAAA6yC,aAAA/4C,UAClKwJ,GAAAyc,GAAA,SAAA3b,GAAiB,GAAAtE,GAAAE,KAAAxF,EAAA,IAAkB,OAAA2tB,IAAAnoB,KAAAoE,EAAAtB,EAAA9C,KAAAF,EAAAE,KAAAkxC,KAAA3uC,KAAA,SAAA6B,GAAgG,MAA5CmvC,IAAAzzC,EAAAsE,GAAQ5J,EAAAs5C,GAAAh0C,EAAAsE,EAAA,kBAA2BtE,EAAA1G,EAAA,KAAS0G,EAAAo0C,WAAkB3xC,KAAA,WAAkB,MAAA/H,MAAS,IAAO8I,GAAAmjB,GAAA,SAAAriB,GAAiB,MAAApE,MAAA+f,GAAA3b,GAAA7B,KAAA,eACjOe,GAAAwc,GAAA,SAAA1b,GAAiB,GAAAtE,GAAAE,KAAAxF,EAAA,IAAkB,OAAA2tB,IAAAnoB,KAAA6zC,GAAA7zC,KAAAoE,EAAA6xB,YAAA1zB,KAAA,WAAoD,MAAAzC,GAAAgoB,MAAavlB,KAAA,SAAA/H,GAAmB,MAAA4J,GAAA5J,EAAAsF,IAAAtF,KAAkB+H,KAAA,SAAA6B,GAAoC,MAAjB5J,GAAAs5C,GAAAh0C,EAAAsE,EAAA,QAAiB6vC,GAAAn0C,EAAAsE,KAAe7B,KAAA,WAAkB,MAAA/H,OAAa8I,GAAA2iB,GAAA,SAAA7hB,GAAiB,MAAApE,MAAA8f,GAAA1b,GAAA7B,KAAA,SAAA6B,GAAmC,MAAAA,GAAAurC,QACrZrsC,GAAA4iB,GAAA,SAAA9hB,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAmoB,IAAAnoB,KAAA6zC,GAAA7zC,KAAA,SAAAuC,KAAA,WAA+C,MAAAytC,IAAAkC,GAAA13C,GAAA4J,EAAAtE,EAAAiB,EAAAvG,EAAAslB,GAAAtlB,QAAmC8I,GAAAojB,GAAA,SAAAtiB,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAmoB,IAAAnoB,KAAA8hB,IAAAvf,KAAA,WAAkC,MAAAytC,IAAAkC,GAAA13C,GAAA4J,EAAAtE,EAAAiB,EAAAvG,EAAAulB,GAAAvlB,OAA+B,IAC/M8I,GAAAme,GAAA,SAAArd,GAAiB,GAAAtE,GAAAE,IAAW,OAAAmoB,IAAAnoB,UAAA8nB,IAAAvlB,KAAA,SAAA/H,GAAwC,MAAAsF,KAAA2hB,GAAAjnB,EAAA4J,KAAmB7B,KAAA,SAAA6B,GAA2B,MAARmvC,IAAAzzC,EAAAsE,GAAQtE,EAAAo0C,aAAsB5wC,GAAAilB,GAAA,SAAAnkB,GAAiB,GAAAtE,GAAAE,IAAW,OAAAmoB,IAAAnoB,UAAA8nB,IAAAvlB,KAAA,SAAA/H,GAAwC,MAAA4J,GAAA5J,EAAAsF,IAAAtF,KAAkB+H,KAAA,SAAA6B,GAA2B,MAARmvC,IAAAzzC,EAAAsE,GAAQtE,EAAAo0C,aAAsB5wC,GAAAoe,GAAA,SAAAtd,GAAiB,GAAAtE,GAAAE,IAAW,OAAAmoB,IAAAnoB,UAAA8nB,IAAAvlB,KAAA,SAAA/H,GAAwC,MAAAsF,KAAA4hB,GAAAlnB,EAAA4J,KAAmB7B,KAAA,SAAA6B,GAA2B,MAARmvC,IAAAzzC,EAAAsE,GAAQtE,EAAAo0C,aACjY5wC,GAAAqe,GAAA,SAAAvd,GAAiB,YAAAA,EAAA+sC,iBAAA,KAAA/sC,EAAAgtC,SAAA,MAAA2B,IAAA/yC,KAA+D,IAAAF,GAAAE,IAAW,OAAAmoB,IAAAnoB,UAAA8nB,IAAAvlB,KAAA,SAAA/H,GAAwC,MAAAsF,KAAA6hB,GAAAnnB,GAAiB22C,YAAA/sC,EAAA+sC,YAAAyC,SAAAxvC,EAAAgtC,aAAgD7uC,KAAA,SAAA6B,GAA6N,MAA1MmvC,IAAAzzC,EAAAsE,GAAQ+uC,GAAArzC,EAAA,cAAAsE,EAAA+sC,aAAA,MAAwCgC,GAAArzC,EAAA,WAAAsE,EAAAwvC,UAAA,MAAkChxC,GAAA9C,EAAA+yC,aAAA,SAAAzuC,GAA6B,aAAAA,EAAA6xB,aAAAlE,GAAA3tB,EAAA,cAAAtE,EAAAqxC,aAAApf,GAAA3tB,EAAA,WAAAtE,EAAAsxC,aAA2FmB,GAAAzyC,KAAayC,KAAAuwC,MAC9axvC,GAAA+kB,GAAA,SAAAjkB,GAAiB,GAAAtE,GAAAE,IAAW,OAAAmoB,IAAAnoB,KAAAqzC,GAAArzC,MAAAuC,KAAA,SAAA/H,GAAwC,MAAAikB,GAAAu0B,GAAAlzC,GAAAsE,GAAA29B,GAAAjiC,IAAAtF,GAAA4J,IAAA7B,KAAA,SAAA6B,GAAkD,GAAA5J,KAAkJ,OAAzIoI,IAAAwB,EAAAsvC,qBAAA,SAAAtvC,GAAqC5J,EAAA4J,EAAA6xB,aAAA,IAAqBrzB,GAAAowC,GAAAlzC,GAAA,SAAAsE,GAAoB5J,EAAA4J,IAAA8uC,GAAApzC,EAAAsE,KAAgB5J,EAAAu+B,GAAAynB,cAAAzuB,GAAAjyB,EAAA,oBAA2CyyC,GAAAzyC,KAAayyC,GAAAzyC,GAAAyC,KAAA,WAAwB,SAAA4uB,IAAA,0BAC7S7tB,GAAA2F,OAAA,WAAoB,GAAA7E,GAAApE,IAAW,OAAAmoB,IAAAnoB,UAAA8nB,IAAAvlB,KAAA,SAAAzC,GAAwC,MAAA+B,IAAAuC,EAAAtE,EAAAqjD,IAAiBzsB,QAAA52B,MAAYyC,KAAA,WAAkB6B,EAAA4qB,cAAA,GAAAqiB,IAAA,mBAAuC9uC,KAAA,WAAmB,OAAAzC,GAAA,EAAYA,EAAAsE,EAAA+iB,EAAArtB,OAAagG,IAAAsE,EAAA+iB,EAAArnB,GAAA8pC,OAAA,cAAiCoI,IAAA5tC,EAAA,MAAW6tC,GAAA7tC,EAAA,MAAWA,EAAA+iB,KAAO/iB,EAAA7J,GAAA,EAAO83C,GAAAjuC,GAAM2tB,GAAA3tB,EAAA,qBAAyBA,SAAA48C,YAAA58C,MAC7Sd,GAAAue,GAAA,SAAAzd,EAAAtE,GAAmB,yBAAAsE,IAAApE,KAAAsD,GAAA,OAAAxD,GAAAE,KAAA8C,GAAA,kBAAAsB,IAAApE,KAAAsD,GAAA,OAAAxD,GAAAE,KAAA8C,GAAA,mBAAAsB,IAAApE,KAAAs0C,GAAA,OAAAx0C,GAAA,qBAAAsE,IAAApE,KAAAs0C,GAAA,OAAAx0C,IAA8LwD,GAAA6Z,GAAA,SAAA/Y,EAAAtE,EAAAtF,EAAAC,GAAuB,gBAAA2J,GAAA,kBAAAA,GAAA3J,IAAAuF,KAAAsD,GAAA,QAAA9I,GAAAwF,KAAA4C,EAAA5C,KAAA4C,EAAApI,GAAAsF,IAAAtF,GAAAwF,KAAA8C,GAAA9C,KAAA8C,EAAAhD,GAAAE,KAAAxF,IAAAwF,KAAAxF,EAAAovC,SAAA5pC,KAAAxF,EAAA,YAAAwF,MAAA8C,QAAA9C,MAAA4C,IACxOU,GAAAge,GAAA,SAAAld,EAAAtE,GAAmB,sBAAAsE,GAAAtE,IAAAE,KAAAsD,GAAA,MAAAvC,EAAAf,KAAAmiB,GAAAniB,MAAA,kBAAAoE,GAAAtE,IAAAE,KAAAsD,GAAA,MAAAvC,EAAAf,KAAA0iB,GAAA1iB,MAAA,mBAAAoE,IAAApE,KAAAs0C,GAAA,OAAAx0C,EAAAiB,EAAAf,KAAAmiB,GAAAniB,MAAA,qBAAAoE,IAAApE,KAAAs0C,GAAA,OAAAx0C,EAAAiB,EAAAf,KAAA0iB,GAAA1iB,MAAA,MAA0OsD,GAAAqjB,GAAA,SAAAviB,GAAiB,GAAAtE,GAAAE,IAAW,OAAAm0C,IAAAn0C,KAAA,eAAAoE,EAAA,WAA2C,MAAAyvC,IAAA/zC,EAAAsE,EAAA6xB,YAAA1zB,KAAA,WAA0C,MAAAgwC,IAAAzyC,OAAe,IAAMwD,GAAAsjB,GAAA,SAAAxiB,GAAiB,MAAA+vC,IAAAn0C,KAAA,iBAAAoE,EAAA,WAA6C,MAAA0d,OAAW,IAEhUxe,GAAAikB,GAAA,SAAAnjB,GAAiB,GAAAtE,GAAAE,IAAW,OAAAq0C,IAAAr0C,KAAA,kBAAAoE,EAAA,WAA8C,MAAAyvC,IAAA/zC,EAAAsE,EAAA6xB,cAA0B,IAAM3yB,GAAAwjB,GAAA,SAAA1iB,GAAiB,MAAAiwC,IAAAr0C,KAAA,oBAAAoE,EAAA,WAAgD,MAAA0d,OAAW,IAE5Mxe,GAAA6e,GAAA,SAAA/d,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAWA,MAAAxF,IAAAwF,KAAAxF,EAAAovC,SAAA5pC,KAAAxF,EAAA,KAAsC,IAAAC,GAAA,IAA2K,OAAA0tB,IAAAnoB,KAA3KA,KAAA8nB,IAAAvlB,KAAA,SAAA9H,GAAuC,MAAAioC,IAAAloC,EAAAsF,GAAes3B,WAAAhzB,EAAAs1B,UAAA55B,EAAA42B,QAAAj8B,MAAqC8H,KAAA,SAAA6B,GAAoC,MAAjB3J,GAAAq5C,GAAAt5C,EAAA4J,EAAA,QAAiB6vC,GAAAz5C,EAAA4J,KAAe7B,KAAA,WAAkB,MAAA9H,OAC1V6I,GAAAof,GAAA,SAAAte,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAWA,MAAAxF,IAAAwF,KAAAxF,EAAAovC,SAAA5pC,KAAAxF,EAAA,KAAsC,IAAAC,GAAA,IAAmM,OAAA0tB,IAAAnoB,KAAnM8hB,IAAAvf,KAAA,WAAiC,MAAAg0B,IAAAqM,GAAApoC,EAAAsF,GAAkBs3B,WAAAhzB,EAAAs1B,UAAA55B,IAAyBtF,EAAA02C,OAAS3uC,KAAA,SAAA6B,GAA+D,MAA5C3J,GAAAq5C,GAAAt5C,EAAA4J,EAAA,kBAA2BmvC,GAAA/4C,EAAA4J,GAAQ5J,EAAApB,EAAA,KAASoB,EAAA05C,WAAkB3xC,KAAA,WAAkB,MAAA9H,MAAW,IAAqB6I,GAAAwd,GAAA,SAAA1c,GAAiB,GAAAtE,GAAAE,KAAAxF,EAAA,IAAkB,OAAA2tB,IAAAnoB,UAAA8nB,IAAAvlB,KAAA,SAAAzC,GAA4C,MAAJtF,GAAAsF,MAAI,KAAAsE,GAAAyb,EAAAzb,MAAsCuvB,GAAA,GAAAT,IAAA9uB,MAAe7B,KAAA,SAAA6B,GAAmB,MAAAtE,KAAAghB,GAAAtmB,EAAA4J,KAAmB7B,KAAA,SAAA6B,GAAmB,GAAAtE,EAAAi6B,OAAA31B,EAAA,MAAAtE,GAAAo0C,WAAgC3xC,KAAA,gBACxNe,GAAAq4C,OAAA,WAAoB,MAAA37C,MAAAokB,KACrT9gB,GAAA8gB,EAAA,WAAe,GAAAhgB,IAAO8sC,IAAAlxC,KAAAkxC,IAAAC,YAAAnxC,KAAAmxC,YAAAC,SAAApxC,KAAAoxC,SAAArX,MAAA/5B,KAAA+5B,MAAA0Y,cAAAzyC,KAAAyyC,cAAA5Z,YAAA74B,KAAA64B,YAAA6Z,YAAA1yC,KAAA0yC,YAAAG,gBAAAtB,OAAAvxC,KAAAupB,EAAAioB,QAAAxxC,KAAA3F,EAAAo3C,WAAAzxC,KAAA+hB,EAAA6yB,gBAAA50C,KAAAwhB,EAAA4C,IAAAywB,gBAAA70C,KAAAs0C,GAAA,KAAyY,OAApGt0C,MAAAyB,UAAAse,EAAA3b,EAAApE,KAAAyB,SAAA2iB,KAAuCxhB,GAAA5C,KAAA6yC,aAAA,SAAA/yC,GAAgCsE,EAAAyuC,aAAA74C,KAAAm4B,GAAAryB,MAA6BsE,EAE/Q,IAAAmwC,KAAQ75C,KAAA,eAAA0yB,EAAA,UAAgS6nB,IAAA/6C,UAAAoJ,EAAA,WAA0B,GAAAc,GAAApE,KAAAF,EAAAq1C,GAAA,QAAyBI,IAAAv1C,KAAA,WAAmB,MAAA8hB,KAAAvf,KAAA,WAA2B,MAAA6B,GAAA5J,GAAA,SAAA4J,EAAA5J,EAAA4yB,EAAAhpB,EAAAtE,EAAA9E,IAAA8E,EAAAsE,KAAA,OAA+C7B,KAAA,SAAA/H,GAAmB,GAAAA,EAAA,MAAA46C,IAAAhxC,EAAA,SAAA7B,KAAA,WAA0C6B,EAAA5J,EAAAsF,QACxR,IAAAu1C,KAAQ36C,KAAA,cAAA0yB,EAAA,UACrX6nB,IAAA/6C,UAAA+mB,GAAA,SAAA7c,GAA4B,GAAAtE,GAAA,KAAAtF,EAAAwF,IAAwB,OAAN8qC,IAAA1mC,GAAMmxC,GAAAv1C,KAAA,WAA0B,MAAAoE,IAAA5J,IAAA4yB,EAAA5yB,EAAAsF,EAAA9E,IAAAR,MAAA4J,GAAA7B,KAAA,SAAA9H,GAAsD,MAAJqF,GAAArF,EAAI26C,GAAA56C,EAAA4J,KAAe7B,KAAA,WAA4B,GAAV/H,IAAA26C,GAAA/wC,GAAUtE,EAAA,MAAAtF,GAAAsF,EAAAwoB,IAAA9tB,IAAAsF,EAAAtF,EAAA4J,KAA+B0d,OAEgJxhB,EAAAq1C,GAAA7tB,IAAmExnB,EAAA61C,GAAA/xB,IAAgE9jB,EAAA81C,GAAAhyB,IAAQ9gB,GAAAqyC,GAAAz7C,UACzeoJ,GAAA2d,GAAA,SAAA7c,GAAgC,MAAfA,GAAApE,KAAAwhB,EAAAP,GAAA7c,GAAegkB,GAAApoB,KAAAoE,IAAkBd,GAAAqxB,GAAA,SAAAvwB,GAAiBpE,KAAA+xC,IAAA3tC,GAAApE,KAAA3G,IAAA2G,KAAA+xC,EAAA3tC,EAAA27B,GAAA//B,KAAAF,EAAAE,KAAA+xC,GAAA/xC,KAAAgvB,cAAA,GAAAmnB,IAAAn2C,KAAAq9B,SAAwF/5B,GAAA+5B,GAAA,WAAgB,MAAAr9B,MAAA+xC,GAAezuC,GAAAklB,GAAA,WAAgB,GAAApkB,GAAAa,GAAAuS,SAAkBxX,MAAA20B,GAAAvwB,IAAAggD,WAAAhgD,EAAAggD,UAAA,IAAAhgD,EAAAigD,UAAAjgD,EAAAkgD,cAAA,YAA+EhhD,GAAAyjB,GAAA,SAAA3iB,GAAiBpE,KAAAmnB,EAAAntB,KAAAoK,GAAe47B,GAAAhgC,KAAAF,EAAAnH,GAAAiP,YAAAooB,GAAAr3B,GAAAiP,YAAA5H,KAAAmnB,GAAA,MAAqEnnB,KAAAgvB,cAAA,GAAAonB,IAAAp2C,KAAAmnB,KAAoC7jB,GAAAyb,GAAA,WAAgB,MAAAD,GAAA9e,KAAAmnB,IACjU7jB,GAAAq4C,OAAA,WAAoB,OAAOpK,OAAAtO,GAAAjjC,MAAAgG,QAAAurC,OAAAE,WAAAxO,GAAAjjC,MAAAgG,QAAAyrC,WAAAD,QAAAvO,GAAAjjC,MAAAtF,KAAAi8C,YAAA9E,GAAA7xC,OAAA6xC,GAAA7xC,MAAAokB,MACsG9gB,GAAAue,GAAA,SAAAzd,EAAAtE,GAAmB,OAAAsE,GAAU,8CAAiD,4BAAApE,MAAAsD,GAAAxD,KAAAE,KAAA8C,CAAiD,oBACnYQ,GAAA6Z,GAAA,SAAA/Y,EAAAtE,EAAAtF,EAAAC,GAAuB,kBAAA2J,GAAApE,KAAAsD,GAAA7I,IAAAD,GAAAwF,KAAA4C,EAAA5C,KAAA4C,EAAApI,GAAAsF,IAAAtF,GAAAwF,KAAA8C,GAAA9C,KAAA8C,EAAAhD,GAAAE,KAAAxF,IAAAwF,KAAAxF,EAAAovC,SAAA5pC,KAAAxF,EAAA,YAAAwF,MAAA8C,QAAA9C,MAAA4C,IAAkJU,GAAAge,GAAA,SAAAld,EAAAtE,GAAmB,2BAAAsE,GAAA,kBAAAA,GAAApE,KAAAsD,GAAAxD,GAAAE,KAAA8C,EAAA/B,EAAAf,KAAA8jB,GAAA9jB,MAAA,MAC5LsD,GAAAwgB,GAAA,SAAA1f,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAWoE,IAAGgzB,WAAAhzB,EAAAs1B,UAAA55B,GAA0BE,KAAAxF,IAAAwF,KAAAxF,EAAAovC,SAAA5pC,KAAAxF,EAAA,KAAsC,IAAAC,GAAA,KAAA4F,EAAA,KAAAyC,EAAAy/B,GAAA/nC,EAAAsF,EAAAsE,GAAA7B,KAAA,SAAA6B,GAA+D,MAAhB3J,GAAAy+B,GAAA90B,GAAQ/D,EAAAg1B,GAAAjxB,GAAQA,GAAgL,OAArKA,GAAA5J,EAAAq3C,EAAAtvC,KAAA,WAAsB,MAAAO,KAASP,KAAA,SAAA6B,GAAmB,MAAAmyC,IAAA/7C,EAAA4J,KAAe7B,KAAA,WAAkB,MAAA2vB,KAAWyd,KAAAkC,GAAAr3C,GAAAo9B,WAAAn9B,EAAAs5C,mBAAA1zC,EAAA2zC,cAAA,aAAuE5rB,GAAApoB,KAAAoE,IAChVd,GAAA0kB,GAAA,SAAA5jB,GAAiB,IAAAssB,KAAA,MAAA3O,GAAA,GAAAoP,IAAA,+CAAwE,IAAArxB,GAAAE,KAAAxF,EAAA26B,GAAA/wB,EAAA6xB,YAAAx7B,EAAA61B,KAAAjwB,EAAA,OAA4CuwB,MAAAhB,OAAAqT,GAAAjjC,MAAAgG,QAAAyrC,YAAArtC,EAAAkzB,kBAAAj3B,EAAAioC,GAAArF,GAAAjjC,MAAAgG,QAAAyrC,WAAAxO,GAAAjjC,MAAAgG,QAAAurC,OAAAtO,GAAAjjC,MAAAtF,KAAA,iBAAA0J,EAAA,KAAA3J,EAAA9B,GAAAiP,aAAA,MAA0L,IAAA9E,GAAAirB,GAAA1tB,EAAA7F,KAAA8jB,GAAA9jB,KAAAkkB,GAC/K,OAD2MlkB,GAAA67C,GAAAr2C,MAAAuC,KAAA,SAAAzC,GAA4B,MAAAsvC,IAAAtvC,EAAAgD,EAAA,iBAAAsB,EAAA3J,IAAA4F,KAAwCkC,KAAA,WAAkB,UAAAU,GAAA,SAAAmB,EAAA5J,GAA2BsF,EAAAqd,GAAA,yBAAAgU,IAAA,2BAC5crxB,EAAAwD,GAAKxD,EAAAgD,EAAAsB,EAAMtE,EAAA8C,EAAApI,EAAMsF,EAAAwD,EAAA7I,EAAMqF,EAAAtF,EAAAsF,EAAAsE,EAAAma,GAAAze,EAAA,iBAAAgD,EAAArI,OAAqC8H,KAAA,SAAA6B,GAA4B,MAATtB,IAAAgrB,GAAAhrB,GAASsB,EAAA8tB,GAAA9tB,GAAA,OAAoBxJ,EAAA,SAAAwJ,GAAyB,KAATtB,IAAAgrB,GAAAhrB,GAASsB,IAAWgkB,GAAApoB,KAAAxF,IAAkB8I,GAAA2kB,GAAA,SAAA7jB,GAAiB,IAAAssB,KAAA,MAAA3O,GAAA,GAAAoP,IAAA,+CAAwE,IAAArxB,GAAAE,IAA8G,OAAAooB,IAAApoB,KAA9Gq2C,GAAAr2C,MAAAuC,KAAA,WAAsC,MAAA+yC,IAAAx1C,EAAA0hB,KAAejf,KAAA,WAAkB,MAAAzC,GAAAsE,EAAA+vB,GAAA,oBAAA/vB,OAClUd,GAAAuZ,GAAA,WAAgB,IAAA6T,KAAA,MAAA3O,GAAA,GAAAoP,IAAA,+CAAwE,IAAA/sB,GAAApE,IAA+F,OAAAooB,IAAApoB,KAA/Fq2C,GAAAr2C,MAAAuC,KAAA,WAAsC,MAAA6B,KAAAyY,OAAgBta,KAAA,SAAA6B,GAAmB,MAAAA,GAAA8tB,GAAA9tB,GAAA,SACuJd,GAAAie,GAAA,WAAgB,GAAAnd,GAAApE,IAA4G,OAAAooB,IAAApoB,KAA5GA,KAAA5G,EAAAmJ,KAAA,WAAoC,MAAAsvC,IAAAztC,IAAoByxC,GAAAzxC,EAAA,MAAWqxC,GAAArxC,EAAAod,GAAAjf,KAAA,WAA+Bi0C,GAAApyC,MAA9D0d,QAG5Wxe,GAAAqpC,GAAA,WAAgB,GAAAvoC,GAAApE,IAAW,OAAA01C,IAAA11C,KAAAwhB,EAAAyhB,GAAAjjC,MAAAgG,QAAAyrC,YAAAlvC,KAAA,SAAAzC,GAA8D,IAAAsE,EAAA/K,EAAA,CAAS,GAAAmB,EAAM,IAAAA,EAAAq3C,GAAAztC,IAAAtE,EAAA,CAActF,EAAAq3C,GAAAztC,GAAA8sC,GAAW,IAAAz2C,GAAAqF,EAAAoxC,GAAY12C,OAAA,KAAAA,GAAA,OAAAA,GAAA,KAAAA,OAAA,KAAAC,GAAA,OAAAA,GAAA,KAAAA,GAAAD,GAAAC,EAAqE,GAAAD,EAAA,MAAA44C,IAAAvB,GAAAztC,GAAAtE,GAAA+xC,GAAAztC,GAAA0jB,KAAgC+pB,GAAAztC,IAAAtE,KAAA+1C,GAAAzxC,EAAAtE,OAAA0yC,GAAA1yC,KAAAid,GAAA3Y,EAAAmlB,GAAAnlB,SAAA0W,UAAA1W,GAAAoyC,GAAApyC,QAAuEd,GAAA+Z,GAAA,SAAAjZ,GAAiB,MAAAoxC,IAAAx1C,KAAAwhB,EAAApd,IAAqBd,GAAA+pB,GAAA,WAAgBmpB,GAAAx2C,MAASA,KAAAqd,GAAAw0B,GAAA7xC,QAAkBsD,GAAAijB,GAAA,WAAgBvmB,KAAAuhB,MAAWje,GAAAopC,GAAA,WAAgB1sC,KAAAuhB,MAChPje,GAAAyiB,GAAA,SAAA3hB,GAAiB,GAAAtE,GAAAE,IAAWA,MAAA0I,qBAAA,WAAqCtE,EAAAhC,KAAAyvC,GAAA/xC,OAAgBwD,GAAAuiB,GAAA,SAAAzhB,GAAiB,GAAAtE,GAAAE,IAAW82C,IAAA92C,KAAA,WAAmBoE,EAAAhC,KAAAyvC,GAAA/xC,OAAgBwD,GAAA+iB,GAAA,SAAAjiB,EAAAtE,EAAAtF,GAAqB,GAAAC,GAAAuF,IAAqG,OAA1FA,MAAAia,GAAAthB,GAAAoJ,QAAAC,UAAAO,KAAA,WAAmDtH,EAAAmJ,KAAAytC,GAAAp3C,IAAAQ,EAAAmJ,EAAAhC,OAAAgC,EAAAhC,KAAAyvC,GAAAp3C,MAAuCuF,KAAA41C,GAAAxxC,EAAAtE,EAAAtF,IAC/c8I,GAAA8iB,GAAA,SAAAhiB,EAAAtE,EAAAtF,GAAqB,GAAAC,GAAAuF,IAAoH,OAAzGA,MAAAia,GAAAthB,GAAAoJ,QAAAC,UAAAO,KAAA,WAAmD9H,EAAA6V,EAAA7V,EAAA+N,SAAevN,EAAAmJ,KAAAytC,GAAAp3C,IAAAQ,EAAAmJ,EAAAhC,OAAAgC,EAAAhC,KAAAyvC,GAAAp3C,MAAuCuF,KAAAivB,GAAA7qB,EAAAtE,EAAAtF,IAAuB8I,GAAAq2C,GAAA,SAAAv1C,GAAiB,GAAAtE,GAAAE,IAA0G,OAAAooB,IAAApoB,KAA1GA,KAAA5G,EAAAmJ,KAAA,WAAoC,MAAAsvC,IAAA/xC,GAAA+xC,GAAA/xC,GAAAgoB,EAAA1jB,GAAA7B,KAAA,SAAA6B,GAAuC,OAAOuyB,YAAAvyB,KAAe,SAA2Bd,GAAAkkB,GAAA,SAAApjB,GAAiB,MAAApE,MAAAojB,GAAAhf,GAAA7B,KAAA,SAAA6B,GAAmC,MAAAA,GAAAurC,QACjWrsC,GAAA8f,GAAA,SAAAhf,GAAiB,GAAAtE,GAAAE,IAAW,OAAAA,MAAA5G,EAAAmJ,KAAA,WAA8B,MAAAm0C,IAAA52C,EAAA+B,GAAA/B,IAAAwjD,IAAsBlrC,MAAAhU,OAAW7B,KAAA,SAAA6B,GAAmB,GAAA5J,GAAA4J,EAAAurC,IAA4C,OAA/BwD,IAAA34C,EAAA,kBAAuBsF,EAAAud,GAAA7iB,GAAQ4J,KAAYd,GAAA+f,GAAA,SAAAjf,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAA,MAAA5G,EAAAmJ,KAAA,WAA8B,MAAAm0C,IAAAl8C,EAAAqH,GAAArH,EAAAsF,EAAAsgD,IAAsBrmB,MAAA31B,EAAAi8C,SAAAvgD,QAAyBwD,GAAAmkB,GAAA,SAAArjB,EAAAtE,GAAmB,MAAAE,MAAAqjB,GAAAjf,EAAAtE,GAAAyC,KAAA,SAAA6B,GAAqC,MAAAA,GAAAurC,QAAiBrsC,GAAAsgB,GAAA,SAAAxf,EAAAtE,GAAmB,MAAAE,MAAAgiB,GAAA5d,EAAAtE,GAAAyC,KAAA,SAAA6B,GAAqC,MAAAA,GAAAurC,QAClZrsC,GAAA0e,GAAA,SAAA5d,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAA,MAAA5G,EAAAmJ,KAAA,WAA8B,MAAAm0C,IAAAl8C,EAAAqH,GAAArH,EAAAsF,EAAAojD,IAAsBnpB,MAAA31B,EAAAi8C,SAAAvgD,QAAyBwD,GAAA8jB,GAAA,SAAAhjB,GAAiB,MAAApE,MAAAkf,GAAA9a,GAAA7B,KAAA,SAAA6B,GAAmC,MAAAA,GAAAurC,QAAiBrsC,GAAA4b,GAAA,SAAA9a,GAAiB,GAAAtE,GAAAE,IAAW,OAAAA,MAAA5G,EAAAmJ,KAAA,WAA8B,MAAAm0C,IAAA52C,EAAAsE,EAAA+Z,GAAAre,SAA0BwD,GAAA6d,GAAA,WAAgB,MAAAnhB,MAAAwjB,KAAAjhB,KAAA,SAAA6B,GAAkC,MAAAA,GAAAurC,QACtTrsC,GAAAkgB,GAAA,WAAgB,GAAApf,GAAApE,IAAW,OAAAA,MAAA5G,EAAAmJ,KAAA,WAA8B,GAAAzC,GAAA+xC,GAAAztC,EAAW,OAAAtE,MAAA4yC,YAA8DxgB,IAAWyd,KAAA7vC,EAAA83B,WAAA,KAAAmc,mBAApD7hB,IAAU+D,WAAA,KAAAH,WAAA,IAA0Cke,cAAA,WAAqE0C,GAAAtyC,IAAAtE,EAAAqhB,MAAA5e,KAAA,SAAAzC,GAAuC,GAAAtF,GAAAsF,EAAA6vC,IAA4C,OAA/BwD,IAAA34C,EAAA,kBAAuB4J,EAAAiZ,GAAA7iB,GAAQsF,OAA4EwD,GAAAkF,OAAA,WAAoB,MAAAqpC,IAAA7xC,OAAA6xC,GAAA7xC,MAAAkxC,KAAA,MACxN5tC,GAAA+hB,GAAA,SAAAjhB,GAAiBpE,KAAA0I,qBAAAtE,GAAsC,IAATpE,KAAA3F,GAASw3C,GAAA7xC,OAAAmyC,GAAAN,GAAA7xC,QAAgCsD,GAAA0jB,GAAA,SAAA5iB,GAAiB,GAAAtE,GAAAE,IAAW4C,IAAA5C,KAAAzF,EAAA,SAAAC,GAAqBA,GAAA4J,GAAAtE,EAAAzF,MAAc,EAAA2F,KAAA3F,IAAA2F,KAAA3F,EAAA,GAAqB,GAAA2F,KAAA3F,GAAAw3C,GAAA7xC,OAAAqyC,GAAAR,GAAA7xC,OAAgCA,KAAA6I,wBAAAzE,IACxXd,GAAAoF,qBAAA,SAAAtE,GAAmC,GAAAtE,GAAAE,IAAWA,MAAAzF,EAAAP,KAAAoK,GAAegkB,GAAApoB,UAAA5G,EAAAmJ,KAAA,WAA8BzC,EAAAzG,GAAAolB,EAAA3e,EAAAvF,EAAA6J,MAAAwyC,GAAA92C,QAA6BwD,GAAAuF,wBAAA,SAAAzE,GAAsCwa,EAAA5e,KAAAzF,EAAA,SAAAuF,GAAsB,MAAAA,IAAAsE,KACpLd,GAAA2F,OAAA,WAAoBjJ,KAAA3G,GAAA,CAAU,QAAA+K,GAAA,EAAYA,EAAApE,KAAAw3B,EAAA19B,OAAgBsK,IAAApE,KAAAw3B,EAAApzB,GAAAwlC,OAAA,cAA8I,OAA1G5pC,MAAAw3B,KAAUx3B,KAAAwhB,IAAApd,EAAApE,KAAAwhB,EAAApd,EAAAtE,EAAA4M,eAAAyoC,GAAA,SAAA/wC,IAAApE,KAAAod,KAA+Dpd,KAAAoE,GAAApE,KAAAoE,EAAA48C,YAAAhhD,MAAiCrH,GAAAoJ,QAAAC,WAAoGsB,GAAAi2C,GAAA,SAAAn1C,GAAiB,MAAAgkB,IAAApoB,KAAAihC,GAAAjhC,KAAAF,EAAAsE,KAA6Bd,GAAAk2C,GAAA,SAAAp1C,GAAiB,MAAAgkB,IAAApoB,KAAAshC,GAAAthC,KAAAF,EAAAsE,KAA6Bd,GAAA0iB,GAAA,SAAA5hB,GAAiB,QAAAo0B,GAAAp0B,IACzZd,GAAA0d,GAAA,SAAA5c,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAooB,IAAApoB,KAAA8hB,IAAAvf,KAAA,WAAkC,GAAA6B,GAAA,GAAA8uB,IAAApzB,EAAgB,KAAAsE,EAAA5J,EAAA,SAAA22B,IAAA,iBAAAuC,GAAA,mDAA4F,OAAAC,IAAAvvB,KAAa7B,KAAA,SAAAzC,GAAmB,MAAAtF,GAAAsF,EAAAkhB,GAAA5c,EAAAtE,KAAmByC,KAAA,gBAAuBe,GAAA2lB,GAAA,SAAA7kB,GAAiB,MAAApE,MAAA6e,GAAAza,GAAA7B,KAAA,SAAA6B,GAAmC,MAAAA,GAAAsM,KAAAqpB,SAAuBz2B,GAAA+1C,GAAA,SAAAj1C,EAAAtE,GAAmB,MAAAsoB,IAAApoB,UAAAF,EAAAu5C,GAAAj1C,EAAAtE,GAAAyC,KAAA,gBAAkDe,GAAAub,GAAA,SAAAza,GAAiB,MAAAgkB,IAAApoB,UAAAF,EAAA+e,GAAAza,GAAA7B,KAAA,SAAA6B,GAA4C,UAAAkuB,IAAAluB,OACncd,GAAAmc,GAAA,SAAArb,GAAiB,MAAAgkB,IAAApoB,UAAAF,EAAA2f,GAAArb,GAAA7B,KAAA,gBAAgDe,GAAAyd,GAAA,SAAA3c,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAooB,IAAApoB,KAAA8hB,IAAAvf,KAAA,WAAkC,gBAAAzC,GAAA+f,EAAA/f,MAAsC6zB,GAAA,GAAAT,IAAApzB,MAAeyC,KAAA,SAAAzC,GAAmB,MAAAtF,GAAAsF,EAAAihB,GAAA3c,EAAAtE,KAAmByC,KAAA,gBAAuBe,GAAAykB,GAAA,SAAA3jB,EAAAtE,GAAmB,MAAAsoB,IAAApoB,KAAAgwC,GAAAhwC,KAAAoE,EAAAtE,EAAAiB,EAAAf,KAAAkf,GAAAlf,SAA6CsD,GAAAskB,GAAA,SAAAxjB,EAAAtE,GAAmB,GAAAtF,GAAAwF,IAAW,OAAAooB,IAAApoB,KAAA8hB,IAAAvf,KAAA,WAAkC,GAAA9H,GAAA89B,GAAAn0B,EAAAtE,GAAAwtB,KAAoB,OAAA9yB,GAAA0kB,GAAAzkB,MAEvX,IAAA28C,IAAA,WAAAE,GAAA,mBAAAL,GAAA,UAAAC,GAAA,MAA0P5zC,IAAAyzC,GAAA78C,UAC1QoJ,GAAA8a,GAAA,WAAgB,GAAAha,GAAApE,IAAW,OAAAA,MAAAxF,EAAAwF,KAAAxF,EAAAwF,KAAAxF,EAAAg9C,GAAAx3C,KAAA8hB,IAAAvf,KAAA,WAAwD,GAAAouB,OAAAd,KAAA,MAAAN,KAA2B,UAAA4B,IAAA,4HAAuI5uB,KAAA,WAAkB,MAAAs1C,IAAAG,KAAA5zC,EAAA/J,OAAsBkI,KAAA,WAAkB,MAAAV,IAAAuC,EAAA+J,EAAAi1C,SAAoB7gD,KAAA,SAAAzC,GAAmBsE,IAAA6yC,IAAAn3C,EAAAujD,mBAA2BzoD,EAAA,SAAAkF,GAAyB,KAATsE,GAAA5J,EAAA,KAASsF,MAC1YwD,GAAAw0C,OAAA,WAAoBL,GAAAz3C,KAAS,IAAAoE,GAAApE,IAAW,OAAAw3C,IAAAx3C,UAAAoe,KAAA7b,KAAA,WAAyC,UAAA6B,EAAAtE,EAAA,CAAe,GAAAA,GAAAsE,EAAA/K,CAAU,KAAA+K,EAAAod,EAAA,CAAS,GAAAhnB,GAAAixB,GAAA3rB,EAAYA,GAAAosB,GAAA,OAAY1xB,EAAAkc,YAAA5W,GAAiBsE,EAAAtE,EAAA63C,WAAAG,OAAAh4C,EAAAsE,KAA6B,MAAAA,GAAAtE,MAAewD,GAAA01C,OAAA,WAAoBvB,GAAAz3C,KAAS,IAAAoE,GAAApE,IAAW,OAAAw3C,IAAAx3C,UAAA83C,SAAAv1C,KAAA,SAAAzC,GAA8C,UAAAmD,GAAA,SAAAzI,GAAyB,GAAAC,GAAAk9C,WAAAkK,YAAA/hD,EAAgC,IAAArF,EAAAD,EAAAC,OAAU,CAAK,GAAA4F,GAAA,SAAAP,GAAkBA,IAAAy3C,GAAAnzC,EAAA/D,GAAA7F,EAAAsF,IAAmBsE,GAAAhL,EAAAY,KAAAqG,GAAY+D,EAAAod,GAAAm2B,WAAA4M,QAAAngD,EAAAtE,UAAoCwD,GAAAuW,MAAA,WAAmB49B,GAAAz3C,MAAS,OAAAA,KAAAF,GAAA63C,WAAA99B,MAAA7Z,KAAAF,IACjXwD,GAAA22C,MAAA,WAAmBxC,GAAAz3C,MAASA,KAAAzF,GAAA,EAAUy9C,KAAAl4C,GAAS,QAAAsE,GAAA,EAAYA,EAAApE,KAAAsD,EAAAxJ,OAAgBsK,IAAApE,KAAAsD,EAAAc,GAAAwlC,OAAA,iDAAuE,KAAA5pC,KAAAwhB,EAAA,CAAYpd,EAAAqnB,GAAAzrB,KAAA3G,EAAa,QAAAyG,GAAUA,EAAAsE,EAAAogD,YAAepgD,EAAAqS,YAAA3W,IAAoB,IAAAi4C,IAAAxtB,GAAA,qFAEmI0tB,GAAA,IACqC33C,GAAA43C,GAAAnB,GAChR,IAAAqB,IAAA,6DAAA3/B,MAAA,IAG0mBigB,IAAAid,GAAAz7C,WAAgBulB,IAAI/kB,KAAA,kBAAA8f,GAAAu3B,GAAA,UAAqClzB,IAAKnkB,KAAA,kBAAA8f,GAAAu3B,GAAA,UAAqCsH,IAAK3+C,KAAA,uBAAA8f,GAAAu3B,GAAA,QAAAA,GAAA,iBAA2DnuB,IAAKlpB,KAAA,iCAAA8f,GAAAu3B,GAAA,SAAAA,GAAA,cAAmE/vB,IAAKtnB,KAAA,gDAAA8f,GAAAu3B,GAAA,SAAAA,GAAA,cAAkFwH,IAAK7+C,KAAA,yBAAA8f,GAAAu3B,GAAA,WAA6CyH,IAAK9+C,KAAA,6BAAA8f,GAAAu3B,GAAA,WAAiDl1B,IAAKniB,KAAA,oBAAA8f,MAA8BwL,IAAKtrB,KAAA,wBAAA8f,GAAAu3B,GAAA,eAClxC3rB,IAAI1rB,KAAA,qBAAA8f,GAAAkxB,GAAAzxB,KAAAq+B,KAAA,kBAAAA,GAAA,gBAAAA,GAAA,sBAAqGjyB,IAAK3rB,KAAA,mBAAA8f,GAAAkxB,GAAAzxB,KAAAq+B,KAAA,kBAAAA,GAAA,gBAAAA,GAAA,sBAAmGv3B,IAAKrmB,KAAA,yBAAA8f,GAAAu3B,GAAA,SAAArG,GAAAzxB,GAAA,6BAAAs+B,GAAA,wCAAuHv3B,IAAKtmB,KAAA,wBAAA8f,GAAAu3B,GAAA,SAAA93B,GAAA,wBAAoEgH,IAAKvmB,KAAA,iBAAA8f,GAAAu3B,GAAA,iBAA2C7yB,IAAKxkB,KAAA,sCAC3c8f,GAAAq+B,OAAS13B,IAAKzmB,KAAA,oBAAA8f,MAA8BgJ,IAAK9oB,KAAA,mCAAA8f,MAA6C4M,IAAK1sB,KAAA,uBAAA8f,GAAAq+B,OAAqCrxB,IAAK9sB,KAAA,wBAAA8f,GAAAu3B,GAAA,WAA4C3uB,IAAK1oB,KAAA,uCAAA8f,GAAAu3B,GAAA,WAA2DtqB,IAAK/sB,KAAA,6BAAA8f,GAAAu3B,GAAA,SAAAA,GAAA,cAA+DnqB,IAAKltB,KAAA,sBAAA8f,GAAAu3B,GAAA,SAAAA,GAAA,kBAA4D1uB,IAAK3oB,KAAA,4CAAA8f,GAAAu3B,GAAA,SAAAA,GAAA,cAA8EhqB,IAAKrtB,KAAA,wBAAA8f,GAAAu3B,GAAA,eACtdgH,OAAM/wB,IAAKttB,KAAA,kBAAA8f,GAAAs+B,OAAgC7wB,IAAKvtB,KAAA,qBAAA8f,GAAAs+B,OAAmCv3B,IAAK7mB,KAAA,UAAA8f,MAAoBmhC,QAASjhD,KAAA,SAAA8f,GAAAu3B,GAAA,WAA6BvpB,IAAK9tB,KAAA,oBAAA8f,MAA8ByO,IAAKvuB,KAAA,0BAAA8f,GAAAu3B,GAAA,YAAgD,SAAA3tC,EAAAtE,GAAe,OAAAtF,KAAAsF,GAAA,CAAgB,GAAArF,GAAAqF,EAAAtF,GAAAE,IAAgB,IAAAD,IAAAD,EAAA,CAAU,GAAA6F,GAAAP,EAAAtF,GAAA8+C,EAAcr/C,QAAAY,eAAAuJ,EAAA3J,GAA2BO,IAAA,WAAe,MAAAgF,MAAAxF,IAAe8tB,IAAA,SAAAlkB,GAAiB+zC,GAAA19C,GAAA4F,IAAA+D,IAAA,GAAiBpE,KAAAxF,GAAA4J,GAAUrJ,YAAA,OAAmB46C,GAAAz7C,WAAgBisB,IAAIzrB,KAAA,eAAA4+C,GAAA5N,GAAAqG,KAAAwG,KAAA,mBAC7b5C,GAAA8O,YAAA1Z,GAAkB4K,GAAA8O,YAAAC,MAAA,QAA6B/O,GAAA8O,YAAAE,QAAA,UAAiChP,GAAA8O,YAAAd,KAAA,OAChFjrB,GAAA4Y,GAAAp3C,WAAgB+O,QAAUvO,KAAA,SAAA8f,MAAmBsN,GAAIptB,KAAA,aAAA8f,GAAA69B,OAA2B5vC,UAAW/N,KAAA,WAAA8f,GAAA69B,OAAyBv4B,IAAKplB,KAAA,oCAAA8f,GAAAq+B,OAAkD5yB,IAAKvrB,KAAA,qBAAA8f,GAAAq+B,OAAmC3yB,IAAKxrB,KAAA,sBAAA8f,GAAAu3B,GAAA,eAAAgH,OAAqDpyB,IAAKjsB,KAAA,gBAAA8f,GAAAs+B,OAA8BvxB,IAAK7sB,KAAA,mBAAA8f,GAAAs+B,OAAiC/4B,IAAKrlB,KAAA,8CAAA8f,GAAAq+B,OAA4DpyB,IAAK/rB,KAAA,+BAAA8f,GAAAq+B,OAA6CnyB,IAAKhsB,KAAA,gCAAA8f,GAAAu3B,GAAA,eAC1cgH,OAAMnyB,IAAKlsB,KAAA,0BAAA8f,GAAAs+B,OAAwChyB,IAAKpsB,KAAA,6BAAA8f,GAAAs+B,OAA2C5E,QAASx5C,KAAA,SAAA8f,MAAmBsG,IAAKpmB,KAAA,wBAAA8f,GAAAkxB,GAAAzxB,GAAA,6BAAAs+B,GAAA,wCAA2GoD,QAASjhD,KAAA,SAAA8f,GAAAu3B,GAAA,WAA6B1pB,IAAK3tB,KAAA,SAAA8f,GAAAu3B,GAAA,cAAgCtwB,IAAK/mB,KAAA,cAAA8f,GAAAu3B,GAAA,WAAkCrwB,IAAKhnB,KAAA,iBAAA8f,GAAAu3B,GAAA,cAAwCxpB,IAAK7tB,KAAA,oBAAA8f,GAAAq+B,GAAA,WAAyCl3B,IAAKjnB,KAAA,gBAAA8f,GAAAP,GAAA,eACjcye,GAAAz1B,EAAA/I,WAAew6C,IAAIh6C,KAAA,WAAeE,GAAIF,KAAA,SAAa6H,MAAO7H,KAAA,UAAeg+B,GAAAqX,GAAA71C,WAAgB8pD,SAAStpD,KAAA,UAAA8f,GAAAu3B,GAAA,wBAA4CuC,GAAAhkC,GAAA,sBAAAlM,EAAAtE,GAA+B,UAAAs4B,IAAAh0B,EAAAtE,KAAmBiyC,GAAA,SAAAA,GAAA,cAA6BrZ,GAAAhB,GAAAx9B,WAAgB+jB,IAAIvjB,KAAA,WAAA8f,GAAAu3B,GAAA,WAA+B5T,IAAKzjC,KAAA,sBAAA8f,GAAAP,GAAA,6BAA6Dq6B,GAAA5c,GAAA,aAAAC,IAAA+T,GAAAqG,KAAA93B,KAAA,WAA2Cq6B,GAAAhkC,GAAA,qBAAAioB,IAAAwZ,GAAA,SAAAA,GAAA,eAC7XrZ,GAAAb,GAAA39B,WAAgB+jB,IAAIvjB,KAAA,WAAA8f,GAAAu3B,GAAA,WAA+B5T,IAAKzjC,KAAA,sBAAA8f,GAAAP,GAAA,6BAA6Dq6B,GAAAzc,GAAA,aAAAC,IAAA4T,GAAAqG,KAAA93B,KAAA,WAA2Cye,GAAAX,GAAA79B,WAAgB+jB,IAAIvjB,KAAA,WAAA8f,GAAAu3B,GAAA,WAA+B5T,IAAKzjC,KAAA,sBAAA8f,GAAAP,GAAA,6BAA6Dq6B,GAAAvc,GAAA,aAAAC,IAAA0T,GAAAqG,KAAArG,GAAAzxB,KAAAs+B,MAAA,WAAA7M,GAAAqG,KAAAwG,KAAA,oBAAkF7f,GAAAT,GAAA/9B,WAAgBikC,IAAIzjC,KAAA,sBAAA8f,GAAAP,GAAA,6BAA6Dq6B,GAAArc,GAAA,aAAAE,IAAAuT,GAAAqG,KAAA93B,KAAA,SAAA83B,GAAA,eACxbrZ,GAAAlB,GAAAt9B,WAAe+jB,IAAIvjB,KAAA,WAAA8f,GAAAu3B,GAAA,WAA+Bna,YAAal9B,KAAA,aAAA8f,GAAAkxB,GAAAqG,KAAAwG,KAAA,cAAA7M,GAAAqG,KAAAwG,KAAA,oBAA4Epa,IAAKzjC,KAAA,sBAAA8f,GAAAP,GAAA,6BAA6Dq6B,GAAAvb,GAAA,aAAAE,IAAA8Y,GAAA,kBAAAA,GAAA,sBAAkErZ,GAAAK,GAAA7+B,WAAgBolB,IAAI5kB,KAAA,oBAAA8f,GAAAu3B,GAAA,eAAAgH,SAAsDrgB,GAAAvH,GAAAj3B,WAAeyhD,QAAQjhD,KAAA,SAAA8f,GAAAu3B,GAAA,aAAgCrZ,GAAAmB,GAAA3/B,WAAgByhD,QAAQjhD,KAAA,SAAA8f,GAAAu3B,GAAA,aACxarZ,GAAAkB,GAAA1/B,WAAgByhD,QAAQjhD,KAAA,SAAA8f,GAAAu3B,GAAA,aAAgCrZ,GAAAwf,GAAAh+C,WAAgB+/C,OAAOv/C,KAAA,QAAA8f,MAAkBs9B,QAASp9C,KAAA,SAAA8f,MAAmBw+B,QAASt+C,KAAA,SAAA8f,QACtI,WAAY,YAAA7hB,QAAAkP,WAAAlP,GAAAkP,SAAAvB,gBAC6O,KAAAmE,OAAA,8FADrJ,IAAArG,IAAOwgD,KAAAjP,GAAAlrC,MAAA0mB,GAAiBmjB,IAAAlwC,EAAA,oBAAAkM,OAA8BgkC,GAAAlwC,EAAA,uBAAAszB,OAAkC4c,GAAAlwC,EAAA,qBAAAyzB,OAAgCyc,GAAAlwC,EAAA,qBAAA2zB,OAAgCuc,GAAAlwC,EAAA,sBAAA6zB,OAAiCqc,GAAAlwC,EAAA,gBAAAozB,IAAAua,GAAA,gBAAyCuC,GAAAlwC,EAAA,oBAAA20B,IAAA2f,OAAmCpE,GAAAlwC,EAAA,oBAAA8zC,IAAAxM,GAAAqG,KAAAyG,KAAA,sBAAAv+B,GAAA,0BAAA0+B,OAAgGhgD,GAAAkP,SAAAvB,gBAAA,gBAAAlC,EACzc5J,GAAwI,MAArI4J,GAAA,GAAAuxC,IAAAvxC,GAAY5J,GAAGqN,UAAUW,OAAAzH,EAAAqD,EAAAoE,OAAApE,GAAAqE,SAAA1H,EAAAqD,EAAAu1C,GAAAv1C,GAAAsE,qBAAA3H,EAAAqD,EAAAihB,GAAAjhB,GAAAyE,wBAAA9H,EAAAqD,EAAA4iB,GAAA5iB,MAA4GA,GAASA,EAAA,SAAAA,EAAA5J,GAAiB,cAAA4J,EAAA,IAAoB5J,EAAAw+B,OAAS,MAAAv+B,OAAa9B,GAAAkP,SAAAT,iBAAmCy9C,KAAAvT,UAC9Oh4C,SAAA,KAAA+X,IAAA,mBAAAxY,WAAA,mBAAAD,qBFqC4BU,KAAKJ,EAASH,EAAoB,QAI5D,KACO,MAAM0C,GACN,KAAUgP,OACR;;;;;;;AGlVZ,IACQiS,sBAAsB,IACvB,CAED,SAAUvjB,EAAQD,EAASH,GAEjC,YCKAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GACAksD,EAAAlsD,EAAA,GACAmsD,EAAAnsD,EAAA,GACAosD,EAAApsD,EAAA,GACAqsD,EAAArsD,EAAA,IACAssD,EAAAtsD,EAAA,GACAusD,EAAAvsD,EAAA,IACAwsD,EAAA,GAAAD,GAAAE,OAAA,qBAKAtsD,GAAAusD,cAAA,WACA,GAAApyC,GAAA,CACA,mBACA,MAAAA,SAQAna,EAAAwsD,KAAA,SAAAn4C,GACA,GAAAgD,GAAA20C,EAAAvlD,kBAAA4N,GACAm4C,EAAA,GAAAT,GAAAlmD,IACA2mD,GAAAxrC,OAAA3J,EACA,IAAAo1C,GAAAD,EAAAprC,QACA,OAAA0qC,GAAAjpD,OAAA2S,gBAAAi3C,GAOA,IAAAC,GAAA,WAEA,OADAC,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,GAAAnG,UAAAmG,EAGA,QADAqG,GAAA,GACAlU,EAAA,EAAmBA,EAAAysD,EAAA/rD,OAAqBV,IACxCmM,MAAAsJ,QAAAg3C,EAAAzsD,KACAysD,EAAAzsD,IACA,gBAAAysD,GAAAzsD,IACA,gBAAAysD,GAAAzsD,GAAAU,OACAwT,GAAAs4C,EAAApjD,MAAA,KAAAqjD,EAAAzsD,IAEA,gBAAAysD,GAAAzsD,GACAkU,GAAA63C,EAAA9nD,UAAAwoD,EAAAzsD,IAGAkU,GAAAu4C,EAAAzsD,GAEAkU,GAAA,GAEA,OAAAA,GAMApU,GAAA4sD,OAAA,IAMA,IAAAC,IAAA,CAMA7sD,GAAA8sD,cAAA,SAAAC,EAAAC,GACApB,EAAAlpD,QAAAsqD,IAAA,IAAAD,IAAA,IAAAA,EAAA,+CACA,IAAAA,GACAV,EAAAY,SAAAb,EAAAc,SAAAC,QACAntD,EAAA4sD,OAAAP,EAAA57C,IAAAxC,KAAAo+C,GACAW,GACAd,EAAAkB,eAAAh+B,IAAA,uBAEA,kBAAA29B,GACA/sD,EAAA4sD,OAAAG,GAGA/sD,EAAA4sD,OAAA,KACAV,EAAAkB,eAAAC,OAAA,qBAOArtD,EAAAyQ,IAAA,WAEA,OADAk8C,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,GAAAnG,UAAAmG,EAOA,KALA,IAAA8+C,IACAA,GAAA,EACA,OAAA7sD,EAAA4sD,SAAA,IAAAV,EAAAkB,eAAAtrD,IAAA,oBACA9B,EAAA8sD,eAAA,IAEA9sD,EAAA4sD,OAAA,CACA,GAAAx4C,GAAAs4C,EAAApjD,MAAA,KAAAqjD,EACA3sD,GAAA4sD,OAAAx4C,KAOApU,EAAAstD,WAAA,SAAAC,GACA,kBAEA,OADAZ,MACA5+C,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA/N,GAAAyQ,IAAAnH,UAAA,IAAAikD,GAAAxiD,OAAA4hD,MAMA3sD,EAAAuC,MAAA,WAEA,OADAoqD,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA,IAAAqG,GAAA,4BAAAs4C,EAAApjD,UAAA,GAAAqjD,EACAN,GAAA9pD,MAAA6R,IAKApU,EAAAwtD,MAAA,WAEA,OADAb,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA,IAAAqG,GAAA,yBAAAs4C,EAAApjD,UAAA,GAAAqjD,EAEA,MADAN,GAAA9pD,MAAA6R,GACA7C,MAAA6C,IAKApU,EAAAia,KAAA,WAEA,OADA0yC,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA,IAAAqG,GAAA,qBAAAs4C,EAAApjD,UAAA,GAAAqjD,EACAN,GAAApyC,KAAA7F,IAMApU,EAAAytD,mBAAA,WAEA,mBAAA/tD,SACAA,OAAA4nB,UACA5nB,OAAA4nB,SAAAC,WACA,IAAA7nB,OAAA4nB,SAAAC,SAAAlgB,QAAA,WACArH,EAAAia,KAAA,8FAOAja,EAAA0tD,2BAAA,SAAAC,GACA3tD,EAAAia,KAAA0zC,EACA,qEAQA3tD,EAAA4tD,oBAAA,SAAAp2C,GACA,sBAAAA,KACAA,MACAA,GAAAic,OAAAo6B,mBACAr2C,GAAAic,OAAAq6B,oBAKA9tD,EAAA+tD,oBAAA,SAAAt2C,GACA,GAAA00C,EAAAxoD,aAAA,aAAAkY,SAAAya,WACA7e,QAEA,CAGA,GAAAu2C,IAAA,EACAC,EAAA,WACA,IAAApyC,SAAArS,KAEA,WADAkG,YAAAu+C,EAAA1xC,KAAAoD,MAAA,IAGAquC,KACAA,GAAA,EACAv2C,KAGAoE,UAAAe,kBACAf,SAAAe,iBAAA,mBAAAqxC,GAAA,GAEAvuD,OAAAkd,iBAAA,OAAAqxC,GAAA,IAEApyC,SAAAgB,cAEAhB,SAAAgB,YAAA,gCACA,aAAAhB,SAAAya,YACA23B,MAGAvuD,OAAAmd,YAAA,SAAAoxC,MAWAjuD,EAAAkuD,SAAA,aAKAluD,EAAAmuD,SAAA,aAOAnuD,EAAAouD,YAAA,SAAAljD,EAAAtE,GACA,GAAAsE,IAAAtE,EACA,QAEA,IAAAsE,IAAAlL,EAAAkuD,UAAAtnD,IAAA5G,EAAAmuD,SACA,QAEA,IAAAvnD,IAAA5G,EAAAkuD,UAAAhjD,IAAAlL,EAAAmuD,SACA,QAGA,IAAAE,GAAAruD,EAAAsuD,YAAApjD,GAAAqjD,EAAAvuD,EAAAsuD,YAAA1nD,EACA,eAAAynD,EACA,OAAAE,EACAF,EAAAE,GAAA,EAAArjD,EAAAtK,OAAAgG,EAAAhG,OAAAytD,EAAAE,GAGA,EAGA,OAAAA,EACA,EAGArjD,EAAAtE,GAAA,KASA5G,EAAAwuD,cAAA,SAAAtjD,EAAAtE,GACA,MAAAsE,KAAAtE,EACA,EAEAsE,EAAAtE,GACA,EAGA,GAQA5G,EAAAyuD,WAAA,SAAA/mD,EAAAoH,GACA,GAAAA,GAAApH,IAAAoH,GACA,MAAAA,GAAApH,EAGA,MAAA6J,OAAA,yBAAA7J,EAAA,gBAAAukD,EAAA9nD,UAAA2K,KAOA9O,EAAA0uD,kBAAA,SAAA5/C,GACA,mBAAAA,IAAA,OAAAA,EACA,MAAAm9C,GAAA9nD,UAAA2K,EACA,IAAA3B,KACA,QAAApB,KAAA+C,GACA3B,EAAArM,KAAAiL,EAGAoB,GAAA4pB,MAEA,QADArvB,GAAA,IACAxH,EAAA,EAAmBA,EAAAiN,EAAAvM,OAAiBV,IACpC,IAAAA,IACAwH,GAAA,KACAA,GAAAukD,EAAA9nD,UAAAgJ,EAAAjN,IACAwH,GAAA,IACAA,GAAA1H,EAAA0uD,kBAAA5/C,EAAA3B,EAAAjN,IAGA,OADAwH,IAAA,KASA1H,EAAA2uD,kBAAA,SAAAt6C,EAAAu6C,GACA,GAAAr8C,GAAA8B,EAAAzT,MACA,IAAA2R,GAAAq8C,EACA,OAAAv6C,EAGA,QADAw6C,MACAvtD,EAAA,EAAmBA,EAAAiR,EAASjR,GAAAstD,EAC5BttD,EAAAstD,EAAAr8C,EACAs8C,EAAA/tD,KAAAuT,EAAAmb,UAAAluB,EAAAiR,IAGAs8C,EAAA/tD,KAAAuT,EAAAmb,UAAAluB,IAAAstD,GAGA,OAAAC,IAQA7uD,EAAA8uD,KAAA,SAAAhgD,EAAA2I,GACA,GAAApL,MAAAsJ,QAAA7G,GACA,OAAA5O,GAAA,EAAuBA,EAAA4O,EAAAlO,SAAgBV,EACvCuX,EAAAvX,EAAA4O,EAAA5O,QAUA2rD,GAAA5mD,QAAA6J,EAAA,SAAApH,EAAAkS,GAAiD,MAAAnC,GAAAmC,EAAAlS,MASjD1H,EAAA+uD,aAAA,SAAAt/C,EAAAyT,GACA,MAAAA,GAAAzT,EAAAxB,KAAAiV,GAAAzT,GASAzP,EAAAgvD,sBAAA,SAAAtlD,GACAkiD,EAAAlpD,QAAA1C,EAAA4tD,oBAAAlkD,GAAA,sBACA,IACAvI,GAAAgG,EAAAyC,EAAAqlD,EAAA/uD,EAAAgvD,EAAA76C,CAyBA,KAtBA,IAAA3K,GACAvC,EAAA,EACAyC,EAAA,EACAzI,EAAA,EAAAuI,IAAA,UAGAvI,EAAAuI,EAAA,EACAA,EAAA6S,KAAA4yC,IAAAzlD,GACAA,GAAA6S,KAAA6yC,IAAA,UAEAH,EAAA1yC,KAAA8yC,IAAA9yC,KAAAoD,MAAApD,KAAA9L,IAAA/G,GAAA6S,KAAA+yC,KAbA,MAcAnoD,EAAA8nD,EAdA,KAeArlD,EAAA2S,KAAAgzC,MAAA7lD,EAAA6S,KAAA6yC,IAAA,EAhBA,GAgBAH,GAAA1yC,KAAA6yC,IAAA,EAhBA,OAoBAjoD,EAAA,EACAyC,EAAA2S,KAAAgzC,MAAA7lD,EAAA6S,KAAA6yC,IAAA,YAIAF,KACAhvD,EA1BA,GA0BmBA,EAAGA,GAAA,EACtBgvD,EAAApuD,KAAA8I,EAAA,OACAA,EAAA2S,KAAAoD,MAAA/V,EAAA,EAEA,KAAA1J,EA9BA,GA8BmBA,EAAGA,GAAA,EACtBgvD,EAAApuD,KAAAqG,EAAA,OACAA,EAAAoV,KAAAoD,MAAAxY,EAAA,EAEA+nD,GAAApuD,KAAAK,EAAA,KACA+tD,EAAAM,UACAn7C,EAAA66C,EAAAh6C,KAAA,GAEA,IAAAu6C,GAAA,EACA,KAAAvvD,EAAA,EAAeA,EAAA,GAAQA,GAAA,GACvB,GAAAwvD,GAAAzkC,SAAA5W,EAAA0J,OAAA7d,EAAA,MAAA8b,SAAA,GACA,KAAA0zC,EAAA9uD,SACA8uD,EAAA,IAAAA,GACAD,GAAAC,EAEA,MAAAD,GAAAx+B,eAOAjxB,EAAA2vD,+BAAA,WACA,wBAAAjwD,UACAA,OAAA,SACAA,OAAA,kBACA,UAAA6e,KAAA7e,OAAA4nB,SAAA+M,QAMAr0B,EAAA4vD,kBAAA,WAEA,sBAAAC,UAAA,gBAAAA,SAAAC,IAQA9vD,EAAA+vD,mBAAA,SAAAnhD,EAAAohD,GACA,GAAAz2C,GAAA,eACA,aAAA3K,EACA2K,EACA,0FAGA,qBAAA3K,EACA2K,EAAA,6DAEA,eAAA3K,IACA2K,EAAA,6BAEA,IAAAhX,GAAAgP,MAAA3C,EAAA,OAAAohD,EAAA/G,KAAA,KAAA1vC,EAEA,OADAhX,GAAAqM,OAAAu0B,cACA5gC,GAOAvC,EAAAiwD,EAAAjhB,OAAA,iBAMAhvC,EAAAsuD,YAAA,SAAAj6C,GACA,GAAArU,EAAAiwD,EAAA1xC,KAAAlK,GAAA,CACA,GAAA67C,IAAA77C,CACA,IAAA67C,IAAA,YAAAA,GAAA,WACA,MAAAA,GAGA,aAmBAlwD,EAAAmwD,eAAA,SAAA14C,GACA,IACAA,IAEA,MAAAtQ,GAEAuI,WAAA,WAKA,GAAAkP,GAAAzX,EAAAyX,OAAA,EAEA,MADA5e,GAAAia,KAAA,yCAAA2E,GACAzX,GACSoV,KAAAoD,MAAA,MAWT3f,EAAAowD,iBAAA,SAAA3gD,GAEA,OADAk9C,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,EAAA,GAAAnG,UAAAmG,EAEA,mBAAA0B,IACAzP,EAAAmwD,eAAA,WACA1gD,EAAAnG,UAAA,GAAAqjD,MAOA3sD,EAAAqwD,aAAA,WASA,OARA,gBAAA3wD,SACAA,OAAA,WACAA,OAAA,qBACA,IAKAoe,OAAA,gGASA9d,EAAAswD,iBAAA,SAAAruD,EAAAT,EAAA+uD,GACAxvD,OAAAY,eAAAM,EAAAT,GAAyCM,IAAAyuD,KAWzCvwD,EAAAwwD,sBAAA,SAAA/4C,EAAAg5C,GACA,GAAAn+C,GAAA5C,WAAA+H,EAAAg5C,EAIA,OAHA,gBAAAn+C,MAAA,OACAA,EAAA,QAEAA,IDmBO,CAED,SAAUrS,EAAQD,EAASH,GAEjC,YEtmBAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GAMA6wD,EAAA,WAMA,QAAAA,GAAAC,EAAAC,GACA,YAAAA,EAAA,CACA9pD,KAAA+pD,EAAAF,EAAApxC,MAAA,IAGA,QADAuxC,GAAA,EACA5wD,EAAA,EAA2BA,EAAA4G,KAAA+pD,EAAAjwD,OAAyBV,IACpD4G,KAAA+pD,EAAA3wD,GAAAU,OAAA,IACAkG,KAAA+pD,EAAAC,GAAAhqD,KAAA+pD,EAAA3wD,GACA4wD,IAGAhqD,MAAA+pD,EAAAjwD,OAAAkwD,EACAhqD,KAAAiqD,EAAA,MAGAjqD,MAAA+pD,EAAAF,EACA7pD,KAAAiqD,EAAAH,EAwLA,MArLA7vD,QAAAY,eAAA+uD,EAAA,SAMA5uD,IAAA,WACA,UAAA4uD,GAAA,KAEA7uD,YAAA,EACAD,cAAA,IAEA8uD,EAAA1vD,UAAAgwD,SAAA,WACA,MAAAlqD,MAAAiqD,GAAAjqD,KAAA+pD,EAAAjwD,OACA,KACAkG,KAAA+pD,EAAA/pD,KAAAiqD,IAKAL,EAAA1vD,UAAAiwD,UAAA,WACA,MAAAnqD,MAAA+pD,EAAAjwD,OAAAkG,KAAAiqD,GAKAL,EAAA1vD,UAAAkwD,SAAA,WACA,GAAAN,GAAA9pD,KAAAiqD,CAIA,OAHAH,GAAA9pD,KAAA+pD,EAAAjwD,QACAgwD,IAEA,GAAAF,GAAA5pD,KAAA+pD,EAAAD,IAKAF,EAAA1vD,UAAAmwD,QAAA,WACA,MAAArqD,MAAAiqD,EAAAjqD,KAAA+pD,EAAAjwD,OACAkG,KAAA+pD,EAAA/pD,KAAA+pD,EAAAjwD,OAAA,GACA,MAEA8vD,EAAA1vD,UAAAgb,SAAA,WAEA,OADAo1C,GAAA,GACAlxD,EAAA4G,KAAAiqD,EAAoC7wD,EAAA4G,KAAA+pD,EAAAjwD,OAAyBV,IAC7D,KAAA4G,KAAA+pD,EAAA3wD,KACAkxD,GAAA,IAAAtqD,KAAA+pD,EAAA3wD,GAEA,OAAAkxD,IAAA,KAEAV,EAAA1vD,UAAAqwD,mBAAA,WAEA,OADAD,GAAA,GACAlxD,EAAA4G,KAAAiqD,EAAoC7wD,EAAA4G,KAAA+pD,EAAAjwD,OAAyBV,IAC7D,KAAA4G,KAAA+pD,EAAA3wD,KACAkxD,GAAA,IAAApxC,mBAAAlZ,KAAA+pD,EAAA3wD,GAAA0U,IAEA,OAAAw8C,IAAA,KAQAV,EAAA1vD,UAAA8Y,MAAA,SAAAw3C,GAEA,WADA,KAAAA,IAA+BA,EAAA,GAC/BxqD,KAAA+pD,EAAA/2C,MAAAhT,KAAAiqD,EAAAO,IAKAZ,EAAA1vD,UAAAuwD,OAAA,WACA,GAAAzqD,KAAAiqD,GAAAjqD,KAAA+pD,EAAAjwD,OACA,WAEA,QADA4wD,MACAtxD,EAAA4G,KAAAiqD,EAAoC7wD,EAAA4G,KAAA+pD,EAAAjwD,OAAA,EAA6BV,IACjEsxD,EAAA1wD,KAAAgG,KAAA+pD,EAAA3wD,GACA,WAAAwwD,GAAAc,EAAA,IAMAd,EAAA1vD,UAAAywD,MAAA,SAAAC,GAEA,OADAF,MACAtxD,EAAA4G,KAAAiqD,EAAoC7wD,EAAA4G,KAAA+pD,EAAAjwD,OAAyBV,IAC7DsxD,EAAA1wD,KAAAgG,KAAA+pD,EAAA3wD,GACA,IAAAwxD,YAAAhB,GACA,OAAAxwD,GAAAwxD,EAAAX,EAAgD7wD,EAAAwxD,EAAAb,EAAAjwD,OAAiCV,IACjFsxD,EAAA1wD,KAAA4wD,EAAAb,EAAA3wD,QAKA,QADAyxD,GAAAD,EAAAnyC,MAAA,KACArf,EAAA,EAA2BA,EAAAyxD,EAAA/wD,OAAwBV,IACnDyxD,EAAAzxD,GAAAU,OAAA,GACA4wD,EAAA1wD,KAAA6wD,EAAAzxD,GAGA,WAAAwwD,GAAAc,EAAA,IAKAd,EAAA1vD,UAAAqE,QAAA,WACA,MAAAyB,MAAAiqD,GAAAjqD,KAAA+pD,EAAAjwD,QAOA8vD,EAAAkB,aAAA,SAAAC,EAAAC,GACA,GAAAC,GAAAF,EAAAb,WAAAgB,EAAAF,EAAAd,UACA,WAAAe,EACA,MAAAD,EAEA,IAAAC,IAAAC,EACA,MAAAtB,GAAAkB,aAAAC,EAAAX,WAAAY,EAAAZ,WAGA,MAAA3/C,OAAA,8BACAugD,EACA,8BAEAD,EACA,MAQAnB,EAAAuB,aAAA,SAAA78B,EAAA88B,GAGA,OAFAC,GAAA/8B,EAAAtb,QACAs4C,EAAAF,EAAAp4C,QACA5Z,EAAA,EAAuBA,EAAAiyD,EAAAvxD,QAAAV,EAAAkyD,EAAAxxD,OAA6CV,IAAA,CACpE,GAAAmyD,GAAAzG,EAAAwC,YAAA+D,EAAAjyD,GAAAkyD,EAAAlyD,GACA,QAAAmyD,EACA,MAAAA,GAEA,MAAAF,GAAAvxD,SAAAwxD,EAAAxxD,OACA,EACAuxD,EAAAvxD,OAAAwxD,EAAAxxD,QAAA,KAOA8vD,EAAA1vD,UAAAsxD,OAAA,SAAAC,GACA,GAAAzrD,KAAAmqD,cAAAsB,EAAAtB,YACA,QAEA,QAAA/wD,GAAA4G,KAAAiqD,EAAAzvC,EAAAixC,EAAAxB,EAAyD7wD,GAAA4G,KAAA+pD,EAAAjwD,OAA0BV,IAAAohB,IACnF,GAAAxa,KAAA+pD,EAAA3wD,KAAAqyD,EAAA1B,EAAAvvC,GACA,QAGA,WAOAovC,EAAA1vD,UAAA4D,SAAA,SAAA2tD,GACA,GAAAryD,GAAA4G,KAAAiqD,EACAzvC,EAAAixC,EAAAxB,CACA,IAAAjqD,KAAAmqD,YAAAsB,EAAAtB,YACA,QAEA,MAAA/wD,EAAA4G,KAAA+pD,EAAAjwD,QAAA,CACA,GAAAkG,KAAA+pD,EAAA3wD,KAAAqyD,EAAA1B,EAAAvvC,GACA,WAEAphB,IACAohB,EAEA,UAEAovC,IAEA1wD,GAAA0wD,MAWA,IAAA8B,GAAA,WAKA,QAAAA,GAAAvJ,EAAAwJ,GACA3rD,KAAA2rD,IAEA3rD,KAAA4rD,EAAAzJ,EAAAnvC,QAEAhT,KAAA6rD,EAAAp2C,KAAAwO,IAAA,EAAAjkB,KAAA4rD,EAAA9xD,OACA,QAAAV,GAAA,EAAuBA,EAAA4G,KAAA4rD,EAAA9xD,OAAwBV,IAC/C4G,KAAA6rD,GAAA9G,EAAArlD,aAAAM,KAAA4rD,EAAAxyD,GAEA4G,MAAA8rD,IAgEA,MA9DA7xD,QAAAY,eAAA6wD,EAAA,kBAEA1wD,IAAA,WACA,WAEAD,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAA6wD,EAAA,yBAEA1wD,IAAA,WACA,YAEAD,YAAA,EACAD,cAAA,IAGA4wD,EAAAxxD,UAAAF,KAAA,SAAA2wD,GAEA3qD,KAAA4rD,EAAA9xD,OAAA,IACAkG,KAAA6rD,GAAA,GAEA7rD,KAAA4rD,EAAA5xD,KAAA2wD,GACA3qD,KAAA6rD,GAAA9G,EAAArlD,aAAAirD,GACA3qD,KAAA8rD,KAEAJ,EAAAxxD,UAAAkJ,IAAA,WACA,GAAA2oD,GAAA/rD,KAAA4rD,EAAAxoD,KACApD,MAAA6rD,GAAA9G,EAAArlD,aAAAqsD,GAEA/rD,KAAA4rD,EAAA9xD,OAAA,IACAkG,KAAA6rD,GAAA,IAGAH,EAAAxxD,UAAA4xD,EAAA,WACA,GAAA9rD,KAAA6rD,EAAAH,EAAAM,sBACA,KAAAvhD,OAAAzK,KAAA2rD,EACA,8BACAD,EAAAM,sBACA,WACAhsD,KAAA6rD,EACA,KAEA,IAAA7rD,KAAA4rD,EAAA9xD,OAAA4xD,EAAAO,eACA,KAAAxhD,OAAAzK,KAAA2rD,EACA,iEACAD,EAAAO,eACA,gCACAjsD,KAAAksD,kBAQAR,EAAAxxD,UAAAgyD,cAAA,WACA,UAAAlsD,KAAA4rD,EAAA9xD,OACA,GAEA,gBAAAkG,KAAA4rD,EAAAx9C,KAAA,UAEAs9C,IAEAxyD,GAAAwyD,kBF8nBM,SAAUvyD,EAAQD,EAASH,GAEjC,YG36BA,SAAAozD,GAAAr5C,GACAs5C,EAAAt5C,EAGA,QAAAu5C,GAAAv5C,GACAw5C,EAAAx5C,EAbA7Y,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAKA0wD,GACAE,EANAnzC,EAAApgB,EAAA,GACAwzD,EAAAxzD,EAAA,IACA+rD,EAAA/rD,EAAA,GACAyzD,EAAAzzD,EAAA,GACA0zD,EAAA1zD,EAAA,GAMAG,GAAAizD,kBAIAjzD,EAAAmzD,YAMA,IAAAK,GAAA,SAAArzC,GAEA,QAAAqzC,KACA,cAAArzC,KAAA7W,MAAAxC,KAAAc,YAAAd,KAuDA,MAzDAmZ,GAAAtZ,UAAA6sD,EAAArzC,GAOAqzC,EAAAxyD,UAAAyyD,QAAA,SAAAvoD,EAAAtE,GACA,GAAA8sD,GAAAxoD,EAAA07B,KAAA+sB,cACAC,EAAAhtD,EAAAggC,KAAA+sB,cACAE,EAAAH,EAAAI,UAAAF,EACA,YAAAC,EACAjI,EAAAwC,YAAAljD,EAAA1J,KAAAoF,EAAApF,MAGAqyD,GAMAL,EAAAxyD,UAAA+yD,YAAA,SAAAntB,GACA,OAAAA,EAAA+sB,cAAAtuD,WAKAmuD,EAAAxyD,UAAAgzD,oBAAA,SAAAC,EAAAC,GACA,OAAAD,EAAAN,cAAArB,OAAA4B,EAAAP,gBAKAH,EAAAxyD,UAAAmzD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAKAb,EAAAxyD,UAAAszD,QAAA,WACA,UAAAhB,GAAAc,UAAAxI,EAAAuC,SAAA,GAAAoF,GAAAgB,SAAA,kBAAAnB,KAOAI,EAAAxyD,UAAAwzD,SAAA,SAAAC,EAAAjzD,GACA,GAAAkzD,GAAAxB,EAAAuB,EACA,WAAAnB,GAAAc,UAAA5yD,EAAA,GAAA+xD,GAAAgB,SAAA,kBAAAG,KAKAlB,EAAAxyD,UAAAgb,SAAA,WACA,mBAEAw3C,GACCH,EAAAsB,MACD30D,GAAAwzD,gBACAxzD,EAAA40D,eAAA,GAAApB,IH28BM,SAAUvzD,EAAQD,EAASH,GAEjC,YI/hCAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAYAqyD,GAZA50C,EAAApgB,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAi1D,EAAAj1D,EAAA,IACAyzD,EAAAzzD,EAAA,GACAk1D,EAAAl1D,EAAA,IACAm1D,EAAAn1D,EAAA,GACAo1D,EAAAp1D,EAAA,IACAq1D,EAAAr1D,EAAA,IACA0zD,EAAA1zD,EAAA,IACAs1D,EAAAt1D,EAAA,IAWAu1D,EAAA,WAQA,QAAAA,GAAAC,EAAAC,EAAAC,GACAzuD,KAAAuuD,IACAvuD,KAAAwuD,IACAxuD,KAAAyuD,IACAzuD,KAAA0uD,EAAA,KAMA1uD,KAAAwuD,GACAP,EAAAU,qBAAA3uD,KAAAwuD,GAEAxuD,KAAAuuD,EAAAhwD,WACAumD,EAAAlpD,QAAAoE,KAAAwuD,GAAAxuD,KAAAwuD,EAAAjwD,UAAA,wCAuXA,MApXAtE,QAAAY,eAAAyzD,EAAA,cACAtzD,IAAA,WACA,MAAA+yD,KACAA,EAAA,GAAAO,GAAA,GAAAN,GAAAY,UAAAP,EAAAQ,iBAAA,KAAAT,EAAAU,SAAAC,WAEAh0D,YAAA,EACAD,cAAA,IAGAwzD,EAAAp0D,UAAA80D,WAAA,WACA,UAGAV,EAAAp0D,UAAA2yD,YAAA,WACA,MAAA7sD,MAAAwuD,GAAAT,GAGAO,EAAAp0D,UAAA+0D,eAAA,SAAAC,GACA,MAAAlvD,MAAAuuD,EAAAhwD,UAEAyB,KAGA,GAAAsuD,GAAAtuD,KAAAuuD,EAAAW,EAAAlvD,KAAAyuD,IAIAH,EAAAp0D,UAAAi1D,kBAAA,SAAAC,GAEA,iBAAAA,EACA,MAAApvD,MAAA6sD,aAGA,IAAAlC,GAAA3qD,KAAAuuD,EAAAvzD,IAAAo0D,EACA,eAAAzE,EAAAoD,EAAApD,GAIA2D,EAAAp0D,UAAAm1D,SAAA,SAAAlN,GACA,GAAAmN,GAAAnN,EAAA+H,UACA,eAAAoF,EACAtvD,KACAA,KAAAmvD,kBAAAG,GAAAD,SAAAlN,EAAAiI,aAGAkE,EAAAp0D,UAAAq1D,SAAA,SAAAH,GACA,cAAApvD,KAAAuuD,EAAAvzD,IAAAo0D,IAGAd,EAAAp0D,UAAAs1D,qBAAA,SAAAJ,EAAAK,GAEA,GADA3K,EAAAlpD,OAAA6zD,EAAA,8CACA,cAAAL,EACA,MAAApvD,MAAAivD,eAAAQ,EAGA,IAAAC,GAAA,GAAAlD,GAAAc,UAAA8B,EAAAK,GACAE,MAAA,GAAAC,MAAA,GAAAC,MAAA,EAUA,OATAJ,GAAAlxD,WACAoxD,EAAA3vD,KAAAuuD,EAAAhI,OAAA6I,GACAQ,EAAA5vD,KAAAyuD,EAAAqB,kBAAAJ,EAAA1vD,KAAAuuD,KAGAoB,EAAA3vD,KAAAuuD,EAAAwB,OAAAX,EAAAK,GACAG,EAAA5vD,KAAAyuD,EAAAuB,aAAAN,EAAA1vD,KAAAuuD,IAEAsB,EAAAF,EAAApxD,UAAAwvD,EAAA/tD,KAAAwuD,EACA,GAAAF,GAAAqB,EAAAE,EAAAD,IAIAtB,EAAAp0D,UAAA+1D,YAAA,SAAA9N,EAAAsN,GACA,GAAAH,GAAAnN,EAAA+H,UACA,WAAAoF,EACA,MAAAG,EAGA3K,GAAAlpD,OAAA,cAAAumD,EAAA+H,YAAA,IAAA/H,EAAAgI,YAAA,6CACA,IAAA+F,GAAAlwD,KAAAmvD,kBAAAG,GAAAW,YAAA9N,EAAAiI,WAAAqF,EACA,OAAAzvD,MAAAwvD,qBAAAF,EAAAY,IAIA5B,EAAAp0D,UAAAqE,QAAA,WACA,MAAAyB,MAAAuuD,EAAAhwD,WAGA+vD,EAAAp0D,UAAAi2D,YAAA,WACA,MAAAnwD,MAAAuuD,EAAA6B,SAGA9B,EAAAp0D,UAAA4Y,IAAA,SAAAu9C,GACA,GAAArwD,KAAAzB,UACA,WACA,IAAAyJ,MACAsoD,EAAA,EAAAC,EAAA,EAAAC,GAAA,CAWA,IAVAxwD,KAAAywD,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAA8vD,GACA1oD,EAAApH,GAAA8vD,EAAA59C,IAAAu9C,GACAC,IACAE,GAAAlC,EAAAnF,EAAA1xC,KAAA7W,GACA2vD,EAAA96C,KAAAwO,IAAAssC,GAAA3vD,GAGA4vD,GAAA,KAGAH,GAAAG,GAAAD,EAAA,EAAAD,EAAA,CAEA,GAAA1kD,KACA,QAAAhL,KAAAoH,GACA4D,EAAAhL,GAAAoH,EAAApH,EACA,OAAAgL,GAMA,MAHAykD,KAAArwD,KAAA6sD,cAAAtuD,YACAyJ,EAAA,aAAAhI,KAAA6sD,cAAA/5C,OAEA9K,GAIAsmD,EAAAp0D,UAAAy2D,KAAA,WACA,UAAA3wD,KAAA0uD,EAAA,CACA,GAAAkC,GAAA,EACA5wD,MAAA6sD,cAAAtuD,YACAqyD,GACA,YACA3C,EAAA4C,iBAAA7wD,KAAA6sD,cAAA/5C,OACA,KACA9S,KAAAywD,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAA8vD,GACA,GAAAI,GAAAJ,EAAAC,MACA,MAAAG,IACAF,GAAA,IAAAhwD,EAAA,IAAAkwD,KAEA9wD,KAAA0uD,EAAA,KAAAkC,EAAA,GAAA7L,EAAAW,KAAAkL,GAEA,MAAA5wD,MAAA0uD,GAGAJ,EAAAp0D,UAAA62D,wBAAA,SAAA3B,EAAAsB,EAAAM,GACA,GAAAC,GAAAjxD,KAAAkxD,EAAAF,EACA,IAAAC,EAAA,CACA,GAAAE,GAAAF,EAAAG,kBAAA,GAAA5E,GAAAc,UAAA8B,EAAAsB,GACA,OAAAS,KAAAz2D,KAAA,KAGA,MAAAsF,MAAAuuD,EAAA6C,kBAAAhC,IAOAd,EAAAp0D,UAAAm3D,kBAAA,SAAAC,GACA,GAAAL,GAAAjxD,KAAAkxD,EAAAI,EACA,IAAAL,EAAA,CACA,GAAAM,GAAAN,EAAAM,QACA,OAAAA,MAAA72D,KAGA,MAAAsF,MAAAuuD,EAAAgD,UAOAjD,EAAAp0D,UAAAs3D,cAAA,SAAAF,GACA,GAAAC,GAAAvxD,KAAAqxD,kBAAAC,EACA,OAAAC,GACA,GAAA/E,GAAAc,UAAAiE,EAAAvxD,KAAAuuD,EAAAvzD,IAAAu2D,IAGA,MAQAjD,EAAAp0D,UAAAu3D,iBAAA,SAAAH,GACA,GAAAL,GAAAjxD,KAAAkxD,EAAAI,EACA,IAAAL,EAAA,CACA,GAAAV,GAAAU,EAAAV,QACA,OAAAA,MAAA71D,KAGA,MAAAsF,MAAAuuD,EAAAgC,UAOAjC,EAAAp0D,UAAAw3D,aAAA,SAAAJ,GACA,GAAAf,GAAAvwD,KAAAyxD,iBAAAH,EACA,OAAAf,GACA,GAAA/D,GAAAc,UAAAiD,EAAAvwD,KAAAuuD,EAAAvzD,IAAAu1D,IAGA,MAMAjC,EAAAp0D,UAAAu2D,aAAA,SAAAO,EAAAW,GACA,GAAAV,GAAAjxD,KAAAkxD,EAAAF,EACA,OAAAC,GACAA,EAAAW,iBAAA,SAAAC,GACA,MAAAF,GAAAE,EAAAn3D,KAAAm3D,EAAA/xB,QAIA9/B,KAAAuuD,EAAAqD,iBAAAD,IAOArD,EAAAp0D,UAAA43D,YAAA,SAAAR,GACA,MAAAtxD,MAAA+xD,gBAAAT,EAAAjE,UAAAiE,IAQAhD,EAAAp0D,UAAA63D,gBAAA,SAAAC,EAAAV,GACA,GAAAL,GAAAjxD,KAAAkxD,EAAAI,EACA,IAAAL,EACA,MAAAA,GAAAc,gBAAAC,EAAA,SAAApxD,GAAkE,MAAAA,IAKlE,KAFA,GAAA+C,GAAA3D,KAAAuuD,EAAAwD,gBAAAC,EAAAt3D,KAAA8xD,EAAAc,UAAA2E,MACA7vD,EAAAuB,EAAAuuD,OACA,MAAA9vD,GAAAkvD,EAAA3E,QAAAvqD,EAAA4vD,GAAA,GACAruD,EAAAwuD,UACA/vD,EAAAuB,EAAAuuD,MAEA,OAAAvuD,IAOA2qD,EAAAp0D,UAAAk4D,mBAAA,SAAAd,GACA,MAAAtxD,MAAAqyD,uBAAAf,EAAA9D,UAAA8D,IAOAhD,EAAAp0D,UAAAm4D,uBAAA,SAAAC,EAAAhB,GACA,GAAAL,GAAAjxD,KAAAkxD,EAAAI,EACA,IAAAL,EACA,MAAAA,GAAAoB,uBAAAC,EAAA,SAAA1xD,GACA,MAAAA,IAMA,KAFA,GAAA+C,GAAA3D,KAAAuuD,EAAA8D,uBAAAC,EAAA53D,KAAA8xD,EAAAc,UAAA2E,MACA7vD,EAAAuB,EAAAuuD,OACA,MAAA9vD,GAAAkvD,EAAA3E,QAAAvqD,EAAAkwD,GAAA,GACA3uD,EAAAwuD,UACA/vD,EAAAuB,EAAAuuD,MAEA,OAAAvuD,IAMA2qD,EAAAp0D,UAAA8yD,UAAA,SAAAvB,GACA,MAAAzrD,MAAAzB,UACAktD,EAAAltD,UACA,GAGA,EAGAktD,EAAAuD,cAAAvD,EAAAltD,UACA,EAEAktD,IAAAvyD,EAAAozD,UACA,EAIA,GAMAgC,EAAAp0D,UAAAq4D,UAAA,SAAAjB,GACA,GAAAA,IAAAnD,EAAAqE,WACAxyD,KAAAyuD,EAAAgE,SAAAnB,GACA,MAAAtxD,KAGA,IAAA4vD,GAAA5vD,KAAAyuD,EAAAiE,SAAApB,EAAAtxD,KAAAuuD,EACA,WAAAD,GAAAtuD,KAAAuuD,EAAAvuD,KAAAwuD,EAAAoB,IAMAtB,EAAAp0D,UAAAy4D,UAAA,SAAA3B,GACA,MAAAA,KAAA7C,EAAAqE,WAAAxyD,KAAAyuD,EAAAgE,SAAAzB,IAKA1C,EAAAp0D,UAAAsxD,OAAA,SAAAC,GACA,GAAAA,IAAAzrD,KACA,QAEA,IAAAyrD,EAAAuD,aACA,QAGA,IAAA4D,GAAAnH,CACA,IAAAzrD,KAAA6sD,cAAArB,OAAAoH,EAAA/F,eAGA,IAAA7sD,KAAAuuD,EAAA6B,UAAAwC,EAAArE,EAAA6B,QAAA,CAKA,IAJA,GAAAyC,GAAA7yD,KAAA8xD,YAAA5D,EAAAJ,gBACAgF,EAAAF,EAAAd,YAAA5D,EAAAJ,gBACAiF,EAAAF,EAAAV,UACAa,EAAAF,EAAAX,UACAY,GAAAC,GAAA,CACA,GAAAD,EAAAr4D,OAAAs4D,EAAAt4D,OACAq4D,EAAAjzB,KAAA0rB,OAAAwH,EAAAlzB,MACA,QAEAizB,GAAAF,EAAAV,UACAa,EAAAF,EAAAX,UAEA,cAAAY,GAAA,OAAAC,EAGA,SAlBA,UA8BA1E,EAAAp0D,UAAAg3D,EAAA,SAAAI,GACA,MAAAA,KAAAnD,EAAAqE,UACA,KAGAxyD,KAAAyuD,EAAAzzD,IAAAs2D,OAOAhD,EAAAnF,EAAA,iBACAmF,IAEAp1D,GAAAo1D,cAMA,IAAA2E,GAAA,SAAA55C,GAEA,QAAA45C,KACA,MAAA55C,GAAA/f,KAAA0G,KAAA,GAAAguD,GAAAY,UAAAP,EAAAQ,iBAAAP,EAAAP,WAAAK,EAAAU,SAAAC,UAAA/uD,KAuBA,MAzBAmZ,GAAAtZ,UAAAozD,EAAA55C,GAIA45C,EAAA/4D,UAAA8yD,UAAA,SAAAvB,GACA,MAAAA,KAAAzrD,KACA,EAGA,GAGAizD,EAAA/4D,UAAAsxD,OAAA,SAAAC,GAEA,MAAAA,KAAAzrD,MAEAizD,EAAA/4D,UAAA2yD,YAAA,WACA,MAAA7sD,OAEAizD,EAAA/4D,UAAAi1D,kBAAA,SAAAC,GACA,MAAAd,GAAAP,YAEAkF,EAAA/4D,UAAAqE,QAAA,WACA,UAEA00D,GACC3E,EACDp1D,GAAA+5D,UAMA/5D,EAAAozD,SAAA,GAAA2G,GACAh5D,OAAAi5D,iBAAA1G,EAAAc,WACAC,KACA7xD,MAAA,GAAA8wD,GAAAc,UAAAvI,EAAAqC,SAAAkH,EAAAP,aAEAoF,KACAz3D,MAAA,GAAA8wD,GAAAc,UAAAvI,EAAAsC,SAAAnuD,EAAAozD,aAMA6B,EAAAiF,SAAAC,aAAA/E,EAAAP,WACAtB,EAAAgB,SAAA6F,0BAAAhF,EACAL,EAAA5B,WAAAnzD,EAAAozD,UACA4B,EAAA7B,WAAAnzD,EAAAozD,WJujCM,SAAUnzD,EAAQD,EAASH,GAEjC,YKrhDAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAQ9C,IAAA4xD,GAAA,WACA,QAAAA,GAAA5yD,EAAAolC,GACA9/B,KAAAtF,OACAsF,KAAA8/B,OAWA,MAHAwtB,GAAA2E,KAAA,SAAAv3D,EAAAolC,GACA,UAAAwtB,GAAA5yD,EAAAolC,IAEAwtB,IAEAp0D,GAAAo0D,aL4iDO,CAED,SAAUn0D,EAAQD,EAASH,GAEjC,YMxkDAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA63D,GAAAx6D,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GACAksD,EAAAlsD,EAAA,EAMAG,GAAAs6D,EAAA,iCAOAt6D,EAAAu6D,EAAA,+BAMAv6D,EAAAw6D,EAAA,SAKAx6D,EAAAy6D,WAAA,SAAA/yD,GACA,sBAAAA,IAAA,IAAAA,EAAA9G,SAAAZ,EAAAs6D,EAAA/7C,KAAA7W,IAMA1H,EAAA06D,kBAAA,SAAAtJ,GACA,sBAAAA,IACA,IAAAA,EAAAxwD,SACAZ,EAAAu6D,EAAAh8C,KAAA6yC,IAMApxD,EAAA26D,sBAAA,SAAAvJ,GAKA,MAJAA,KAEAA,IAAApyC,QAAA,yBAEAhf,EAAA06D,kBAAAtJ,IAMApxD,EAAA46D,gBAAA,SAAAC,GACA,cAAAA,GACA,gBAAAA,IACA,gBAAAA,KAAAhP,EAAA+B,oBAAAiN,IACAA,GAAA,gBAAAA,IAAAjP,EAAAhnD,SAAAi2D,EAAA,QAWA76D,EAAA86D,wBAAA,SAAAh4C,EAAAC,EAAAvL,EAAAyxC,EAAAjmC,GACAA,OAAAjW,KAAAyK,GAEAxX,EAAA+6D,qBAAAjP,EAAA5lD,YAAA4c,EAAAC,EAAAC,GAAAxL,EAAAyxC,IASAjpD,EAAA+6D,qBAAA,SAAA70D,EAAAsR,EAAAwjD,GACA,GAAA/R,GAAA+R,YAAAX,GAAA3J,KAAA,GAAA2J,GAAA7H,eAAAwI,EAAA90D,GAAA80D,CACA,QAAAjuD,KAAAyK,EACA,KAAAjG,OAAArL,EAAA,sBAAA+iD,EAAA+J,gBAEA,sBAAAx7C,GACA,KAAAjG,OAAArL,EACA,uBACA+iD,EAAA+J,gBACA,oBACAx7C,EAEA,IAAAq0C,EAAA+B,oBAAAp2C,GACA,KAAAjG,OAAArL,EAAA,YAAAsR,EAAA,IAAAyxC,EAAA+J,gBAGA,oBAAAx7C,IACAA,EAAA5W,OAAAZ,EAAAw6D,EAAA,GACAzO,EAAAvlD,aAAAgR,GAAAxX,EAAAw6D,EACA,KAAAjpD,OAAArL,EACA,kCACAlG,EAAAw6D,EACA,eACAvR,EAAA+J,gBACA,MACAx7C,EAAAgY,UAAA,MACA,QAIA,IAAAhY,GAAA,gBAAAA,GAAA,CACA,GAAAyjD,IAAA,EAAAC,GAAA,CAqBA,IApBAtP,EAAA3mD,QAAAuS,EAAA,SAAA9P,EAAAlF,GACA,cAAAkF,EACAuzD,GAAA,MAEA,kBAAAvzD,GAAA,QAAAA,IACAwzD,GAAA,GACAl7D,EAAAy6D,WAAA/yD,IACA,KAAA6J,OAAArL,EACA,6BACAwB,EACA,KACAuhD,EAAA+J,gBACA,uFAIA/J,GAAAnoD,KAAA4G,GACA1H,EAAA+6D,qBAAA70D,EAAA1D,EAAAymD,GACAA,EAAA/+C,QAEA+wD,GAAAC,EACA,KAAA3pD,OAAArL,EACA,4BACA+iD,EAAA+J,gBACA,sCAUAhzD,EAAAm7D,2BAAA,SAAAj1D,EAAAk1D,GACA,GAAAl7D,GAAAm7D,CACA,KAAAn7D,EAAA,EAAeA,EAAAk7D,EAAAx6D,OAAuBV,IAAA,CACtCm7D,EAAAD,EAAAl7D,EAEA,QADAiN,GAAAkuD,EAAAvhD,QACAwH,EAAA,EAAuBA,EAAAnU,EAAAvM,OAAiB0gB,IACxC,iBAAAnU,EAAAmU,QAAAnU,EAAAvM,OAAA,OAGA,KAAAZ,EAAAy6D,WAAAttD,EAAAmU,IACA,KAAA/P,OAAArL,EACA,4BACAiH,EAAAmU,GACA,aACA+5C,EACA,uFAQAD,EAAArkC,KAAAsjC,EAAA3J,KAAAuB,aACA,IAAAqJ,GAAA,IACA,KAAAp7D,EAAA,EAAeA,EAAAk7D,EAAAx6D,OAAuBV,IAAA,CAEtC,GADAm7D,EAAAD,EAAAl7D,GACA,OAAAo7D,KAAA12D,SAAAy2D,GACA,KAAA9pD,OAAArL,EACA,mBACAo1D,EACA,qCACAD,EAEAC,GAAAD,IAaAr7D,EAAAu7D,6BAAA,SAAAz4C,EAAAC,EAAAvL,EAAAyxC,EAAAjmC,GACA,IAAAA,OAAAjW,KAAAyK,EAAA,CAEA,GAAAtR,GAAA4lD,EAAA5lD,YAAA4c,EAAAC,EAAAC,EACA,KAAAxL,GAAA,gBAAAA,IAAAnL,MAAAsJ,QAAA6B,GACA,KAAAjG,OAAArL,EAAA,yDAEA,IAAAk1D,KACAxP,GAAA3mD,QAAAuS,EAAA,SAAA9P,EAAAlF,GACA,GAAA64D,GAAA,GAAAhB,GAAA3J,KAAAhpD,EAEA,IADA1H,EAAA+6D,qBAAA70D,EAAA1D,EAAAymD,EAAAwI,MAAA4J,IACA,cAAAA,EAAAlK,YACAnxD,EAAA46D,gBAAAp4D,GACA,KAAA+O,OAAArL,EACA,kCACAm1D,EACA,+FAIAD,GAAAt6D,KAAAu6D,KAEAr7D,EAAAm7D,2BAAAj1D,EAAAk1D,KAEAp7D,EAAAw7D,iBAAA,SAAA14C,EAAAC,EAAA83C,EAAA73C,GACA,IAAAA,OAAAjW,KAAA8tD,EAAA,CAEA,GAAAhP,EAAA+B,oBAAAiN,GACA,KAAAtpD,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,MACA63C,EACA,4FAGA,KAAA76D,EAAA46D,gBAAAC,GACA,KAAAtpD,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,yFAGAhjB,EAAAy7D,kBAAA,SAAA34C,EAAAC,EAAA24C,EAAA14C,GACA,IAAAA,OAAAjW,KAAA2uD,EAEA,OAAAA,GACA,YACA,kBACA,oBACA,oBACA,kBACA,KACA,SACA,KAAAnqD,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,8GAIAhjB,EAAA27D,YAAA,SAAA74C,EAAAC,EAAArb,EAAAsb,GACA,KAAAA,OAAAjW,KAAArF,GAEA1H,EAAAy6D,WAAA/yD,IACA,KAAA6J,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,yBACAtb,EACA,qGAGA1H,EAAA47D,mBAAA,SAAA94C,EAAAC,EAAAquC,EAAApuC,GACA,KAAAA,OAAAjW,KAAAqkD,GAEApxD,EAAA06D,kBAAAtJ,IACA,KAAA7/C,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,0BACAouC,EACA,qFAGApxD,EAAA67D,uBAAA,SAAA/4C,EAAAC,EAAAquC,EAAApuC,GACAouC,IAEAA,IAAApyC,QAAA,yBAEAhf,EAAA47D,mBAAA94C,EAAAC,EAAAquC,EAAApuC,IAEAhjB,EAAA87D,qBAAA,SAAAh5C,EAAAmmC,GACA,aAAAA,EAAA+H,WACA,KAAAz/C,OAAAuR,EAAA,8CAGA9iB,EAAA+7D,YAAA,SAAAj5C,EAAAC,EAAAi5C,GAEA,GAAA5K,GAAA4K,KAAA/S,IACA,oBAAA+S,GAAAC,SAAAz0C,MACA,IAAAw0C,EAAAC,SAAAz0C,KAAA5mB,SACAZ,EAAAy6D,WAAAuB,EAAAC,SAAAhvD,YACA,cAAA+uD,EAAAC,SAAAz0C,KAAAjI,MAAA,SACA,IAAA6xC,EAAAxwD,SAAAZ,EAAA26D,sBAAAvJ,GACA,KAAA7/C,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,GAAA,GACA,yFAIA/iB,EAAAk8D,mBAAA,SAAAp5C,EAAAC,EAAAo5C,EAAAn5C,GACA,KAAAA,OAAAjW,KAAAovD,IAEA,gBAAAA,GACA,KAAA5qD,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,2CAEAhjB,EAAAo8D,gBAAA,SAAAt5C,EAAAC,EAAAs5C,EAAAr5C,GACA,KAAAA,OAAAjW,KAAAsvD,IAEA,iBAAAA,GACA,KAAA9qD,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GAAA,uBAEAhjB,EAAAs8D,eAAA,SAAAx5C,EAAAC,EAAAw5C,EAAAv5C,GACA,KAAAA,OAAAjW,KAAAwvD,IAEA,gBAAAA,GACA,KAAAhrD,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,4BAGAhjB,EAAAw8D,eAAA,SAAA15C,EAAAC,EAAAjU,EAAAkU,GACA,KAAAA,OAAAjW,KAAA+B,GAEAA,GAAA,gBAAAA,IAAA,OAAAA,GACA,KAAAyC,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,4BAGAhjB,EAAAy8D,0BAAA,SAAA35C,EAAAC,EAAAjU,EAAApH,EAAAsb,EAAA05C,GAEA,IADA5tD,GAAA,gBAAAA,KAAA88C,EAAAhnD,SAAAkK,EAAApH,GACA,CACA,GAAAsb,EACA,MAGA,MAAAzR,OAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,yBACAtb,EACA,KAGA,GAAAg1D,EAAA,CACA,GAAA9iD,GAAAgyC,EAAApmD,QAAAsJ,EAAApH,EACA,eAAAg1D,GAAA,gBAAA9iD,IACA,WAAA8iD,GAAA,gBAAA9iD,IACA,YAAA8iD,GAAA,iBAAA9iD,IACA,aAAA8iD,GAAA,kBAAA9iD,IACA,WAAA8iD,GAAA,gBAAA9iD,MACA,KAAAoJ,GACAzR,MAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,mCACAtb,EACA,uBACAg1D,EACA,MAGAnrD,MAAAu6C,EAAA5lD,YAAA4c,EAAAC,EAAAC,GACA,yBACAtb,EACA,gBACAg1D,EACA,QNomDM,SAAUz8D,EAAQD,EAASH,GAEjC,YO78DAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,IAMA,SAAA88D,GACAA,IAAA,yBACAA,IAAA,iBACAA,IAAA,mCACAA,IAAA,sCACC38D,EAAA28D,gBAAA38D,EAAA28D,kBAQD,IAAAC,GAAA,WACA,QAAAA,GAAAC,EAAAC,EAAAC,EAAAC,GACAl2D,KAAA+1D,WACA/1D,KAAAg2D,aACAh2D,KAAAi2D,UACAj2D,KAAAk2D,SACApR,EAAAlpD,QAAAs6D,GAAAF,EAAA,uCAyBA,MAnBAF,GAAAjR,KAAA,GAAAiR,IACA,WACA,GAKAA,EAAAK,OAAA,GAAAL,IAAA,GACA,QACA,GAKAA,EAAAM,qBAAA,SAAAH,GACA,UAAAH,IAAA,GACA,EAAAG,GACA,IAEAH,IAEA58D,GAAA48D,mBPq+DM,SAAU38D,EAAQD,EAASH,GAEjC,YQ5hEAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAU9C,IAAA26D,GAAA,WACA,QAAAA,GAAAhyC,EAAAiyC,EAAAlH,EAAAmH,EAAAC,GACAx2D,KAAAqkB,OACArkB,KAAAs2D,eACAt2D,KAAAovD,YACApvD,KAAAu2D,UACAv2D,KAAAw2D,WAqDA,MA/CAH,GAAAI,YAAA,SAAAC,GACA,UAAAL,KAAAM,MAAAD,IAOAL,EAAAO,iBAAA,SAAAC,EAAAH,GACA,UAAAL,KAAAS,YAAAJ,EAAAG,IAOAR,EAAAU,mBAAA,SAAAF,EAAAH,GACA,UAAAL,KAAAW,cAAAN,EAAAG,IAQAR,EAAAY,mBAAA,SAAAJ,EAAAK,EAAAC,GACA,UAAAd,KAAAe,cAAAF,EAAAL,EAAAM,IAOAd,EAAAgB,iBAAA,SAAAR,EAAAH,GACA,UAAAL,KAAAiB,YAAAZ,EAAAG,IAIAR,EAAAS,YAAA,cAEAT,EAAAW,cAAA,gBAEAX,EAAAe,cAAA,gBAEAf,EAAAiB,YAAA,cAEAjB,EAAAM,MAAA,QACAN,IAEAn9D,GAAAm9D,URmjEQ,CAEF,SAAUl9D,EAAQD,EAASH,GAEjC,YS9nEAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAKA23D,GALAl6C,EAAApgB,EAAA,GACAwzD,EAAAxzD,EAAA,IACAyzD,EAAAzzD,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GAEAq6D,EAAA,SAAA/5C,GAEA,QAAA+5C,KACA,cAAA/5C,KAAA7W,MAAAxC,KAAAc,YAAAd,KA8DA,MAhEAmZ,GAAAtZ,UAAAuzD,EAAA/5C,GAIApf,OAAAY,eAAAu4D,EAAA,gBACAp4D,IAAA,WACA,MAAAq4D,IAEA/qC,IAAA,SAAAxV,GACAugD,EAAAvgD,GAEA/X,YAAA,EACAD,cAAA,IAKAs4D,EAAAl5D,UAAAyyD,QAAA,SAAAvoD,EAAAtE,GACA,MAAAglD,GAAAwC,YAAAljD,EAAA1J,KAAAoF,EAAApF,OAKA04D,EAAAl5D,UAAA+yD,YAAA,SAAAntB,GAGA,KAAAilB,GAAAlpD,eAAA,oDAKAu3D,EAAAl5D,UAAAgzD,oBAAA,SAAAC,EAAAC,GACA,UAKAgG,EAAAl5D,UAAAmzD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAKA6F,EAAAl5D,UAAAszD,QAAA,WAGA,UAAAhB,GAAAc,UAAAxI,EAAAuC,SAAAgM,IAOAD,EAAAl5D,UAAAwzD,SAAA,SAAAC,EAAAjzD,GAGA,MAFAqqD,GAAAnpD,OAAA,gBAAA+xD,GAAA,gDAEA,GAAAnB,GAAAc,UAAAK,EAAA0F,IAKAD,EAAAl5D,UAAAgb,SAAA,WACA,cAEAk+C,GACC7G,EAAAsB,MACD30D,GAAAk6D,WACAl6D,EAAAs5D,UAAA,GAAAY,ITspEM,SAAUj6D,EAAQD,EAASH,GAEjC,YUjtEA,SAAAqzD,GAAAmL,EAAAxD,GAEA,OADA,KAAAA,IAA8BA,EAAA,MAC9B,OAAAwD,EACA,MAAAC,GAAAlJ,aAAAP,UAaA,IAXA,gBAAAwJ,IAAA,aAAAA,KACAxD,EAAAwD,EAAA,cAEAxS,EAAAnpD,OAAA,OAAAm4D,GACA,gBAAAA,IACA,gBAAAA,IACA,gBAAAA,IAAA,OAAAA,GAAA,sCAAAA,IACA,gBAAAwD,IAAA,UAAAA,IAAA,OAAAA,EAAA,YACAA,IAAA,WAGA,gBAAAA,IAAA,OAAAA,GAAA,CACA,GAAAE,GAAAF,CACA,WAAA9K,GAAAgB,SAAAgK,EAAArL,EAAA2H,IAEA,GAAAwD,YAAAhyD,SAAAmyD,EA2BA,CACA,GAAAC,GAAAH,EAAAlJ,aAAAP,WACA6J,EAAAL,CAWA,OAVAzS,GAAA3mD,QAAAy5D,EAAA,SAAAh3D,EAAAi3D,GACA,GAAA/S,EAAAhnD,SAAA85D,EAAAh3D,IACA,MAAAA,EAAA8nB,UAAA,MAEA,GAAAgoC,GAAAtE,EAAAyL,IACAnH,EAAA1B,cAAA0B,EAAAnyD,YACAo5D,IAAAnI,qBAAA5uD,EAAA8vD,OAIAiH,EAAA1I,eAAA7C,EAAA2H,IAvCA,GAAA+D,MACAC,GAAA,EACAC,EAAAT,CAYA,IAXAzS,EAAA3mD,QAAA65D,EAAA,SAAAp3D,EAAA+pD,GACA,mBAAA/pD,IAAA,MAAAA,EAAA8nB,UAAA,MAEA,GAAAgoC,GAAAtE,EAAA4L,EAAAp3D,GACA8vD,GAAAnyD,YACAw5D,EACAA,IAAArH,EAAA7D,cAAAtuD,UACAu5D,EAAA99D,KAAA,GAAAwyD,GAAAc,UAAA1sD,EAAA8vD,QAIA,GAAAoH,EAAAh+D,OACA,MAAA09D,GAAAlJ,aAAAP,UAEA,IAAAkK,GAAAC,EAAAC,cAAAL,EAAAzJ,EAAA+J,qBAAA,SAAA1I,GAAsH,MAAAA,GAAAh1D,MAAyB2zD,EAAAQ,gBAC/I,IAAAkJ,EAAA,CACA,GAAAM,GAAAH,EAAAC,cAAAL,EAAA5J,EAAAJ,eAAAwK,aACA,WAAAd,GAAAlJ,aAAA2J,EAAA7L,EAAA2H,GAAA,GAAA3F,GAAAU,UAA8GyJ,YAAAF,IAAiCE,YAAArK,EAAAJ,kBAG/I,UAAA0J,GAAAlJ,aAAA2J,EAAA7L,EAAA2H,GAAA3F,EAAAU,SAAAC,SA9DA90D,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA87D,GAAAz+D,EAAA,GACA0zD,EAAA1zD,EAAA,IACAyzD,EAAAzzD,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAm/D,EAAAn/D,EAAA,IACAs1D,EAAAt1D,EAAA,IACAq1D,EAAAr1D,EAAA,IACAm1D,EAAAn1D,EAAA,GACA2+D,GAAA,CAuEAx+D,GAAAkzD,eACA8B,EAAA/B,gBAAAC,IV2vEM,SAAUjzD,EAAQD,EAASH,GAEjC,YW/0EAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA88D,GAAAz/D,EAAA,IACA0/D,EAAA1/D,EAAA,IAUA2/D,EAAA,SAAAC,GACA,IAGA,sBAAA//D,aACA,KAAAA,OAAA+/D,GAAA,CAEA,GAAAC,GAAAhgE,OAAA+/D,EAGA,OAFAC,GAAAroC,QAAA,6BACAqoC,EAAApoC,WAAA,qBACA,GAAAgoC,GAAAK,kBAAAD,IAGA,MAAAv4D,IAGA,UAAAo4D,GAAAK,cAGA5/D,GAAA6/D,kBAAAL,EAAA,gBAEAx/D,EAAAotD,eAAAoS,EAAA,mBXu2EM,SAAUv/D,EAAQD,EAASH,GAEjC,YY14EAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,IAC9CxC,EAAA8/D,iBAAA,IACA9/D,EAAA+/D,cAAA,IACA//D,EAAAggE,wBAAA,IACAhgE,EAAAigE,cAAA,IACAjgE,EAAAkgE,UAAA,IACAlgE,EAAAmgE,aAAA,iBACAngE,EAAAogE,mBAAA,KACApgE,EAAAqgE,UAAA,YACArgE,EAAAsgE,aAAA,gBZk6EM,SAAUrgE,EAAQD,EAASH,GAEjC,Ya76EAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA8wD,GAAAzzD,EAAA,GACA+rD,EAAA/rD,EAAA,GAKA80D,EAAA,WACA,QAAAA,MA6BA,MAvBAA,GAAA3zD,UAAAo+D,WAAA,WACA,MAAAt4D,MAAA2sD,QAAAxlD,KAAAnH,OAUA6tD,EAAA3zD,UAAAgzD,oBAAA,SAAAC,EAAAC,GACA,GAAAqM,GAAA,GAAAjN,GAAAc,UAAAxI,EAAAsC,SAAA+F,GACAuM,EAAA,GAAAlN,GAAAc,UAAAxI,EAAAsC,SAAAgG,EACA,YAAAptD,KAAA2sD,QAAA8M,EAAAC,IAMA7L,EAAA3zD,UAAAmzD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAEAM,IAEA30D,GAAA20D,Sbq8EM,SAAU10D,EAAQD,EAASH,GAEjC,Yc9+EAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAGA43D,GAHAxO,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAk1D,EAAAl1D,EAAA,IAOA00D,EAAA,WAOA,QAAAA,GAAAkM,EAAAnL,OACA,KAAAA,IAAuCA,EAAAf,EAAA6F,0BAAAvF,YACvC/tD,KAAA25D,IACA35D,KAAAwuD,IACAxuD,KAAA0uD,EAAA,KACA5J,EAAAlpD,WAAAqK,KAAAjG,KAAA25D,GAAA,OAAA35D,KAAA25D,EAAA,4DACA1L,EAAAU,qBAAA3uD,KAAAwuD,GA+NA,MA7NAv0D,QAAAY,eAAA4yD,EAAA,6BACAzyD,IAAA,WACA,MAAAs4D,IAEAhrC,IAAA,SAAAxV,GACAwgD,EAAAxgD,GAEA/X,YAAA,EACAD,cAAA,IAGA2yD,EAAAvzD,UAAA80D,WAAA,WACA,UAGAvB,EAAAvzD,UAAA2yD,YAAA,WACA,MAAA7sD,MAAAwuD,GAGAf,EAAAvzD,UAAA+0D,eAAA,SAAAC,GACA,UAAAzB,GAAAztD,KAAA25D,EAAAzK,IAGAzB,EAAAvzD,UAAAi1D,kBAAA,SAAAC,GAEA,oBAAAA,EACApvD,KAAAwuD,EAGAf,EAAA6F,0BAAAvF,YAIAN,EAAAvzD,UAAAm1D,SAAA,SAAAlN,GACA,MAAAA,GAAA5jD,UACAyB,KAEA,cAAAmiD,EAAA+H,WACAlqD,KAAAwuD,EAGAf,EAAA6F,0BAAAvF,YAMAN,EAAAvzD,UAAAq1D,SAAA,WACA,UAGA9B,EAAAvzD,UAAA62D,wBAAA,SAAA3B,EAAAsB,GACA,aAGAjD,EAAAvzD,UAAAs1D,qBAAA,SAAAJ,EAAAK,GACA,oBAAAL,EACApvD,KAAAivD,eAAAQ,GAEAA,EAAAlxD,WAAA,cAAA6wD,EACApvD,KAGAytD,EAAA6F,0BAAAvF,WAAAyB,qBAAAJ,EAAAK,GAAAR,eAAAjvD,KAAAwuD,IAIAf,EAAAvzD,UAAA+1D,YAAA,SAAA9N,EAAAsN,GACA,GAAAH,GAAAnN,EAAA+H,UACA,eAAAoF,EACAG,EAEAA,EAAAlxD,WAAA,cAAA+wD,EACAtvD,MAGA8kD,EAAAlpD,OAAA,cAAA0zD,GAAA,IAAAnN,EAAAgI,YAAA,8CACAnqD,KAAAwvD,qBAAAF,EAAA7B,EAAA6F,0BAAAvF,WAAAkC,YAAA9N,EAAAiI,WAAAqF,MAIAhC,EAAAvzD,UAAAqE,QAAA,WACA,UAGAkvD,EAAAvzD,UAAAi2D,YAAA,WACA,UAGA1C,EAAAvzD,UAAAu2D,aAAA,SAAAO,EAAAW,GACA,UAKAlE,EAAAvzD,UAAA4Y,IAAA,SAAAu9C,GACA,MAAAA,KAAArwD,KAAA6sD,cAAAtuD,WAEAq7D,SAAA55D,KAAA65D,WACAtB,YAAAv4D,KAAA6sD,cAAA/5C,OAGA9S,KAAA65D,YAGApM,EAAAvzD,UAAAy2D,KAAA,WACA,UAAA3wD,KAAA0uD,EAAA,CACA,GAAAoL,GAAA,EACA95D,MAAAwuD,EAAAjwD,YACAu7D,GACA,YACA7L,EAAA4C,iBAAA7wD,KAAAwuD,EAAA17C,OACA,IACA,IAAAuR,SAAArkB,MAAA25D,CACAG,IAAAz1C,EAAA,IAEAy1C,GADA,WAAAz1C,EACA0gC,EAAAmD,sBAAAloD,KAAA25D,GAGA35D,KAAA25D,EAEA35D,KAAA0uD,EAAA3J,EAAAW,KAAAoU,GAEA,MAAA95D,MAAA0uD,GAMAjB,EAAAvzD,UAAA2/D,SAAA,WACA,MAAA75D,MAAA25D,GAKAlM,EAAAvzD,UAAA8yD,UAAA,SAAAvB,GACA,MAAAA,KAAAgC,EAAA6F,0BAAAvF,WACA,EAEAtC,YAAAgC,GAAA6F,2BACA,GAGAxO,EAAAlpD,OAAA6vD,EAAAuD,aAAA,qBACAhvD,KAAA+5D,EAAAtO,KASAgC,EAAAvzD,UAAA6/D,EAAA,SAAAC,GACA,GAAAC,SAAAD,GAAAL,EACAO,QAAAl6D,MAAA25D,EACAQ,EAAA1M,EAAA2M,iBAAA75D,QAAA05D,GACAI,EAAA5M,EAAA2M,iBAAA75D,QAAA25D,EAGA,OAFApV,GAAAlpD,OAAAu+D,GAAA,wBAAAF,GACAnV,EAAAlpD,OAAAy+D,GAAA,wBAAAH,GACAC,IAAAE,EAEA,WAAAH,EAEA,EAIAl6D,KAAA25D,EAAAK,EAAAL,GACA,EAEA35D,KAAA25D,IAAAK,EAAAL,EACA,EAGA,EAKAU,EAAAF,GAMA1M,EAAAvzD,UAAAq4D,UAAA,WACA,MAAAvyD,OAKAytD,EAAAvzD,UAAAy4D,UAAA,WACA,UAKAlF,EAAAvzD,UAAAsxD,OAAA,SAAAC,GAIA,GAAAA,IAAAzrD,KACA,QAEA,IAAAyrD,EAAAuD,aAAA,CACA,GAAAgL,GAAAvO,CACA,OAAAzrD,MAAA25D,IAAAK,EAAAL,GACA35D,KAAAwuD,EAAAhD,OAAAwO,EAAAxL,GAGA,UASAf,EAAA2M,kBAAA,sCACA3M,IAEAv0D,GAAAu0D,YdsgFM,SAAUt0D,EAAQD,EAASH,GAEjC,YehwFAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAI9C,IAAA4+D,GAAA,WASA,QAAAA,GAAAx6B,EAAAy6B,EAAAC,EAAAC,EAAAC,OACA,KAAAA,IAA0CA,EAAA,MAC1C16D,KAAAy6D,IACAz6D,KAAA06D,IAIA16D,KAAA26D,IAEA,KADA,GAAApP,GAAA,GACAzrB,EAAAvhC,WAMA,GALAuhC,IACAyrB,EAAAgP,EAAAC,EAAA16B,EAAAl/B,IAAA25D,GAAA,EAEAE,IACAlP,IAAA,GACAA,EAAA,EAGAzrB,EADA9/B,KAAAy6D,EACA36B,EAAAxR,KAGAwR,EAAAsrB,UAGA,QAAAG,EAAA,CAEAvrD,KAAA26D,EAAA3gE,KAAA8lC,EACA,OAIA9/B,KAAA26D,EAAA3gE,KAAA8lC,GAEAA,EADA9/B,KAAAy6D,EACA36B,EAAAsrB,MAGAtrB,EAAAxR,MA4CA,MAvCAgsC,GAAApgE,UAAAi4D,QAAA,WACA,OAAAnyD,KAAA26D,EAAA7gE,OACA,WACA,IACAF,GADAkmC,EAAA9/B,KAAA26D,EAAAv3D,KAMA,IAHAxJ,EADAoG,KAAA06D,EACA16D,KAAA06D,EAAA56B,EAAAl/B,IAAAk/B,EAAApkC,QAEsBkF,IAAAk/B,EAAAl/B,IAAAlF,MAAAokC,EAAApkC,OACtBsE,KAAAy6D,EAEA,IADA36B,IAAAxR,MACAwR,EAAAvhC,WACAyB,KAAA26D,EAAA3gE,KAAA8lC,GACAA,IAAAsrB,UAKA,KADAtrB,IAAAsrB,OACAtrB,EAAAvhC,WACAyB,KAAA26D,EAAA3gE,KAAA8lC,GACAA,IAAAxR,IAGA,OAAA10B,IAEA0gE,EAAApgE,UAAA0gE,QAAA,WACA,MAAA56D,MAAA26D,EAAA7gE,OAAA,GAEAwgE,EAAApgE,UAAAg4D,KAAA,WACA,OAAAlyD,KAAA26D,EAAA7gE,OACA,WACA,IAAAgmC,GAAA9/B,KAAA26D,EAAA36D,KAAA26D,EAAA7gE,OAAA,EACA,OAAAkG,MAAA06D,EACA16D,KAAA06D,EAAA56B,EAAAl/B,IAAAk/B,EAAApkC,QAGoBkF,IAAAk/B,EAAAl/B,IAAAlF,MAAAokC,EAAApkC,QAGpB4+D,IAEAphE,GAAAohE,mBAIA,IAAAO,GAAA,WASA,QAAAA,GAAAj6D,EAAAlF,EAAAo/D,EAAAxsC,EAAA88B,GACAprD,KAAAY,MACAZ,KAAAtE,QACAsE,KAAA86D,MAAA,MAAAA,IAAAD,EAAAE,IACA/6D,KAAAsuB,KACA,MAAAA,IAAAsgC,EAAAb,WACA/tD,KAAAorD,MACA,MAAAA,IAAAwD,EAAAb,WA+PA,MAnPA8M,GAAA3gE,UAAA8gE,KAAA,SAAAp6D,EAAAlF,EAAAo/D,EAAAxsC,EAAA88B,GACA,UAAAyP,GAAA,MAAAj6D,IAAAZ,KAAAY,IAAA,MAAAlF,IAAAsE,KAAAtE,MAAA,MAAAo/D,IAAA96D,KAAA86D,MAAA,MAAAxsC,IAAAtuB,KAAAsuB,KAAA,MAAA88B,IAAAprD,KAAAorD,QAKAyP,EAAA3gE,UAAAk2D,MAAA,WACA,MAAApwD,MAAAsuB,KAAA8hC,QAAA,EAAApwD,KAAAorD,MAAAgF,SAKAyK,EAAA3gE,UAAAqE,QAAA,WACA,UAWAs8D,EAAA3gE,UAAA03D,iBAAA,SAAAD,GACA,MAAA3xD,MAAAsuB,KAAAsjC,iBAAAD,IACAA,EAAA3xD,KAAAY,IAAAZ,KAAAtE,QACAsE,KAAAorD,MAAAwG,iBAAAD,IAUAkJ,EAAA3gE,UAAA+gE,iBAAA,SAAAtJ,GACA,MAAA3xD,MAAAorD,MAAA6P,iBAAAtJ,IACAA,EAAA3xD,KAAAY,IAAAZ,KAAAtE,QACAsE,KAAAsuB,KAAA2sC,iBAAAtJ,IAMAkJ,EAAA3gE,UAAAghE,EAAA,WACA,MAAAl7D,MAAAsuB,KAAA/vB,UACAyB,KAGAA,KAAAsuB,KAAA4sC,KAMAL,EAAA3gE,UAAAq3D,OAAA,WACA,MAAAvxD,MAAAk7D,IAAAt6D,KAKAi6D,EAAA3gE,UAAAq2D,OAAA,WACA,MAAAvwD,MAAAorD,MAAA7sD,UACAyB,KAAAY,IAGAZ,KAAAorD,MAAAmF,UAUAsK,EAAA3gE,UAAA61D,OAAA,SAAAnvD,EAAAlF,EAAA8+D,GACA,GAAAjP,GAAAtwD,CAYA,OAXAA,GAAA+E,KACAurD,EAAAiP,EAAA55D,EAAA3F,EAAA2F,KAEA3F,EADAswD,EAAA,EACAtwD,EAAA+/D,KAAA,eAAA//D,EAAAqzB,KAAAyhC,OAAAnvD,EAAAlF,EAAA8+D,GAAA,MAEA,IAAAjP,EACAtwD,EAAA+/D,KAAA,KAAAt/D,EAAA,gBAGAT,EAAA+/D,KAAA,oBAAA//D,EAAAmwD,MAAA2E,OAAAnvD,EAAAlF,EAAA8+D,IAEAv/D,EAAAkgE,KAMAN,EAAA3gE,UAAAkhE,EAAA,WACA,GAAAp7D,KAAAsuB,KAAA/vB,UACA,MAAAqwD,GAAAb,UAEA,IAAA9yD,GAAA+E,IAIA,OAHA/E,GAAAqzB,KAAA+sC,KAAApgE,EAAAqzB,UAAA+sC,MACApgE,IAAAqgE,KACArgE,IAAA+/D,KAAA,eAAA//D,EAAAqzB,KAAA8sC,IAAA,MACAngE,EAAAkgE,KAOAN,EAAA3gE,UAAAqsD,OAAA,SAAA3lD,EAAA45D,GACA,GAAAv/D,GAAAsgE,CAEA,IADAtgE,EAAA+E,KACAw6D,EAAA55D,EAAA3F,EAAA2F,KAAA,EACA3F,EAAAqzB,KAAA/vB,WAAAtD,EAAAqzB,KAAA+sC,KAAApgE,EAAAqzB,UAAA+sC,MACApgE,IAAAqgE,KAEArgE,IAAA+/D,KAAA,eAAA//D,EAAAqzB,KAAAi4B,OAAA3lD,EAAA45D,GAAA,UAEA,CAMA,GALAv/D,EAAAqzB,KAAA+sC,MACApgE,IAAAugE,KACAvgE,EAAAmwD,MAAA7sD,WAAAtD,EAAAmwD,MAAAiQ,KAAApgE,EAAAmwD,MAAA98B,KAAA+sC,MACApgE,IAAAwgE,KAEA,IAAAjB,EAAA55D,EAAA3F,EAAA2F,KAAA,CACA,GAAA3F,EAAAmwD,MAAA7sD,UACA,MAAAqwD,GAAAb,UAGAwN,GAAAtgE,EAAAmwD,MAAA8P,IACAjgE,IAAA+/D,KAAAO,EAAA36D,IAAA26D,EAAA7/D,MAAA,UAAAT,EAAAmwD,MAAAgQ,KAGAngE,IAAA+/D,KAAA,oBAAA//D,EAAAmwD,MAAA7E,OAAA3lD,EAAA45D,IAEA,MAAAv/D,GAAAkgE,KAMAN,EAAA3gE,UAAAmhE,EAAA,WACA,MAAAr7D,MAAA86D,OAMAD,EAAA3gE,UAAAihE,EAAA,WACA,GAAAlgE,GAAA+E,IAOA,OANA/E,GAAAmwD,MAAAiQ,MAAApgE,EAAAqzB,KAAA+sC,MACApgE,IAAAygE,KACAzgE,EAAAqzB,KAAA+sC,KAAApgE,EAAAqzB,UAAA+sC,MACApgE,IAAAugE,KACAvgE,EAAAqzB,KAAA+sC,KAAApgE,EAAAmwD,MAAAiQ,MACApgE,IAAA0gE,KACA1gE,GAMA4/D,EAAA3gE,UAAAohE,EAAA,WACA,GAAArgE,GAAA+E,KAAA27D,GAMA,OALA1gE,GAAAmwD,MAAA98B,KAAA+sC,MACApgE,IAAA+/D,KAAA,oBAAA//D,EAAAmwD,MAAAoQ,KACAvgE,IAAAygE,IACAzgE,IAAA0gE,KAEA1gE,GAMA4/D,EAAA3gE,UAAAuhE,EAAA,WACA,GAAAxgE,GAAA+E,KAAA27D,GAKA,OAJA1gE,GAAAqzB,UAAA+sC,MACApgE,IAAAugE,IACAvgE,IAAA0gE,KAEA1gE,GAMA4/D,EAAA3gE,UAAAwhE,EAAA,WACA,GAAA/mB,GAAA30C,KAAAg7D,KAAA,UAAAH,EAAAE,IAAA,KAAA/6D,KAAAorD,MAAA98B,KACA,OAAAtuB,MAAAorD,MAAA4P,KAAA,UAAAh7D,KAAA86D,MAAAnmB,EAAA,OAMAkmB,EAAA3gE,UAAAshE,EAAA,WACA,GAAAI,GAAA57D,KAAAg7D,KAAA,UAAAH,EAAAE,IAAA/6D,KAAAsuB,KAAA88B,MAAA,KACA,OAAAprD,MAAAsuB,KAAA0sC,KAAA,UAAAh7D,KAAA86D,MAAA,KAAAc,IAMAf,EAAA3gE,UAAAyhE,EAAA,WACA,GAAArtC,GAAAtuB,KAAAsuB,KAAA0sC,KAAA,WAAAh7D,KAAAsuB,KAAAwsC,MAAA,WACA1P,EAAAprD,KAAAorD,MAAA4P,KAAA,WAAAh7D,KAAAorD,MAAA0P,MAAA,UACA,OAAA96D,MAAAg7D,KAAA,WAAAh7D,KAAA86D,MAAAxsC,EAAA88B,IAQAyP,EAAA3gE,UAAA2hE,EAAA,WACA,GAAAC,GAAA97D,KAAA+7D,GACA,OAAAtmD,MAAA6yC,IAAA,EAAAwT,IAAA97D,KAAAowD,QAAA,GAMAyK,EAAA3gE,UAAA6hE,EAAA,WACA,GAAAD,EACA,IAAA97D,KAAAq7D,KAAAr7D,KAAAsuB,KAAA+sC,IACA,KAAA5wD,OAAA,0BAAAzK,KAAAY,IAAA,IAAAZ,KAAAtE,MAAA,IAEA,IAAAsE,KAAAorD,MAAAiQ,IACA,KAAA5wD,OAAA,mBAAAzK,KAAAY,IAAA,IAAAZ,KAAAtE,MAAA,WAGA,KADAogE,EAAA97D,KAAAsuB,KAAAytC,OACA/7D,KAAAorD,MAAA2Q,IACA,KAAAtxD,OAAA,sBAGA,OAAAqxD,IAAA97D,KAAAq7D,IAAA,MAGAR,EAAAE,KAAA,EACAF,EAAAmB,OAAA,EACAnB,IAEA3hE,GAAA2hE,UAIA,IAAAoB,GAAA,WACA,QAAAA,MA2FA,MApFAA,GAAA/hE,UAAA8gE,KAAA,SAAAp6D,EAAAlF,EAAAo/D,EAAAxsC,EAAA88B,GACA,MAAAprD,OAUAi8D,EAAA/hE,UAAA61D,OAAA,SAAAnvD,EAAAlF,EAAA8+D,GACA,UAAAK,GAAAj6D,EAAAlF,EAAA,OASAugE,EAAA/hE,UAAAqsD,OAAA,SAAA3lD,EAAA45D,GACA,MAAAx6D,OAKAi8D,EAAA/hE,UAAAk2D,MAAA,WACA,UAKA6L,EAAA/hE,UAAAqE,QAAA,WACA,UAUA09D,EAAA/hE,UAAA03D,iBAAA,SAAAD,GACA,UAUAsK,EAAA/hE,UAAA+gE,iBAAA,SAAAtJ,GACA,UAKAsK,EAAA/hE,UAAAq3D,OAAA,WACA,aAKA0K,EAAA/hE,UAAAq2D,OAAA,WACA,aAMA0L,EAAA/hE,UAAA6hE,EAAA,WACA,UAMAE,EAAA/hE,UAAAmhE,EAAA,WACA,UAEAY,IAEA/iE,GAAA+iE,eAKA,IAAArN,GAAA,WAMA,QAAAA,GAAAsN,EAAAC,OACA,KAAAA,IAA+BA,EAAAvN,EAAAb,YAC/B/tD,KAAAk8D,IACAl8D,KAAAm8D,IAyJA,MA/IAvN,GAAA10D,UAAA61D,OAAA,SAAAnvD,EAAAlF,GACA,UAAAkzD,GAAA5uD,KAAAk8D,EAAAl8D,KAAAm8D,EACApM,OAAAnvD,EAAAlF,EAAAsE,KAAAk8D,GACAlB,KAAA,UAAAH,EAAAmB,MAAA,aAQApN,EAAA10D,UAAAqsD,OAAA,SAAA3lD,GACA,UAAAguD,GAAA5uD,KAAAk8D,EAAAl8D,KAAAm8D,EACA5V,OAAA3lD,EAAAZ,KAAAk8D,GACAlB,KAAA,UAAAH,EAAAmB,MAAA,aASApN,EAAA10D,UAAAc,IAAA,SAAA4F,GAGA,IAFA,GAAA2qD,GACAzrB,EAAA9/B,KAAAm8D,GACAr8B,EAAAvhC,WAAA,CAEA,QADAgtD,EAAAvrD,KAAAk8D,EAAAt7D,EAAAk/B,EAAAl/B,MAEA,MAAAk/B,GAAApkC,KAEA6vD,GAAA,EACAzrB,IAAAxR,KAEAi9B,EAAA,IACAzrB,IAAAsrB,OAGA,aAOAwD,EAAA10D,UAAAk3D,kBAAA,SAAAxwD,GAEA,IADA,GAAA2qD,GAAAzrB,EAAA9/B,KAAAm8D,EAAAC,EAAA,MACAt8B,EAAAvhC,WAAA,CAEA,QADAgtD,EAAAvrD,KAAAk8D,EAAAt7D,EAAAk/B,EAAAl/B,MACA,CACA,GAAAk/B,EAAAxR,KAAA/vB,UAMA,MAAA69D,GACAA,EAAAx7D,IAGA,IARA,KADAk/B,IAAAxR,MACAwR,EAAAsrB,MAAA7sD,WACAuhC,IAAAsrB,KACA,OAAAtrB,GAAAl/B,IASA2qD,EAAA,EACAzrB,IAAAxR,KAEAi9B,EAAA,IACA6Q,EAAAt8B,EACAA,IAAAsrB,OAGA,KAAA3gD,OAAA,0EAKAmkD,EAAA10D,UAAAqE,QAAA,WACA,MAAAyB,MAAAm8D,EAAA59D,WAKAqwD,EAAA10D,UAAAk2D,MAAA,WACA,MAAApwD,MAAAm8D,EAAA/L,SAKAxB,EAAA10D,UAAAq3D,OAAA,WACA,MAAAvxD,MAAAm8D,EAAA5K,UAKA3C,EAAA10D,UAAAq2D,OAAA,WACA,MAAAvwD,MAAAm8D,EAAA5L,UAWA3B,EAAA10D,UAAA03D,iBAAA,SAAAD,GACA,MAAA3xD,MAAAm8D,EAAAvK,iBAAAD,IAUA/C,EAAA10D,UAAA+gE,iBAAA,SAAAtJ,GACA,MAAA3xD,MAAAm8D,EAAAlB,iBAAAtJ,IAQA/C,EAAA10D,UAAA43D,YAAA,SAAAuK,GACA,UAAA/B,GAAAt6D,KAAAm8D,EAAA,KAAAn8D,KAAAk8D,GAAA,EAAAG,IAEAzN,EAAA10D,UAAA63D,gBAAA,SAAAnxD,EAAAy7D,GACA,UAAA/B,GAAAt6D,KAAAm8D,EAAAv7D,EAAAZ,KAAAk8D,GAAA,EAAAG,IAEAzN,EAAA10D,UAAAm4D,uBAAA,SAAAzxD,EAAAy7D,GACA,UAAA/B,GAAAt6D,KAAAm8D,EAAAv7D,EAAAZ,KAAAk8D,GAAA,EAAAG,IAEAzN,EAAA10D,UAAAk4D,mBAAA,SAAAiK,GACA,UAAA/B,GAAAt6D,KAAAm8D,EAAA,KAAAn8D,KAAAk8D,GAAA,EAAAG,IAMAzN,EAAAb,WAAA,GAAAkO,GACArN,IAEA11D,GAAA01D,afwxFM,SAAUz1D,EAAQD,EAASH,GAEjC,YgBz5GAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA4gE,GAAAvjE,EAAA,IACAwjE,EAAAxjE,EAAA,IACAw6D,EAAAx6D,EAAA,GACAyjE,EAAAzjE,EAAA,IACA0jE,EAAA1jE,EAAA,IACA2jE,EAAA3jE,EAAA,IACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GACA4jE,EAAA5jE,EAAA,KACA6jE,EAAA7jE,EAAA,IACA8jE,EAAA9jE,EAAA,KACA+jE,EAAA/jE,EAAA,IACAgkE,EAAAhkE,EAAA,KACAikE,EAAAjkE,EAAA,IACAkkE,EAAAlkE,EAAA,KACAmkE,EAAAnkE,EAAA,IAKAokE,EAAA,WAMA,QAAAA,GAAAC,EAAAC,EAAAx3D,GACA,GAAAqD,GAAAlJ,IACAA,MAAAo9D,IACAp9D,KAAA6F,MACA7F,KAAAs9D,gBAAA,EACAt9D,KAAAu9D,EAAA,KACAv9D,KAAAw9D,EAAA,GAAAT,GAAAU,WACAz9D,KAAA09D,EAAA,EACA19D,KAAA29D,EAAA,KAEA39D,KAAA49D,EAAA,GAAApB,GAAAqB,mBAKA79D,KAAA89D,EAAA,IAEA,IAAAC,GAAA,GAAApB,GAAAqB,kBAAAn4D,EAEA,IADA7F,KAAAi+D,EAAArB,EAAAsB,aAAAC,cAAAf,GACAC,GAAAtY,EAAAwE,eACAvpD,KAAAo+D,EAAA,GAAAnB,GAAAoB,mBAAAr+D,KAAAo9D,EAAAp9D,KAAAs+D,GAAAn3D,KAAAnH,MAAA+9D,GAEAn1D,WAAA5I,KAAAu+D,GAAAp3D,KAAAnH,MAAA,UAEA,CACA,GAAAw+D,GAAA34D,EAAAG,QAAA,4BAEA,aAAAw4D,GAAA,OAAAA,EAAA,CACA,mBAAAA,GACA,KAAA/zD,OAAA,qEAEA,KACAq6C,EAAAznD,UAAAmhE,GAEA,MAAAn+D,GACA,KAAAoK,OAAA,kCAAApK,IAGAL,KAAA89D,EAAA,GAAAd,GAAAyB,qBAAAz+D,KAAAo9D,EAAAp9D,KAAAs+D,GAAAn3D,KAAAnH,WAAAu+D,GAAAp3D,KAAAnH,WAAA0+D,GAAAv3D,KAAAnH,MAAA+9D,EAAAS,GACAx+D,KAAAo+D,EAAAp+D,KAAA89D,EAEAC,EAAAY,uBAAA,SAAAvmD,GACAlP,EAAAk1D,EAAAQ,iBAAAxmD,KAIApY,KAAA6+D,GAAAjC,EAAAsB,aAAAY,oBAAA1B,EAAA,WAAsG,UAAAP,GAAAkC,cAAA71D,EAAA+0D,EAAA/0D,EAAAk1D,KACtGp+D,KAAAg/D,KAEAh/D,KAAAi/D,GAAA,GAAAvC,GAAAwC,eACAl/D,KAAAm/D,GAAA,GAAA1C,GAAA2C,UACAC,eAAA,SAAAnW,EAAAoW,EAAAC,EAAAC,GACA,GAAAC,MACA3/B,EAAA52B,EAAA+1D,GAAAS,QAAAxW,EAAA/G,KASA,OANAriB,GAAAvhC,YACAkhE,EAAAv2D,EAAAi2D,GAAAQ,qBAAAzW,EAAA/G,KAAAriB,GACAl3B,WAAA,WACA42D,EAAA,OACqB,IAErBC,GAEAG,cAAA,eAEA5/D,KAAA6/D,GAAA,gBACA7/D,KAAA8/D,GAAA,GAAArD,GAAA2C,UACAC,eAAA,SAAAnW,EAAAoW,EAAAC,EAAAC,GAMA,MALAt2D,GAAAk1D,EAAA2B,OAAA7W,EAAAqW,EAAAD,EAAA,SAAA5kC,EAAAhqB,GACA,GAAAsvD,GAAAR,EAAA9kC,EAAAhqB,EACAxH,GAAAs0D,EAAAyC,0BAAA/W,EAAA/G,KAAA6d,SAKAJ,cAAA,SAAA1W,EAAAoW,GACAp2D,EAAAk1D,EAAA8B,SAAAhX,EAAAoW,MAkZA,MA3YAnC,GAAAjjE,UAAAgb,SAAA,WACA,OAAAlV,KAAAo9D,EAAA+C,OAAA,sBAAAngE,KAAAo9D,EAAA18C,MAKAy8C,EAAAjjE,UAAAQ,KAAA,WACA,MAAAsF,MAAAo9D,EAAAj3D,WAKAg3D,EAAAjjE,UAAAkmE,WAAA,WACA,GAAAC,GAAArgE,KAAAi/D,GAAAS,QAAA,GAAAnM,GAAA3J,KAAA,2BACA0W,EAAAD,EAAAvtD,OAAA,CACA,WAAAoE,OAAAE,UAAAkpD,GAMAnD,EAAAjjE,UAAAqmE,qBAAA,WACA,MAAAjE,GAAAkE,oBACAC,UAAAzgE,KAAAogE,gBAYAjD,EAAAjjE,UAAAokE,GAAA,SAAAhU,EAAA55C,EAAAgwD,EAAApB,GAEAt/D,KAAAs9D,iBACA,IAAAnb,GAAA,GAAAoR,GAAA3J,KAAAU,EACA55C,GAAA1Q,KAAA29D,EACA39D,KAAA29D,EAAArT,EAAA55C,GACAA,CACA,IAAAsvD,KACA,IAAAV,EACA,GAAAoB,EAAA,CACA,GAAAC,GAAA3b,EAAAvmD,IAAAiS,EAAA,SAAA5L,GACA,MAAAy3D,GAAAnQ,aAAAtnD,IAEAk7D,GAAAhgE,KAAA8/D,GAAAc,sBAAAze,EAAAwe,EAAArB,OAEA,CACA,GAAAuB,GAAAtE,EAAAnQ,aAAA17C,EACAsvD,GAAAhgE,KAAA8/D,GAAAgB,0BAAA3e,EAAA0e,EAAAvB,OAGA,IAAAoB,EAAA,CACA,GAAAK,GAAA/b,EAAAvmD,IAAAiS,EAAA,SAAA5L,GACA,MAAAy3D,GAAAnQ,aAAAtnD,IAEAk7D,GAAAhgE,KAAA8/D,GAAAkB,iBAAA7e,EAAA4e,OAEA,CACA,GAAAE,GAAA1E,EAAAnQ,aAAA17C,EACAsvD,GAAAhgE,KAAA8/D,GAAAH,qBAAAxd,EAAA8e,GAEA,GAAAC,GAAA/e,CACA6d,GAAAlmE,OAAA,IAGAonE,EAAAlhE,KAAAmhE,GAAAhf,IAEAniD,KAAAw9D,EAAAyC,0BAAAiB,EAAAlB,IAOA7C,EAAAjjE,UAAAknE,GAAA,SAAAz4D,GACA3I,KAAA29D,EAAAh1D,GAMAw0D,EAAAjjE,UAAAqkE,GAAA,SAAA8C,GACArhE,KAAA6/D,GAAA,YAAAwB,IACA,IAAAA,GACArhE,KAAAshE,MAOAnE,EAAAjjE,UAAAwkE,GAAA,SAAA6C,GACA,GAAAr4D,GAAAlJ,IACA+kD,GAAAiD,KAAAuZ,EAAA,SAAA7lE,EAAAkF,GACAsI,EAAA22D,GAAAj/D,EAAAlF,MASAyhE,EAAAjjE,UAAA2lE,GAAA,SAAAvV,EAAA5uD,GACA,GAAAymD,GAAA,GAAAoR,GAAA3J,KAAA,UAAAU,GACA8C,EAAAmP,EAAAnQ,aAAA1wD,EACAsE,MAAAi/D,GAAAuC,eAAArf,EAAAiL,EACA,IAAA4S,GAAAhgE,KAAAm/D,GAAAQ,qBAAAxd,EAAAiL,EACAptD,MAAAw9D,EAAAyC,0BAAA9d,EAAA6d,IAMA7C,EAAAjjE,UAAAunE,GAAA,WACA,MAAAzhE,MAAA09D,KAQAP,EAAAjjE,UAAAwnE,gBAAA,SAAAvf,EAAAwf,EAAA9R,EAAA2P,GACA,GAAAt2D,GAAAlJ,IACAA,MAAA4hE,GAAA,OACAzf,UACAzmD,MAAAimE,EACA5N,SAAAlE,GAIA,IAAAgS,GAAA7hE,KAAAugE,uBACAuB,EAAAvF,EAAAnQ,aAAAuV,EAAA9R,GACAzC,EAAAkP,EAAAyF,6BAAAD,EAAAD,GACAG,EAAAhiE,KAAAyhE,KACAzB,EAAAhgE,KAAA8/D,GAAAmC,mBAAA9f,EAAAiL,EAAA4U,GAAA,EACAhiE,MAAAw9D,EAAA0E,YAAAlC,GACAhgE,KAAAo+D,EAAA7a,IAAApB,KAAA2f,EAAAhvD,KAAA,YAAA4nB,EAAAynC,GACA,GAAAC,GAAA,OAAA1nC,CACA0nC,IACArd,EAAA5xC,KAAA,UAAAgvC,EAAA,YAAAznB,EAEA,IAAA2nC,GAAAn5D,EAAA42D,GAAAwC,aAAAN,GAAAI,EACAl5D,GAAAs0D,EAAAyC,0BAAA9d,EAAAkgB,GACAn5D,EAAAq5D,uBAAA/C,EAAA9kC,EAAAynC,IAEA,IAAAjB,GAAAlhE,KAAAwiE,GAAArgB,EACAniD,MAAAmhE,GAAAD,GAEAlhE,KAAAw9D,EAAAyC,0BAAAiB,OAOA/D,EAAAjjE,UAAAggB,OAAA,SAAAioC,EAAAsgB,EAAAjD,GACA,GAAAt2D,GAAAlJ,IACAA,MAAA4hE,GAAA,UAA6Bzf,UAAAzmD,MAAA+mE,GAE7B,IAAAC,IAAA,EACAb,EAAA7hE,KAAAugE,uBACAQ,IAMA,IALA/b,EAAA7mD,QAAAskE,EAAA,SAAAE,EAAAC,GACAF,GAAA,CACA,IAAAZ,GAAAvF,EAAAnQ,aAAAwW,EACA7B,GAAA4B,GAAArG,EAAAyF,6BAAAD,EAAAD,KAEAa,EAsBA3d,EAAAp7C,IAAA,wDACA3J,KAAAuiE,uBAAA/C,EAAA,UAvBA,CACA,GAAAqD,GAAA7iE,KAAAyhE,KACAzB,EAAAhgE,KAAA8/D,GAAAgD,eAAA3gB,EAAA4e,EAAA8B,EACA7iE,MAAAw9D,EAAA0E,YAAAlC,GACAhgE,KAAAo+D,EAAA2E,MAAA5gB,KAAAsgB,EAAA,SAAA/nC,EAAAynC,GACA,GAAAC,GAAA,OAAA1nC,CACA0nC,IACArd,EAAA5xC,KAAA,aAAAgvC,EAAA,YAAAznB,EAEA,IAAA2nC,GAAAn5D,EAAA42D,GAAAwC,aAAAO,GAAAT,GACAlB,EAAAmB,EAAAvoE,OAAA,EAAAoP,EAAAi4D,GAAAhf,IACAj5C,GAAAs0D,EAAAyC,0BAAAiB,EAAAmB,GACAn5D,EAAAq5D,uBAAA/C,EAAA9kC,EAAAynC,KAEAnd,EAAA7mD,QAAAskE,EAAA,SAAAO,GACA,GAAA9B,GAAAh4D,EAAAs5D,GAAArgB,EAAAwI,MAAAqY,GACA95D,GAAAi4D,GAAAD,KAGAlhE,KAAAw9D,EAAAyC,0BAAA9d,QAWAgb,EAAAjjE,UAAAonE,GAAA,WACA,GAAAp4D,GAAAlJ,IACAA,MAAA4hE,GAAA,qBACA,IAAAC,GAAA7hE,KAAAugE,uBACA0C,EAAA3G,EAAA4G,yBAAAljE,KAAA49D,EAAAiE,GACA7B,IACAiD,GAAAE,YAAA5P,EAAA3J,KAAAwZ,MAAA,SAAAjhB,EAAA8e,GACAjB,IAAA/7D,OAAAiF,EAAA42D,GAAAH,qBAAAxd,EAAA8e,GACA,IAAAC,GAAAh4D,EAAAs5D,GAAArgB,EACAj5C,GAAAi4D,GAAAD,KAEAlhE,KAAA49D,EAAA,GAAApB,GAAAqB,mBACA79D,KAAAw9D,EAAAyC,0BAAA1M,EAAA3J,KAAAwZ,MAAApD,IAMA7C,EAAAjjE,UAAAmpE,mBAAA,SAAAlhB,EAAAqd,GACA,GAAAt2D,GAAAlJ,IACAA,MAAAo+D,EAAAiF,mBAAAlhB,KAAA,SAAAznB,EAAAynC,GACA,OAAAznC,GACAxxB,EAAA00D,EAAA0F,OAAAnhB,GAEAj5C,EAAAq5D,uBAAA/C,EAAA9kC,EAAAynC,MAQAhF,EAAAjjE,UAAAqpE,gBAAA,SAAAphB,EAAAzmD,EAAA8jE,GACA,GAAAt2D,GAAAlJ,KACAotD,EAAAmP,EAAAnQ,aAAA1wD,EACAsE,MAAAo+D,EAAAoF,gBAAArhB,KAAAiL,EAAAt6C,KAAA,YAAA4nB,EAAAynC,GACA,OAAAznC,GACAxxB,EAAA00D,EAAA6F,SAAAthB,EAAAiL,GAEAlkD,EAAAq5D,uBAAA/C,EAAA9kC,EAAAynC,MASAhF,EAAAjjE,UAAAwpE,4BAAA,SAAAvhB,EAAAzmD,EAAAq4D,EAAAyL,GACA,GAAAt2D,GAAAlJ,KACAotD,EAAAmP,EAAAnQ,aAAA1wD,EAAAq4D,EACA/zD,MAAAo+D,EAAAoF,gBAAArhB,KAAAiL,EAAAt6C,KAAA,YAAA4nB,EAAAynC,GACA,OAAAznC,GACAxxB,EAAA00D,EAAA6F,SAAAthB,EAAAiL,GAEAlkD,EAAAq5D,uBAAA/C,EAAA9kC,EAAAynC,MAQAhF,EAAAjjE,UAAAypE,mBAAA,SAAAxhB,EAAAsgB,EAAAjD,GACA,GAAAt2D,GAAAlJ,IACA,IAAAglD,EAAAzmD,QAAAkkE,GAGA,MAFA1d,GAAAp7C,IAAA,2EACA3J,MAAAuiE,uBAAA/C,EAAA,KAGAx/D,MAAAo+D,EAAAwF,kBAAAzhB,KAAAsgB,EAAA,SAAA/nC,EAAAynC,GACA,OAAAznC,GACAsqB,EAAA7mD,QAAAskE,EAAA,SAAArT,EAAAsB,GACA,GAAAjB,GAAA8M,EAAAnQ,aAAAsE,EACAxnD,GAAA00D,EAAA6F,SAAAthB,EAAAwI,MAAAyE,GAAAK,KAGAvmD,EAAAq5D,uBAAA/C,EAAA9kC,EAAAynC,MAOAhF,EAAAjjE,UAAA2pE,yBAAA,SAAA3a,EAAA4a,GACA,GAAA9D,EAEAA,GADA,UAAA9W,EAAA/G,KAAA+H,WACAlqD,KAAAm/D,GAAA4E,qBAAA7a,EAAA4a,GAGA9jE,KAAA8/D,GAAAiE,qBAAA7a,EAAA4a,GAEA9jE,KAAAw9D,EAAAwG,kBAAA9a,EAAA/G,KAAA6d,IAMA7C,EAAAjjE,UAAA+pE,4BAAA,SAAA/a,EAAA4a,GAGA,GAAA9D,EAEAA,GADA,UAAA9W,EAAA/G,KAAA+H,WACAlqD,KAAAm/D,GAAA+E,wBAAAhb,EAAA4a,GAGA9jE,KAAA8/D,GAAAoE,wBAAAhb,EAAA4a,GAEA9jE,KAAAw9D,EAAAwG,kBAAA9a,EAAA/G,KAAA6d,IAEA7C,EAAAjjE,UAAAiqE,UAAA,WACAnkE,KAAA89D,GACA99D,KAAA89D,EAAAqG,UAzZA,mBA4ZAhH,EAAAjjE,UAAAoK,OAAA,WACAtE,KAAA89D,GACA99D,KAAA89D,EAAAx5D,OA9ZA,mBAiaA64D,EAAAjjE,UAAAkqE,MAAA,SAAAC,GAEA,OADA,KAAAA,IAAmCA,GAAA,GACnC,mBAAA7oE,SAAA,CAEA,GAAA4oE,EACAC,IACArkE,KAAAu9D,IACAv9D,KAAAu9D,EAAA,GAAAT,GAAAwH,cAAAtkE,KAAAi+D,IACAmG,EAAApkE,KAAAu9D,EAAAviE,OAGAopE,EAAApkE,KAAAi+D,EAAAjjE,KAEA,IAAAupE,GAAAtqE,OAAAoM,KAAA+9D,GAAAI,OAAA,SAAAC,EAAAC,GACA,MAAAjvD,MAAAwO,IAAAygD,EAAA5qE,OAAA2qE,IACS,EACTzf,GAAA7mD,QAAAimE,EAAA,SAAAO,EAAAjpE,GAEA,OAAAtC,GAAAurE,EAAA7qE,OAAqCV,EAAAmrE,EAAA,EAAqBnrE,IAC1DurE,GAAA,GACAnpE,SAAAmO,IAAAg7D,EAAAjpE,OAGAyhE,EAAAjjE,UAAA0qE,sBAAA,SAAAC,GACA7kE,KAAAi+D,EAAA6G,iBAAAD,GACA7kE,KAAA6+D,GAAAkG,YAAAF,IAMA1H,EAAAjjE,UAAA0nE,GAAA,WAEA,OADA/b,MACA5+C,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA,IAAAw/C,GAAA,EACAzmD,MAAA89D,IACArX,EAAAzmD,KAAA89D,EAAAzqD,GAAA,KAEA0xC,EAAAp7C,IAAAnH,UAAA,IAAAikD,GAAAxiD,OAAA4hD,KAOAsX,EAAAjjE,UAAAqoE,uBAAA,SAAA55D,EAAA+xB,EAAAynC,GACAx5D,GACAo8C,EAAAsE,eAAA,WACA,SAAA3uB,EACA/xB,EAAA,UAEA,CACA,GAAAb,IAAA4yB,GAAA,SAAA2B,cACA/uB,EAAAxF,CACAq6D,KACA70D,GAAA,KAAA60D,EACA,IAAA1mE,GAAAgP,MAAA6C,EACA7R,GAAAqM,OACAa,EAAAlN,OAKAxB,OAAAY,eAAAsiE,EAAAjjE,UAAA,YACAc,IAAA,WACA,MAAAgF,MAAAglE,aAAAhlE,KAAAglE,WAAA,GAAA9H,GAAA+H,SAAAjlE,QAEAjF,YAAA,EACAD,cAAA,IAEAqiE,IAEAjkE,GAAAikE,QhBi7GM,SAAUhkE,EAAQD,EAASH,GAEjC,YiBh7HAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAO9C,IAAAwpE,GAAA,WAMA,QAAAA,GAAAC,EAAAC,EAAAC,GACArlE,KAAAmlE,KACAnlE,KAAAolE,KACAplE,KAAAqlE,KAwCA,MAlCAH,GAAAhrE,UAAAorE,mBAAA,WACA,MAAAtlE,MAAAolE,IAMAF,EAAAhrE,UAAAqrE,WAAA,WACA,MAAAvlE,MAAAqlE,IAMAH,EAAAhrE,UAAAsrE,kBAAA,SAAArjB,GACA,GAAAA,EAAA5jD,UACA,MAAAyB,MAAAslE,uBAAAtlE,KAAAqlE,EAEA,IAAAxO,GAAA1U,EAAA+H,UACA,OAAAlqD,MAAAylE,mBAAA5O,IAMAqO,EAAAhrE,UAAAurE,mBAAA,SAAA7kE,GACA,MAAAZ,MAAAslE,uBAAAtlE,KAAAqlE,IAAArlE,KAAAmlE,GAAA5V,SAAA3uD,IAKAskE,EAAAhrE,UAAAwlE,QAAA,WACA,MAAA1/D,MAAAmlE,IAEAD,IAEAhsE,GAAAgsE,ajBu8HQ,CAEF,SAAU/rE,EAAQyG,EAAqB7G,GAE7C,YkBrgIA,SAAA2sE,GAAAC,GACAC,EAAAznE,QAAA,SAAA0nE,GACAA,EAAA1f,SAAAwf,IlBogIA1rE,OAAOY,eAAe+E,EAAqB,cAAgBlE,OAAO,GmBpgIlE,IAYA0qD,GAZAwf,MAaA,SAAAxf,GACAA,IAAA,iBACAA,IAAA,qBACAA,IAAA,eACAA,IAAA,eACAA,IAAA,iBACAA,IAAA,oBACCA,UAID,IAAA0f,GAAA1f,EAAA2f,KAMAC,EAAA,SAAAC,EAAAC,GAEA,OADAl/D,MACAC,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3CD,EAAAC,EAAA,GAAAnG,UAAAmG,EAEA,MAAAi/D,EAAAD,EAAA9f,UAAA,CAEA,GAAAvtC,IAAA,GAAA1B,OAAAivD,aACA,QAAAD,GAOA,IAAA9f,GAAAggB,MAGA,IAAAhgB,GAAAC,QACA7qD,QAAAmO,IAAAnH,MAAAhH,SAAA,IAAAod,EAAA,MAAAqtD,EAAAvrE,KAAA,KAAAuJ,OAAA+C,GACA,MACA,KAAAo/C,GAAA2f,KACAvqE,QAAA6qE,KAAA7jE,MAAAhH,SAAA,IAAAod,EAAA,MAAAqtD,EAAAvrE,KAAA,KAAAuJ,OAAA+C,GACA,MACA,KAAAo/C,GAAAkgB,KACA9qE,QAAA2X,KAAA3Q,MAAAhH,SAAA,IAAAod,EAAA,MAAAqtD,EAAAvrE,KAAA,KAAAuJ,OAAA+C,GACA,MACA,KAAAo/C,GAAAmgB,MACA/qE,QAAAC,MAAA+G,MAAAhH,SAAA,IAAAod,EAAA,MAAAqtD,EAAAvrE,KAAA,KAAAuJ,OAAA+C,GACA,MACA,SACA,KAAAyD,OAAA,8DAAAy7D,EAAA,QAGA1gB,EAAA,WAOA,QAAAA,GAAA9qD,GACAsF,KAAAtF,OAIAsF,KAAAwmE,GAAAV,EAIA9lE,KAAAymE,GAAAT,EAIAJ,EAAA5rE,KAAAgG,MAkEA,MAhEA/F,QAAAY,eAAA2qD,EAAAtrD,UAAA,YACAc,IAAA,WACA,MAAAgF,MAAAwmE,IAEAl+C,IAAA,SAAAxV,GACA,KAAAA,IAAAszC,IACA,SAAArjD,WAAA,uCAEA/C,MAAAwmE,GAAA1zD,GAEA/X,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAA2qD,EAAAtrD,UAAA,cACAc,IAAA,WACA,MAAAgF,MAAAymE,IAEAn+C,IAAA,SAAAxV,GACA,qBAAAA,GACA,SAAA/P,WAAA,oDAEA/C,MAAAymE,GAAA3zD,GAEA/X,YAAA,EACAD,cAAA,IAKA0qD,EAAAtrD,UAAAwsE,MAAA,WAEA,OADA1/D,MACAC,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CD,EAAAC,GAAAnG,UAAAmG,EAEAjH,MAAAymE,GAAAjkE,MAAAxC,WAAAomD,EAAAggB,OAAAniE,OAAA+C,KAEAw+C,EAAAtrD,UAAAyP,IAAA,WAEA,OADA3C,MACAC,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CD,EAAAC,GAAAnG,UAAAmG,EAEAjH,MAAAymE,GAAAjkE,MAAAxC,WAAAomD,EAAAC,SAAApiD,OAAA+C,KAEAw+C,EAAAtrD,UAAAmsE,KAAA,WAEA,OADAr/D,MACAC,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CD,EAAAC,GAAAnG,UAAAmG,EAEAjH,MAAAymE,GAAAjkE,MAAAxC,WAAAomD,EAAA2f,MAAA9hE,OAAA+C,KAEAw+C,EAAAtrD,UAAAiZ,KAAA,WAEA,OADAnM,MACAC,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CD,EAAAC,GAAAnG,UAAAmG,EAEAjH,MAAAymE,GAAAjkE,MAAAxC,WAAAomD,EAAAkgB,MAAAriE,OAAA+C,KAEAw+C,EAAAtrD,UAAAuB,MAAA,WAEA,OADAuL,MACAC,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CD,EAAAC,GAAAnG,UAAAmG,EAEAjH,MAAAymE,GAAAjkE,MAAAxC,WAAAomD,EAAAmgB,OAAAtiE,OAAA+C,KAEAw+C,InBgiIiC5lD,GAAiC,YAAI8lE,EACvC3sE,EAAoB0B,EAAEmF,EAAqB,SAAU,WAAa,MAAO4lD,KkBzsIxGzsD,EAAA0B,EAAAmF,EAAA,4BAAAwmD,MlBuuIM,SAAUjtD,EAAQD,EAASH,GAEjC,YoBztIAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACA4tE,EAAA5tE,EAAA,IACA6tE,EAAA7tE,EAAA,IACA+rD,EAAA/rD,EAAA,GACA8tE,EAAA9tE,EAAA,IACA+tE,EAAA/tE,EAAA,IACAguE,EAAAhuE,EAAA,IACAw6D,EAAAx6D,EAAA,GACAiuE,EAAAjuE,EAAA,KACAoG,EAAApG,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GACAkuE,EAAAluE,EAAA,IACAmuE,EAAA,SAAA7tD,GAaA,QAAA6tD,GAAAC,EAAAhlB,GAEA,KAAAglB,YAAAJ,GAAA5J,MACA,KAAA1yD,OAAA,4DAIA,OADA4O,GAAA/f,KAAA0G,KAAAmnE,EAAAhlB,EAAA6kB,EAAAI,YAAAC,SAAA,IAAArnE,KA6OA,MA/PAmZ,GAAAtZ,UAAAqnE,EAAA7tD,GAsBA6tD,EAAAhtE,UAAAotE,OAAA,WAEA,MADAviB,GAAA1lD,iBAAA,oBAAAyB,UAAAhH,QACAkG,KAAAmiD,KAAA5jD,UACA,KAEAyB,KAAAmiD,KAAAkI,WAMA6c,EAAAhtE,UAAAywD,MAAA,SAAAL,GAWA,MAVAvF,GAAA1lD,iBAAA,sBAAAyB,UAAAhH,QACA,gBAAAwwD,GACAA,GAAAx8C,GAEAw8C,YAAAiJ,GAAA3J,OACA,OAAA5pD,KAAAmiD,KAAA+H,WACA/qD,EAAA41D,uBAAA,oBAAAzK,GAAA,GAEAnrD,EAAA21D,mBAAA,oBAAAxK,GAAA,IAEA,GAAA4c,GAAAlnE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwI,MAAAL,KAGA4c,EAAAhtE,UAAAqtE,UAAA,WACAxiB,EAAA1lD,iBAAA,uBAAAyB,UAAAhH,OACA,IAAA0tE,GAAAxnE,KAAAmiD,KAAAsI,QACA,eAAA+c,EAAA,QAAAN,GAAAlnE,KAAAmnE,KAAAK,IAGAN,EAAAhtE,UAAAutE,QAAA,WACA1iB,EAAA1lD,iBAAA,qBAAAyB,UAAAhH,OAEA,KADA,GAAA+Z,GAAA7T,KACA,OAAA6T,EAAA0zD,aACA1zD,IAAA0zD,WAEA,OAAA1zD,IAGAqzD,EAAAhtE,UAAAwtE,aAAA,WACA,MAAA1nE,MAAAmnE,KAAAQ,UAOAT,EAAAhtE,UAAAouB,IAAA,SAAAq5C,EAAAnC,GACAza,EAAA1lD,iBAAA,oBAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,gBAAAh1D,KAAAmiD,MACAhjD,EAAA60D,wBAAA,kBAAA2N,EAAA3hE,KAAAmiD,MAAA,GACA4C,EAAAzlD,iBAAA,kBAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAGA,OAFAuD,MAAAmnE,KAAAzF,gBAAA1hE,KAAAmiD,KAAAwf,EACA,KAAA7vD,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAOA+0D,EAAAhtE,UAAAggB,OAAA,SAAA0tD,EAAApI,GAGA,GAFAza,EAAA1lD,iBAAA,uBAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,mBAAAh1D,KAAAmiD,MACA58C,MAAAsJ,QAAA+4D,GAAA,CAEA,OADAC,MACAzuE,EAAA,EAA2BA,EAAAwuE,EAAA9tE,SAA0BV,EACrDyuE,EAAA,GAAAzuE,GAAAwuE,EAAAxuE,EAEAwuE,GAAAC,EACA/iB,EAAA3xC,KAAA,wMAKAhU,EAAAs1D,6BAAA,qBAAAmT,EAAA5nE,KAAAmiD,MAAA,GACA4C,EAAAzlD,iBAAA,qBAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAmnE,KAAAjtD,OAAAla,KAAAmiD,KAAAylB,EAAA91D,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAQA+0D,EAAAhtE,UAAAwnE,gBAAA,SAAAC,EAAA9R,EAAA2P,GAMA,GALAza,EAAA1lD,iBAAA,gCAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,4BAAAh1D,KAAAmiD,MACAhjD,EAAA60D,wBAAA,8BAAA2N,EAAA3hE,KAAAmiD,MAAA,GACAhjD,EAAAu1D,iBAAA,8BAAA7E,GAAA,GACA9K,EAAAzlD,iBAAA,8BAAAkgE,GAAA,GACA,YAAAx/D,KAAAsnE,UAAA,UAAAtnE,KAAAsnE,SACA,0CACAtnE,KAAAsnE,SACA,yBACA,IAAAx1D,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAmnE,KAAAzF,gBAAA1hE,KAAAmiD,KAAAwf,EAAA9R,EAAA/9C,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAMA+0D,EAAAhtE,UAAAqsD,OAAA,SAAAiZ,GAIA,MAHAza,GAAA1lD,iBAAA,uBAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,mBAAAh1D,KAAAmiD,MACA4C,EAAAzlD,iBAAA,qBAAAkgE,GAAA,GACAx/D,KAAAsoB,IAAA,KAAAk3C,IAQA0H,EAAAhtE,UAAAuvC,YAAA,SAAAq+B,EAAAtI,EAAAuI,GAQA,GAPAhjB,EAAA1lD,iBAAA,4BAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,wBAAAh1D,KAAAmiD,MACA4C,EAAAzlD,iBAAA,0BAAAwoE,GAAA,GACA/iB,EAAAzlD,iBAAA,0BAAAkgE,GAAA,GAGArgE,EAAAm2D,gBAAA,0BAAAyS,GAAA,GACA,YAAA/nE,KAAAsnE,UAAA,UAAAtnE,KAAAsnE,SACA,sCACAtnE,KAAAsnE,SACA,8BACArhE,KAAA8hE,IACAA,GAAA,EACA,IAAAj2D,GAAA,GAAAkzC,GAAAvoD,QACA,mBAAA+iE,IACA1tD,EAAAK,QAAAoF,MAAA,aAEA,IAAAywD,GAAA,SAAAvsE,EAAAwsE,EAAAvR,GACAj7D,EACAqW,EAAA7P,OAAAxG,GAGAqW,EAAA9P,QAAA,GAAA4kE,GAAAsB,kBAAAD,EAAAvR,IAEA,kBAAA8I,IACAA,EAAA/jE,EAAAwsE,EAAAvR,GAIA,OADA12D,MAAAmnE,KAAAgB,iBAAAnoE,KAAAmiD,KAAA2lB,EAAAE,EAAAD,GACAj2D,EAAAK,SAOA+0D,EAAAhtE,UAAAkuE,YAAA,SAAArU,EAAAyL,GACAza,EAAA1lD,iBAAA,4BAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,wBAAAh1D,KAAAmiD,MACAhjD,EAAAu1D,iBAAA,0BAAAX,GAAA,GACAhP,EAAAzlD,iBAAA,0BAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAmnE,KAAAzF,gBAAA1hE,KAAAmiD,KAAAwI,MAAA,aAAAoJ,EAAA,KAAAjiD,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAOA+0D,EAAAhtE,UAAAF,KAAA,SAAA0B,EAAA8jE,GACAza,EAAA1lD,iBAAA,qBAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,iBAAAh1D,KAAAmiD,MACAhjD,EAAA60D,wBAAA,mBAAAt4D,EAAAsE,KAAAmiD,MAAA,GACA4C,EAAAzlD,iBAAA,mBAAAkgE,GAAA,EACA,IASArtD,GATAyG,EAAA5Y,KAAAmnE,KAAA/G,aACA1lE,EAAAmsE,EAAAwB,WAAAzvD,GAMA0vD,EAAAtoE,KAAA2qD,MAAAjwD,GACA6tE,EAAAvoE,KAAA2qD,MAAAjwD,EAaA,OAVAyX,GADA,MAAAzW,EACA4sE,EAAAhgD,IAAA5sB,EAAA8jE,GAAAj9D,KAAA,WAAgF,MAAAgmE,KAGhFxmE,QAAAC,QAAAumE,GAEAD,EAAA/lE,KAAA4P,EAAA5P,KAAA4E,KAAAgL,GACAm2D,EAAA/wD,MAAApF,EAAA5P,KAAA4E,KAAAgL,MAAAlM,IACA,kBAAAu5D,IACArtD,EAAAoF,MAAA,cAEA+wD,GAKApB,EAAAhtE,UAAAsuE,aAAA,WAEA,MADArpE,GAAA61D,qBAAA,yBAAAh1D,KAAAmiD,MACA,GAAAwkB,GAAA8B,aAAAzoE,KAAAmnE,KAAAnnE,KAAAmiD,OAEAloD,OAAAY,eAAAqsE,EAAAhtE,UAAA,YACAc,IAAA,WACA,MAAAgF,MAAA0nE,gBAEA3sE,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,OACAc,IAAA,WACA,MAAAgF,MAAAsnE,UAEAvsE,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,UACAc,IAAA,WACA,MAAAgF,MAAAunE,aAEAxsE,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,QACAc,IAAA,WACA,MAAAgF,MAAAynE,WAEA1sE,YAAA,EACAD,cAAA,IAEAosE,GACCJ,EAAA4B,MACDxvE,GAAAguE,YAOAJ,EAAA4B,MAAAC,uBAAAzB,EACAD,EAAA2B,UAAAD,uBAAAzB,GpBivIM,SAAU/tE,EAAQD,EAASH,GAEjC,YqB3gJAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAoG,EAAApG,EAAA,GACAw6D,EAAAx6D,EAAA,GACAm1D,EAAAn1D,EAAA,GAKA8vE,EAAA,WAMA,QAAAA,GAAA1D,EAAA2D,EAAAC,GACA/oE,KAAAmlE,KACAnlE,KAAA8oE,KACA9oE,KAAA+oE,KAsIA,MA9HAF,GAAA3uE,UAAA4Y,IAAA,WAEA,MADAgyC,GAAAzlD,iBAAA,uBAAAyB,UAAAhH,QACAkG,KAAAmlE,GAAAryD,OAOA+1D,EAAA3uE,UAAA8uE,UAAA,WAEA,MADAlkB,GAAAzlD,iBAAA,6BAAAyB,UAAAhH,QACAkG,KAAAmlE,GAAAryD,KAAA,IAIA+1D,EAAA3uE,UAAAyhD,OAAA,WAGA,MADAmJ,GAAAzlD,iBAAA,0BAAAyB,UAAAhH,QACAkG,KAAAgpE,aAOAH,EAAA3uE,UAAA+uE,OAAA,WAEA,MADAnkB,GAAAzlD,iBAAA,0BAAAyB,UAAAhH,SACAkG,KAAAmlE,GAAA5mE,WAQAsqE,EAAA3uE,UAAAywD,MAAA,SAAAue,GACApkB,EAAAzlD,iBAAA,yBAAAyB,UAAAhH,QAEAovE,GAAAp7D,GACA3O,EAAA21D,mBAAA,uBAAAoU,GAAA,EACA,IAAAC,GAAA,GAAA5V,GAAA3J,KAAAsf,GACAE,EAAAppE,KAAA8oE,GAAAne,MAAAwe,EACA,WAAAN,GAAA7oE,KAAAmlE,GAAA9V,SAAA8Z,GAAAC,EAAAlb,EAAAJ,iBAQA+a,EAAA3uE,UAAAq1D,SAAA,SAAA2Z,GACApkB,EAAAzlD,iBAAA,4BAAAyB,UAAAhH,QACAqF,EAAA21D,mBAAA,0BAAAoU,GAAA,EACA,IAAAC,GAAA,GAAA5V,GAAA3J,KAAAsf,EACA,QAAAlpE,KAAAmlE,GAAA9V,SAAA8Z,GAAA5qE,WAOAsqE,EAAA3uE,UAAA2yD,YAAA,WAGA,MAFA/H,GAAAzlD,iBAAA,+BAAAyB,UAAAhH,QAEAkG,KAAAmlE,GAAAtY,cAAA/5C,OAUA+1D,EAAA3uE,UAAAiE,QAAA,SAAAwzD,GACA,GAAAzoD,GAAAlJ,IAGA,OAFA8kD,GAAAzlD,iBAAA,2BAAAyB,UAAAhH,QACAgrD,EAAAxlD,iBAAA,yBAAAqyD,GAAA,IACA3xD,KAAAmlE,GAAAnW,gBAEAhvD,KAAAmlE,GAEA1U,aAAAzwD,KAAA+oE,GAAA,SAAAnoE,EAAAk/B,GACA,MAAA6xB,GAAA,GAAAkX,GAAA/oC,EAAA52B,EAAA4/D,GAAAne,MAAA/pD,GAAAstD,EAAAJ,oBAOA+a,EAAA3uE,UAAAmvE,YAAA,WAEA,MADAvkB,GAAAzlD,iBAAA,+BAAAyB,UAAAhH,SACAkG,KAAAmlE,GAAAnW,eAGAhvD,KAAAmlE,GAAA5mE,WAEAtE,OAAAY,eAAAguE,EAAA3uE,UAAA,OACAc,IAAA,WACA,MAAAgF,MAAA8oE,GAAAxB,UAEAvsE,YAAA,EACAD,cAAA,IAMA+tE,EAAA3uE,UAAAi2D,YAAA,WAEA,MADArL,GAAAzlD,iBAAA,+BAAAyB,UAAAhH,QACAkG,KAAAmlE,GAAAhV,eAKA0Y,EAAA3uE,UAAAovE,OAAA,WAEA,MADAxkB,GAAAzlD,iBAAA,uBAAAyB,UAAAhH,QACAkG,KAAA8oE,IAEA7uE,OAAAY,eAAAguE,EAAA3uE,UAAA,OACAc,IAAA,WACA,MAAAgF,MAAAspE,UAEAvuE,YAAA,EACAD,cAAA,IAEA+tE,IAEA3vE,GAAA2vE,gBrBmiJM,SAAU1vE,EAAQD,EAASH,GAEjC,YsB/rJAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAIA6tE,GAJAvb,EAAAj1D,EAAA,IACAw6D,EAAAx6D,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GAQAywE,EAAA,WAIA,MAHAD,KACAA,EAAA,GAAAvb,GAAAY,UAAA9J,EAAA4C,gBAEA6hB,GAKAE,EAAA,WAMA,QAAAA,GAAA/tE,EAAAguE,OACA,KAAAA,IAAkCA,EAAAF,KAClCxpE,KAAAtE,QACAsE,KAAA0pE,WAkTA,MA3SAD,GAAAE,WAAA,SAAA3hE,GACA,GAAA4hE,GAAAH,EAAArG,KAIA,OAHAre,GAAA5mD,QAAA6J,EAAA,SAAAmhE,EAAAU,GACAD,IAAAthD,IAAA,GAAAirC,GAAA3J,KAAAuf,GAAAU,KAEAD,GAMAH,EAAAvvE,UAAAqE,QAAA,WACA,cAAAyB,KAAAtE,OAAAsE,KAAA0pE,SAAAnrE,WAcAkrE,EAAAvvE,UAAA4vE,iCAAA,SAAAhf,EAAAl0C,GACA,SAAA5W,KAAAtE,OAAAkb,EAAA5W,KAAAtE,OACA,OAAoBymD,KAAAoR,EAAA3J,KAAAwZ,MAAA1nE,MAAAsE,KAAAtE,MAGpB,IAAAovD,EAAAvsD,UACA,WAGA,IAAA+wD,GAAAxE,EAAAZ,WACAS,EAAA3qD,KAAA0pE,SAAA1uE,IAAAs0D,EACA,WAAA3E,EAAA,CACA,GAAAof,GAAApf,EAAAmf,iCAAAhf,EAAAV,WAAAxzC,EACA,cAAAmzD,GAEgC5nB,KADhC,GAAAoR,GAAA3J,KAAA0F,GAAA3E,MAAAof,EAAA5nB,MACgCzmD,MAAAquE,EAAAruE,OAGhC,KAIA,aAWA+tE,EAAAvvE,UAAA8vE,yBAAA,SAAAlf,GACA,MAAA9qD,MAAA8pE,iCAAAhf,EAAA,WAAgF,YAMhF2e,EAAAvvE,UAAA+vE,QAAA,SAAAnf,GACA,GAAAA,EAAAvsD,UACA,MAAAyB,KAGA,IAAAsvD,GAAAxE,EAAAZ,WACAggB,EAAAlqE,KAAA0pE,SAAA1uE,IAAAs0D,EACA,eAAA4a,EACAA,EAAAD,QAAAnf,EAAAV,YAGAqf,EAAArG,OAWAqG,EAAAvvE,UAAAouB,IAAA,SAAAwiC,EAAAqf,GACA,GAAArf,EAAAvsD,UACA,UAAAkrE,GAAAU,EAAAnqE,KAAA0pE,SAGA,IAAApa,GAAAxE,EAAAZ,WACAS,EAAA3qD,KAAA0pE,SAAA1uE,IAAAs0D,IAAAma,EAAArG,MACAgH,EAAAzf,EAAAriC,IAAAwiC,EAAAV,WAAA+f,GACAxa,EAAA3vD,KAAA0pE,SAAA3Z,OAAAT,EAAA8a,EACA,WAAAX,GAAAzpE,KAAAtE,MAAAi0D,IASA8Z,EAAAvvE,UAAAqsD,OAAA,SAAAuE,GACA,GAAAA,EAAAvsD,UACA,MAAAyB,MAAA0pE,SAAAnrE,UACAkrE,EAAArG,MAGA,GAAAqG,GAAA,KAAAzpE,KAAA0pE,SAIA,IAAApa,GAAAxE,EAAAZ,WACAS,EAAA3qD,KAAA0pE,SAAA1uE,IAAAs0D,EACA,IAAA3E,EAAA,CACA,GAAAyf,GAAAzf,EAAApE,OAAAuE,EAAAV,YACAuF,MAAA,EAOA,OALAA,GADAya,EAAA7rE,UACAyB,KAAA0pE,SAAAnjB,OAAA+I,GAGAtvD,KAAA0pE,SAAA3Z,OAAAT,EAAA8a,GAEA,OAAApqE,KAAAtE,OAAAi0D,EAAApxD,UACAkrE,EAAArG,MAGA,GAAAqG,GAAAzpE,KAAAtE,MAAAi0D,GAIA,MAAA3vD,OAUAypE,EAAAvvE,UAAAc,IAAA,SAAA8vD,GACA,GAAAA,EAAAvsD,UACA,MAAAyB,MAAAtE,KAGA,IAAA4zD,GAAAxE,EAAAZ,WACAS,EAAA3qD,KAAA0pE,SAAA1uE,IAAAs0D,EACA,OAAA3E,GACAA,EAAA3vD,IAAA8vD,EAAAV,YAGA,MAWAqf,EAAAvvE,UAAAmwE,QAAA,SAAAvf,EAAAwf,GACA,GAAAxf,EAAAvsD,UACA,MAAA+rE,EAGA,IAAAhb,GAAAxE,EAAAZ,WACAS,EAAA3qD,KAAA0pE,SAAA1uE,IAAAs0D,IAAAma,EAAArG,MACAgH,EAAAzf,EAAA0f,QAAAvf,EAAAV,WAAAkgB,GACA3a,MAAA,EAOA,OALAA,GADAya,EAAA7rE,UACAyB,KAAA0pE,SAAAnjB,OAAA+I,GAGAtvD,KAAA0pE,SAAA3Z,OAAAT,EAAA8a,GAEA,GAAAX,GAAAzpE,KAAAtE,MAAAi0D,IAWA8Z,EAAAvvE,UAAAqwE,KAAA,SAAA55D,GACA,MAAA3Q,MAAAwqE,GAAAjX,EAAA3J,KAAAwZ,MAAAzyD,IAUA84D,EAAAvvE,UAAAswE,GAAA,SAAAC,EAAA95D,GACA,GAAA+5D,KAIA,OAHA1qE,MAAA0pE,SAAA9X,iBAAA,SAAAiF,EAAAqT,GACAQ,EAAA7T,GAAAqT,EAAAM,GAAAC,EAAA9f,MAAAkM,GAAAlmD,KAEAA,EAAA85D,EAAAzqE,KAAAtE,MAAAgvE,IASAjB,EAAAvvE,UAAAywE,WAAA,SAAAxoB,EAAAr/C,GACA,MAAA9C,MAAA4qE,GAAAzoB,EAAAoR,EAAA3J,KAAAwZ,MAAAtgE,IAEA2mE,EAAAvvE,UAAA0wE,GAAA,SAAAC,EAAAJ,EAAA3nE,GACA,GAAAlJ,KAAAoG,KAAAtE,OAAAoH,EAAA2nE,EAAAzqE,KAAAtE,MACA,IAAA9B,EACA,MAAAA,EAGA,IAAAixE,EAAAtsE,UACA,WAGA,IAAA+wD,GAAAub,EAAA3gB,WACA4gB,EAAA9qE,KAAA0pE,SAAA1uE,IAAAs0D,EACA,OAAAwb,GACAA,EAAAF,GAAAC,EAAAzgB,WAAAqgB,EAAA9f,MAAA2E,GAAAxsD,GAGA,MAWA2mE,EAAAvvE,UAAA6wE,cAAA,SAAA5oB,EAAAr/C,GACA,MAAA9C,MAAAgrE,GAAA7oB,EAAAoR,EAAA3J,KAAAwZ,MAAAtgE,IAEA2mE,EAAAvvE,UAAA8wE,GAAA,SAAAH,EAAAI,EAAAnoE,GACA,GAAA+nE,EAAAtsE,UACA,MAAAyB,KAGAA,MAAAtE,OACAoH,EAAAmoE,EAAAjrE,KAAAtE,MAEA,IAAA4zD,GAAAub,EAAA3gB,WACA4gB,EAAA9qE,KAAA0pE,SAAA1uE,IAAAs0D,EACA,OAAAwb,GACAA,EAAAE,GAAAH,EAAAzgB,WAAA6gB,EAAAtgB,MAAA2E,GAAAxsD,GAGA2mE,EAAArG,OAWAqG,EAAAvvE,UAAAgxE,QAAA,SAAApoE,GACA9C,KAAAmrE,GAAA5X,EAAA3J,KAAAwZ,MAAAtgE,IAEA2mE,EAAAvvE,UAAAixE,GAAA,SAAAF,EAAAnoE,GACA9C,KAAA0pE,SAAA9X,iBAAA,SAAAxC,EAAA8a,GACAA,EAAAiB,GAAAF,EAAAtgB,MAAAyE,GAAAtsD,KAEA9C,KAAAtE,OACAoH,EAAAmoE,EAAAjrE,KAAAtE,QAOA+tE,EAAAvvE,UAAAkxE,aAAA,SAAAtoE,GACA9C,KAAA0pE,SAAA9X,iBAAA,SAAAxC,EAAA8a,GACAA,EAAAxuE,OACAoH,EAAAssD,EAAA8a,EAAAxuE,UAIA+tE,EAAArG,MAAA,GAAAqG,GAAA,MACAA,IAEAvwE,GAAAuwE,iBtButJM,SAAUtwE,EAAQD,EAASH,GAEjC,YuB3iKAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAsyE,EAAAtyE,EAAA,IACAy+D,EAAAz+D,EAAA,GACAm1D,EAAAn1D,EAAA,GAQAuyE,EAAA,WACA,QAAAA,GAAAvC,GACA/oE,KAAA+oE,KAkGA,MAhGAuC,GAAApxE,UAAA+1D,YAAA,SAAAgR,EAAArgE,EAAAwpE,EAAAlJ,EAAArrD,EAAA01D,GACAzmB,EAAAlpD,OAAAqlE,EAAAtO,UAAA3yD,KAAA+oE,IAAA,oDACA,IAAAyC,GAAAvK,EAAA9R,kBAAAvuD,EAEA,OAAA4qE,GAAAnc,SAAA6R,GAAA1V,OAAA4e,EAAA/a,SAAA6R,KAIAsK,EAAAjtE,WAAA6rE,EAAA7rE,UAIA0iE,GAGA,MAAAsK,IACAnB,EAAA7rE,UACA0iE,EAAA1R,SAAA3uD,GACA2qE,EAAAE,iBAAAJ,EAAAhV,OAAAU,mBAAAn2D,EAAA4qE,IAGA1mB,EAAAlpD,OAAAqlE,EAAAjS,aAAA,uEAGAwc,EAAAjtE,UACAgtE,EAAAE,iBAAAJ,EAAAhV,OAAAO,iBAAAh2D,EAAAwpE,IAGAmB,EAAAE,iBAAAJ,EAAAhV,OAAAY,mBAAAr2D,EAAAwpE,EAAAoB,KAGAvK,EAAAjS,cAAAob,EAAA7rE,UACA0iE,EAIAA,EAAAzR,qBAAA5uD,EAAAwpE,GAAA7X,UAAAvyD,KAAA+oE,MAMAuC,EAAApxE,UAAAwxE,eAAA,SAAAnV,EAAAoV,EAAAJ,GAuBA,MAtBA,OAAAA,IACAhV,EAAAvH,cACAuH,EAAA9F,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAA8vD,GACAib,EAAApc,SAAA3uD,IACA2qE,EAAAE,iBAAAJ,EAAAhV,OAAAU,mBAAAn2D,EAAA8vD,MAIAib,EAAA3c,cACA2c,EAAAlb,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAA8vD,GACA,GAAA6F,EAAAhH,SAAA3uD,GAAA,CACA,GAAA4qE,GAAAjV,EAAApH,kBAAAvuD,EACA4qE,GAAAhgB,OAAAkF,IACA6a,EAAAE,iBAAAJ,EAAAhV,OAAAY,mBAAAr2D,EAAA8vD,EAAA8a,QAIAD,GAAAE,iBAAAJ,EAAAhV,OAAAO,iBAAAh2D,EAAA8vD,OAKAib,EAAApZ,UAAAvyD,KAAA+oE,KAKAuC,EAAApxE,UAAA+0D,eAAA,SAAAsH,EAAA1G,GACA,MAAA0G,GAAAh4D,UACAi5D,EAAAlJ,aAAAP,WAGAwI,EAAAtH,eAAAY,IAMAyb,EAAApxE,UAAA0xE,aAAA,WACA,UAKAN,EAAApxE,UAAA2xE,iBAAA,WACA,MAAA7rE,OAKAsrE,EAAApxE,UAAA4xE,SAAA,WACA,MAAA9rE,MAAA+oE,IAEAuC,IAEApyE,GAAAoyE,iBvBmkKM,SAAUnyE,EAAQD,EAASH,GAEjC,YwBvrKAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAqwE,GAAAhzE,EAAA,KACAmlE,EAAA,WACA,QAAAA,MAkBA,MAhBAA,GAAAC,cAAA,SAAAhJ,GACA,GAAA6W,GAAA7W,IAIA,OAHAn1D,MAAAisE,GAAAD,KACAhsE,KAAAisE,GAAAD,GAAA,GAAAD,GAAAG,iBAEAlsE,KAAAisE,GAAAD,IAEA9N,EAAAY,oBAAA,SAAA3J,EAAAgX,GACA,GAAAH,GAAA7W,IAIA,OAHAn1D,MAAAosE,GAAAJ,KACAhsE,KAAAosE,GAAAJ,GAAAG,KAEAnsE,KAAAosE,GAAAJ,IAEA9N,EAAA+N,MACA/N,EAAAkO,MACAlO,IAEAhlE,GAAAglE,gBxB+sKM,SAAU/kE,EAAQD,EAASH,GAEjC,YyBxuKAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAguE,EAAAhuE,EAAA,IACAgsD,EAAAhsD,EAAA,GACAszE,EAAAtzE,EAAA,IACAoG,EAAApG,EAAA,EACAA,GAAA,IAEA,IACAuzE,GAIAC,EAAA,WACA,QAAAA,KAIAvsE,KAAAwsE,MAKAxsE,KAAAysE,IAAA,EAyFA,MAvFAF,GAAAG,YAAA,WAIA,MAHAJ,KACAA,EAAA,GAAAC,IAEAD,GAGAC,EAAAryE,UAAAiqE,UAAA,WACA,OAAA3yB,KAAAxxC,MAAAwsE,GACA,OAAAG,KAAA3sE,MAAAwsE,GAAAh7B,GACAxxC,KAAAwsE,GAAAh7B,GAAAm7B,GAAAxI,aAIAoI,EAAAryE,UAAAoK,OAAA,WACA,OAAAktC,KAAAxxC,MAAAwsE,GACA,OAAAG,KAAA3sE,MAAAwsE,GAAAh7B,GACAxxC,KAAAwsE,GAAAh7B,GAAAm7B,GAAAroE,UAUAioE,EAAAryE,UAAA0yE,gBAAA,SAAA/mE,EAAAihC,GACA,GAAA6lC,GAAA7lC,GAAAjhC,EAAAG,QAAA,gBACAC,KAAA0mE,GACA5nB,EAAA2B,MAAA,uHAIA,IAAAwO,GAAAmX,EAAAQ,cAAAF,GACAxX,EAAAD,EAAAC,QAOA,OANAh2D,GAAA81D,YAAA,kCAAAC,GACAA,EAAA/S,KAAA5jD,WACAwmD,EAAA2B,MAAA,4FAGA1mD,KAAA8sE,WAAA3X,EAAAtvD,GACA8hE,UAOA4E,EAAAryE,UAAA6yE,WAAA,SAAA5F,GACA,GAAA6F,GAAAloB,EAAApmD,QAAAsB,KAAAwsE,GAAArF,EAAAthE,IAAAnL,KAEAsyE,IAAAloB,EAAApmD,QAAAsuE,EAAA7F,EAAA/J,EAAA6P,iBAAA9F,GACApiB,EAAA2B,MAAA,YAAAygB,EAAAthE,IAAAnL,KAAA,IAAAysE,EAAA/J,EAAA,+BAEA+J,EAAAhD,kBACA6I,GAAA7F,EAAA/J,EAAA6P,gBAUAV,EAAAryE,UAAA4yE,WAAA,SAAA3X,EAAAtvD,GACA,GAAAmnE,GAAAloB,EAAApmD,QAAAsB,KAAAwsE,GAAA3mE,EAAAnL,KACAsyE,KACAA,KACAhtE,KAAAwsE,GAAA3mE,EAAAnL,MAAAsyE,EAEA,IAAA7F,GAAAriB,EAAApmD,QAAAsuE,EAAA7X,EAAA8X,cAMA,OALA9F,IACApiB,EAAA2B,MAAA,2HAEAygB,EAAA,GAAAJ,GAAA5J,KAAAhI,EAAAn1D,KAAAysE,GAAA5mE,GACAmnE,EAAA7X,EAAA8X,eAAA9F,EACAA,GAMAoF,EAAAryE,UAAAmjE,gBAAA,SAAAA,GACAr9D,KAAAysE,GAAApP,GAEAkP,IAEArzE,GAAAqzE,ezB+vKQ,CACA,CACA,CACA,CACA,CAEF,SAAUpzE,EAAQD,EAASH,GAEjC,Y0Bz3KAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACA+rD,EAAA/rD,EAAA,GACAszE,EAAAtzE,EAAA,IACAw6D,EAAAx6D,EAAA,GACAm0E,EAAAn0E,EAAA,IACAguE,EAAAhuE,EAAA,IACAo0E,EAAAp0E,EAAA,IACAgsD,EAAAhsD,EAAA,GACAoG,EAAApG,EAAA,GAKAksE,EAAA,WAKA,QAAAA,GAAAmI,GACAptE,KAAAotE,KACAA,YAAArG,GAAA5J,MACArY,EAAA4B,MAAA,wEAGA1mD,KAAAm8D,EAAA,GAAA+Q,GAAAhG,UAAAkG,EAAA7Z,EAAA3J,KAAAwZ,OACApjE,KAAA6H,SAAA,GAAAwlE,GAAArtE,MAmEA,MAjEA/F,QAAAY,eAAAoqE,EAAA/qE,UAAA,OACAc,IAAA,WACA,MAAAgF,MAAAotE,GAAAvnE,KAEA9K,YAAA,EACAD,cAAA,IAEAmqE,EAAA/qE,UAAA2Z,IAAA,SAAAsuC,GAGA,MAFAniD,MAAAstE,GAAA,OACAvoB,EAAA1lD,iBAAA,mBAAAyB,UAAAhH,QACAqoD,YAAA+qB,GAAAhG,UACAlnE,KAAAutE,WAAAprB,UAEAl8C,KAAAk8C,EAAAniD,KAAAm8D,EAAAxR,MAAAxI,GAAAniD,KAAAm8D,GASA8I,EAAA/qE,UAAAqzE,WAAA,SAAAzmC,GAEA,GAAA0mC,GAAA,qBACAxtE,MAAAstE,GAAAE,GACAzoB,EAAA1lD,iBAAAmuE,EAAA,IAAA1sE,UAAAhH,OACA,IAAA2zE,GAAApB,EAAAQ,cAAA/lC,EACA3nC,GAAA81D,YAAAuY,EAAA,EAAAC,EACA,IAAAtY,GAAAsY,EAAAtY,QAUA,OATAA,GAAAz0C,OAAA1gB,KAAAotE,GAAAhQ,EAAA18C,MACAokC,EAAA4B,MAAA8mB,EACA,2DAEArY,EAAAz0C,KACA,iBACA1gB,KAAAotE,GAAAhQ,EAAA18C,KACA,KAEA1gB,KAAA6T,IAAA45D,KAAAtrB,OAKA8iB,EAAA/qE,UAAAozE,GAAA,SAAAE,GACA,OAAAxtE,KAAAotE,IACAtoB,EAAA4B,MAAA,eAAA8mB,EAAA,4BAIAvI,EAAA/qE,UAAAwzE,UAAA,WACA3oB,EAAA1lD,iBAAA,yBAAAyB,UAAAhH,QACAkG,KAAAstE,GAAA,aACAttE,KAAAotE,GAAAjJ,aAEAc,EAAA/qE,UAAAyzE,SAAA,WACA5oB,EAAA1lD,iBAAA,wBAAAyB,UAAAhH,QACAkG,KAAAstE,GAAA,YACAttE,KAAAotE,GAAA9oE,UAEA2gE,EAAA2I,aACAC,WACAC,MAAA,cAGA7I,IAEA/rE,GAAA+rE,UACA,IAAAoI,GAAA,WAEA,QAAAA,GAAA1F,GACA3nE,KAAA2nE,WAgBA,MAbA0F,GAAAnzE,UAAA+O,OAAA,WACA,MAAAkQ,GAAAzX,UAAA1B,SAAA,qBACA,MAAAmZ,GAAA1W,YAAAzC,KAAA,SAAA+tE,GAOA,MANA/tE,MAAA2nE,SAAA2F,GAAA,UACAH,EAAAZ,YAAAG,cAAAK,WAAA/sE,KAAA2nE,SAAAyF,IACAptE,KAAA2nE,SAAAyF,GAAA,KACAptE,KAAA2nE,SAAAxL,EAAA,KACAn8D,KAAA2nE,SAAA9/D,SAAA,KACA7H,KAAA2nE,SAAA,MACA,QAIA0F,IAEAn0E,GAAAm0E,qB1Bi5KM,SAAUl0E,EAAQD,EAASH,GAEjC,Y2BhgLA,SAAAi1E,GAAA1jB,GAGA,OAFA2jB,GAAA,GACAvjB,EAAAJ,EAAA7xC,MAAA,KACArf,EAAA,EAAmBA,EAAAsxD,EAAA5wD,OAAmBV,IACtC,GAAAsxD,EAAAtxD,GAAAU,OAAA,GACA,GAAAo0E,GAAAxjB,EAAAtxD,EACA,KACA80E,EAAAvlD,mBAAAulD,EAAAh2D,QAAA,YAEA,MAAA7X,IACA4tE,GAAA,IAAAC,EAGA,MAAAD,GAMA,QAAAE,GAAAC,GACA,GAAAC,KACAD,GAAAr3D,WAAA,OACAq3D,IAAA1lD,UAAA,GAEA,QAAAzhB,GAAA,EAAA8mE,EAAAK,EAAA31D,MAAA,KAAiDxR,EAAA8mE,EAAAj0E,OAAgBmN,IAAA,CACjE,GAAAqnE,GAAAP,EAAA9mE,EACA,QAAAqnE,EAAAx0E,OAAA,CAGA,GAAAy0E,GAAAD,EAAA71D,MAAA,IACA,KAAA81D,EAAAz0E,OACAu0E,EAAA1lD,mBAAA4lD,EAAA,KAAA5lD,mBAAA4lD,EAAA,IAGAzpB,EAAA3xC,KAAA,0BAAAm7D,EAAA,eAAAF,EAAA,MAGA,MAAAC,GA7CAp0E,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA63D,GAAAx6D,EAAA,GACAy1E,EAAAz1E,EAAA,IACA+rD,EAAA/rD,EAAA,EAiDAG,GAAA2zE,cAAA,SAAA4B,GACA,GAAAvZ,GAAAh8D,EAAAw1E,SAAAD,GAAAtoE,EAAA+uD,EAAAyZ,SACA,cAAAzZ,EAAA0Z,QACA9pB,EAAA4B,MAAAwO,EAAAx0C,KACA,8EAIAva,GAAA,aAAAA,GACA,cAAA+uD,EAAA0Z,QACA9pB,EAAA4B,MAAA,gFAEAwO,EAAAiL,QACArb,EAAA6B,oBAEA,IAAAkoB,GAAA,OAAA3Z,EAAA4Z,QAAA,QAAA5Z,EAAA4Z,MACA,QACA3Z,SAAA,GAAAqZ,GAAAO,SAAA7Z,EAAAx0C,KAAAw0C,EAAAiL,OAAAh6D,EAAA0oE,GACA1sB,KAAA,GAAAoR,GAAA3J,KAAAsL,EAAA5K,cAQApxD,EAAAw1E,SAAA,SAAAD,GAEA,GAAA/tD,GAAA,GAAAkuD,EAAA,GAAAD,EAAA,GAAArkB,EAAA,GAEA6V,GAAA,EAAA2O,EAAA,QAAAE,EAAA,GAEA,oBAAAP,GAAA,CAEA,GAAAQ,GAAAR,EAAAluE,QAAA,KACA0uE,IAAA,IACAH,EAAAL,EAAA/lD,UAAA,EAAAumD,EAAA,GACAR,IAAA/lD,UAAAumD,EAAA,GAGA,IAAAC,GAAAT,EAAAluE,QAAA,MACA,IAAA2uE,IACAA,EAAAT,EAAA30E,OAEA,IAAAq1E,GAAAV,EAAAluE,QAAA,MACA,IAAA4uE,IACAA,EAAAV,EAAA30E,QAEA4mB,EAAA+tD,EAAA/lD,UAAA,EAAAjT,KAAA8yC,IAAA2mB,EAAAC,IACAD,EAAAC,IAEA7kB,EAAA0jB,EAAAS,EAAA/lD,UAAAwmD,EAAAC,IAEA,IAAAC,GAAAjB,EAAAM,EAAA/lD,UAAAjT,KAAA8yC,IAAAkmB,EAAA30E,OAAAq1E,IAEAF,GAAAvuD,EAAAngB,QAAA,KACA0uE,GAAA,GACA9O,EAAA,UAAA2O,GAAA,QAAAA,EACAE,EAAA7qD,SAAAzD,EAAAgI,UAAAumD,EAAA,QAGAA,EAAAR,EAAA30E,MAEA,IAAA0e,GAAAkI,EAAAjI,MAAA,IACA,KAAAD,EAAA1e,QAEA80E,EAAAp2D,EAAA,GACAm2D,EAAAn2D,EAAA,GAAA2R,eAEA,IAAA3R,EAAA1e,OACA80E,EAAAp2D,EAAA,GAEA,cAAAA,EAAA,GAAAxF,MAAA,EAAAi8D,GAAA9kD,gBACAykD,EAAA,aAGA,KAAAD,GAAA,MAAAS,KACAT,EAAAS,EAAA,IAGA,OACA1uD,OACAsuD,OACAJ,SACAD,YACAxO,SACA2O,SACAxkB,gB3BkiLM,SAAUnxD,EAAQD,EAASH,GAEjC,Y4B/qLAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAqsD,EAAArsD,EAAA,IACAs2E,EAAAt2E,EAAA,IAMAg2E,EAAA,WAQA,QAAAA,GAAAruD,EAAAy/C,EAAAh6D,EAAA0oE,EAAAS,OACA,KAAAA,IAAwCA,EAAA,IACxCtvE,KAAAmgE,SACAngE,KAAAmG,YACAnG,KAAA6uE,gBACA7uE,KAAAsvE,iBACAtvE,KAAA0gB,OAAAyJ,cACAnqB,KAAA4uE,OAAA5uE,KAAA0gB,KAAAzJ,OAAAjX,KAAA0gB,KAAAngB,QAAA,QACAP,KAAAuvE,aAAAnqB,EAAA2T,kBAAA/9D,IAAA,QAAA0lB,IAAA1gB,KAAA0gB,KAgEA,MA9DAquD,GAAA70E,UAAAs1E,gBAAA,WACA,MAAAxvE,MAAA0gB,OAAA1gB,KAAAuvE,cAAAvvE,KAAAyvE,gBAEAV,EAAA70E,UAAAw1E,gBAAA,WACA,aAAA1vE,KAAAuvE,aAAAt4D,OAAA,MAEA83D,EAAA70E,UAAAy1E,WAAA,WACA,8BAAA3vE,KAAA4uE,QAEAG,EAAA70E,UAAAu1E,aAAA,WACA,yBAAAzvE,KAAA4uE,QAAA,wBAAA5uE,KAAA4uE,QAEAG,EAAA70E,UAAA01E,WAAA,SAAAC,GACAA,IAAA7vE,KAAAuvE,eACAvvE,KAAAuvE,aAAAM,EACA7vE,KAAA0vE,mBACAtqB,EAAA2T,kBAAAzwC,IAAA,QAAAtoB,KAAA0gB,KAAA1gB,KAAAuvE,gBAUAR,EAAA70E,UAAA41E,cAAA,SAAAzrD,EAAArL,GACA8rC,EAAAlpD,OAAA,gBAAAyoB,GAAA,8BACAygC,EAAAlpD,OAAA,gBAAAod,GAAA,+BACA,IAAA+2D,EACA,IAAA1rD,IAAAgrD,EAAA9V,UACAwW,GACA/vE,KAAAmgE,OAAA,kBAAAngE,KAAAuvE,aAAA,YAEA,IAAAlrD,IAAAgrD,EAAA7V,aAKA,KAAA/uD,OAAA,4BAAA4Z,EAJA0rD,IACA/vE,KAAAmgE,OAAA,sBAAAngE,KAAAuvE,aAAA,QAKAvvE,KAAAwvE,oBACAx2D,EAAA,GAAAhZ,KAAAmG,UAEA,IAAA6pE,KAIA,OAHAjrB,GAAA5mD,QAAA6a,EAAA,SAAApY,EAAAlF,GACAs0E,EAAAh2E,KAAA4G,EAAA,IAAAlF,KAEAq0E,EAAAC,EAAA5hE,KAAA,MAGA2gE,EAAA70E,UAAAgb,SAAA,WACA,GAAA3H,GAAAvN,KAAAitE,aAIA,OAHAjtE,MAAAsvE,iBACA/hE,GAAA,IAAAvN,KAAAsvE,eAAA,KAEA/hE,GAGAwhE,EAAA70E,UAAA+yE,YAAA,WACA,OAAAjtE,KAAAmgE,OAAA,sBAAAngE,KAAA0gB,MAEAquD,IAEA71E,GAAA61E,Y5BusLM,SAAU51E,EAAQD,EAASH,GAEjC,Y6BryLAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAoG,EAAApG,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GAIA0vE,EAAA,WAKA,QAAAA,GAAA2E,EAAAlZ,GACAl0D,KAAAotE,KACAptE,KAAAk0D,KA8EA,MAxEAuU,GAAAvuE,UAAA0vC,OAAA,SAAA41B,GACA1a,EAAAzlD,iBAAA,0BAAAyB,UAAAhH,QACAgrD,EAAAxlD,iBAAA,wBAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAotE,GAAA/J,mBAAArjE,KAAAk0D,GAAApiD,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAMAs2D,EAAAvuE,UAAAqsD,OAAA,SAAAiZ,GACA1a,EAAAzlD,iBAAA,0BAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,sBAAAh1D,KAAAk0D,IACApP,EAAAxlD,iBAAA,wBAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAotE,GAAA7J,gBAAAvjE,KAAAk0D,GAAA,KAAApiD,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAOAs2D,EAAAvuE,UAAAouB,IAAA,SAAA5sB,EAAA8jE,GACA1a,EAAAzlD,iBAAA,uBAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,mBAAAh1D,KAAAk0D,IACA/0D,EAAA60D,wBAAA,qBAAAt4D,EAAAsE,KAAAk0D,IAAA,GACApP,EAAAxlD,iBAAA,qBAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAotE,GAAA7J,gBAAAvjE,KAAAk0D,GAAAx4D,EAAAoW,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAQAs2D,EAAAvuE,UAAAwnE,gBAAA,SAAAhmE,EAAAq4D,EAAAyL,GACA1a,EAAAzlD,iBAAA,mCAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,+BAAAh1D,KAAAk0D,IACA/0D,EAAA60D,wBAAA,iCAAAt4D,EAAAsE,KAAAk0D,IAAA,GACA/0D,EAAAu1D,iBAAA,iCAAAX,GAAA,GACAjP,EAAAxlD,iBAAA,iCAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAotE,GAAA1J,4BAAA1jE,KAAAk0D,GAAAx4D,EAAAq4D,EAAAjiD,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAOAs2D,EAAAvuE,UAAAggB,OAAA,SAAA0tD,EAAApI,GAGA,GAFA1a,EAAAzlD,iBAAA,0BAAAyB,UAAAhH,QACAqF,EAAA61D,qBAAA,sBAAAh1D,KAAAk0D,IACA3uD,MAAAsJ,QAAA+4D,GAAA,CAEA,OADAC,MACAzuE,EAAA,EAA2BA,EAAAwuE,EAAA9tE,SAA0BV,EACrDyuE,EAAA,GAAAzuE,GAAAwuE,EAAAxuE,EAEAwuE,GAAAC,EACA9iB,EAAA5xC,KAAA,gOAGAhU,EAAAs1D,6BAAA,wBAAAmT,EAAA5nE,KAAAk0D,IAAA,GACApP,EAAAxlD,iBAAA,wBAAAkgE,GAAA,EACA,IAAA1tD,GAAA,GAAAkzC,GAAAvoD,QAEA,OADAuD,MAAAotE,GAAAzJ,mBAAA3jE,KAAAk0D,GAAA0T,EAAA91D,EAAAwF,aAAAkoD,IACA1tD,EAAAK,SAEAs2D,IAEAvvE,GAAAuvE,gB7B6zLM,SAAUtvE,EAAQD,EAASH,GAEjC,Y8B95LAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAWAitE,GAXA7jB,EAAA/rD,EAAA,GACAo1D,EAAAp1D,EAAA,IACAm1D,EAAAn1D,EAAA,GACAk3E,EAAAl3E,EAAA,IACAm3E,EAAAn3E,EAAA,IACAgsD,EAAAhsD,EAAA,GACAw6D,EAAAx6D,EAAA,GACAoG,EAAApG,EAAA,GACAisD,EAAAjsD,EAAA,GACAo3E,EAAAp3E,EAAA,IACAksD,EAAAlsD,EAAA,GAQA2vE,EAAA,WACA,QAAAA,GAAAvB,EAAAhlB,EAAAiuB,EAAAC,GACArwE,KAAAmnE,OACAnnE,KAAAmiD,OACAniD,KAAAowE,KACApwE,KAAAqwE,KA6cA,MA3cAp2E,QAAAY,eAAA6tE,EAAA,0BACA1tE,IAAA,WAEA,MADA8pD,GAAAlpD,OAAA+sE,EAAA,oCACAA,GAEArgD,IAAA,SAAAxV,GACA61D,EAAA71D,GAEA/X,YAAA,EACAD,cAAA,IAOA4tE,EAAA4H,GAAA,SAAAt3D,GACA,GAAAu3D,GAAA,KACAC,EAAA,IAOA,IANAx3D,EAAAy3D,aACAF,EAAAv3D,EAAA03D,sBAEA13D,EAAA23D,WACAH,EAAAx3D,EAAA43D,oBAEA53D,EAAA8yD,aAAA3d,EAAAqE,UAAA,CACA,GAAAqe,GAAA,mGAEAC,EAAA,uGAEA,IAAA93D,EAAAy3D,WAAA,CAEA,GADAz3D,EAAA+3D,qBACAhsB,EAAAqC,SACA,KAAA38C,OAAAomE,EAEA,oBAAAN,GACA,KAAA9lE,OAAAqmE,GAGA,GAAA93D,EAAA23D,SAAA,CAEA,GADA33D,EAAAg4D,mBACAjsB,EAAAsC,SACA,KAAA58C,OAAAomE,EAEA,oBAAAL,GACA,KAAA/lE,OAAAqmE,QAIA,IAAA93D,EAAA8yD,aAAA5d,EAAAJ,gBACA,SAAAyiB,IAAApxE,EAAA20D,gBAAAyc,IACA,MAAAC,IAAArxE,EAAA20D,gBAAA0c,GACA,KAAA/lE,OAAA,qKAOA,IAFAq6C,EAAAlpD,OAAAod,EAAA8yD,oBAAAoE,GAAAe,WACAj4D,EAAA8yD,aAAAmE,EAAAiB,YAAA,uBACA,MAAAX,GAAA,gBAAAA,IACA,MAAAC,GAAA,gBAAAA,GACA,KAAA/lE,OAAA,0FAUAi+D,EAAAyI,GAAA,SAAAn4D,GACA,GAAAA,EAAAy3D,YACAz3D,EAAA23D,UACA33D,EAAAo4D,aACAp4D,EAAAq4D,mBACA,KAAA5mE,OAAA,uGAQAi+D,EAAAxuE,UAAAo3E,GAAA,SAAAt1D,GACA,QAAAhc,KAAAqwE,GACA,KAAA5lE,OAAAuR,EAAA,gDAMA0sD,EAAAxuE,UAAAq3E,eAAA,WACA,MAAAvxE,MAAAowE,IAKA1H,EAAAxuE,UAAAovE,OAAA,WAKA,MAJAtkB,GAAA3lD,iBAAA,gBAAAyB,UAAAhH,QAIA,GAAA4uE,GAAAC,uBAAA3oE,KAAAmnE,KAAAnnE,KAAAmiD,OASAumB,EAAAxuE,UAAAoS,GAAA,SAAAsoD,EAAAjsD,EAAA6oE,EAAAp1D,GACA4oC,EAAA3lD,iBAAA,eAAAyB,UAAAhH,QACAqF,EAAAw1D,kBAAA,aAAAC,GAAA,GACA5P,EAAA1lD,iBAAA,aAAAqJ,GAAA,EACA,IAAAyJ,GAAAs2D,EAAA+I,GAAA,WAAAD,EAAAp1D,EACA,cAAAw4C,EACA50D,KAAA0xE,aAAA/oE,EAAAyJ,EAAAw3B,OAAAx3B,EAAAgK,aAEA,CACA,GAAAu1D,KACAA,GAAA/c,GAAAjsD,EACA3I,KAAA4xE,aAAAD,EAAAv/D,EAAAw3B,OAAAx3B,EAAAgK,SAEA,MAAAzT,IAQA+/D,EAAAxuE,UAAAw3E,aAAA,SAAA/oE,EAAAkpE,EAAAz1D,GACA,GAAA01D,GAAA,GAAA3B,GAAA4B,uBAAAppE,EAAAkpE,GAAA,KAAAz1D,GAAA,KACApc,MAAAmnE,KAAAtD,yBAAA7jE,KAAA8xE,IAQApJ,EAAAxuE,UAAA03E,aAAA,SAAAD,EAAAE,EAAAz1D,GACA,GAAA01D,GAAA,GAAA3B,GAAA6B,uBAAAL,EAAAE,EAAAz1D,EACApc,MAAAmnE,KAAAtD,yBAAA7jE,KAAA8xE,IAOApJ,EAAAxuE,UAAAuS,IAAA,SAAAmoD,EAAAjsD,EAAAyT,GACA4oC,EAAA3lD,iBAAA,gBAAAyB,UAAAhH,QACAqF,EAAAw1D,kBAAA,cAAAC,GAAA,GACA5P,EAAA1lD,iBAAA,cAAAqJ,GAAA,GACAq8C,EAAAzlD,sBAAA,cAAA6c,GAAA,EACA,IAAA01D,GAAA,KACAH,EAAA,IACA,cAAA/c,EAAA,CACA,GAAAqd,GAAAtpE,GAAA,IACAmpE,GAAA,GAAA3B,GAAA4B,uBAAAE,EAAA,KAAA71D,GAAA,UAEAw4C,KACAjsD,IACAgpE,KACAA,EAAA/c,GAAAjsD,GAEAmpE,EAAA,GAAA3B,GAAA6B,uBAAAL,EAAA,KAAAv1D,GAAA,MAEApc,MAAAmnE,KAAAlD,4BAAAjkE,KAAA8xE,IAUApJ,EAAAxuE,UAAAsS,KAAA,SAAAooD,EAAAsd,EAAAC,EAAA/1D,GACA,GAAAlT,GAAAlJ,IACAglD,GAAA3lD,iBAAA,iBAAAyB,UAAAhH,QACAqF,EAAAw1D,kBAAA,eAAAC,GAAA,GACA5P,EAAA1lD,iBAAA,eAAA4yE,GAAA,EACA,IAAA9/D,GAAAs2D,EAAA+I,GAAA,aAAAU,EAAA/1D,GAKAg2D,GAAA,EACAtgE,EAAA,GAAAmzC,GAAAxoD,QAEAqV,GAAAK,QAAAoF,MAAA,aACA,IAAA86D,GAAA,SAAA3b,GAGA0b,IACAA,GAAA,EACAlpE,EAAAuD,IAAAmoD,EAAAyd,GACAH,GACAA,EAAA/qE,KAAAiL,EAAAgK,SAAAs6C,GAEA5kD,EAAA9P,QAAA00D,IAUA,OAPA12D,MAAAsM,GAAAsoD,EAAAyd,EACA,SAAA92E,GACA2N,EAAAuD,IAAAmoD,EAAAyd,GACAjgE,EAAAw3B,QACAx3B,EAAAw3B,OAAAziC,KAAAiL,EAAAgK,SAAA7gB,GACAuW,EAAA7P,OAAA1G,KAEAuW,EAAAK,SAOAu2D,EAAAxuE,UAAAo4E,aAAA,SAAAC,GAEA,GADAvtB,EAAA3lD,iBAAA,yBAAAyB,UAAAhH,QACA,gBAAAy4E,IACA98D,KAAAoD,MAAA05D,QACAA,GAAA,EACA,KAAA9nE,OAAA,iEAEA,IAAAzK,KAAAowE,GAAAgB,WACA,KAAA3mE,OAAA,sGAGA,WAAAi+D,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAniD,KAAAowE,GAAAkC,aAAAC,GAAAvyE,KAAAqwE,KAOA3H,EAAAxuE,UAAAs4E,YAAA,SAAAD,GAEA,GADAvtB,EAAA3lD,iBAAA,wBAAAyB,UAAAhH,QACA,gBAAAy4E,IACA98D,KAAAoD,MAAA05D,QACAA,GAAA,EACA,KAAA9nE,OAAA,gEAEA,IAAAzK,KAAAowE,GAAAgB,WACA,KAAA3mE,OAAA,qGAGA,WAAAi+D,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAniD,KAAAowE,GAAAoC,YAAAD,GAAAvyE,KAAAqwE,KAOA3H,EAAAxuE,UAAAu4E,aAAA,SAAAtwB,GAEA,GADA6C,EAAA3lD,iBAAA,yBAAAyB,UAAAhH,QACA,SAAAqoD,EACA,KAAA13C,OAAA,0EAEA,kBAAA03C,EACA,KAAA13C,OAAA,oFAEA,eAAA03C,EACA,KAAA13C,OAAA,8EAEAtL,GAAA21D,mBAAA,uBAAA3S,GAAA,GACAniD,KAAAsxE,GAAA,qBACA,IAAAoB,GAAA,GAAAnf,GAAA3J,KAAAzH,EACA,IAAAuwB,EAAAn0E,UACA,KAAAkM,OAAA,oFAEA,IAAAumD,GAAA,GAAAkf,GAAAe,UAAAyB,GACAC,EAAA3yE,KAAAowE,GAAAwC,QAAA5hB,EAEA,OADA0X,GAAA4H,GAAAqC,GACA,GAAAjK,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwwB,GAAA,IAMAjK,EAAAxuE,UAAA24E,WAAA,WACA7tB,EAAA3lD,iBAAA,uBAAAyB,UAAAhH,QACAkG,KAAAsxE,GAAA,mBACA,IAAAqB,GAAA3yE,KAAAowE,GAAAwC,QAAAzkB,EAAAqE,UAEA,OADAkW,GAAA4H,GAAAqC,GACA,GAAAjK,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwwB,GAAA,IAMAjK,EAAAxuE,UAAA44E,gBAAA,WACA9tB,EAAA3lD,iBAAA,4BAAAyB,UAAAhH,QACAkG,KAAAsxE,GAAA,wBACA,IAAAqB,GAAA3yE,KAAAowE,GAAAwC,QAAA1kB,EAAAJ,eAEA,OADA4a,GAAA4H,GAAAqC,GACA,GAAAjK,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwwB,GAAA,IAMAjK,EAAAxuE,UAAA64E,aAAA,WACA/tB,EAAA3lD,iBAAA,yBAAAyB,UAAAhH,QACAkG,KAAAsxE,GAAA,qBACA,IAAAqB,GAAA3yE,KAAAowE,GAAAwC,QAAA3C,EAAAiB,YAEA,OADAxI,GAAA4H,GAAAqC,GACA,GAAAjK,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwwB,GAAA,IAOAjK,EAAAxuE,UAAA84E,QAAA,SAAAt3E,EAAAhB,OACA,KAAAgB,IAA+BA,EAAA,MAC/BspD,EAAA3lD,iBAAA,oBAAAyB,UAAAhH,QACAqF,EAAA60D,wBAAA,kBAAAt4D,EAAAsE,KAAAmiD,MAAA,GACAhjD,EAAA01D,YAAA,kBAAAn6D,GAAA,EACA,IAAAi4E,GAAA3yE,KAAAowE,GAAA4C,QAAAt3E,EAAAhB,EAGA,IAFAguE,EAAAyI,GAAAwB,GACAjK,EAAA4H,GAAAqC,GACA3yE,KAAAowE,GAAAK,WACA,KAAAhmE,OAAA,yFAQA,YAJAxE,KAAAvK,IACAA,EAAA,KACAhB,EAAA,MAEA,GAAAguE,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwwB,EAAA3yE,KAAAqwE,KAOA3H,EAAAxuE,UAAA+4E,MAAA,SAAAv3E,EAAAhB,OACA,KAAAgB,IAA+BA,EAAA,MAC/BspD,EAAA3lD,iBAAA,kBAAAyB,UAAAhH,QACAqF,EAAA60D,wBAAA,gBAAAt4D,EAAAsE,KAAAmiD,MAAA,GACAhjD,EAAA01D,YAAA,gBAAAn6D,GAAA,EACA,IAAAi4E,GAAA3yE,KAAAowE,GAAA6C,MAAAv3E,EAAAhB,EAGA,IAFAguE,EAAAyI,GAAAwB,GACAjK,EAAA4H,GAAAqC,GACA3yE,KAAAowE,GAAAO,SACA,KAAAlmE,OAAA,mFAGA,WAAAi+D,GAAA1oE,KAAAmnE,KAAAnnE,KAAAmiD,KAAAwwB,EAAA3yE,KAAAqwE,KASA3H,EAAAxuE,UAAAg5E,QAAA,SAAAx3E,EAAAhB,GAIA,GAHAsqD,EAAA3lD,iBAAA,oBAAAyB,UAAAhH,QACAqF,EAAA60D,wBAAA,kBAAAt4D,EAAAsE,KAAAmiD,MAAA,GACAhjD,EAAA01D,YAAA,kBAAAn6D,GAAA,GACAsF,KAAAowE,GAAAK,WACA,KAAAhmE,OAAA,yFAGA,IAAAzK,KAAAowE,GAAAO,SACA,KAAAlmE,OAAA,qFAGA,OAAAzK,MAAAgzE,QAAAt3E,EAAAhB,GAAAu4E,MAAAv3E,EAAAhB,IAKAguE,EAAAxuE,UAAAgb,SAAA,WAEA,MADA8vC,GAAA3lD,iBAAA,qBAAAyB,UAAAhH,QACAkG,QAAAmnE,KAAAnnE,KAAAmiD,KAAAoI,sBAIAme,EAAAxuE,UAAAyhD,OAAA,WAGA,MADAqJ,GAAA3lD,iBAAA,mBAAAyB,UAAAhH,QACAkG,SAMA0oE,EAAAxuE,UAAAi5E,YAAA,WACA,MAAAnzE,MAAAowE,GAAAgD,kBAKA1K,EAAAxuE,UAAAm5E,gBAAA,WACA,GAAArrE,GAAAhI,KAAAmzE,cACA9/D,EAAA0xC,EAAA6C,kBAAA5/C,EACA,cAAAqL,EAAyB,UAAAA,GAOzBq1D,EAAAxuE,UAAAo5E,QAAA,SAAA7nB,GAEA,GADAzG,EAAA3lD,iBAAA,oBAAAyB,UAAAhH,UACA2xD,YAAAid,IAEA,KAAAj+D,OADA,uFAGA,IAAA8oE,GAAAvzE,KAAAmnE,OAAA1b,EAAA0b,KACAqM,EAAAxzE,KAAAmiD,KAAAqJ,OAAAC,EAAAtJ,MACAsxB,EAAAzzE,KAAAqzE,oBAAA5nB,EAAA4nB,iBACA,OAAAE,IAAAC,GAAAC,GAUA/K,EAAA+I,GAAA,SAAAz1D,EAAAm2D,EAAA/1D,GACA,GAAAhK,IAAmBw3B,OAAA,KAAAxtB,QAAA,KACnB,IAAA+1D,GAAA/1D,EACAhK,EAAAw3B,OAAAuoC,EACAntB,EAAA1lD,iBAAA0c,EAAA,EAAA5J,EAAAw3B,QAAA,GACAx3B,EAAAgK,UACA4oC,EAAAzlD,sBAAAyc,EAAA,EAAA5J,EAAAgK,SAAA,OAEA,IAAA+1D,EAEA,mBAAAA,IAAA,OAAAA,EAEA//D,EAAAgK,QAAA+1D,MAEA,sBAAAA,GAIA,KAAA1nE,OAAAu6C,EAAA5lD,YAAA4c,EAAA,MACA,yDAJA5J,GAAAw3B,OAAAuoC,EAOA,MAAA//D,IAEAnY,OAAAY,eAAA6tE,EAAAxuE,UAAA,OACAc,IAAA,WACA,MAAAgF,MAAAspE,UAEAvuE,YAAA,EACAD,cAAA,IAEA4tE,IAEAxvE,GAAAwvE,S9Bs7LM,SAAUvvE,EAAQD,EAASH,GAEjC,Y+B15MA,SAAAszD,GAAAv5C,GACAw5C,EAAAx5C,EANA7Y,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAGA4wD,GAHAxH,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,EAKAG,GAAAmzD,aAKAnzD,EAAA23D,iBAAA,SAAAkD,GACA,sBAAAA,GACA,UAAAhP,EAAAmD,sBAAA6L,GAEA,UAAAA,GAOA76D,EAAAy1D,qBAAA,SAAAf,GACA,GAAAA,EAAAoB,aAAA,CACA,GAAAl8C,GAAA86C,EAAA96C,KACAgyC,GAAAlpD,OAAA,gBAAAkX,IACA,gBAAAA,IACA,gBAAAA,IAAAkyC,EAAAlnD,SAAAgV,EAAA,mDAGAgyC,GAAAlpD,OAAAgyD,IAAAtB,GAAAsB,EAAArvD,UAAA,+BAGAumD,GAAAlpD,OAAAgyD,IAAAtB,GAAAsB,EAAAf,cAAAtuD,UAAA,wD/Bw7MM,SAAUpF,EAAQD,EAASH,GAEjC,YgC79MAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACAwzD,EAAAxzD,EAAA,IACAyzD,EAAAzzD,EAAA,GACA+rD,EAAA/rD,EAAA,GACAwjE,EAAAxjE,EAAA,IAMA26E,EAAA,SAAAr6D,GAEA,QAAAq6D,KACA,cAAAr6D,KAAA7W,MAAAxC,KAAAc,YAAAd,KAqDA,MAvDAmZ,GAAAtZ,UAAA6zE,EAAAr6D,GAOAq6D,EAAAx5E,UAAAyyD,QAAA,SAAAvoD,EAAAtE,GACA,GAAAitD,GAAA3oD,EAAA07B,KAAAktB,UAAAltD,EAAAggC,KACA,YAAAitB,EACAjI,EAAAwC,YAAAljD,EAAA1J,KAAAoF,EAAApF,MAGAqyD,GAMA2mB,EAAAx5E,UAAA+yD,YAAA,SAAAntB,GACA,UAKA4zC,EAAAx5E,UAAAgzD,oBAAA,SAAAC,EAAAC,GACA,OAAAD,EAAA3B,OAAA4B,IAKAsmB,EAAAx5E,UAAAmzD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAKAmmB,EAAAx5E,UAAAszD,QAAA,WACA,MAAAhB,GAAAc,UAAA6F,KAOAugB,EAAAx5E,UAAAwzD,SAAA,SAAAC,EAAAjzD,GACA,GAAAi5E,GAAApX,EAAAnQ,aAAAuB,EACA,WAAAnB,GAAAc,UAAA5yD,EAAAi5E,IAKAD,EAAAx5E,UAAAgb,SAAA,WACA,gBAEAw+D,GACCnnB,EAAAsB,MACD30D,GAAAw6E,aACAx6E,EAAAg4E,YAAA,GAAAwC,IhCq/MM,SAAUv6E,EAAQD,EAASH,GAEjC,YiC7jNAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAMAk4E,GANA9uB,EAAA/rD,EAAA,GACAm/D,EAAAn/D,EAAA,IACAgsD,EAAAhsD,EAAA,GACAyzD,EAAAzzD,EAAA,GACAm1D,EAAAn1D,EAAA,GACAo1D,EAAAp1D,EAAA,IAEA86E,KAOA/kB,EAAA,WACA,QAAAA,GAAAglB,EAAAC,GACA/zE,KAAA8zE,KACA9zE,KAAA+zE,KA8IA,MA5IA95E,QAAAY,eAAAi0D,EAAA,WAMA9zD,IAAA,WAKA,MAJA8pD,GAAAlpD,OAAAi4E,GAAA3lB,EAAAJ,eAAA,uCACA8lB,EACAA,GACA,GAAA9kB,IAAkCyJ,YAAAsb,IAAiCtb,YAAArK,EAAAJ,kBAGnE/yD,YAAA,EACAD,cAAA,IAOAg0D,EAAA50D,UAAAc,IAAA,SAAAg5E,GACA,GAAAC,GAAAlvB,EAAArmD,QAAAsB,KAAA8zE,GAAAE,EACA,KAAAC,EACA,KAAAxpE,OAAA,wBAAAupE,EACA,OAAAC,KAAAJ,EAGA,KAGAI,GAOAnlB,EAAA50D,UAAAu4D,SAAA,SAAAnB,GACA,MAAAvM,GAAAjnD,SAAAkC,KAAA+zE,GAAAziB,OAOAxC,EAAA50D,UAAAw4D,SAAA,SAAApB,EAAA4iB,GACApvB,EAAAlpD,OAAA01D,IAAAnD,EAAAqE,UAAA,sEAKA,KAJA,GAAA2hB,MACAC,GAAA,EACAC,EAAAH,EAAApiB,YAAAtF,EAAAc,UAAA2E,MACA7vD,EAAAiyE,EAAAliB,UACA/vD,GACAgyE,EACAA,GAAA9iB,EAAArE,YAAA7qD,EAAA09B,MACAq0C,EAAAn6E,KAAAoI,GACAA,EAAAiyE,EAAAliB,SAEA,IAAAmiB,EAEAA,GADAF,EACAlc,EAAAC,cAAAgc,EAAA7iB,EAAAgH,cAGAub,CAEA,IAAAU,GAAAjjB,KACAkjB,EAAAzvB,EAAAlnD,MAAAmC,KAAA+zE,GACAS,GAAAD,GAAAjjB,CACA,IAAAmjB,GAAA1vB,EAAAlnD,MAAAmC,KAAA8zE,GAEA,OADAW,GAAAF,GAAAD,EACA,GAAAxlB,GAAA2lB,EAAAD,IAQA1lB,EAAA50D,UAAA81D,aAAA,SAAAN,EAAAwkB,GACA,GAAAhrE,GAAAlJ,IAkCA,WAAA8uD,GAjCA/J,EAAAtmD,IAAAuB,KAAA8zE,GAAA,SAAAY,EAAAH,GACA,GAAAvjB,GAAAjM,EAAArmD,QAAAwK,EAAA6qE,GAAAQ,EAEA,IADAzvB,EAAAlpD,OAAAo1D,EAAA,oCAAAujB,GACAG,IAAAb,EAAA,CAEA,GAAA7iB,EAAA/D,YAAAyC,EAAA5vB,MAAA,CAKA,IAHA,GAAAq0C,MACAE,EAAAH,EAAApiB,YAAAtF,EAAAc,UAAA2E,MACA7vD,EAAAiyE,EAAAliB,UACA/vD,GACAA,EAAA1H,MAAAg1D,EAAAh1D,MACAy5E,EAAAn6E,KAAAoI,GAEAA,EAAAiyE,EAAAliB,SAGA,OADAgiB,GAAAn6E,KAAA01D,GACAwI,EAAAC,cAAAgc,EAAAnjB,EAAAsH,cAIA,MAAAub,GAIA,GAAAc,GAAAT,EAAAl5E,IAAA00D,EAAAh1D,MACAi1D,EAAA+kB,CAIA,OAHAC,KACAhlB,IAAApJ,OAAA,GAAAiG,GAAAc,UAAAoC,EAAAh1D,KAAAi6E,KAEAhlB,EAAAI,OAAAL,IAAA5vB,QAGA9/B,KAAA+zE,KAQAjlB,EAAA50D,UAAA41D,kBAAA,SAAAJ,EAAAwkB,GAiBA,UAAAplB,GAhBA/J,EAAAtmD,IAAAuB,KAAA8zE,GAAA,SAAAY,GACA,GAAAA,IAAAb,EAEA,MAAAa,EAGA,IAAAC,GAAAT,EAAAl5E,IAAA00D,EAAAh1D,KACA,OAAAi6E,GACAD,EAAAnuB,OAAA,GAAAiG,GAAAc,UAAAoC,EAAAh1D,KAAAi6E,IAIAD,IAIA10E,KAAA+zE,KAEAjlB,IAEA51D,GAAA41D,YjCqlNM,SAAU31D,EAAQD,EAASH,GAEjC,YkCzvNAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAsyD,GAAAj1D,EAAA,IACA67E,EAAA77E,EAAA,IACA87E,EAAAp/D,KAAA9L,IAAA,GAIAmrE,EAAA,WAIA,QAAAA,GAAAh7E,GAKAkG,KAAAowD,MAJA,SAAA2kB,GACA,MAAA5wD,UAAA1O,KAAA9L,IAAAorE,GAAAF,EAAA,KAGA/6E,EAAA,GACAkG,KAAAg1E,GAAAh1E,KAAAowD,MAAA,CACA,IAAA6kB,GAHA,SAAA7sB,GAAuC,MAAAjkC,UAAA5e,MAAA6iD,EAAA,GAAAh6C,KAAA,SAGvCpO,KAAAowD,MACApwD,MAAAk1E,GAAAp7E,EAAA,EAAAm7E,EAWA,MANAH,GAAA56E,UAAAi7E,aAAA,WAEA,GAAAv7E,KAAAoG,KAAAk1E,GAAA,GAAAl1E,KAAAg1E,GAEA,OADAh1E,MAAAg1E,KACAp7E,GAEAk7E,IAiBA57E,GAAAi/D,cAAA,SAAAgc,EAAA5oB,EAAA6pB,EAAAC,GACAlB,EAAAlkD,KAAAs7B,EACA,IAAA+pB,GAAA,SAAAC,EAAA94D,GACA,GACAizC,GACA9uD,EAFA9G,EAAA2iB,EAAA84D,CAGA,OAAAz7E,EACA,WAEA,OAAAA,EAGA,MAFA41D,GAAAykB,EAAAoB,GACA30E,EAAAw0E,IAAA1lB,KACA,GAAA1B,GAAA6M,SAAAj6D,EAAA8uD,EAAA5vB,KAAAkuB,EAAA6M,SAAAmB,MAAA,UAGA,IAAAwZ,GAAArxD,SAAArqB,EAAA,MAAAy7E,EACAjnD,EAAAgnD,EAAAC,EAAAC,GACApqB,EAAAkqB,EAAAE,EAAA,EAAA/4D,EAGA,OAFAizC,GAAAykB,EAAAqB,GACA50E,EAAAw0E,IAAA1lB,KACA,GAAA1B,GAAA6M,SAAAj6D,EAAA8uD,EAAA5vB,KAAAkuB,EAAA6M,SAAAmB,MAAA1tC,EAAA88B,IAyCAqqB,EAAA,GAAAX,GAAAX,EAAAr6E,QACA47E,EAvCA,SAAAD,GAuBA,OAtBA31C,GAAA,KACA41C,EAAA,KACA1kB,EAAAmjB,EAAAr6E,OACA67E,EAAA,SAAAC,EAAA9a,GACA,GAAAya,GAAAvkB,EAAA4kB,EACAn5D,EAAAu0C,CACAA,IAAA4kB,CACA,IAAA1L,GAAAoL,EAAAC,EAAA,EAAA94D,GACAizC,EAAAykB,EAAAoB,GACA30E,EAAAw0E,IAAA1lB,IACAmmB,GAAA,GAAA7nB,GAAA6M,SAAAj6D,EAAA8uD,EAAA5vB,KAAAg7B,EAAA,KAAAoP,KAEA2L,EAAA,SAAAC,GACAh2C,GACAA,EAAAxR,KAAAwnD,EACAh2C,EAAAg2C,IAGAJ,EAAAI,EACAh2C,EAAAg2C,IAGA18E,EAAA,EAAuBA,EAAAq8E,EAAArlB,QAAkBh3D,EAAA,CACzC,GAAA28E,GAAAN,EAAAN,eAEAS,EAAAngE,KAAA6yC,IAAA,EAAAmtB,EAAArlB,OAAAh3D,EAAA,GACA28E,GACAJ,EAAAC,EAAA5nB,EAAA6M,SAAAmB,QAIA2Z,EAAAC,EAAA5nB,EAAA6M,SAAAmB,OACA2Z,EAAAC,EAAA5nB,EAAA6M,SAAAE,MAGA,MAAA2a,IAGAD,EACA,WAAAb,GAAAhmB,UAAAymB,GAAA9pB,EAAAmqB,KlCkxNM,SAAUv8E,EAAQD,EAASH,GAEjC,YmCh4NA,SAAAq/D,GAAA9pC,EAAA88B,GACA,MAAAtG,GAAAwC,YAAAh5B,EAAA5zB,KAAA0wD,EAAA1wD,MAGA,QAAAm0D,GAAAvgC,EAAA88B,GACA,MAAAtG,GAAAwC,YAAAh5B,EAAA88B,GAPAnxD,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,EAIAG,GAAAk/D,uBAIAl/D,EAAA21D,mBnC05NM,SAAU11D,EAAQD,EAASH,GAEjC,YoCr6NAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAwzD,EAAAxzD,EAAA,IACAy+D,EAAAz+D,EAAA,GACAyzD,EAAAzzD,EAAA,GACAwjE,EAAAxjE,EAAA,IAMAk4E,EAAA,SAAA53D,GAEA,QAAA43D,GAAA+E,GACA,GAAA9sE,GAAAmQ,EAAA/f,KAAA0G,WAGA,OAFAkJ,GAAA8sE,KACAlxB,EAAAlpD,QAAAo6E,EAAAz3E,WAAA,cAAAy3E,EAAA9rB,WAAA,2DACAhhD,EAmDA,MAxDAiQ,GAAAtZ,UAAAoxE,EAAA53D,GAYA43D,EAAA/2E,UAAA+7E,aAAA,SAAAhV,GACA,MAAAA,GAAA5R,SAAArvD,KAAAg2E,KAKA/E,EAAA/2E,UAAA+yD,YAAA,SAAAntB,GACA,OAAAA,EAAAuvB,SAAArvD,KAAAg2E,IAAAz3E,WAKA0yE,EAAA/2E,UAAAyyD,QAAA,SAAAvoD,EAAAtE,GACA,GAAAo2E,GAAAl2E,KAAAi2E,aAAA7xE,EAAA07B,MACAq2C,EAAAn2E,KAAAi2E,aAAAn2E,EAAAggC,MACAitB,EAAAmpB,EAAAlpB,UAAAmpB,EACA,YAAAppB,EACAhI,EAAAuC,YAAAljD,EAAA1J,KAAAoF,EAAApF,MAGAqyD,GAMAkkB,EAAA/2E,UAAAwzD,SAAA,SAAAC,EAAAjzD,GACA,GAAAi5E,GAAApX,EAAAnQ,aAAAuB,GACA7tB,EAAA03B,EAAAlJ,aAAAP,WAAAkC,YAAAjwD,KAAAg2E,GAAArC,EACA,WAAAnnB,GAAAc,UAAA5yD,EAAAolC,IAKAmxC,EAAA/2E,UAAAszD,QAAA,WACA,GAAA1tB,GAAA03B,EAAAlJ,aAAAP,WAAAkC,YAAAjwD,KAAAg2E,GAAAxe,EAAAlL,SACA,WAAAE,GAAAc,UAAAvI,EAAAsC,SAAAvnB,IAKAmxC,EAAA/2E,UAAAgb,SAAA,WACA,MAAAlV,MAAAg2E,GAAAhjE,QAAA5E,KAAA,MAEA6iE,GACC1kB,EAAAsB,MACD30D,GAAA+3E,apC67NM,SAAU93E,EAAQD,EAASH,GAEjC,YqCvgOAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAw6D,EAAAx6D,EAAA,GACAyjE,EAAAzjE,EAAA,IACA0zD,EAAA1zD,EAAA,IACAwjE,EAAAxjE,EAAA,IACAm1D,EAAAn1D,EAAA,EAMAG,GAAAsnE,mBAAA,SAAAttD,GAGA,MAFAA,SACAA,EAAA,UAAAA,EAAA,eAAAgE,OAAAE,UACAlE,GASAha,EAAAk9E,qBAAA,SAAA16E,EAAAmmE,GACA,MAAAnmE,IAAA,gBAAAA,IAIAopD,EAAAlpD,OAAA,OAAAF,GAAA,6CACAmmE,EAAAnmE,EAAA,SAJAA,GAcAxC,EAAAgqE,yBAAA,SAAA0G,EAAA/H,GACA,GAAAwU,GAAA,GAAA7Z,GAAAqB,kBAIA,OAHA+L,GAAAzG,YAAA,GAAA5P,GAAA3J,KAAA,aAAAzH,EAAAriB,GACAu2C,EAAA5S,SAAAthB,EAAAjpD,EAAA6oE,6BAAAjiC,EAAA+hC,MAEAwU,GAUAn9E,EAAA6oE,6BAAA,SAAAjiC,EAAA+hC,GACA,GAEAzU,GAFAkpB,EAAAx2C,EAAA+sB,cAAA/5C,MACAihD,EAAA76D,EAAAk9E,qBAAAE,EAAAzU,EAEA,IAAA/hC,EAAAkvB,aAAA,CACA,GAAAunB,GAAAz2C,EACApkC,EAAAxC,EAAAk9E,qBAAAG,EAAA1c,WAAAgI,EACA,OAAAnmE,KAAA66E,EAAA1c,YACA9F,IAAAwiB,EAAA1pB,cAAA/5C,MACA,GAAA25C,GAAAgB,SAAA/xD,EAAA6gE,EAAAnQ,aAAA2H,IAGAj0B,EAIA,GAAA02C,GAAA12C,CAWA,OAVAstB,GAAAopB,EACAziB,IAAAyiB,EAAA3pB,cAAA/5C,QACAs6C,IAAA6B,eAAA,GAAAxC,GAAAgB,SAAAsG,KAEAyiB,EAAA/lB,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAsB,GACA,GAAAjB,GAAAv2D,EAAA6oE,6BAAArR,EAAAmR,EACApS,KAAAiB,IACAtD,IAAAoC,qBAAAJ,EAAAK,MAGArC,IrCiiOM,SAAUj0D,EAAQD,EAASH,GAEjC,YsCrnOAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA63D,GAAAx6D,EAAA,GACAm1D,EAAAn1D,EAAA,GACA09E,EAAA19E,EAAA,IAMA8kE,EAAA,WACA,QAAAA,KAKA79D,KAAA25D,EAAA,KAKA35D,KAAAuuD,EAAA,KAuIA,MA/HAsP,GAAA3jE,UAAAyc,KAAA,SAAAwrC,GACA,SAAAniD,KAAA25D,EACA,MAAA35D,MAAA25D,EAAAtK,SAAAlN,EAEA,IAAAA,EAAA5jD,WAAA,MAAAyB,KAAAuuD,EAYA,WAXA,IAAAsI,GAAA1U,EAAA+H,UAEA,OADA/H,KAAAiI,WACApqD,KAAAuuD,EAAAzwD,SAAA+4D,GACA72D,KAAAuuD,EAAAvzD,IAAA67D,GACAlgD,KAAAwrC,GAGA,MAcA0b,EAAA3jE,UAAAupE,SAAA,SAAAthB,EAAAzxC,GACA,GAAAyxC,EAAA5jD,UACAyB,KAAA25D,EAAAjpD,EACA1Q,KAAAuuD,EAAA,SAEA,WAAAvuD,KAAA25D,EACA35D,KAAA25D,EAAA35D,KAAA25D,EAAA1J,YAAA9N,EAAAzxC,OAEA,CACA,MAAA1Q,KAAAuuD,IACAvuD,KAAAuuD,EAAA,GAAAkoB,GAAAC,WAEA,IAAA7f,GAAA1U,EAAA+H,UACAlqD,MAAAuuD,EAAAzwD,SAAA+4D,IACA72D,KAAAuuD,EAAArtC,IAAA21C,EAAA,GAAAgH,GAEA,IAAAlT,GAAA3qD,KAAAuuD,EAAAvzD,IAAA67D,EACA1U,KAAAiI,WACAO,EAAA8Y,SAAAthB,EAAAzxC,KASAmtD,EAAA3jE,UAAAopE,OAAA,SAAAnhB,GACA,GAAAA,EAAA5jD,UAGA,MAFAyB,MAAA25D,EAAA,KACA35D,KAAAuuD,EAAA,MACA,CAGA,WAAAvuD,KAAA25D,EAAA,CACA,GAAA35D,KAAA25D,EAAA3K,aAEA,QAGA,IAAAtzD,GAAAsE,KAAA25D,CACA35D,MAAA25D,EAAA,IACA,IAAAgd,GAAA32E,IAIA,OAHAtE,GAAA+0D,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAAgpE,GACA+M,EAAAlT,SAAA,GAAAlQ,GAAA3J,KAAAhpD,GAAAgpE,KAEA5pE,KAAAsjE,OAAAnhB,GAGA,UAAAniD,KAAAuuD,EAAA,CACA,GAAAsI,GAAA1U,EAAA+H,UAQA,OAPA/H,KAAAiI,WACApqD,KAAAuuD,EAAAzwD,SAAA+4D,IACA72D,KAAAuuD,EAAAvzD,IAAA67D,GAAAyM,OAAAnhB,IAEAniD,KAAAuuD,EAAAhI,OAAAsQ,KAGA72D,KAAAuuD,EAAAhwD,YACAyB,KAAAuuD,EAAA,MACA,GAOA,UAWAsP,EAAA3jE,UAAAipE,YAAA,SAAAyT,EAAAC,GACA,OAAA72E,KAAA25D,EACAkd,EAAAD,EAAA52E,KAAA25D,GAGA35D,KAAAywD,aAAA,SAAA7vD,EAAAgpE,GACA,GAAAznB,GAAA,GAAAoR,GAAA3J,KAAAgtB,EAAA,IAAAh2E,EACAgpE,GAAAzG,YAAAhhB,EAAA00B,MASAhZ,EAAA3jE,UAAAu2D,aAAA,SAAAomB,GACA,OAAA72E,KAAAuuD,GACAvuD,KAAAuuD,EAAAvG,KAAA,SAAApnD,EAAAgpE,GACAiN,EAAAj2E,EAAAgpE,MAIA/L,IAEA3kE,GAAA2kE,sBtC6oOM,SAAU1kE,EAAQD,EAASH,GAEjC,YuC5yOAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAMA29E,EAAA,WACA,QAAAA,KACA12E,KAAAsoB,OAkEA,MA5DAouD,GAAAx8E,UAAAgnB,IAAA,SAAAnN,EAAAjB,GACA9S,KAAAsoB,IAAAvU,GAAA,OAAAjB,MAMA4jE,EAAAx8E,UAAA4D,SAAA,SAAA8C,GACA,MAAAkkD,GAAAhnD,SAAAkC,KAAAsoB,IAAA1nB,IAMA81E,EAAAx8E,UAAAc,IAAA,SAAA+Y,GACA,MAAA/T,MAAAlC,SAAAiW,GAAA/T,KAAAsoB,IAAAvU,OAAA9N,IAKAywE,EAAAx8E,UAAAqsD,OAAA,SAAAxyC,SACA/T,MAAAsoB,IAAAvU,IAKA2iE,EAAAx8E,UAAA+/C,MAAA,WACAj6C,KAAAsoB,QAMAouD,EAAAx8E,UAAAqE,QAAA,WACA,MAAAumD,GAAAvmD,QAAAyB,KAAAsoB,MAKAouD,EAAAx8E,UAAAk2D,MAAA,WACA,MAAAtL,GAAAzmD,SAAA2B,KAAAsoB,MAMAouD,EAAAx8E,UAAA8tD,KAAA,SAAAr3C,GACAm0C,EAAA3mD,QAAA6B,KAAAsoB,IAAA,SAAArjB,EAAArC,GAAkD,MAAA+N,GAAA1L,EAAArC,MAMlD8zE,EAAAx8E,UAAAmM,KAAA,WACA,GAAAA,KAIA,OAHAy+C,GAAA3mD,QAAA6B,KAAAsoB,IAAA,SAAArjB,GACAoB,EAAArM,KAAAiL,KAEAoB,GAEAqwE,IAEAx9E,GAAAw9E,cvCo0OM,SAAUv9E,EAAQD,EAASH,GAEjC,YwCn5OAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAo7E,GAAA/9E,EAAA,GACAw6D,EAAAx6D,EAAA,GAQAg+E,EAAA,WACA,QAAAA,GAAAlhE,EAAAssC,EAAA8e,GACAjhE,KAAA6V,SACA7V,KAAAmiD,OACAniD,KAAAihE,OAEAjhE,KAAAqkB,KAAAyyD,EAAAjhB,cAAAmhB,UAUA,MARAD,GAAA78E,UAAA+8E,kBAAA,SAAA7nB,GACA,MAAApvD,MAAAmiD,KAAA5jD,UACA,GAAAw4E,GAAA/2E,KAAA6V,OAAA09C,EAAA3J,KAAAwZ,MAAApjE,KAAAihE,KAAA9R,kBAAAC,IAGA,GAAA2nB,GAAA/2E,KAAA6V,OAAA7V,KAAAmiD,KAAAiI,WAAApqD,KAAAihE,OAGA8V,IAEA79E,GAAA69E,axC26OM,SAAU59E,EAAQD,EAASH,GAEjC,YyCz8OAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAMAitE,GANAuO,EAAAn+E,EAAA,IACAy+D,EAAAz+D,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAo+E,EAAAp+E,EAAA,IACAq+E,EAAAr+E,EAAA,IAYA6vE,EAAA,WACA,QAAAA,KAUA5oE,KAAAq3E,MAwMA,MAtMAp9E,QAAAY,eAAA+tE,EAAA,0BACA5tE,IAAA,WAEA,MADA8pD,GAAAlpD,OAAA+sE,EAAA,oCACAA,GAEArgD,IAAA,SAAAxV,GACAgyC,EAAAlpD,QAAA+sE,EAAA,mDACAA,EAAA71D,GAEA/X,YAAA,EACAD,cAAA,IAKA8tE,EAAA1uE,UAAAqE,QAAA,WACA,MAAAwmD,GAAAxmD,QAAAyB,KAAAq3E,KASAzO,EAAA1uE,UAAAo9E,eAAA,SAAA52B,EAAA62B,EAAAC,GACA,GAAAvhB,GAAAvV,EAAA7qC,OAAAogD,OACA,WAAAA,EAAA,CACA,GAAAwhB,GAAA1yB,EAAArmD,QAAAsB,KAAAq3E,GAAAphB,EAEA,OADAnR,GAAAlpD,OAAA,MAAA67E,EAAA,gDACAA,EAAAH,eAAA52B,EAAA62B,EAAAC,GAGA,GAAAE,KAIA,OAHA3yB,GAAA5mD,QAAA6B,KAAAq3E,GAAA,SAAAz2E,EAAA62E,GACAC,IAAAzzE,OAAAwzE,EAAAH,eAAA52B,EAAA62B,EAAAC,MAEAE,GAaA9O,EAAA1uE,UAAA6pE,qBAAA,SAAA7a,EAAA4a,EAAAyT,EAAAI,EAAAC,GACA,GAAA3hB,GAAA/M,EAAAmqB,kBACAoE,EAAA1yB,EAAArmD,QAAAsB,KAAAq3E,GAAAphB,EACA,KAAAwhB,EAAA,CAEA,GAAAI,GAAAN,EAAAO,uBAAAF,EAAAD,EAAA,MACAI,GAAA,CACAF,GACAE,GAAA,EAEAJ,YAAAngB,GAAAlJ,cACAupB,EAAAN,EAAAS,0BAAAL,GACAI,GAAA,IAGAF,EAAArgB,EAAAlJ,aAAAP,WACAgqB,GAAA,EAEA,IAAAE,GAAA,GAAAd,GAAAe,UAAA,GAAAhB,GAAAhS,UAC6B,EAAA6S,GAAA,MAAAb,GAAAhS,UACA,EAAA0S,GAAA,GAC7BH,GAAA,GAAAL,GAAAe,KAAAjvB,EAAA+uB,GACAj4E,KAAAq3E,GAAAphB,GAAAwhB,EAIA,MADAA,GAAA1T,qBAAAD,GACA2T,EAAAW,iBAAAtU,IAaA8E,EAAA1uE,UAAAgqE,wBAAA,SAAAhb,EAAA4a,EAAAuU,GACA,GAAApiB,GAAA/M,EAAAmqB,kBACAiF,KACAC,KACAC,EAAAx4E,KAAAy4E,iBACA,gBAAAxiB,EAAA,CAEA,GAAA0gB,GAAA32E,IACA+kD,GAAA5mD,QAAA6B,KAAAq3E,GAAA,SAAAqB,EAAAjB,GACAc,IAAAt0E,OAAAwzE,EAAAvT,wBAAAJ,EAAAuU,IACAZ,EAAAl5E,kBACAo4E,GAAAU,GAAAqB,GAEAjB,EACAkB,WACApH,iBACAqH,gBACAN,EAAAt+E,KAAAy9E,EAAAkB,mBAKA,CAEA,GAAAlB,GAAA1yB,EAAArmD,QAAAsB,KAAAq3E,GAAAphB,EACAwhB,KACAc,IAAAt0E,OAAAwzE,EAAAvT,wBAAAJ,EAAAuU,IACAZ,EAAAl5E,kBACAyB,MAAAq3E,GAAAphB,GAEAwhB,EACAkB,WACApH,iBACAqH,gBACAN,EAAAt+E,KAAAy9E,EAAAkB,cASA,MAJAH,KAAAx4E,KAAAy4E,mBAEAH,EAAAt+E,KAAA,GAAA4uE,GAAAD,uBAAAzf,EAAAie,KAAAje,EAAA/G,QAEgBm2B,UAAAtY,OAAAuY,IAKhB3P,EAAA1uE,UAAA2+E,cAAA,WACA,GAAA3vE,GAAAlJ,IAEA,OADA/F,QAAAoM,KAAArG,KAAAq3E,IAAA54E,IAAA,SAAAmC,GAAkE,MAAAsI,GAAAmuE,GAAAz2E,KAClEkI,OAAA,SAAA2uE,GACA,OAAAA,EACAkB,WACApH,iBACAqH,kBAQAhQ,EAAA1uE,UAAA4+E,uBAAA,SAAA32B,GACA,GAAAw1B,GAAA,IAIA,OAHA5yB,GAAA5mD,QAAA6B,KAAAq3E,GAAA,SAAAz2E,EAAA62E,GACAE,KAAAF,EAAAqB,uBAAA32B,KAEAw1B,GAMA/O,EAAA1uE,UAAA6+E,aAAA,SAAA7vB,GAEA,GADAA,EAAAqoB,iBACAqH,eACA,MAAA54E,MAAAg5E,iBAGA,IAAA/iB,GAAA/M,EAAAmqB,iBACA,OAAAtuB,GAAArmD,QAAAsB,KAAAq3E,GAAAphB,IAOA2S,EAAA1uE,UAAA++E,mBAAA,SAAA/vB,GACA,aAAAlpD,KAAA+4E,aAAA7vB,IAKA0f,EAAA1uE,UAAAu+E,gBAAA,WACA,aAAAz4E,KAAAg5E,mBAKApQ,EAAA1uE,UAAA8+E,gBAAA,WAOA,MANAj0B,GAAA7mD,UAAA8B,KAAAq3E,GAAA,SAAAI,GACA,MAAAA,GACAkB,WACApH,iBACAqH,kBAEA,MAEAhQ,IAEA1vE,GAAA0vE,azCi+OM,SAAUzvE,EAAQD,EAASH,GAEjC,Y0C1sPAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA87D,GAAAz+D,EAAA,GACAm+E,EAAAn+E,EAAA,IAQAm/E,EAAA,WAMA,QAAAA,GAAAgB,EAAAC,GACAn5E,KAAAk5E,KACAl5E,KAAAm5E,KAyDA,MAjDAjB,GAAAh+E,UAAAk/E,gBAAA,SAAAC,EAAA39D,EAAA49D,GACA,UAAApB,GAAA,GAAAhB,GAAAhS,UAAAmU,EAAA39D,EAAA49D,GAAAt5E,KAAAm5E,KAQAjB,EAAAh+E,UAAAq/E,iBAAA,SAAAC,EAAA99D,EAAA49D,GACA,UAAApB,GAAAl4E,KAAAk5E,GAAA,GAAAhC,GAAAhS,UAAAsU,EAAA99D,EAAA49D,KAKApB,EAAAh+E,UAAAu/E,cAAA,WACA,MAAAz5E,MAAAk5E,IAKAhB,EAAAh+E,UAAAw/E,qBAAA,WACA,MAAA15E,MAAAk5E,GAAA5T,qBACAtlE,KAAAk5E,GAAAxZ,UACA,MAKAwY,EAAAh+E,UAAAy/E,eAAA,WACA,MAAA35E,MAAAm5E,IAKAjB,EAAAh+E,UAAA0/E,sBAAA,WACA,MAAA55E,MAAAm5E,GAAA7T,qBACAtlE,KAAAm5E,GAAAzZ,UACA,MAMAwY,EAAA9U,MAAA,GAAA8U,GAAA,GAAAhB,GAAAhS,UAAA1N,EAAAlJ,aAAAP,YACA,GACA,MAAAmpB,GAAAhS,UAAA1N,EAAAlJ,aAAAP,YACA,GACA,IACAmqB,IAEAh/E,GAAAg/E,a1CkuPM,SAAU/+E,EAAQD,EAASH,GAEjC,Y2CjzPAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAOAurE,EAAA,WACA,QAAAA,GAAAuV,GACA75E,KAAA65E,KACA75E,KAAA85E,GAAA,KAaA,MAXAxV,GAAApqE,UAAAc,IAAA,WACA,GAAA++E,GAAA/5E,KAAA65E,GAAA7+E,MACAg/E,EAAAl1B,EAAAjnD,MAAAk8E,EAOA,OANA/5E,MAAA85E,IACAh1B,EAAA3mD,QAAA6B,KAAA85E,GAAA,SAAAnV,EAAAjpE,GACAs+E,EAAArV,GAAAqV,EAAArV,GAAAjpE,IAGAsE,KAAA85E,GAAAC,EACAC,GAEA1V,IAEAprE,GAAAorE,iB3Cy0PM,SAAUnrE,EAAQD,EAASH,GAEjC,Y4Cr2PAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACAkhF,EAAAlhF,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GACAksD,EAAAlsD,EAAA,GACAw6D,EAAAx6D,EAAA,GACAmhF,EAAAnhF,EAAA,KACAohF,EAAAphF,EAAA,KACAmsD,EAAAnsD,EAAA,GACAqhF,EAAArhF,EAAA,IACAosD,EAAApsD,EAAA,GACAssD,EAAAtsD,EAAA,GACAshF,EAAAthF,EAAA,IACAuhF,EAAA,IACAC,EAAA,IAaA9b,EAAA,SAAAplD,GAWA,QAAAolD,GAAArB,EAAAkB,EAAAC,EAAAG,EAAA8b,EAAAC,GACA,GAAAvxE,GAAAmQ,EAAA/f,KAAA0G,WAwCA,IAvCAkJ,EAAAk0D,IACAl0D,EAAAo1D,KACAp1D,EAAAq1D,KACAr1D,EAAAw1D,KACAx1D,EAAAsxE,KACAtxE,EAAAuxE,KAEAvxE,EAAAmK,GAAAorD,EAAAic,KACAxxE,EAAA04D,GAAA3c,EAAAuB,WAAA,KAAAt9C,EAAAmK,GAAA,KAEAnK,EAAAyxE,MACAzxE,EAAA0xE,MACA1xE,EAAA2xE,MACA3xE,EAAA4xE,GAAA,EACA5xE,EAAA6xE,MACA7xE,EAAA8xE,IAAA,EACA9xE,EAAA+xE,GAAAX,EACApxE,EAAAgyE,GAAAX,EACArxE,EAAAiyE,GAAA,KACAjyE,EAAAkyE,cAAA,KAEAlyE,EAAAmyE,GAAA,KAEAnyE,EAAAoyE,IAAA,EAEApyE,EAAAqyE,MACAryE,EAAAsyE,GAAA,EAKAtyE,EAAAuyE,GAAA,KAEAvyE,EAAAwyE,GAAA,KACAxyE,EAAAyyE,IAAA,EACAzyE,EAAA0yE,GAAA,EACA1yE,EAAA2yE,IAAA,EACA3yE,EAAA4yE,GAAA,KACA5yE,EAAA6yE,GAAA,KACAtB,IAAAp1B,EAAAxoD,YACA,KAAA4N,OAAA,iFAOA,OALAvB,GAAA8yE,GAAA,GACA9B,EAAA+B,kBAAAvP,cAAApgE,GAAA,UAAApD,EAAAgzE,GAAAhzE,IACA,IAAAk0D,EAAA18C,KAAAngB,QAAA,YACA45E,EAAAgC,cAAAzP,cAAApgE,GAAA,SAAApD,EAAAkzE,GAAAlzE,GAEAA,EAkrBA,MA7uBAiQ,GAAAtZ,UAAA4+D,EAAAplD,GAmEAolD,EAAAvkE,UAAAmiF,YAAA,SAAA1qB,EAAAjvD,EAAA45E,GACA,GAAAC,KAAAv8E,KAAAw7E,GACAgB,GAAmBz7E,EAAAw7E,EAAAn4E,EAAAutD,EAAA7xD,EAAA4C,EACnB1C,MAAA4hE,GAAA7c,EAAA1nD,UAAAm/E,IACAx3B,EAAAppD,OAAAoE,KAAAg7E,GAAA,0DACAh7E,KAAAy7E,GAAAY,YAAAG,GACAF,IACAt8E,KAAAu7E,GAAAgB,GAAAD,IAMA7d,EAAAvkE,UAAA6lE,OAAA,SAAA7W,EAAAqW,EAAAD,EAAAE,GACA,GAAAvJ,GAAA/M,EAAAmqB,kBACA/oB,EAAApB,KAAA/G,IACAniD,MAAA4hE,GAAA,qBAAAtX,EAAA,IAAA2L,GACAj2D,KAAA46E,GAAAtwB,GAAAtqD,KAAA46E,GAAAtwB,OACAtF,EAAAppD,OAAAstD,EAAAqoB,iBAAAkL,cACAvzB,EAAAqoB,iBAAAqH,eAAA,sDACA5zB,EAAAppD,QAAAoE,KAAA46E,GAAAtwB,GAAA2L,GAAA,+CACA,IAAAymB,IACAld,aACAmd,OAAApd,EACArW,QACAoW,MAEAt/D,MAAA46E,GAAAtwB,GAAA2L,GAAAymB,EACA18E,KAAAg7E,IACAh7E,KAAA48E,GAAAF,IAUAje,EAAAvkE,UAAA0iF,GAAA,SAAAF,GACA,GAAAxzE,GAAAlJ,KACAkpD,EAAAwzB,EAAAxzB,MACAoB,EAAApB,KAAA/G,KACA8T,EAAA/M,EAAAmqB,iBACArzE,MAAA4hE,GAAA,aAAAtX,EAAA,QAAA2L,EACA,IAAA4mB,IAAmBxhF,EAAAivD,EAGnBoyB,GAAApd,MACAud,EAAA,EAAA3zB,EAAAiqB,cACA0J,EAAA,EAAAH,EAAApd,KAEAud,EAAA,EAAAH,EAAAC,SACA38E,KAAAq8E,YAPA,IAOAQ,EAAA,SAAAvvE,GACA,GAAAwvE,GAAAxvE,EAAA,EACAotB,EAAAptB,EAAA,CAEAmxD,GAAAse,GAAAD,EAAA5zB,IACAhgD,EAAA0xE,GAAAtwB,IAAAphD,EAAA0xE,GAAAtwB,GAAA2L,MAEAymB,IACAxzE,EAAA04D,GAAA,kBAAAt0D,GACA,OAAAotB,GACAxxB,EAAA8zE,GAAA1yB,EAAA2L,GAEAymB,EAAAld,YACAkd,EAAAld,WAAA9kC,EAAAoiD,OAUAre,EAAAse,GAAA,SAAAD,EAAA5zB,GACA,GAAA4zB,GAAA,gBAAAA,IAAAh4B,EAAAhnD,SAAAg/E,EAAA,MACA,GAAAG,GAAAn4B,EAAApmD,QAAAo+E,EAAA,IACA,IAAAv3E,MAAAsJ,QAAAouE,OAAA18E,QAAA,aACA,GAAA28E,GAAA,gBACAh0B,EACAqoB,iBACAzF,WAEA,IACAqR,EAAAj0B,KAAA/G,IACA8C,GAAA9xC,KAAA,wGACA+pE,EAAA,OACAC,EAAA,sDAOA1e,EAAAvkE,UAAA0kE,iBAAA,SAAAxmD,GACApY,KAAA07E,GAAAtjE,EACApY,KAAA4hE,GAAA,wBACA5hE,KAAA07E,GACA17E,KAAAo9E,UAKAp9E,KAAAg7E,IACAh7E,KAAAq8E,YAAA,YAA6C,cAG7Cr8E,KAAAq9E,GAAAjlE,IAMAqmD,EAAAvkE,UAAAmjF,GAAA,SAAAzlD,IAGAA,GAAA,KAAAA,EAAA99B,QACAorD,EAAA1nD,QAAAo6B,MACA53B,KAAA4hE,GAAA,iEACA5hE,KAAAk7E,GAzMA,MAgNAzc,EAAAvkE,UAAAkjF,QAAA,WACA,GAAAl0E,GAAAlJ,IACA,IAAAA,KAAAg7E,IAAAh7E,KAAA07E,GAAA,CACA,GAAA4B,GAAAt9E,KAAA07E,GACA6B,EAAAr4B,EAAAxnD,cAAA4/E,GAAA,eACAE,GAA+BnoB,KAAAioB,EAC/B,QAAAt9E,KAAAy6E,GACA+C,EAAA,UAEA,gBAAAx9E,MAAAy6E,KACA+C,EAAA,QAAAx9E,KAAAy6E,IAEAz6E,KAAAq8E,YAAAkB,EAAAC,EAAA,SAAAxsE,GACA,GAAA0pB,GAAA1pB,EAAA,EACAN,EAAAM,EAAA,UACA9H,GAAAwyE,KAAA4B,IACA,OAAA5iD,EACAxxB,EAAA0yE,GAAA,EAIA1yE,EAAAu0E,GAAA/iD,EAAAhqB,QASA+tD,EAAAvkE,UAAAgmE,SAAA,SAAAhX,EAAAoW,GACA,GAAAhV,GAAApB,KAAA/G,KACA8T,EAAA/M,EAAAmqB,iBACArzE,MAAA4hE,GAAA,uBAAAtX,EAAA,IAAA2L,GACAjR,EAAAppD,OAAAstD,EAAAqoB,iBAAAkL,cACAvzB,EAAAqoB,iBAAAqH,eAAA,wDACA54E,KAAAg9E,GAAA1yB,EAAA2L,IACAj2D,KAAAg7E,IACAh7E,KAAA09E,GAAApzB,EAAA2L,EAAA/M,EAAAiqB,cAAA7T,IAGAb,EAAAvkE,UAAAwjF,GAAA,SAAApzB,EAAA2L,EAAA0nB,EAAAre,GACAt/D,KAAA4hE,GAAA,eAAAtX,EAAA,QAAA2L,EACA,IAAA4mB,IAAmBxhF,EAAAivD,EAGnBgV,KACAud,EAAA,EAAAc,EACAd,EAAA,EAAAvd,GAEAt/D,KAAAq8E,YANA,IAMAQ,IAKApe,EAAAvkE,UAAAspE,gBAAA,SAAAlZ,EAAA55C,EAAA8uD,GACAx/D,KAAAg7E,GACAh7E,KAAA49E,GAAA,IAAAtzB,EAAA55C,EAAA8uD,GAGAx/D,KAAA+6E,GAAA/gF,MACAswD,aACAqH,OAAA,IACAjhD,OACA8uD,gBAOAf,EAAAvkE,UAAA0pE,kBAAA,SAAAtZ,EAAA55C,EAAA8uD,GACAx/D,KAAAg7E,GACAh7E,KAAA49E,GAAA,KAAAtzB,EAAA55C,EAAA8uD,GAGAx/D,KAAA+6E,GAAA/gF,MACAswD,aACAqH,OAAA,KACAjhD,OACA8uD,gBAOAf,EAAAvkE,UAAAmpE,mBAAA,SAAA/Y,EAAAkV,GACAx/D,KAAAg7E,GACAh7E,KAAA49E,GAAA,KAAAtzB,EAAA,KAAAkV,GAGAx/D,KAAA+6E,GAAA/gF,MACAswD,aACAqH,OAAA,KACAjhD,KAAA,KACA8uD,gBAIAf,EAAAvkE,UAAA0jF,GAAA,SAAAjsB,EAAArH,EAAA55C,EAAA8uD,GACA,GAAAl/B,IAAuBjlC,EAAAivD,EAAA7vD,EAAAiW,EACvB1Q,MAAA4hE,GAAA,gBAAAjQ,EAAArxB,GACAtgC,KAAAq8E,YAAA1qB,EAAArxB,EAAA,SAAAwhB,GACA0d,GACA52D,WAAA,WACA42D,EAAA1d,EAAA,EAAAA,EAAA,IACiBrsC,KAAAoD,MAAA,OAOjB4lD,EAAAvkE,UAAAqpD,IAAA,SAAA+G,EAAA55C,EAAA8uD,EAAA7O,GACA3wD,KAAA69E,YAAA,IAAAvzB,EAAA55C,EAAA8uD,EAAA7O,IAKA8N,EAAAvkE,UAAA6oE,MAAA,SAAAzY,EAAA55C,EAAA8uD,EAAA7O,GACA3wD,KAAA69E,YAAA,IAAAvzB,EAAA55C,EAAA8uD,EAAA7O,IAEA8N,EAAAvkE,UAAA2jF,YAAA,SAAAlsB,EAAArH,EAAA55C,EAAA8uD,EAAA7O,GACA,GAAArwB,IACAjlC,EAAAivD,EACA7vD,EAAAiW,OAEAzK,KAAA0qD,IACArwB,EAAA,EAAAqwB,GAEA3wD,KAAA66E,GAAA7gF,MACA23D,SACArxB,UACAk/B,eAEAx/D,KAAA86E,IACA,IAAA9pB,GAAAhxD,KAAA66E,GAAA/gF,OAAA,CACAkG,MAAAg7E,GACAh7E,KAAA89E,GAAA9sB,GAGAhxD,KAAA4hE,GAAA,kBAAAtX,IAGAmU,EAAAvkE,UAAA4jF,GAAA,SAAA9sB,GACA,GAAA9nD,GAAAlJ,KACA2xD,EAAA3xD,KAAA66E,GAAA7pB,GAAAW,OACArxB,EAAAtgC,KAAA66E,GAAA7pB,GAAA1wB,QACAk/B,EAAAx/D,KAAA66E,GAAA7pB,GAAAwO,UACAx/D,MAAA66E,GAAA7pB,GAAA+sB,OAAA/9E,KAAAg7E,GACAh7E,KAAAq8E,YAAA1qB,EAAArxB,EAAA,SAAAhzB,GACApE,EAAA04D,GAAAjQ,EAAA,YAAArkD,SACApE,GAAA2xE,GAAA7pB,GACA9nD,EAAA4xE,KAEA,IAAA5xE,EAAA4xE,KACA5xE,EAAA2xE,OAEArb,GACAA,EAAAlyD,EAAA,EAAAA,EAAA,MAMAmxD,EAAAvkE,UAAA8jF,YAAA,SAAA5Z,GACA,GAAAl7D,GAAAlJ,IAEA,IAAAA,KAAAg7E,GAAA,CACA,GAAA16C,IAA2B9lC,EAAA4pE,EAC3BpkE,MAAA4hE,GAAA,cAAAthC,GACAtgC,KAAAq8E,YAAA,IAAA/7C,EAAA,SAAA1mC,GAEA,UADAA,EAAA,EACA,CACA,GAAAuoE,GAAAvoE,EAAA,CACAsP,GAAA04D,GAAA,sCAAAO,QASA1D,EAAAvkE,UAAA+jF,GAAA,SAAA3wE,GACA,QAAAA,GAAA,CAEAtN,KAAA4hE,GAAA,gBAAA7c,EAAA1nD,UAAAiQ,GACA,IAAA4wE,GAAA5wE,EAAA,EACAgvE,EAAAt8E,KAAAu7E,GAAA2C,EACA5B,WACAt8E,MAAAu7E,GAAA2C,GACA5B,EAAAhvE,EAAA,QAGA,aAAAA,GACA,0CAAAA,EAAA,KAEA,MAAAA,IAEAtN,KAAAm+E,GAAA7wE,EAAA,EAAAA,EAAA,KAGAmxD,EAAAvkE,UAAAikF,GAAA,SAAAxsB,EAAAjvD,GACA1C,KAAA4hE,GAAA,sBAAAjQ,EAAAjvD,GACA,MAAAivD,EACA3xD,KAAAs+D,GAAA57D,EAAA,EAAAA,EAAA,GACA,EAAAA,EAAA,GACA,MAAAivD,EACA3xD,KAAAs+D,GAAA57D,EAAA,EAAAA,EAAA,GACA,EAAAA,EAAA,GACA,MAAAivD,EACA3xD,KAAAo+E,GAAA17E,EAAA,EAAAA,EAAA,GACA,OAAAivD,EACA3xD,KAAAy9E,GAAA/6E,EAAA,EAAAA,EAAA,GACA,OAAAivD,EACA3xD,KAAAq+E,GAAA37E,GAEAuiD,EAAAxpD,MAAA,6CACAspD,EAAA1nD,UAAAs0D,GACA,uCAEA8M,EAAAvkE,UAAAokF,GAAA,SAAA7d,EAAA/mC,GACA15B,KAAA4hE,GAAA,oBACA5hE,KAAAg7E,IAAA,EACAh7E,KAAA+7E,IAAA,GAAA7kE,OAAAE,UACApX,KAAAu+E,GAAA9d,GACAzgE,KAAAo7E,cAAA1hD,EACA15B,KAAA67E,IACA77E,KAAAw+E,KAEAx+E,KAAAy+E,KACAz+E,KAAA67E,IAAA,EACA77E,KAAAu+D,IAAA,IAEAE,EAAAvkE,UAAA8hF,GAAA,SAAAxwE,GACA,GAAAtC,GAAAlJ,IACAglD,GAAAppD,QAAAoE,KAAAy7E,GAAA,0DACAz7E,KAAAq7E,IACApwE,aAAAjL,KAAAq7E,IAIAr7E,KAAAq7E,GAAAzyE,WAAA,WACAM,EAAAmyE,GAAA,KACAnyE,EAAAw1E,MACSjpE,KAAAoD,MAAArN,KAMTizD,EAAAvkE,UAAAgiF,GAAA,SAAAyC,GAEAA,IACA3+E,KAAAs7E,IACAt7E,KAAAi7E,KAAAj7E,KAAAk7E,KACAl7E,KAAA4hE,GAAA,2CACA5hE,KAAAi7E,GAAAX,EACAt6E,KAAAy7E,IACAz7E,KAAAg8E,GAAA,IAGAh8E,KAAAs7E,GAAAqD,GAEAlgB,EAAAvkE,UAAAkiF,GAAA,SAAAwC,GACAA,GACA5+E,KAAA4hE,GAAA,wBACA5hE,KAAAi7E,GAAAX,EACAt6E,KAAAy7E,IACAz7E,KAAAg8E,GAAA,KAIAh8E,KAAA4hE,GAAA,8CACA5hE,KAAAy7E,IACAz7E,KAAAy7E,GAAA9nE,UAIA8qD,EAAAvkE,UAAA2kF,GAAA,WAQA,GAPA7+E,KAAA4hE,GAAA,4BACA5hE,KAAAg7E,IAAA,EACAh7E,KAAAy7E,GAAA,KAEAz7E,KAAA8+E,KAEA9+E,KAAAu7E,MACAv7E,KAAA++E,KAAA,CACA,GAAA/+E,KAAAs7E,IAKA,GAAAt7E,KAAA+7E,GAAA,CAEA,GAAAiD,IAAA,GAAA9nE,OAAAE,UAAApX,KAAA+7E,EACAiD,GAxfA,MAyfAh/E,KAAAi7E,GAAAX,GACAt6E,KAAA+7E,GAAA,UATA/7E,MAAA4hE,GAAA,8CACA5hE,KAAAi7E,GAAAj7E,KAAAk7E,GACAl7E,KAAA87E,IAAA,GAAA5kE,OAAAE,SASA,IAAA6nE,IAAA,GAAA/nE,OAAAE,UAAApX,KAAA87E,GACAoD,EAAAzpE,KAAAwO,IAAA,EAAAjkB,KAAAi7E,GAAAgE,EACAC,GAAAzpE,KAAAC,SAAAwpE,EACAl/E,KAAA4hE,GAAA,0BAAAsd,EAAA,MACAl/E,KAAAg8E,GAAAkD,GAEAl/E,KAAAi7E,GAAAxlE,KAAA8yC,IAAAvoD,KAAAk7E,GAngBA,IAmgBAl7E,KAAAi7E,IAEAj7E,KAAAu+D,IAAA,IAEAE,EAAAvkE,UAAAwkF,GAAA,WACA,GAAA1+E,KAAA++E,KAAA,CACA/+E,KAAA4hE,GAAA,+BACA5hE,KAAA87E,IAAA,GAAA5kE,OAAAE,UACApX,KAAA+7E,GAAA,IACA,IAAAoD,GAAAn/E,KAAAi+E,GAAA92E,KAAAnH,MACAo/E,EAAAp/E,KAAAs+E,GAAAn3E,KAAAnH,MACA2mE,EAAA3mE,KAAA6+E,GAAA13E,KAAAnH,MACAq/E,EAAAr/E,KAAAqT,GAAA,IAAAorD,EAAA6gB,KACA3I,EAAA32E,KACAu/E,EAAAv/E,KAAAo7E,cACAoE,GAAA,EACAC,EAAA,KACAC,EAAA,WACAD,EACAA,EAAA9rE,SAGA6rE,GAAA,EACA7Y,MAGAgZ,EAAA,SAAAnD,GACAx3B,EAAAppD,OAAA6jF,EAAA,0DACAA,EAAApD,YAAAG,GAEAx8E,MAAAy7E,IACA9nE,MAAA+rE,EACArD,YAAAsD,EAEA,IAAAC,GAAA5/E,KAAA27E,EACA37E,MAAA27E,IAAA,EAEA37E,KAAAw6E,GACA/xE,SAAAm3E,GACAr9E,KAAA,SAAA3I,GACA4lF,EAUAv6B,EAAAt7C,IAAA,0CATAs7C,EAAAt7C,IAAA,8CACAgtE,EAAA+E,GAAA9hF,KAAA+8B,YACA8oD,EAAA,GAAArF,GAAAyF,WAAAR,EAAA1I,EAAAvZ,EAAA+hB,EAAAC,EAAAzY,EACA,SAAAl0D,GACAwyC,EAAA9xC,KAAAV,EAAA,KAAAkkE,EAAAvZ,EAAA,KACAuZ,EAAAxS,UA/iBA,gBAgjBqBob,MAMrBh9E,KAAA,cAAA9G,GACAk7E,EAAA/U,GAAA,wBAAAnmE,GACA+jF,IACAr6B,EAAAhpD,UAAAoO,YAIA06C,EAAA9xC,KAAA1X,GAEAikF,SAQAjhB,EAAAvkE,UAAAiqE,UAAA,SAAA1xD,GACAwyC,EAAAt7C,IAAA,uCAAA8I,GACAzS,KAAA26E,GAAAloE,IAAA,EACAzS,KAAAy7E,GACAz7E,KAAAy7E,GAAA9nE,SAGA3T,KAAAq7E,KACApwE,aAAAjL,KAAAq7E,IACAr7E,KAAAq7E,GAAA,MAEAr7E,KAAAg7E,IACAh7E,KAAA6+E,OAOApgB,EAAAvkE,UAAAoK,OAAA,SAAAmO,GACAwyC,EAAAt7C,IAAA,mCAAA8I,SACAzS,MAAA26E,GAAAloE,GACAqyC,EAAAvmD,QAAAyB,KAAA26E,MACA36E,KAAAi7E,GAAAX,EACAt6E,KAAAy7E,IACAz7E,KAAAg8E,GAAA,KAIAvd,EAAAvkE,UAAAqkF,GAAA,SAAA9d,GACA,GAAAuZ,GAAAvZ,GAAA,GAAAvpD,OAAAE,SACApX,MAAA0+D,IAAkCohB,iBAAA9F,KAElCvb,EAAAvkE,UAAA4kF,GAAA,WACA,OAAA1lF,GAAA,EAAuBA,EAAA4G,KAAA66E,GAAA/gF,OAAkCV,IAAA,CACzD,GAAAmqD,GAAAvjD,KAAA66E,GAAAzhF,EACAmqD,IAAA,KAAAA,GAAAjjB,SAAAijB,EAAAw6B,SACAx6B,EAAAic,YACAjc,EAAAic,WAAA,oBACAx/D,MAAA66E,GAAAzhF,GACA4G,KAAA86E,MAIA,IAAA96E,KAAA86E,KACA96E,KAAA66E,QAOApc,EAAAvkE,UAAAkkF,GAAA,SAAA9zB,EAAApB,GAEA,GAAA+M,EAKAA,GAJA/M,EAIAA,EAAAzqD,IAAA,SAAA4F,GAA8C,MAAA4gD,GAAA2C,kBAAAvjD,KAAsC+J,KAAA,KAHpF,SAKA,IAAA2xD,GAAA//D,KAAAg9E,GAAA1yB,EAAA2L,EACA8J,MAAAP,YACAO,EAAAP,WAAA,sBAQAf,EAAAvkE,UAAA8iF,GAAA,SAAA1yB,EAAA2L,GACA,GACA8J,GADAggB,EAAA,MAAAxsB,GAAA3J,KAAAU,EAaA,YAXArkD,KAAAjG,KAAA46E,GAAAmF,IACAhgB,EAAA//D,KAAA46E,GAAAmF,GAAA9pB,SACAj2D,MAAA46E,GAAAmF,GAAA9pB,GACA,IAAAnR,EAAAzmD,SAAA2B,KAAA46E,GAAAmF,WACA//E,MAAA46E,GAAAmF,IAKAhgB,MAAA95D,GAEA85D,GAEAtB,EAAAvkE,UAAAujF,GAAA,SAAAuC,EAAAC,GACAh7B,EAAAt7C,IAAA,uBAAAq2E,EAAA,IAAAC,GACAjgF,KAAA07E,GAAA,KACA17E,KAAA27E,IAAA,EACA37E,KAAAy7E,GAAA9nE,QACA,kBAAAqsE,GAAA,sBAAAA,KAIAhgF,KAAA47E,IArqBA,IAwqBA57E,KAAAi7E,GA7qBA,IAgrBAj7E,KAAAw6E,GAAA0F,0BAIAzhB,EAAAvkE,UAAAmkF,GAAA,SAAA37E,GACA1C,KAAAm7E,GACAn7E,KAAAm7E,GAAAz4E,GAGA,OAAAA,IACAlH,QAAAmO,IAAA,aAAAjH,EAAA,IAAAwV,QAAA,uBAIAumD,EAAAvkE,UAAAukF,GAAA,WACA,GAAAv1E,GAAAlJ,IAEAA,MAAAo9E,UAGAt4B,EAAA3mD,QAAA6B,KAAA46E,GAAA,SAAAtwB,EAAA61B,GACAr7B,EAAA3mD,QAAAgiF,EAAA,SAAAv/E,EAAA87E,GACAxzE,EAAA0zE,GAAAF,MAGA,QAAAtjF,GAAA,EAAuBA,EAAA4G,KAAA66E,GAAA/gF,OAAkCV,IACzD4G,KAAA66E,GAAAzhF,IACA4G,KAAA89E,GAAA1kF,EAEA,MAAA4G,KAAA+6E,GAAAjhF,QAAA,CACA,GAAAwmC,GAAAtgC,KAAA+6E,GAAA3gF,OACA4F,MAAA49E,GAAAt9C,EAAAqxB,OAAArxB,EAAAgqB,WAAAhqB,EAAA5vB,KAAA4vB,EAAAk/B,cAOAf,EAAAvkE,UAAAskF,GAAA,WACA,GAAApa,MACAgc,EAAA,IACAj7B,GAAAhpD,UAAAoO,WACA61E,EAAA,aAEAj7B,EAAAhpD,UAAAmO,cACA81E,EAAA,QAEAhc,EAAA,OAAAgc,EAAA,IAAAnG,EAAA/0E,QAAA0C,YAAAsQ,QAAA,cACAmtC,EAAAzoD,kBACAwnE,EAAA,uBAEA/e,EAAAvoD,kBACAsnE,EAAA,4BAEApkE,KAAAg+E,YAAA5Z,IAMA3F,EAAAvkE,UAAA6kF,GAAA,WACA,GAAAH,GAAAzE,EAAAgC,cAAAzP,cAAA2T,iBACA,OAAAv7B,GAAAvmD,QAAAyB,KAAA26E,KAAAiE,GAKAngB,EAAAic,GAAA,EAMAjc,EAAA6gB,GAAA,EACA7gB,GACC4b,EAAAiG,cACDpnF,GAAAulE,wB5C63PM,SAAUtlE,EAAQD,EAASH,GAEjC,Y6C5oRAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAKAwnF,EAAA,WAIA,QAAAA,GAAAC,GACAxgF,KAAAwgF,KACAxgF,KAAAygF,MACA37B,EAAAlpD,OAAA2J,MAAAsJ,QAAA2xE,MAAA1mF,OAAA,gCA6CA,MAtCAymF,GAAArmF,UAAAwmF,QAAA,SAAA9rB,GAEA,OADA/O,MACA5+C,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/C4+C,EAAA5+C,EAAA,GAAAnG,UAAAmG,EAEA,IAAA1B,MAAAsJ,QAAA7O,KAAAygF,GAAA7rB,IAGA,OADA7nD,GAAA/M,KAAAygF,GAAA7rB,GAAA5hD,QACA5Z,EAAA,EAA2BA,EAAA2T,EAAAjT,OAAsBV,IACjD2T,EAAA3T,GAAAuP,SAAAnG,MAAAuK,EAAA3T,GAAAgjB,QAAAypC,IAIA06B,EAAArmF,UAAAoS,GAAA,SAAAsoD,EAAAjsD,EAAAyT,GACApc,KAAA2gF,GAAA/rB,GACA50D,KAAAygF,GAAA7rB,GAAA50D,KAAAygF,GAAA7rB,OACA50D,KAAAygF,GAAA7rB,GAAA56D,MAAyC2O,WAAAyT,WACzC,IAAAwkE,GAAA5gF,KAAA6gF,gBAAAjsB,EACAgsB,IACAj4E,EAAAnG,MAAA4Z,EAAAwkE,IAGAL,EAAArmF,UAAAuS,IAAA,SAAAmoD,EAAAjsD,EAAAyT,GACApc,KAAA2gF,GAAA/rB,EAEA,QADA7nD,GAAA/M,KAAAygF,GAAA7rB,OACAx7D,EAAA,EAAuBA,EAAA2T,EAAAjT,OAAsBV,IAC7C,GAAA2T,EAAA3T,GAAAuP,gBACAyT,OAAArP,EAAA3T,GAAAgjB,SAEA,WADArP,GAAAiQ,OAAA5jB,EAAA,IAKAmnF,EAAArmF,UAAAymF,GAAA,SAAA/rB,GACA9P,EAAAlpD,OAAAoE,KAAAwgF,GAAA7pE,KAAA,SAAAmqE,GACA,MAAAA,KAAAlsB,IACS,kBAAAA,IAET2rB,IAEArnF,GAAAqnF,gB7CoqRM,SAAUpnF,EAAQD,EAASH,GAEjC,Y8CluRAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAqsD,EAAArsD,EAAA,IACAs2E,EAAAt2E,EAAA,IACAgoF,EAAAhoF,EAAA,KA2BA8mF,EAAA,WAUA,QAAAA,GAAAxsE,EAAA+pD,EAAA4jB,EAAA1C,EAAA1gB,EAAAqjB,EAAA7F,GACAp7E,KAAAqT,KACArT,KAAAo9D,IACAp9D,KAAAghF,KACAhhF,KAAAs+E,KACAt+E,KAAA49D,IACA59D,KAAAihF,KACAjhF,KAAAo7E,gBACAp7E,KAAAkhF,gBAAA,EACAlhF,KAAAmhF,uBACAnhF,KAAAohF,GAAA,EACAphF,KAAA4hE,GAAA9c,EAAA0B,WAAA,KAAAxmD,KAAAqT,GAAA,KACArT,KAAAqhF,GAAA,GAAAN,GAAAO,iBAAAlkB,GACAp9D,KAAA4hE,GAAA,sBACA5hE,KAAAuhF,KAiaA,MA3ZA1B,GAAA3lF,UAAAqnF,GAAA,WACA,GAAAr4E,GAAAlJ,KACAwhF,EAAAxhF,KAAAqhF,GAAAI,kBACAzhF,MAAA0hF,GAAA,GAAAF,GAAAxhF,KAAA2hF,KAAA3hF,KAAAo9D,MAAAn3D,GAAAjG,KAAAo7E,eAGAp7E,KAAA4hF,GAAAJ,EAAA,+BACA,IAAAK,GAAA7hF,KAAA8hF,GAAA9hF,KAAA0hF,IACAK,EAAA/hF,KAAAgiF,GAAAhiF,KAAA0hF,GACA1hF,MAAAiiF,GAAAjiF,KAAA0hF,GACA1hF,KAAAkiF,GAAAliF,KAAA0hF,GACA1hF,KAAAmiF,GAAA,KACAniF,KAAAoiF,IAAA,EAOAx5E,WAAA,WAEAM,EAAAw4E,IAAAx4E,EAAAw4E,GAAAphE,KAAAuhE,EAAAE,IACStsE,KAAAoD,MAAA,GACT,IAAAwpE,GAAAb,EAAA,iBACAa,GAAA,IACAriF,KAAAsiF,GAAAx9B,EAAA4E,sBAAA,WACAxgD,EAAAo5E,GAAA,KACAp5E,EAAAk5E,KACAl5E,EAAAw4E,IACAx4E,EAAAw4E,GAAAa,cA5EA,QA6EAr5E,EAAA04D,GAAA,wDACA14D,EAAAw4E,GAAAa,cACA,wCACAr5E,EAAAk5E,IAAA,EACAl5E,EAAAw4E,GAAAc,yBAEAt5E,EAAAw4E,IACAx4E,EAAAw4E,GAAAe,UArFA,MAsFAv5E,EAAA04D,GAAA,oDACA14D,EAAAw4E,GAAAe,UACA,uCAKAv5E,EAAA04D,GAAA,+CACA14D,EAAAyK,WAGa8B,KAAAoD,MAAAwpE,MAObxC,EAAA3lF,UAAAynF,GAAA,WACA,WAAA3hF,KAAAqT,GAAA,IAAArT,KAAAkhF,mBAEArB,EAAA3lF,UAAA8nF,GAAA,SAAAR,GACA,GAAAt4E,GAAAlJ,IACA,iBAAA0iF,GACAlB,IAAAt4E,EAAAw4E,GACAx4E,EAAAy5E,GAAAD,GAEAlB,IAAAt4E,EAAAi5E,IACAj5E,EAAA04D,GAAA,8BACA14D,EAAA05E,MAGA15E,EAAA04D,GAAA,+BAIAie,EAAA3lF,UAAA4nF,GAAA,SAAAN,GACA,GAAAt4E,GAAAlJ,IACA,iBAAAsN,GACA,GAAApE,EAAAk4E,KACAI,IAAAt4E,EAAAg5E,GACAh5E,EAAA25E,GAAAv1E,GAEAk0E,IAAAt4E,EAAAi5E,GACAj5E,EAAA45E,GAAAx1E,GAGApE,EAAA04D,GAAA,gCASAie,EAAA3lF,UAAAmiF,YAAA,SAAA0G,GAEA,GAAAvG,IAAmBl8E,EAAA,IAAA7F,EAAAsoF,EACnB/iF,MAAAgjF,GAAAxG,IAEAqD,EAAA3lF,UAAA+oF,qBAAA,WACAjjF,KAAAiiF,KAAAjiF,KAAAmiF,IAAAniF,KAAAkiF,KAAAliF,KAAAmiF,KACAniF,KAAA4hE,GAAA,2CAAA5hE,KAAAmiF,GAAAe,QACAljF,KAAA0hF,GAAA1hF,KAAAmiF,GACAniF,KAAAmiF,GAAA,OAIAtC,EAAA3lF,UAAAipF,GAAA,SAAAC,GACA,GA1JA,KA0JAA,GAAA,CACA,GAAAC,GAAAD,EAAA,CArJA,OAsJAC,EACArjF,KAAAsjF,KA1JA,MA4JAD,GAEArjF,KAAA4hE,GAAA,wCACA5hE,KAAAmiF,GAAAxuE,QAEA3T,KAAAiiF,KAAAjiF,KAAAmiF,IACAniF,KAAAkiF,KAAAliF,KAAAmiF,IACAniF,KAAA2T,SAjKA,MAoKA0vE,IACArjF,KAAA4hE,GAAA,0BACA5hE,KAAAujF,KACAvjF,KAAAsjF,QAIAzD,EAAA3lF,UAAA4oF,GAAA,SAAAU,GACA,GAAAC,GAAA3+B,EAAA6C,WAAA,IAAA67B,GACA9yE,EAAAo0C,EAAA6C,WAAA,IAAA67B,EACA,SAAAC,EACAzjF,KAAAmjF,GAAAzyE,OAEA,SAAA+yE,EAKA,KAAAh5E,OAAA,2BAAAg5E,EAHAzjF,MAAAmhF,oBAAAnnF,KAAA0W,KAMAmvE,EAAA3lF,UAAAopF,GAAA,WACAtjF,KAAAujF,IAAA,GACAvjF,KAAA4hE,GAAA,oCACA5hE,KAAAoiF,IAAA,EACApiF,KAAAmiF,GAAAK,wBACAxiF,KAAA0jF,OAIA1jF,KAAA4hE,GAAA,8BACA5hE,KAAAmiF,GAAAnlD,MAAsC18B,EAAA,IAAA7F,GAAa6F,EAhMnD,IAgMmD7F,UAGnDolF,EAAA3lF,UAAAwpF,GAAA,WAEA1jF,KAAAmiF,GAAA/vC,QAEApyC,KAAA4hE,GAAA,mCACA5hE,KAAAmiF,GAAAnlD,MAAkC18B,EAAA,IAAA7F,GAAa6F,EA1M/C,IA0M+C7F,QAG/CuF,KAAA4hE,GAAA,kCACA5hE,KAAA0hF,GAAA1kD,MAAyB18B,EAAA,IAAA7F,GAAa6F,EA7MtC,IA6MsC7F,QACtCuF,KAAAiiF,GAAAjiF,KAAAmiF,GACAniF,KAAAijF,wBAEApD,EAAA3lF,UAAA2oF,GAAA,SAAAW,GAEA,GAAAC,GAAA3+B,EAAA6C,WAAA,IAAA67B,GACA9yE,EAAAo0C,EAAA6C,WAAA,IAAA67B,EACA,MAAAC,EACAzjF,KAAA2jF,GAAAjzE,GAEA,KAAA+yE,GACAzjF,KAAAi+E,GAAAvtE,IAGAmvE,EAAA3lF,UAAA+jF,GAAA,SAAA3wE,GACAtN,KAAA4jF,KAEA5jF,KAAAghF,GAAA1zE,IAEAuyE,EAAA3lF,UAAA0pF,GAAA,WACA5jF,KAAAoiF,MACApiF,KAAA4hF,IACA,IACA5hF,KAAA4hE,GAAA,kCACA5hE,KAAAoiF,IAAA,EACApiF,KAAA0hF,GAAAc,0BAIA3C,EAAA3lF,UAAAypF,GAAA,SAAAP,GACA,GAAAC,GAAAv+B,EAAA6C,WAnPA,IAmPAy7B,EACA,IAnPA,KAmPAA,GAAA,CACA,GAAAtG,GAAAsG,EAAA,CACA,IA7OA,MA6OAC,EACArjF,KAAA6jF,GAAA/G,OAEA,IAlPA,MAkPAuG,EAAA,CACArjF,KAAA4hE,GAAA,qCACA5hE,KAAAkiF,GAAAliF,KAAAmiF,EACA,QAAA/oF,GAAA,EAA+BA,EAAA4G,KAAAmhF,oBAAArnF,SAAqCV,EACpE4G,KAAAi+E,GAAAj+E,KAAAmhF,oBAAA/nF,GAEA4G,MAAAmhF,uBACAnhF,KAAAijF,2BA9PA,MAgQAI,EAGArjF,KAAA8jF,GAAAhH,GAlQA,MAoQAuG,EAEArjF,KAAA+jF,GAAAjH,GArQA,MAuQAuG,EACAv+B,EAAArpD,MAAA,iBAAAqhF,GAvQA,MAyQAuG,GACArjF,KAAA4hE,GAAA,wBACA5hE,KAAA4jF,KACA5jF,KAAAgkF,MAGAl/B,EAAArpD,MAAA,mCAAA4nF,KASAxD,EAAA3lF,UAAA2pF,GAAA,SAAAI,GACA,GAAAxjB,GAAAwjB,EAAAC,GACA93E,EAAA63E,EAAArhF,EACA8d,EAAAujE,EAAAziE,CACAxhB,MAAA05B,UAAAuqD,EAAA5pF,EACA2F,KAAAo9D,EAAAwS,WAAAlvD,GAEA,GAAA1gB,KAAAohF,KACAphF,KAAA0hF,GAAAtvC,QACApyC,KAAAmkF,GAAAnkF,KAAA0hF,GAAAjhB,GACA4O,EAAArW,mBAAA5sD,GACA04C,EAAA3xC,KAAA,sCAGAnT,KAAAokF,OAGAvE,EAAA3lF,UAAAkqF,GAAA,WACA,GAAA5C,GAAAxhF,KAAAqhF,GAAAgD,kBACA7C,IACAxhF,KAAAskF,GAAA9C,IAGA3B,EAAA3lF,UAAAoqF,GAAA,SAAA9C,GACA,GAAAt4E,GAAAlJ,IACAA,MAAAmiF,GAAA,GAAAX,GAAAxhF,KAAA2hF,KAAA3hF,KAAAo9D,EAAAp9D,KAAA05B,WAGA15B,KAAAujF,GACA/B,EAAA,+BACA,IAAA+C,GAAAvkF,KAAA8hF,GAAA9hF,KAAAmiF,IACA3Z,EAAAxoE,KAAAgiF,GAAAhiF,KAAAmiF,GACAniF,MAAAmiF,GAAA7hE,KAAAikE,EAAA/b,GAEA1jB,EAAA4E,sBAAA,WACAxgD,EAAAi5E,KACAj5E,EAAA04D,GAAA,gCACA14D,EAAAi5E,GAAAxuE,UAES8B,KAAAoD,MA7UT,OA+UAgnE,EAAA3lF,UAAA6pF,GAAA,SAAArjE,GACA1gB,KAAA4hE,GAAA,qCAAAlhD,GACA1gB,KAAAo9D,EAAAwS,WAAAlvD,GAGA,IAAA1gB,KAAAohF,GACAphF,KAAA2T,SAIA3T,KAAAwkF,KACAxkF,KAAAuhF,OAGA1B,EAAA3lF,UAAAiqF,GAAA,SAAA3C,EAAA/gB,GACA,GAAAv3D,GAAAlJ,IACAA,MAAA4hE,GAAA,oCACA5hE,KAAA0hF,GAAAF,EACAxhF,KAAAohF,GAAA,EACAphF,KAAAs+E,KACAt+E,KAAAs+E,GAAA7d,EAAAzgE,KAAA05B,WACA15B,KAAAs+E,GAAA,MAIA,IAAAt+E,KAAA4hF,IACA5hF,KAAA4hE,GAAA,kCACA5hE,KAAAoiF,IAAA,GAGAt9B,EAAA4E,sBAAA,WACAxgD,EAAA86E,MACavuE,KAAAoD,MA5Wb,OA+WAgnE,EAAA3lF,UAAA8pF,GAAA,WAEAhkF,KAAAoiF,IAAA,IAAApiF,KAAAohF,KACAphF,KAAA4hE,GAAA,4BACA5hE,KAAAgjF,IAA4B1iF,EAAA,IAAA7F,GAAa6F,EArWzC,IAqWyC7F,UAGzColF,EAAA3lF,UAAA0oF,GAAA,WACA,GAAApB,GAAAxhF,KAAAmiF,EACAniF,MAAAmiF,GAAA,KACAniF,KAAAiiF,KAAAT,GAAAxhF,KAAAkiF,KAAAV,GAEAxhF,KAAA2T,SASAksE,EAAA3lF,UAAAyoF,GAAA,SAAAD,GACA1iF,KAAA0hF,GAAA,KAGAgB,GAAA,IAAA1iF,KAAAohF,GASA,IAAAphF,KAAAohF,IACAphF,KAAA4hE,GAAA,8BATA5hE,KAAA4hE,GAAA,+BAEA5hE,KAAAo9D,EAAAsS,oBACAtqB,EAAA2T,kBAAAxS,OAAA,QAAAvmD,KAAAo9D,EAAA18C,MAEA1gB,KAAAo9D,EAAAmS,aAAAvvE,KAAAo9D,EAAA18C,OAMA1gB,KAAA2T,SAOAksE,EAAA3lF,UAAA4pF,GAAA,SAAArxE,GACAzS,KAAA4hE,GAAA,0DACA5hE,KAAAihF,KACAjhF,KAAAihF,GAAAxuE,GACAzS,KAAAihF,GAAA,MAIAjhF,KAAA49D,EAAA,KACA59D,KAAA2T,SAEAksE,EAAA3lF,UAAA8oF,GAAA,SAAAtyE,GACA,OAAA1Q,KAAAohF,GACA,kCAGAphF,MAAAiiF,GAAAjlD,KAAAtsB,IAMAmvE,EAAA3lF,UAAAyZ,MAAA,WACA,IAAA3T,KAAAohF,KACAphF,KAAA4hE,GAAA,gCACA5hE,KAAAohF,GAAA,EACAphF,KAAAwkF,KACAxkF,KAAA49D,IACA59D,KAAA49D,IACA59D,KAAA49D,EAAA,QAQAiiB,EAAA3lF,UAAAsqF,GAAA,WACAxkF,KAAA4hE,GAAA,iCACA5hE,KAAA0hF,KACA1hF,KAAA0hF,GAAA/tE,QACA3T,KAAA0hF,GAAA,MAEA1hF,KAAAmiF,KACAniF,KAAAmiF,GAAAxuE,QACA3T,KAAAmiF,GAAA,MAEAniF,KAAAsiF,KACAr3E,aAAAjL,KAAAsiF,IACAtiF,KAAAsiF,GAAA,OAGAzC,IAEA3mF,GAAA2mF,c9C0vRM,SAAU1mF,EAAQD,EAASH,GAEjC,Y+CttSAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACA09E,EAAA19E,EAAA,IACA6jE,EAAA7jE,EAAA,IACA0rF,EAAA1rF,EAAA,KACAs2E,EAAAt2E,EAAA,IACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,EAEAG,GAAAwrF,8BAAA,QACAxrF,EAAAyrF,gCAAA,QACAzrF,EAAA0rF,kCAAA,aACA1rF,EAAA2rF,+BAAA,UACA3rF,EAAA4rF,2BAAA,KACA5rF,EAAA6rF,2BAAA,KACA7rF,EAAA8rF,+BAAA,MACA9rF,EAAA+rF,oCAAA,KACA/rF,EAAAgsF,oCAAA,MACAhsF,EAAAisF,qCAAA,KACAjsF,EAAAksF,6BAAA,IACAlsF,EAAAmsF,sCAAA,UACAnsF,EAAAosF,8CAAA,QAIA,IAuBAC,GAAA,WASA,QAAAA,GAAArC,EAAA/tB,EAAAqwB,EAAApK,GACAp7E,KAAAkjF,SACAljF,KAAAm1D,WACAn1D,KAAAwlF,qBACAxlF,KAAAo7E,gBACAp7E,KAAAyiF,UAAA,EACAziF,KAAAuiF,cAAA,EACAviF,KAAAylF,IAAA,EACAzlF,KAAA4hE,GAAA9c,EAAA0B,WAAA08B,GACAljF,KAAAi+D,EAAArB,EAAAsB,aAAAC,cAAAhJ,GACAn1D,KAAA0lF,MAAA,SAAA1sE,GACA,MAAAm8C,GAAA2a,cAAAT,EAAA7V,aAAAxgD,IAsOA,MA9NAusE,GAAArrF,UAAAomB,KAAA,SAAAikE,EAAA/b,GACA,GAAAt/D,GAAAlJ,IACAA,MAAA2lF,cAAA,EACA3lF,KAAA49D,EAAA4K,EACAxoE,KAAA4lF,gBAAA,GAAAnB,GAAAoB,eAAAtB,GACAvkF,KAAA8lF,IAAA,EACA9lF,KAAA+lF,GAAAn9E,WAAA,WACAM,EAAA04D,GAAA,gCAEA14D,EAAA88E,KACA98E,EAAA68E,GAAA,MACStwE,KAAAoD,MA9CT,MAgDAisC,EAAAmC,oBAAA,WACA,IAAA/9C,EAAA48E,GAAA,CAGA58E,EAAA+8E,gBAAA,GAAAC,GAAA,WAEA,OADAl/E,MACAC,EAAA,EAAgCA,EAAAnG,UAAAhH,OAAuBmN,IACvDD,EAAAC,GAAAnG,UAAAmG,EAEA,IAAAk/E,GAAAn/E,EAAA,GAAAo/E,EAAAp/E,EAAA,GAAAq/E,EAAAr/E,EAAA,EAEA,IAFAA,EAAA,GAAAA,EAAA,GACAkC,EAAAo9E,GAAAt/E,GACAkC,EAAA+8E,gBAOA,GALA/8E,EAAA68E,KACA96E,aAAA/B,EAAA68E,IACA78E,EAAA68E,GAAA,MAEA78E,EAAAu8E,IAAA,EACAU,GAAAjtF,EAAAwrF,8BACAx7E,EAAAmK,GAAA+yE,EACAl9E,EAAAm3C,SAAAgmC,MAEA,IAAAF,IAAAjtF,EAAAyrF,gCAiBA,KAAAl6E,OAAA,kCAAA07E,EAfAC,IAGAl9E,EAAA+8E,gBAAAM,cAAA,EAGAr9E,EAAA08E,gBAAAY,WAAAJ,EAAA,WACAl9E,EAAA88E,QAIA98E,EAAA88E,OAMa,WAEb,OADAh/E,MACAC,EAAA,EAAgCA,EAAAnG,UAAAhH,OAAuBmN,IACvDD,EAAAC,GAAAnG,UAAAmG,EAEA,IAAAw/E,GAAAz/E,EAAA,GAAA0J,EAAA1J,EAAA,EACAkC,GAAAo9E,GAAAt/E,GACAkC,EAAA08E,gBAAAc,eAAAD,EAAA/1E,IACa,WACbxH,EAAA88E,MACa98E,EAAAw8E,MAGb,IAAAiB,KACAA,GAAAztF,EAAAwrF,+BAAA,IACAiC,EAAAztF,EAAA8rF,gCAAAvvE,KAAAoD,MAAA,IAAApD,KAAAC,UACAxM,EAAA+8E,gBAAAW,2BACAD,EAAAztF,EAAA+rF,qCAAA/7E,EAAA+8E,gBAAAW,0BACAD,EAAAtX,EAAApW,eAAAoW,EAAArW,iBACA9vD,EAAAs8E,qBACAmB,EAAAtX,EAAAnW,yBAAAhwD,EAAAs8E,oBAEAt8E,EAAAkyE,gBACAuL,EAAAtX,EAAA/V,oBAAApwD,EAAAkyE,gBAEAp2B,EAAAnoD,aACA,mBAAA2jB,WACAA,SAAA+M,OACA,IAAA/M,SAAA+M,KAAAhtB,QAAA8uE,EAAAhW,gBACAstB,EAAAtX,EAAAlW,eAAAkW,EAAAjW,UAEA,IAAAytB,GAAA39E,EAAAw8E,MAAAiB,EACAz9E,GAAA04D,GAAA,+BAAAilB,GACA39E,EAAA+8E,gBAAAa,OAAAD,EAAA,kBAQAtB,EAAArrF,UAAAk4C,MAAA,WACApyC,KAAAimF,gBAAAc,cAAA/mF,KAAAqT,GAAArT,KAAAqgD,UACArgD,KAAAgnF,uBAAAhnF,KAAAqT,GAAArT,KAAAqgD,WAKAklC,EAAA0B,WAAA,WACA1B,EAAA2B,IAAA,GAKA3B,EAAA4B,cAAA,WACA5B,EAAA6B,IAAA,GAGA7B,EAAA8B,YAAA,WAGA,MAAA9B,GAAA2B,KACA3B,EAAA6B,IACA,mBAAAryE,WACA,MAAAA,SAAAqB,gBACA0uC,EAAA+D,mCACA/D,EAAAgE,sBACA9D,EAAAnoD,aAKA0oF,EAAArrF,UAAAsoF,sBAAA,aAKA+C,EAAArrF,UAAAotF,GAAA,WACAtnF,KAAA8lF,IAAA,EACA9lF,KAAAimF,kBACAjmF,KAAAimF,gBAAAtyE,QACA3T,KAAAimF,gBAAA,MAGAjmF,KAAAunF,iBACAxyE,SAAArS,KAAA+T,YAAAzW,KAAAunF,gBACAvnF,KAAAunF,eAAA,MAEAvnF,KAAA+lF,KACA96E,aAAAjL,KAAA+lF,IACA/lF,KAAA+lF,GAAA,OAOAR,EAAArrF,UAAA8rF,GAAA,WACAhmF,KAAA8lF,KACA9lF,KAAA4hE,GAAA,8BACA5hE,KAAAsnF,KACAtnF,KAAA49D,IACA59D,KAAA49D,EAAA59D,KAAAylF,IACAzlF,KAAA49D,EAAA,QAQA2nB,EAAArrF,UAAAyZ,MAAA,WACA3T,KAAA8lF,KACA9lF,KAAA4hE,GAAA,6BACA5hE,KAAAsnF,OAQA/B,EAAArrF,UAAA8iC,KAAA,SAAAtsB,GACA,GAAA82E,GAAAziC,EAAA1nD,UAAAqT,EACA1Q,MAAAyiF,WAAA+E,EAAA1tF,OACAkG,KAAAi+D,EAAA6G,iBAAA,aAAA0iB,EAAA1tF,OAQA,QANA2tF,GAAA1iC,EAAA9oD,aAAAurF,GAGAz/B,EAAAjD,EAAA+C,kBAAA4/B,EAzOAC,MA4OAtuF,EAAA,EAAuBA,EAAA2uD,EAAAjuD,OAAqBV,IAC5C4G,KAAAimF,gBAAA0B,eAAA3nF,KAAA2lF,cAAA59B,EAAAjuD,OAAAiuD,EAAA3uD,IACA4G,KAAA2lF,iBAUAJ,EAAArrF,UAAA8sF,uBAAA,SAAA3zE,EAAAu0E,GACA,IAAA5iC,EAAAnoD,YAAA,CAEAmD,KAAAunF,eAAAxyE,SAAAqB,cAAA,SACA,IAAAuwE,KACAA,GAAAztF,EAAAosF,+CAAA,IACAqB,EAAAztF,EAAA4rF,4BAAAzxE,EACAszE,EAAAztF,EAAA6rF,4BAAA6C,EACA5nF,KAAAunF,eAAAnnE,IAAApgB,KAAA0lF,MAAAiB,GACA3mF,KAAAunF,eAAArnE,MAAAC,QAAA,OACApL,SAAArS,KAAAgU,YAAA1W,KAAAunF,kBAOAhC,EAAArrF,UAAAosF,GAAA,SAAAt/E,GAEA,GAAAu7E,GAAAx9B,EAAA1nD,UAAA2J,GAAAlN,MACAkG,MAAAuiF,iBACAviF,KAAAi+D,EAAA6G,iBAAA,iBAAAyd,IAEAgD,IAEArsF,GAAAqsF,uBAKA,IAAAW,GAAA,WAOA,QAAAA,GAAA2B,EAAAC,EAAAtf,EAAAkd,GAoBA,GAnBA1lF,KAAAwoE,eACAxoE,KAAA0lF,QAMA1lF,KAAA+nF,oBAAA,GAAAtR,GAAAC,WAEA12E,KAAAgoF,eAMAhoF,KAAAioF,cAAAxyE,KAAAoD,MAAA,IAAApD,KAAAC,UAGA1V,KAAAumF,cAAA,EACAvhC,EAAAnoD,YAkCAmD,KAAA6nF,YACA7nF,KAAA8nF,kBAnCA,CAKA9nF,KAAA4mF,yBAAA9hC,EAAAW,gBACA7sD,OAAAM,EAAA0rF,kCAAA5kF,KAAA4mF,0BAAAiB,EACAjvF,OAAAM,EAAA2rF,+BAAA7kF,KAAA4mF,0BAAAkB,EAEA9nF,KAAAkoF,SAAAhC,EAAAiC,IAEA,IAAA5xE,GAAA,EAGAvW,MAAAkoF,SAAA9nE,KACA,gBAAApgB,KAAAkoF,SAAA9nE,IAAAnJ,OAAA,QAEAV,EAAA,4BADAxB,SAAA65D,OACA,eAEA,IAAAwZ,GAAA,eAAA7xE,EAAA,gBACA,KACAvW,KAAAkoF,SAAApzE,IAAAwL,OACAtgB,KAAAkoF,SAAApzE,IAAAyL,MAAA6nE,GACApoF,KAAAkoF,SAAApzE,IAAAnB,QAEA,MAAAtT,GACAykD,EAAAn7C,IAAA,2BACAtJ,EAAAyX,OACAgtC,EAAAn7C,IAAAtJ,EAAAyX,OAEAgtC,EAAAn7C,IAAAtJ,KAsPA,MAxOA6lF,GAAAiC,GAAA,WACA,GAAAE,GAAAtzE,SAAAqB,cAAA,SAGA,IAFAiyE,EAAAnoE,MAAAC,QAAA,QAEApL,SAAArS,KAuBA,wGAtBAqS,UAAArS,KAAAgU,YAAA2xE,EACA,KAIAA,EAAAhoE,cAAAtL,UAGA+vC,EAAAn7C,IAAA,iCAGA,MAAAtJ,GACA,GAAAuuE,GAAA75D,SAAA65D,MACAyZ,GAAAjoE,IACA,gEACAwuD,EACA,2BAkBA,MATAyZ,GAAAC,gBACAD,EAAAvzE,IAAAuzE,EAAAC,gBAEAD,EAAAhoE,cACAgoE,EAAAvzE,IAAAuzE,EAAAhoE,cAAAtL,SAEAszE,EAAAtzE,WACAszE,EAAAvzE,IAAAuzE,EAAAtzE,UAEAszE,GAKAnC,EAAAhsF,UAAAyZ,MAAA,WACA,GAAAzK,GAAAlJ,IAeA,IAbAA,KAAAuoF,OAAA,EACAvoF,KAAAkoF,WAIAloF,KAAAkoF,SAAApzE,IAAApS,KAAA8lF,UAAA,GACA5/E,WAAA,WACA,OAAAM,EAAAg/E,WACAnzE,SAAArS,KAAA+T,YAAAvN,EAAAg/E,UACAh/E,EAAAg/E,SAAA,OAEazyE,KAAAoD,MAAA,KAEbmsC,EAAAnoD,aAAAmD,KAAAyoF,KAAA,CACA,GAAA9B,KACAA,GAAAztF,EAAAmsF,uCAAA,IACAsB,EAAAztF,EAAA4rF,4BAAA9kF,KAAAyoF,KACA9B,EAAAztF,EAAA6rF,4BAAA/kF,KAAA0oF,IACA,IAAAC,GAAA3oF,KAAA0lF,MAAAiB,EACAT,GAAA0C,gBAAAD,GAGA,GAAAngB,GAAAxoE,KAAAwoE,YACAA,KACAxoE,KAAAwoE,aAAA,KACAA,MAQA0d,EAAAhsF,UAAA6sF,cAAA,SAAA1zE,EAAAu0E,GAKA,IAJA5nF,KAAAyoF,KAAAp1E,EACArT,KAAA0oF,KAAAd,EACA5nF,KAAAuoF,OAAA,EAEAvoF,KAAA6oF,SASA3C,EAAAhsF,UAAA2uF,GAAA,WAIA,GAAA7oF,KAAAuoF,OACAvoF,KAAAumF,cACAvmF,KAAA+nF,oBAAA33B,SAAApwD,KAAAgoF,YAAAluF,OAAA,QAEAkG,KAAAioF,eACA,IAAAtB,KACAA,GAAAztF,EAAA4rF,4BAAA9kF,KAAAyoF,KACA9B,EAAAztF,EAAA6rF,4BAAA/kF,KAAA0oF,KACA/B,EAAAztF,EAAA8rF,gCAAAhlF,KAAAioF,aAKA,KAJA,GAAAU,GAAA3oF,KAAA0lF,MAAAiB,GAEAmC,EAAA,GACA1vF,EAAA,EACA4G,KAAAgoF,YAAAluF,OAAA,GAEAkG,KAAAgoF,YAAA,GACAvtF,EAAAX,OAhdA,GAgdAgvF,EAAAhvF,QAjdA,MA8cA,CAMA,GAAAivF,GAAA/oF,KAAAgoF,YAAA5tF,OACA0uF,GACAA,EACA,IACA5vF,EAAAgsF,oCACA9rF,EACA,IACA2vF,EAAAC,IACA,IACA9vF,EAAAisF,qCACA/rF,EACA,IACA2vF,EAAA7E,GACA,IACAhrF,EAAAksF,6BACAhsF,EACA,IACA2vF,EAAAtuF,EACArB,IAQA,MAFAuvF,IAAAG,EACA9oF,KAAAipF,GAAAN,EAAA3oF,KAAAioF,gBACA,EAGA,UASA/B,EAAAhsF,UAAAytF,eAAA,SAAAuB,EAAAC,EAAAz4E,GAEA1Q,KAAAgoF,YAAAhuF,MAA+BgvF,IAAAE,EAAAhF,GAAAiF,EAAA1uF,EAAAiW,IAG/B1Q,KAAAuoF,OACAvoF,KAAA6oF,MASA3C,EAAAhsF,UAAA+uF,GAAA,SAAAniD,EAAAsiD,GACA,GAAAlgF,GAAAlJ,IAEAA,MAAA+nF,oBAAA7mE,IAAAkoE,EAAA,EACA,IAAAC,GAAA,WACAngF,EAAA6+E,oBAAAxhC,OAAA6iC,GACAlgF,EAAA2/E,MAIAS,EAAA1gF,WAAAygF,EAAA5zE,KAAAoD,MAzgBA,OA0gBA0wE,EAAA,WAEAt+E,aAAAq+E,GAEAD,IAEArpF,MAAA8mF,OAAAhgD,EAAAyiD,IAOArD,EAAAhsF,UAAA4sF,OAAA,SAAAhgD,EAAA0iD,GACA,GAAAtgF,GAAAlJ,IACAglD,GAAAnoD,YACAmD,KAAAypF,eAAA3iD,EAAA0iD,GAGA5gF,WAAA,WACA,IAEA,IAAAM,EAAAq9E,aACA,MACA,IAAAmD,GAAAxgF,EAAAg/E,SAAApzE,IAAAsB,cAAA,SACAszE,GAAArlE,KAAA,kBACAqlE,EAAAzqF,OAAA,EACAyqF,EAAAtpE,IAAA0mB,EACA4iD,EAAA9uD,OAAA8uD,EAAAlzE,mBAAA,WACA,GAAAmzE,GAAAD,EAAAl6D,UACAm6D,IAAA,WAAAA,GAAA,aAAAA,IACAD,EAAA9uD,OAAA8uD,EAAAlzE,mBAAA,KACAkzE,EAAA7oE,YACA6oE,EAAA7oE,WAAApK,YAAAizE,GAEAF,MAGAE,EAAA7uD,QAAA,WACAiqB,EAAAn7C,IAAA,oCAAAm9B,GACA59B,EAAAq9E,cAAA,EACAr9E,EAAAyK,SAEAzK,EAAAg/E,SAAApzE,IAAApS,KAAAgU,YAAAgzE,GAEA,MAAArpF,MAGaoV,KAAAoD,MAAA,KAGbqtE,IAEAhtF,GAAAgtF,8B/C8uSM,SAAU/sF,EAAQD,EAASH,GAEjC,cAC4B,SAAS+S,GgDh0TrC,QAAA89E,GAAAC,GACAC,EAAAD,EApBA5vF,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAu+E,GAAAlhF,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACA6jE,EAAA7jE,EAAA,IACAs2E,EAAAt2E,EAAA,IACAisD,EAAAjsD,EAAA,GACAqsD,EAAArsD,EAAA,IACAksD,EAAAlsD,EAAA,GACAmsD,EAAAnsD,EAAA,GAGA+wF,EAAA,IACA,oBAAAC,cACAD,EAAAC,aAEA,mBAAAC,aACAF,EAAAE,WAKA9wF,EAAA0wF,kBAMA,IAAAK,GAAA,WAQA,QAAAA,GAAA/G,EAAA/tB,EAAAqwB,EAAApK,GACAp7E,KAAAkjF,SACAljF,KAAAkqF,eAAA,KACAlqF,KAAAmqF,OAAA,KACAnqF,KAAAoqF,YAAA,EACApqF,KAAAyiF,UAAA,EACAziF,KAAAuiF,cAAA,EACAviF,KAAA4hE,GAAA7c,EAAAyB,WAAAxmD,KAAAkjF,QACAljF,KAAAi+D,EAAArB,EAAAsB,aAAAC,cAAAhJ,GACAn1D,KAAA+vE,QAAAka,EAAAI,GAAAl1B,EAAAqwB,EAAApK,GA6RA,MAnRA6O,GAAAI,GAAA,SAAAl1B,EAAAqwB,EAAApK,GACA,GAAAuL,KAcA,OAbAA,GAAAtX,EAAApW,eAAAoW,EAAArW,kBACA9T,EAAAroD,aACA,mBAAA2jB,WACAA,SAAA+M,OACA,IAAA/M,SAAA+M,KAAAhtB,QAAA8uE,EAAAhW,gBACAstB,EAAAtX,EAAAlW,eAAAkW,EAAAjW,WAEAosB,IACAmB,EAAAtX,EAAAnW,yBAAAssB,GAEApK,IACAuL,EAAAtX,EAAA/V,oBAAA8hB,GAEAjmB,EAAA2a,cAAAT,EAAA9V,UAAAotB,IAOAsD,EAAA/vF,UAAAomB,KAAA,SAAAikE,EAAA/b,GACA,GAAAt/D,GAAAlJ,IACAA,MAAAwoE,eACAxoE,KAAAukF,YACAvkF,KAAA4hE,GAAA,2BAAA5hE,KAAA+vE,SACA/vE,KAAAylF,IAAA,EAEArgC,EAAA2T,kBAAAzwC,IAAA,gCACA,KACA,GAAA48B,EAAAroD,YAAA,CACA,GAAAytF,GAAAtlC,EAAA7oD,UAAAoO,WAAA,mBAEAvE,GACAk2B,SACAquD,aAAA,YAAAlb,EAAArW,iBAAA,IAAAihB,EAAA/0E,QAAA0C,YAAA,IAAAkE,EAAA0+E,SAAA,IAAAF,IAIAp+E,EAAAJ,EAAA,IACA8O,EAAA,GAAA5a,KAAA+vE,QAAAxvE,QAAA,UACA2L,EAAA,aAAAA,EAAA,YACAA,EAAA,YAAAA,EAAA,UACA0O,KACA5U,EAAA,OAAwC2a,OAAA/F,IAExC5a,KAAAyqF,OAAA,GAAAX,GAAA9pF,KAAA+vE,WAAA/pE,OAGAhG,MAAAyqF,OAAA,GAAAX,GAAA9pF,KAAA+vE,SAGA,MAAA1vE,GACAL,KAAA4hE,GAAA,iCACA,IAAAnmE,GAAA4E,EAAAiN,SAAAjN,EAAAqQ,IAKA,OAJAjV,IACAuE,KAAA4hE,GAAAnmE,OAEAuE,MAAAgmF,KAGAhmF,KAAAyqF,OAAAC,OAAA,WACAxhF,EAAA04D,GAAA,wBACA14D,EAAAu8E,IAAA,GAEAzlF,KAAAyqF,OAAAE,QAAA,WACAzhF,EAAA04D,GAAA,0CACA14D,EAAAuhF,OAAA,KACAvhF,EAAA88E,MAEAhmF,KAAAyqF,OAAAl1E,UAAA,SAAAhb,GACA2O,EAAA0hF,oBAAArwF,IAEAyF,KAAAyqF,OAAA5vD,QAAA,SAAAx6B,GACA6I,EAAA04D,GAAA,wCACA,IAAAnmE,GAAA4E,EAAAiN,SAAAjN,EAAAqQ,IACAjV,IACAyN,EAAA04D,GAAAnmE,GAEAyN,EAAA88E,OAMAiE,EAAA/vF,UAAAk4C,MAAA,aACA63C,EAAA9C,cAAA,WACA8C,EAAA7C,IAAA,GAEA6C,EAAA5C,YAAA,WACA,GAAAwD,IAAA,CACA,uBAAArzE,sBAAA0Y,UAAA,CACA,GAAA46D,GAAA,iCACAC,EAAAvzE,UAAA0Y,UAAA/X,MAAA2yE,EACAC,MAAAjxF,OAAA,GACA2/C,WAAAsxC,EAAA,UACAF,GAAA,GAIA,OAAAA,GACA,OAAAf,IACAG,EAAA7C,IAMA6C,EAAAe,iBAAA,WAGA,MAAA5lC,GAAA2T,kBAAAkyB,oBACA,IAAA7lC,EAAA2T,kBAAA/9D,IAAA,+BAEAivF,EAAA/vF,UAAAsoF,sBAAA,WACAp9B,EAAA2T,kBAAAxS,OAAA,+BAEA0jC,EAAA/vF,UAAAgxF,GAAA,SAAAx6E,GAEA,GADA1Q,KAAAmqF,OAAAnwF,KAAA0W,GACA1Q,KAAAmqF,OAAArwF,QAAAkG,KAAAoqF,YAAA,CACA,GAAAe,GAAAnrF,KAAAmqF,OAAA/7E,KAAA,GACApO,MAAAmqF,OAAA,IACA,IAAAiB,GAAAnmC,EAAA7nD,SAAA+tF,EAEAnrF,MAAAukF,UAAA6G,KAOAnB,EAAA/vF,UAAAmxF,GAAA,SAAAC,GACAtrF,KAAAoqF,YAAAkB,EACAtrF,KAAAmqF,WAQAF,EAAA/vF,UAAAqxF,GAAA,SAAA76E,GAIA,GAHAo0C,EAAAlpD,OAAA,OAAAoE,KAAAmqF,OAAA,kCAGAz5E,EAAA5W,QAAA,GACA,GAAAwxF,IAAA56E,CACA,KAAAyY,MAAAmiE,GAEA,MADAtrF,MAAAqrF,GAAAC,GACA,KAIA,MADAtrF,MAAAqrF,GAAA,GACA36E,GAMAu5E,EAAA/vF,UAAA0wF,oBAAA,SAAAY,GACA,UAAAxrF,KAAAyqF,OAAA,CAEA,GAAA/5E,GAAA86E,EAAA,IAIA,IAHAxrF,KAAAuiF,eAAA7xE,EAAA5W,OACAkG,KAAAi+D,EAAA6G,iBAAA,iBAAAp0D,EAAA5W,QACAkG,KAAAyrF,iBACA,OAAAzrF,KAAAmqF,OAEAnqF,KAAAkrF,GAAAx6E,OAEA,CAEA,GAAAg7E,GAAA1rF,KAAAurF,GAAA76E,EACA,QAAAg7E,GACA1rF,KAAAkrF,GAAAQ,MAQAzB,EAAA/vF,UAAA8iC,KAAA,SAAAtsB,GACA1Q,KAAAyrF,gBACA,IAAAjE,GAAAviC,EAAA5nD,UAAAqT,EACA1Q,MAAAyiF,WAAA+E,EAAA1tF,OACAkG,KAAAi+D,EAAA6G,iBAAA,aAAA0iB,EAAA1tF,OAGA,IAAAiuD,GAAAhD,EAAA8C,kBAAA2/B,EA3OA,MA6OAz/B,GAAAjuD,OAAA,GACAkG,KAAA2rF,GAAA5jC,EAAAjuD,OAAAgU,GAGA,QAAA1U,GAAA,EAAuBA,EAAA2uD,EAAAjuD,OAAqBV,IAC5C4G,KAAA2rF,GAAA5jC,EAAA3uD,KAGA6wF,EAAA/vF,UAAAotF,GAAA,WACAtnF,KAAA8lF,IAAA,EACA9lF,KAAAkqF,iBACAx2E,cAAA1T,KAAAkqF,gBACAlqF,KAAAkqF,eAAA,MAEAlqF,KAAAyqF,SACAzqF,KAAAyqF,OAAA92E,QACA3T,KAAAyqF,OAAA,OAGAR,EAAA/vF,UAAA8rF,GAAA,WACAhmF,KAAA8lF,KACA9lF,KAAA4hE,GAAA,+BACA5hE,KAAAsnF,KAEAtnF,KAAAwoE,eACAxoE,KAAAwoE,aAAAxoE,KAAAylF,IACAzlF,KAAAwoE,aAAA,QAQAyhB,EAAA/vF,UAAAyZ,MAAA,WACA3T,KAAA8lF,KACA9lF,KAAA4hE,GAAA,6BACA5hE,KAAAsnF,OAOA2C,EAAA/vF,UAAAuxF,eAAA,WACA,GAAAviF,GAAAlJ,IACA0T,eAAA1T,KAAAkqF,gBACAlqF,KAAAkqF,eAAAz2E,YAAA,WAEAvK,EAAAuhF,QACAvhF,EAAAyiF,GAAA,KAEAziF,EAAAuiF,kBACSh2E,KAAAoD,MAjST,QAySAoxE,EAAA/vF,UAAAyxF,GAAA,SAAAp+E,GAIA,IACAvN,KAAAyqF,OAAAztD,KAAAzvB,GAEA,MAAAlN,GACAL,KAAA4hE,GAAA,0CAAAvhE,EAAAiN,SAAAjN,EAAAqQ,KAAA,uBACA9H,WAAA5I,KAAAgmF,GAAA7+E,KAAAnH,MAAA,KAOAiqF,EAAA2B,6BAAA,EAKA3B,EAAA4B,eAAA,IACA5B,IAEA/wF,GAAA+wF,wBhDu2T6B3wF,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,YiDzrUAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAO9C,IAAA4kF,GAAA,WACA,QAAAA,MA0CA,MAlCAA,GAAApmF,UAAAqpD,IAAA,SAAA+G,EAAA55C,EAAA8uD,EAAA7O,KAOA2vB,EAAApmF,UAAA6oE,MAAA,SAAAzY,EAAA55C,EAAA8uD,EAAA7O,KAKA2vB,EAAApmF,UAAA0kE,iBAAA,SAAAxmD,KAMAkoE,EAAApmF,UAAAspE,gBAAA,SAAAlZ,EAAA55C,EAAA8uD,KAMA8gB,EAAApmF,UAAA0pE,kBAAA,SAAAtZ,EAAA55C,EAAA8uD,KAKA8gB,EAAApmF,UAAAmpE,mBAAA,SAAA/Y,EAAAkV,KAIA8gB,EAAApmF,UAAA8jF,YAAA,SAAA5Z,KACAkc,IAEApnF,GAAAonF,iBjDitUM,SAAUnnF,EAAQD,EAASH,GAEjC,YkDvwUAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAowF,GAAA/yF,EAAA,IACAm1D,EAAAn1D,EAAA,GACAyzD,EAAAzzD,EAAA,GACAy+D,EAAAz+D,EAAA,GAOAgzF,EAAA,WAIA,QAAAA,GAAA/yE,GACAhZ,KAAAgsF,GAAA,GAAAF,GAAAxgB,cAAAtyD,EAAA8yD,YACA9rE,KAAA+oE,GAAA/vD,EAAA8yD,WACA9rE,KAAAisF,GAAAF,EAAAG,GAAAlzE,GACAhZ,KAAAmsF,GAAAJ,EAAAK,GAAApzE,GAuGA,MAlGA+yE,GAAA7xF,UAAAmyF,aAAA,WACA,MAAArsF,MAAAisF,IAKAF,EAAA7xF,UAAAoyF,WAAA,WACA,MAAAtsF,MAAAmsF,IAMAJ,EAAA7xF,UAAAqyF,QAAA,SAAAzsD,GACA,MAAA9/B,MAAA+oE,GAAApc,QAAA3sD,KAAAqsF,eAAAvsD,IAAA,GACA9/B,KAAA+oE,GAAApc,QAAA7sB,EAAA9/B,KAAAssF,eAAA,GAKAP,EAAA7xF,UAAA+1D,YAAA,SAAAgR,EAAArgE,EAAAwpE,EAAAlJ,EAAArrD,EAAA01D,GAIA,MAHAvrE,MAAAusF,QAAA,GAAA//B,GAAAc,UAAA1sD,EAAAwpE,MACAA,EAAA5S,EAAAlJ,aAAAP,YAEA/tD,KAAAgsF,GAAA/7B,YAAAgR,EAAArgE,EAAAwpE,EAAAlJ,EAAArrD,EAAA01D,IAKAwgB,EAAA7xF,UAAAwxE,eAAA,SAAAnV,EAAAoV,EAAAJ,GACAI,EAAA3c,eAEA2c,EAAAnU,EAAAlJ,aAAAP,WAEA,IAAAurB,GAAA3N,EAAApZ,UAAAvyD,KAAA+oE,GAEAuQ,KAAArqB,eAAAuI,EAAAlJ,aAAAP,WACA,IAAAl1D,GAAAmH,IAMA,OALA2rE,GAAAlb,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAA8vD,GACA73D,EAAA0zF,QAAA,GAAA//B,GAAAc,UAAA1sD,EAAA8vD,MACA4oB,IAAA9pB,qBAAA5uD,EAAA42D,EAAAlJ,aAAAP,eAGA/tD,KAAAgsF,GAAAtgB,eAAAnV,EAAA+iB,EAAA/N,IAKAwgB,EAAA7xF,UAAA+0D,eAAA,SAAAsH,EAAA1G,GAEA,MAAA0G,IAKAw1B,EAAA7xF,UAAA0xE,aAAA,WACA,UAKAmgB,EAAA7xF,UAAA2xE,iBAAA,WACA,MAAA7rE,MAAAgsF,IAKAD,EAAA7xF,UAAA4xE,SAAA,WACA,MAAA9rE,MAAA+oE,IAOAgjB,EAAAG,GAAA,SAAAlzE,GACA,GAAAA,EAAAy3D,WAAA,CACA,GAAA+b,GAAAxzE,EAAA+3D,mBACA,OAAA/3D,GAAA8yD,WAAApe,SAAA10C,EAAA03D,qBAAA8b,GAGA,MAAAxzE,GAAA8yD,WAAAze,WAQA0+B,EAAAK,GAAA,SAAApzE,GACA,GAAAA,EAAA23D,SAAA,CACA,GAAA8b,GAAAzzE,EAAAg4D,iBACA,OAAAh4D,GAAA8yD,WAAApe,SAAA10C,EAAA43D,mBAAA6b,GAGA,MAAAzzE,GAAA8yD,WAAAte,WAGAu+B,IAEA7yF,GAAA6yF,gBlD8xUQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAU5yF,EAAQD,EAASH,GmDh7UjCI,EAAAD,QAAAH,EAAA,KnDu8UM,SAAUI,EAAQD,EAASH,GAEjC,YoDz7UA,SAAA2zF,GAAAzmB,GAEA,GAAA9/D,GAAA8/D,EAAAp+D,SAAAvB,gBAAA,oBAAAT,EAAA8mF,EAAA7lD,GAA+F,MAAAqmC,GAAAZ,YAAAG,cAAAE,gBAAA/mE,EAAAihC,KAG/FogC,UAAAgG,EAAAhG,UACAwB,MAAA5B,EAAA4B,MACAzD,SAAA/H,EAAA+H,SACAjf,cAAAlB,EAAAkB,cACAn+C,WACA+lE,cACAgf,eACK,QACL7nC,GAAAloD,cACA1D,EAAAD,QAAAiN,GA9BAlM,OAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAu+E,GAAAlhF,EAAA,GACAmkE,EAAAnkE,EAAA,GACAG,GAAA+rE,SAAA/H,EAAA+H,QACA,IAAA6B,GAAA/tE,EAAA,GACAG,GAAAwvE,MAAA5B,EAAA4B,KACA,IAAAwE,GAAAn0E,EAAA,GACAG,GAAAguE,UAAAgG,EAAAhG,SACA,IAAApiB,GAAA/rD,EAAA,EACAG,GAAA8sD,cAAAlB,EAAAkB,aACA,IAAAmnB,GAAAp0E,EAAA,IACA8O,EAAA9O,EAAA,KACA6zF,EAAA7zF,EAAA,KACAgsD,EAAAhsD,EAAA,GACA60E,EAAA1Q,EAAA+H,SAAA2I,WACA10E,GAAA00E,cAkBA10E,EAAAwzF,mBACAA,EAAAzS,EAAA/0E,QACA,IAAA2nF,GAAA9zF,EAAA,GACAG,GAAA2vE,aAAAgkB,EAAAhkB,YACA,IAAAlC,GAAA5tE,EAAA,GACAG,GAAAuvE,aAAA9B,EAAA8B,cpDi+UM,SAAUtvE,EAAQD,EAASH,GAEjC,YqDzgVAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAWA8/D,EAAA,WAIA,QAAAA,GAAAi0B,GACA9sF,KAAA8sF,KAEA9sF,KAAA+sF,GAAA,YA2CA,MArCAl0B,GAAA3+D,UAAAouB,IAAA,SAAA1nB,EAAAlF,GACA,MAAAA,EACAsE,KAAA8sF,GAAAt8D,WAAAxwB,KAAAgtF,GAAApsF,IAGAZ,KAAA8sF,GAAAv8D,QAAAvwB,KAAAgtF,GAAApsF,GAAAkkD,EAAAznD,UAAA3B,KAOAm9D,EAAA3+D,UAAAc,IAAA,SAAA4F,GACA,GAAAqsF,GAAAjtF,KAAA8sF,GAAAthD,QAAAxrC,KAAAgtF,GAAApsF,GACA,cAAAqsF,EACA,KAGAnoC,EAAA1nD,SAAA6vF,IAMAp0B,EAAA3+D,UAAAqsD,OAAA,SAAA3lD,GACAZ,KAAA8sF,GAAAt8D,WAAAxwB,KAAAgtF,GAAApsF,KAMAi4D,EAAA3+D,UAAA8yF,GAAA,SAAAtyF,GACA,MAAAsF,MAAA+sF,GAAAryF,GAEAm+D,EAAA3+D,UAAAgb,SAAA,WACA,MAAAlV,QAAA8sF,IAEAj0B,IAEA3/D,GAAA2/D,qBrDiiVM,SAAU1/D,EAAQD,EAASH,GAEjC,YsDnmVAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAOA+/D,EAAA,WACA,QAAAA,KACA94D,KAAAktF,MACAltF,KAAAirF,mBAAA,EAmBA,MAjBAnyB,GAAA5+D,UAAAouB,IAAA,SAAA1nB,EAAAlF,GACA,MAAAA,QACAsE,MAAAktF,GAAAtsF,GAGAZ,KAAAktF,GAAAtsF,GAAAlF,GAGAo9D,EAAA5+D,UAAAc,IAAA,SAAA4F,GACA,MAAAkkD,GAAAhnD,SAAAkC,KAAAktF,GAAAtsF,GACAZ,KAAAktF,GAAAtsF,GAEA,MAEAk4D,EAAA5+D,UAAAqsD,OAAA,SAAA3lD,SACAZ,MAAAktF,GAAAtsF,IAEAk4D,IAEA5/D,GAAA4/D,iBtD2nVM,SAAU3/D,EAAQD,EAASH,GAEjC,YuD7pVAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAmvE,EAAA,WAQA,QAAAA,GAAAD,EAAAvR,GACA12D,KAAAioE,YACAjoE,KAAA02D,WAQA,MAJAwR,GAAAhuE,UAAAyhD,OAAA,WAEA,MADAmJ,GAAAzlD,iBAAA,+BAAAyB,UAAAhH,SACgBmuE,UAAAjoE,KAAAioE,UAAAvR,SAAA12D,KAAA02D,SAAA/a,WAEhBusB,IAEAhvE,GAAAgvE,qBvDqrVM,SAAU/uE,EAAQD,EAASH,GAEjC,YwD7sVAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,EAeAG,GAAAmvE,WAAA,WAEA,GAAA8kB,GAAA,mEAGAC,EAAA,EAKAC,IACA,iBAAAz0E,GACA,GAAA00E,GAAA10E,IAAAw0E,CACAA,GAAAx0E,CACA,IAAAxf,GACAm0F,EAAAhoF,MAAA,EACA,KAAAnM,EAAA,EAAmBA,GAAA,EAAQA,IAC3Bm0F,EAAAn0F,GAAA+zF,EAAAh9E,OAAAyI,EAAA,IAGAA,EAAAnD,KAAAoD,MAAAD,EAAA,GAEAksC,GAAAlpD,OAAA,IAAAgd,EAAA,2BACA,IAAAvF,GAAAk6E,EAAAn/E,KAAA,GACA,IAAAk/E,EAKA,CAGA,IAAAl0F,EAAA,GAAwBA,GAAA,QAAAi0F,EAAAj0F,GAAmCA,IAC3Di0F,EAAAj0F,GAAA,CAEAi0F,GAAAj0F,SAVA,KAAAA,EAAA,EAAuBA,EAAA,GAAQA,IAC/Bi0F,EAAAj0F,GAAAqc,KAAAoD,MAAA,GAAApD,KAAAC,SAWA,KAAAtc,EAAA,EAAmBA,EAAA,GAAQA,IAC3Bia,GAAA85E,EAAAh9E,OAAAk9E,EAAAj0F,GAGA,OADA0rD,GAAAlpD,OAAA,KAAAyX,EAAAvZ,OAAA,oCACAuZ,OxDuuVM,SAAUla,EAAQD,EAASH,GAEjC,YyDlyVAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAmxF,GAAA9zF,EAAA,IACAy0F,EAAAz0F,EAAA,IACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GAIAg5E,EAAA,WAMA,QAAAA,GAAA0b,EAAAC,EAAAC,GACA3tF,KAAAytF,KACAztF,KAAA0tF,KACA1tF,KAAA2tF,KAmEA,MA9DA5b,GAAA73E,UAAA0zF,WAAA,SAAAh5B,GACA,gBAAAA,GAKAmd,EAAA73E,UAAA40B,YAAA,SAAA++D,EAAA3kC,GACA,GAAA8H,GAAA9H,EAAAqoB,iBAAAzF,UACA,WAAA0hB,GAAAM,UAAA,QAAA9tF,KAAA,GAAA6sF,GAAAhkB,aAAAglB,EAAAv3B,aAAApN,EAAAogB,SAAAtY,KAKA+gB,EAAA73E,UAAA6zF,eAAA,SAAAnN,GACA,GAAAoN,GAAAhuF,KAAA2tF,EACA,eAAA/M,EAAAqN,eAAA,CACAlpC,EAAAnpD,OAAAoE,KAAA0tF,GAAA,+DACA,IAAAQ,GAAAluF,KAAA0tF,EACA,mBAEAQ,EAAA50F,KAAA00F,EAAApN,EAAAnlF,QAIA,GAAA0yF,GAAAnuF,KAAAytF,EACA,mBACAU,EAAA70F,KAAA00F,EAAApN,EAAAlqB,YAOAqb,EAAA73E,UAAAk0F,kBAAA,SAAA3yF,EAAA0mD,GACA,MAAAniD,MAAA0tF,GACA,GAAAF,GAAAa,YAAAruF,KAAAvE,EAAA0mD,GAGA,MAMA4vB,EAAA73E,UAAAqyF,QAAA,SAAA9gC,GACA,MAAAA,aAAAsmB,MAGAtmB,EAAAgiC,KAAAztF,KAAAytF,IAKAhiC,EAAAgiC,KAAAztF,KAAAytF,IAAAhiC,EAAAkiC,KAAA3tF,KAAA2tF,KAMA5b,EAAA73E,UAAAo0F,eAAA,WACA,cAAAtuF,KAAAytF,IAEA1b,IAEA74E,GAAA64E,wBAUA,IAAAC,GAAA,WAMA,QAAAA,GAAAuc,EAAAb,EAAAC,GACA3tF,KAAAuuF,KACAvuF,KAAA0tF,KACA1tF,KAAA2tF,KAyFA,MApFA3b,GAAA93E,UAAA0zF,WAAA,SAAAh5B,GACA,GAAA45B,GAAA,mBAAA55B,EAAA,cAAAA,CAGA,OAFA45B,GACA,qBAAAA,EAAA,gBAAAA,EACA1pC,EAAAhnD,SAAAkC,KAAAuuF,GAAAC,IAKAxc,EAAA93E,UAAAk0F,kBAAA,SAAA3yF,EAAA0mD,GACA,MAAAniD,MAAA0tF,GACA,GAAAF,GAAAa,YAAAruF,KAAAvE,EAAA0mD,GAGA,MAMA6vB,EAAA93E,UAAA40B,YAAA,SAAA++D,EAAA3kC,GACAnE,EAAAnpD,OAAA,MAAAiyF,EAAAz+B,UAAA,wCACA,IAAAv7C,GAAAq1C,EAAAogB,SAAA3e,MAA0DkjC,EAAA,WAC1D78B,EAAA9H,EAAAqoB,iBAAAzF,UACA,WAAA0hB,GAAAM,UAAAD,EAAAxpE,KAAArkB,KAAA,GAAA6sF,GAAAhkB,aAAAglB,EAAAv3B,aAAAziD,EAAAm9C,GAAA68B,EAAAr3B,WAKAwb,EAAA93E,UAAA6zF,eAAA,SAAAnN,GACA,GAAAoN,GAAAhuF,KAAA2tF,EACA,eAAA/M,EAAAqN,eAAA,CACAlpC,EAAAnpD,OAAAoE,KAAA0tF,GAAA,+DACA,IAAAe,GAAAzuF,KAAA0tF,EACA,mBAEAe,EAAAn1F,KAAA00F,EAAApN,EAAAnlF,QAIA,GAAAizF,GAAA1uF,KAAAuuF,GAAA3N,EAAAhsB,UACA,mBACA85B,EAAAp1F,KAAA00F,EAAApN,EAAAlqB,SAAAkqB,EAAApqB,YAOAwb,EAAA93E,UAAAqyF,QAAA,SAAA9gC,GACA,GAAAA,YAAAumB,GAAA,CACA,IAAAhyE,KAAAuuF,KAAA9iC,EAAA8iC,GACA,QAEA,IAAAvuF,KAAA2tF,KAAAliC,EAAAkiC,GAAA,CACA,GAAAgB,GAAA7pC,EAAAzmD,SAAAotD,EAAA8iC,GAEA,IAAAI,IADA7pC,EAAAzmD,SAAA2B,KAAAuuF,IACA,CAIA,OAAAI,EAAA,CACA,GAAAC,GAAwD9pC,EAAA1mD,UAAAqtD,EAAA8iC,IACxDM,EAAuD/pC,EAAA1mD,UAAA4B,KAAAuuF,GACvD,SAAAM,IAAAD,GACAnjC,EAAA8iC,GAAAK,IACA5uF,KAAAuuF,GAAAM,IACApjC,EAAA8iC,GAAAK,KAAA5uF,KAAAuuF,GAAAM,IAIA,MAAA/pC,GAAA/mD,MAAAiC,KAAAuuF,GAAA,SAAA35B,EAAA5iD,GAAuF,MAAAy5C,GAAA8iC,GAAA35B,KAAA5iD,MAKvF,UAKAggE,EAAA93E,UAAAo0F,eAAA,WACA,cAAAtuF,KAAAuuF,IAEAvc,IAEA94E,GAAA84E,0BzD0zVM,SAAU74E,EAAQD,EAASH,GAEjC,Y0DhgWAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAKA+0F,EAAA,WAOA,QAAAA,GAAAl5B,EAAAkP,EAAApN,EAAAF,GACAx2D,KAAA40D,YACA50D,KAAA8jE,oBACA9jE,KAAA02D,WACA12D,KAAAw2D,WAoCA,MA/BAs3B,GAAA5zF,UAAA40F,QAAA,WACA,GAAAj7E,GAAA7T,KAAA02D,SAAA4S,QACA,iBAAAtpE,KAAA40D,UACA/gD,EAAAsuC,KAGAtuC,EAAA0zD,YAAAplB,MAMA2rC,EAAA5zF,UAAA+zF,aAAA,WACA,MAAAjuF,MAAA40D,WAKAk5B,EAAA5zF,UAAA6zF,eAAA,WACA,MAAA/tF,MAAA8jE,kBAAAiqB,eAAA/tF,OAKA8tF,EAAA5zF,UAAAgb,SAAA,WACA,MAAAlV,MAAA8uF,UACA,IACA9uF,KAAA40D,UACA,IACA9P,EAAAznD,UAAA2C,KAAA02D,SAAAsS,cAEA8kB,IAEA50F,GAAA40F,WACA,IAAAO,GAAA,WAMA,QAAAA,GAAAvqB,EAAAroE,EAAA0mD,GACAniD,KAAA8jE,oBACA9jE,KAAAvE,QACAuE,KAAAmiD,OA0BA,MArBAksC,GAAAn0F,UAAA40F,QAAA,WACA,MAAA9uF,MAAAmiD,MAKAksC,EAAAn0F,UAAA+zF,aAAA,WACA,gBAKAI,EAAAn0F,UAAA6zF,eAAA,WACA,MAAA/tF,MAAA8jE,kBAAAiqB,eAAA/tF,OAKAquF,EAAAn0F,UAAAgb,SAAA,WACA,MAAAlV,MAAAmiD,KAAA,WAEAksC,IAEAn1F,GAAAm1F,e1DwhWM,SAAUl1F,EAAQD,EAASH,GAEjC,Y2DvnWAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAg2F,EAAAh2F,EAAA,IACAy+D,EAAAz+D,EAAA,GACAisD,EAAAjsD,EAAA,GACAi2F,EAAAj2F,EAAA,IACAk2F,EAAAl2F,EAAA,IACAm2F,EAAAn2F,EAAA,IACA+9E,EAAA/9E,EAAA,GACAo2F,EAAAp2F,EAAA,IACAw6D,EAAAx6D,EAAA,GACAkuE,EAAAluE,EAAA,IACAq2F,EAAAr2F,EAAA,IAuBAqmE,EAAA,WAKA,QAAAA,GAAAiwB,GACArvF,KAAAqvF,KAMArvF,KAAAsvF,GAAAN,EAAAvlB,cAAArG,MAMApjE,KAAAuvF,GAAA,GAAAH,GAAAI,UACAxvF,KAAAyvF,MACAzvF,KAAA0vF,MA0nBA,MA/mBAtwB,GAAAllE,UAAA+nE,mBAAA,SAAA9f,EAAAwtC,EAAA3tB,EAAA2c,GAGA,MADA3+E,MAAAuvF,GAAAK,aAAAztC,EAAAwtC,EAAA3tB,EAAA2c,GACAA,EAIA3+E,KAAA6vF,GAAA,GAAAV,GAAApY,UAAAD,EAAAhhB,gBAAAjR,KAAA1C,EAAAwtC,QAWAvwB,EAAAllE,UAAA4oE,eAAA,SAAA3gB,EAAA4e,EAAAiB,GAEAhiE,KAAAuvF,GAAAO,SAAA3tC,EAAA4e,EAAAiB,EACA,IAAA+tB,GAAAf,EAAAvlB,cAAAE,WAAA5I,EACA,OAAA/gE,MAAA6vF,GAAA,GAAAX,GAAAc,MAAAlZ,EAAAhhB,gBAAAjR,KAAA1C,EAAA4tC,KASA3wB,EAAAllE,UAAAooE,aAAA,SAAAN,EAAAiuB,OACA,KAAAA,IAAgCA,GAAA,EAChC,IAAA1vE,GAAAvgB,KAAAuvF,GAAAW,SAAAluB,EAEA,IADAhiE,KAAAuvF,GAAAY,YAAAnuB,GAIA,CACA,GAAAouB,GAAApB,EAAAvlB,cAAArG,KAUA,OATA,OAAA7iD,EAAA0gD,KAEAmvB,IAAA9nE,IAAAirC,EAAA3J,KAAAwZ,OAAA,GAGApe,EAAA7mD,QAAAoiB,EAAAmpD,SAAA,SAAApf,EAAAxqB,GACAswD,IAAA9nE,IAAA,GAAAirC,GAAA3J,KAAAU,GAAAxqB,KAGA9/B,KAAA6vF,GAAA,GAAAd,GAAAsB,aAAA9vE,EAAA4hC,KAAAiuC,EAAAH,IAbA,UAuBA7wB,EAAAllE,UAAAylE,qBAAA,SAAAxd,EAAAwtC,GACA,MAAA3vF,MAAA6vF,GAAA,GAAAV,GAAApY,UAAAD,EAAAhhB,gBAAAK,OAAAhU,EAAAwtC,KASAvwB,EAAAllE,UAAA8mE,iBAAA,SAAA7e,EAAA4e,GACA,GAAAgvB,GAAAf,EAAAvlB,cAAAE,WAAA5I,EACA,OAAA/gE,MAAA6vF,GAAA,GAAAX,GAAAc,MAAAlZ,EAAAhhB,gBAAAK,OAAAhU,EAAA4tC,KAQA3wB,EAAAllE,UAAAo2F,oBAAA,SAAAnuC,GACA,MAAAniD,MAAA6vF,GAAA,GAAAZ,GAAAsB,eAAAzZ,EAAAhhB,gBAAAK,OAAAhU,KAUAid,EAAAllE,UAAA4mE,0BAAA,SAAA3e,EAAA8e,EAAA3B,GACA,GAAAkxB,GAAAxwF,KAAAywF,GAAAnxB,EACA,UAAAkxB,EAAA,CACA,GAAAzvF,GAAAq+D,EAAAsxB,GAAAF,GACAG,EAAA5vF,EAAAohD,KAAA8T,EAAAl1D,EAAAk1D,QACAnL,EAAAyI,EAAA3J,KAAAkB,aAAA6lC,EAAAxuC,GACAt/C,EAAA,GAAAssF,GAAApY,UAAAD,EAAAhhB,gBAAAM,qBAAAH,GAAAnL,EAAAmW,EACA,OAAAjhE,MAAA4wF,GAAAD,EAAA9tF,GAIA,UAWAu8D,EAAAllE,UAAA0mE,sBAAA,SAAAze,EAAA4e,EAAAzB,GACA,GAAAkxB,GAAAxwF,KAAAywF,GAAAnxB,EACA,IAAAkxB,EAAA,CACA,GAAAzvF,GAAAq+D,EAAAsxB,GAAAF,GACAG,EAAA5vF,EAAAohD,KAAA8T,EAAAl1D,EAAAk1D,QACAnL,EAAAyI,EAAA3J,KAAAkB,aAAA6lC,EAAAxuC,GACA4tC,EAAAf,EAAAvlB,cAAAE,WAAA5I,GACAl+D,EAAA,GAAAqsF,GAAAc,MAAAlZ,EAAAhhB,gBAAAM,qBAAAH,GAAAnL,EAAAilC,EACA,OAAA/vF,MAAA4wF,GAAAD,EAAA9tF,GAIA,UAUAu8D,EAAAllE,UAAA22F,0BAAA,SAAA1uC,EAAAmd,GACA,GAAAkxB,GAAAxwF,KAAAywF,GAAAnxB,EACA,IAAAkxB,EAAA,CACA,GAAAzvF,GAAAq+D,EAAAsxB,GAAAF,GACAG,EAAA5vF,EAAAohD,KAAA8T,EAAAl1D,EAAAk1D,QACAnL,EAAAyI,EAAA3J,KAAAkB,aAAA6lC,EAAAxuC,GACAt/C,EAAA,GAAAosF,GAAAsB,eAAAzZ,EAAAhhB,gBAAAM,qBAAAH,GAAAnL,EACA,OAAA9qD,MAAA4wF,GAAAD,EAAA9tF,GAIA,UAUAu8D,EAAAllE,UAAA6pE,qBAAA,SAAA7a,EAAA4a,GACA,GAAA3hB,GAAA+G,EAAA/G,KACAw1B,EAAA,KACAmZ,GAAA,CAGA9wF,MAAAsvF,GAAAvkB,cAAA5oB,EAAA,SAAA4uC,EAAAC,GACA,GAAAlmC,GAAAyI,EAAA3J,KAAAkB,aAAAimC,EAAA5uC,EACAw1B,MAAAqZ,EAAAlY,uBAAAhuB,GACAgmC,EACAA,GAAAE,EAAAvY,mBAEA,IAAAwY,GAAAjxF,KAAAsvF,GAAAt0F,IAAAmnD,EACA8uC,IAKAH,EACAA,GAAAG,EAAAxY,kBACAd,KAAAsZ,EAAAnY,uBAAAvlB,EAAA3J,KAAAwZ,SANA6tB,EAAA,GAAAhqB,GAAA2B,UACA5oE,KAAAsvF,GAAAtvF,KAAAsvF,GAAAhnE,IAAA65B,EAAA8uC,GAOA,IAAArZ,EACA,OAAAD,EACAC,GAAA,GAGAA,GAAA,EACAD,EAAAngB,EAAAlJ,aAAAP,WACA/tD,KAAAsvF,GAAArlB,QAAA9nB,GACAipB,aAAA,SAAAhc,EAAA8hC,GACA,GAAAC,GAAAD,EAAApY,uBAAAvlB,EAAA3J,KAAAwZ,MACA+tB,KACAxZ,IAAAnoB,qBAAAJ,EAAA+hC,MAIA,IAAAC,GAAAH,EAAAhY,mBAAA/vB,EACA,KAAAkoC,IAAAloC,EAAAqoB,iBAAAqH,eAAA,CAEA,GAAA4X,GAAApxB,EAAAiyB,GAAAnoC,EACApE,GAAAlpD,SAAA40F,IAAAxwF,MAAA0vF,IAAA,yCACA,IAAApwB,GAAAF,EAAAkyB,IACAtxF,MAAA0vF,GAAAc,GAAAlxB,EAEAt/D,KAAAyvF,GAAA,IAAAnwB,GAAAkxB,EAEA,GAAAjZ,GAAAv3E,KAAAuvF,GAAAgC,YAAApvC,GACA6d,EAAAixB,EAAAltB,qBAAA7a,EAAA4a,EAAAyT,EAAAI,EAAAC,EACA,KAAAwZ,IAAAN,EAAA,CACA,GAAArZ,GAAAwZ,EAAAlY,aAAA7vB,EACA8W,KAAA/7D,OAAAjE,KAAAwxF,GAAAtoC,EAAAuuB,IAEA,MAAAzX,IAaAZ,EAAAllE,UAAAgqE,wBAAA,SAAAhb,EAAA4a,EAAAuU,GACA,GAAAnvE,GAAAlJ,KAEAmiD,EAAA+G,EAAA/G,KACAsvC,EAAAzxF,KAAAsvF,GAAAt0F,IAAAmnD,GACAo2B,IAIA,IAAAkZ,IACA,YAAAvoC,EAAAmqB,mBACAoe,EAAAxY,mBAAA/vB,IAAA,CAIA,GAAAwoC,GAAAD,EAAAvtB,wBAAAhb,EAAA4a,EAAAuU,EACAoZ,GAAAlzF,YACAyB,KAAAsvF,GAAAtvF,KAAAsvF,GAAA/oC,OAAApE,GAEA,IAAAm2B,GAAAoZ,EAAApZ,OACAC,GAAAmZ,EAAA1xB,MAOA,IAAA2xB,IAAA,IACArZ,EAAAxhE,UAAA,SAAAoyC,GACA,MAAAA,GAAAqoB,iBAAAqH,iBAEAgZ,EAAA5xF,KAAAsvF,GAAA3kB,WAAAxoB,EAAA,SAAA2I,EAAA+mC,GACA,MAAAA,GAAApZ,mBAEA,IAAAkZ,IAAAC,EAAA,CACA,GAAA3nB,GAAAjqE,KAAAsvF,GAAArlB,QAAA9nB,EAGA,KAAA8nB,EAAA1rE,UAIA,OAFAuzF,GAAA9xF,KAAA+xF,GAAA9nB,GAEA7wE,EAAA,EAAmCA,EAAA04F,EAAAh4F,SAAqBV,EAAA,CACxD,GAAAq+E,GAAAqa,EAAA14F,GAAA44F,EAAAva,EAAAkB,WACA5vE,EAAA/I,KAAAiyF,GAAAxa,EACAz3E,MAAAqvF,GAAAhwB,eAAAD,EAAA8yB,GAAAF,GAAAhyF,KAAAmyF,GAAAH,GAAAjpF,EAAA4zE,OAAA5zE,EAAAy2D,cAUAoyB,GAAAtZ,EAAAx+E,OAAA,IAAAu+E,IAGAsZ,EAGA3xF,KAAAqvF,GAAAzvB,cAAAR,EAAA8yB,GAAAhpC,GADA,MAIAovB,EAAAn6E,QAAA,SAAAi0F,GACA,GAAAC,GAAAnpF,EAAAwmF,GAAAtwB,EAAAiyB,GAAAe,GACAlpF,GAAAmmF,GAAAzvB,cAAAR,EAAA8yB,GAAAE,GAAAC,MAKAryF,KAAAsyF,GAAAha,GAKA,MAAAC,IAWAnZ,EAAAllE,UAAA49E,uBAAA,SAAA31B,EAAAowC,GACA,GACAC,GAAAxyF,KAAAuvF,GACA5X,EAAA33E,KAAAsvF,GAAA3kB,WAAAxoB,EAAA,SAAAsoB,EAAAwmB,GACA,GAAAnmC,GAAAyI,EAAA3J,KAAAkB,aAAA2f,EAAAtoB,GACAw1B,EAAAsZ,EAAAnY,uBAAAhuB,EACA,IAAA6sB,EACA,MAAAA,IAGA,OAAA6a,GAAA1a,uBAAA31B,EAAAw1B,EAAA4a,GATA,IAmBAnzB,EAAAllE,UAAA63F,GAAA,SAAA9nB,GACA,MAAAA,GAAAM,KAAA,SAAAzf,EAAA2nC,EAAAC,GACA,GAAAD,KAAAha,kBAEA,OADAga,EAAAzZ,kBAKA,IAAA2Z,KAOA,OANAF,KACAE,EAAAF,EAAA5Z,iBAEA7zB,EAAA7mD,QAAAu0F,EAAA,SAAA9xF,EAAAgyF,GACAD,IAAA1uF,OAAA2uF,KAEAD,KAQAvzB,EAAAllE,UAAAo4F,GAAA,SAAAnS,GACA,OAAA3lE,GAAA,EAAuBA,EAAA2lE,EAAArmF,SAAoB0gB,EAAA,CAC3C,GAAAq4E,GAAA1S,EAAA3lE,EACA,KAAAq4E,EAAAthB,iBAAAqH,eAAA,CAEA,GAAAka,GAAA1zB,EAAAiyB,GAAAwB,GACAE,EAAA/yF,KAAA0vF,GAAAoD,SACA9yF,MAAA0vF,GAAAoD,SACA9yF,MAAAyvF,GAAA,IAAAsD,MAUA3zB,EAAA8yB,GAAA,SAAAhpC,GACA,MAAAA,GAAAqoB,iBAAAqH,iBACA1vB,EAAAqoB,iBAAAkL,YAIqCvzB,EAAAogB,SAGrCpgB,GAWAkW,EAAAllE,UAAAs3F,GAAA,SAAAtoC,EAAAuuB,GACA,GAAAt1B,GAAA+G,EAAA/G,KACAmd,EAAAt/D,KAAAmyF,GAAAjpC,GACAngD,EAAA/I,KAAAiyF,GAAAxa,GACAzX,EAAAhgE,KAAAqvF,GAAAhwB,eAAAD,EAAA8yB,GAAAhpC,GAAAoW,EAAAv2D,EAAA4zE,OAAA5zE,EAAAy2D,YACAyK,EAAAjqE,KAAAsvF,GAAArlB,QAAA9nB,EAGA,IAAAmd,EACAxa,EAAAlpD,QAAAquE,EAAAvuE,MAAA+8E,kBAAA,yDAsBA,QAlBAua,GAAA/oB,EAAAM,KAAA,SAAAzf,EAAA2nC,EAAAC,GACA,IAAA5nC,EAAAvsD,WACAk0F,GACAA,EAAAha,kBACA,OAAAga,EAAAzZ,kBAAAL,WAIA,IAAAsa,KAOA,OANAR,KACAQ,IAAAhvF,OAAAwuF,EAAA5Z,gBAAAp6E,IAAA,SAAAg5E,GAA8G,MAAAA,GAAAkB,eAE9G3zB,EAAA7mD,QAAAu0F,EAAA,SAAA9xF,EAAAsyF,GACAD,IAAAhvF,OAAAivF,KAEAD,IAGA75F,EAAA,EAA2BA,EAAA45F,EAAAl5F,SAA0BV,EAAA,CACrD,GAAA+5F,GAAAH,EAAA55F,EACA4G,MAAAqvF,GAAAzvB,cAAAR,EAAA8yB,GAAAiB,GAAAnzF,KAAAmyF,GAAAgB,IAGA,MAAAnzB,IAQAZ,EAAAllE,UAAA+3F,GAAA,SAAAxa,GACA,GAAAvuE,GAAAlJ,KACAkpD,EAAAuuB,EAAAkB,WACArZ,EAAAt/D,KAAAmyF,GAAAjpC,EACA,QACAyzB,OAAA,WAEA,OADAlF,EAAAkC,kBAAAniB,EAAAlJ,aAAAP,YACA4C,QAEA6O,WAAA,SAAA9kC,GACA,UAAAA,EACA,MAAA4kC,GACAp2D,EAAA2nF,0BAAA3nC,EAAA/G,KAAAmd,GAGAp2D,EAAAonF,oBAAApnC,EAAA/G,KAMA,IAAA1mD,GAAAspD,EAAAkE,mBAAAvuB,EAAAwuB,EACA,OAAAhgD,GAAAg7D,wBAAAhb,EACA,KAAAztD,MAWA2jE,EAAAiyB,GAAA,SAAAnoC,GACA,MAAAA,GAAA/G,KAAA,IAAA+G,EAAAmqB,mBAQAjU,EAAAsxB,GAAA,SAAAF,GACA,GAAA4C,GAAA5C,EAAAjwF,QAAA,IAEA,OADAukD,GAAAlpD,QAAA,IAAAw3F,KAAA5C,EAAA12F,OAAA,oBAEAm8D,QAAAu6B,EAAAv5E,OAAAm8E,EAAA,GACAjxC,KAAA,GAAAoR,GAAA3J,KAAA4mC,EAAAv5E,OAAA,EAAAm8E,MASAh0B,EAAAllE,UAAAu2F,GAAA,SAAAnxB,GACA,MAAAt/D,MAAAyvF,GAAA,IAAAnwB,IAQAF,EAAAllE,UAAAi4F,GAAA,SAAAjpC,GACA,GAAAsnC,GAAApxB,EAAAiyB,GAAAnoC,EACA,OAAAlE,GAAAtmD,QAAAsB,KAAA0vF,GAAAc,IAOApxB,EAAAkyB,GAAA,WACA,MAAAlyB,GAAAi0B,MAUAj0B,EAAAllE,UAAA02F,GAAA,SAAAD,EAAAjwC,GACA,GAAAuwC,GAAAjxF,KAAAsvF,GAAAt0F,IAAA21F,EACA7rC,GAAAlpD,OAAAq1F,EAAA,uDACA,IAAA1Z,GAAAv3E,KAAAuvF,GAAAgC,YAAAZ,EACA,OAAAM,GAAA3Z,eAAA52B,EAAA62B,EACA,OAmBAnY,EAAAllE,UAAA21F,GAAA,SAAAnvC,GACA,MAAA1gD,MAAAszF,GAAA5yC,EAAA1gD,KAAAsvF,GACA,KAAAtvF,KAAAuvF,GAAAgC,YAAAh+B,EAAA3J,KAAAwZ,SAYAhE,EAAAllE,UAAAo5F,GAAA,SAAA5yC,EAAA6yC,EAAA5b,EAAAJ,GACA,GAAA72B,EAAAyB,KAAA5jD,UACA,MAAAyB,MAAAwzF,GAAA9yC,EAAA6yC,EAAA5b,EAAAJ,EAGA,IAAA0Z,GAAAsC,EAAAv4F,IAAAu4D,EAAA3J,KAAAwZ,MAEA,OAAAuU,GAAA,MAAAsZ,IACAtZ,EAAAsZ,EAAAnY,uBAAAvlB,EAAA3J,KAAAwZ,OAEA,IAAApD,MACA5Q,EAAA1O,EAAAyB,KAAA+H,WACAupC,EAAA/yC,EAAAu2B,kBAAA7nB,GACA8a,EAAAqpB,EAAA7pB,SAAA1uE,IAAAo0D,EACA,IAAA8a,GAAAupB,EAAA,CACA,GAAAC,GAAA/b,EACAA,EAAAxoB,kBAAAC,GACA,KACAukC,EAAApc,EAAA5sB,MAAAyE,EACA4Q,KAAA/7D,OAAAjE,KAAAszF,GAAAG,EAAAvpB,EAAAwpB,EAAAC,IAKA,MAHA1C,KACAjxB,IAAA/7D,OAAAgtF,EAAA3Z,eAAA52B,EAAA62B,EAAAI,KAEA3X,GAaAZ,EAAAllE,UAAAs5F,GAAA,SAAA9yC,EAAA6yC,EAAA5b,EAAAJ,GACA,GAAAruE,GAAAlJ,KACAixF,EAAAsC,EAAAv4F,IAAAu4D,EAAA3J,KAAAwZ,MAEA,OAAAuU,GAAA,MAAAsZ,IACAtZ,EAAAsZ,EAAAnY,uBAAAvlB,EAAA3J,KAAAwZ,OAEA,IAAApD,KAcA,OAbAuzB,GAAA7pB,SAAA9X,iBAAA,SAAAxC,EAAA8a,GACA,GAAAwpB,GAAA/b,EACAA,EAAAxoB,kBAAAC,GACA,KACAukC,EAAApc,EAAA5sB,MAAAyE,GACAqkC,EAAA/yC,EAAAu2B,kBAAA7nB,EACAqkC,KACAzzB,IAAA/7D,OAAAiF,EAAAsqF,GAAAC,EAAAvpB,EAAAwpB,EAAAC,OAGA1C,IACAjxB,IAAA/7D,OAAAgtF,EAAA3Z,eAAA52B,EAAA62B,EAAAI,KAEA3X,GAOAZ,EAAAi0B,GAAA,EACAj0B,IAEAlmE,GAAAkmE,Y3D+oWM,SAAUjmE,EAAQD,EAASH,GAEjC,Y4Dr0XAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAw6D,EAAAx6D,EAAA,GACA+9E,EAAA/9E,EAAA,GACAs3F,EAAA,WAOA,QAAAA,GACAluC,EACAyxC,EACA3D,GACAjwF,KAAAmiD,OACAniD,KAAA4zF,eACA5zF,KAAAiwF,SAEAjwF,KAAAqkB,KAAAyyD,EAAAjhB,cAAAg+B,eAEA7zF,KAAA6V,OAAAihE,EAAAhhB,gBAAAjR,KAoBA,MAfAwrC,GAAAn2F,UAAA+8E,kBAAA,SAAA7nB,GACA,GAAApvD,KAAAmiD,KAAA5jD,UAIA,UAAAyB,KAAA4zF,aAAAl4F,MAGA,MAFAopD,GAAAlpD,OAAAoE,KAAA4zF,aAAAlqB,SAAAnrE,UAAA,4DAEAyB,IAGA,IAAAkqE,GAAAlqE,KAAA4zF,aAAA3pB,QAAA,GAAA1W,GAAA3J,KAAAwF,GACA,WAAAihC,GAAA98B,EAAA3J,KAAAwZ,MAAA8G,EAAAlqE,KAAAiwF,QATA,MADAnrC,GAAAlpD,OAAAoE,KAAAmiD,KAAA+H,aAAAkF,EAAA,iDACA,GAAAihC,GAAArwF,KAAAmiD,KAAAiI,WAAApqD,KAAA4zF,aAAA5zF,KAAAiwF,SAYAI,IAEAn3F,GAAAm3F,gB5D61XM,SAAUl3F,EAAQD,EAASH,GAEjC,Y6D14XAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA63D,GAAAx6D,EAAA,GACA+9E,EAAA/9E,EAAA,GAOAw3F,EAAA,WACA,QAAAA,GAAA16E,EAAAssC,GACAniD,KAAA6V,SACA7V,KAAAmiD,OAEAniD,KAAAqkB,KAAAyyD,EAAAjhB,cAAAi+B,gBAUA,MARAvD,GAAAr2F,UAAA+8E,kBAAA,SAAA7nB,GACA,MAAApvD,MAAAmiD,KAAA5jD,UACA,GAAAgyF,GAAAvwF,KAAA6V,OAAA09C,EAAA3J,KAAAwZ,OAGA,GAAAmtB,GAAAvwF,KAAA6V,OAAA7V,KAAAmiD,KAAAiI,aAGAmmC,IAEAr3F,GAAAq3F,kB7Dk6XM,SAAUp3F,EAAQD,EAASH,GAEjC,Y8D97XAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAo7E,GAAA/9E,EAAA,GACAo2F,EAAAp2F,EAAA,IACAw6D,EAAAx6D,EAAA,GACA+rD,EAAA/rD,EAAA,GAQAi3F,EAAA,WACA,QAAAA,GACAn6E,EACAssC,EACAunB,GACA1pE,KAAA6V,SACA7V,KAAAmiD,OACAniD,KAAA0pE,WAEA1pE,KAAAqkB,KAAAyyD,EAAAjhB,cAAAk+B,MAsCA,MAjCA/D,GAAA91F,UAAA+8E,kBAAA,SAAA7nB,GACA,GAAApvD,KAAAmiD,KAAA5jD,UAAA,CACA,GAAA2rE,GAAAlqE,KAAA0pE,SAAAO,QAAA,GAAA1W,GAAA3J,KAAAwF,GACA,OAAA8a,GAAA3rE,UAEA,KAEA2rE,EAAAxuE,MAEA,GAAAyzF,GAAApY,UAAA/2E,KAAA6V,OAAA09C,EAAA3J,KAAAwZ,MAAA8G,EAAAxuE,OAIA,GAAAs0F,GAAAhwF,KAAA6V,OAAA09C,EAAA3J,KAAAwZ,MAAA8G,GAKA,MADAplB,GAAAlpD,OAAAoE,KAAAmiD,KAAA+H,aAAAkF,EAAA,kEACA,GAAA4gC,GAAAhwF,KAAA6V,OAAA7V,KAAAmiD,KAAAiI,WAAApqD,KAAA0pE,WAMAsmB,EAAA91F,UAAAgb,SAAA,WACA,mBACAlV,KAAAmiD,KACA,KACAniD,KAAA6V,OACA,WACA7V,KAAA0pE,SACA,KAEAsmB,IAEA92F,GAAA82F,S9Ds9XM,SAAU72F,EAAQD,EAASH,GAEjC,Y+DrhYAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAowF,GAAA/yF,EAAA,IACAi7F,EAAAj7F,EAAA,IACAy+D,EAAAz+D,EAAA,GACAm+E,EAAAn+E,EAAA,IACAo+E,EAAAp+E,EAAA,IACAk7F,EAAAl7F,EAAA,IACA+rD,EAAA/rD,EAAA,GACA+9E,EAAA/9E,EAAA,GACAsyE,EAAAtyE,EAAA,IACAm1D,EAAAn1D,EAAA,GAWAo/E,EAAA,WAMA,QAAAA,GAAA+b,EAAAC,GACAn0F,KAAAk0F,KACAl0F,KAAAo0F,KACA,IAAAp7E,GAAAhZ,KAAAk0F,GAAA3iB,iBACA8iB,EAAA,GAAAvI,GAAAxgB,cAAAtyD,EAAA8yD,YACAhjE,EAAAkQ,EAAAs7E,eAKAt0F,MAAAu0F,GAAA,GAAAP,GAAAQ,cAAA1rF,EACA,IAAA2rF,GAAAN,EAAAxa,iBACA+a,EAAAP,EAAA1a,gBAEAD,EAAA6a,EAAA3oB,eAAAlU,EAAAlJ,aAAAP,WAAA0mC,EAAA/0B,UAAA,MACA2Z,EAAAvwE,EAAA4iE,eAAAlU,EAAAlJ,aAAAP,WAAA2mC,EAAAh1B,UAAA,MACAi1B,EAAA,GAAAzd,GAAAhS,UAAAsU,EAAAib,EAAAnvB,qBAAA+uB,EAAAzoB,gBACAgpB,EAAA,GAAA1d,GAAAhS,UAAAmU,EAAAqb,EAAApvB,qBAAAx8D,EAAA8iE,eAKA5rE,MAAA60F,GAAA,GAAA1d,GAAAe,UAAA0c,EAAAD,GAKA30F,KAAA80F,GAAA,GAAAb,GAAAc,eAAA/0F,KAAAk0F,IAqIA,MAhIA/b,GAAAj+E,UAAAy+E,SAAA,WACA,MAAA34E,MAAAk0F,IAKA/b,EAAAj+E,UAAAy/E,eAAA,WACA,MAAA35E,MAAA60F,GAAAlb,iBAAAja,WAMAyY,EAAAj+E,UAAA4+E,uBAAA,SAAA32B,GACA,GAAAZ,GAAAvhD,KAAA60F,GAAAjb,uBACA,OAAAr4B,KAGAvhD,KAAAk0F,GAAA3iB,iBAAAqH,iBACAz2B,EAAA5jD,YAAAgjD,EAAA4N,kBAAAhN,EAAA+H,YAAA3rD,WACAgjD,EAAA8N,SAAAlN,GAGA,MAKAg2B,EAAAj+E,UAAAqE,QAAA,WACA,WAAAyB,KAAAo0F,GAAAt6F,QAKAq+E,EAAAj+E,UAAA6pE,qBAAA,SAAAD,GACA9jE,KAAAo0F,GAAAp6F,KAAA8pE,IAOAqU,EAAAj+E,UAAAgqE,wBAAA,SAAAJ,EAAAuU,GACA,GAAAE,KACA,IAAAF,EAAA,CACAvzB,EAAAlpD,OAAA,MAAAkoE,EAAA,kDACA,IAAAkxB,GAAAh1F,KAAAk0F,GAAA/xC,IACAniD,MAAAo0F,GAAAj2F,QAAA,SAAA82F,GACA5c,EAA8CA,CAC9C,IAAA6c,GAAAD,EAAA7G,kBAAA/V,EAAA2c,EACAE,IACA3c,EAAAv+E,KAAAk7F,KAIA,GAAApxB,EAAA,CAEA,OADA/wD,MACA3Z,EAAA,EAA2BA,EAAA4G,KAAAo0F,GAAAt6F,SAAqCV,EAAA,CAChE,GAAA+7F,GAAAn1F,KAAAo0F,GAAAh7F,EACA,IAAA+7F,EAAA5I,QAAAzoB,IAGA,GAAAA,EAAAwqB,iBAAA,CAEAv7E,IAAA9O,OAAAjE,KAAAo0F,GAAAphF,MAAA5Z,EAAA,GACA,YALA2Z,GAAA/Y,KAAAm7F,GAQAn1F,KAAAo0F,GAAArhF,MAGA/S,MAAAo0F,KAEA,OAAA7b,IAUAJ,EAAAj+E,UAAAo9E,eAAA,SAAA52B,EAAA62B,EAAA6d,GACA10C,EAAAr8B,OAAAyyD,EAAAjhB,cAAAk+B,OACA,OAAArzC,EAAA7qC,OAAAogD,UACAnR,EAAAlpD,OAAAoE,KAAA60F,GAAAjb,wBAAA,6DACA90B,EAAAlpD,OAAAoE,KAAA60F,GAAAnb,uBAAA,2DAEA,IAAA2b,GAAAr1F,KAAA60F,GACAj7F,EAAAoG,KAAAu0F,GAAAjd,eAAA+d,EAAA30C,EAAA62B,EAAA6d,EAKA,OAJAp1F,MAAAu0F,GAAAe,cAAA17F,EAAAq+E,WACAnzB,EAAAlpD,OAAAhC,EAAAq+E,UAAA0B,iBAAArU,uBACA+vB,EAAA1b,iBAAArU,qBAAA,2DACAtlE,KAAA60F,GAAAj7F,EAAAq+E,UACAj4E,KAAAu1F,GAAA37F,EAAA47F,QAAA57F,EAAAq+E,UAAAwB,gBAAA/Z,UAAA,OAMAyY,EAAAj+E,UAAAk+E,iBAAA,SAAA6c,GACA,GAAA5b,GAAAr5E,KAAA60F,GAAApb,gBACAgc,IAUA,OATApc,GAAA3Z,UAAA1Q,cACAqqB,EAAA3Z,UACAjP,aAAAvC,EAAAJ,eAAA,SAAAltD,EAAA8vD,GACA+kC,EAAAz7F,KAAAqxE,EAAAhV,OAAAO,iBAAAh2D,EAAA8vD,MAGA2oB,EAAA/T,sBACAmwB,EAAAz7F,KAAAqxE,EAAAhV,OAAAI,YAAA4iB,EAAA3Z,YAEA1/D,KAAAu1F,GAAAE,EAAApc,EAAA3Z,UAAAu1B,IASA9c,EAAAj+E,UAAAq7F,GAAA,SAAAC,EAAA3d,EAAA/T,GACA,GAAA4xB,GAAA5xB,GACAA,GACA9jE,KAAAo0F,EACA,OAAAp0F,MAAA80F,GAAAa,yBAAAH,EAAA3d,EAAA6d,IAEAvd,IAEAj/E,GAAAi/E,Q/D6iYM,SAAUh/E,EAAQD,EAASH,GAEjC,YgE5uYAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAo7E,GAAA/9E,EAAA,GACA+rD,EAAA/rD,EAAA,GACA68F,EAAA78F,EAAA,IACAsyE,EAAAtyE,EAAA,IACAy+D,EAAAz+D,EAAA,GACAo1D,EAAAp1D,EAAA,IACAi2F,EAAAj2F,EAAA,IACAw6D,EAAAx6D,EAAA,GACA88F,EAAA98F,EAAA,IAKA+8F,EAAA,WAKA,QAAAA,GAAA7d,EAAAud,GACAx1F,KAAAi4E,YACAj4E,KAAAw1F,UAEA,MAAAM,KAEA58F,GAAA48F,iBAIA,IAAAtB,GAAA,WAIA,QAAAA,GAAAuB,GACA/1F,KAAA+1F,KA4hBA,MAvhBAvB,GAAAt6F,UAAAo7F,cAAA,SAAArd,GACAnzB,EAAAlpD,OAAAq8E,EACAwB,gBACA/Z,UACA/M,UAAA3yD,KAAA+1F,GAAAjqB,YAAA,0BACAhnB,EAAAlpD,OAAAq8E,EACA0B,iBACAja,UACA/M,UAAA3yD,KAAA+1F,GAAAjqB,YAAA,4BASA0oB,EAAAt6F,UAAAo9E,eAAA,SAAA+d,EAAA30C,EAAA62B,EAAA4Z,GACA,GACA6E,GAAAC,EADAC,EAAA,GAAAN,GAAAO,sBAEA,IAAAz1C,EAAAr8B,OAAAyyD,EAAAjhB,cAAAmhB,UAAA,CACA,GAAAof,GAAA11C,CACA01C,GAAAvgF,OAAAkgD,SACAigC,EAAAh2F,KAAAq2F,GAAAhB,EAAAe,EAAAj0C,KAAAi0C,EAAAn1B,KAAAsW,EAAA4Z,EAAA+E,IAGApxC,EAAAlpD,OAAAw6F,EAAAvgF,OAAAmgD,WAAA,mBAIAigC,EACAG,EAAAvgF,OAAAqgD,QACAm/B,EAAA1b,iBAAApU,eACA6wB,EAAAj0C,KAAA5jD,UACAy3F,EAAAh2F,KAAAs2F,GAAAjB,EAAAe,EAAAj0C,KAAAi0C,EAAAn1B,KAAAsW,EAAA4Z,EAAA8E,EAAAC,QAGA,IAAAx1C,EAAAr8B,OAAAyyD,EAAAjhB,cAAAk+B,MAAA,CACA,GAAAhxB,GAAAriB,CACAqiB,GAAAltD,OAAAkgD,SACAigC,EAAAh2F,KAAAu2F,GAAAlB,EAAAtyB,EAAA5gB,KAAA4gB,EAAA2G,SAAA6N,EAAA4Z,EAAA+E,IAGApxC,EAAAlpD,OAAAmnE,EAAAltD,OAAAmgD,WAAA,mBAEAigC,EACAlzB,EAAAltD,OAAAqgD,QAAAm/B,EAAA1b,iBAAApU,aACAywB,EAAAh2F,KAAAw2F,GAAAnB,EAAAtyB,EAAA5gB,KAAA4gB,EAAA2G,SAAA6N,EAAA4Z,EAAA8E,EAAAC,QAGA,IAAAx1C,EAAAr8B,OAAAyyD,EAAAjhB,cAAAg+B,eAAA,CACA,GAAAvxB,GAAA5hB,CAKAs1C,GAJA1zB,EAAA2tB,OAIAjwF,KAAAy2F,GAAApB,EAAA/yB,EAAAngB,KAAAo1B,EAAA4Z,EAAA+E,GAHAl2F,KAAA02F,GAAArB,EAAA/yB,EAAAngB,KAAAmgB,EAAAsxB,aAAArc,EAAA4Z,EAAA+E,OAMA,IAAAx1C,EAAAr8B,OAAAyyD,EAAAjhB,cAAAi+B,gBAIA,KAAAhvC,GAAAjpD,eAAA,2BAAA6kD,EAAAr8B,KAHA2xE,GAAAh2F,KAAA22F,GAAAtB,EAAA30C,EAAAyB,KAAAo1B,EAAA2e,GAKA,GAAAV,GAAAU,EAAAU,YAEA,OADApC,GAAAqC,GAAAxB,EAAAW,EAAAR,GACA,GAAAM,GAAAE,EAAAR,IAQAhB,EAAAqC,GAAA,SAAAxB,EAAAW,EAAAE,GACA,GAAA7c,GAAA2c,EAAAvc,eACA,IAAAJ,EAAA/T,qBAAA,CACA,GAAAwxB,GAAAzd,EAAA3Z,UAAA1Q,cAAAqqB,EAAA3Z,UAAAnhE,UACAw4F,EAAA1B,EAAA3b,wBACAwc,EAAAp8F,OAAA,IACAu7F,EAAA5b,gBAAAnU,sBACAwxB,IACAzd,EACA3Z,UACAlU,OAAiD,KACjD6tB,EACA3Z,UACA7S,cACArB,OAAAurC,EAAAlqC,iBACAqpC,EAAAl8F,KAAAqxE,EAAAhV,OAAAI,YACiCu/B,EAAAtc,2BAajC8a,EAAAt6F,UAAA88F,GAAA,SAAA/e,EAAAgf,EAAA1f,EAAA1hE,EAAAqgF,GACA,GAAAgB,GAAAjf,EAAAwB,eACA,UAAAlC,EAAA4f,eAAAF,GAEA,MAAAhf,EAGA,IAAA2c,OAAA,GAAAwC,MAAA,EACA,IAAAH,EAAA14F,UAGA,GADAumD,EAAAlpD,OAAAq8E,EAAA0B,iBAAArU,qBAAA,8DACA2S,EAAA0B,iBAAApU,aAAA,CAIA,GAAAoS,GAAAM,EAAA2B,wBACAyd,EAAA1f,YAAAngB,GAAAlJ,aACAqpB,EACAngB,EAAAlJ,aAAAP,WACAupC,EAAA/f,EAAAS,0BAAAqf,EACAzC,GAAA50F,KAAA+1F,GAAArqB,eAAAuM,EAAAwB,gBAAA/Z,UAAA43B,EAAApB,OAEA,CACA,GAAAqB,GAAAhgB,EAAAO,uBAAAG,EAAA2B,wBACAgb,GAAA50F,KAAA+1F,GAAArqB,eAAAuM,EAAAwB,gBAAA/Z,UAAA63B,EAAArB,OAGA,CACA,GAAAr/B,GAAAogC,EAAA/sC,UACA,iBAAA2M,EAAA,CACA/R,EAAAlpD,OAAA,GAAAq7F,EAAA9sC,YAAA,wDACA,IAAAqtC,GAAAN,EAAAx3B,SACA03B,GAAAnf,EAAA0B,iBAAAja,SAEA,IAAA+3B,GAAAlgB,EAAAmgB,mCAAAT,EAAAO,EAAAJ,EAEAxC,GADA,MAAA6C,EACAz3F,KAAA+1F,GAAA9mC,eAAAuoC,EAAAC,GAIAP,EAAAx3B,cAGA,CACA,GAAAi4B,GAAAV,EAAA7sC,WAEAwtC,MAAA,EACA,IAAAV,EAAAzxB,mBAAA5O,GAAA,CACAugC,EAAAnf,EAAA0B,iBAAAja,SACA,IAAAm4B,GAAAtgB,EAAAmgB,mCAAAT,EAAAC,EAAAx3B,UAAA03B,EAEAQ,GADA,MAAAC,EACAX,EACAx3B,UACAvQ,kBAAA0H,GACA5G,YAAA0nC,EAAAE,GAIAX,EACAx3B,UACAvQ,kBAAA0H,OAIA+gC,GAAArgB,EAAAugB,kBAAAjhC,EAAAohB,EAAA0B,iBAGAib,GADA,MAAAgD,EACA53F,KAAA+1F,GAAA9lC,YAAAinC,EAAAx3B,UAAA7I,EAAA+gC,EAAAD,EAAA9hF,EAAAqgF,GAIAgB,EAAAx3B,WAIA,MAAAuY,GAAAmB,gBAAAwb,EAAAsC,EAAA5xB,sBAAA2xB,EAAA14F,UAAAyB,KAAA+1F,GAAAnqB,iBAcA4oB,EAAAt6F,UAAAo8F,GAAA,SAAAjB,EAAA4B,EAAAc,EAAAxgB,EAAA4Z,EAAA8E,EAAAC,GACA,GACAvB,GADAqD,EAAA3C,EAAA1b,iBAEAse,EAAAhC,EACAj2F,KAAA+1F,GACA/1F,KAAA+1F,GAAAlqB,kBACA,IAAAorB,EAAA14F,UACAo2F,EAAAsD,EAAAvsB,eAAAssB,EAAAt4B,UAAAq4B,EAAA,UAEA,IAAAE,EAAArsB,iBAAAosB,EAAAzyB,aAAA,CAEA,GAAA2yB,GAAAF,EACAt4B,UACAzP,YAAAgnC,EAAAc,EACApD,GAAAsD,EAAAvsB,eAAAssB,EAAAt4B,UAAAw4B,EAAA,UAEA,CACA,GAAArhC,GAAAogC,EAAA/sC,UACA,KAAA8tC,EAAAxyB,kBAAAyxB,IACAA,EAAA9sC,YAAA,EAEA,MAAAkrC,EAEA,IAAAsC,GAAAV,EAAA7sC,WACAsG,EAAAsnC,EAAAt4B,UAAAvQ,kBAAA0H,GACApH,EAAAiB,EAAAT,YAAA0nC,EAAAI,EAEApD,GADA,aAAA99B,EACAohC,EAAAhpC,eAAA+oC,EAAAt4B,UAAAjQ,GAGAwoC,EAAAhoC,YAAA+nC,EAAAt4B,UAAA7I,EAAApH,EAAAkoC,EAAA9B,EAAAsC,yBAAA,MAGA,GAAAnC,GAAAX,EAAA9b,iBAAAob,EAAAqD,EAAA1yB,sBAAA2xB,EAAA14F,UAAA05F,EAAArsB,gBACA/1D,EAAA,GAAAggF,GAAAuC,6BAAA7gB,EAAAye,EAAA7E,EACA,OAAAnxF,MAAAg3F,GAAAhB,EAAAiB,EAAA1f,EAAA1hE,EAAAqgF,IAYA1B,EAAAt6F,UAAAm8F,GAAA,SAAAhB,EAAA4B,EAAAc,EAAAxgB,EAAA4Z,EAAA+E,GACA,GACAF,GAAApB,EADAsC,EAAA7B,EAAA5b,gBAEA5jE,EAAA,GAAAggF,GAAAuC,6BAAA7gB,EAAA8d,EAAAlE,EACA,IAAA8F,EAAA14F,UACAq2F,EAAA50F,KAAA+1F,GAAArqB,eAAA2pB,EAAA5b,gBAAA/Z,UAAAq4B,EAAA7B,GACAF,EAAAX,EAAAjc,gBAAAwb,GAAA,EAAA50F,KAAA+1F,GAAAnqB,oBAEA,CACA,GAAA/U,GAAAogC,EAAA/sC,UACA,kBAAA2M,EACA+9B,EAAA50F,KAAA+1F,GAAA9mC,eAAAomC,EAAA5b,gBAAA/Z,UAAAq4B,GACA/B,EAAAX,EAAAjc,gBAAAwb,EAAAsC,EAAA5xB,qBAAA4xB,EAAA3xB,kBAEA,CACA,GAAAoyB,GAAAV,EAAA7sC,WACAohB,EAAA0rB,EAAAx3B,UAAAvQ,kBAAA0H,GACAuT,MAAA,EACA,IAAAutB,EAAAp5F,UAEA6rE,EAAA2tB,MAEA,CACA,GAAArnC,GAAA76C,EAAAwiF,iBAAAxhC,EAMAuT,GALA,MAAA1Z,EACA,cAAAinC,EAAAttC,WACAqG,EAAArB,SAAAsoC,EAAAltC,UAAAlsD,UAGAmyD,EAGAA,EAAAT,YAAA0nC,EAAAI,GAKAvgC,EAAAlJ,aAAAP,WAGA,GAAAyd,EAAAhgB,OAAA4e,GAKA4rB,EAAAX,MALA,CACA,GAAAiD,GAAAt4F,KAAA+1F,GAAA9lC,YAAAinC,EAAAx3B,UAAA7I,EAAAuT,EAAAutB,EAAA9hF,EAAAqgF,EACAF,GAAAX,EAAAjc,gBAAAkf,EAAApB,EAAA5xB,qBAAAtlE,KAAA+1F,GAAAnqB,kBAOA,MAAAoqB,IAQAxB,EAAA+D,GAAA,SAAAtgB,EAAAphB,GACA,MAAAohB,GAAAwB,gBAAAhU,mBAAA5O,IAYA29B,EAAAt6F,UAAAq8F,GAAA,SAAAte,EAAA91B,EAAA4e,EAAAwW,EAAAI,EAAAue,GACA,GAAAhtF,GAAAlJ,KAOAw4F,EAAAvgB,CAaA,OAZAlX,GAAAmK,QAAA,SAAApgB,EAAA4F,GACA,GAAA+nC,GAAAt2C,EAAAwI,MAAAG,EACA0pC,GAAA+D,GAAAtgB,EAAAwgB,EAAAvuC,cACAsuC,EAAAtvF,EAAAmtF,GAAAmC,EAAAC,EAAA/nC,EAAA6mB,EAAAI,EAAAue,MAGAn1B,EAAAmK,QAAA,SAAApgB,EAAA4F,GACA,GAAA+nC,GAAAt2C,EAAAwI,MAAAG,EACA0pC,GAAA+D,GAAAtgB,EAAAwgB,EAAAvuC,cACAsuC,EAAAtvF,EAAAmtF,GAAAmC,EAAAC,EAAA/nC,EAAA6mB,EAAAI,EAAAue,MAGAsC,GAQAhE,EAAAt6F,UAAAw+F,GAAA,SAAA54D,EAAAijC,GAIA,MAHAA,GAAAmI,QAAA,SAAApgB,EAAA4F,GACA5wB,IAAAmwB,YAAAnF,EAAA4F,KAEA5wB,GAaA00D,EAAAt6F,UAAAs8F,GAAA,SAAAve,EAAA91B,EAAA4e,EAAAwW,EAAAI,EAAAse,EAAAC,GACA,GAAAhtF,GAAAlJ,IAGA,IAAAi4E,EACA0B,iBACAja,UACAnhE,YACA05E,EAAA0B,iBAAArU,qBACA,MAAA2S,EAQA,IACA0gB,GADAH,EAAAvgB,CAGA0gB,GADAx2C,EAAA5jD,UACAwiE,EAGAiuB,EAAAvlB,cAAArG,MAAAiH,QAAAloB,EAAA4e,EAEA,IAAAq2B,GAAAnf,EAAA0B,iBAAAja,SAuBA,OAtBAi5B,GAAAjvB,SAAA9X,iBAAA,SAAAiF,EAAAqT,GACA,GAAAktB,EAAA7nC,SAAAsH,GAAA,CACA,GAAA+hC,GAAA3gB,EACA0B,iBACAja,UACAvQ,kBAAA0H,GACAuT,EAAAlhE,EAAAwvF,GAAAE,EAAA1uB,EACAsuB,GAAAtvF,EAAAotF,GAAAkC,EAAA,GAAAjlC,GAAA3J,KAAAiN,GAAAuT,EAAAmN,EAAAI,EAAAse,EAAAC,MAGAyC,EAAAjvB,SAAA9X,iBAAA,SAAAiF,EAAAgiC,GACA,GAAAC,IAAA7gB,EAAA0B,iBAAAlU,mBAAA5O,IACA,MAAAgiC,EAAAn9F,KACA,KAAA07F,EAAA7nC,SAAAsH,KAAAiiC,EAAA,CACA,GAAAF,GAAA3gB,EACA0B,iBACAja,UACAvQ,kBAAA0H,GACAuT,EAAAlhE,EAAAwvF,GAAAE,EAAAC,EACAL,GAAAtvF,EAAAotF,GAAAkC,EAAA,GAAAjlC,GAAA3J,KAAAiN,GAAAuT,EAAAmN,EAAAI,EAAAse,EAAAC,MAGAsC,GAYAhE,EAAAt6F,UAAAw8F,GAAA,SAAAze,EAAA8gB,EAAAnF,EAAArc,EAAA4Z,EAAA+E,GACA,SAAA3e,EAAA4f,eAAA4B,GACA,MAAA9gB,EAGA,IAAAge,GAAAhe,EAAA0B,iBAAApU,aAGAoS,EAAAM,EAAA0B,gBACA,UAAAia,EAAAl4F,MAAA,CAEA,GAAAq9F,EAAAx6F,WAAAo5E,EAAArS,sBACAqS,EAAAnS,kBAAAuzB,GACA,MAAA/4F,MAAAs2F,GAAAre,EAAA8gB,EAAAphB,EAAAjY,UAAArQ,SAAA0pC,GAAAxhB,EAAA4Z,EAAA8E,EAAAC,EAEA,IAAA6C,EAAAx6F,UAAA,CAGA,GAAAy6F,GAAAhK,EAAAvlB,cAAArG,KAIA,OAHAuU,GAAAjY,UAAAjP,aAAAtC,EAAAqE,UAAA,SAAA93D,EAAAolC,GACAk5D,IAAA1wE,IAAA,GAAAirC,GAAA3J,KAAAlvD,GAAAolC,KAEA9/B,KAAAw2F,GAAAve,EAAA8gB,EAAAC,EAAAzhB,EAAA4Z,EAAA8E,EAAAC,GAGA,MAAAje,GAKA,GAAAghB,GAAAjK,EAAAvlB,cAAArG,KAOA,OANAwwB,GAAA1oB,QAAA,SAAAguB,EAAAx9F,GACA,GAAAy9F,GAAAJ,EAAApuC,MAAAuuC,EACAvhB,GAAAnS,kBAAA2zB,KACAF,IAAA3wE,IAAA4wE,EAAAvhB,EAAAjY,UAAArQ,SAAA8pC,OAGAn5F,KAAAw2F,GAAAve,EAAA8gB,EAAAE,EAAA1hB,EAAA4Z,EAAA8E,EAAAC,IAWA1B,EAAAt6F,UAAAy8F,GAAA,SAAA1e,EAAA91B,EAAAo1B,EAAA2e,GACA,GAAAkD,GAAAnhB,EAAA0B,iBACAqc,EAAA/d,EAAAsB,iBAAA6f,EAAA15B,UAAA05B,EAAA9zB,sBAAAnjB,EAAA5jD,UAAA66F,EAAA7zB,aACA,OAAAvlE,MAAAg3F,GAAAhB,EAAA7zC,EAAAo1B,EAAAse,EAAAsC,yBAAAjC,IAWA1B,EAAAt6F,UAAAu8F,GAAA,SAAAxe,EAAA91B,EAAAo1B,EAAA6d,EAAAc,GACA,GAAAx6E,EACA,UAAA67D,EAAA4f,eAAAh1C,GACA,MAAA81B,EAGA,IAAApiE,GAAA,GAAAggF,GAAAuC,6BAAA7gB,EAAAU,EAAAmd,GACAiE,EAAAphB,EAAAwB,gBAAA/Z,UACAk1B,MAAA,EACA,IAAAzyC,EAAA5jD,WAAA,cAAA4jD,EAAA+H,WAAA,CACA,GAAAkD,OAAA,EACA,IAAA6qB,EAAA0B,iBAAArU,qBACAlY,EAAAmqB,EAAAO,uBAAAG,EAAA2B,6BAEA,CACA,GAAA0f,GAAArhB,EAAA0B,iBAAAja,SACA5a,GAAAlpD,OAAA09F,YAAA9hC,GAAAlJ,aAAA,iDACAlB,EAAAmqB,EAAAS,0BAAAshB,GAEAlsC,IACAwnC,EAAA50F,KAAA+1F,GAAArqB,eAAA2tB,EAAAjsC,EAAA8oC,OAEA,CACA,GAAAr/B,GAAA1U,EAAA+H,WACAkgB,EAAAmN,EAAAugB,kBAAAjhC,EAAAohB,EAAA0B,iBACA,OAAAvP,GACA6N,EAAA0B,iBAAAlU,mBAAA5O,KACAuT,EAAAivB,EAAAlqC,kBAAA0H,IAGA+9B,EADA,MAAAxqB,EACApqE,KAAA+1F,GAAA9lC,YAAAopC,EAAAxiC,EAAAuT,EAAAjoB,EAAAiI,WAAAv0C,EAAAqgF,GAEAje,EACAwB,gBACA/Z,UACAnQ,SAAAsH,GAEA72D,KAAA+1F,GAAA9lC,YAAAopC,EAAAxiC,EAAAW,EAAAlJ,aAAAP,WAAA5L,EAAAiI,WAAAv0C,EAAAqgF,GAGAmD,EAEAzE,EAAAr2F,WACA05E,EAAA0B,iBAAArU,uBAEA5pD,EAAA67D,EAAAO,uBAAAG,EAAA2B,yBACAl+D,EAAAszC,eACA4lC,EAAA50F,KAAA+1F,GAAArqB,eAAAkpB,EAAAl5E,EAAAw6E,KAOA,MAHAx6E,GACAu8D,EAAA0B,iBAAArU,sBACA,MAAAiS,EAAA4f,eAAA5jC,EAAA3J,KAAAwZ,OACA6U,EAAAmB,gBAAAwb,EAAAl5E,EAAA1b,KAAA+1F,GAAAnqB,iBAGA4oB,IAEAt7F,GAAAs7F,iBhEowYM,SAAUr7F,EAAQD,EAASH,GAEjC,YiEt0ZAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAsyE,EAAAtyE,EAAA,IACAgsD,EAAAhsD,EAAA,GAIAo9F,EAAA,WACA,QAAAA,KACAn2F,KAAAu5F,MAmDA,MA9CApD,GAAAj8F,UAAAuxE,iBAAA,SAAAoiB,GACA,GAAAxpE,GAAAwpE,EAAAxpE,KACAwyC,EAAwCg3B,EAAAz+B,SACxCrK,GAAAnpD,OAAAyoB,GAAAgnD,EAAAhV,OAAAS,aACAzyC,GAAAgnD,EAAAhV,OAAAe,eACA/yC,GAAAgnD,EAAAhV,OAAAW,cAAA,6CACAjS,EAAAnpD,OAAA,cAAAi7D,EAAA,kDACA,IAAA2iC,GAAA10C,EAAApmD,QAAAsB,KAAAu5F,GAAA1iC,EACA,IAAA2iC,EAAA,CACA,GAAAC,GAAAD,EAAAn1E,IACA,IAAAA,GAAAgnD,EAAAhV,OAAAS,aAAA2iC,GAAApuB,EAAAhV,OAAAW,cACAh3D,KAAAu5F,GAAA1iC,GAAAwU,EAAAhV,OAAAY,mBAAAJ,EAAAg3B,EAAAv3B,aAAAkjC,EAAAljC,kBAEA,IAAAjyC,GAAAgnD,EAAAhV,OAAAW,eACAyiC,GAAApuB,EAAAhV,OAAAS,kBACA92D,MAAAu5F,GAAA1iC,OAEA,IAAAxyC,GAAAgnD,EAAAhV,OAAAW,eACAyiC,GAAApuB,EAAAhV,OAAAe,cACAp3D,KAAAu5F,GAAA1iC,GAAAwU,EAAAhV,OAAAU,mBAAAF,EAAA2iC,EAAAjjC,aAEA,IAAAlyC,GAAAgnD,EAAAhV,OAAAe,eACAqiC,GAAApuB,EAAAhV,OAAAS,YACA92D,KAAAu5F,GAAA1iC,GAAAwU,EAAAhV,OAAAO,iBAAAC,EAAAg3B,EAAAv3B,kBAEA,IAAAjyC,GAAAgnD,EAAAhV,OAAAe,eACAqiC,GAAApuB,EAAAhV,OAAAe,cAIA,KAAArS,GAAAlpD,eAAA,mCACAgyF,EACA,mBACA2L,EANAx5F,MAAAu5F,GAAA1iC,GAAAwU,EAAAhV,OAAAY,mBAAAJ,EAAAg3B,EAAAv3B,aAAAkjC,EAAAjjC,cAUAv2D,MAAAu5F,GAAA1iC,GAAAg3B,GAMAsI,EAAAj8F,UAAA08F,WAAA,WACA,MAAA9xC,GAAAxmD,UAAA0B,KAAAu5F,KAEApD,IAEAj9F,GAAAi9F,0BjE81ZM,SAAUh9F,EAAQD,EAASH,GAEjC,YkE95ZAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAw7E,GAAAn+E,EAAA,IAQA2gG,EAAA,WACA,QAAAA,MAcA,MATAA,GAAAx/F,UAAAm+F,iBAAA,SAAAxhC,GACA,aAKA6iC,EAAAx/F,UAAAy/F,mBAAA,SAAA3oC,EAAArG,EAAAjC,GACA,aAEAgxC,IAEAxgG,GAAAwgG,KAMAxgG,EAAAi/F,yBAAA,GAAAuB,EAQA,IAAAtB,GAAA,WAMA,QAAAA,GAAAwB,EAAA/E,EAAAgF,OACA,KAAAA,IAAiDA,EAAA,MACjD75F,KAAA45F,KACA55F,KAAA60F,KACA70F,KAAA65F,KAgCA,MA3BAzB,GAAAl+F,UAAAm+F,iBAAA,SAAAxhC,GACA,GAAA/2B,GAAA9/B,KAAA60F,GAAApb,eACA,IAAA35C,EAAA2lC,mBAAA5O,GACA,MAAA/2B,GAAA4/B,UAAAvQ,kBAAA0H,EAGA,IAAAugC,GAAA,MAAAp3F,KAAA65F,GACA,GAAA3iB,GAAAhS,UAAAllE,KAAA65F,IAAA,MACA75F,KAAA60F,GAAAlb,gBACA,OAAA35E,MAAA45F,GAAA9B,kBAAAjhC,EAAAugC,IAMAgB,EAAAl+F,UAAAy/F,mBAAA,SAAA3oC,EAAArG,EAAAjC,GACA,GAAAoxC,GAAA,MAAA95F,KAAA65F,GACA75F,KAAA65F,GACA75F,KAAA60F,GAAAjb,wBACAmgB,EAAA/5F,KAAA45F,GAAAI,iBAAAF,EAAAnvC,EAAA,EAAAjC,EAAAsI,EACA,YAAA+oC,EAAAjgG,OACA,KAGAigG,EAAA,IAGA3B,IAEAl/F,GAAAk/F,gClEs7ZM,SAAUj/F,EAAQD,EAASH,GAEjC,YmE5gaAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA8wD,GAAAzzD,EAAA,GACAsyE,EAAAtyE,EAAA,IACA+rD,EAAA/rD,EAAA,GAQAg8F,EAAA,WAKA,QAAAA,GAAAb,GACAl0F,KAAAk0F,KAKAl0F,KAAA+oE,GAAA/oE,KAAAk0F,GAAA3iB,iBAAAzF,WAuFA,MAvEAipB,GAAA76F,UAAAy7F,yBAAA,SAAAH,EAAA3d,EAAAoiB,GACA,GAAA/wF,GAAAlJ,KACAggE,KACAk6B,IAYA,OAXA1E,GAAAr3F,QAAA,SAAA0vF,GACAA,EAAAxpE,OAAAgnD,EAAAhV,OAAAe,eACAluD,EAAA6/D,GAAA7b,oBAAA2gC,EAAAt3B,QAAAs3B,EAAAv3B,eACA4jC,EAAAlgG,KAAAqxE,EAAAhV,OAAAgB,iBAAAw2B,EAAAz+B,UAAAy+B,EAAAv3B,iBAGAt2D,KAAAm6F,GAAAn6B,EAAAqL,EAAAhV,OAAAW,cAAAw+B,EAAAyE,EAAApiB,GACA73E,KAAAm6F,GAAAn6B,EAAAqL,EAAAhV,OAAAS,YAAA0+B,EAAAyE,EAAApiB,GACA73E,KAAAm6F,GAAAn6B,EAAAqL,EAAAhV,OAAAiB,YAAA4iC,EAAAD,EAAApiB,GACA73E,KAAAm6F,GAAAn6B,EAAAqL,EAAAhV,OAAAe,cAAAo+B,EAAAyE,EAAApiB,GACA73E,KAAAm6F,GAAAn6B,EAAAqL,EAAAhV,OAAAM,MAAA6+B,EAAAyE,EAAApiB,GACA7X,GAYA+0B,EAAA76F,UAAAigG,GAAA,SAAAn6B,EAAApL,EAAA4gC,EAAAE,EAAA7d,GACA,GAAA3uE,GAAAlJ,KACAo6F,EAAA5E,EAAA1sF,OAAA,SAAA+kF,GAAgE,MAAAA,GAAAxpE,OAAAuwC,GAChEwlC,GAAAnqE,KAAAjwB,KAAAq6F,GAAAlzF,KAAAnH,OACAo6F,EAAAj8F,QAAA,SAAA0vF,GACA,GAAAyM,GAAApxF,EAAAqxF,GAAA1M,EAAAhW,EACA6d,GAAAv3F,QAAA,SAAA82F,GACAA,EAAArH,WAAAC,EAAAxpE,OACA27C,EAAAhmE,KAAAi7F,EAAAnmE,YAAAwrE,EAAApxF,EAAAgrF,UAWAa,EAAA76F,UAAAqgG,GAAA,SAAA1M,EAAAhW,GACA,gBAAAgW,EAAAxpE,MAAA,kBAAAwpE,EAAAxpE,KACAwpE,GAGAA,EAAAr3B,SAAAqhB,EAAA9mB,wBAEA88B,EAAAz+B,UAAAy+B,EAAAv3B,aAAAt2D,KAAA+oE,IACA8kB,IASAkH,EAAA76F,UAAAmgG,GAAA,SAAAj2F,EAAAtE,GACA,SAAAsE,EAAAgrD,WAAA,MAAAtvD,EAAAsvD,UACA,KAAAtK,GAAAjpD,eAAA,qCAEA,IAAA2+F,GAAA,GAAAhuC,GAAAc,UAAAlpD,EAAAgrD,UAAAhrD,EAAAkyD,cACAmkC,EAAA,GAAAjuC,GAAAc,UAAAxtD,EAAAsvD,UAAAtvD,EAAAw2D,aACA,OAAAt2D,MAAA+oE,GAAApc,QAAA6tC,EAAAC,IAEA1F,IAEA77F,GAAA67F,kBnEoiaM,SAAU57F,EAAQD,EAASH,GAEjC,YoErpaAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAw6D,EAAAx6D,EAAA,GACA2hG,EAAA3hG,EAAA,IACAm1D,EAAAn1D,EAAA,GACAy+D,EAAAz+D,EAAA,GAQAy2F,EAAA,WACA,QAAAA,KAQAxvF,KAAA26F,GAAAD,EAAAE,cAAAx3B,MASApjE,KAAA66F,MACA76F,KAAA86F,IAAA,EAudA,MA/cAtL,GAAAt1F,UAAAq3F,YAAA,SAAApvC,GACA,UAAA44C,GAAA54C,EAAAniD,OAUAwvF,EAAAt1F,UAAA01F,aAAA,SAAAztC,EAAA8e,EAAAe,EAAA2c,GACA55B,EAAAnpD,OAAAomE,EAAAhiE,KAAA86F,GAAA,oDACA70F,KAAA04E,IACAA,GAAA,GAEA3+E,KAAA66F,GAAA7gG,MACAmoD,OACA8e,OACAe,UACA2c,YAEAA,IACA3+E,KAAA26F,GAAA36F,KAAA26F,GAAAK,SAAA74C,EAAA8e,IAEAjhE,KAAA86F,GAAA94B,GASAwtB,EAAAt1F,UAAA41F,SAAA,SAAA3tC,EAAA4e,EAAAiB,GACAjd,EAAAnpD,OAAAomE,EAAAhiE,KAAA86F,GAAA,gDACA96F,KAAA66F,GAAA7gG,MACAmoD,OACAunB,SAAA3I,EACAiB,UACA2c,SAAA,IAEA3+E,KAAA26F,GAAA36F,KAAA26F,GAAAM,UAAA94C,EAAA4e,GACA/gE,KAAA86F,GAAA94B,GAMAwtB,EAAAt1F,UAAAg2F,SAAA,SAAAluB,GACA,OAAA5oE,GAAA,EAAuBA,EAAA4G,KAAA66F,GAAA/gG,OAA4BV,IAAA,CACnD,GAAA8hG,GAAAl7F,KAAA66F,GAAAzhG,EACA,IAAA8hG,EAAAl5B,YACA,MAAAk5B,GAGA,aAUA1L,EAAAt1F,UAAAi2F,YAAA,SAAAnuB,GAKA,GAAA94D,GAAAlJ,KACAixD,EAAAjxD,KAAA66F,GAAA/jF,UAAA,SAAAzc,GACA,MAAAA,GAAA2nE,aAEAjd,GAAAnpD,OAAAq1D,GAAA,iDACA,IAAAkqC,GAAAn7F,KAAA66F,GAAA5pC,EACAjxD,MAAA66F,GAAA79E,OAAAi0C,EAAA,EAIA,KAHA,GAAAmqC,GAAAD,EAAAxc,QACA0c,GAAA,EACAjiG,EAAA4G,KAAA66F,GAAA/gG,OAAA,EACAshG,GAAAhiG,GAAA,IACA,GAAAkiG,GAAAt7F,KAAA66F,GAAAzhG,EACAkiG,GAAA3c,UACAvlF,GAAA63D,GACAjxD,KAAAu7F,GAAAD,EAAAH,EAAAh5C,MAEAi5C,GAAA,EAEAD,EAAAh5C,KAAArkD,SAAAw9F,EAAAn5C,QAEAk5C,GAAA,IAGAjiG,IAEA,GAAAgiG,EAGA,IAAAC,EAGA,MADAr7F,MAAAw7F,MACA,CAIA,IAAAL,EAAAl6B,KACAjhE,KAAA26F,GAAA36F,KAAA26F,GAAAxK,YAAAgL,EAAAh5C,UAEA,CACA,GAAAunB,GAAAyxB,EAAAzxB,QACA5kB,GAAA3mD,QAAAurE,EAAA,SAAAta,GACAlmD,EAAAyxF,GAAAzxF,EAAAyxF,GAAAxK,YAAAgL,EAAAh5C,KAAAwI,MAAAyE,MAGA,SAlBA,UA4BAogC,EAAAt1F,UAAAuhG,qBAAA,SAAAt5C,GACA,MAAAniD,MAAA26F,GAAAe,gBAAAv5C,IAYAqtC,EAAAt1F,UAAA49E,uBAAA,SAAA6jB,EAAAvG,EAAA7C,EAAAqJ,GACA,GAAArJ,GAAAqJ,EAqBA,CACA,GAAA74B,GAAA/iE,KAAA26F,GAAAkB,mBAAAF,EACA,KAAAC,GAAA74B,EAAAxkE,UACA,MAAA62F,EAIA,IAAAwG,GACA,MAAAxG,GACAryB,EAAA+4B,iBAAAvoC,EAAA3J,KAAAwZ,OAGA,CACA,GAAAt6D,GAAA,SAAAyX,GACA,OAAAA,EAAAo+D,SAAAid,MACArJ,KACAA,EAAAhyF,QAAAggB,EAAAyhD,YACAzhD,EAAA4hC,KAAArkD,SAAA69F,MAAA79F,SAAAyiB,EAAA4hC,QAEA45C,EAAAvM,EAAAwM,GAAAh8F,KAAA66F,GAAA/xF,EAAA6yF,GACAM,EAAA7G,GAAA59B,EAAAlJ,aAAAP,UACA,OAAAguC,GAAAv5F,MAAAy5F,GAXA,YA9BA,GAAAC,GAAAl8F,KAAA26F,GAAAe,gBAAAC,EACA,UAAAO,EACA,MAAAA,EAGA,IAAAC,GAAAn8F,KAAA26F,GAAAkB,mBAAAF,EACA,IAAAQ,EAAA59F,UACA,MAAA62F,EAEA,UAAAA,GACA+G,EAAAL,iBAAAvoC,EAAA3J,KAAAwZ,OAIA,CACA,GAAA64B,GAAA7G,GAAA59B,EAAAlJ,aAAAP,UACA,OAAAouC,GAAA35F,MAAAy5F,GAJA,aA0CAzM,EAAAt1F,UAAA89E,0BAAA,SAAA2jB,EAAAS,GACA,GAAA/E,GAAA7/B,EAAAlJ,aAAAP,WACAsuC,EAAAr8F,KAAA26F,GAAAe,gBAAAC,EACA,IAAAU,EAOA,MANAA,GAAArtC,cAEAqtC,EAAA5rC,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAya,GACAwtB,IAAA7nC,qBAAAJ,EAAAya,KAGAwtB,CAEA,IAAA+E,EAAA,CAGA,GAAAE,GAAAt8F,KAAA26F,GAAAkB,mBAAAF,EAWA,OAVAS,GAAA3rC,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAsB,GACA,GAAA5wB,GAAAw8D,EACAT,mBAAA,GAAAtoC,GAAA3J,KAAAwF,IACA5sD,MAAAkuD,EACA2mC,KAAA7nC,qBAAAJ,EAAAtvB,KAGAw8D,EAAAC,sBAAAp+F,QAAA,SAAAuxD,GACA2nC,IAAA7nC,qBAAAE,EAAAh1D,KAAAg1D,EAAA5vB,QAEAu3D,EASA,MAJAr3F,MAAA26F,GAAAkB,mBAAAF,GACAY,sBAAAp+F,QAAA,SAAAuxD,GACA2nC,IAAA7nC,qBAAAE,EAAAh1D,KAAAg1D,EAAA5vB,QAEAu3D,GAuBA7H,EAAAt1F,UAAAw9F,mCAAA,SAAAiE,EAAAxyB,EAAAqzB,EAAAC,GACA13C,EAAAnpD,OAAA4gG,GAAAC,EAAA,4DACA,IAAAt6C,GAAAw5C,EAAAhxC,MAAAwe,EACA,IAAAnpE,KAAA26F,GAAAmB,iBAAA35C,GAGA,WAIA,IAAAu6C,GAAA18F,KAAA26F,GAAAkB,mBAAA15C,EACA,OAAAu6C,GAAAn+F,UAEAk+F,EAAAptC,SAAA8Z,GASAuzB,EAAAl6F,MAAAi6F,EAAAptC,SAAA8Z,KAaAqmB,EAAAt1F,UAAA49F,kBAAA,SAAA6D,EAAA9kC,EAAA4lC,GACA,GAAAt6C,GAAAw5C,EAAAhxC,MAAAkM,GACAqlC,EAAAl8F,KAAA26F,GAAAe,gBAAAv5C,EACA,cAAA+5C,EACAA,EAGAO,EAAAh3B,mBAAA5O,GACA72D,KAAA26F,GAAAkB,mBAAA15C,GACA3/C,MAAAi6F,EAAA/8B,UAAAvQ,kBAAA0H,IAGA,MAYA24B,EAAAt1F,UAAAi9F,eAAA,SAAAh1C,GACA,MAAAniD,MAAA26F,GAAAe,gBAAAv5C,IAcAqtC,EAAAt1F,UAAA8/F,iBAAA,SAAA2B,EAAA7B,EAAA9nC,EAAA5B,EAAA1H,EAAAsI,GACA,GAAA2rC,GACA55B,EAAA/iE,KAAA26F,GAAAkB,mBAAAF,GACAO,EAAAn5B,EAAA24B,gBAAAnoC,EAAA3J,KAAAwZ,MACA,UAAA84B,EACAS,EAAAT,MAEA,UAAApC,EAKA,QAJA6C,GAAA55B,EAAAvgE,MAAAs3F,GAOA,GADA6C,IAAApqC,UAAAvB,GACA2rC,EAAAp+F,WAAAo+F,EAAA3tC,aAgBA,QATA,KANA,GAAA+qC,MACAxuC,EAAAyF,EAAAsH,aACA+b,EAAA3rB,EACAi0C,EAAAtqC,uBAAAL,EAAAhB,GACA2rC,EAAA5qC,gBAAAC,EAAAhB,GACA5uD,EAAAiyE,EAAAliB,UACA/vD,GAAA23F,EAAAjgG,OAAAs2D,GACA,IAAA7E,EAAAnpD,EAAA4vD,IACA+nC,EAAA//F,KAAAoI,GAEAA,EAAAiyE,EAAAliB,SAEA,OAAA4nC,IAYAvK,EAAAt1F,UAAAqhG,GAAA,SAAAqB,EAAAz6C,GACA,MAAAy6C,GAAA37B,KACA27B,EAAAz6C,KAAArkD,SAAAqkD,KAIA2C,EAAA7mD,QAAA2+F,EAAAlzB,SAAA,SAAAG,EAAAza,GACA,MAAAwtC,GAAAz6C,KAAAwI,MAAAyE,GAAAtxD,SAAAqkD,MAQAqtC,EAAAt1F,UAAAshG,GAAA,WACAx7F,KAAA26F,GAAAnL,EAAAwM,GAAAh8F,KAAA66F,GAAArL,EAAAqN,GAAAtpC,EAAA3J,KAAAwZ,OACApjE,KAAA66F,GAAA/gG,OAAA,EACAkG,KAAA86F,GAAA96F,KAAA66F,GAAA76F,KAAA66F,GAAA/gG,OAAA,GAAAkoE,QAGAhiE,KAAA86F,IAAA,GAUAtL,EAAAqN,GAAA,SAAAt8E,GACA,MAAAA,GAAAo+D,SAYA6Q,EAAAwM,GAAA,SAAAc,EAAAh0F,EAAAi0F,GAEA,OADAC,GAAAtC,EAAAE,cAAAx3B,MACAhqE,EAAA,EAAuBA,EAAA0jG,EAAAhjG,SAAmBV,EAAA,CAC1C,GAAAmnB,GAAAu8E,EAAA1jG,EAIA,IAAA0P,EAAAyX,GAAA,CACA,GAAAk4E,GAAAl4E,EAAA4hC,KACA2I,MAAA,EACA,IAAAvqC,EAAA0gD,KACA87B,EAAAj/F,SAAA26F,IACA3tC,EAAAyI,EAAA3J,KAAAkB,aAAAiyC,EAAAtE,GACAuE,IAAAhC,SAAAlwC,EAAAvqC,EAAA0gD,OAEAw3B,EAAA36F,SAAAi/F,KACAjyC,EAAAyI,EAAA3J,KAAAkB,aAAA2tC,EAAAsE,GACAC,IAAAhC,SAAAznC,EAAA3J,KAAAwZ,MAAA7iD,EAAA0gD,KAAA5R,SAAAvE,SAMA,KAAAvqC,EAAAmpD,SAwBA,KAAA3kB,GAAAlpD,eAAA,6CAvBA,IAAAkhG,EAAAj/F,SAAA26F,GACA3tC,EAAAyI,EAAA3J,KAAAkB,aAAAiyC,EAAAtE,GACAuE,IAAA/B,UAAAnwC,EAAAvqC,EAAAmpD,cAEA,IAAA+uB,EAAA36F,SAAAi/F,GAEA,GADAjyC,EAAAyI,EAAA3J,KAAAkB,aAAA2tC,EAAAsE,GACAjyC,EAAAvsD,UACAy+F,IAAA/B,UAAA1nC,EAAA3J,KAAAwZ,MAAA7iD,EAAAmpD,cAEA,CACA,GAAA/e,GAAA7F,EAAApmD,QAAA6hB,EAAAmpD,SAAA5e,EAAAZ,WACA,IAAAS,EAAA,CAEA,GAAAsyC,GAAAtyC,EAAA0E,SAAAvE,EAAAV,WACA4yC,KAAAhC,SAAAznC,EAAA3J,KAAAwZ,MAAA65B,OAaA,MAAAD,IAEAxN,IAEAt2F,GAAAs2F,WAOA,IAAAuL,GAAA,WAKA,QAAAA,GAAA54C,EAAAqwC,GACAxyF,KAAAk9F,GAAA/6C,EACAniD,KAAAm9F,GAAA3K,EA4FA,MAhFAuI,GAAA7gG,UAAA49E,uBAAA,SAAAsd,EAAA7C,EAAAqJ,GACA,MAAA57F,MAAAm9F,GAAArlB,uBAAA93E,KAAAk9F,GAAA9H,EAAA7C,EAAAqJ,IASAb,EAAA7gG,UAAA89E,0BAAA,SAAAokB,GACA,MAAAp8F,MAAAm9F,GAAAnlB,0BAAAh4E,KAAAk9F,GAAAd,IAqBArB,EAAA7gG,UAAAw9F,mCAAA,SAAAv1C,EAAAq6C,EAAAC,GACA,MAAAz8F,MAAAm9F,GAAAzF,mCAAA13F,KAAAk9F,GAAA/6C,EAAAq6C,EAAAC,IAUA1B,EAAA7gG,UAAAi9F,eAAA,SAAAh1C,GACA,MAAAniD,MAAAm9F,GAAAhG,eAAAn3F,KAAAk9F,GAAAvyC,MAAAxI,KAaA44C,EAAA7gG,UAAA8/F,iBAAA,SAAAF,EAAA9nC,EAAA5B,EAAA1H,EAAAsI,GACA,MAAAhxD,MAAAm9F,GAAAnD,iBAAAh6F,KAAAk9F,GAAApD,EAAA9nC,EAAA5B,EAAA1H,EAAAsI,IAUA+pC,EAAA7gG,UAAA49F,kBAAA,SAAAjhC,EAAAumC,GACA,MAAAp9F,MAAAm9F,GAAArF,kBAAA93F,KAAAk9F,GAAArmC,EAAAumC,IAQArC,EAAA7gG,UAAAywD,MAAA,SAAAyE,GACA,UAAA2rC,GAAA/6F,KAAAk9F,GAAAvyC,MAAAyE,GAAApvD,KAAAm9F,KAEApC,IAEA7hG,GAAA6hG,gBpE6qaM,SAAU5hG,EAAQD,EAASH,GAEjC,YqErxbAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAszF,GAAAj2F,EAAA,IACAw6D,EAAAx6D,EAAA,GACA+rD,EAAA/rD,EAAA,GACAyzD,EAAAzzD,EAAA,GACAm1D,EAAAn1D,EAAA,GACAgsD,EAAAhsD,EAAA,GAUA6hG,EAAA,WACA,QAAAA,GAAAuC,GACAn9F,KAAAm9F,KAkLA,MA3KAvC,GAAA1gG,UAAA8gG,SAAA,SAAA74C,EAAAriB,GACA,GAAAqiB,EAAA5jD,UACA,UAAAq8F,GAAA,GAAA5L,GAAAvlB,cAAA3pC,GAGA,IAAAu9D,GAAAr9F,KAAAm9F,GAAAnzB,yBAAA7nB,EACA,UAAAk7C,EAAA,CACA,GAAAC,GAAAD,EAAAl7C,KACAzmD,EAAA2hG,EAAA3hG,MACAovD,EAAAyI,EAAA3J,KAAAkB,aAAAwyC,EAAAn7C,EAEA,OADAzmD,KAAAu0D,YAAAnF,EAAAhrB,GACA,GAAA86D,GAAA56F,KAAAm9F,GAAA70E,IAAAg1E,EAAA5hG,IAGA,GAAAuuE,GAAA,GAAA+kB,GAAAvlB,cAAA3pC,EAEA,WAAA86D,GADA56F,KAAAm9F,GAAA9yB,QAAAloB,EAAA8nB,KAUA2wB,EAAA1gG,UAAA+gG,UAAA,SAAA94C,EAAAof,GACA,GAAAg8B,GAAAv9F,IAIA,OAHA8kD,GAAA3mD,QAAAojE,EAAA,SAAA1K,EAAA/2B,GACAy9D,IAAAvC,SAAA74C,EAAAwI,MAAAkM,GAAA/2B,KAEAy9D,GASA3C,EAAA1gG,UAAAi2F,YAAA,SAAAhuC,GACA,MAAAA,GAAA5jD,UACAq8F,EAAAx3B,MAIA,GAAAw3B,GADA56F,KAAAm9F,GAAA9yB,QAAAloB,EAAA6sC,EAAAvlB,cAAArG,SAWAw3B,EAAA1gG,UAAA4hG,iBAAA,SAAA35C,GACA,aAAAniD,KAAA07F,gBAAAv5C,IASAy4C,EAAA1gG,UAAAwhG,gBAAA,SAAAv5C,GACA,GAAAk7C,GAAAr9F,KAAAm9F,GAAAnzB,yBAAA7nB,EACA,cAAAk7C,EACAr9F,KAAAm9F,GACAniG,IAAAqiG,EAAAl7C,MACAkN,SAAAkE,EAAA3J,KAAAkB,aAAAuyC,EAAAl7C,SAGA,MAQAy4C,EAAA1gG,UAAAqiG,oBAAA,WACA,GAAA7yB,MACA5pC,EAAA9/B,KAAAm9F,GAAAzhG,KAgBA,OAfA,OAAAokC,EAEAA,EAAAkvB,cACAlvB,EAAA2wB,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAsB,GACAgZ,EAAA1vE,KAAA,GAAAwyD,GAAAc,UAAA8B,EAAAsB,MAKA1wD,KAAAm9F,GAAAzzB,SAAA9X,iBAAA,SAAAxC,EAAA8a,GACA,MAAAA,EAAAxuE,OACAguE,EAAA1vE,KAAA,GAAAwyD,GAAAc,UAAA8B,EAAA8a,EAAAxuE,UAIAguE,GAMAkxB,EAAA1gG,UAAA2hG,mBAAA,SAAA15C,GACA,GAAAA,EAAA5jD,UACA,MAAAyB,KAGA,IAAAk8F,GAAAl8F,KAAA07F,gBAAAv5C,EACA,OACA,IAAAy4C,GADA,MAAAsB,EACA,GAAAlN,GAAAvlB,cAAAyyB,GAGAl8F,KAAAm9F,GAAAlzB,QAAA9nB,KAQAy4C,EAAA1gG,UAAAqE,QAAA,WACA,MAAAyB,MAAAm9F,GAAA5+F,WAQAq8F,EAAA1gG,UAAAsI,MAAA,SAAAs9B,GACA,MAAA86D,GAAA4C,GAAAjqC,EAAA3J,KAAAwZ,MAAApjE,KAAAm9F,GAAAr9D,IAKA86D,EAAAx3B,MAAA,GAAAw3B,GAAA,GAAA5L,GAAAvlB,cAAA,OAQAmxB,EAAA4C,GAAA,SAAA1yC,EAAA0nC,EAAA1yD,GACA,SAAA0yD,EAAA92F,MAEA,MAAAokC,GAAAmwB,YAAAnF,EAAA0nC,EAAA92F,MAGA,IAAA+hG,GAAA,IAgBA,OAfAjL,GAAA9oB,SAAA9X,iBAAA,SAAAiF,EAAAqT,GACA,cAAArT,GAGA9R,EAAAnpD,OAAA,OAAAsuE,EAAAxuE,MAAA,6CACA+hG,EAAAvzB,EAAAxuE,OAGAokC,EAAA86D,EAAA4C,GAAA1yC,EAAAH,MAAAkM,GAAAqT,EAAApqC,KAIAA,EAAAuvB,SAAAvE,GAAAvsD,WAAA,OAAAk/F,IACA39D,IAAAmwB,YAAAnF,EAAAH,MAAA,aAAA8yC,IAEA39D,GAGA86D,IAEA1hG,GAAA0hG,iBrE6ybM,SAAUzhG,EAAQD,EAASH,GAEjC,YsEr/bAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA87D,GAAAz+D,EAAA,GAMAmmE,EAAA,WACA,QAAAA,KACAl/D,KAAA09F,GAAAlmC,EAAAlJ,aAAAP,WAQA,MANAmR,GAAAhlE,UAAAwlE,QAAA,SAAAvd,GACA,MAAAniD,MAAA09F,GAAAruC,SAAAlN,IAEA+c,EAAAhlE,UAAAsnE,eAAA,SAAArf,EAAAw7C,GACA39F,KAAA09F,GAAA19F,KAAA09F,GAAAztC,YAAA9N,EAAAw7C,IAEAz+B,IAEAhmE,GAAAgmE,kBtE6gcM,SAAU/lE,EAAQD,EAASH,GAEjC,YuElicAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAIAilE,EAAA,WAIA,QAAAA,GAAA4/B,GACA59F,KAAA49F,KAsDA,MAhDA5/B,GAAA9jE,UAAAuO,SAAA,SAAAm3E,GACA,MAAA5/E,MAAA49F,GAAA,kBAAAhe,GAAAr9E,KAAA,KAEA,SAAA9G,GAGA,MAAAA,IAAA,+BAAAA,EAAAqM,MACAg9C,EAAAn7C,IAAA,kEACA,MAGA5H,QAAAE,OAAAxG,MAIAuiE,EAAA9jE,UAAAykE,uBAAA,SAAA51D,GAGA/I,KAAA49F,GAAA,8BAAA70F,IAEAi1D,EAAA9jE,UAAA2jG,0BAAA,SAAA90F,GACA/I,KAAA49F,GAAA,iCAAA70F,IAEAi1D,EAAA9jE,UAAAgmF,sBAAA,WACA,GAAA79C,GAAA,0DACAriC,KAAA49F,GAAAljG,KACA,gFAEA,eAAAsF,MAAA49F,GAAA53F,QACAq8B,GACA,uJAIA,kBAAAriC,MAAA49F,GAAA53F,QACAq8B,GACA,2JAKAA,GACA,kKAIAyiB,EAAA3xC,KAAAkvB,IAEA27B,IAEA9kE,GAAA8kE,qBvE0jcM,SAAU7kE,EAAQD,EAASH,GAEjC,YwE9ncAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GAMAmzE,EAAA,WACA,QAAAA,KACAlsE,KAAA89F,MAWA,MATA5xB,GAAAhyE,UAAA4qE,iBAAA,SAAApqE,EAAAqjG,OACA,KAAAA,IAAgCA,EAAA,GAChCh5C,EAAAjnD,SAAAkC,KAAA89F,GAAApjG,KACAsF,KAAA89F,GAAApjG,GAAA,GACAsF,KAAA89F,GAAApjG,IAAAqjG,GAEA7xB,EAAAhyE,UAAAc,IAAA,WACA,MAAA8pD,GAAAzoD,SAAA2D,KAAA89F,KAEA5xB,IAEAhzE,GAAAgzE,mBxEspcM,SAAU/yE,EAAQD,EAASH,GAEjC,YyE/qcAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACA+jE,EAAA/jE,EAAA,IAIAilG,EAAA,IACAC,EAAA,IAMAl/B,EAAA,WAKA,QAAAA,GAAAm/B,EAAA9/B,GACAp+D,KAAAo+D,IACAp+D,KAAAm+F,MACAn+F,KAAAu9D,EAAA,GAAAT,GAAAwH,cAAA45B,EACA,IAAA1yF,GAAAwyF,GACAC,EAAAD,GAAAvoF,KAAAC,QACAqvC,GAAA2E,sBAAA1pD,KAAAo+F,GAAAj3F,KAAAnH,MAAAyV,KAAAoD,MAAArN,IAsBA,MApBAuzD,GAAA7kE,UAAA6qE,YAAA,SAAAJ,GACA3kE,KAAAm+F,GAAAx5B,IAAA,GAEA5F,EAAA7kE,UAAAkkG,GAAA,WACA,GAAAl1F,GAAAlJ,KACAokE,EAAApkE,KAAAu9D,EAAAviE,MACAqjG,KACAC,GAAA,CACAx5C,GAAA3mD,QAAAimE,EAAA,SAAAO,EAAAjpE,GACAA,EAAA,GAAAopD,EAAAhnD,SAAAoL,EAAAi1F,GAAAx5B,KACA05B,EAAA15B,GAAAjpE,EACA4iG,GAAA,KAGAA,GACAt+F,KAAAo+D,EAAA4f,YAAAqgB,GAGAt5C,EAAA2E,sBAAA1pD,KAAAo+F,GAAAj3F,KAAAnH,MAAAyV,KAAAoD,MAAA,EAAApD,KAAAC,SAnCA,OAqCAqpD,IAEA7lE,GAAA6lE,iBzEuscM,SAAU5lE,EAAQD,EAASH,GAEjC,Y0E1vcAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAeA0kE,EAAA,WACA,QAAAA,KAKAz9D,KAAAu+F,MAMAv+F,KAAAw+F,GAAA,EA+EA,MA1EA/gC,GAAAvjE,UAAAgoE,YAAA,SAAAu8B,GAGA,OADAC,GAAA,KACAtlG,EAAA,EAAuBA,EAAAqlG,EAAA3kG,OAA0BV,IAAA,CACjD,GAAAwnF,GAAA6d,EAAArlG,GACAulG,EAAA/d,EAAAkO,SACA,QAAA4P,GAAAC,EAAAnzC,OAAAkzC,EAAA5P,aACA9uF,KAAAu+F,GAAAvkG,KAAA0kG,GACAA,EAAA,MAEA,OAAAA,IACAA,EAAA,GAAAE,GAAAD,IAEAD,EAAAx9E,IAAA0/D,GAEA8d,GACA1+F,KAAAu+F,GAAAvkG,KAAA0kG,IAYAjhC,EAAAvjE,UAAA8pE,kBAAA,SAAA7hB,EAAAs8C,GACAz+F,KAAAkiE,YAAAu8B,GACAz+F,KAAA6+F,GAAA,SAAAF,GACA,MAAAA,GAAAnzC,OAAArJ,MAYAsb,EAAAvjE,UAAA+lE,0BAAA,SAAA+C,EAAAy7B,GACAz+F,KAAAkiE,YAAAu8B,GACAz+F,KAAA6+F,GAAA,SAAAF,GACA,MAAAA,GAAA7gG,SAAAklE,MAAAllE,SAAA6gG,MAOAlhC,EAAAvjE,UAAA2kG,GAAA,SAAAjoF,GACA5W,KAAAw+F,IAEA,QADAM,IAAA,EACA1lG,EAAA,EAAuBA,EAAA4G,KAAAu+F,GAAAzkG,OAA6BV,IAAA,CACpD,GAAA2lG,GAAA/+F,KAAAu+F,GAAAnlG,EACA2lG,KAEAnoF,EADAmoF,EAAAjQ,YAEA9uF,KAAAu+F,GAAAnlG,GAAA4lG,QACAh/F,KAAAu+F,GAAAnlG,GAAA,MAGA0lG,GAAA,GAIAA,IACA9+F,KAAAu+F,OAEAv+F,KAAAw+F,MAEA/gC,IAEAvkE,GAAAukE,YAKA,IAAAmhC,GAAA,WACA,QAAAA,GAAA1qC,GACAl0D,KAAAk0D,KAKAl0D,KAAAi/F,MA8BA,MAzBAL,GAAA1kG,UAAAgnB,IAAA,SAAA0/D,GACA5gF,KAAAi/F,GAAAjlG,KAAA4mF,IAKAge,EAAA1kG,UAAA8kG,MAAA,WACA,OAAA5lG,GAAA,EAAuBA,EAAA4G,KAAAi/F,GAAAnlG,OAAyBV,IAAA,CAChD,GAAAwnF,GAAA5gF,KAAAi/F,GAAA7lG,EACA,WAAAwnF,EAAA,CACA5gF,KAAAi/F,GAAA7lG,GAAA,IACA,IAAA8lG,GAAAte,EAAAmN,gBACAjpC,GAAAgB,QACAhB,EAAAn7C,IAAA,UAAAi3E,GAEA97B,EAAAuE,eAAA61C,MAOAN,EAAA1kG,UAAA40F,QAAA,WACA,MAAA9uF,MAAAk0D,IAEA0qC,IAEA1lG,GAAA0lG,a1EkxcM,SAAUzlG,EAAQD,EAASH,GAEjC,Y2E76cAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACAomG,EAAApmG,EAAA,IACA+rD,EAAA/rD,EAAA,GAIAkjF,EAAA,SAAA5iE,GAEA,QAAA4iE,KACA,GACAmjB,GACAC,EAFAn2F,EAAAmQ,EAAA/f,KAAA0G,MAAA,aAAAA,IAqCA,OAlCA,mBAAA+U,eACA,KAAAA,SAAAe,uBACA,KAAAf,SAAA,QAEAsqF,EAAA,mBACAD,EAAA,cAEA,KAAArqF,SAAA,WACAsqF,EAAA,sBACAD,EAAA,iBAEA,KAAArqF,SAAA,UACAsqF,EAAA,qBACAD,EAAA,gBAEA,KAAArqF,SAAA,eACAsqF,EAAA,yBACAD,EAAA,iBAOAl2F,EAAAoyE,IAAA,EACA+jB,GACAtqF,SAAAe,iBAAAupF,EAAA,WACA,GAAA1gB,IAAA5pE,SAAAqqF,EACAzgB,KAAAz1E,EAAAoyE,KACApyE,EAAAoyE,GAAAqD,EACAz1E,EAAAw3E,QAAA,UAAA/B,MAEa,GAEbz1E,EAaA,MApDAiQ,GAAAtZ,UAAAo8E,EAAA5iE,GAyCA4iE,EAAAvP,YAAA,WACA,UAAAuP,IAMAA,EAAA/hF,UAAA2mF,gBAAA,SAAAjsB,GAEA,MADA9P,GAAAlpD,OAAA,YAAAg5D,EAAA,uBAAAA,IACA50D,KAAAs7E,KAEAW,GACCkjB,EAAA5e,aACDrnF,GAAA+iF,qB3Eq8cM,SAAU9iF,EAAQD,EAASH,GAEjC,Y4ErgdAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACA+rD,EAAA/rD,EAAA,GACAomG,EAAApmG,EAAA,IACAgsD,EAAAhsD,EAAA,GAUAojF,EAAA,SAAA9iE,GAEA,QAAA8iE,KACA,GAAAjzE,GAAAmQ,EAAA/f,KAAA0G,MAAA,YAAAA,IAsBA,OArBAkJ,GAAAo2F,IAAA,EAKA,mBAAA1mG,aACA,KAAAA,OAAAkd,kBACAivC,EAAAnoD,oBACAhE,OAAAkd,iBAAA,oBACA5M,EAAAo2F,KACAp2F,EAAAo2F,IAAA,EACAp2F,EAAAw3E,QAAA,gBAEa,GACb9nF,OAAAkd,iBAAA,qBACA5M,EAAAo2F,KACAp2F,EAAAo2F,IAAA,EACAp2F,EAAAw3E,QAAA,gBAEa,IAEbx3E,EAmBA,MA3CAiQ,GAAAtZ,UAAAs8E,EAAA9iE,GA0BA8iE,EAAAzP,YAAA,WACA,UAAAyP,IAMAA,EAAAjiF,UAAA2mF,gBAAA,SAAAjsB,GAEA,MADA9P,GAAAlpD,OAAA,WAAAg5D,EAAA,uBAAAA,IACA50D,KAAAs/F,KAKAnjB,EAAAjiF,UAAAmmF,gBAAA,WACA,MAAArgF,MAAAs/F,IAEAnjB,GACCgjB,EAAA5e,aACDrnF,GAAAijF,iB5E6hdM,SAAUhjF,EAAQD,EAASH,GAEjC,Y6E3ldAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA6jG,GAAAxmG,EAAA,IACAymG,EAAAzmG,EAAA,IACA+rD,EAAA/rD,EAAA,GASAuoF,EAAA,WAIA,QAAAA,GAAAnsB,GACAn1D,KAAAy/F,GAAAtqC,GA6DA,MA3DAl7D,QAAAY,eAAAymF,EAAA,kBAKAtmF,IAAA,WACA,OAAAukG,EAAAha,sBAAAia,EAAAvV,sBAEAlvF,YAAA,EACAD,cAAA,IAMAwmF,EAAApnF,UAAAulG,GAAA,SAAAtqC,GACA,GAAAuqC,GAAAF,EAAAvV,qBAAAuV,EAAAvV,oBAAA,cACA0V,EAAAD,IAAAF,EAAAvV,oBAAAe,kBAMA,IALA71B,EAAA0Z,gBACA6wB,GACA56C,EAAA3xC,KAAA,mFACAwsF,GAAA,GAEAA,EACA3/F,KAAA4/F,IAAAJ,EAAAvV,yBAEA,CACA,GAAA4V,GAAA7/F,KAAA4/F,KACA96C,GAAAkD,KAAAs5B,EAAAwe,eAAA,SAAA1mG,EAAA2mG,GACAA,KAAA,eACAF,EAAA7lG,KAAA+lG,OASAze,EAAApnF,UAAAunF,iBAAA,WACA,GAAAzhF,KAAA4/F,GAAA9lG,OAAA,EACA,MAAAkG,MAAA4/F,GAAA,EAGA,MAAAn1F,OAAA,4BAOA62E,EAAApnF,UAAAmqF,iBAAA,WACA,MAAArkF,MAAA4/F,GAAA9lG,OAAA,EACAkG,KAAA4/F,GAAA,GAGA,MAGAte,IAEApoF,GAAAooF,oB7EmndM,SAAUnoF,EAAQD,EAASH,GAEjC,Y8ErsdAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GAMA8sF,EAAA,WAIA,QAAAA,GAAA7E,GACAhhF,KAAAghF,KACAhhF,KAAAggG,oBACAhgG,KAAAigG,mBAAA,EACAjgG,KAAAkgG,oBAAA,EACAlgG,KAAAmgG,QAAA,KAiDA,MA/CAta,GAAA3rF,UAAAssF,WAAA,SAAA4Z,EAAAz3F,GACA3I,KAAAkgG,mBAAAE,EACApgG,KAAAmgG,QAAAx3F,EACA3I,KAAAkgG,mBAAAlgG,KAAAigG,qBACAjgG,KAAAmgG,UACAngG,KAAAmgG,QAAA,OAUAta,EAAA3rF,UAAAwsF,eAAA,SAAA2Z,EAAA3vF,GACA,GAAAxH,GAAAlJ,IACAA,MAAAggG,iBAAAK,GAAA3vF,CAwBA,KAvBA,GAsBA4vF,GAAAtgG,KACAA,KAAAggG,iBAAAhgG,KAAAigG,qBAEA,UAzBA,WACA,GAAAM,GAAAD,EAAAN,iBAAAM,EAAAL,0BACAK,GAAAN,iBAAAM,EAAAL,mBAQA,QAAA7mG,GAAA,EAA2BA,EAAAmnG,EAAAzmG,SAAsBV,GAPjD,SAAAA,GACAmnG,EAAAnnG,IACA0rD,EAAAuE,eAAA,WACAngD,EAAA83E,GAAAuf,EAAAnnG,OAKAA,EAEA,IAAAknG,EAAAL,qBAAAK,EAAAJ,mBAKA,MAJAI,GAAAH,UACAG,EAAAH,UACAG,EAAAH,QAAA,MAEA,OAEAG,GAAAL,4BASApa,IAEA3sF,GAAA2sF,kB9E6tdM,SAAU1sF,EAAQD,EAASH,GAEjC,Y+ElydAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAyd,GAAApgB,EAAA,GACA+rD,EAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAisD,EAAAjsD,EAAA,GACAksD,EAAAlsD,EAAA,GACAmsD,EAAAnsD,EAAA,GACAshF,EAAAthF,EAAA,IAMAslE,EAAA,SAAAhlD,GAQA,QAAAglD,GAAAjB,EAAAkB,EAAAkc,GACA,GAAAtxE,GAAAmQ,EAAA/f,KAAA0G,WAaA,OAZAkJ,GAAAk0D,IACAl0D,EAAAo1D,KACAp1D,EAAAsxE,KAEAtxE,EAAA04D,GAAA7c,EAAAyB,WAAA,WAOAt9C,EAAA0xE,MACA1xE,EA6HA,MAlJAiQ,GAAAtZ,UAAAw+D,EAAAhlD,GAuBAglD,EAAAnkE,UAAA8jF,YAAA,SAAA5Z,GACA,KAAA35D,OAAA,4BAQA4zD,EAAAmiC,GAAA,SAAAt3C,EAAAoW,GACA,WAAAr5D,KAAAq5D,EACA,OAAAA,GAGAxa,EAAAlpD,OAAAstD,EAAAqoB,iBAAAkL,YAAA,kDACAvzB,KAAA/G,OAIAkc,EAAAnkE,UAAA6lE,OAAA,SAAA7W,EAAAqW,EAAAD,EAAAE,GACA,GAAAt2D,GAAAlJ,KACAsqD,EAAApB,KAAA/G,IACAniD,MAAA4hE,GAAA,qBAAAtX,EAAA,IAAApB,EAAAmqB,kBAEA,IAAAotB,GAAApiC,EAAAmiC,GAAAt3C,EAAAoW,GACAohC,IACA1gG,MAAA46E,GAAA6lB,GAAAC,CACA,IAAAC,GAAAz3C,EACAqoB,iBACAqvB,6BACA5gG,MAAA6gG,GAAAv2C,EAAA,QAAAq2C,EAAA,SAAAllG,EAAA7B,GACA,GAAA8W,GAAA9W,CAQA,IAPA,MAAA6B,IACAiV,EAAA,KACAjV,EAAA,MAEA,OAAAA,GACAyN,EAAAo1D,GAAAhU,EAAA55C,GAAA,EAAA4uD,GAEAra,EAAAvmD,QAAAwK,EAAA0xE,GAAA6lB,KAAAC,EAAA,CACA,GAAAI,EAKAA,GAJArlG,EAGA,KAAAA,EACA,oBAGA,cAAAA,EANA,KAQA+jE,EAAAshC,EAAA,UAKAziC,EAAAnkE,UAAAgmE,SAAA,SAAAhX,EAAAoW,GACA,GAAAmhC,GAAApiC,EAAAmiC,GAAAt3C,EAAAoW,SACAt/D,MAAA46E,GAAA6lB,IAGApiC,EAAAnkE,UAAA0kE,iBAAA,SAAAxmD,KAYAimD,EAAAnkE,UAAA2mG,GAAA,SAAAv2C,EAAAy2C,EAAAp4F,GACA,GAAAO,GAAAlJ,SACA,KAAA+gG,IAA+CA,MAC/CA,EAAA,gBACA/gG,KAAAw6E,GACA/xE,UAAA,GACAlG,KAAA,SAAAy+F,GACA,GAAAC,GAAAD,KAAArqE,WACAsqE,KACAF,EAAA,KAAAE,EAEA,IAAAn6D,IAAA59B,EAAAk0D,EAAA+C,OAAA,sBACAj3D,EAAAk0D,EAAA18C,KACA4pC,EACA,IACApF,EAAAtmD,YAAAmiG,EACA73F,GAAA04D,GAAA,4BAAA96B,EACA,IAAAo6D,GAAA,GAAA9mE,eACA8mE,GAAA1qF,mBAAA,WACA,GAAA7N,GAAA,IAAAu4F,EAAA1xE,WAAA,CACAtmB,EAAA04D,GAAA,qBAAA96B,EAAA,qBAAAo6D,EAAAxmE,OAAA,YAAAwmE,EAAAzmE,aACA,IAAAzpB,GAAA,IACA,IAAAkwF,EAAAxmE,QAAA,KAAAwmE,EAAAxmE,OAAA,KACA,IACA1pB,EAAAg0C,EAAA5nD,SAAA8jG,EAAAzmE,cAEA,MAAAp6B,GACA0kD,EAAA5xC,KAAA,qCACA2zB,EACA,KACAo6D,EAAAzmE,cAEA9xB,EAAA,KAAAqI,OAIA,OAAAkwF,EAAAxmE,QAAA,MAAAwmE,EAAAxmE,QACAqqB,EAAA5xC,KAAA,sCACA2zB,EACA,YACAo6D,EAAAxmE,QAEA/xB,EAAAu4F,EAAAxmE,OAEA/xB,GAAA,OAGAu4F,EAAA5gF,KAAA,MAAAwmB,GAAA,GACAo6D,EAAAlkE,UAGAqhC,GACCgc,EAAAiG,cACDpnF,GAAAmlE,sB/E0zdM,SAAUllE,EAAQD,EAASH,GAEjC,YgF99dAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAgsD,EAAAhsD,EAAA,GACAo1D,EAAAp1D,EAAA,IACAm1D,EAAAn1D,EAAA,GACAk3E,EAAAl3E,EAAA,IACAm3E,EAAAn3E,EAAA,IACA+yF,EAAA/yF,EAAA,IACAooG,EAAApoG,EAAA,KACAqoG,EAAAroG,EAAA,IACAisD,EAAAjsD,EAAA,GAOAquE,EAAA,WACA,QAAAA,KACApnE,KAAAqhG,IAAA,EACArhG,KAAAshG,IAAA,EACAthG,KAAAuhG,IAAA,EACAvhG,KAAAwhG,IAAA,EACAxhG,KAAAyhG,IAAA,EACAzhG,KAAA0hG,GAAA,EACA1hG,KAAA2hG,GAAA,GACA3hG,KAAA4hG,GAAA,KACA5hG,KAAA6hG,GAAA,GACA7hG,KAAA8hG,GAAA,KACA9hG,KAAA+hG,GAAA,GACA/hG,KAAA+oE,GAAA7a,EAAAJ,eAmWA,MA9VAsZ,GAAAltE,UAAAu2E,SAAA,WACA,MAAAzwE,MAAAshG,IAKAl6B,EAAAltE,UAAA8nG,eAAA,WACA,WAAAhiG,KAAA2hG,GAKA3hG,KAAAshG,GAGAthG,KAAA2hG,KAAAv6B,EAAA66B,GAAAC,gBAOA96B,EAAAltE,UAAAw2E,mBAAA,WAEA,MADA5rB,GAAAlpD,OAAAoE,KAAAshG,GAAA,oCACAthG,KAAA4hG,IAOAx6B,EAAAltE,UAAA62E,kBAAA,WAEA,MADAjsB,GAAAlpD,OAAAoE,KAAAshG,GAAA,oCACAthG,KAAAuhG,GACAvhG,KAAA6hG,GAGA98C,EAAAqC,UAMAggB,EAAAltE,UAAAy2E,OAAA,WACA,MAAA3wE,MAAAwhG,IAMAp6B,EAAAltE,UAAA02E,iBAAA,WAEA,MADA9rB,GAAAlpD,OAAAoE,KAAAwhG,GAAA,kCACAxhG,KAAA8hG,IAOA16B,EAAAltE,UAAA82E,gBAAA,WAEA,MADAlsB,GAAAlpD,OAAAoE,KAAAwhG,GAAA,kCACAxhG,KAAAyhG,GACAzhG,KAAA+hG,GAGAh9C,EAAAsC,UAMA+f,EAAAltE,UAAAk3E,SAAA,WACA,MAAApxE,MAAAqhG,IAKAj6B,EAAAltE,UAAAm3E,iBAAA,WACA,MAAArxE,MAAAqhG,IAAA,KAAArhG,KAAA2hG,IAMAv6B,EAAAltE,UAAAioG,SAAA,WAEA,MADAr9C,GAAAlpD,OAAAoE,KAAAqhG,GAAA,oCACArhG,KAAA0hG,IAKAt6B,EAAAltE,UAAA4xE,SAAA,WACA,MAAA9rE,MAAA+oE,IAMA3B,EAAAltE,UAAAkoG,GAAA,WACA,GAAApnC,GAAA,GAAAoM,EAaA,OAZApM,GAAAqmC,GAAArhG,KAAAqhG,GACArmC,EAAA0mC,GAAA1hG,KAAA0hG,GACA1mC,EAAAsmC,GAAAthG,KAAAshG,GACAtmC,EAAA4mC,GAAA5hG,KAAA4hG,GACA5mC,EAAAumC,GAAAvhG,KAAAuhG,GACAvmC,EAAA6mC,GAAA7hG,KAAA6hG,GACA7mC,EAAAwmC,GAAAxhG,KAAAwhG,GACAxmC,EAAA8mC,GAAA9hG,KAAA8hG,GACA9mC,EAAAymC,GAAAzhG,KAAAyhG,GACAzmC,EAAA+mC,GAAA/hG,KAAA+hG,GACA/mC,EAAA+N,GAAA/oE,KAAA+oE,GACA/N,EAAA2mC,GAAA3hG,KAAA2hG,GACA3mC,GAMAoM,EAAAltE,UAAAq4E,MAAA,SAAA8vB,GACA,GAAA1vB,GAAA3yE,KAAAoiG,IAIA,OAHAzvB,GAAA0uB,IAAA,EACA1uB,EAAA+uB,GAAAW,EACA1vB,EAAAgvB,GAAA,GACAhvB,GAMAvL,EAAAltE,UAAAo4E,aAAA,SAAA+vB,GACA,GAAA1vB,GAAA3yE,KAAAoiG,IAIA,OAHAzvB,GAAA0uB,IAAA,EACA1uB,EAAA+uB,GAAAW,EACA1vB,EAAAgvB,GAAAv6B,EAAA66B,GAAAC,eACAvvB,GAMAvL,EAAAltE,UAAAs4E,YAAA,SAAA6vB,GACA,GAAA1vB,GAAA3yE,KAAAoiG,IAIA,OAHAzvB,GAAA0uB,IAAA,EACA1uB,EAAA+uB,GAAAW,EACA1vB,EAAAgvB,GAAAv6B,EAAA66B,GAAAK,gBACA3vB,GAOAvL,EAAAltE,UAAA84E,QAAA,SAAArlB,EAAA/sD,GACA,GAAA+xE,GAAA3yE,KAAAoiG,IAcA,OAbAzvB,GAAA2uB,IAAA,MACAr7F,KAAA0nD,IACAA,EAAA,MAEAglB,EAAAivB,GAAAj0C,EACA,MAAA/sD,GACA+xE,EAAA4uB,IAAA,EACA5uB,EAAAkvB,GAAAjhG,IAGA+xE,EAAA4uB,IAAA,EACA5uB,EAAAkvB,GAAA,IAEAlvB,GAOAvL,EAAAltE,UAAA+4E,MAAA,SAAAtlB,EAAA/sD,GACA,GAAA+xE,GAAA3yE,KAAAoiG,IAcA,OAbAzvB,GAAA6uB,IAAA,MACAv7F,KAAA0nD,IACAA,EAAA,MAEAglB,EAAAmvB,GAAAn0C,MACA1nD,KAAArF,GACA+xE,EAAA8uB,IAAA,EACA9uB,EAAAovB,GAAAnhG,IAGA+xE,EAAA8uB,IAAA,EACA9uB,EAAAovB,GAAA,IAEApvB,GAMAvL,EAAAltE,UAAA04E,QAAA,SAAA5hB,GACA,GAAA2hB,GAAA3yE,KAAAoiG,IAEA,OADAzvB,GAAA5J,GAAA/X,EACA2hB,GAKAvL,EAAAltE,UAAAk5E,eAAA,WACA,GAAAmvB,GAAAn7B,EAAA66B,GACAj6F,IAaA,IAZAhI,KAAAshG,KACAt5F,EAAAu6F,EAAAC,mBAAAxiG,KAAA4hG,GACA5hG,KAAAuhG,KACAv5F,EAAAu6F,EAAAE,kBAAAziG,KAAA6hG,KAGA7hG,KAAAwhG,KACAx5F,EAAAu6F,EAAAG,iBAAA1iG,KAAA8hG,GACA9hG,KAAAyhG,KACAz5F,EAAAu6F,EAAAI,gBAAA3iG,KAAA+hG,KAGA/hG,KAAAqhG,GAAA,CACAr5F,EAAAu6F,EAAAK,OAAA5iG,KAAA0hG,EACA,IAAAmB,GAAA7iG,KAAA2hG,EACA,MAAAkB,IAEAA,EADA7iG,KAAAgiG,iBACAO,EAAAL,eAGAK,EAAAD,iBAGAt6F,EAAAu6F,EAAAO,WAAAD,EAMA,MAHA7iG,MAAA+oE,KAAA7a,EAAAJ,iBACA9lD,EAAAu6F,EAAAQ,OAAA/iG,QAAA+oE,IAEA/gE,GAKAo/D,EAAAltE,UAAA0+E,aAAA,WACA,QAAA54E,KAAAshG,IAAAthG,KAAAwhG,IAAAxhG,KAAAqhG,KAKAj6B,EAAAltE,UAAAuiF,UAAA,WACA,MAAAz8E,MAAA44E,gBAAA54E,KAAA+oE,IAAA7a,EAAAJ,gBAKAsZ,EAAAltE,UAAAo6F,cAAA,WACA,MAAAt0F,MAAA44E,eACA,GAAAkT,GAAAxgB,cAAAtrE,KAAA8rE,YAEA9rE,KAAAoxE,WACA,GAAA+vB,GAAA6B,cAAAhjG,MAGA,GAAAohG,GAAArV,aAAA/rF,OAQAonE,EAAAltE,UAAA0mG,4BAAA,WACA,GAAAqC,GAAA77B,EAAA87B,GACAC,IACA,IAAAnjG,KAAAy8E,YACA,MAAA0mB,EAEA,IAAAvwB,EAmCA,OAlCA5yE,MAAA+oE,KAAA7a,EAAAJ,eACA8kB,EAAAqwB,EAAAn1C,eAEA9tD,KAAA+oE,KAAAkH,EAAAiB,YACA0B,EAAAqwB,EAAA/xB,YAEAlxE,KAAA+oE,KAAA5a,EAAAqE,UACAogB,EAAAqwB,EAAAzwC,WAGA1N,EAAAlpD,OAAAoE,KAAA+oE,aAAAmH,GAAAe,UAAA,4BACA2B,EAAA5yE,QAAA+oE,IAEAo6B,EAAAF,EAAAG,UAAAp+C,EAAA3nD,UAAAu1E,GACA5yE,KAAAshG,KACA6B,EAAAF,EAAAI,UAAAr+C,EAAA3nD,UAAA2C,KAAA4hG,IACA5hG,KAAAuhG,KACA4B,EAAAF,EAAAI,WAAA,IAAAr+C,EAAA3nD,UAAA2C,KAAA6hG,MAGA7hG,KAAAwhG,KACA2B,EAAAF,EAAAK,QAAAt+C,EAAA3nD,UAAA2C,KAAA8hG,IACA9hG,KAAAyhG,KACA0B,EAAAF,EAAAK,SAAA,IAAAt+C,EAAA3nD,UAAA2C,KAAA+hG,MAGA/hG,KAAAqhG,KACArhG,KAAAgiG,iBACAmB,EAAAF,EAAAM,gBAAAvjG,KAAA0hG,GAGAyB,EAAAF,EAAAO,eAAAxjG,KAAA0hG,IAGAyB,GAQA/7B,EAAA66B,IACAO,kBAAA,KACAC,iBAAA,KACAC,gBAAA,KACAC,eAAA,KACAC,MAAA,IACAE,UAAA,KACAZ,eAAA,IACAI,gBAAA,IACAS,MAAA,KAQA37B,EAAA87B,IACAE,SAAA,UACAt1C,eAAA,YACAojB,YAAA,SACA1e,UAAA,OACA6wC,SAAA,UACAC,OAAA,QACAC,eAAA,eACAC,cAAA,eAOAp8B,EAAAC,QAAA,GAAAD,GACAA,IAEAluE,GAAAkuE,ehFs/dM,SAAUjuE,EAAQD,EAASH,GAEjC,YiF33eAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA0lG,GAAAroG,EAAA,IACAy+D,EAAAz+D,EAAA,GACAyzD,EAAAzzD,EAAA,GACA+rD,EAAA/rD,EAAA,GACAsyE,EAAAtyE,EAAA,IAOAiqG,EAAA,WAIA,QAAAA,GAAAhqF,GACAhZ,KAAAyjG,GAAA,GAAArC,GAAArV,aAAA/yE,GACAhZ,KAAA+oE,GAAA/vD,EAAA8yD,WACA9rE,KAAA0hG,GAAA1oF,EAAAmpF,WACAniG,KAAA0jG,IAAA1qF,EAAAgpF,iBA0NA,MArNAgB,GAAA9oG,UAAA+1D,YAAA,SAAAgR,EAAArgE,EAAAwpE,EAAAlJ,EAAArrD,EAAA01D,GAIA,MAHAvrE,MAAAyjG,GAAAlX,QAAA,GAAA//B,GAAAc,UAAA1sD,EAAAwpE,MACAA,EAAA5S,EAAAlJ,aAAAP,YAEAkT,EAAA9R,kBAAAvuD,GAAA4qD,OAAA4e,GAEAnJ,EAEAA,EAAA9Q,cAAAnwD,KAAA0hG,GACA1hG,KAAAyjG,GACA53B,mBACA5b,YAAAgR,EAAArgE,EAAAwpE,EAAAlJ,EAAArrD,EAAA01D,GAGAvrE,KAAA2jG,GAAA1iC,EAAArgE,EAAAwpE,EAAAv0D,EAAA01D,IAMAy3B,EAAA9oG,UAAAwxE,eAAA,SAAAnV,EAAAoV,EAAAJ,GACA,GAAA+N,EACA,IAAA3N,EAAA3c,cAAA2c,EAAAptE,UAEA+6E,EAAA9hB,EAAAlJ,aAAAP,WAAAwE,UAAAvyD,KAAA+oE,QAGA,MAAA/oE,KAAA0hG,GAAA/1B,EAAAxb,eACAwb,EAAAhZ,UAAA3yD,KAAA+oE,IAAA,CAEAuQ,EAAA9hB,EAAAlJ,aAAAP,WAAAwE,UAAAvyD,KAAA+oE,GAEA,IAAAplE,OAAA,EAEAA,GADA3D,KAAA0jG,GACA/3B,EAAAtZ,uBAAAryD,KAAAyjG,GAAAnX,aAAAtsF,KAAA+oE,IAGA4C,EAAA5Z,gBAAA/xD,KAAAyjG,GAAApX,eAAArsF,KAAA+oE,GAGA,KADA,GAAA3Y,GAAA,EACAzsD,EAAAi3D,WAAAxK,EAAApwD,KAAA0hG,IAAA,CACA,GAAAt/F,GAAAuB,EAAAwuD,UACAyxC,MAAA,EASA,MAPAA,EADA5jG,KAAA0jG,GAEA1jG,KAAA+oE,GAAApc,QAAA3sD,KAAAyjG,GAAApX,eAAAjqF,IAAA,EAIApC,KAAA+oE,GAAApc,QAAAvqD,EAAApC,KAAAyjG,GAAAnX,eAAA,GAQA,KALAhT,KAAA9pB,qBAAAptD,EAAA1H,KAAA0H,EAAA09B,MACAswB,SAQA,CAEAkpB,EAAA3N,EAAApZ,UAAAvyD,KAAA+oE,IAEAuQ,IAAArqB,eAAAuI,EAAAlJ,aAAAP,WACA,IAAAiE,OAAA,GACAM,MAAA,GACA/G,MAAA,GACA5nD,MAAA,EACA,IAAA3D,KAAA0jG,GAAA,CACA//F,EAAA21E,EAAAlnB,mBAAApyD,KAAA+oE,IACA/W,EAAAhyD,KAAAyjG,GAAAnX,aACAh6B,EAAAtyD,KAAAyjG,GAAApX,cACA,IAAAwX,GAAA7jG,KAAA+oE,GAAAzQ,YACA/M,GAAA,SAAAnnD,EAAAtE,GAA2C,MAAA+jG,GAAA/jG,EAAAsE,QAG3CT,GAAA21E,EAAAxnB,YAAA9xD,KAAA+oE,IACA/W,EAAAhyD,KAAAyjG,GAAApX,eACA/5B,EAAAtyD,KAAAyjG,GAAAnX,aACA/gC,EAAAvrD,KAAA+oE,GAAAzQ,YAIA,KAFA,GAAAlI,GAAA,EACA0zC,GAAA,EACAngG,EAAAi3D,WAAA,CACA,GAAAx4D,GAAAuB,EAAAwuD,WACA2xC,GAAAv4C,EAAAyG,EAAA5vD,IAAA,IAEA0hG,GAAA,EAEA,IAAAF,GAAAE,GAAA1zC,EAAApwD,KAAA0hG,IAAAn2C,EAAAnpD,EAAAkwD,IAAA,CACAsxC,GACAxzC,IAGAkpB,IAAA9pB,qBAAAptD,EAAA1H,KAAA88D,EAAAlJ,aAAAP,aAKA,MAAA/tD,MAAAyjG,GACA53B,mBACAH,eAAAnV,EAAA+iB,EAAA/N,IAKAy3B,EAAA9oG,UAAA+0D,eAAA,SAAAsH,EAAA1G,GAEA,MAAA0G,IAKAysC,EAAA9oG,UAAA0xE,aAAA,WACA,UAKAo3B,EAAA9oG,UAAA2xE,iBAAA,WACA,MAAA7rE,MAAAyjG,GAAA53B,oBAKAm3B,EAAA9oG,UAAA4xE,SAAA,WACA,MAAA9rE,MAAA+oE,IAWAi6B,EAAA9oG,UAAAypG,GAAA,SAAA1iC,EAAApK,EAAAgT,EAAAh0D,EAAAkuF,GAEA,GAAAx4C,EACA,IAAAvrD,KAAA0jG,GAAA,CACA,GAAAM,GAAAhkG,KAAA+oE,GAAAzQ,YACA/M,GAAA,SAAAnnD,EAAAtE,GAAmC,MAAAkkG,GAAAlkG,EAAAsE,QAGnCmnD,GAAAvrD,KAAA+oE,GAAAzQ,YAEA,IAAA+gC,GAAAp4B,CACAnc,GAAAlpD,OAAAy9F,EAAAlpC,eAAAnwD,KAAA0hG,GAAA,GACA,IAAAuC,GAAA,GAAAz3C,GAAAc,UAAAuJ,EAAAgT,GACAq6B,EAAAlkG,KAAA0jG,GACArK,EAAA7nC,cAAAxxD,KAAA+oE,IACAswB,EAAA3nC,aAAA1xD,KAAA+oE,IACA66B,EAAA5jG,KAAAyjG,GAAAlX,QAAA0X,EACA,IAAA5K,EAAA9pC,SAAAsH,GAAA,CAGA,IAFA,GAAAstC,GAAA9K,EAAAlqC,kBAAA0H,GACAiU,EAAAj1D,EAAA8jF,mBAAA35F,KAAA+oE,GAAAm7B,EAAAlkG,KAAA0jG,IACA,MAAA54B,IACAA,EAAApwE,MAAAm8D,GAAAwiC,EAAA9pC,SAAAub,EAAApwE,QAIAowE,EAAAj1D,EAAA8jF,mBAAA35F,KAAA+oE,GAAA+B,EAAA9qE,KAAA0jG,GAEA,IAAAU,GAAA,MAAAt5B,EAAA,EAAAvf,EAAAuf,EAAAm5B,EAEA,IADAL,IAAA/5B,EAAAtrE,WAAA6lG,GAAA,EAKA,MAHA,OAAAL,GACAA,EAAAt4B,iBAAAJ,EAAAhV,OAAAY,mBAAAJ,EAAAgT,EAAAs6B,IAEA9K,EAAA7pC,qBAAAqH,EAAAgT,EAGA,OAAAk6B,GACAA,EAAAt4B,iBAAAJ,EAAAhV,OAAAU,mBAAAF,EAAAstC,GAEA,IAAAvP,GAAAyE,EAAA7pC,qBAAAqH,EAAAW,EAAAlJ,aAAAP,WAEA,OADA,OAAA+c,GAAA9qE,KAAAyjG,GAAAlX,QAAAzhB,IAEA,MAAAi5B,GACAA,EAAAt4B,iBAAAJ,EAAAhV,OAAAO,iBAAAkU,EAAApwE,KAAAowE,EAAAhrC,OAEA80D,EAAAplC,qBAAAsb,EAAApwE,KAAAowE,EAAAhrC,OAGA80D,EAIA,MAAA/qB,GAAAtrE,UAEA0iE,EAEA2iC,GACAr4C,EAAA24C,EAAAD,IAAA,GACA,MAAAF,IACAA,EAAAt4B,iBAAAJ,EAAAhV,OAAAU,mBAAAmtC,EAAAxpG,KAAAwpG,EAAApkE,OACAikE,EAAAt4B,iBAAAJ,EAAAhV,OAAAO,iBAAAC,EAAAgT,KAEAwvB,EACA7pC,qBAAAqH,EAAAgT,GACAra,qBAAA00C,EAAAxpG,KAAA88D,EAAAlJ,aAAAP,aAOAkT,GAGA+hC,IAEA9pG,GAAA8pG,iBjFm5eM,SAAU7pG,EAAQD,EAASH,GAEjC,YkFrofAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAoBA2oG,GApBAv/C,EAAA/rD,EAAA,GACAm0E,EAAAn0E,EAAA,IACA8zF,EAAA9zF,EAAA,IACAw6D,EAAAx6D,EAAA,GACAurG,EAAAvrG,EAAA,KACAm1D,EAAAn1D,EAAA,GACAgsD,EAAAhsD,EAAA,GACAujE,EAAAvjE,EAAA,IACAoG,EAAApG,EAAA,GACAisD,EAAAjsD,EAAA,GACAwjE,EAAAxjE,EAAA,IACAy+D,EAAAz+D,EAAA,GACAguE,EAAAhuE,EAAA,KASA,SAAAsrG,GAIAA,IAAA,aAGAA,IAAA,eAGAA,IAAA,yBAGAA,IAAA,uCAEAA,IAAA,8BACCA,EAAAnrG,EAAAmrG,oBAAAnrG,EAAAmrG,uBAQDt9B,EAAA5J,KAAAonC,GAAA,GAKAx9B,EAAA5J,KAAAjjE,UAAA8kE,GAAA,WAOAh/D,KAAAwkG,GAAA,GAAAF,GAAAG,MAUA19B,EAAA5J,KAAAjjE,UAAAiuE,iBAAA,SAAAhmB,EAAA2lB,EAAAtI,EAAAuI,GACA/nE,KAAA4hE,GAAA,kBAAAzf,EAEA,IAAA8vB,GAAA,aACAyyB,EAAA,GAAAx3B,GAAAhG,UAAAlnE,KAAAmiD,EACAuiD,GAAAp4F,GAAA,QAAA2lE,EACA,IAAA0yB,GAAA,WACAD,EAAAj4F,IAAA,QAAAwlE,IAGAxoC,GACA0Y,OACAjoC,OAAA4tD,EACAtI,aAEA9kC,OAAA,KAEAkqE,MAAA7/C,EAAAU,gBAEAsiB,eAEA88B,WAAA,EAEAF,YAEAG,YAAA,KACAC,eAAA,KACAC,qBAAA,KACAC,yBAAA,KACAC,8BAAA,MAGAC,EAAAnlG,KAAAolG,GAAAjjD,EACA1Y,GAAAu7D,qBAAAG,CACA,IAAAxjC,GAAAl4B,EAAAvvB,OAAAirF,EAAAryF,MACA,QAAA7M,KAAA07D,GAKA,GAHAl4B,EAAAk7D,YACAl7D,EAAAw7D,yBAAA,KACAx7D,EAAAy7D,8BAAA,KACAz7D,EAAA+1B,WAAA,CAEA,GAAA9I,GAAA,GAAAm2B,GAAAhkB,aAAAp/B,EAAAu7D,qBAAA,GAAA93B,GAAAhG,UAAAlnE,KAAAypC,EAAA0Y,MAAA+L,EAAAJ,eACArkB,GAAA+1B,WAAA,QAAA9I,QAGA,CACAv3D,EAAA80D,qBAAA,qCAAA0N,EAAAl4B,EAAA0Y,MAEA1Y,EAAA/O,OAAA2pE,EAAAgB,GACA,IAAAC,GAAAtlG,KAAAwkG,GAAAe,QAAApjD,GACAqjD,EAAAF,EAAAzrC,cACA2rC,GAAAxrG,KAAAyvC,GACA67D,EAAAG,SAAAD,EAIA,IAAAE,OAAA,EACA,iBAAA/jC,IACA,OAAAA,GACA3c,EAAAlnD,SAAA6jE,EAAA,cACA+jC,EAAA1gD,EAAAtmD,QAAAijE,EAAA,aACA7c,EAAAlpD,OAAAuD,EAAA20D,gBAAA4xC,GAAA,qHAMAA,GAFA1lG,KAAA8/D,GAAAgY,uBAAA31B,IACAqV,EAAAlJ,aAAAP,YACAlB,cAAA/5C,MAEA4yF,EAAsDA,CACtD,IAAA7jC,GAAA7hE,KAAAugE,uBACAuB,EAAAvF,EAAAnQ,aAAAuV,EAAA+jC,GACAt4C,EAAAkP,EAAAyF,6BAAAD,EAAAD,EACAp4B,GAAAw7D,yBAAAnjC,EACAr4B,EAAAy7D,8BAAA93C,EACA3jB,EAAAs7D,eAAA/kG,KAAAyhE,IACA,IAAAzB,GAAAhgE,KAAA8/D,GAAAmC,mBAAA9f,EAAAiL,EAAA3jB,EAAAs7D,eAAAt7D,EAAAs+B,aACA/nE,MAAAw9D,EAAAyC,0BAAA9d,EAAA6d,GACAhgE,KAAA2lG,OASA5+B,EAAA5J,KAAAjjE,UAAAkrG,GAAA,SAAAjjD,EAAAyjD,GACA,MAAA5lG,MAAA8/D,GAAAgY,uBAAA31B,EAAAyjD,IACApuC,EAAAlJ,aAAAP,YAYAgZ,EAAA5J,KAAAjjE,UAAAyrG,GAAA,SAAA7lE,GACA,GAAA52B,GAAAlJ,IAMA,QALA,KAAA8/B,IAA0BA,EAAA9/B,KAAAwkG,IAE1B1kE,GACA9/B,KAAA6lG,GAAA/lE,GAEA,OAAAA,EAAA+5B,WAAA,CACA,GAAAxuD,GAAArL,KAAA8lG,GAAAhmE,EACAglB,GAAAlpD,OAAAyP,EAAAvR,OAAA,2CACAuR,EAAAtN,MAAA,SAAA0rC,GAAyD,MAAAA,GAAA/O,SAAA2pE,EAAAgB,OAGzDrlG,KAAA+lG,GAAAjmE,EAAAqiB,OAAA92C,OAGAy0B,GAAAupC,eACAvpC,EAAA2wB,aAAA,SAAAC,GACAxnD,EAAAy8F,GAAAj1C,MAWAqW,EAAA5J,KAAAjjE,UAAA6rG,GAAA,SAAA5jD,EAAA92C,GASA,OARAnC,GAAAlJ,KAEAgmG,EAAA36F,EAAA5M,IAAA,SAAAwnG,GACA,MAAAA,GAAAlB,iBAEAmB,EAAAlmG,KAAAolG,GAAAjjD,EAAA6jD,GACAG,EAAAD,EACAE,EAAAF,EAAAv1C,OACAv3D,EAAA,EAAmBA,EAAAiS,EAAAvR,OAAkBV,IAAA,CACrC,GAAA6sG,GAAA56F,EAAAjS,EACA0rD,GAAAlpD,OAAAqqG,EAAAvrE,SAAA2pE,EAAAgB,IAAA,iEACAY,EAAAvrE,OAAA2pE,EAAAgC,KACAJ,EAAApB,YACA,IAAA/5C,GAAAyI,EAAA3J,KAAAkB,aAAA3I,EAAA8jD,EAAA9jD,KAEAgkD,KAAAl2C,YAAAnF,EAAyEm7C,EAAAhB,0BAEzE,GAAAqB,GAAAH,EAAArzF,KAAA,GACAyzF,EAAApkD,CAEAniD,MAAAo+D,EAAA7a,IAAAgjD,KAAAD,EAAA,SAAA5rE,GACAxxB,EAAA04D,GAAA,4BACAzf,KAAAokD,KACA7rE,UAEA,IAAAslC,KACA,WAAAtlC,EAAA,CAIA,OADAi3C,MACAv4E,EAAA,EAA2BA,EAAAiS,EAAAvR,OAAkBV,IAAA,CAG7C,GAFAiS,EAAAjS,GAAAshC,OAAA2pE,EAAAmC,UACAxmC,IAAA/7D,OAAAiF,EAAA42D,GAAAwC,aAAAj3D,EAAAjS,GAAA2rG,iBACA15F,EAAAjS,GAAAomE,WAAA,CAEA,GAAA1/B,GAAAz0B,EAAAjS,GAAA8rG,8BACArxF,EAAA,GAAAq5D,GAAAhG,UAAAh+D,EAAAmC,EAAAjS,GAAA+oD,MACAuU,EAAA,GAAAm2B,GAAAhkB,aAAA/oC,EAAAjsB,EAAAq6C,EAAAJ,eACA6jB,GAAA33E,KAAAqR,EAAAjS,GAAAomE,WAAAr4D,KAAA,aAAAuvD,IAEArrD,EAAAjS,GAAAurG,YAGAz7F,EAAA28F,GAAA38F,EAAAs7F,GAAAe,QAAApjD,IAEAj5C,EAAAy8F,KACAz8F,EAAAs0D,EAAAyC,0BAAA9d,EAAA6d,EAEA,QAAA5mE,GAAA,EAA2BA,EAAAu4E,EAAA73E,OAAsBV,IACjD2rD,EAAAsE,eAAAsoB,EAAAv4E,QAGA,CAEA,iBAAAshC,EACA,OAAAthC,GAAA,EAA+BA,EAAAiS,EAAAvR,OAAkBV,IACjDiS,EAAAjS,GAAAshC,SAAA2pE,EAAAoC,iBACAp7F,EAAAjS,GAAAshC,OAAA2pE,EAAAqC,YAEAr7F,EAAAjS,GAAAshC,OAAA2pE,EAAAgB,QAGA,CACAtgD,EAAA5xC,KAAA,kBAAAozF,EAAA,YAAA7rE,EACA,QAAAthC,GAAA,EAA+BA,EAAAiS,EAAAvR,OAAkBV,IACjDiS,EAAAjS,GAAAshC,OAAA2pE,EAAAqC,YACAr7F,EAAAjS,GAAA0rG,YAAApqE,EAGAxxB,EAAAi4D,GAAAhf,KAEKikD,IAcLr/B,EAAA5J,KAAAjjE,UAAAinE,GAAA,SAAA6B,GACA,GAAA2jC,GAAA3mG,KAAA4mG,GAAA5jC,GACA7gB,EAAAwkD,EAAAxkD,OACA92C,EAAArL,KAAA8lG,GAAAa,EAEA,OADA3mG,MAAA6mG,GAAAx7F,EAAA82C,GACAA,GASA4kB,EAAA5J,KAAAjjE,UAAA2sG,GAAA,SAAAx7F,EAAA82C,GACA,OAAA92C,EAAAvR,OAAA,CAcA,OATA63E,MACA3R,KAEA8mC,EAAAz7F,EAAAvC,OAAA,SAAAzE,GACA,MAAAA,GAAAq2B,SAAA2pE,EAAAgB,MAEAW,EAAAc,EAAAroG,IAAA,SAAA4F,GACA,MAAAA,GAAA0gG,iBAEA3rG,EAAA,EAAmBA,EAAAiS,EAAAvR,OAAkBV,IAAA,CACrC,GAAAqwC,GAAAp+B,EAAAjS,GACA0xD,EAAAyI,EAAA3J,KAAAkB,aAAA3I,EAAA1Y,EAAA0Y,MACA4kD,GAAA,EAAAjC,MAAA,EAEA,IADAhgD,EAAAlpD,OAAA,OAAAkvD,EAAA,iEACArhB,EAAA/O,SAAA2pE,EAAAqC,YACAK,GAAA,EACAjC,EAAAr7D,EAAAq7D,YACA9kC,IAAA/7D,OAAAjE,KAAA8/D,GAAAwC,aAAA74B,EAAAs7D,gBAAA,QAEA,IAAAt7D,EAAA/O,SAAA2pE,EAAAgB,IACA,GAAA57D,EAAAo7D,YAAA99B,EAAA5J,KAAAonC,GACAwC,GAAA,EACAjC,EAAA,WACA9kC,IAAA/7D,OAAAjE,KAAA8/D,GAAAwC,aAAA74B,EAAAs7D,gBAAA,QAEA,CAEA,GAAAiC,GAAAhnG,KAAAolG,GAAA37D,EAAA0Y,KAAA6jD,EACAv8D,GAAAu7D,qBAAAgC,CACA,IAAArX,GAAAtkF,EAAAjS,GAAA8gB,OAAA8sF,EAAAl0F,MACA,QAAA7M,KAAA0pF,EAAA,CACAxwF,EAAA80D,qBAAA,qCAAA07B,EAAAlmD,EAAA0Y,KACA,IAAA8kD,GAAA1qC,EAAAnQ,aAAAujC,GACAuX,EAAA,gBAAAvX,IACA,MAAAA,GACA3qC,EAAAlnD,SAAA6xF,EAAA,YACAuX,KAEAD,IAAAh4C,eAAA+3C,EAAAn6C,eAEA,IAAAs6C,GAAA19D,EAAAs7D,eACAljC,EAAA7hE,KAAAugE,uBACA6mC,EAAA9qC,EAAAyF,6BAAAklC,EAAAplC,EACAp4B,GAAAw7D,yBAAAgC,EACAx9D,EAAAy7D,8BAAAkC,EACA39D,EAAAs7D,eAAA/kG,KAAAyhE,KAEAukC,EAAAhpF,OAAAgpF,EAAAzlG,QAAA4mG,GAAA,GACAnnC,IAAA/7D,OAAAjE,KAAA8/D,GAAAmC,mBAAAx4B,EAAA0Y,KAAAilD,EAAA39D,EAAAs7D,eAAAt7D,EAAAs+B,eACA/H,IAAA/7D,OAAAjE,KAAA8/D,GAAAwC,aAAA6kC,GAAA,QAGAJ,IAAA,EACAjC,EAAA,SACA9kC,IAAA/7D,OAAAjE,KAAA8/D,GAAAwC,aAAA74B,EAAAs7D,gBAAA,IAMA,GAFA/kG,KAAAw9D,EAAAyC,0BAAA9d,EAAA6d,GACAA,KACA+mC,IAEA17F,EAAAjS,GAAAshC,OAAA2pE,EAAAmC,UAGA,SAAA7B,GACA/7F,WAAA+7F,EAAAlvF,KAAAoD,MAAA,KACaxN,EAAAjS,GAAAurG,WACbt5F,EAAAjS,GAAAomE,YACA,cAAAslC,EAAA,CACA,GAAAjxF,GAAA,GAAAq5D,GAAAhG,UAAAlnE,KAAAqL,EAAAjS,GAAA+oD,MAEAklD,EAAmDh8F,EAAAjS,GAAA4rG,qBACnDtuC,EAAA,GAAAm2B,GAAAhkB,aAAAw+B,EAAAxzF,EAAAq6C,EAAAJ,eACA6jB,GAAA33E,KAAAqR,EAAAjS,GAAAomE,WAAAr4D,KAAA,aAAAuvD,QAGAib,GAAA33E,KAAAqR,EAAAjS,GAAAomE,WAAAr4D,KAAA,KAAAsD,MAAAq6F,IAAA,SAMA9kG,KAAA6lG,GAAA7lG,KAAAwkG,GAEA,QAAAprG,GAAA,EAAmBA,EAAAu4E,EAAA73E,OAAsBV,IACzC2rD,EAAAsE,eAAAsoB,EAAAv4E,GAGA4G,MAAA2lG,OAUA5+B,EAAA5J,KAAAjjE,UAAA0sG,GAAA,SAAAzkD,GAIA,IAHA,GAAAmN,GAEAg4C,EAAAtnG,KAAAwkG,GACA,QAAAl1C,EAAAnN,EAAA+H,aACA,OAAAo9C,EAAAztC,YACAytC,IAAA/B,QAAAj2C,GACAnN,IAAAiI,UAEA,OAAAk9C,IASAvgC,EAAA5J,KAAAjjE,UAAA4rG,GAAA,SAAAwB,GAEA,GAAAC,KAMA,OALAvnG,MAAAwnG,GAAAF,EAAAC,GAEAA,EAAAt3E,KAAA,SAAA7rB,EAAAtE,GACA,MAAAsE,GAAAwgG,MAAA9kG,EAAA8kG,QAEA2C,GAOAxgC,EAAA5J,KAAAjjE,UAAAstG,GAAA,SAAA1nE,EAAAz0B,GACA,GAAAnC,GAAAlJ,KACAwlG,EAAA1lE,EAAA+5B,UACA,WAAA2rC,EACA,OAAApsG,GAAA,EAAuBA,EAAAosG,EAAA1rG,OAAsBV,IAC7CiS,EAAArR,KAAAwrG,EAAApsG,GAGA0mC,GAAA2wB,aAAA,SAAA9F,GACAzhD,EAAAs+F,GAAA78C,EAAAt/C,MASA07D,EAAA5J,KAAAjjE,UAAA2rG,GAAA,SAAA/lE,GACA,GAAA52B,GAAAlJ,KACAqL,EAAAy0B,EAAA+5B,UACA,IAAAxuD,EAAA,CAEA,OADAo8F,GAAA,EACAC,EAAA,EAA0BA,EAAAr8F,EAAAvR,OAAqB4tG,IAC/Cr8F,EAAAq8F,GAAAhtE,SAAA2pE,EAAAmC,YACAn7F,EAAAo8F,GAAAp8F,EAAAq8F,GACAD,IAGAp8F,GAAAvR,OAAA2tG,EACA3nE,EAAA2lE,SAAAp6F,EAAAvR,OAAA,EAAAuR,EAAA,MAEAy0B,EAAA2wB,aAAA,SAAAC,GACAxnD,EAAA28F,GAAAn1C,MAWAqW,EAAA5J,KAAAjjE,UAAAsoE,GAAA,SAAArgB,GACA,GAAAj5C,GAAAlJ,KACAkhE,EAAAlhE,KAAA4mG,GAAAzkD,UACAmlD,EAAAtnG,KAAAwkG,GAAAe,QAAApjD,EAQA,OAPAmlD,GAAAK,gBAAA,SAAA7nE,GACA52B,EAAA0+F,GAAA9nE,KAEA9/B,KAAA4nG,GAAAN,GACAA,EAAAO,kBAAA,SAAA/nE,GACA52B,EAAA0+F,GAAA9nE,KAEAohC,GAQA6F,EAAA5J,KAAAjjE,UAAA0tG,GAAA,SAAA9nE,GACA,GAAAz0B,GAAAy0B,EAAA+5B,UACA,WAAAxuD,EAAA,CAQA,OALAsmE,MAGA3R,KACA8nC,GAAA,EACA1uG,EAAA,EAAuBA,EAAAiS,EAAAvR,OAAkBV,IACzCiS,EAAAjS,GAAAshC,SAAA2pE,EAAAoC,mBAGAp7F,EAAAjS,GAAAshC,SAAA2pE,EAAAgC,MACAvhD,EAAAlpD,OAAAksG,IAAA1uG,EAAA,qDACA0uG,EAAA1uG,EAEAiS,EAAAjS,GAAAshC,OAAA2pE,EAAAoC,iBACAp7F,EAAAjS,GAAA0rG,YAAA,QAGAhgD,EAAAlpD,OAAAyP,EAAAjS,GAAAshC,SAAA2pE,EAAAgB,IAAA,0CAEAh6F,EAAAjS,GAAAurG,YACA3kC,IAAA/7D,OAAAjE,KAAA8/D,GAAAwC,aAAAj3D,EAAAjS,GAAA2rG,gBAAA,IACA15F,EAAAjS,GAAAomE,YAEAmS,EAAA33E,KAAAqR,EAAAjS,GAAAomE,WAAAr4D,KAAA,KAAAsD,MAAA,UADA,UAKA,IAAAq9F,EAEAhoE,EAAA2lE,SAAA,MAIAp6F,EAAAvR,OAAAguG,EAAA,EAGA9nG,KAAAw9D,EAAAyC,0BAAAngC,EAAAqiB,OAAA6d,EACA,QAAA5mE,GAAA,EAAuBA,EAAAu4E,EAAA73E,OAAsBV,IAC7C2rD,EAAAsE,eAAAsoB,EAAAv4E,OlFgqfM,SAAUD,EAAQD,EAASH,GAEjC,YmFjsgBAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAAopD,GAAA/rD,EAAA,GACAw6D,EAAAx6D,EAAA,GACAgsD,EAAAhsD,EAAA,GAIAgvG,EAAA,WACA,QAAAA,KAGA/nG,KAAA0pE,YACA1pE,KAAAgoG,WAAA,EACAhoG,KAAAtE,MAAA,KAEA,MAAAqsG,KAEA7uG,GAAA6uG,UAMA,IAAAtD,GAAA,WAOA,QAAAA,GAAAn8F,EAAA2/F,EAAA9iC,OACA,KAAA78D,IAA+BA,EAAA,QAC/B,KAAA2/F,IAAiCA,EAAA,UACjC,KAAA9iC,IAA+BA,EAAA,GAAA4iC,IAC/B/nG,KAAAsI,KACAtI,KAAAioG,KACAjoG,KAAAmlE,KA0KA,MAlKAs/B,GAAAvqG,UAAAqrG,QAAA,SAAA2C,GAIA,IAFA,GACA9lG,GADA+/C,EAAA+lD,YAAA30C,GAAA3J,KAAAs+C,EAAA,GAAA30C,GAAA3J,KAAAs+C,GACAv9C,EAAA3qD,KACA,QAAAoC,EAAA+/C,EAAA+H,aAEAS,EAAA,GAAA85C,GAAAriG,EAAAuoD,EADA5F,EAAArmD,QAAAisD,EAAAwa,GAAAuE,SAAAtnE,IAAA,GAAA2lG,IAEA5lD,IAAAiI,UAEA,OAAAO,IAOA85C,EAAAvqG,UAAA2/D,SAAA,WACA,MAAA75D,MAAAmlE,GAAAzpE,OAOA+oG,EAAAvqG,UAAAurG,SAAA,SAAA/pG,GACAopD,EAAAlpD,WAAA,KAAAF,EAAA,iCACAsE,KAAAmlE,GAAAzpE,QACAsE,KAAAmoG,MAKA1D,EAAAvqG,UAAA+/C,MAAA,WACAj6C,KAAAmlE,GAAAzpE,MAAA,KACAsE,KAAAmlE,GAAAuE,YACA1pE,KAAAmlE,GAAA6iC,WAAA,EACAhoG,KAAAmoG,MAKA1D,EAAAvqG,UAAAmvE,YAAA,WACA,MAAArpE,MAAAmlE,GAAA6iC,WAAA,GAKAvD,EAAAvqG,UAAAqE,QAAA,WACA,cAAAyB,KAAA65D,aAAA75D,KAAAqpE,eAOAo7B,EAAAvqG,UAAAu2D,aAAA,SAAAkB,GACA,GAAAzoD,GAAAlJ,IACA+kD,GAAA5mD,QAAA6B,KAAAmlE,GAAAuE,SAAA,SAAA/e,EAAAuf,GACAvY,EAAA,GAAA8yC,GAAA95C,EAAAzhD,EAAAghE,OAYAu6B,EAAAvqG,UAAA2tG,kBAAA,SAAAl2C,EAAAy2C,EAAAC,GACAD,IAAAC,GACA12C,EAAA3xD,MACAA,KAAAywD,aAAA,SAAA9F,GACAA,EAAAk9C,kBAAAl2C,GAAA,EAAA02C,KAEAD,GAAAC,GACA12C,EAAA3xD,OAUAykG,EAAAvqG,UAAAytG,gBAAA,SAAAh2C,EAAAy2C,GAEA,IADA,GAAAtoE,GAAAsoE,EAAApoG,UAAAyqD,SACA,OAAA3qB,GAAA,CACA,GAAA6xB,EAAA7xB,GACA,QAEAA,KAAA2qB,SAEA,UASAg6C,EAAAvqG,UAAAouG,oCAAA,SAAA32C,GACA3xD,KAAAywD,aAAA,SAAA9F,GACA,OAAAA,EAAAkP,WACAlI,EAAAhH,GAEAA,EAAA29C,oCAAA32C,MAMA8yC,EAAAvqG,UAAAioD,KAAA,WACA,UAAAoR,GAAA3J,KAAA,OAAA5pD,KAAAioG,GACAjoG,KAAAsI,GACAtI,KAAAioG,GAAA9lD,OAAA,IAAAniD,KAAAsI,KAKAm8F,EAAAvqG,UAAAQ,KAAA,WACA,MAAAsF,MAAAsI,IAKAm8F,EAAAvqG,UAAAuwD,OAAA,WACA,MAAAzqD,MAAAioG,IAOAxD,EAAAvqG,UAAAiuG,GAAA,WACA,OAAAnoG,KAAAioG,IACAjoG,KAAAioG,GAAAM,GAAAvoG,KAAAsI,GAAAtI,OASAykG,EAAAvqG,UAAAquG,GAAA,SAAAn5C,EAAAzE,GACA,GAAA69C,GAAA79C,EAAApsD,UACAkqG,EAAA1jD,EAAAjnD,SAAAkC,KAAAmlE,GAAAuE,SAAAta,EACAo5C,IAAAC,SACAzoG,MAAAmlE,GAAAuE,SAAAta,GACApvD,KAAAmlE,GAAA6iC,aACAhoG,KAAAmoG,MAEAK,GAAAC,IACAzoG,KAAAmlE,GAAAuE,SAAAta,GAAAzE,EAAAwa,GACAnlE,KAAAmlE,GAAA6iC,aACAhoG,KAAAmoG,OAGA1D,IAEAvrG,GAAAurG,QnFytgBM,SAAUtrG,EAAQD,EAASH,GAEjC,YoF36gBAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA8jG,GAAAzmG,EAAA,IACAwmG,EAAAxmG,EAAA,GAQAG,GAAAwvG,iBAAA,WACAlJ,EAAAvV,oBAAA9C,gBACAoY,EAAAha,sBAAA0B,cAEA/tF,EAAAyvG,gBAAA,WACApJ,EAAAha,sBAAA4B,iBAGAjuF,EAAAwmG,sBAAA,WACA,MAAAF,GAAAvV,oBAAA,eAEA/wF,EAAA0vG,yBAAA,SAAA/0F,EAAAlL,GACAkL,EAAAszD,KAAArJ,EAAAqd,GAAAxyE,GAEAzP,EAAAkrE,MAAA,SAAAvwD,EAAAwwD,GACAxwD,EAAAszD,KAAA/C,MAAAC,IAEAnrE,EAAA0rE,sBAAA,SAAA/wD,EAAAgxD,GACAhxD,EAAAszD,KAAAvC,sBAAAC,IAEA3rE,EAAAokE,gBAAA,SAAAzpD,GACA,MAAAA,GAAAszD,KAAA7J,iBAEApkE,EAAA2vG,oBAAA,SAAAh1F,EAAAlL,GACA,MAAAkL,GAAAszD,KAAA/F,GAAAz4D,KpFo8gBM,SAAUxP,EAAQD,EAASH,GAEjC,YqFx+gBAkB,QAAAY,eAAA3B,EAAA,cAA8CwC,OAAA,GAC9C,IAAA8yE,GAAAz1E,EAAA,IACAikE,EAAAjkE,EAAA,IACAo0E,EAAAp0E,EAAA,IACAqhF,EAAArhF,EAAA,GACAG,GAAA4vG,eAAA9rC,EAAAyB,qBAKAzB,EAAAyB,qBAAAvkE,UAAA6uG,aAAA,SAAAz+C,EAAAkV,GACAx/D,KAAAq8E,YAAA,KAA2BhhF,EAAAivD,GAAgBkV,IAM3CxC,EAAAyB,qBAAAvkE,UAAA8uG,KAAA,SAAAt4F,EAAAu4F,GACAjpG,KAAAq8E,YAAA,QAA8B5hF,EAAAiW,GAAUu4F,IAGxC/vG,EAAAgwG,mBAAA9uB,EAAAyF,WAKA3mF,EAAAiwG,WAAA,SAAAC,GACA,GAAAC,GAAArsC,EAAAyB,qBAAAvkE,UAAAqpD,GAOA,OANAyZ,GAAAyB,qBAAAvkE,UAAAqpD,IAAA,SAAA+G,EAAA55C,EAAA44F,EAAAC,OACAtjG,KAAAsjG,IACAA,EAAAH,KAEAC,EAAA/vG,KAAA0G,KAAAsqD,EAAA55C,EAAA44F,EAAAC,IAEA,WACAvsC,EAAAyB,qBAAAvkE,UAAAqpD,IAAA8lD,IAMAnwG,EAAAswG,iBAAAh7B,EAAAO,SAKA71E,EAAAm6E,gBAAA,SAAAnqB,GACA,MAAAA,GAAAmqB,mBAMAn6E,EAAAuwG,QAAA,SAAAC,GACA,MAAAA,GAAAviC,KAAArJ,EAAA8c,IAOA1hF,EAAAmkE,gBAAA,SAAAA,GACA8P,EAAAZ,YAAAG,cAAArP,uBrFgghBG,KACO,MAAM5hE,GACN,KAAUgP,OACR;;;;;;;AsF5khBZ,IACQiS,sBAAsB,IAExBitF,IACA,SAAUxwG,EAAQD,EAASH,GCOjCA,EAAA,MDgBM6wG,IACA,SAAUzwG,EAAQyG,EAAqB7G,GAE7C,YEpBA,SAAA8wG,GAAAC,GACA,GAAAC,GAAA,GAAA19D,YAAAy9D,EACA,OAAAlxG,QAAAiX,KAAA/B,OAAAC,aAAAvL,MAAA,KAAAunG,ICYA,QAAAC,GAAA3oF,GACA,GAAAA,EAAA4oF,iBAAAnsG,SAAAosG,GAAA,CAKA,GAAAzgE,GAAApoB,EAAAooB,YAAAygE,GACA3gE,EAAAE,EAAAF,YAAA2gE,GACAC,EAAA,GAAAC,GACAC,EAAA9gE,EAAAma,YACA2mD,GAAAxvE,QAAA,SAAAjlB,GAEApa,QAAA2X,KAAA,6BAAAyC,IAEAy0F,EAAAjhE,UAAA,WACA,GAAAkhE,GAAAD,EAAAzwG,MACA,IAAA0wG,EAAA,CAGA,GAAAC,GAAAD,EAAA5uG,KACAyuG,GAAAK,YAAAD,EAAAE,YAAAF,EAAAG,SAAAH,EAAAI,YACAL,EAAAM,eAGAvpF,GAAA1N,QACA8c,UAAAo6E,eAAAC,KAIA,QAAAC,KACA,GAAAzqE,GAAA7P,UAAAnQ,KAAAwqF,EACAxqE,GAAAzF,QAAA,SAAAjlB,KAGA0qB,EAAA8I,UAAA,SAAAxzB,GAEAo0F,EADA1pE,EAAA1mC,SCvCA,QAAAoxG,MCNA,QAAAC,GAAAhlC,GACA,GACAilC,GAAA,SAAArlG,GACA,MAAAhN,OAAA,4BAAAA,MACA,GAAAsyG,GAAAtlG,GAGA,GAAAulG,GAAAvlG,IAEAwlG,GAEAC,UAAAF,EAEAnlC,GAAAp+D,SAAAvB,gBAZA,YAYA4kG,EAAAG,GLIApxG,OAAOY,eAAe+E,EAAqB,cAAgBlE,OAAO,GAGlE,IM+EA6vG,GN/EIC,EAAYzyG,EAAoB,GAGhCgO,EAAMhO,EAAoB,GM1B9B0yG,GACAC,oBAAA,2BACAC,gBAAA,uBACAC,oBAAA,sBACAC,cAAA,gBACAC,wBAAA,0BACAC,mBAAA,qBACAC,mBAAA,qBACAC,oBAAA,sBACAC,sBAAA,wBACAC,4BAAA,oCACAC,yBAAA,2BACAC,wBAAA,0BACAC,oBAAA,sBACAC,iBAAA,mBACAC,uBAAA,yBACAC,yBAAA,2BACAC,4BAAA,8BACAC,yBAAA,2BACAC,oBAAA,sBACAC,sBAAA,wBACAC,wBAAA,0BACAC,qBAAA,uBACAC,uBAAA,yBACAC,uBAAA,yBACAC,6BAAA,+BACAC,wBAAA,0BACAC,sBAAA,wBACAC,6BAAA,+BACAC,uBAAA,yBACAC,aAAA,eACAC,UAAA,YACAC,cAAA,gBACAC,iBAAA,mBACAC,UAAA,YACAC,aAAA,eACAC,wBAAA,0BACAC,yBAAA,2BACAC,gCAAA,kCACAC,6BAAA,sCAEAC,GAAA1C,KACAA,EAAAE,EAAAC,qBAAA,gDACAH,EAAAE,EAAAE,iBAAA,wDACAJ,EAAAE,uBAAA,uDACAF,EAAAE,iBAAA,+GAEAF,EAAAE,sBAAA,mEACAF,EAAAE,sBAAA,iEACAF,EAAAE,uBAAA,2EAEAF,EAAAE,yBAAA,mCACAF,EAAAE,EAAAU,6BAAA,+EAEAZ,EAAAE,4BAAA,wDACAF,EAAAE,2BAAA,yEAEAF,EAAAE,uBAAA,+CACAF,EAAAE,oBAAA,6DACAF,EAAAE,0BAAA,kEACAF,EAAAE,4BAAA,2DACAF,EAAAE,+BAAA,8DACAF,EAAAE,4BAAA,sEACAF,EAAAE,uBAAA,iEACAF,EAAAE,yBAAA,wDACAF,EAAAE,2BAAA,4IAEAF,EAAAE,wBAAA,kFAEAF,EAAAE,0BAAA,oFAEAF,EAAAE,0BAAA,mGAEAF,EAAAE,gCAAA,iEACAF,EAAAE,2BAAA,+DACAF,EAAAE,yBAAA,wIAGAF,EAAAE,gCAAA,uHAGAF,EAAAE,0BAAA,8CACAF,EAAAE,gBAAA,uHAEAF,EAAAE,2BAAA,2GAEAF,EAAAE,aAAA,yEAEAF,EAAAE,iBAAA,0DACAF,EAAAE,oBAAA,qDACAF,EAAAE,aAAA,wEAEAF,EAAAE,gBAAA,kFAEAF,EAAAE,2BAAA,sCACAF,EAAAE,4BAAA,yCACAF,EAAAE,EAAAuC,8BAAA,8DACAzC,GACA3hG,GACAskG,MAAAzC,EACAhtG,IAAAwvG,GClGAE,EAAA,WAKA,QAAAC,GAAAC,EAAAC,GACAtuG,KAAAuuG,EAAA,GAAAxnG,GAAA,qCAAA6C,EAAAnL,KACAuB,KAAAwuG,EAAAH,EACAruG,KAAAyuG,EAAAH,EACAtuG,KAAA0uG,EAAA,KACA1uG,KAAA2uG,uBAAA,YAwDA,MAjDAP,GAAAl0G,UAAA00G,aAAA,WACA,GAAA1lG,GAAAlJ,IACA,OAAAA,MAAA0uG,EACA1uG,KAAA0uG,GAEA1uG,KAAA0uG,EAAA,GAAA3sG,SAAA,SAAAC,EAAAC,GACA,GAAAq+B,GAAA7P,UAAAnQ,KAAApX,EAAAslG,EAAAtlG,EAAAulG,EACAnuE,GAAAzF,QAAA,SAAAjlB,GACA3T,EAAA2T,EAAAjV,OAAAlF,QAEA6kC,EAAA8I,UAAA,SAAAxzB,GACA5T,EAAA4T,EAAAjV,OAAA/G,SAEA0mC,EAAA2I,gBAAA,SAAArzB,GACA,IACA,GAAAyL,GAAAzL,EAAAjV,OAAA/G,MACAsP,GAAA2lG,YAAAxtF,EAAAzL,GAEA,MAAAra,GAEA8lB,EAAA1N,QACA1R,EAAA1G,OAIAyE,KAAA0uG,IAMAN,EAAAl0G,UAAA40G,cAAA,WACA,GAAA5lG,GAAAlJ,IACA,OAAA+B,SAAAC,UAAAO,KAAA,WACA,GAAA2G,EAAAwlG,EACA,MAAAxlG,GAAAwlG,EAAAnsG,KAAA,SAAA8e,GACAA,EAAA1N,QACAzK,EAAAwlG,EAAA,UASAN,EAAAl0G,UAAA20G,YAAA,SAAAxtF,EAAAzL,GACA,KAAA5V,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAtC,sBAEAwC,KAEAW,EAAA,ELnEAC,EAAA,SAAAlF,GAEA,MADAD,GAAAC,GAEA5xF,QAAA,SACAA,QAAA,WACAA,QAAA,YMRA+2F,EAAA,GAAA5iE,aACA,EACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,MAEA6iE,GACAC,iBAAA,EACAC,qBAAAH,GAEAI,GACAJ,2BACAC,uBACAI,SAAA,8BCtEAC,EAAA,WACA,QAAAC,KACAxvG,KAAAuuG,EAAA,GAAAxnG,GAAA,qCAAA6C,EAAAnL,KAmIA,MAxHA+wG,GAAAt1G,UAAAuO,SAAA,SAAAgnG,EAAAC,EAAAC,GACA,GAAAzmG,GAAAlJ,KACA4vG,EAAAZ,EAAAU,EAAA,kBACA12E,EAAAg2E,EAAAU,EAAA,gBACAG,EAAA,qBAAAJ,EAAA,aACAC,EAAAvsE,SAAA,mBACAysE,EAAA,oBACA52E,CACA22E,KAAAN,EAAAJ,2BAEAY,GAAA,wBADAb,EAAAW,GAGA,IAAAzzE,GAAA,GAAAH,QACAG,GAAAylB,OAAA,mDACA,IAAAmuD,IACA30F,OAAA,OACA+gB,UACAx5B,KAAAmtG,EAEA,OAAAruD,OAAA6tD,EAAAC,SAAA,yBAAAQ,GACAvtG,KAAA,SAAAu/C,GAAuC,MAAAA,GAAAyV,SACvChgD,MAAA,WACA,KAAArO,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAA1B,0BAEAjqG,KAAA,SAAAu/C,GACA,GAAAiuD,GAAAjuD,CACA,IAAAiuD,EAAA,OACA,GAAAziG,GAAAyiG,EAAA,aACA,MAAA7mG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAA1B,wBACAl/F,YAGA,IAAAyiG,EAAA,MACA,KAAA7mG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAzB,yBAEA,KAAAsD,EAAA,QACA,KAAA7mG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAxB,4BAEA,QACAt0F,MAAA23F,EAAA,MACAC,QAAAD,EAAA,YAOAP,EAAAt1G,UAAA+1G,YAAA,SAAAR,EAAA/E,EAAAC,EAAA+E,EAAAC,GACA,GAAAzmG,GAAAlJ,KACA4vG,EAAAZ,EAAAU,EAAA,kBACA12E,EAAAg2E,EAAAU,EAAA,gBACAQ,EAAA,YAAAvF,EAAA,UACAD,EAAA,sBACA+E,EAAA,aACAC,EAAAvsE,SAAA,mBACAysE,EAAA,oBACA52E,CACA22E,KAAAN,EAAAJ,2BAEAiB,GAAA,wBADAlB,EAAAW,GAGA,IAAAzzE,GAAA,GAAAH,QACAG,GAAAylB,OAAA,mDACA,IAKAwuD,GALAC,GACAj1F,OAAA,OACA+gB,UACAx5B,KAAAwtG,EAGA,OAAA1uD,OAAA6tD,EAAAC,SAAA,yBAAAc,GACA7tG,KAAA,SAAA8tG,GAEA,MADAF,GAAAE,EACAA,EAAA94C,SAEAhgD,MAAA,WACA,KAAArO,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAtB,uBAEArqG,KAAA,SAAAwtG,GACA,IAAAI,EAAA5gE,GAAA,CACA,GAAAjiC,GAAAyiG,EAAA,aACA,MAAA7mG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAtB,qBACAt/F,YAGA,IAAAyiG,EAAA,MACA,KAAA7mG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAArB,sBAEA,OAAAkD,GAAA,SAMAP,EAAAt1G,UAAAswG,YAAA,SAAAiF,EAAA/E,EAAAC,GACA,GAAAzhG,GAAAlJ,KACAswG,EAAA,qBAAAb,EAAA,UACA/E,EAAA,YACAC,EACAzuE,EAAA,GAAAH,QACAG,GAAAylB,OAAA,mDACA,IAAA4uD,IACAp1F,OAAA,OACA+gB,UACAx5B,KAAA4tG,EAEA,OAAA9uD,OAAA6tD,EAAAC,SAAA,2BAAAiB,GAAAhuG,KAAA,SAAA8tG,GACA,IAAAA,EAAA9gE,GACA,MAAA8gE,GAAA94C,OAAAh1D,KAAA,SAAAwtG,GACA,GAAAA,EAAA,OACA,GAAAziG,GAAAyiG,EAAA,aACA,MAAA7mG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAvB,0BACAr/F,cAGiB,SAAA/R,GACjB,KAAA2N,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAvB,+BAKA6C,KAEApF,EAAA,ENhIAU,EAAA,YACAZ,EAAA,yBCNAsG,EAAA,uBACAC,EAAA,CAIAzF,GAAA9wG,UAAAwwG,SAEAM,EAAA9wG,UAAAw2G,QAEA1F,EAAA9wG,UAAAy2G,SAEA3F,EAAA9wG,UAAAw1G,aAEA1E,EAAA9wG,UAAAuwG,YAEAO,EAAA9wG,UAAAywG,UACA,IAAAiG,GAAA,SAAAv3F,GAEA,QAAAw3F,KACA,MAAAx3F,GAAA/f,KAAA0G,KAAAwwG,EAAAC,IAAAzwG,KA8OA,MAhPAwrG,GAAA,UAAAqF,EAAAx3F,GAIAw3F,EAAA32G,UAAA20G,YAAA,SAAAxtF,EAAAyvF,GACA,GAAAA,EAAAC,WAAA,GAEA,GAAAxnE,GAAAloB,EAAA6nB,kBAzBA,0BA0BAC,QAAA,WAGAI,GAAAynE,YAAA,6BACAC,QAAA,IAEA1nE,EAAAynE,YAAA,uBACAC,QAAA,IAGAH,EAAAC,WAAA,GAIAhG,KAWA8F,EAAA32G,UAAAg3G,EAAA,SAAAviG,GACA,MAAA68F,GAAA,UAAAxrG,SAAA,qBACA,MAAAwrG,GAAA,YAAAxrG,KAAA,SAAA+tE,GACA,OAAAp/D,EAAA+7F,UACA,gBAAA/7F,GAAA+7F,UAAA,IAAA/7F,EAAA+7F,SAAA5wG,QAIA6U,EAAA+hG,SACA,gBAAA/hG,GAAA+hG,SAAA,IAAA/hG,EAAA+hG,QAAA52G,QAIA6U,EAAAgiG,UACAhiG,EAAAgiG,mBAAAtkE,aACA,KAAA19B,EAAAgiG,SAAA72G,QAIA6U,EAAA+gG,cACA/gG,EAAA+gG,uBAAAyB,mBAIAxiG,EAAA87F,aACA,gBAAA97F,GAAA87F,aACA,IAAA97F,EAAA87F,YAAA3wG,QAIA6U,EAAAg8F,YACA,gBAAAh8F,GAAAg8F,YACA,IAAAh8F,EAAAg8F,WAAA7wG,QAIA,IAHA,EAAAiI,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAN,iBANA,EAAA7rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAArC,kBANA,EAAA9pG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAR,qBALA,EAAA3rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAT,kBANA,EAAA1rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAV,cALA,EAAAzrG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAP,kBAwCAkD,EAAA32G,UAAAk3G,yBAAA,SAAA1G,GACA,GAAAxhG,GAAAlJ,IACA,OAAA0qG,GAGA1qG,KAAAkxG,GAAqCxG,aACrCnoG,KAAA,WACA,MAAA2G,GAAA0lG,iBAEArsG,KAAA,SAAA8e,GACA,UAAAtf,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aA3GA,2BA4GAF,EAAAE,EAAAF,YA5GA,0BA6GAynB,EAAAznB,EAAAynB,MAAA,YACA1wB,EAAA0wB,EAAAh2D,IAAA0vG,EACApqE,GAAAzF,QAAA,SAAAjlB,GACA3T,EAAA2T,EAAAjV,OAAAlF,QAEA6kC,EAAA8I,UAAA,SAAAxzB,GACA,GAAAhc,GAAAgc,EAAAjV,OAAA/G,OACAgc,EAAAjV,OAAA/G,OACA,IACAoI,GAAApI,QAnBAmI,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAP,aA+BAkD,EAAA32G,UAAAm3G,2BAAA,SAAAX,GACA,GAAAxnG,GAAAlJ,IACA,OAAA0wG,GAGA1wG,KAAAkxG,GAAqCR,YACrCnuG,KAAA,WACA,MAAA2G,GAAA0lG,iBAEArsG,KAAA,SAAA8e,GACA,UAAAtf,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aA7IA,2BA8IAF,EAAAE,EAAAF,YA9IA,0BA+IA+nE,EAAA/nE,EAAAvuC,IAAA01G,EACAY,GAAAz2E,QAAA,SAAAjlB,GACA3T,EAAA2T,EAAAjV,OAAAlF,QAEA61G,EAAAloE,UAAA,SAAAxzB,GACA,GAAAhc,GAAAgc,EAAAjV,OAAA/G,OACAgc,EAAAjV,OAAA/G,OACA,IACAoI,GAAApI,QAlBAmI,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAV,aA8BAqD,EAAA32G,UAAAq3G,iBAAA,SAAAxjC,GACA,GAAA7kE,GAAAlJ,KACA0wG,EAAA3iC,EAAA2iC,QAAAC,EAAA5iC,EAAA4iC,SAAAjB,EAAA3hC,EAAA2hC,aAAAjF,EAAA18B,EAAA08B,YAAAC,EAAA38B,EAAA28B,SAAAC,EAAA58B,EAAA48B,UACA,OAAA+F,GAGAC,EAGAjB,EAGAjF,EAGAC,EAGAC,EAGA3qG,KAAAkxG,GACAR,UACAC,WACAjB,eACAjF,cACAC,WACAC,eAEApoG,KAAA,WACA,MAAA2G,GAAA0lG,iBAEArsG,KAAA,SAAA8e,GAIA,GAAAmwF,IACAd,UACAC,SAAA3B,EAAA2B,GACAxtE,SAAAusE,EAAAvsE,SACAnK,KAAAg2E,EAAAU,EAAA,gBACAE,OAAAZ,EAAAU,EAAA,kBACAjF,cACAC,WACAC,aACA8G,WAAAv6F,KAAA0B,MAEA,WAAA7W,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aAnNA,0BAmNAvgC,EAAAylG,wBACAplE,EAAAE,EAAAF,YApNA,0BAqNAjJ,EAAAiJ,EAAAga,IAAAiuD,EACAlxE,GAAAzF,QAAA,SAAAjlB,GACA3T,EAAA2T,EAAAjV,OAAAlF,QAEA6kC,EAAA8I,UAAA,SAAAxzB,GACA5T,SApCAD,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAN,eAHA7rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAP,YAHA5rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAArC,gBAHA9pG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAR,mBAHA3rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAT,gBAHA1rG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAV,aA+DAqD,EAAA32G,UAAAswG,YAAA,SAAApyF,GACA,GAAAlP,GAAAlJ,IACA,uBAAAoY,IAAA,IAAAA,EAAAte,OACAiI,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAnB,uBAEA/sG,KAAAoxG,yBAAAh5F,GAAA7V,KAAA,SAAAivG,GACA,IAAAA,EACA,KAAAtoG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAlB,uBAEA,OAAA9jG,GAAA0lG,eAAArsG,KAAA,SAAA8e,GACA,UAAAtf,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aAjPA,0BAiPAvgC,EAAAylG,wBACAplE,EAAAE,EAAAF,YAlPA,0BAmPAjJ,EAAAiJ,EAAAtgC,OAAAuoG,EAAA,QACAlxE,GAAAzF,QAAA,SAAAjlB,GACA3T,EAAA2T,EAAAjV,OAAAlF,QAEA6kC,EAAA8I,UAAA,SAAAxzB,GACA,OAAAA,EAAAjV,OAAA/G,OAEA,WADAqI,GAAAiH,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAZ,wBAGAtrG,GAAAwvG,WAMAX,GACC9B,GACD2C,EAAA,EMrQAC,EAAA,uBACAC,EAAA,EAEAC,EAAA,SAAAx4F,GAEA,QAAAy4F,KACA,MAAAz4F,GAAA/f,KAAA0G,KAAA2xG,EAAAC,IAAA5xG,KAiGA,MAnGAwrG,GAAA,UAAAsG,EAAAz4F,GAQAy4F,EAAA53G,UAAA20G,YAAA,SAAAxtF,GACAA,EAAA6nB,kBAdA,0BAeAC,QAAA,aAOA2oE,EAAA53G,UAAA63G,oBAAA,SAAArB,GACA,sBAAAA,IAAA,IAAAA,EAAA52G,OACAiI,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAV,YAEAxtG,KAAA4uG,eAAArsG,KAAA,SAAA8e,GACA,UAAAtf,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aA5BA,2BA6BAF,EAAAE,EAAAF,YA7BA,0BA8BA+nE,EAAA/nE,EAAAvuC,IAAA01G,EACAY,GAAAz2E,QAAA,WACA54B,EAAAqvG,EAAA71G,QAEA61G,EAAAloE,UAAA,WACA,GAAAxvC,GAAA03G,EAAA13G,OACA+2G,EAAA,IACA/2G,KACA+2G,EAAA/2G,EAAA+2G,UAEA3uG,EAAA2uG,SAQAmB,EAAA53G,UAAA83G,iBAAA,SAAAtB,EAAAC,GACA,GAAAznG,GAAAlJ,IACA,oBAAA0wG,IAAA,IAAAA,EAAA52G,OACA,MAAAiI,SAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAV,WAEA,WAAAmD,GAlDA,KAkDAA,EAAA72G,OACA,MAAAiI,SAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAT,eAEA,IAAA+D,IACAd,UACAC,WAEA,OAAA3wG,MAAA4uG,eAAArsG,KAAA,SAAA8e,GACA,UAAAtf,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aA9DA,0BA8DAvgC,EAAAylG,wBACAplE,EAAAE,EAAAF,YA/DA,0BAgEAjJ,EAAAiJ,EAAAga,IAAAiuD,EACAlxE,GAAAzF,QAAA,WACA54B,EAAAq+B,EAAA7kC,QAEA6kC,EAAA8I,UAAA,WACApnC,UAUA8vG,EAAA53G,UAAA+3G,mBAAA,SAAAvB,GACA,GAAAxnG,GAAAlJ,IACA,OAAAA,MAAA+xG,oBAAArB,GAAAnuG,KAAA,SAAAouG,GACA,IAAAA,EACA,KAAAznG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAjB,uBAEA,OAAA/jG,GAAA0lG,eAAArsG,KAAA,SAAA8e,GACA,UAAAtf,SAAA,SAAAC,EAAAC,GACA,GAAAwnC,GAAApoB,EAAAooB,aAvFA,0BAuFAvgC,EAAAylG,wBACAplE,EAAAE,EAAAF,YAxFA,0BAyFAjJ,EAAAiJ,EAAAtgC,OAAAynG,EACApwE,GAAAzF,QAAA,WACA54B,EAAAq+B,EAAA7kC,QAEA6kC,EAAA8I,UAAA,WACA,OAAA9I,EAAA1mC,OAEA,WADAqI,GAAAiH,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAL,yBAGA7rG,GAAA2uG,WAMAmB,GACC/C,GACDmD,EAAA,ECrGAC,EAAA,oBAGAC,EAAA,WAKA,QAAAC,GAAAxsG,GACA,GAAAqD,GAAAlJ,IAEA,IADAA,KAAAuuG,EAAA,GAAAxnG,GAAA,qCAAA6C,EAAAnL,MACAoH,EAAAG,QAAAmsG,IACA,gBAAAtsG,GAAAG,QAAAmsG,GACA,KAAAnyG,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAArC,cAEA7rG,MAAAsyG,EAAAzsG,EAAAG,QAAAmsG,GACAnyG,KAAAuyG,EAAA,GAAAb,GACA1xG,KAAAwyG,EAAA,GAAAN,GACAlyG,KAAAyyG,EAAA,GAAArI,GACApqG,KAAA6F,MACA7F,KAAA6H,YACA7H,KAAA6H,SAAAoB,OAAA,WAA4C,MAAAC,GAAAD,UAkS5C,MA7RAopG,GAAAn4G,UAAAuO,SAAA,WACA,MAAA+iG,GAAA,UAAAxrG,SAAA,qBACA,GAAA0yG,GAAAC,EAAAhD,EAAAiD,EAAArI,CACA,OAAAiB,GAAA,YAAAxrG,KAAA,SAAA+tE,GACA,OAAAA,EAAA7qE,OACA,OAEA,MADAwvG,GAAA1yG,KAAA6yG,IACAC,YAAAJ,EACAI,WAAAJ,GACA,EAAA3wG,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAhC,0BAGA,EAAAnqG,QAAAC,QAAA,QAEA,EAAAhC,KAAA+yG,IACA,QAEA,MADAJ,GAAA5kC,EAAAxqE,QACA,EAAAvD,KAAAgzG,IACA,QAEA,MADArD,GAAA5hC,EAAAxqE,QACA,EAAAvD,KAAAizG,oBAAAN,EAAAhD,GACA,QAEA,MADAiD,GAAA7kC,EAAAxqE,QACA,EAAAvD,KAAAuyG,EAAAlB,2BAAAsB,EAAAO,OACA,QAEA,MADA3I,GAAAx8B,EAAAxqE,OACAgnG,GACA,EAAAvqG,KAAAmzG,oBAAAR,EAAAC,EAAAjD,EAAApF,KAEA,EAAAvqG,KAAAozG,YAAAT,EAAAC,EAAAjD,UAcA0C,EAAAn4G,UAAAi5G,oBAAA,SAAAR,EAAAC,EAAAjD,EAAApF,GACA,MAAAiB,GAAA,UAAAxrG,SAAA,qBACA,GAAAqzG,GAAAz6F,CACA,OAAA4yF,GAAA,YAAAxrG,KAAA,SAAA+tE,GACA,OAAAA,EAAA7qE,OACA,OAEA,MADAmwG,GAAArzG,KAAAszG,kBAAAV,EAAAjD,EAAApF,GACA8I,GACAz6F,EAAA1B,KAAA0B,MACAA,EAAA2xF,EAAA,WA5EA,QA6EA,EAAAA,EAAA,WAGA,EAAAvqG,KAAAiwG,YAAA0C,EAAAC,EAAAjD,EAAApF,MAKA,EAAAvqG,KAAAwqG,YAAAD,EAAA,UACA,QAIA,MADAx8B,GAAAxqE,QACA,EAAAvD,KAAAozG,YAAAT,EAAAC,EAAAjD,UAQA0C,EAAAn4G,UAAAo5G,kBAAA,SAAAV,EAAAjD,EAAApF,GACA,MAAAyE,GAAAW,KAAApF,EAAA,UAKAqI,EAAAzvE,WAAAonE,EAAA,UACAyE,EAAA4D,EAAA,kBACArI,EAAA,MACAyE,EAAA4D,EAAA,oBACArI,EAAA,QAEA8H,EAAAn4G,UAAA+1G,YAAA,SAAA0C,EAAAC,EAAAjD,EAAApF,GACA,MAAAiB,GAAA,UAAAxrG,SAAA,qBACA,GAAAuzG,GAAAC,EAAAC,CACA,OAAAjI,GAAA,YAAAxrG,KAAA,SAAA+tE,GACA,OAAAA,EAAA7qE,OACA,OAEA,MADA6qE,GAAA1qE,KAAArJ,MAAA,UACA,EAAAgG,KAAAyyG,EAAAxC,YAAAjwG,KAAAsyG,EAAA/H,EAAA,SAAAA,EAAA,WAAAqI,EAAAjD,GACA,QAUA,MATA4D,GAAAxlC,EAAAxqE,OACAiwG,GACA9C,QAAAiC,EAAAO,MACAvC,SAAAhB,EACAD,aAAAkD,EACAnI,YAAAzqG,KAAAsyG,EACA5H,SAAA6I,EACA5I,WAAAJ,EAAA,aAEA,EAAAvqG,KAAAuyG,EAAAhB,iBAAAiC,GACA,QAEA,MADAzlC,GAAAxqE,QACA,EAAAvD,KAAAwyG,EAAAR,iBAAAW,EAAAO,MAAAvD,GACA,QAEA,MADA5hC,GAAAxqE,QACA,EAAAgwG,EACA,QAEA,MADAE,GAAA1lC,EAAAxqE,QACA,EAAAvD,KAAAwqG,YAAAD,EAAA,UACA,QAEA,KADAx8B,GAAAxqE,OACAkwG,CACA,wBAKApB,EAAAn4G,UAAAk5G,YAAA,SAAAT,EAAAC,EAAAjD,GACA,MAAAnE,GAAA,UAAAxrG,SAAA,qBACA,GAAAuqG,GAAAiJ,CACA,OAAAhI,GAAA,YAAAxrG,KAAA,SAAA+tE,GACA,OAAAA,EAAA7qE,OACA,gBAAAlD,KAAAyyG,EAAAhqG,SAAAzI,KAAAsyG,EAAAM,EAAAjD,GACA,QAUA,MATApF,GAAAx8B,EAAAxqE,OACAiwG,GACA9C,QAAAiC,EAAAO,MACAvC,SAAAhB,EACAD,aAAAkD,EACAnI,YAAAzqG,KAAAsyG,EACA5H,SAAAH,EAAA,MACAI,WAAAJ,EAAA,UAEA,EAAAvqG,KAAAuyG,EAAAhB,iBAAAiC,GACA,QAEA,MADAzlC,GAAAxqE,QACA,EAAAvD,KAAAwyG,EAAAR,iBAAAW,EAAAO,MAAAvD,GACA,QAEA,MADA5hC,GAAAxqE,QACA,EAAAgnG,EAAA,aAYA8H,EAAAn4G,UAAAswG,YAAA,SAAApyF,GACA,GAAAlP,GAAAlJ,IACA,OAAAA,MAAAuyG,EACA/H,YAAApyF,GACA7V,KAAA,SAAAivG,GACA,MAAAtoG,GAAAupG,EAAAjI,YAAAgH,EAAA,YAAAA,EAAA,SAAAA,EAAA,cAEAjvG,KAAA,WACA,MAAA2G,GAAA6pG,IACAxwG,KAAA,SAAA0yF,GACA,GAAAA,EACA,MAAAA,GAAAye,YAAAC,oBAGApxG,KAAA,SAAAmtG,GACA,GAAAA,EACA,MAAAA,GAAA1uD,mBAKAqxD,EAAAn4G,UAAA64G,EAAA,WACA,KAAA/yG,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAtC,sBAEAyG,EAAAn4G,UAAA84G,EAAA,WACA,KAAAhzG,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAtC,sBAKAyG,EAAAn4G,UAAA05G,kBAAA,WACA,KAAA5zG,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAxC,sBAKA2G,EAAAn4G,UAAA+4G,oBAAA,SAAAY,EAAAlE,GACA,MAAAkE,GAAAH,YAAAC,kBAAApxG,KAAA,SAAAmtG,GACA,MAAAA,IAGAmE,EAAAH,YAAA54F,WACAq0F,iBAAA,EACAC,qBAAAO,OAQA0C,EAAAn4G,UAAA45G,iBAAA,SAAA7e,GACA,KAAAj1F,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAxC,sBAMA2G,EAAAn4G,UAAA65G,kBAAA,SAAAC,GACA,KAAAh0G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAxC,sBASA2G,EAAAn4G,UAAAqqF,UAAA,SAAA5oE,EAAAs4F,EAAAC,GACA,KAAAl0G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAxC,sBAYA2G,EAAAn4G,UAAAi6G,eAAA,SAAAx4F,EAAAs4F,EAAAC,GACA,KAAAl0G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAxC,sBASA2G,EAAAn4G,UAAAk6G,4BAAA,SAAAzrG,GACA,KAAA3I,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAvC,kBAUA0G,EAAAn4G,UAAA+O,OAAA,WACA,MAAAlH,SAAAuH,KACAtJ,KAAAuyG,EAAAzD,gBACA9uG,KAAAwyG,EAAA1D,mBAQAuD,EAAAn4G,UAAA24G,EAAA,WACA,MAAAwB,cAAAC,YAEAjC,EAAAn4G,UAAAq6G,qBAAA,WACA,MAAAv0G,MAAAuyG,GAEAF,EAAAn4G,UAAAs6G,qBAAA,WACA,MAAAx0G,MAAAwyG,GAMAH,EAAAn4G,UAAAu6G,YAAA,WACA,MAAAz0G,MAAAyyG,GAEAJ,KAEAqC,EAAA,EC/TAC,GACAC,YAAA,8BACAC,KAAA,+BAIAC,GACAC,kBAAA,oBACAC,qBAAA,wBAEAC,EAAA,SAAAH,EAAAI,GAKA,MAJAnnC,MACAA,EAAA4mC,EAAAC,aAAAE,EACA/mC,EAAA4mC,EAAAE,MAAAK,EACAnnC,CAEA,IAAAA,IAEAonC,GACAR,SACAS,aAAAN,EACAG,gBCvBAI,GACAlzD,KAAA,4BACA+wD,MAAA,wCCHAoC,EAAA,SAAAC,GAOA,OANAC,GAAA,IAAAC,QAAA,EAAAF,EAAAz7G,OAAA,MACAiC,GAAAw5G,EAAAC,GACAt9F,QAAA,WACAA,QAAA,UACAw9F,EAAA98G,OAAA6V,KAAA1S,GACA45G,EAAA,GAAAtpE,YAAAqpE,EAAA57G,QACAV,EAAA,EAAmBA,EAAAs8G,EAAA57G,SAAoBV,EACvCu8G,EAAAv8G,GAAAs8G,EAAAjoG,WAAArU,EAEA,OAAAu8G,ICAAC,EAAA,SAAAv8F,GAMA,QAAAw8F,GAAAhwG,GACA,GAAAqD,GAAAmQ,EAAA/f,KAAA0G,KAAA6F,IAAA7F,IAwCA,OAvCAkJ,GAAA4sG,EAAA,KACA5sG,EAAA83E,EAAA/mF,OAAA8M,EAAA,0BAAA0U,GACAvS,EAAA4sG,EAAAr6F,IAEAvS,EAAA6sG,EAAA,KACA7sG,EAAA8sG,EAAA/7G,OAAA8M,EAAA,0BAAA0U,GACAvS,EAAA6sG,EAAAt6F,IAMAvS,EAAA+sG,EAKA/sG,EAAAgtG,EAKAhtG,EAAA4sG,EAAA,KAKA5sG,EAAA83E,EAAA/mF,OAAA8M,EAAA,0BAAA0U,GACAvS,EAAA4sG,EAAAr6F,IAMAvS,EAAA6sG,EAAA,KACA7sG,EAAA8sG,EAAA/7G,OAAA8M,EAAA,0BAAA0U,GACAvS,EAAA6sG,EAAAt6F,IAEAvS,EAAAitG,IACAjtG,EAoSA,MAlVAsiG,GAAA,UAAAqK,EAAAx8F,GAyDAw8F,EAAA37G,UAAAuO,SAAA,WACA,GAAAS,GAAAlJ,IAEA,OAAAA,MAAAo2G,IAGAp2G,KAAAq2G,IAAA9zG,KAAA,WACA,MAAA8W,GAAAnf,UAAAuO,SAAAnP,KAAA4P,KAHAnH,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAjC,uBAaA4J,EAAA37G,UAAAm8G,EAAA,WACA,GAAAntG,GAAAlJ,IACA,IAAAA,KAAAk2G,EACA,MAAAl2G,MAAAk2G,CAEA,IAAAI,GAAAvhG,SAAAwhG,cAAA,uBAyBA,OApBAv2G,MAAAk2G,EAJAI,EAIA90D,MAAA80D,EAAA/oF,MACAhrB,KAAA,SAAAu/C,GACA,MAAAA,GAAAyV,SAEAhgD,MAAA,cAIAhV,KAAA,SAAAi0G,GACA,GAAAA,GAGAA,EAAA,eAGA,iBAAAA,EAAA,cACA,KAAAttG,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAApC,2BAnBA/pG,QAAAC,UAuBAhC,KAAAk2G,GAQAL,EAAA37G,UAAA05G,kBAAA,WACA,MAAApI,GAAA,UAAAxrG,SAAA,qBACA,GAAAkJ,GAAAlJ,IACA,OAAAwrG,GAAA,YAAAxrG,KAAA,SAAA+tE,GACA,MAAA+kC,YAAAuB,aAAAC,YACA,IAEA,KAAAvyG,SAAA,SAAAC,EAAAC,GACA,GAAAw0G,GAAA,SAAA78G,GACA,MAAAk5G,YAAAl5G,EACAoI,IAGAC,EADA6wG,WAAAl5G,EACAsP,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAlC,oBAGA9iG,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAnC,sBAMA2K,EAAArC,aAAAT,kBAAA6C,EACAC,IAEAA,EAAAn0G,KAAAk0G,WAaAZ,EAAA37G,UAAA45G,iBAAA,SAAA7e,GACA,KAAAA,YAAA0hB,4BACA,KAAA32G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAA9B,yBAEA,aAAApsG,KAAAi2G,EACA,KAAAj2G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAApB,wBAEA9sG,MAAAi2G,EAAAhhB,GAQA4gB,EAAA37G,UAAA65G,kBAAA,SAAA6C,GACA,mBAAAA,GACA,KAAA52G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAJ,yBAEA,aAAA9tG,KAAA62G,EACA,KAAA72G,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAH,gCAEA,IAAA+I,GAAAxB,EAAAsB,EACA,SAAAE,EAAAh9G,OACA,KAAAkG,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAF,6BAEAhuG,MAAA62G,EAAAC,GAYAjB,EAAA37G,UAAAqqF,UAAA,SAAA5oE,EAAAs4F,EAAAC,GACA,MAAAl0G,MAAAghF,EAAArlE,EAAAs4F,EAAAC,IAYA2B,EAAA37G,UAAAi6G,eAAA,SAAAx4F,EAAAs4F,EAAAC,GACA,MAAAl0G,MAAAg2G,EAAAr6F,EAAAs4F,EAAAC,IAWA2B,EAAA37G,UAAA68G,EAAA,SAAA9hB,GACA,GAAA/rF,GAAAlJ,KACAg3G,EAAA/hB,EAAAgiB,YAAAhiB,EAAAiiB,SAAAjiB,EAAA5gF,MACA,WAAAtS,SAAA,SAAAC,EAAAC,GACA,IAAA+0G,EAGA,WADA/0G,GAAAiH,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAX,cAKA,kBAAAyJ,EAAAG,MAEA,WADAn1G,GAAAizF,EAGA,kBAAA+hB,EAAAG,MAEA,WADAl1G,GAAAiH,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAA3B,kBAGA,IAAA6K,GAAA,WACA,iBAAAJ,EAAAG,MACAn1G,EAAAizF,OAEA,kBAAA+hB,EAAAG,MAKA,MAJAl1G,GAAAiH,EAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAA3B,mBAMAyK,EAAA3vF,oBAAA,cAAA+vF,GAEAJ,GAAAlhG,iBAAA,cAAAshG,MASAvB,EAAA37G,UAAA64G,EAAA,WACA,GAAA7pG,GAAAlJ,IACA,OAAAA,MAAAi2G,EACAj2G,KAAA+2G,EAAA/2G,KAAAi2G,IAIAj2G,KAAAi2G,EAAA,KACAz+F,UAAAw/F,cACAxvE,SAAA6tE,EAAAlzD,MACA+wD,MAAAmC,EAAAnC,QAEA37F,MAAA,SAAAhc,GACA,KAAA2N,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAA/B,6BACAkL,oBAAA97G,EAAA+R,YAGA/K,KAAA,SAAA0yF,GACA,MAAA/rF,GAAA6tG,EAAA9hB,GAAA1yF,KAAA,WAMA,MALA2G,GAAA+sG,EAAAhhB,EAIAA,EAAA/6E,SACA+6E,QASA4gB,EAAA37G,UAAA84G,EAAA,WACA,MAAAhzG,MAAA62G,EACA90G,QAAAC,QAAAhC,KAAA62G,GAEA90G,QAAAC,QAAAqtG,EAAAJ,2BASA4G,EAAA37G,UAAAi8G,EAAA,WACA,GAAAjtG,GAAAlJ,IACA,kBAAAwX,YAGAA,UAAAw/F,cAAAlhG,iBAAA,mBAAAF,GACA,GAAAA,EAAAlF,MAAAkF,EAAAlF,KAAAykG,EAAAR,OAAAC,aAAA,CAIA,GAAA0C,GAAA1hG,EAAAlF,IACA,QAAA4mG,EAAAnC,EAAAR,OAAAC,cACA,IAAAO,GAAAC,aAAAL,kBACA,IAAAI,GAAAC,aAAAJ,qBACA,GAAAuC,GAAAD,EAAAnC,EAAAR,OAAAE,KACA3rG,GAAA4sG,GACA5sG,EAAA4sG,EAAA1zG,KAAAm1G,OAOS,IAOT1B,EAAA37G,UAAAk8G,EAAA,WACA,uBAAA5+F,YACA,eAAA5e,SACA,gBAAAA,SACA,SAAAA,SACA+9G,0BAAAz8G,UAAAC,eAAA,qBACAg3G,iBAAAj3G,UAAAC,eAAA,WAEA07G,GACCnB,GACDtJ,EAAA,ECxVAoM,EAAA,SAAAn+F,GAEA,QAAAo+F,GAAA5xG,GACA,GAAAqD,GAAAmQ,EAAA/f,KAAA0G,KAAA6F,IAAA7F,IASA,OARAnH,MAAAid,iBAAA,gBAAAzV,GAAoD,MAAA6I,GAAAwuG,EAAAr3G,KAA2B,GAC/ExH,KAAAid,iBAAA,kCAAAzV,GAAsE,MAAA6I,GAAAyuG,EAAAt3G,KAAgC,GACtGxH,KAAAid,iBAAA,6BAAAzV,GAAiE,MAAA6I,GAAA0uG,EAAAv3G,KAAwC,GAKzG6I,EAAA2uG,EAAA,KACA3uG,EAmSA,MA9SAsiG,GAAA,UAAAiM,EAAAp+F,GA0BAo+F,EAAAv9G,UAAAw9G,EAAA,SAAA9hG,GACA,GACAkiG,GADA5uG,EAAAlJ,IAEA,KACA83G,EAAAliG,EAAAlF,KAAA6mD,OAEA,MAAAh8D,GAEA,OAEA,GAAAw8G,GAAA/3G,KAAAg4G,IAAAz1G,KAAA,SAAA01G,GACA,GAAAA,GAEA,GAAAH,EAAAI,cAAAhvG,EAAA2uG,EAEA,MAAA3uG,GAAAivG,EAAAL,OAJA,CAQA,GAAAM,GAAAlvG,EAAAmvG,EAAAP,EACA,IAAAM,EAAA,CACA,GAAAE,GAAAF,EAAApsG,OAAA,EACA,OAAA9C,GAAA6pG,IAAAxwG,KAAA,SAAAg2G,GACA,MAAAA,GAAAC,iBAAAF,EAAAF,KAGA,GAAAlvG,EAAA2uG,EACA,MAAA3uG,GAAA2uG,EAAAC,KAGAliG,GAAA6iG,UAAAV,IAKAN,EAAAv9G,UAAAy9G,EAAA,SAAA/hG,GACA,GAAA1M,GAAAlJ,KACA04G,EAAA14G,KAAA+yG,IACAxwG,KAAA,SAAA0yF,GACA,MAAAA,GAAAye,YACAC,kBACApxG,KAAA,SAAAmtG,MAIAn4F,MAAA,SAAAhc,GAIA,MADA2N,GAAAqrG,uBAEAlD,2BAAApc,EAAAie,OACA3wG,KAAA,SAAAgoG,GACA,IAAAA,EAGA,KAAAhvG,EAGA,OAAA2N,GAAAshG,YAAAD,EAAA,UAAAhoG,KAAA,WACA,KAAAhH,WAKAgc,MAAA,SAAAhc,GACA,KAAA2N,GAAAqlG,EAAApuG,OAAAyJ,EAAAskG,MAAAd,uBACA9/F,QAAA/R,KAGAqa,GAAA6iG,UAAAC,IAKAjB,EAAAv9G,UAAA09G,EAAA,SAAAhiG,GACA,GAAA1M,GAAAlJ,IACA,IAAA4V,EAAAsiG,cACAtiG,EAAAsiG,aAAAxnG,MACAkF,EAAAsiG,aAAAxnG,KAAA,QAFA,CAOAkF,EAAA+iG,2BACA/iG,EAAAsiG,aAAAvkG,OACA,IAAAmkG,GAAAliG,EAAAsiG,aAAAxnG,KAAA,OACA,IAAAonG,EAAA,cAIA,GAAAc,GAAAd,EAAA,yBACA,IAAAc,EAAA,CAIA,GAAAF,GAAA14G,KAAA64G,EAAAD,GACAr2G,KAAA,SAAAu2G,GACA,MAAAA,GAIAA,EAAA1pF,QAFAv2B,KAAAkgH,QAAAC,WAAAJ,KAIAr2G,KAAA,SAAAu2G,GACA,GAAAA,EAAA,CAKAhB,EAAA,mBACAA,GAAA,YACA,IAAAmB,GAAA9D,EAAAF,aAAAE,EAAAC,aAAAJ,qBAAA8C,EAGA,OAAA5uG,GAAAgwG,EAAAJ,EAAAG,KAEArjG,GAAA6iG,UAAAC,OAOAjB,EAAAv9G,UAAAm+G,EAAA,SAAAP,GACA,GAAAA,GAGA,gBAAAA,GAAAI,aAAA,CAGA,GAAAiB,GAAAl/G,OAAAuL,UAAsDsyG,EAAAI,aAQtD,OAHAiB,GAAA,MAAAprC,KACAA,EAAA,QAAA+pC,EACA/pC,GACAorC,CACA,IAAAprC,KAiBA0pC,EAAAv9G,UAAAk6G,4BAAA,SAAAzrG,GACA,IAAAA,GAAA,kBAAAA,GACA,KAAA3I,MAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAhB,6BAEAltG,MAAA63G,EAAAlvG,GAQA8uG,EAAAv9G,UAAA2+G,EAAA,SAAA/xE,GAGA,GAAA2mC,GAAA,GAAA2rC,KAAAtyE,EAAAjuC,KAAA2nB,UAAA+M,IACA,OAAA10B,MAAAkgH,QACAM,UACAh1F,KAAA,SACAi1F,qBAAA,IAEA/2G,KAAA,SAAAg3G,GAEA,OADAC,GAAA,KACApgH,EAAA,EAA2BA,EAAAmgH,EAAAz/G,OAAuBV,IAElD,GADA,GAAAggH,KAAAG,EAAAngH,GAAA0tC,IAAAjuC,KAAA2nB,UAAA+M,OACAkgD,EAAA,CACA+rC,EAAAD,EAAAngH,EACA,OAGA,MAAAogH,IAGA,QAYA/B,EAAAv9G,UAAAg/G,EAAA,SAAA74E,EAAA/yB,GACA,MAAAk+F,GAAA,UAAAxrG,SAAA,qBACA,MAAAwrG,GAAA,YAAAxrG,KAAA,SAAA+tE,GAGA,MAAA1tC,IAGAA,EAAAlrB,YAAA7H,IACA,KAHA,EAAAvL,QAAAE,OAAAjC,KAAAuuG,EAAApuG,OAAAyJ,EAAAskG,MAAAf,gCAYAsK,EAAAv9G,UAAA89G,EAAA,WACA,MAAAn/G,MAAAkgH,QACAM,UACAh1F,KAAA,SACAi1F,qBAAA,IAEA/2G,KAAA,SAAAg3G,GACA,MAAAA,GAAApgE,KAAA,SAAA9Y,GAAsD,kBAAAA,EAAA3O,qBAUtD+lF,EAAAv9G,UAAAi+G,EAAA,SAAAL,GACA,GAAA5uG,GAAAlJ,IACA,OAAAnH,MAAAkgH,QACAM,UACAh1F,KAAA,SACAi1F,qBAAA,IAEA/2G,KAAA,SAAAg3G,GACA,GAAAN,GAAA9D,EAAAF,aAAAE,EAAAC,aAAAL,kBAAA+C,EACA,OAAA/1G,SAAAuH,IAAAiwG,EAAA96G,IAAA,SAAA4hC,GACA,MAAAn3B,GAAAgwG,EAAA74E,EAAA44E,SAUAxB,EAAAv9G,UAAA64G,EAAA,WACA,MAAAhxG,SAAAC,QAAAnJ,KAAAo8F,eAMAwiB,EAAAv9G,UAAA84G,EAAA,WACA,GAAA9pG,GAAAlJ,IACA,OAAAA,MAAA+yG,IACAxwG,KAAA,SAAAowG,GACA,MAAAzpG,GAAAsrG,uBAAAzC,oBAAAY,EAAAO,SAEA3wG,KAAA,SAAAk3G,GACA,cAAAA,EACApK,EAAAJ,yBAEAwK,KAGAhC,GACC/C,GACDvJ,EAAA,EhBu1DIuO,EAAM3gH,EAAoB,EK9pE9B6G,GAAA,kBAAAqrG,EAkCAA,EAAAyO,EAAA,aLyqEG,MACO,MAAMj+G,GACN,KAAUgP,OACR;;;;;;;AiBzsEZ,IACQiS,sBAAsB,IAExBi9F,IACA,SAAUxgH,EAAQD,EAASH,GCOjCA,EAAA,MDgBM6gH,IACA,SAAUzgH,EAAQyG,EAAqB7G,GAE7C,YE2DA,SAAA8gH,GAAA/xG,GACA,iBAAAA,EAEA,QAAAymC,KAGA,UAAAurE,IAAAC,GAAAC,QAFA,kFAIA,QAAAC,GAAA93D,GACA,UAAA23D,IAAAC,GAAAG,iBAAA,WAAA/3D,EAAA,qBAQA,QAAAg4D,GAAAC,GACA,UAAAN,IAAAC,GAAA/zE,eAAA,qBACAo0E,EACA,0EAGA,QAAAC,KAGA,UAAAP,IAAAC,GAAAO,gBAFA,+FAIA,QAAAC,GAAAp4D,GACA,UAAA23D,IAAAC,GAAAS,aAAA,4CAAAr4D,EAAA,MAEA,QAAAs4D,KACA,UAAAX,IAAAC,GAAAW,qBAAA,4DAWA,QAAAC,KACA,UAAAb,IAAAC,GAAAa,SAAA,sCAKA,QAAAC,GAAA/zE,GACA,UAAAgzE,IAAAC,GAAAe,YAAA,gBAAAh0E,EAAA,MAEA,QAAAi0E,GAAAX,GACA,UAAAN,IAAAC,GAAAiB,uBAAA,2BAAAZ,EAAA,MAQA,QAAAa,KACA,UAAAnB,IAAAC,GAAAmB,kBAAA,0DAEA,QAAAC,KACA,UAAArB,IAAAC,GAAAqB,uBAAA,wEAEA,QAAAC,KACA,UAAAvB,IAAAC,GAAAuB,gBAAA,mDAEA,QAAAC,GAAAvqD,EAAAh1C,EAAA1O,GACA,UAAAwsG,IAAAC,GAAAyB,iBAAA,wBAAAx/F,EAAA,cAAAg1C,EAAA,KAAA1jD,GAEA,QAAAmuG,GAAAC,EAAAC,EAAA3/F,EAAA4/F,GACA,GAAAC,GACAC,CASA,OARAJ,KAAAC,GACAE,EAAAH,EACAI,EAAA,IAAAJ,EAAA,yBAGAG,EAAA,WAAAH,EAAA,QAAAC,EACAG,EAAA,aAEA,GAAAhC,IAAAC,GAAAgC,uBAAA,8BACA//F,EACA,eACA6/F,EACA,IACAC,EACA,cACAF,EACA,KAEA,QAAAI,KACA,UAAAlC,IAAAC,GAAAkC,YAAA,iCAKA,QAAAC,GAAAxhH,GACA,UAAAo/G,IAAAC,GAAAoC,uBAAA,kBACAzhH,EACA,mHAOA,QAAA0hH,GAAAC,EAAA/uG,GACA,UAAAwsG,IAAAC,GAAAuC,eAAA,iCAAAD,EAAA,MAAA/uG,GAKA,QAAAivG,GAAAjvG,GACA,SAAAwsG,IAAAC,GAAAyC,eAAA,mBAAAlvG,GC7LA,QAAAmvG,GAAAC,GACA,OAAAA,GACA,IAAAC,IAAAC,IACA,IAAAD,IAAAE,OACA,IAAAF,IAAAG,UACA,IAAAH,IAAAI,SACA,MACA,SACA,0CACAJ,GAAAC,IACA,KACAD,GAAAE,OACA,KACAF,GAAAG,UACA,KACAH,GAAAI,SACA,MAcA,QAAAC,GAAAX,EAAA5mD,GACA,OAAA4mD,GACA,IAAAM,IAAAC,IACA,UAAAK,IAAAC,EAAAznD,GACA,KAAAknD,IAAAE,OACA,IAAAF,IAAAG,UACA,UAAAG,IAAAE,EAAAd,EAAA5mD,GACA,KAAAknD,IAAAI,SACA,UAAAE,IAAAG,EAAA3nD,GAAA4nD,EAAA5nD,IAGA,KAAAlnB,KAEA,QAAA2uE,GAAAznD,GAEA,OADA31D,MACA1G,EAAA,EAAmBA,EAAAq8D,EAAA37D,OAAmBV,IAAA,CACtC,GAAAoB,GAAAi7D,EAAAhoD,WAAArU,EACA,IAAAoB,GAAA,IACAsF,EAAA9F,KAAAQ,OAGA,IAAAA,GAAA,KACAsF,EAAA9F,KAAA,IAAAQ,GAAA,SAAAA,OAGA,kBAAAA,GAAA,CAEA,GAAA8iH,GAAAlkH,EAAAq8D,EAAA37D,OAAA,GACA,cAAA27D,EAAAhoD,WAAArU,EAAA,GACA,IAAAkkH,EAIA,CACA,GAAA76E,GAAAjoC,EACA+iH,EAAA9nD,EAAAhoD,aAAArU,EACAoB,GAAA,YAAAioC,IAAA,QAAA86E,EACAz9G,EAAA9F,KAAA,IAAAQ,GAAA,OAAAA,GAAA,UAAAA,GAAA,YAAAA,OANAsF,GAAA9F,KAAA,iBAUA,eAAAQ,GAEAsF,EAAA9F,KAAA,aAGA8F,EAAA9F,KAAA,IAAAQ,GAAA,OAAAA,GAAA,YAAAA,GAMA,UAAA6xC,YAAAvsC,GAEA,QAAA09G,GAAA/nD,GACA,GAAA38C,EACA,KACAA,EAAA6P,mBAAA8sC,GAEA,MAAAp1D,GACA,KAAA+7G,GAAAO,GAAAI,SAAA,uBAEA,MAAAG,GAAApkG,GAEA,QAAAqkG,GAAAd,EAAA5mD,GACA,OAAA4mD,GACA,IAAAM,IAAAE,OACA,GAAAY,IAAA,IAAAhoD,EAAAl1D,QAAA,KACAm9G,GAAA,IAAAjoD,EAAAl1D,QAAA,IACA,IAAAk9G,GAAAC,EAAA,CACA,GAAAC,GAAAF,EAAA,OACA,MAAArB,GAAAC,EAAA,sBACAsB,EACA,qCAEA,KAEA,KAAAhB,IAAAG,UACA,GAAAc,IAAA,IAAAnoD,EAAAl1D,QAAA,KACAs9G,GAAA,IAAApoD,EAAAl1D,QAAA,IACA,IAAAq9G,GAAAC,EAAA,CACA,GAAAF,GAAAC,EAAA,OACA,MAAAxB,GAAAC,EAAA,sBAAAsB,EAAA,kCAEAloD,IAAAv9C,QAAA,UAAAA,QAAA,UAIA,GAAAvK,EACA,KACAA,EAAAc,KAAAgnD,GAEA,MAAAp1D,GACA,KAAA+7G,GAAAC,EAAA,2BAGA,OADAzwG,GAAA,GAAAygC,YAAA1+B,EAAA7T,QACAV,EAAA,EAAmBA,EAAAuU,EAAA7T,OAAkBV,IACrCwS,EAAAxS,GAAAuU,EAAAF,WAAArU,EAEA,OAAAwS,GAwBA,QAAAwxG,GAAA3nD,GACA,GAAAj9C,GAAA,GAAAslG,IAAAroD,EACA,OAAAj9C,GAAAzc,OACAohH,EAAAR,GAAAE,OAAArkG,EAAAulG,MAGAP,EAAAhlG,EAAAulG,MAGA,QAAAV,GAAA5nD,GAEA,MADA,IAAAqoD,IAAAroD,GACAvU,YAEA,QAAA88D,GAAA3jH,EAAA4jH,GAEA,SADA5jH,EAAAP,QAAAmkH,EAAAnkH,SAIAO,EAAAquB,UAAAruB,EAAAP,OAAAmkH,EAAAnkH,UAAAmkH,ECzJA,QAAAC,GAAA/G,GACA,OAAAA,GACA,IAAAgH,IAAAC,QACA,IAAAD,IAAAE,QACA,IAAAF,IAAAG,UACA,MAAAC,IAAAH,OACA,KAAAD,IAAAK,OACA,MAAAD,IAAAC,MACA,KAAAL,IAAAM,QACA,MAAAF,IAAAE,OACA,KAAAN,IAAAvD,SACA,MAAA2D,IAAA3D,QACA,KAAAuD,IAAA53C,MAEA,QAEA,MAAAg4C,IAAAh4C,OCtCA,QAAAzoE,GAAAkK,EAAAqP,GACA,MAAApd,QAAAC,UAAAC,eAAAb,KAAA0O,EAAAqP,GAEA,QAAAlZ,GAAA6J,EAAAlF,GACA,OAAAlC,KAAAoH,GACAlK,EAAAkK,EAAApH,IACAkC,EAAAlC,EAAAoH,EAAApH,IAIA,QAAA/C,GAAAmK,GACA,SAAAA,EACA,QAEA,IAAAxN,KAIA,OAHA2D,GAAA6J,EAAA,SAAApH,EAAAkS,GACAtY,EAAAoG,GAAAkS,IAEAtY,ECZA,QAAAkkH,GAAAC,GACA,UAAA58G,SAAA48G,GAKA,QAAAC,GAAAljH,GACA,MAAAqG,SAAAC,QAAAtG,GAEA,QAAAmjH,GAAApjH,GACA,MAAAsG,SAAAE,OAAAxG,GChBA,QAAAqjH,GAAAzjH,GACA,aAAAA,EAEA,QAAA0jH,GAAA1jH,GACA,gBAAAA,EAEA,QAAA2jH,GAAA3jH,GACA,wBAAAA,GAEA,QAAA4jH,GAAA5jH,GACA,sBAAAA,GAEA,QAAAmD,GAAAnD,GACA,MAAA4jH,GAAA5jH,IAAA,OAAAA,EAEA,QAAA6jH,GAAA7jH,GACA,MAAA4jH,GAAA5jH,KAAAkK,MAAAsJ,QAAAxT,GAEA,QAAA8jH,GAAA9jH,GACA,sBAAAA,gBAAAyS,QAEA,QAAAsxG,GAAA/jH,GACA,sBAAAA,gBAAAsxB,QAEA,QAAA0yF,GAAAhkH,GACA,MAAAikH,MAAAjkH,YAAAkkH,MAEA,QAAAD,KACA,yBAAAC,MC1BA,QAAAC,GAAAnlH,GACA,GAAA2N,EACA,KACAA,EAAAwI,KAAAC,MAAApW,GAEA,MAAAgG,GACA,YAEA,MAAA6+G,GAAAl3G,GACAA,EAGA,KCXA,QAAAy3G,GAAAt9D,GACA,MAAAA,EAAAroD,OACA,WAEA,IAAAk3D,GAAA7O,EAAAl2B,YAAA,IACA,YAAA+kC,EACA,GAEA7O,EAAAnvC,MAAA,EAAAg+C,GAGA,QAAArG,GAAAxI,EAAAgnB,GACA,GAAAu2C,GAAAv2C,EACA1wD,MAAA,KACA3P,OAAA,SAAA62G,GACA,MAAAA,GAAA7lH,OAAA,IAEAsU,KAAA,IACA,YAAA+zC,EAAAroD,OACA4lH,EAGAv9D,EAAA,IAAAu9D,EASA,QAAAE,GAAAz9D,GACA,GAAA6O,GAAA7O,EAAAl2B,YAAA,IAAAk2B,EAAAroD,OAAA,EACA,YAAAk3D,EACA7O,EAGAA,EAAAnvC,MAAAg+C,EAAA,GCtCA,QAAA6uD,GAAAC,GACA,MAAAC,IAAAC,GAAAF,EAEA,QAAAG,GAAAH,GACA,MAAAI,IAAAF,GAAAF,EAEA,QAAAK,GAAAL,GACA,MAAAC,IAAAK,GAAAN,EAEA,QAAAO,IAAArnG,GACA,GAAAsnG,GAAApnG,mBACAqnG,EAAA,GAOA,OANApiH,GAAA6a,EAAA,SAAApY,EAAAkS,GACA,GAAA0tG,GAAAF,EAAA1/G,GAAA,IAAA0/G,EAAAxtG,EACAytG,KAAAC,EAAA,MAGAD,IAAAvtG,MAAA,MCjBA,QAAAytG,IAAAh/G,EAAA/F,GACA,MAAAA,GAgBA,QAAAglH,IAAAC,GAEA,OADAxB,EAAAwB,IACAA,EAAA7mH,OAAA,EACA6mH,GAGAA,IACAf,EAAAe,IAGA,QAAAC,MASA,QAAAC,GAAAp/G,EAAAk/G,GACA,MAAAD,IAAAC,GAQA,QAAAG,GAAAr/G,EAAAs/G,GACA,MAAAjC,GAAAiC,IACAA,EAGAA,EAmBA,QAAAC,GAAAv/G,EAAAw/G,GAEA,KADA9B,EAAA8B,MAAAnnH,OAAA,GAIA,QAEA,IAAAwmH,GAAApnG,kBAaA,OAZA+nG,GAAAxoG,MAAA,KACAha,IAAA,SAAA2Z,GACA,GAAAgiG,GAAA34G,EAAA,OACA0gD,EAAA1gD,EAAA,QAOA,OALAw+G,GADA,MAAAK,EAAAlG,GAAA,MAAAkG,EAAAn+D,IAEAk+D,IACAa,IAAA,QACA9oG,YAzDA,GAAA+oG,GACA,MAAAA,GAEA,IAAAC,KACAA,GAAApnH,KAAA,GAAAqnH,IAAA,WACAD,EAAApnH,KAAA,GAAAqnH,IAAA,eACAD,EAAApnH,KAAA,GAAAqnH,IAAA,mBACAD,EAAApnH,KAAA,GAAAqnH,IAAA,sBAIA,IAAAC,GAAA,GAAAD,IAAA,OACAC,GAAAC,MAAAV,EACAO,EAAApnH,KAAAsnH,EAYA,IAAAE,GAAA,GAAAH,IAAA,OAwCA,OAvCAG,GAAAD,MAAAT,EACAM,EAAApnH,KAAAwnH,GACAJ,EAAApnH,KAAA,GAAAqnH,IAAA,gBACAD,EAAApnH,KAAA,GAAAqnH,IAAA,YACAD,EAAApnH,KAAA,GAAAqnH,IAAA,oBACAD,EAAApnH,KAAA,GAAAqnH,IAAA,yBACAD,EAAApnH,KAAA,GAAAqnH,IAAA,+BACAD,EAAApnH,KAAA,GAAAqnH,IAAA,4BACAD,EAAApnH,KAAA,GAAAqnH,IAAA,4BACAD,EAAApnH,KAAA,GAAAqnH,IAAA,wBACAD,EAAApnH,KAAA,GAAAqnH,IAAA,iCA2BAD,EAAApnH,KAAA,GAAAqnH,IAAA,mCAAAL,IACAG,GAAAC,EAGA,QAAAK,IAAAhgH,EAAAigH,GACA,QAAAC,KACA,GAAAvH,GAAA34G,EAAA,OACA0gD,EAAA1gD,EAAA,SACAmgH,EAAA,GAAAC,IAAAzH,EAAAj4D,EACA,OAAAu/D,GAAAI,qBAAAF,GAEA3nH,OAAAY,eAAA4G,EAAA,OAA4CzG,IAAA2mH,IAE5C,QAAAI,IAAAL,EAAAM,EAAAZ,GACA,GAAA3/G,KACAA,GAAA,WAEA,QADAgK,GAAA21G,EAAAtnH,OACAV,EAAA,EAAmBA,EAAAqS,EAASrS,IAAA,CAC5B,GAAA6oH,GAAAb,EAAAhoH,EACAqI,GAAAwgH,EAAAC,OAAAD,EAAAV,MAAA9/G,EAAAugH,EAAAC,EAAAE,SAGA,MADAV,IAAAhgH,EAAAigH,GACAjgH,EAEA,QAAA2gH,IAAAV,EAAAW,EAAAjB,GACA,GAAAp5G,GAAAw3G,EAAA6C,EACA,eAAAr6G,EACA,KAGA+5G,GAAAL,EADA15G,EACAo5G,GAEA,QAAAkB,IAAA7gH,EAAA2/G,GAGA,OAFAY,MACAv2G,EAAA21G,EAAAtnH,OACAV,EAAA,EAAmBA,EAAAqS,EAASrS,IAAA,CAC5B,GAAA6oH,GAAAb,EAAAhoH,EACA6oH,GAAAM,WACAP,EAAAC,EAAAE,QAAA1gH,EAAAwgH,EAAAC,QAGA,MAAA1xG,MAAAnT,UAAA2kH,GAEA,QAAAQ,IAAAnnH,GAEA,IADAA,IAAA4jH,EAAA5jH,GAEA,gCAEA,QAAAuF,KAAAvF,GAAA,CACA,GAAAyX,GAAAzX,EAAAuF,EACA,uBAAAA,GACA,IAAAq+G,EAAAnsG,GACA,yDAIA,IAAAtU,EAAAsU,GACA,qBAAAlS,EAAA,0BChJA,QAAA6hH,IAAA/nH,EAAAgoH,EAAAC,GAGA,OAFAC,GAAAF,EAAA5oH,OACA+oH,EAAAH,EAAA5oH,OACAV,EAAA,EAAmBA,EAAAspH,EAAA5oH,OAAkBV,IACrC,GAAAspH,EAAAtpH,GAAA8iB,SAAA,CACA0mG,EAAAxpH,CACA,OAIA,KADAwpH,GAAAD,EAAA7oH,QAAA6oH,EAAA7oH,QAAA+oH,GAEA,KAAApH,GAAAmH,EAAAC,EAAAnoH,EAAAioH,EAAA7oH,OAEA,QAAAV,GAAA,EAAmBA,EAAAupH,EAAA7oH,OAAmBV,IACtC,IACAspH,EAAAtpH,GAAA0pH,UAAAH,EAAAvpH,IAEA,MAAAiH,GACA,KAAAA,aAAAoK,OACA8wG,EAAAniH,EAAAsB,EAAA2F,EAAAiN,SAGAiuG,EAAAniH,EAAAsB,EAAA2F,IAsBA,QAAA0iH,IAAAC,EAAAC,GACA,gBAAA5nH,GACA2nH,EAAA3nH,GACA4nH,EAAA5nH,IAGA,QAAA6nH,IAAAC,EAAAC,GACA,QAAAC,GAAAhoH,GACA,IAAA8jH,EAAA9jH,GACA,wBAGA,GAAAynH,EAOA,OALAA,GADAK,EACAJ,GAAAM,EAAAF,GAGAE,EAEA,GAAAC,IAAAR,EAAAM,GAEA,QAAAG,MACA,QAAAT,GAAAznH,GAIA,KAHAA,YAAAgxC,aACAhxC,YAAAmoH,cACAlE,KAAAjkH,YAAAkkH,OAEA,8BAGA,UAAA+D,IAAAR,GAEA,QAAAW,IAAAL,GACA,UAAAE,IAAAd,GAAAY,GAEA,QAAAM,MACA,QAAAZ,GAAAznH,GAEA,KADA+jH,EAAA/jH,OAAA,GAEA,uCAGA,UAAAioH,IAAAR,GAEA,QAAAa,IAAAR,EAAAC,GACA,QAAAN,GAAAznH,GAEA,KADA,OAAAA,GAAAyjH,EAAAzjH,gBAAApB,SAEA,+BAEAgM,KAAAk9G,GAAA,OAAAA,GACAA,EAAA9nH,GAGA,UAAAioH,IAAAR,EAAAM,GAEA,QAAAQ,IAAAR,GACA,QAAAN,GAAAznH,GAEA,GADA,OAAAA,IAAA2jH,EAAA3jH,GAEA,4BAGA,UAAAioH,IAAAR,EAAAM,GClIA,QAAAS,MACA,yBAAAC,aACAA,YAEA,mBAAAC,mBACAA,sBAGA,GASA,QAAAC,MAEA,OADAn+D,MACA5+C,EAAA,EAAoBA,EAAAnG,UAAAhH,OAAuBmN,IAC3C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA,IAAA68G,GAAAD,IACA,QAAA59G,KAAA69G,EAAA,CAEA,OADA/jG,GAAA,GAAA+jG,GACA1qH,EAAA,EAAuBA,EAAAysD,EAAA/rD,OAAqBV,IAC5C2mB,EAAA4hC,OAAAkE,EAAAzsD,GAEA,OAAA2mB,GAAAikG,UAGA,GAAA1E,IACA,UAAAC,MAAA15D,EAGA,MAAAp7C,OAAA,uDAaA,QAAAw5G,IAAAC,EAAA9xE,EAAA6rE,GACA,MAAAiG,GAAAC,YACAD,EAAAC,YAAA/xE,EAAA6rE,GAEAiG,EAAAE,SACAF,EAAAE,SAAAhyE,EAAA6rE,GAEAiG,EAAAlxG,MACAkxG,EAAAlxG,MAAAo/B,EAAA6rE,GAEA,KCxCA,QAAAoG,IAAAz4G,EAAA04G,GACA,WAAA14G,EAAArL,QAAA+jH,GAMA,QAAAC,IAAAC,GACA,MAAAj/G,OAAArL,UAAA8Y,MAAA1Z,KAAAkrH,GAOA,QAAAj+D,IAAA36C,EAAA04G,GACA,GAAAlrH,GAAAwS,EAAArL,QAAA+jH,IACA,IAAAlrH,GACAwS,EAAAoR,OAAA5jB,EAAA,GCXA,QAAAqrH,IAAAC,GACA,IAAAA,EACA,KAAAn2E,KAGA,QAAAo2E,IAAAjD,EAAAN,GACA,QAAAwD,GAAA1jB,EAAAx/C,GACA,GAAAjgD,GAAA2gH,GAAAV,EAAAhgE,EAAA0/D,EAEA,OADAqD,IAAA,OAAAhjH,GACAA,EAEA,MAAAmjH,GAEA,QAAAC,IAAArkG,GACA,QAAAskG,GAAA5jB,EAAA3lG,GACA,GAAAwpH,EAkBA,OAhBAA,GADA,MAAA7jB,EAAA8jB,YACA3K,IAGA,MAAAnZ,EAAA8jB,YACA7K,EAAA35F,EAAA45F,QAGA,MAAAlZ,EAAA8jB,YACAzK,EAAA/5F,EAAA2hC,MAGA5mD,EAIAwpH,EAAAE,sBAAA1pH,EAAA2pH,sBACAH,EAEA,MAAAD,GAEA,QAAAK,IAAA3kG,GAEA,QAAAskG,GAAA5jB,EAAA3lG,GACA,GAAAwpH,GAAAK,EAAAlkB,EAAA3lG,EAKA,OAJA,OAAA2lG,EAAA8jB,cACAD,EAAA9K,EAAAz5F,EAAA2hC,OAEA4iE,EAAAE,sBAAA1pH,EAAA2pH,sBACAH,EAPA,GAAAK,GAAAP,GAAArkG,EASA,OAAAskG,GAEA,QAAAO,IAAA3D,EAAAlhG,EAAA4gG,GACA,GAAAtB,GAAAt/F,EAAA8kG,gBACAx+E,EAAA+4E,EAAAC,GAEAt0G,EAAAk2G,EAAA6D,wBACAC,EAAA,GAAAC,IAAA3+E,EAFA,MAEA69E,GAAAjD,EAAAN,GAAA51G,EAEA,OADAg6G,GAAAV,aAAAK,GAAA3kG,GACAglG,EAEA,QAAAE,IAAAhE,EAAAlhG,EAAA/e,EAAA2/G,GACA,GAAAtB,GAAAt/F,EAAA8kG,gBACAx+E,EAAA+4E,EAAAC,GAEAp9G,EAAA4/G,GAAA7gH,EAAA2/G,GACAllF,GAAmB8lB,eAAA,mCACnBx2C,EAAAk2G,EAAA6D,wBACAC,EAAA,GAAAC,IAAA3+E,EAJA,QAIA69E,GAAAjD,EAAAN,GAAA51G,EAIA,OAHAg6G,GAAAtpF,UACAspF,EAAA9iH,OACA8iH,EAAAV,aAAAK,GAAA3kG,GACAglG,EAEA,QAAAG,IAAAjE,EAAAlhG,GAKA,QAAAokG,GAAA1jB,EAAAx/C,IAJA,GAAAo+D,GAAAt/F,EAAA8kG,gBACAx+E,EAAA+4E,EAAAC,GAEAt0G,EAAAk2G,EAAA6D,wBAEAC,EAAA,GAAAC,IAAA3+E,EAHA,SAGA89E,EAAAp5G,EAGA,OAFAg6G,GAAAI,cAAA,SACAJ,EAAAV,aAAAK,GAAA3kG,GACAglG,EAEA,QAAAK,IAAApkH,EAAAyiH,GACA,MAAAziH,MAAA,aACAyiH,KAAA7/F,QACA,2BAEA,QAAAyhG,IAAAtlG,EAAA0jG,EAAA6B,GACA,GAAAtkH,GAAA5D,EAAAkoH,EAMA,OALAtkH,GAAA,SAAA+e,EAAA2hC,KACA1gD,EAAA,KAAAyiH,EAAAnD,OACAt/G,EAAA,cACAA,EAAA,YAAAokH,GAAA,KAAA3B,IAEAziH,EAEA,QAAAukH,IAAAtE,EAAAlhG,EAAA4gG,EAAA8C,EAAA6B,GACA,GAAAjG,GAAAt/F,EAAAylG,sBACA/pF,GACAgqF,yBAAA,aAaAC,EAXA,WAEA,OADA54G,GAAA,GACAnU,EAAA,EAAuBA,EAAA,EAAOA,IAC9BmU,IAEAkI,QAAAC,UAEA1C,MAAA,EAEA,OAAAzF,KAGA2uB,GAAA,+CAAiDiqF,CACjD,IAAA1kH,GAAAqkH,GAAAtlG,EAAA0jG,EAAA6B,GACAK,EAAA9D,GAAA7gH,EAAA2/G,GACAiF,EAAA,KACAF,EACA,4DAEAC,EACA,SACAD,EACA,qBAEA1kH,EAAA,YACA,WACA6kH,EAAA,SAAAH,EAAA,KACAzjH,EAAA6jH,GAAAvC,QAAAqC,EAAAnC,EAAAoC,EACA,WAAA5jH,EACA,KAAAu4G,IAEA,IAAAt0B,IAAqBjsF,KAAA+G,EAAA,UACrBqlC,EAAAq5E,EAAAL,GAEAt0G,EAAAk2G,EAAA8E,qBACAhB,EAAA,GAAAC,IAAA3+E,EAFA,OAEA69E,GAAAjD,EAAAN,GAAA51G,EAKA,OAJAg6G,GAAA7+B,YACA6+B,EAAAtpF,UACAspF,EAAA9iH,OAAA+jH,aACAjB,EAAAV,aAAAD,GAAArkG,GACAglG,EAoBA,QAAAkB,IAAAxlB,EAAAylB,GACA,GAAAjsF,EACA,KACAA,EAAAwmE,EAAAjgD,kBAAA,wBAEA,MAAA5gD,GACAokH,IAAA,GAIA,MADAA,IAAAJ,GADAsC,IAAA,UACAjsF,IACAA,EAEA,QAAAksF,IAAAlF,EAAAlhG,EAAA4gG,EAAA8C,EAAA6B,GAeA,QAAAnB,GAAA1jB,EAAAx/C,GACAglE,GAAAxlB,EACA,IAAAp6D,EACA,KACAA,EAAAo6D,EAAAjgD,kBAAA,qBAEA,MAAA5gD,GACAokH,IAAA,GAGA,MADAA,IAAAtF,EAAAr4E,IACAA,EAxBA,GAAAg5E,GAAAt/F,EAAAylG,sBACAxkH,EAAAqkH,GAAAtlG,EAAA0jG,EAAA6B,GACAp/B,GAAqBjsF,KAAA+G,EAAA,UACrBqlC,EAAAq5E,EAAAL,GAEA5jF,GACAgqF,yBAAA,YACAW,wBAAA,QACAC,sCAAA5C,EAAAnD,OACAgG,oCAAAtlH,EAAA,YACAugD,eAAA,mCAEAt/C,EAAA4/G,GAAA7gH,EAAA2/G,GACA51G,EAAAk2G,EAAA8E,qBAaAhB,EAAA,GAAAC,IAAA3+E,EAtBA,OAsBA89E,EAAAp5G,EAKA,OAJAg6G,GAAA7+B,YACA6+B,EAAAtpF,UACAspF,EAAA9iH,OACA8iH,EAAAV,aAAAD,GAAArkG,GACAglG,EAKA,QAAAwB,IAAAtF,EAAAlhG,EAAAsmB,EAAAo9E,GAEA,QAAAU,GAAA1jB,EAAAx/C,GACA,GACAulE,GADAvsF,EAAAgsF,GAAAxlB,GAAA,kBAEA,KACA+lB,EAAA/lB,EAAAjgD,kBAAA,+BAEA,MAAA5gD,GACAokH,IAAA,GAEA,GAAA1D,GAAA58F,SAAA8iG,EAAA,GAEA,OADAxC,KAAAt7F,MAAA43F,IACA,GAAAmG,IAAAnG,EAAAmD,EAAAnD,OAAA,UAAArmF,GAZA,GAAAwB,IAAmB2qF,wBAAA,SAenBr7G,EAAAk2G,EAAA8E,qBACAhB,EAAA,GAAAC,IAAA3+E,EAFA,OAEA89E,EAAAp5G,EAGA,OAFAg6G,GAAAtpF,UACAspF,EAAAV,aAAAD,GAAArkG,GACAglG,EAgBA,QAAA2B,IAAA3mG,EAAAkhG,EAAA56E,EAAAo9E,EAAAtuC,EAAAwrC,EAAAgG,EAAAC,GA+BA,QAAAzC,GAAA1jB,EAAAx/C,GAKA,GAGAjgD,GAHA6lH,EAAAZ,GAAAxlB,GAAA,mBACAqmB,EAAA7sF,EAAA8sF,QAAAC,EACA1G,EAAAmD,EAAAnD,MAQA,OALAt/G,GADA,UAAA6lH,EACA3C,GAAAjD,EAAAN,GAAAlgB,EAAAx/C,GAGA,KAEA,GAAAwlE,IAAAK,EAAAxG,EAAA,UAAAuG,EAAA7lH,GA3CA,GAAAi5B,GAAA,GAAAwsF,IAAA,IASA,IARAE,GACA1sF,EAAA8sF,QAAAJ,EAAAI,QACA9sF,EAAAgtF,MAAAN,EAAAM,QAGAhtF,EAAA8sF,QAAA,EACA9sF,EAAAgtF,MAAAxD,EAAAnD,QAEAmD,EAAAnD,SAAArmF,EAAAgtF,MACA,KAAAvM,IAEA,IAAAwM,GAAAjtF,EAAAgtF,MAAAhtF,EAAA8sF,QACAC,EAAAE,CACA/xC,GAAA,IACA6xC,EAAAhyG,KAAA8yC,IAAAk/D,EAAA7xC,GAEA,IAAAgyC,GAAAltF,EAAA8sF,QACAK,EAAAD,EAAAH,EACAK,EAAAL,IAAAE,EAAA,4BACAzrF,GACA2qF,wBAAAiB,EACAC,uBAAArtF,EAAA8sF,SAEA9kH,EAAAwhH,EAAAlxG,MAAA40G,EAAAC,EACA,WAAAnlH,EACA,KAAAu4G,IAmBA,IACAzvG,GAAAk2G,EAAA8E,qBACAhB,EAAA,GAAAC,IAAA3+E,EAFA,OAEA89E,EAAAp5G,EAKA,OAJAg6G,GAAAtpF,UACAspF,EAAA9iH,OAAA+jH,aACAjB,EAAAwC,iBAAAX,GAAA,KACA7B,EAAAV,aAAAD,GAAArkG,GACAglG,EC/SA,QAAAyC,IAAAnlH,GACA,kBAEA,OADAolH,MACAjhH,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/CihH,EAAAjhH,GAAAnG,UAAAmG,EAEA23G,IAAA,GAAAr8G,KAAA,WACAO,EAAAN,MAAA,KAAA0lH,MCVA,QAAA91E,IAAAtvC,EAAA6F,EAAA6C,GAQA,QAAA28G,KACA,WAAAC,EAGA,QAAAC,KACAC,IACAA,GAAA,EACA3/G,EAAAnG,MAAA,KAAA1B,YAGA,QAAAynH,GAAAC,GACAC,EAAA7/G,WAAA,WACA6/G,EAAA,KACA3lH,EAAA8hH,EAAAuD,MACSK,GAET,QAAA5D,GAAAxiD,GAEA,OADAvc,MACA5+C,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/C4+C,EAAA5+C,EAAA,GAAAnG,UAAAmG,EAEA,KAAAqhH,EAAA,CAGA,GAAAlmD,EAEA,WADAimD,GAAA7lH,MAAA,KAAA1B,UAIA,IADAqnH,KAAAO,EAGA,WADAL,GAAA7lH,MAAA,KAAA1B,UAGA6nH,GAAA,KAEAA,GAAA,EAEA,IAAAC,EACA,KAAAR,GACAA,EAAA,EACAQ,EAAA,GAGAA,EAAA,KAAAD,EAAAlzG,KAAAC,UAEA6yG,EAAAK,IAGA,QAAAx4E,GAAAy4E,GACAC,IAGAA,GAAA,EACAR,IAGA,OAAAG,GACAI,IACAT,EAAA,GAEAn9G,aAAAw9G,GACAF,EAAA,IAGAM,IACAT,EAAA,KAtEA,GAAAO,GAAA,EAEAF,EAAA,KACAC,GAAA,EACAN,EAAA,EAIAE,GAAA,EA4CAQ,GAAA,CA2BA,OALAP,GAAA,GACA3/G,WAAA,WACA8/G,GAAA,EACAt4E,GAAA,IACK5kC,GACL4kC,EASA,QAAAA,IAAA/8B,GACAA,GAAA,GCqFA,QAAA01G,IAAA7sF,EAAA+kE,GACA,OAAAA,KAAAnnG,OAAA,IACAoiC,EAAA,0BAAA+kE,GAGA,QAAA+nB,IAAA9sF,GACA,GAAA+sF,OAAA,KAAAvP,GAAA,QAAAA,GAAA,QAAA9xG,YAAA,YACAs0B,GAAA,uCAAA+sF,EAKA,QAAAC,IAAA1D,EAAAvkB,EAAAkoB,GACA,GAAA5I,GAAAF,GAAAmF,EAAA7+B,WACA7/C,EAAA0+E,EAAA1+E,IAAAy5E,EACArkF,EAAAr+B,EAAA2nH,EAAAtpF,QAGA,OAFA6sF,IAAA7sF,EAAA+kE,GACA+nB,GAAA9sF,GACA,GAAAktF,IAAAtiF,EAAA0+E,EAAArqG,OAAA+gB,EAAAspF,EAAA9iH,KAAA8iH,EAAAI,aAAAJ,EAAA6D,qBAAA7D,EAAAZ,QAAAY,EAAAV,aAAAU,EAAAh6G,QAAAg6G,EAAAwC,iBAAAmB,GC9LA,QAAAG,IAAAzjH,EAAA8mF,EAAA48B,GACA,UAAAC,IAAA3jH,EAAA,GAAA4jH,IAAAF,GAEA,QAAAG,IAAAzjD,GACA,GAAAolC,IAEAkT,aACAoL,aACAhN,gBACAiN,QAAAJ,GACAtiD,UAAA2iD,GAEA5jD,GAAAp+D,SAAAvB,gBAAAwjH,GAAAR,GAAAje,MAAAplG,IAEA,GnBJAhM,OAAOY,eAAe+E,EAAqB,cAAgBlE,OAAO,GAGlE,IoBrBAquH,IpBqBIrQ,GAAM3gH,EAAoB,GqBlB9BgnH,GAAA,yCAIAG,GAAA,yCAIAF,GAAA,MAIAI,GAAA,MAYA4J,GAAA,KAIAC,GAAA,IAKAC,IAAA,iBnBtCApQ,GAAA,WACA,QAAAA,GAAAhyG,EAAAwF,GACAtN,KAAAmqH,EAAAtQ,EAAA/xG,GACA9H,KAAAoqH,EAAA,qBAAA98G,EACAtN,KAAAqqH,EAAA,KACArqH,KAAAsI,EAAA,gBA0CA,MAxCAwxG,GAAA5/G,UAAAowH,SAAA,WACA,MAAAtqH,MAAA8H,MAEAgyG,EAAA5/G,UAAAqwH,WAAA,SAAAziH,GACA,MAAA+xG,GAAA/xG,KAAA9H,KAAAsqH,YAEAxQ,EAAA5/G,UAAAgrH,mBAAA,WACA,MAAAllH,MAAAqqH,GAEAvQ,EAAA5/G,UAAA+qH,sBAAA,SAAAuF,GACAxqH,KAAAqqH,EAAAG,GAEAvwH,OAAAY,eAAAi/G,EAAA5/G,UAAA,QACAc,IAAA,WACA,MAAAgF,MAAAsI,GAEAvN,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAi/G,EAAA5/G,UAAA,QACAc,IAAA,WACA,MAAAgF,MAAAmqH,GAEApvH,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAi/G,EAAA5/G,UAAA,WACAc,IAAA,WACA,MAAAgF,MAAAoqH,GAEArvH,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAi/G,EAAA5/G,UAAA,kBACAc,IAAA,WACA,MAAAgF,MAAAqqH,GAEAtvH,YAAA,EACAD,cAAA,IAEAg/G,KAIAC,IAEAC,QAAA,UACAE,iBAAA,mBACAuQ,iBAAA,mBACAC,kBAAA,oBACA1kF,eAAA,iBACAs0E,gBAAA,kBACAE,aAAA,eACAE,qBAAA,uBACAiQ,iBAAA,mBACA/P,SAAA,WAEAgQ,mBAAA,qBACA9P,YAAA,cACAE,uBAAA,yBACA6P,kBAAA,oBACA3P,kBAAA,oBACAE,uBAAA,yBACAE,gBAAA,kBACAE,iBAAA,mBACAO,uBAAA,yBACAE,YAAA,cACAE,uBAAA,yBACAG,eAAA,iBACAE,eAAA,kBC5EAG,IACAC,IAAA,MACAC,OAAA,SACAC,UAAA,YACAC,SAAA,YAwBAE,GAAA,WACA,QAAAA,GAAAvsG,EAAAo6G,GACA9qH,KAAA0Q,OACA1Q,KAAAkhD,YAAA4pE,GAAA,KAEA,MAAA7N,MA2GAa,GAAA,WACA,QAAAiN,GAAAt8C,GACAzuE,KAAAjE,QAAA,EACAiE,KAAAkhD,YAAA,IACA,IAAAqrC,GAAA9d,EAAAt2D,MAAA,kBACA,WAAAo0E,EACA,KAAA6vB,GAAAO,GAAAI,SAAA,wDAEA,IAAAvnC,GAAA+W,EAAA,QACA,OAAA/W,IACAx1E,KAAAjE,OAAAiiH,EAAAxoC,EAAA,WACAx1E,KAAAkhD,YAAAlhD,KAAAjE,OACAy5E,EAAA9sD,UAAA,EAAA8sD,EAAA17E,OAAA,GACA07E,GAEAx1E,KAAA+9G,KAAAtvC,EAAA/lD,UAAA+lD,EAAAluE,QAAA,QAEA,MAAAwqH,MC9JApB,IAEAqB,cAAA,iBAEA7M,IACAC,QAAA,UACAC,QAAA,UACAG,OAAA,SACAC,QAAA,UACAH,UAAA,YACA1D,SAAA,WACAr0C,MAAA,SAEAg4C,IAEAH,QAAA,UAEAI,OAAA,SAEAC,QAAA,UAEA7D,SAAA,WAEAr0C,MAAA,UgBnBA,SAAAwjD,GACAA,IAAA,uBACAA,IAAA,iCACAA,IAAA,kBACCA,YECD,IAAAkB,IAAA,WACA,QAAAC,KACA,GAAAhiH,GAAAlJ,IACAA,MAAAmrH,GAAA,EACAnrH,KAAAorH,EAAA,GAAAhxF,gBACAp6B,KAAAqrH,EAAAtB,GAAAuB,SACAtrH,KAAAurH,EAAA7M,EAAA,SAAA18G,EAAAC,GACAiH,EAAAkiH,EAAAt1G,iBAAA,iBAAAF,GACA1M,EAAAmiH,EAAAtB,GAAAyB,MACAxpH,EAAAkH,KAEAA,EAAAkiH,EAAAt1G,iBAAA,iBAAAF,GACA1M,EAAAmiH,EAAAtB,GAAA0B,cACAzpH,EAAAkH,KAEAA,EAAAkiH,EAAAt1G,iBAAA,gBAAAF,GACA5T,EAAAkH,OAyFA,MAlFAgiH,GAAAhxH,UAAA8iC,KAAA,SAAA8J,EAAA3rB,EAAAuwG,EAAAC,GACA,GAAAziH,GAAAlJ,IACA,IAAAA,KAAAmrH,EACA,KAAA5O,GAAA,gCAgBA,OAdAv8G,MAAAmrH,GAAA,EACAnrH,KAAAorH,EAAA9qG,KAAAnF,EAAA2rB,GAAA,GACAg4E,EAAA6M,IAEAxtH,EADAwtH,EACA,SAAA/qH,EAAAkS,GACA5J,EAAAkiH,EAAAzuF,iBAAA/7B,EAAAkS,QAGAgsG,EAAA4M,GACA1rH,KAAAorH,EAAApuF,KAAA0uF,GAGA1rH,KAAAorH,EAAApuF,OAEAh9B,KAAAurH,GAKAL,EAAAhxH,UAAA0xH,aAAA,WACA,IAAA5rH,KAAAmrH,EACA,KAAA5O,GAAA,wCAEA,OAAAv8G,MAAAqrH,GAKAH,EAAAhxH,UAAA8qH,UAAA,WACA,IAAAhlH,KAAAmrH,EACA,KAAA5O,GAAA,qCAEA,KACA,MAAAv8G,MAAAorH,EAAA1wF,OAEA,MAAAr6B,GACA,WAMA6qH,EAAAhxH,UAAA2xH,gBAAA,WACA,IAAA7rH,KAAAmrH,EACA,KAAA5O,GAAA,2CAEA,OAAAv8G,MAAAorH,EAAA3wF,cAMAywF,EAAAhxH,UAAA+iC,MAAA,WACAj9B,KAAAorH,EAAAnuF,SAKAiuF,EAAAhxH,UAAA+mD,kBAAA,SAAA5oC,GACA,MAAArY,MAAAorH,EAAAnqE,kBAAA5oC,IAKA6yG,EAAAhxH,UAAA4xH,0BAAA,SAAA/iH,GACA+1G,EAAA9+G,KAAAorH,EAAAW,SACA/rH,KAAAorH,EAAAW,OAAAj2G,iBAAA,WAAA/M,IAMAmiH,EAAAhxH,UAAA8xH,6BAAA,SAAAjjH,GACA+1G,EAAA9+G,KAAAorH,EAAAW,SACA/rH,KAAAorH,EAAAW,OAAA1kG,oBAAA,WAAAte,IAGAmiH,KC9GAzB,GAAA,WACA,QAAAwC,MAKA,MAHAA,GAAA/xH,UAAAgyH,YAAA,WACA,UAAAjB,KAEAgB,KCFApK,GAAA,WACA,QAAAsK,GAAA/R,EAAAj4D,GACAniD,KAAAo6G,SACAp6G,KAAAk0D,EAAA/R,EAgFA,MA9EAloD,QAAAY,eAAAsxH,EAAAjyH,UAAA,QACAc,IAAA,WACA,MAAAgF,MAAAk0D,GAEAn5D,YAAA,EACAD,cAAA,IAEAqxH,EAAAjyH,UAAAorH,cAAA,WACA,GAAAhF,GAAApnG,kBACA,aAAAonG,EAAAtgH,KAAAo6G,QAAA,MAAAkG,EAAAtgH,KAAAmiD,OAEAgqE,EAAAjyH,UAAA+rH,oBAAA,WAEA,YADA/sG,mBACAlZ,KAAAo6G,QAAA,MAEA+R,EAAAC,mBAAA,SAAAC,GACA,GAAAC,EACA,KACAA,EAAAH,EAAAI,YAAAF,GAEA,MAAAhsH,GAGA,UAAA8rH,GAAAE,EAAA,IAEA,QAAAC,EAAAnqE,KACA,MAAAmqE,EAGA,MAAAvR,GAAAsR,IAGAF,EAAAI,YAAA,SAAAzlF,GAGA,QAAA0lF,GAAA5K,GACA,MAAAA,EAAAz/D,KAAAhyC,OAAAyxG,EAAAz/D,KAAAroD,OAAA,KACA8nH,EAAA1tD,EAAA0tD,EAAA1tD,EAAAlhD,MAAA,OAOA,QAAAy5G,GAAA7K,GACAA,EAAA1tD,EAAAvrC,mBAAAi5F,EAAAz/D,MAcA,OA1BA3hC,GAAA,KASAksG,EAAAxkF,OAAA,yCACAykF,GAAyBvS,OAAA,EAAAj4D,KAAA,GAKzByqE,EAAA1kF,OAAA,oGAKA,KACA2kF,GAA2BzS,OAAA,EAAAj4D,KAAA,GAC3B2qE,IACaC,MAAAL,EAAAM,QAAAL,EAAAM,WAAAT,IACAO,MAAAH,EAAAI,QAAAH,EAAAI,WAAAR,IAEbrzH,EAAA,EAAuBA,EAAA0zH,EAAAhzH,OAAmBV,IAAA,CAC1C,GAAA8zH,GAAAJ,EAAA1zH,GACA+zH,EAAAD,EAAAH,MAAA7oG,KAAA4iB,EACA,IAAAqmF,EAAA,CACA,GAAAC,GAAAD,EAAAD,EAAAF,QAAA5S,QACAiT,EAAAF,EAAAD,EAAAF,QAAA7qE,KACAkrE,KACAA,EAAA,IAEA7sG,EAAA,GAAA2rG,GAAAiB,EAAAC,GACAH,EAAAD,WAAAzsG,EACA,QAGA,SAAAA,EACA,KAAAq6F,GAAA/zE,EAEA,OAAAtmB,IAEA2rG,KbhFA9K,GAAA,WACA,QAAAA,GAAAc,EAAAmL,EAAAC,EAAAC,GACAxtH,KAAAmiH,SACAniH,KAAAkiH,MAAAoL,GAAAnL,EACAniH,KAAAuiH,WAAAgL,EACAvtH,KAAAuhH,MAAAiM,GAAA/M,GAEA,MAAAY,MAGAF,GAAA,KCkBAmC,GAAA,WACA,QAAAmK,GAAA3K,EAAAM,GACA,GAAAvqH,GAAAmH,IACAA,MAAA8iH,UAAA,SAAAznH,GACAxC,EAAAqjB,WAAA6iG,EAAA1jH,IAGAynH,EAAAznH,IAEA2E,KAAAkc,WAAAknG,EAEA,MAAAqK,MapCAlH,GAAA,WACA,QAAAmH,GAAAh9G,EAAAi9G,GACA,GAAA5M,GAAA,EACA6M,EAAA,EACAvO,GAAA3uG,IACA1Q,KAAA6tH,EAAAn9G,EACAqwG,EAAArwG,EAAAqwG,KACA6M,EAAAl9G,EAAA2T,MAEA3T,YAAA8yG,cACAmK,EACA3tH,KAAA6tH,EAAA,GAAAxhF,YAAA37B,IAGA1Q,KAAA6tH,EAAA,GAAAxhF,YAAA37B,EAAAo9G,YACA9tH,KAAA6tH,EAAAvlG,IAAA,GAAA+jB,YAAA37B,KAEAqwG,EAAA/gH,KAAA6tH,EAAA/zH,QAEA4W,YAAA27B,cACAshF,EACA3tH,KAAA6tH,EAAAn9G,GAGA1Q,KAAA6tH,EAAA,GAAAxhF,YAAA37B,EAAA5W,QACAkG,KAAA6tH,EAAAvlG,IAAA5X,IAEAqwG,EAAArwG,EAAA5W,QAEAkG,KAAA+tH,EAAAhN,EACA/gH,KAAAguH,EAAAJ,EAiEA,MA/DAF,GAAAxzH,UAAA6mH,KAAA,WACA,MAAA/gH,MAAA+tH,GAEAL,EAAAxzH,UAAAmqB,KAAA,WACA,MAAArkB,MAAAguH,GAEAN,EAAAxzH,UAAA8Y,MAAA,SAAA40G,EAAAC,GACA,GAAAxI,EAAAr/G,KAAA6tH,GAAA,CACA,GAAAI,GAAAjuH,KAAA6tH,EACAK,EAAAjK,GAAAgK,EAAArG,EAAAC,EACA,eAAAqG,EACA,KAEA,GAAAR,GAAAQ,GAIA,UAAAR,GADA,GAAArhF,YAAArsC,KAAA6tH,EAAAM,OAAAvG,EAAAC,EAAAD,IACA,IAGA8F,EAAA1J,QAAA,WAEA,OADAn+D,MACA5+C,EAAA,EAAwBA,EAAAnG,UAAAhH,OAAuBmN,IAC/C4+C,EAAA5+C,GAAAnG,UAAAmG,EAEA,IAAAq4G,IAAA,CACA,GAAA8O,GAAAvoE,EAAApnD,IAAA,SAAAqU,GACA,MAAAA,aAAA46G,GACA56G,EAAA+6G,EAGA/6G,GAGA,WAAA46G,GAAA1J,GAAAxhH,MAAA,KAAA4rH,IAGA,GAAAC,GAAAxoE,EAAApnD,IAAA,SAAAqU,GACA,MAAAqsG,GAAArsG,GACAkqG,EAAAL,GAAAC,IAAA9pG,GAAApC,KAIAoC,EAAA+6G,IAGAS,EAAA,CACAD,GAAAlwH,QAAA,SAAAyN,GACA0iH,GAAA1iH,EAAAkiH,YAEA,IAAAS,GAAA,GAAAliF,YAAAiiF,GACAE,EAAA,CAMA,OALAH,GAAAlwH,QAAA,SAAAyN,GACA,OAAAxS,GAAA,EAA+BA,EAAAwS,EAAA9R,OAAkBV,IACjDm1H,EAAAC,KAAA5iH,EAAAxS,KAGA,GAAAs0H,GAAAa,GAAA,IAGAb,EAAAxzH,UAAAusH,WAAA,WACA,MAAAzmH,MAAA6tH,GAEAH,KC5HAjI,GAAA,WACA,QAAAA,GAAA3+E,EAAA3rB,EAQAypG,EAAAp5G,GACAxL,KAAA8mC,MACA9mC,KAAAmb,SACAnb,KAAA4kH,UACA5kH,KAAAwL,UACAxL,KAAA2mF,aACA3mF,KAAAk8B,WACAl8B,KAAA0C,KAAA,KACA1C,KAAA8kH,aAAA,KAKA9kH,KAAAgoH,iBAAA,KACAhoH,KAAA4lH,cAAA,KACA5lH,KAAAqpH,wBAEA,MAAA5D,MXuJAyB,GAAA,WACA,QAAAA,GAAAM,EAAAE,EAAAnsG,EAAA9Z,GACAzB,KAAAwnH,UACAxnH,KAAA0nH,QACA1nH,KAAAub,cACAvb,KAAAyB,YAAA,KAEA,MAAAylH,MYrKAuH,GAAA,WACA,QAAAC,GAAA/yG,EAAAgzG,EAAAC,GAIA,GAHA5P,EAAArjG,IACAmjG,EAAA6P,IACA7P,EAAA8P,GAEA5uH,KAAAoC,KAAAuZ,EACA3b,KAAAvE,MAAAkzH,GAAA,KACA3uH,KAAA0b,SAAAkzG,GAAA,SAEA,CACA,GAAAnzG,GAAAE,CACA3b,MAAAoC,KAAAqZ,EAAArZ,MAAA,KACApC,KAAAvE,MAAAggB,EAAAhgB,OAAA,KACAuE,KAAA0b,SAAAD,EAAAC,UAAA,MAGA,MAAAgzG,MCpCAG,GAAA,WACA,QAAAA,GAAAC,EAAAC,EAAA5X,EAAA11G,EAAA+S,EAAAX,GACA7T,KAAA8uH,mBACA9uH,KAAA+uH,aACA/uH,KAAAm3G,QACAn3G,KAAAyB,WACAzB,KAAAwU,OACAxU,KAAA6T,MAoBA,MAlBA5Z,QAAAY,eAAAg0H,EAAA30H,UAAA,eACAc,IAAA,WACA,UAAAgF,KAAAyB,SAAA,CACA,GAAAutH,GAAAhvH,KAAAyB,SAAA,YACA,cAAAutH,GAAA,MAAAA,EAAA,GACAA,EAAA,GAGA,KAIA,aAGAj0H,YAAA,EACAD,cAAA,IAEA+zH,KCOAI,GAAA,WAMA,QAAAC,GAAAr7G,EAAA6tG,EAAAlhG,EAAA4gG,EAAA8C,EAAAziH,OACA,KAAAA,IAAkCA,EAAA,KAClC,IAAAyH,GAAAlJ,IACAA,MAAAmvH,EAAA,EACAnvH,KAAAovH,GAAA,EACApvH,KAAAqvH,GAAA,EACArvH,KAAAsvH,KACAtvH,KAAAuvH,EAAA,KACAvvH,KAAAwvH,EAAA,KACAxvH,KAAAyvH,EAAA,KACAzvH,KAAA0vH,EAAA,EACA1vH,KAAA2vH,EAAA,KACA3vH,KAAA4vH,EAAA,KACA5vH,KAAA8oE,EAAAj1D,EACA7T,KAAA6vH,EAAAnO,EACA1hH,KAAA8vH,EAAAtvG,EACAxgB,KAAA+vH,EAAA7L,EACAlkH,KAAAgwH,EAAAvuH,EACAzB,KAAAmhH,EAAAC,EACAphH,KAAAiwH,EAAAjwH,KAAAkwH,EAAAlwH,KAAA+vH,GACA/vH,KAAAohF,EAAA+8B,GAAAC,QACAp+G,KAAAmwH,EAAA,SAAA10H,GACAyN,EAAAumH,EAAA,KACAvmH,EAAAwmH,EAAA,EACAj0H,EAAA8uH,WAAAxQ,GAAAa,WACA1xG,EAAAkmH,GAAA,EACAlmH,EAAAknH,MAGAlnH,EAAAqmH,EAAA9zH,EACAyN,EAAAmnH,EAAAlS,GAAA53C,SAGAvmE,KAAAswH,EAAA,SAAA70H,GACAyN,EAAAumH,EAAA,KACAh0H,EAAA8uH,WAAAxQ,GAAAa,UACA1xG,EAAAknH,KAGAlnH,EAAAqmH,EAAA9zH,EACAyN,EAAAmnH,EAAAlS,GAAA53C,SAGAvmE,KAAAuwH,EAAA7R,EAAA,SAAA18G,EAAAC,GACAiH,EAAAymH,EAAA3tH,EACAkH,EAAA0mH,EAAA3tH,EACAiH,EAAAq4E,MAIAvhF,KAAAuwH,EAAAhuH,KAAA,mBAmdA,MAjdA2sH,GAAAh1H,UAAAs2H,EAAA,WACA,GAAAtnH,GAAAlJ,KACAywH,EAAAzwH,KAAAmvH,CACA,iBAAAuB,EAAAhJ,GACAx+G,EAAAynH,EAAAF,EAAAC,KAGAxB,EAAAh1H,UAAAg2H,EAAA,SAAAhM,GACA,MAAAA,GAAAnD,OAAA,QAEAmO,EAAAh1H,UAAAqnF,EAAA,WACAvhF,KAAAohF,IAAA+8B,GAAAC,SAIA,OAAAp+G,KAAAyvH,IAGAzvH,KAAAiwH,EACA,OAAAjwH,KAAAwvH,EACAxvH,KAAA4wH,IAGA5wH,KAAAovH,EACApvH,KAAA6wH,IAGA7wH,KAAAqvH,EAEArvH,KAAA8wH,IAGA9wH,KAAA+wH,IAMA/wH,KAAAgxH,MAGA9B,EAAAh1H,UAAA+2H,EAAA,SAAAtoH,GACA,GAAAO,GAAAlJ,IACAA,MAAA6vH,EAAAqB,eAAA3uH,KAAA,SAAA0+F,GACA,OAAA/3F,EAAAk4E,GACA,IAAA+8B,IAAAC,QACAz1G,EAAAs4F,EACA,MACA,KAAAkd,IAAAG,UACAp1G,EAAAmnH,EAAAlS,GAAAvD,SACA,MACA,KAAAuD,IAAAE,QACAn1G,EAAAmnH,EAAAlS,GAAAK,YAOA0Q,EAAAh1H,UAAA02H,EAAA,WACA,GAAA1nH,GAAAlJ,IACAA,MAAAixH,EAAA,SAAAhwB,GACA,GAAAukB,GAAAoB,GAAA19G,EAAA2mH,EAAA3mH,EAAA4mH,EAAA5mH,EAAAi4G,EAAAj4G,EAAA6mH,EAAA7mH,EAAA8mH,GACAmB,EAAAjoH,EAAA2mH,EAAA3G,YAAA1D,EAAAvkB,EACA/3F,GAAAumH,EAAA0B,EACAA,EAAAC,aAAA7uH,KAAA,SAAAukC,GACA59B,EAAAumH,EAAA,KACAvmH,EAAAsmH,EAAA1oF,EACA59B,EAAAkmH,GAAA,EACAlmH,EAAAknH,KACalnH,EAAAinH,MAGbjB,EAAAh1H,UAAA22H,EAAA,WACA,GAAA3nH,GAAAlJ,KAEA8mC,EAAA9mC,KAAAwvH,CACAxvH,MAAAixH,EAAA,SAAAhwB,GACA,GAAAukB,GAAAwB,GAAA99G,EAAA2mH,EAAA3mH,EAAA4mH,EAAAhpF,EAAA59B,EAAA6mH,GACAsB,EAAAnoH,EAAA2mH,EAAA3G,YAAA1D,EAAAvkB,EACA/3F,GAAAumH,EAAA4B,EACAA,EAAAD,aAAA7uH,KAAA,SAAAm4B,GACAA,IACAxxB,EAAAumH,EAAA,KACAvmH,EAAAynH,EAAAj2F,EAAA8sF,SACAt+G,EAAAkmH,GAAA,EACA10F,EAAAnf,YACArS,EAAAmmH,GAAA,GAEAnmH,EAAAknH,KACalnH,EAAAinH,MAGbjB,EAAAh1H,UAAA62H,EAAA,WACA,GAAA7nH,GAAAlJ,KACA41E,Ed2EA,Oc3EA51E,KAAA0vH,EACAh1F,EAAA,GAAAwsF,IAAAlnH,KAAAmvH,EAAAnvH,KAAA+vH,EAAAhP,QAEAj6E,EAAA9mC,KAAAwvH,CACAxvH,MAAAixH,EAAA,SAAAhwB,GACA,GAAAukB,EACA,KACAA,EAAA2B,GAAAj+G,EAAA4mH,EAAA5mH,EAAA2mH,EAAA/oF,EAAA59B,EAAA6mH,EAAAn6C,EAAA1sE,EAAAi4G,EAAAzmF,EAAAxxB,EAAAsnH,KAEA,MAAAnwH,GAGA,MAFA6I,GAAAqmH,EAAAlvH,MACA6I,GAAAmnH,EAAAlS,GAAA53C,OAGA,GAAA+qD,GAAApoH,EAAA2mH,EAAA3G,YAAA1D,EAAAvkB,EACA/3F,GAAAumH,EAAA6B,EACAA,EACAF,aACA7uH,KAAA,SAAAgvH,GACAroH,EAAAsoH,IACAtoH,EAAAumH,EAAA,KACAvmH,EAAAynH,EAAAY,EAAA/J,SACA+J,EAAAh2G,WACArS,EAAA8mH,EAAAuB,EAAA9vH,SACAyH,EAAAmnH,EAAAlS,GAAAM,UAGAv1G,EAAAknH,KAEalnH,EAAAinH,MAGbjB,EAAAh1H,UAAAs3H,EAAA,Wd2CA,Oc1CAxxH,KAAA0vH,EAEA,WACA1vH,KAAA0vH,GAAA,IAGAR,EAAAh1H,UAAA42H,EAAA,WACA,GAAA5nH,GAAAlJ,IACAA,MAAAixH,EAAA,SAAAhwB,GACA,GAAAukB,GAAAH,GAAAn8G,EAAA2mH,EAAA3mH,EAAA4mH,EAAA5mH,EAAAi4G,GACAsQ,EAAAvoH,EAAA2mH,EAAA3G,YAAA1D,EAAAvkB,EACA/3F,GAAAumH,EAAAgC,EACAA,EAAAL,aAAA7uH,KAAA,SAAAd,GACAyH,EAAAumH,EAAA,KACAvmH,EAAA8mH,EAAAvuH,EACAyH,EAAAmnH,EAAAlS,GAAAM,UACav1G,EAAAonH,MAGbpB,EAAAh1H,UAAA82H,EAAA,WACA,GAAA9nH,GAAAlJ,IACAA,MAAAixH,EAAA,SAAAhwB,GACA,GAAAukB,GAAAQ,GAAA98G,EAAA2mH,EAAA3mH,EAAA4mH,EAAA5mH,EAAAi4G,EAAAj4G,EAAA6mH,EAAA7mH,EAAA8mH,GACA0B,EAAAxoH,EAAA2mH,EAAA3G,YAAA1D,EAAAvkB,EACA/3F,GAAAumH,EAAAiC,EACAA,EAAAN,aAAA7uH,KAAA,SAAAd,GACAyH,EAAAumH,EAAA,KACAvmH,EAAA8mH,EAAAvuH,EACAyH,EAAAynH,EAAAznH,EAAA6mH,EAAAhP,QACA73G,EAAAmnH,EAAAlS,GAAAM,UACav1G,EAAAinH,MAGbjB,EAAAh1H,UAAAy2H,EAAA,SAAAgB,GACA,GAAAC,GAAA5xH,KAAAmvH,CACAnvH,MAAAmvH,EAAAwC,EAIA3xH,KAAAmvH,IAAAyC,GACA5xH,KAAA6xH,KAGA3C,EAAAh1H,UAAAm2H,EAAA,SAAAlZ,GACA,GAAAn3G,KAAAohF,IAAA+1B,EAGA,OAAAA,GACA,IAAAgH,IAAAG,UASA,IAAAH,IAAAE,QAGAr+G,KAAAohF,EAAA+1B,EACA,OAAAn3G,KAAAyvH,GACAzvH,KAAAyvH,EAAA7lF,QAEA,MACA,KAAAu0E,IAAAC,QAIA,GAAA0T,GAAA9xH,KAAAohF,IAAA+8B,GAAAK,MACAx+G,MAAAohF,EAAA+1B,EACA2a,IACA9xH,KAAA6xH,IACA7xH,KAAAuhF,IAEA,MACA,KAAA48B,IAAAK,OAGAx+G,KAAAohF,EAAA+1B,EACAn3G,KAAA6xH,GACA,MACA,KAAA1T,IAAAvD,SAIA56G,KAAAuvH,EAAA5U,IACA36G,KAAAohF,EAAA+1B,EACAn3G,KAAA6xH,GACA,MACA,KAAA1T,IAAA53C,MAQA,IAAA43C,IAAAM,QAKAz+G,KAAAohF,EAAA+1B,EACAn3G,KAAA6xH,MAIA3C,EAAAh1H,UAAAk2H,EAAA,WACA,OAAApwH,KAAAohF,GACA,IAAA+8B,IAAAE,QACAr+G,KAAAqwH,EAAAlS,GAAAK,OACA,MACA,KAAAL,IAAAG,UACAt+G,KAAAqwH,EAAAlS,GAAAvD,SACA,MACA,KAAAuD,IAAAC,QACAp+G,KAAAuhF,MAOAtnF,OAAAY,eAAAq0H,EAAAh1H,UAAA,YACAc,IAAA,WACA,GAAA+2H,GAAA7T,EAAAl+G,KAAAohF,EACA,WAAAytC,IAAA7uH,KAAAmvH,EAAAnvH,KAAA+vH,EAAAhP,OAAAgR,EAAA/xH,KAAAgwH,EAAAhwH,UAAA8oE,IAEA/tE,YAAA,EACAD,cAAA,IAMAo0H,EAAAh1H,UAAAoS,GAAA,SAAA+X,EAAA1I,EAAAlgB,EAAAu2H,GAIA,QAAAC,GAAAC,GACA,GAAA7tG,IAAAslG,GAAAqB,cACA,0CAAArB,GAAAqB,cAAA,KAOA,QAAAmH,GAAA92H,GACA,IAEA,WADA+2H,GAAA/2H,GAGA,MAAAgF,IACA,IAKA,GAJAgyH,EAAAh3H,KACA0jH,EAAA1jH,EAAA,OACA0jH,EAAA1jH,EAAA,QACA0jH,EAAA1jH,EAAA,WAEA,OAEA,QAEA,MAAAgF,GACA,KAAAiyH,IAWA,QAAAC,GAAA7P,GACA,QAAA8P,GAAA72G,EAAAlgB,EAAAmzH,GACA,OAAAlM,GACAD,GAAA,KAAAC,EAAA5hH,UAEA,IAAA2a,GAAA,GAAAgzG,IAAA9yG,EAAAlgB,EAAAu2H,EAEA,OADAn5H,GAAA45H,EAAAh3G,GACA,WACA5iB,EAAA65H,EAAAj3G,IAGA,MAAA+2G,GAEA,QAAAG,GAAAt3H,GACA,UAAAA,EACA,KAAAi3H,EAEAH,GAAA92H,OAzDA,KAAAsgB,IAAwCA,MAAA1V,QACxC,KAAAxK,IAA+BA,MAAAwK,QAC/B,KAAA+rH,IAAmCA,MAAA/rH,GAMnC,IAAAqsH,GAAA,uFAEAF,EAAAxO,IAAA,GAAAd,UACAuP,EAAA1O,GAAA,SAAAb,SA2BAL,IAAA,MALAS,GAAA+O,GACAtO,GAAAwO,GAAA,GACAvO,IAAA,GACAA,IAAA,IAEA9iH,UACA,IAAAjI,GAAAmH,KAoBA4yH,GACAjP,GAAAgP,GACA/O,IAAA,GACAA,IAAA,GAKA,OAHA7E,GAAApjG,IACAojG,EAAAtjH,IACAsjH,EAAAiT,GAKAO,EAAA,MAAA52G,EAAAlgB,EAAAu2H,GAHAO,EAAAK,IAYA1D,EAAAh1H,UAAAqI,KAAA,SAAA0P,EAAAC,GAGA,MAAAlS,MAAAuwH,EAAAhuH,KAAA0P,EAAAC,IAKAg9G,EAAAh1H,UAAAqd,MAAA,SAAArF,GACA,MAAAlS,MAAAuC,KAAA,KAAA2P,IAKAg9G,EAAAh1H,UAAAu4H,EAAA,SAAAh3G,GACAzb,KAAAsvH,EAAAt1H,KAAAyhB,GACAzb,KAAA6yH,EAAAp3G,IAKAyzG,EAAAh1H,UAAAw4H,EAAA,SAAAj3G,GACA8qC,GAAAvmD,KAAAsvH,EAAA7zG,IAEAyzG,EAAAh1H,UAAA23H,EAAA,WACA,GAAA3oH,GAAAlJ,IACAA,MAAA8yH,IACAvO,GAAAvkH,KAAAsvH,GACAnxH,QAAA,SAAAsd,GACAvS,EAAA2pH,EAAAp3G,MAGAyzG,EAAAh1H,UAAA44H,EAAA,WACA,UAAA9yH,KAAA2vH,EAAA,CACA,GAAAoD,IAAA,CACA,QAAA7U,EAAAl+G,KAAAohF,IACA,IAAAm9B,IAAAE,QACAwJ,GAAAjoH,KAAA2vH,EAAAxoH,KAAA,KAAAnH,KAAA02D,YACA,MACA,KAAA6nD,IAAA3D,SACA,IAAA2D,IAAAh4C,MAEA0hD,GADAjoH,KAAA4vH,EACAzoH,KAAA,KAAAnH,KAAAuvH,KACA,MACA,SACAwD,GAAA,EAGAA,IACA/yH,KAAA2vH,EAAA,KACA3vH,KAAA4vH,EAAA,QAIAV,EAAAh1H,UAAA24H,EAAA,SAAAp3G,GAEA,OADAyiG,EAAAl+G,KAAAohF,IAEA,IAAAm9B,IAAAH,QACA,IAAAG,IAAAC,OACA,OAAA/iG,EAAArZ,MACA6lH,GAAAxsG,EAAArZ,KAAA+E,KAAAsU,EAAAzb,KAAA02D,YAEA,MACA,KAAA6nD,IAAAE,QACA,OAAAhjG,EAAAC,UACAusG,GAAAxsG,EAAAC,SAAAvU,KAAAsU,KAEA,MACA,KAAA8iG,IAAA3D,SACA,IAAA2D,IAAAh4C,MACA,OAAA9qD,EAAAhgB,OACAwsH,GAAAxsG,EAAAhgB,MAAA0L,KAAAsU,EAAAzb,KAAAuvH,KAEA,MACA,SAEA,OAAA9zG,EAAAhgB,OACAwsH,GAAAxsG,EAAAhgB,MAAA0L,KAAAsU,EAAAzb,KAAAuvH,QAQAL,EAAAh1H,UAAAoK,OAAA,WACAm+G,GAAA,YAAA3hH,UACA,IAAAw8G,GAAAt9G,KAAAohF,IAAA+8B,GAAAK,QACAx+G,KAAAohF,IAAA+8B,GAAAE,OAIA,OAHAf,IACAt9G,KAAAqwH,EAAAlS,GAAAC,SAEAd,GAMA4R,EAAAh1H,UAAA84H,MAAA,WACAvQ,GAAA,WAAA3hH,UACA,IAAAw8G,GAAAt9G,KAAAohF,IAAA+8B,GAAAC,OAIA,OAHAd,IACAt9G,KAAAqwH,EAAAlS,GAAAE,SAEAf,GAOA4R,EAAAh1H,UAAA0vC,OAAA,WACA64E,GAAA,YAAA3hH,UACA,IAAAw8G,GAAAt9G,KAAAohF,IAAA+8B,GAAAC,SACAp+G,KAAAohF,IAAA+8B,GAAAE,OAIA,OAHAf,IACAt9G,KAAAqwH,EAAAlS,GAAAG,WAEAhB,GAEA4R,KCpgBArF,GAAA,WACA,QAAA3iD,GAAAw6C,EAAAlhG,GACAxgB,KAAA0hH,cAEA1hH,KAAAwgB,SADAA,YAAAqhG,IACArhG,EAGAqhG,GAAA0K,YAAA/rG,GA0LA,MAlLA0mD,GAAAhtE,UAAAgb,SAAA,WAEA,MADAutG,IAAA,cAAA3hH,WACA,QAAAd,KAAAwgB,SAAA45F,OAAA,IAAAp6G,KAAAwgB,SAAA2hC,MAEA+kB,EAAAhtE,UAAA+4H,OAAA,SAAAvR,EAAAlhG,GACA,UAAA0mD,GAAAw6C,EAAAlhG,IAEA0mD,EAAAhtE,UAAAknH,SAAA,WACA,MAAAR,OAOA15C,EAAAhtE,UAAAywD,MAAA,SAAAwe,GACAs5C,GAAA,SAAAS,MAAApiH,UACA,IAAAoyH,GAAAvoE,EAAA3qD,KAAAwgB,SAAA2hC,KAAAgnB,GACA3oD,EAAA,GAAAqhG,IAAA7hH,KAAAwgB,SAAA45F,OAAA8Y,EACA,OAAAlzH,MAAAizH,OAAAjzH,KAAA0hH,YAAAlhG,IAEAvmB,OAAAY,eAAAqsE,EAAAhtE,UAAA,UAKAc,IAAA,WACA,GAAAk4H,GAAAzT,EAAAz/G,KAAAwgB,SAAA2hC,KACA,WAAA+wE,EACA,WAEA,IAAA1yG,GAAA,GAAAqhG,IAAA7hH,KAAAwgB,SAAA45F,OAAA8Y,EACA,OAAAlzH,MAAAizH,OAAAjzH,KAAA0hH,YAAAlhG,IAEAzlB,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,QAKAc,IAAA,WACA,GAAAwlB,GAAA,GAAAqhG,IAAA7hH,KAAAwgB,SAAA45F,OAAA,GACA,OAAAp6G,MAAAizH,OAAAjzH,KAAA0hH,YAAAlhG,IAEAzlB,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,UACAc,IAAA,WACA,MAAAgF,MAAAwgB,SAAA45F,QAEAr/G,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,YACAc,IAAA,WACA,MAAAgF,MAAAwgB,SAAA2hC,MAEApnD,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,QACAc,IAAA,WACA,MAAA4kH,GAAA5/G,KAAAwgB,SAAA2hC,OAEApnD,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAqsE,EAAAhtE,UAAA,WACAc,IAAA,WACA,MAAAgF,MAAA0hH,YAAAn4G,WAEAxO,YAAA,EACAD,cAAA,IAQAosE,EAAAhtE,UAAAqpD,IAAA,SAAA7yC,EAAAjP,GAIA,WAHA,KAAAA,IAAkCA,EAAA,MAClCghH,GAAA,OAAAc,KAAAE,IAAA,IAAA3iH,WACAd,KAAAmzH,EAAA,OACA,GAAAlE,IAAAjvH,UAAA0hH,YAAA1hH,KAAAwgB,SAAAxgB,KAAAohH,WAAA,GAAAmF,IAAA71G,GAAAjP,IASAylE,EAAAhtE,UAAAk5H,UAAA,SAAA39D,EAAA4mD,EAAA0J,OACA,KAAA1J,IAAgCA,EAAAM,GAAAC,KAChC6F,GAAA,aACAS,KACAA,GAAAzG,GAAA,GACAgH,IAAA,IACA3iH,WACAd,KAAAmzH,EAAA,YACA,IAAAziH,GAAAssG,EAAAX,EAAA5mD,GACAh0D,EAAA5D,EAAAkoH,EAIA,QAHAjH,EAAAr9G,EAAA,cAAAq9G,EAAApuG,EAAAwwC,eACAz/C,EAAA,YAAAiP,EAAAwwC,aAEA,GAAA+tE,IAAAjvH,UAAA0hH,YAAA1hH,KAAAwgB,SAAAxgB,KAAAohH,WAAA,GAAAmF,IAAA71G,QAAA,GAAAjP,IAMAylE,EAAAhtE,UAAA+O,OAAA,WACAw5G,GAAA,YAAA3hH,WACAd,KAAAmzH,EAAA,SACA,IAAAt6H,GAAAmH,IACA,OAAAA,MAAA0hH,YAAAwP,eAAA3uH,KAAA,SAAA0+F,GACA,GAAAukB,GAAAG,GAAA9sH,EAAA6oH,YAAA7oH,EAAA2nB,SACA,OAAA3nB,GAAA6oH,YAAAwH,YAAA1D,EAAAvkB,GAAAmwB,gBAQAlqD,EAAAhtE,UAAAmrH,YAAA,WACA5C,GAAA,iBAAA3hH,WACAd,KAAAmzH,EAAA,cACA,IAAAt6H,GAAAmH,IACA,OAAAA,MAAA0hH,YAAAwP,eAAA3uH,KAAA,SAAA0+F,GACA,GAAAukB,GAAAH,GAAAxsH,EAAA6oH,YAAA7oH,EAAA2nB,SAAA3nB,EAAAuoH,WACA,OAAAvoH,GAAA6oH,YAAAwH,YAAA1D,EAAAvkB,GAAAmwB,gBAYAlqD,EAAAhtE,UAAAwrH,eAAA,SAAAjkH,GACAghH,GAAA,kBAAAgB,MAAA3iH,WACAd,KAAAmzH,EAAA,iBACA,IAAAt6H,GAAAmH,IACA,OAAAA,MAAA0hH,YAAAwP,eAAA3uH,KAAA,SAAA0+F,GACA,GAAAukB,GAAAE,GAAA7sH,EAAA6oH,YAAA7oH,EAAA2nB,SAAA/e,EAAA5I,EAAAuoH,WACA,OAAAvoH,GAAA6oH,YAAAwH,YAAA1D,EAAAvkB,GAAAmwB,gBAOAlqD,EAAAhtE,UAAAm5H,eAAA,WAGA,MAFA5Q,IAAA,oBAAA3hH,WACAd,KAAAmzH,EAAA,kBACAnzH,KAAAqlH,cAAA9iH,KAAA,SAAAd,GACA,GAAAqlC,GAAArlC,EAAA,eACA,IAAAq9G,EAAAh4E,GACA,MAAAA,EAGA,MAAAu0E,QAIAn0C,EAAAhtE,UAAAi5H,EAAA,SAAAz4H,GACA,QAAAsF,KAAAwgB,SAAA2hC,KACA,KAAA+5D,GAAAxhH,IAGAwsE,KCpOAosD,GAAA,WACA,QAAAC,GAAA93H,GACAuE,KAAAuwH,EAAA1R,EAAApjH,GAUA,MAPA83H,GAAAr5H,UAAAk3H,WAAA,WACA,MAAApxH,MAAAuwH,GAGAgD,EAAAr5H,UAAA0vC,OAAA,SAAA4pF,OACA,KAAAA,IAAmCA,GAAA,IAEnCD,KCEAE,GAAA,WACA,QAAAC,KACA1zH,KAAA2zH,KACA3zH,KAAA4zH,GAAA1J,GA4BA,MArBAwJ,GAAAx5H,UAAA25H,WAAA,SAAA9yH,GAKA,QAAA+yH,WACAj7H,GAAA86H,EAAAtgH,GALA,GAAAA,GAAArT,KAAA4zH,EACA5zH,MAAA4zH,KACA5zH,KAAA2zH,EAAAtgH,GAAAtS,CACA,IAAAlI,GAAAmH,IAIAe,GAAAqwH,aAAA7uH,KAAAuxH,MAKAJ,EAAAx5H,UAAA+/C,MAAA,WACA97C,EAAA6B,KAAA2zH,EAAA,SAAA/yH,EAAAkS,GACAA,GACAA,EAAA82B,QAAA,KAGA5pC,KAAA2zH,MAEAD,KCtCAK,GAAA,WACA,QAAAC,GAAAnuH,EAAAouH,EAAAC,EAAA3qH,EAAA4/G,GAIA,GAHAnpH,KAAAm0H,GAAA,KACAn0H,KAAAo0H,IAAA,EACAp0H,KAAA49F,GAAA/3F,EACA,OAAA7F,KAAA49F,GAAA,CACA,GAAA53F,GAAAhG,KAAA49F,GAAA53F,OACA84G,GAAA94G,KACAhG,KAAAm0H,GAAAH,EAAAK,GAAAruH,IAGAhG,KAAAs0H,GAAAL,EACAj0H,KAAAu0H,GAAAL,EACAl0H,KAAAw0H,GAAArL,EACAnpH,KAAAy0H,GAAAlrH,EACAvJ,KAAA00H,GAAA1K,GACAhqH,KAAA20H,GAAA1K,GACAjqH,KAAA40H,GAAA,GAAAnB,IAsFA,MApFAO,GAAAK,GAAA,SAAAQ,GACA,GAAAxI,GAAAwI,EAAA,mBACA,cAAAxI,EACA,KAEAxK,GAAAuK,mBAAAC,GACAjS,QAEA4Z,EAAA95H,UAAAg3H,aAAA,WAGA,cAAAlxH,KAAA49F,IACAkhB,EAAA9+G,KAAA49F,GAAA/1F,WACAi3G,EAAA9+G,KAAA49F,GAAA/1F,SAAAY,UACAzI,KAAA49F,GAAA/1F,SAAAY,WAAAlG,KAAA,SAAAu/C,GACA,cAAAA,EACAA,EAAAnrB,YAGA,MAEa,SAAAm+F,GACb,cAIAlW,EAAA,OAGAoV,EAAA95H,UAAAkgH,OAAA,WACA,GAAAp6G,KAAAo0H,GACA,KAAApY,IAGA,OAAAh8G,MAAAm0H,IAOAH,EAAA95H,UAAAqP,QAAA,WACA,MAAAvJ,MAAAy0H,IASAT,EAAA95H,UAAA4nH,qBAAA,SAAAF,GACA,MAAA5hH,MAAAs0H,GAAAt0H,KAAA4hH,IAEAoS,EAAA95H,UAAAgvH,YAAA,SAAA1D,EAAAvkB,GACA,GAAAjhG,KAAAo0H,GAMA,UAAAd,IAAAtX,IALA,IAAA17E,GAAAtgC,KAAAu0H,GAAA/O,EAAAvkB,EAAAjhG,KAAAw0H,GAEA,OADAx0H,MAAA40H,GAAAf,WAAAvzF,GACAA,GASA0zF,EAAA95H,UAAA66H,UAAA,WACA/0H,KAAAo0H,IAAA,EACAp0H,KAAA49F,GAAA,KACA59F,KAAA40H,GAAA36E,SAEA+5E,EAAA95H,UAAAssH,mBAAA,WACA,MAAAxmH,MAAA20H,IAEAX,EAAA95H,UAAA86H,sBAAA,SAAArrE,GACA3pD,KAAA20H,GAAAhrE,GAEAqqE,EAAA95H,UAAAqrH,sBAAA,WACA,MAAAvlH,MAAA00H,IAEAV,EAAA95H,UAAA+6H,yBAAA,SAAAtrE,GACA3pD,KAAA00H,GAAA/qE,GAEAqqE,KfpFA5K,GAAA,WACA,QAAA8L,GAAApuF,EAAA3rB,EAAA+gB,EAAAx5B,EAAAkjH,EAAAyD,EAAA1gH,EAAAwsH,EAAA3pH,EAAAw8G,EAAAmB,GACAnpH,KAAAo1H,GAAA,KACAp1H,KAAAq1H,GAAA,KACAr1H,KAAA2vH,EAAA,KACA3vH,KAAA4vH,EAAA,KACA5vH,KAAAs1H,IAAA,EACAt1H,KAAAu1H,IAAA,EACAv1H,KAAAw1H,GAAA1uF,EACA9mC,KAAAy1H,GAAAt6G,EACAnb,KAAA01H,GAAAx5F,EACAl8B,KAAA21H,GAAAjzH,EACA1C,KAAA41H,GAAAhQ,EAAA5yG,QACAhT,KAAA61H,GAAAxM,EAAAr2G,QACAhT,KAAAytF,GAAA9kF,EACA3I,KAAA81H,GAAAX,EACAn1H,KAAA+1H,GAAA/N,EACAhoH,KAAAg2H,GAAAxqH,EACAxL,KAAAw0H,GAAArL,CACA,IAAAtwH,GAAAmH,IACAA,MAAAuwH,EAAA7R,EAAA,SAAA18G,EAAAC,GACApJ,EAAA82H,EAAA3tH,EACAnJ,EAAA+2H,EAAA3tH,EACApJ,EAAA0oF,MA+HA,MAzHA2zC,GAAAh7H,UAAAqnF,EAAA,WAEA,QAAA00C,GAAAC,EAAA/N,GAOA,QAAAgO,GAAAC,GACA,GAAA1F,GAAA0F,EAAA1F,OACAhJ,EAAA0O,EAAAC,iBAAAD,EAAA1O,OAAA,CACA,QAAA7uH,EAAAk9H,IACAl9H,EAAAk9H,GAAArF,EAAAhJ,GAVA,GAAAS,EAEA,WADA+N,IAAA,KAAAI,KAAA,WAGA,IAAAp1B,GAAAroG,EAAA27H,GAAAtI,aACArzH,GAAAu8H,GAAAl0B,EAQA,OAAAroG,EAAAk9H,IACA70B,EAAA4qB,0BAAAqK,GAEAj1B,EACAlkE,KAAAnkC,EAAA28H,GAAA38H,EAAA48H,GAAA58H,EAAA88H,GAAA98H,EAAA68H,IACAnzH,KAAA,SAAA2+F,GACA,OAAAroG,EAAAk9H,IACA70B,EAAA8qB,6BAAAmK,GAEAt9H,EAAAu8H,GAAA,KACAl0B,GACA,IAAAq1B,GAAAr1B,EAAA0qB,iBAAA7B,GAAAuB,SACA5wF,EAAAwmE,EAAA8jB,WACA,KAAAuR,GAAA19H,EAAA29H,GAAA97F,GAAA,CACA,GAAA+7F,GAAAv1B,EAAA0qB,iBAAA7B,GAAAyB,KAEA,YADA0K,IAAA,KAAAI,KAAA,OAAAG,IAGA,GAAAC,GAAArS,GAAAxrH,EAAA+8H,GAAAl7F,EACAw7F,IAAA,KAAAI,IAAAI,EAAAx1B,MAOA,QAAAy1B,GAAAC,EAAAl8F,GACA,GAAA14B,GAAAnJ,EAAA82H,EACA1tH,EAAApJ,EAAA+2H,EACA1uB,EAAAxmE,EAAAwmE,GACA,IAAAxmE,EAAAm8F,eACA,IACA,GAAAj9H,GAAAf,EAAA40F,GAAAyT,IAAA2qB,kBACA9M,GAAAnlH,GACAoI,EAAApI,GAGAoI,IAGA,MAAA3B,GACA4B,EAAA5B,OAIA,WAAA6gG,EAAA,CACA,GAAA3lG,GAAAgzC,GACAhzC,GAAA0pH,sBAAA/jB,EAAA2qB,mBAEA5pH,EADApJ,EAAAi9H,GACAj9H,EAAAi9H,GAAA50B,EAAA3lG,GAGAA,OAIA,IAAAm/B,EAAAytF,SAAA,CACA,GAAA5sH,GAAA1C,EAAA08H,GACAvZ,IACArB,GACA14G,GAAA1G,OAEA,CACA,GAAAA,GAAAk/G,GACAx4G,GAAA1G,IA/EA,GAAA1C,GAAAmH,IAoFAA,MAAAs1H,GACAqB,GAAA,KAAAL,KAAA,YAGAt2H,KAAAq1H,GAAAjjF,GAAA6jF,EAAAU,EAAA32H,KAAAg2H,KAIAd,EAAAh7H,UAAAk3H,WAAA,WACA,MAAApxH,MAAAuwH,GAGA2E,EAAAh7H,UAAA0vC,OAAA,SAAA4pF,GACAxzH,KAAAs1H,IAAA,EACAt1H,KAAAu1H,GAAA/B,IAAA,EACA,OAAAxzH,KAAAq1H,IACAjlF,GAAApwC,KAAAq1H,IAEA,OAAAr1H,KAAAo1H,IACAp1H,KAAAo1H,GAAAn4F,SAGAi4F,EAAAh7H,UAAAs8H,GAAA,SAAA97F,GAGA,GAAAo8F,GAAAp8F,GAAA,KAAAA,EAAA,IACAq8F,GAEA,IAEA,KAEAC,EAAA3S,GAAA0S,EAAAr8F,GACAu8F,EAAA5S,GAAArkH,KAAA61H,GAAAn7F,EACA,OAAAo8F,IAAAE,GAAAC,GAEA/B,KAOAoB,GAAA,WACA,QAAAA,GAAAO,EAAA31B,EAAAg2B,GACAl3H,KAAA62H,iBACA72H,KAAAkhG,MACAlhG,KAAAmoH,WAAA+O,EAEA,MAAAZ,MgBxKA9M,GAAA,WACA,QAAA2N,GAAAtxH,EAAAsjH,EAAAriF,GAEA,QAAAmtF,GAAAvS,EAAAE,GACA,UAAAiI,IAAAnI,EAAAE,GAIA,GANA5hH,KAAAm0H,GAAA,KAIAn0H,KAAA6vH,EAAA,GAAAkE,IAAAluH,EAAAouH,EAAA/K,GAAAlpH,KAAAmpH,GACAnpH,KAAA49F,GAAA/3F,EACA,MAAAihC,EACA9mC,KAAAm0H,GAAAtS,GAAAuK,mBAAAtlF,OAEA,CACA,GAAAswF,GAAAp3H,KAAA6vH,EAAAzV,QACA,OAAAgd,IACAp3H,KAAAm0H,GAAA,GAAAtS,IAAAuV,EAAA,KAGAp3H,KAAAq3H,GAAA,GAAAC,IAAAt3H,MA+EA,MAzEAm3H,GAAAj9H,UAAA2Z,IAAA,SAAAsuC,GACA,QAAA2gE,GAAA3gE,GACA,qBAAA1qC,KAAA0qC,GACA,kEAIA,GADAsgE,GAAA,OAAAS,GAAAJ,GAAA,IAAAhiH,WACA,MAAAd,KAAAm0H,GACA,KAAA1pH,OAAA,iDAEA,IAAAoJ,GAAA,GAAAg2G,IAAA7pH,KAAA6vH,EAAA7vH,KAAAm0H,GACA,cAAAhyE,EACAtuC,EAAA82C,MAAAxI,GAGAtuC,GAOAsjH,EAAAj9H,UAAAqzE,WAAA,SAAAzmC,GACA,QAAAg8E,GAAAznH,GACA,sBAAAoc,KAAApc,GACA,+DAEA,KACAwmH,GAAA0K,YAAAlxH,GAEA,MAAAgF,GACA,wDAIA,MADAoiH,IAAA,cAAAS,GAAAJ,GAAA,IAAAhiH,WACA,GAAA+oH,IAAA7pH,KAAA6vH,EAAA/oF,IAEA7sC,OAAAY,eAAAs8H,EAAAj9H,UAAA,sBACAc,IAAA,WACA,MAAAgF,MAAA6vH,EAAArJ,sBAEAzrH,YAAA,EACAD,cAAA,IAEAq8H,EAAAj9H,UAAA86H,sBAAA,SAAArrE,GACA84D,GAAA,yBAAAiB,MAAA5iH,WACAd,KAAA6vH,EAAAmF,sBAAArrE,IAEA1vD,OAAAY,eAAAs8H,EAAAj9H,UAAA,yBACAc,IAAA,WACA,MAAAgF,MAAA6vH,EAAAtK,yBAEAxqH,YAAA,EACAD,cAAA,IAEAq8H,EAAAj9H,UAAA+6H,yBAAA,SAAAtrE,GACA84D,GAAA,4BAAAiB,MAAA5iH,WACAd,KAAA6vH,EAAAoF,yBAAAtrE,IAEA1vD,OAAAY,eAAAs8H,EAAAj9H,UAAA,OACAc,IAAA,WACA,MAAAgF,MAAA49F,IAEA7iG,YAAA,EACAD,cAAA,IAEAb,OAAAY,eAAAs8H,EAAAj9H,UAAA,YACAc,IAAA,WACA,MAAAgF,MAAAq3H,IAEAt8H,YAAA,EACAD,cAAA,IAEAq8H,KAMAG,GAAA,WACA,QAAAC,GAAAhuH,GACAvJ,KAAAy0H,GAAAlrH,EAUA,MAJAguH,GAAAr9H,UAAA+O,OAAA,WAEA,MADAjJ,MAAAy0H,GAAA5E,EAAAkF,YACAnW,MAAA34G,KAEAsxH,If7IA33H,GAAA,gBAAA8pH,EAyBA,IAAAI,IAAA,SAiBAJ,IAAAhQ,GAAA,YnBmoHG,MACO,MAAMj+G,GACN,KAAUgP,OACR","file":"firebase.js","sourcesContent":["/*!\n * @license Firebase v4.12.1\n * Build: rev-5cfbafd\n * Terms: https://firebase.google.com/terms/\n */\nvar firebase = (function() {\n var window = typeof window === 'undefined' ? self : window;\n return /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonpFirebase\"];\n/******/ \twindow[\"webpackJsonpFirebase\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t6: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 59);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar assert_1 = __webpack_require__(30);\nexports.assert = assert_1.assert;\nexports.assertionError = assert_1.assertionError;\nvar crypt_1 = __webpack_require__(31);\nexports.base64 = crypt_1.base64;\nexports.base64Decode = crypt_1.base64Decode;\nexports.base64Encode = crypt_1.base64Encode;\nvar constants_1 = __webpack_require__(21);\nexports.CONSTANTS = constants_1.CONSTANTS;\nvar deepCopy_1 = __webpack_require__(67);\nexports.deepCopy = deepCopy_1.deepCopy;\nexports.deepExtend = deepCopy_1.deepExtend;\nexports.patchProperty = deepCopy_1.patchProperty;\nvar deferred_1 = __webpack_require__(68);\nexports.Deferred = deferred_1.Deferred;\nvar environment_1 = __webpack_require__(69);\nexports.getUA = environment_1.getUA;\nexports.isMobileCordova = environment_1.isMobileCordova;\nexports.isNodeSdk = environment_1.isNodeSdk;\nexports.isReactNative = environment_1.isReactNative;\nvar errors_1 = __webpack_require__(70);\nexports.ErrorFactory = errors_1.ErrorFactory;\nexports.FirebaseError = errors_1.FirebaseError;\nexports.patchCapture = errors_1.patchCapture;\nvar json_1 = __webpack_require__(32);\nexports.jsonEval = json_1.jsonEval;\nexports.stringify = json_1.stringify;\nvar jwt_1 = __webpack_require__(71);\nexports.decode = jwt_1.decode;\nexports.isAdmin = jwt_1.isAdmin;\nexports.issuedAtTime = jwt_1.issuedAtTime;\nexports.isValidFormat = jwt_1.isValidFormat;\nexports.isValidTimestamp = jwt_1.isValidTimestamp;\nvar obj_1 = __webpack_require__(33);\nexports.clone = obj_1.clone;\nexports.contains = obj_1.contains;\nexports.every = obj_1.every;\nexports.extend = obj_1.extend;\nexports.findKey = obj_1.findKey;\nexports.findValue = obj_1.findValue;\nexports.forEach = obj_1.forEach;\nexports.getAnyKey = obj_1.getAnyKey;\nexports.getCount = obj_1.getCount;\nexports.getValues = obj_1.getValues;\nexports.isEmpty = obj_1.isEmpty;\nexports.isNonNullObject = obj_1.isNonNullObject;\nexports.map = obj_1.map;\nexports.safeGet = obj_1.safeGet;\nvar query_1 = __webpack_require__(72);\nexports.querystring = query_1.querystring;\nexports.querystringDecode = query_1.querystringDecode;\nvar sha1_1 = __webpack_require__(73);\nexports.Sha1 = sha1_1.Sha1;\nvar subscribe_1 = __webpack_require__(75);\nexports.async = subscribe_1.async;\nexports.createSubscribe = subscribe_1.createSubscribe;\nvar validation_1 = __webpack_require__(76);\nexports.errorPrefix = validation_1.errorPrefix;\nexports.validateArgCount = validation_1.validateArgCount;\nexports.validateCallback = validation_1.validateCallback;\nexports.validateContextObject = validation_1.validateContextObject;\nexports.validateNamespace = validation_1.validateNamespace;\nvar utf8_1 = __webpack_require__(77);\nexports.stringLength = utf8_1.stringLength;\nexports.stringToByteArray = utf8_1.stringToByteArray;\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 1 */,\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (immutable) */ __webpack_exports__[\"__extends\"] = __extends;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (immutable) */ __webpack_exports__[\"__rest\"] = __rest;\n/* harmony export (immutable) */ __webpack_exports__[\"__decorate\"] = __decorate;\n/* harmony export (immutable) */ __webpack_exports__[\"__param\"] = __param;\n/* harmony export (immutable) */ __webpack_exports__[\"__metadata\"] = __metadata;\n/* harmony export (immutable) */ __webpack_exports__[\"__awaiter\"] = __awaiter;\n/* harmony export (immutable) */ __webpack_exports__[\"__generator\"] = __generator;\n/* harmony export (immutable) */ __webpack_exports__[\"__exportStar\"] = __exportStar;\n/* harmony export (immutable) */ __webpack_exports__[\"__values\"] = __values;\n/* harmony export (immutable) */ __webpack_exports__[\"__read\"] = __read;\n/* harmony export (immutable) */ __webpack_exports__[\"__spread\"] = __spread;\n/* harmony export (immutable) */ __webpack_exports__[\"__await\"] = __await;\n/* harmony export (immutable) */ __webpack_exports__[\"__asyncGenerator\"] = __asyncGenerator;\n/* harmony export (immutable) */ __webpack_exports__[\"__asyncDelegator\"] = __asyncDelegator;\n/* harmony export (immutable) */ __webpack_exports__[\"__asyncValues\"] = __asyncValues;\n/* harmony export (immutable) */ __webpack_exports__[\"__makeTemplateObject\"] = __makeTemplateObject;\n/* harmony export (immutable) */ __webpack_exports__[\"__importStar\"] = __importStar;\n/* harmony export (immutable) */ __webpack_exports__[\"__importDefault\"] = __importDefault;\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nfunction __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\n\n/***/ }),\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */,\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../util/dist/cjs/index.js\nvar cjs = __webpack_require__(0);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n\n// CONCATENATED MODULE: ../app/dist/esm/src/firebaseApp.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar contains = function (obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\n// An array to capture listeners before the true auth functions\n// exist\nvar tokenListeners = [];\n/**\n * Global context object for a collection of services using\n * a shared authentication state.\n */\nvar firebaseApp_FirebaseAppImpl = /** @class */ (function () {\n function FirebaseAppImpl(options, name, firebase_) {\n this.firebase_ = firebase_;\n this.isDeleted_ = false;\n this.services_ = {};\n this.name_ = name;\n this.options_ = Object(cjs[\"deepCopy\"])(options);\n this.INTERNAL = {\n getUid: function () { return null; },\n getToken: function () { return Promise.resolve(null); },\n addAuthTokenListener: function (callback) {\n tokenListeners.push(callback);\n // Make sure callback is called, asynchronously, in the absence of the auth module\n setTimeout(function () { return callback(null); }, 0);\n },\n removeAuthTokenListener: function (callback) {\n tokenListeners = tokenListeners.filter(function (listener) { return listener !== callback; });\n }\n };\n }\n Object.defineProperty(FirebaseAppImpl.prototype, \"name\", {\n get: function () {\n this.checkDestroyed_();\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseAppImpl.prototype, \"options\", {\n get: function () {\n this.checkDestroyed_();\n return this.options_;\n },\n enumerable: true,\n configurable: true\n });\n FirebaseAppImpl.prototype.delete = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this.checkDestroyed_();\n resolve();\n })\n .then(function () {\n _this.firebase_.INTERNAL.removeApp(_this.name_);\n var services = [];\n Object.keys(_this.services_).forEach(function (serviceKey) {\n Object.keys(_this.services_[serviceKey]).forEach(function (instanceKey) {\n services.push(_this.services_[serviceKey][instanceKey]);\n });\n });\n return Promise.all(services.map(function (service) {\n return service.INTERNAL.delete();\n }));\n })\n .then(function () {\n _this.isDeleted_ = true;\n _this.services_ = {};\n });\n };\n /**\n * Return a service instance associated with this app (creating it\n * on demand), identified by the passed instanceIdentifier.\n *\n * NOTE: Currently storage is the only one that is leveraging this\n * functionality. They invoke it by calling:\n *\n * ```javascript\n * firebase.app().storage('STORAGE BUCKET ID')\n * ```\n *\n * The service name is passed to this already\n * @internal\n */\n FirebaseAppImpl.prototype._getService = function (name, instanceIdentifier) {\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\n this.checkDestroyed_();\n if (!this.services_[name]) {\n this.services_[name] = {};\n }\n if (!this.services_[name][instanceIdentifier]) {\n /**\n * If a custom instance has been defined (i.e. not '[DEFAULT]')\n * then we will pass that instance on, otherwise we pass `null`\n */\n var instanceSpecifier = instanceIdentifier !== DEFAULT_ENTRY_NAME\n ? instanceIdentifier\n : undefined;\n var service = this.firebase_.INTERNAL.factories[name](this, this.extendApp.bind(this), instanceSpecifier);\n this.services_[name][instanceIdentifier] = service;\n }\n return this.services_[name][instanceIdentifier];\n };\n /**\n * Callback function used to extend an App instance at the time\n * of service instance creation.\n */\n FirebaseAppImpl.prototype.extendApp = function (props) {\n var _this = this;\n // Copy the object onto the FirebaseAppImpl prototype\n Object(cjs[\"deepExtend\"])(this, props);\n /**\n * If the app has overwritten the addAuthTokenListener stub, forward\n * the active token listeners on to the true fxn.\n *\n * TODO: This function is required due to our current module\n * structure. Once we are able to rely strictly upon a single module\n * implementation, this code should be refactored and Auth should\n * provide these stubs and the upgrade logic\n */\n if (props.INTERNAL && props.INTERNAL.addAuthTokenListener) {\n tokenListeners.forEach(function (listener) {\n _this.INTERNAL.addAuthTokenListener(listener);\n });\n tokenListeners = [];\n }\n };\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n FirebaseAppImpl.prototype.checkDestroyed_ = function () {\n if (this.isDeleted_) {\n error('app-deleted', { name: this.name_ });\n }\n };\n return FirebaseAppImpl;\n}());\n// Prevent dead-code elimination of these methods w/o invalid property\n// copying.\n(firebaseApp_FirebaseAppImpl.prototype.name && firebaseApp_FirebaseAppImpl.prototype.options) ||\n firebaseApp_FirebaseAppImpl.prototype.delete ||\n console.log('dc');\n/**\n * Return a firebase namespace object.\n *\n * In production, this will be called exactly once and the result\n * assigned to the 'firebase' global. It may be called multiple times\n * in unit tests.\n */\nfunction createFirebaseNamespace() {\n var apps_ = {};\n var factories = {};\n var appHooks = {};\n // A namespace is a plain JavaScript Object.\n var namespace = {\n // Hack to prevent Babel from modifying the object returned\n // as the firebase namespace.\n __esModule: true,\n initializeApp: initializeApp,\n app: app,\n apps: null,\n Promise: Promise,\n SDK_VERSION: '4.12.1',\n INTERNAL: {\n registerService: registerService,\n createFirebaseNamespace: createFirebaseNamespace,\n extendNamespace: extendNamespace,\n createSubscribe: cjs[\"createSubscribe\"],\n ErrorFactory: cjs[\"ErrorFactory\"],\n removeApp: removeApp,\n factories: factories,\n useAsService: useAsService,\n Promise: Promise,\n deepExtend: cjs[\"deepExtend\"]\n }\n };\n // Inject a circular default export to allow Babel users who were previously\n // using:\n //\n // import firebase from 'firebase';\n // which becomes: var firebase = require('firebase').default;\n //\n // instead of\n //\n // import * as firebase from 'firebase';\n // which becomes: var firebase = require('firebase');\n Object(cjs[\"patchProperty\"])(namespace, 'default', namespace);\n // firebase.apps is a read-only getter.\n Object.defineProperty(namespace, 'apps', {\n get: getApps\n });\n /**\n * Called by App.delete() - but before any services associated with the App\n * are deleted.\n */\n function removeApp(name) {\n var app = apps_[name];\n callAppHooks(app, 'delete');\n delete apps_[name];\n }\n /**\n * Get the App object for a given name (or DEFAULT).\n */\n function app(name) {\n name = name || DEFAULT_ENTRY_NAME;\n if (!contains(apps_, name)) {\n error('no-app', { name: name });\n }\n return apps_[name];\n }\n Object(cjs[\"patchProperty\"])(app, 'App', firebaseApp_FirebaseAppImpl);\n /**\n * Create a new App instance (name must be unique).\n */\n function initializeApp(options, name) {\n if (name === undefined) {\n name = DEFAULT_ENTRY_NAME;\n }\n else {\n if (typeof name !== 'string' || name === '') {\n error('bad-app-name', { name: name + '' });\n }\n }\n if (contains(apps_, name)) {\n error('duplicate-app', { name: name });\n }\n var app = new firebaseApp_FirebaseAppImpl(options, name, namespace);\n apps_[name] = app;\n callAppHooks(app, 'create');\n return app;\n }\n /*\n * Return an array of all the non-deleted FirebaseApps.\n */\n function getApps() {\n // Make a copy so caller cannot mutate the apps list.\n return Object.keys(apps_).map(function (name) { return apps_[name]; });\n }\n /*\n * Register a Firebase Service.\n *\n * firebase.INTERNAL.registerService()\n *\n * TODO: Implement serviceProperties.\n */\n function registerService(name, createService, serviceProperties, appHook, allowMultipleInstances) {\n // Cannot re-register a service that already exists\n if (factories[name]) {\n error('duplicate-service', { name: name });\n }\n // Capture the service factory for later service instantiation\n factories[name] = createService;\n // Capture the appHook, if passed\n if (appHook) {\n appHooks[name] = appHook;\n // Run the **new** app hook on all existing apps\n getApps().forEach(function (app) {\n appHook('create', app);\n });\n }\n // The Service namespace is an accessor function ...\n var serviceNamespace = function (appArg) {\n if (appArg === void 0) { appArg = app(); }\n if (typeof appArg[name] !== 'function') {\n // Invalid argument.\n // This happens in the following case: firebase.storage('gs:/')\n error('invalid-app-argument', { name: name });\n }\n // Forward service instance lookup to the FirebaseApp.\n return appArg[name]();\n };\n // ... and a container for service-level properties.\n if (serviceProperties !== undefined) {\n Object(cjs[\"deepExtend\"])(serviceNamespace, serviceProperties);\n }\n // Monkey-patch the serviceNamespace onto the firebase namespace\n namespace[name] = serviceNamespace;\n // Patch the FirebaseAppImpl prototype\n firebaseApp_FirebaseAppImpl.prototype[name] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var serviceFxn = this._getService.bind(this, name);\n return serviceFxn.apply(this, allowMultipleInstances ? args : []);\n };\n return serviceNamespace;\n }\n /**\n * Patch the top-level firebase namespace with additional properties.\n *\n * firebase.INTERNAL.extendNamespace()\n */\n function extendNamespace(props) {\n Object(cjs[\"deepExtend\"])(namespace, props);\n }\n function callAppHooks(app, eventName) {\n Object.keys(factories).forEach(function (serviceName) {\n // Ignore virtual services\n var factoryName = useAsService(app, serviceName);\n if (factoryName === null) {\n return;\n }\n if (appHooks[factoryName]) {\n appHooks[factoryName](eventName, app);\n }\n });\n }\n // Map the requested service to a registered service name\n // (used to map auth to serverAuth service when needed).\n function useAsService(app, name) {\n if (name === 'serverAuth') {\n return null;\n }\n var useService = name;\n var options = app.options;\n return useService;\n }\n return namespace;\n}\nfunction error(code, args) {\n throw appErrors.create(code, args);\n}\n// TypeScript does not support non-string indexes!\n// let errors: {[code: AppError: string} = {\nvar errors = {\n 'no-app': \"No Firebase App '{$name}' has been created - \" +\n 'call Firebase App.initializeApp()',\n 'bad-app-name': \"Illegal App name: '{$name}\",\n 'duplicate-app': \"Firebase App named '{$name}' already exists\",\n 'app-deleted': \"Firebase App named '{$name}' already deleted\",\n 'duplicate-service': \"Firebase service named '{$name}' already registered\",\n 'sa-not-supported': 'Initializing the Firebase SDK with a service ' +\n 'account is only allowed in a Node.js environment. On client ' +\n 'devices, you should instead initialize the SDK with an api key and ' +\n 'auth domain',\n 'invalid-app-argument': 'firebase.{$name}() takes either no argument or a ' +\n 'Firebase App instance.'\n};\nvar appErrors = new cjs[\"ErrorFactory\"]('app', 'Firebase', errors);\n\n\n//# sourceMappingURL=firebaseApp.js.map\n\n// CONCATENATED MODULE: ../app/dist/esm/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"firebase\", function() { return firebase; });\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar firebase = createFirebaseNamespace();\n/* harmony default export */ var esm = __webpack_exports__[\"default\"] = (firebase);\n\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\nexports.CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n\n//# sourceMappingURL=constants.js.map\n\n\n/***/ }),\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(21);\n/**\n * Throws an error if the provided assertion is falsy\n * @param {*} assertion The assertion to be tested for falsiness\n * @param {!string} message The message to display if the check fails\n */\nexports.assert = function (assertion, message) {\n if (!assertion) {\n throw exports.assertionError(message);\n }\n};\n/**\n * Returns an Error object suitable for throwing.\n * @param {string} message\n * @return {!Error}\n */\nexports.assertionError = function (message) {\n return new Error('Firebase Database (' +\n constants_1.CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message);\n};\n\n//# sourceMappingURL=assert.js.map\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stringToByteArray = function (str) {\n // TODO(user): Use native implementations if/when available\n var out = [], p = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) == 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) == 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param {Array} bytes Array of numbers representing characters.\n * @return {string} Stringification of the array.\n */\nvar byteArrayToString = function (bytes) {\n // TODO(user): Use native implementations if/when available\n var out = [], pos = 0, c = 0;\n while (pos < bytes.length) {\n var c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n }\n else if (c1 > 191 && c1 < 224) {\n var c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n }\n else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n var c2 = bytes[pos++];\n var c3 = bytes[pos++];\n var c4 = bytes[pos++];\n var u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n }\n else {\n var c2 = bytes[pos++];\n var c3 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n }\n }\n return out.join('');\n};\n// Static lookup maps, lazily populated by init_()\nexports.base64 = {\n /**\n * Maps bytes to characters.\n * @type {Object}\n * @private\n */\n byteToCharMap_: null,\n /**\n * Maps characters to bytes.\n * @type {Object}\n * @private\n */\n charToByteMap_: null,\n /**\n * Maps bytes to websafe characters.\n * @type {Object}\n * @private\n */\n byteToCharMapWebSafe_: null,\n /**\n * Maps websafe characters to bytes.\n * @type {Object}\n * @private\n */\n charToByteMapWebSafe_: null,\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n * @type {string}\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n * @type {string}\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n /**\n * Our websafe alphabet.\n * @type {string}\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n * @type {boolean}\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n /**\n * Base64-encode an array of bytes.\n *\n * @param {Array|Uint8Array} input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param {boolean=} opt_webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return {string} The base64 encoded string.\n */\n encodeByteArray: function (input, opt_webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n this.init_();\n var byteToCharMap = opt_webSafe\n ? this.byteToCharMapWebSafe_\n : this.byteToCharMap_;\n var output = [];\n for (var i = 0; i < input.length; i += 3) {\n var byte1 = input[i];\n var haveByte2 = i + 1 < input.length;\n var byte2 = haveByte2 ? input[i + 1] : 0;\n var haveByte3 = i + 2 < input.length;\n var byte3 = haveByte3 ? input[i + 2] : 0;\n var outByte1 = byte1 >> 2;\n var outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n var outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n var outByte4 = byte3 & 0x3f;\n if (!haveByte3) {\n outByte4 = 64;\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n return output.join('');\n },\n /**\n * Base64-encode a string.\n *\n * @param {string} input A string to encode.\n * @param {boolean=} opt_webSafe If true, we should use the\n * alternative alphabet.\n * @return {string} The base64 encoded string.\n */\n encodeString: function (input, opt_webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray(input), opt_webSafe);\n },\n /**\n * Base64-decode a string.\n *\n * @param {string} input to decode.\n * @param {boolean=} opt_webSafe True if we should use the\n * alternative alphabet.\n * @return {string} string representing the decoded value.\n */\n decodeString: function (input, opt_webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, opt_webSafe));\n },\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param {string} input Input to decode.\n * @param {boolean=} opt_webSafe True if we should use the web-safe alphabet.\n * @return {!Array} bytes representing the decoded value.\n */\n decodeStringToByteArray: function (input, opt_webSafe) {\n this.init_();\n var charToByteMap = opt_webSafe\n ? this.charToByteMapWebSafe_\n : this.charToByteMap_;\n var output = [];\n for (var i = 0; i < input.length;) {\n var byte1 = charToByteMap[input.charAt(i++)];\n var haveByte2 = i < input.length;\n var byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n var haveByte3 = i < input.length;\n var byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n var haveByte4 = i < input.length;\n var byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw Error();\n }\n var outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n if (byte3 != 64) {\n var outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n if (byte4 != 64) {\n var outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n return output;\n },\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_: function () {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n // We want quick mappings back and forth, so we precompute two maps.\n for (var i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n/**\n * URL-safe base64 encoding\n * @param {!string} str\n * @return {!string}\n */\nexports.base64Encode = function (str) {\n var utf8Bytes = stringToByteArray(str);\n return exports.base64.encodeByteArray(utf8Bytes, true);\n};\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param {string} str To be decoded\n * @return {?string} Decoded result, if possible\n */\nexports.base64Decode = function (str) {\n try {\n return exports.base64.decodeString(str, true);\n }\n catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n\n//# sourceMappingURL=crypt.js.map\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\nexports.jsonEval = jsonEval;\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data Javascript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nfunction stringify(data) {\n return JSON.stringify(data);\n}\nexports.stringify = stringify;\n\n//# sourceMappingURL=json.js.map\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// See http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/\nexports.contains = function (obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\nexports.safeGet = function (obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n return obj[key];\n // else return undefined.\n};\n/**\n * Enumerates the keys/values in an object, excluding keys defined on the prototype.\n *\n * @param {?Object.} obj Object to enumerate.\n * @param {!function(K, V)} fn Function to call for each key and value.\n * @template K,V\n */\nexports.forEach = function (obj, fn) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn(key, obj[key]);\n }\n }\n};\n/**\n * Copies all the (own) properties from one object to another.\n * @param {!Object} objTo\n * @param {!Object} objFrom\n * @return {!Object} objTo\n */\nexports.extend = function (objTo, objFrom) {\n exports.forEach(objFrom, function (key, value) {\n objTo[key] = value;\n });\n return objTo;\n};\n/**\n * Returns a clone of the specified object.\n * @param {!Object} obj\n * @return {!Object} cloned obj.\n */\nexports.clone = function (obj) {\n return exports.extend({}, obj);\n};\n/**\n * Returns true if obj has typeof \"object\" and is not null. Unlike goog.isObject(), does not return true\n * for functions.\n *\n * @param obj {*} A potential object.\n * @returns {boolean} True if it's an object.\n */\nexports.isNonNullObject = function (obj) {\n return typeof obj === 'object' && obj !== null;\n};\nexports.isEmpty = function (obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n};\nexports.getCount = function (obj) {\n var rv = 0;\n for (var key in obj) {\n rv++;\n }\n return rv;\n};\nexports.map = function (obj, f, opt_obj) {\n var res = {};\n for (var key in obj) {\n res[key] = f.call(opt_obj, obj[key], key, obj);\n }\n return res;\n};\nexports.findKey = function (obj, fn, opt_this) {\n for (var key in obj) {\n if (fn.call(opt_this, obj[key], key, obj)) {\n return key;\n }\n }\n return undefined;\n};\nexports.findValue = function (obj, fn, opt_this) {\n var key = exports.findKey(obj, fn, opt_this);\n return key && obj[key];\n};\nexports.getAnyKey = function (obj) {\n for (var key in obj) {\n return key;\n }\n};\nexports.getValues = function (obj) {\n var res = [];\n var i = 0;\n for (var key in obj) {\n res[i++] = obj[key];\n }\n return res;\n};\n/**\n * Tests whether every key/value pair in an object pass the test implemented\n * by the provided function\n *\n * @param {?Object.} obj Object to test.\n * @param {!function(K, V)} fn Function to call for each key and value.\n * @template K,V\n */\nexports.every = function (obj, fn) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (!fn(key, obj[key])) {\n return false;\n }\n }\n }\n return true;\n};\n\n//# sourceMappingURL=obj.js.map\n\n\n/***/ }),\n/* 34 */,\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */,\n/* 43 */,\n/* 44 */,\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */,\n/* 55 */,\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(60);\nmodule.exports = __webpack_require__(7).default;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_shims_Array__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_shims_Array___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__src_shims_Array__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_shims_String__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_shims_String___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__src_shims_String__);\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __global = (function () {\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n throw new Error('unable to locate global object');\n})();\n// Polyfill Promise\nif (typeof Promise === 'undefined') {\n // HACK: TS throws an error if I attempt to use 'dot-notation'\n __global['Promise'] = Promise = __webpack_require__(62);\n}\n\n//# sourceMappingURL=promise.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(setImmediate) {\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n};\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nmodule.exports = Promise;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(63).setImmediate))\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(64);\n// On some exotic environments, it's not clear which object `setimmeidate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a ';\n }\n var iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n util_1.log('frame writing exception');\n if (e.stack) {\n util_1.log(e.stack);\n }\n util_1.log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n * @private\n * @return {Element}\n */\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n var a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n util_1.log('No IE domain setting required');\n }\n }\n catch (e) {\n var domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n }\n else if (iframe.document) {\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n };\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n FirebaseIFrameScriptHolder.prototype.close = function () {\n var _this = this;\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\n this.myIFrame.doc.body.innerHTML = '';\n setTimeout(function () {\n if (_this.myIFrame !== null) {\n document.body.removeChild(_this.myIFrame);\n _this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n if (util_3.isNodeSdk() && this.myID) {\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n var theURL = this.urlFn(urlParams);\n FirebaseIFrameScriptHolder.nodeRestRequest(theURL);\n }\n // Protect from being called recursively.\n var onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n };\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param {!string} id - The ID of this connection\n * @param {!string} pw - The password for this connection\n */\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n };\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.count() < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n var theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n var curDataString = '';\n var i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n var nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length + SEG_HEADER_SIZE + curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n var theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n exports.FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n };\n /**\n * Add a script tag for a regular long-poll request.\n * @param {!string} url - The URL of the script tag.\n * @param {!number} serial - The serial number of the request.\n * @private\n */\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\n var _this = this;\n //remember that we sent this request.\n this.outstandingRequests.add(serial, 1);\n var doNewRequest = function () {\n _this.outstandingRequests.remove(serial);\n _this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n var readyStateCB = function () {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n };\n /**\n * Add an arbitrary script tag to the iframe.\n * @param {!string} url - The URL for the script tag source.\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\n */\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\n var _this = this;\n if (util_3.isNodeSdk()) {\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(function () {\n try {\n // if we're already closed, don't add this poll\n if (!_this.sendNewPolls)\n return;\n var newScript_1 = _this.myIFrame.doc.createElement('script');\n newScript_1.type = 'text/javascript';\n newScript_1.async = true;\n newScript_1.src = url;\n newScript_1.onload = newScript_1.onreadystatechange = function () {\n var rstate = newScript_1.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n newScript_1.onload = newScript_1.onreadystatechange = null;\n if (newScript_1.parentNode) {\n newScript_1.parentNode.removeChild(newScript_1);\n }\n loadCB();\n }\n };\n newScript_1.onerror = function () {\n util_1.log('Long-poll script failed to load: ' + url);\n _this.sendNewPolls = false;\n _this.close();\n };\n _this.myIFrame.doc.body.appendChild(newScript_1);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n };\n return FirebaseIFrameScriptHolder;\n}());\nexports.FirebaseIFrameScriptHolder = FirebaseIFrameScriptHolder;\n\n//# sourceMappingURL=BrowserPollConnection.js.map\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = __webpack_require__(7);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar StatsManager_1 = __webpack_require__(27);\nvar Constants_1 = __webpack_require__(15);\nvar util_3 = __webpack_require__(0);\nvar storage_1 = __webpack_require__(14);\nvar util_4 = __webpack_require__(0);\nvar util_5 = __webpack_require__(0);\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nvar WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\nfunction setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\nexports.setWebSocketImpl = setWebSocketImpl;\n/**\n * Create a new websocket connection with the given callbacks.\n * @constructor\n * @implements {Transport}\n */\nvar WebSocketConnection = /** @class */ (function () {\n /**\n * @param {string} connId identifier for this transport\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n */\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = util_2.logWrapper(this.connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\n }\n /**\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n * @return {string} connection url\n * @private\n */\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\n var urlParams = {};\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (!util_5.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = lastSessionId;\n }\n return repoInfo.connectionURL(Constants_1.WEBSOCKET, urlParams);\n };\n /**\n *\n * @param onMessage Callback when messages arrive\n * @param onDisconnect Callback with connection lost.\n */\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n storage_1.PersistentStorage.set('previous_websocket_failure', true);\n try {\n if (util_5.isNodeSdk()) {\n var device = util_3.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n var options = {\n headers: {\n 'User-Agent': \"Firebase/\" + Constants_1.PROTOCOL_VERSION + \"/\" + app_1.default.SDK_VERSION + \"/\" + process.platform + \"/\" + device\n }\n };\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n var env = process['env'];\n var proxy = this.connURL.indexOf('wss://') == 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n else {\n this.mySock = new WebSocketImpl(this.connURL);\n }\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n var error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = function () {\n _this.log_('Websocket connected.');\n _this.everConnected_ = true;\n };\n this.mySock.onclose = function () {\n _this.log_('Websocket connection was disconnected.');\n _this.mySock = null;\n _this.onClosed_();\n };\n this.mySock.onmessage = function (m) {\n _this.handleIncomingFrame(m);\n };\n this.mySock.onerror = function (e) {\n _this.log_('WebSocket error. Closing connection.');\n var error = e.message || e.data;\n if (error) {\n _this.log_(error);\n }\n _this.onClosed_();\n };\n };\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n WebSocketConnection.prototype.start = function () { };\n WebSocketConnection.forceDisallow = function () {\n WebSocketConnection.forceDisallow_ = true;\n };\n WebSocketConnection.isAvailable = function () {\n var isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n };\n /**\n * Returns true if we previously failed to connect with this transport.\n * @return {boolean}\n */\n WebSocketConnection.previouslyFailed = function () {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (storage_1.PersistentStorage.isInMemoryStorage ||\n storage_1.PersistentStorage.get('previous_websocket_failure') === true);\n };\n WebSocketConnection.prototype.markConnectionHealthy = function () {\n storage_1.PersistentStorage.remove('previous_websocket_failure');\n };\n WebSocketConnection.prototype.appendFrame_ = function (data) {\n this.frames.push(data);\n if (this.frames.length == this.totalFrames) {\n var fullMess = this.frames.join('');\n this.frames = null;\n var jsonMess = util_4.jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n };\n /**\n * @param {number} frameCount The number of frames we are expecting from the server\n * @private\n */\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n };\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @param {!String} data\n * @return {?String} Any remaining data to be process, or null if there is none\n * @private\n */\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\n util_1.assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n var frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n };\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess The frame data\n */\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\n if (this.mySock === null)\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n var data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n var remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n };\n /**\n * Send a message to the server\n * @param {Object} data The JSON object to transmit\n */\n WebSocketConnection.prototype.send = function (data) {\n this.resetKeepAlive();\n var dataStr = util_4.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_2.splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (var i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n };\n WebSocketConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n };\n WebSocketConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n };\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n WebSocketConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n };\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n WebSocketConnection.prototype.resetKeepAlive = function () {\n var _this = this;\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(function () {\n //If there has been no websocket activity for a while, send a no-op\n if (_this.mySock) {\n _this.sendString_('0');\n }\n _this.resetKeepAlive();\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n };\n /**\n * Send a string over the websocket.\n *\n * @param {string} str String to send.\n * @private\n */\n WebSocketConnection.prototype.sendString_ = function (str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n };\n /**\n * Number of response before we consider the connection \"healthy.\"\n * @type {number}\n */\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\n /**\n * Time to wait for the connection te become healthy before giving up.\n * @type {number}\n */\n WebSocketConnection.healthyTimeout = 30000;\n return WebSocketConnection;\n}());\nexports.WebSocketConnection = WebSocketConnection;\n\n//# sourceMappingURL=WebSocketConnection.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(29)))\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nvar ServerActions = /** @class */ (function () {\n function ServerActions() {\n }\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, ?string)} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\n /**\n * Refreshes the auth token for the current connection.\n * @param {string} token The authentication token\n */\n ServerActions.prototype.refreshAuthToken = function (token) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\n /**\n * @param {Object.} stats\n */\n ServerActions.prototype.reportStats = function (stats) { };\n return ServerActions;\n}());\nexports.ServerActions = ServerActions;\n\n//# sourceMappingURL=ServerActions.js.map\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = __webpack_require__(26);\nvar PriorityIndex_1 = __webpack_require__(4);\nvar Node_1 = __webpack_require__(6);\nvar ChildrenNode_1 = __webpack_require__(5);\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar RangedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function RangedFilter(params) {\n this.indexedFilter_ = new IndexedFilter_1.IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n }\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getStartPost = function () {\n return this.startPost_;\n };\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getEndPost = function () {\n return this.endPost_;\n };\n /**\n * @param {!NamedNode} node\n * @return {boolean}\n */\n RangedFilter.prototype.matches = function (node) {\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\n this.index_.compare(node, this.getEndPost()) <= 0);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var self = this;\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!self.matches(new Node_1.NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndexedFilter = function () {\n return this.indexedFilter_;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getStartPost_ = function (params) {\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getEndPost_ = function (params) {\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n };\n return RangedFilter;\n}());\nexports.RangedFilter = RangedFilter;\n\n//# sourceMappingURL=RangedFilter.js.map\n\n\n/***/ }),\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = __webpack_require__(81);\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = __webpack_require__(7);\nvar Database_1 = __webpack_require__(34);\nexports.Database = Database_1.Database;\nvar Query_1 = __webpack_require__(38);\nexports.Query = Query_1.Query;\nvar Reference_1 = __webpack_require__(23);\nexports.Reference = Reference_1.Reference;\nvar util_1 = __webpack_require__(1);\nexports.enableLogging = util_1.enableLogging;\nvar RepoManager_1 = __webpack_require__(28);\nvar INTERNAL = __webpack_require__(113);\nvar TEST_ACCESS = __webpack_require__(114);\nvar util_2 = __webpack_require__(0);\nvar ServerValue = Database_1.Database.ServerValue;\nexports.ServerValue = ServerValue;\nfunction registerDatabase(instance) {\n // Register the Database Service with the 'firebase' namespace.\n var namespace = instance.INTERNAL.registerService('database', function (app, unused, url) { return RepoManager_1.RepoManager.getInstance().databaseFromApp(app, url); }, \n // firebase.database namespace properties\n {\n Reference: Reference_1.Reference,\n Query: Query_1.Query,\n Database: Database_1.Database,\n enableLogging: util_1.enableLogging,\n INTERNAL: INTERNAL,\n ServerValue: ServerValue,\n TEST_ACCESS: TEST_ACCESS\n }, null, true);\n if (util_2.isNodeSdk()) {\n module.exports = namespace;\n }\n}\nexports.registerDatabase = registerDatabase;\nregisterDatabase(app_1.default);\nvar DataSnapshot_1 = __webpack_require__(24);\nexports.DataSnapshot = DataSnapshot_1.DataSnapshot;\nvar onDisconnect_1 = __webpack_require__(37);\nexports.OnDisconnect = onDisconnect_1.OnDisconnect;\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n * @constructor\n */\nvar DOMStorageWrapper = /** @class */ (function () {\n /**\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\n */\n function DOMStorageWrapper(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param {string} key The key to save the value under\n * @param {?Object} value The value being stored, or null to remove the key.\n */\n DOMStorageWrapper.prototype.set = function (key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), util_1.stringify(value));\n }\n };\n /**\n * @param {string} key\n * @return {*} The value that was stored under this key, or null\n */\n DOMStorageWrapper.prototype.get = function (key) {\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return util_1.jsonEval(storedVal);\n }\n };\n /**\n * @param {string} key\n */\n DOMStorageWrapper.prototype.remove = function (key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n };\n /**\n * @param {string} name\n * @return {string}\n */\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\n return this.prefix_ + name;\n };\n DOMStorageWrapper.prototype.toString = function () {\n return this.domStorage_.toString();\n };\n return DOMStorageWrapper;\n}());\nexports.DOMStorageWrapper = DOMStorageWrapper;\n\n//# sourceMappingURL=DOMStorageWrapper.js.map\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n *\n * @constructor\n */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n MemoryStorage.prototype.set = function (key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n };\n MemoryStorage.prototype.get = function (key) {\n if (util_1.contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n };\n MemoryStorage.prototype.remove = function (key) {\n delete this.cache_[key];\n };\n return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n\n//# sourceMappingURL=MemoryStorage.js.map\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar TransactionResult = /** @class */ (function () {\n /**\n * A type for the resolve value of Firebase.transaction.\n * @constructor\n * @dict\n * @param {boolean} committed\n * @param {DataSnapshot} snapshot\n */\n function TransactionResult(committed, snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n TransactionResult.prototype.toJSON = function () {\n util_1.validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n };\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n\n//# sourceMappingURL=TransactionResult.js.map\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nexports.nextPushId = (function () {\n // Modeled after base64 web-safe chars, but ordered by ASCII.\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n var lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n var lastRandChars = [];\n return function (now) {\n var duplicateTime = now === lastPushTime;\n lastPushTime = now;\n var i;\n var timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n util_1.assert(now === 0, 'Cannot push at time == 0');\n var id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n util_1.assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n//# sourceMappingURL=NextPushId.js.map\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataSnapshot_1 = __webpack_require__(24);\nvar Event_1 = __webpack_require__(87);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\n/**\n * Represents registration for 'value' events.\n */\nvar ValueEventRegistration = /** @class */ (function () {\n /**\n * @param {?function(!DataSnapshot)} callback_\n * @param {?function(Error)} cancelCallback_\n * @param {?Object} context_\n */\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\n this.callback_ = callback_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\n return eventType === 'value';\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createEvent = function (change, query) {\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent('value', this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, query.getRef(), index));\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_1 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_1.call(ctx, eventData.error);\n };\n }\n else {\n var cb_1 = this.callback_;\n return function () {\n cb_1.call(ctx, eventData.snapshot);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.matches = function (other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callback_ || !this.callback_) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return (other.callback_ === this.callback_ && other.context_ === this.context_);\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.hasAnyCallback = function () {\n return this.callback_ !== null;\n };\n return ValueEventRegistration;\n}());\nexports.ValueEventRegistration = ValueEventRegistration;\n/**\n * Represents the registration of 1 or more child_xxx events.\n *\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\n * register a group of callbacks together in the future.\n *\n * @constructor\n * @implements {EventRegistration}\n */\nvar ChildEventRegistration = /** @class */ (function () {\n /**\n * @param {?Object.} callbacks_\n * @param {?function(Error)} cancelCallback_\n * @param {Object=} context_\n */\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\n this.callbacks_ = callbacks_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return util_1.contains(this.callbacks_, eventToCheck);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createEvent = function (change, query) {\n util_2.assert(change.childName != null, 'Child events should have a childName.');\n var ref = query.getRef().child(/** @type {!string} */ (change.childName));\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent(change.type, this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, ref, index), change.prevName);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_2 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_2.call(ctx, eventData.error);\n };\n }\n else {\n var cb_2 = this.callbacks_[eventData.eventType];\n return function () {\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.matches = function (other) {\n if (other instanceof ChildEventRegistration) {\n if (!this.callbacks_ || !other.callbacks_) {\n return true;\n }\n else if (this.context_ === other.context_) {\n var otherCount = util_1.getCount(other.callbacks_);\n var thisCount = util_1.getCount(this.callbacks_);\n if (otherCount === thisCount) {\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\n // If event types don't match, not a match\n // If count is not 1, exact match across all\n if (otherCount === 1) {\n var otherKey /** @type {!string} */ = util_1.getAnyKey(other.callbacks_);\n var thisKey /** @type {!string} */ = util_1.getAnyKey(this.callbacks_);\n return (thisKey === otherKey &&\n (!other.callbacks_[otherKey] ||\n !this.callbacks_[thisKey] ||\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\n }\n else {\n // Exact match on each key.\n return util_1.every(this.callbacks_, function (eventType, cb) { return other.callbacks_[eventType] === cb; });\n }\n }\n }\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.hasAnyCallback = function () {\n return this.callbacks_ !== null;\n };\n return ChildEventRegistration;\n}());\nexports.ChildEventRegistration = ChildEventRegistration;\n\n//# sourceMappingURL=EventRegistration.js.map\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Encapsulates the data needed to raise an event\n * @implements {Event}\n */\nvar DataEvent = /** @class */ (function () {\n /**\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\n * @param {!DataSnapshot} snapshot The data backing the event\n * @param {?string=} prevName Optional, the name of the previous child for child_* events.\n */\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getPath = function () {\n var ref = this.snapshot.getRef();\n if (this.eventType === 'value') {\n return ref.path;\n }\n else {\n return ref.getParent().path;\n }\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventType = function () {\n return this.eventType;\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.toString = function () {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n util_1.stringify(this.snapshot.exportVal()));\n };\n return DataEvent;\n}());\nexports.DataEvent = DataEvent;\nvar CancelEvent = /** @class */ (function () {\n /**\n * @param {EventRegistration} eventRegistration\n * @param {Error} error\n * @param {!Path} path\n */\n function CancelEvent(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getPath = function () {\n return this.path;\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventType = function () {\n return 'cancel';\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.toString = function () {\n return this.path.toString() + ':cancel';\n };\n return CancelEvent;\n}());\nexports.CancelEvent = CancelEvent;\n\n//# sourceMappingURL=Event.js.map\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar AckUserWrite_1 = __webpack_require__(89);\nvar ChildrenNode_1 = __webpack_require__(5);\nvar util_3 = __webpack_require__(0);\nvar ImmutableTree_1 = __webpack_require__(25);\nvar ListenComplete_1 = __webpack_require__(90);\nvar Merge_1 = __webpack_require__(91);\nvar Operation_1 = __webpack_require__(9);\nvar Overwrite_1 = __webpack_require__(48);\nvar Path_1 = __webpack_require__(3);\nvar SyncPoint_1 = __webpack_require__(49);\nvar WriteTree_1 = __webpack_require__(97);\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n * @constructor\n */\nvar SyncTree = /** @class */ (function () {\n /**\n * @param {!ListenProvider} listenProvider_ Used by SyncTree to start / stop listening\n * to server data.\n */\n function SyncTree(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n * @type {!ImmutableTree.}\n * @private\n */\n this.syncPointTree_ = ImmutableTree_1.ImmutableTree.Empty;\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n * @type {!WriteTree}\n * @private\n */\n this.pendingWriteTree_ = new WriteTree_1.WriteTree();\n this.tagToQueryMap_ = {};\n this.queryToTagMap_ = {};\n }\n /**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @param {number} writeId\n * @param {boolean=} visible\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\n // Record pending write.\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.User, path, newData));\n }\n };\n /**\n * Apply the data from a user-generated update() call\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\n // Record pending merge.\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.User, path, changeTree));\n };\n /**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param {!number} writeId\n * @param {boolean=} revert True if the given write failed and needs to be reverted\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\n if (revert === void 0) { revert = false; }\n var write = this.pendingWriteTree_.getWrite(writeId);\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n var affectedTree_1 = ImmutableTree_1.ImmutableTree.Empty;\n if (write.snap != null) {\n // overwrite\n affectedTree_1 = affectedTree_1.set(Path_1.Path.Empty, true);\n }\n else {\n util_3.forEach(write.children, function (pathString, node) {\n affectedTree_1 = affectedTree_1.set(new Path_1.Path(pathString), node);\n });\n }\n return this.applyOperationToSyncPoints_(new AckUserWrite_1.AckUserWrite(write.path, affectedTree_1, revert));\n }\n };\n /**\n * Apply new server data for the specified path..\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.Server, path, newData));\n };\n /**\n * Apply new server data to be merged in at the specified path.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.Server, path, changeTree));\n };\n /**\n * Apply a listen complete for a query\n *\n * @param {!Path} path\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyListenComplete = function (path) {\n return this.applyOperationToSyncPoints_(new ListenComplete_1.ListenComplete(Operation_1.OperationSource.Server, path));\n };\n /**\n * Apply new server data for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey != null) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new Overwrite_1.Overwrite(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n };\n /**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n var op = new Merge_1.Merge(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Apply a listen complete for a tagged query\n *\n * @param {!Path} path\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new ListenComplete_1.ListenComplete(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.addEventRegistration = function (query, eventRegistration) {\n var path = query.path;\n var serverCache = null;\n var foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\n var relativePath = Path_1.Path.relativePath(pathToSyncPoint, path);\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || sp.hasCompleteView();\n });\n var syncPoint = this.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint_1.SyncPoint();\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPoint.hasCompleteView();\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var subtree = this.syncPointTree_.subtree(path);\n subtree.foreachChild(function (childName, childSyncPoint) {\n var completeCache = childSyncPoint.getCompleteServerCache(Path_1.Path.Empty);\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\n // We need to track a tag for this query\n var queryKey = SyncTree.makeQueryKey_(query);\n util_1.assert(!(queryKey in this.queryToTagMap_), 'View does not exist, but we have a tag');\n var tag = SyncTree.getNextQueryTag_();\n this.queryToTagMap_[queryKey] = tag;\n // Coerce to string to avoid sparse arrays.\n this.tagToQueryMap_['_' + tag] = queryKey;\n }\n var writesCache = this.pendingWriteTree_.childWrites(path);\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\n var view /** @type !View */ = syncPoint.viewForQuery(query);\n events = events.concat(this.setupListener_(query, view));\n }\n return events;\n };\n /**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, all callbacks are removed.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var _this = this;\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n var path = query.path;\n var maybeSyncPoint = this.syncPointTree_.get(path);\n var cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query.queryIdentifier() === 'default' ||\n maybeSyncPoint.viewExistsForQuery(query))) {\n /**\n * @type {{removed: !Array., events: !Array.}}\n */\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\n if (maybeSyncPoint.isEmpty()) {\n this.syncPointTree_ = this.syncPointTree_.remove(path);\n }\n var removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n // We may have just removed one of many listeners and can short-circuit this whole process\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\n // properly set up.\n //\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n var removingDefault = -1 !==\n removed.findIndex(function (query) {\n return query.getQueryParams().loadsAllData();\n });\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\n return parentSyncPoint.hasCompleteView();\n });\n if (removingDefault && !covered) {\n var subtree = this.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n var newViews = this.collectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (var i = 0; i < newViews.length; ++i) {\n var view = newViews[i], newQuery = view.getQuery();\n var listener = this.createListenerForView_(view);\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(newQuery), listener.hashFn, listener.onComplete);\n }\n }\n else {\n // There's nothing below us, so nothing we need to start listening on\n }\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n var defaultTag = null;\n this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\n }\n else {\n removed.forEach(function (queryToRemove) {\n var tagToRemove = _this.queryToTagMap_[SyncTree.makeQueryKey_(queryToRemove)];\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n this.removeTags_(removed);\n }\n else {\n // No-op, this listener must've been already removed\n }\n return cancelEvents;\n };\n /**\n * Returns a complete cache, if we have one, of the data at a particular path. The location must have a listener above\n * it, but as this is only used by transaction code, that should always be the case anyways.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n * @param {!Path} path The path to the data we want\n * @param {Array.=} writeIdsToExclude A specific set to be excluded\n * @return {?Node}\n */\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\n var includeHiddenSets = true;\n var writeTree = this.pendingWriteTree_;\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\n var relativePath = Path_1.Path.relativePath(pathSoFar, path);\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\n };\n /**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n *\n * @param {!ImmutableTree.} subtree\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\n var completeView = maybeChildSyncPoint.getCompleteView();\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n var views_1 = [];\n if (maybeChildSyncPoint) {\n views_1 = maybeChildSyncPoint.getQueryViews();\n }\n util_3.forEach(childMap, function (key, childViews) {\n views_1 = views_1.concat(childViews);\n });\n return views_1;\n }\n });\n };\n /**\n * @param {!Array.} queries\n * @private\n */\n SyncTree.prototype.removeTags_ = function (queries) {\n for (var j = 0; j < queries.length; ++j) {\n var removedQuery = queries[j];\n if (!removedQuery.getQueryParams().loadsAllData()) {\n // We should have a tag for this\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\n var removedQueryTag = this.queryToTagMap_[removedQueryKey];\n delete this.queryToTagMap_[removedQueryKey];\n delete this.tagToQueryMap_['_' + removedQueryTag];\n }\n }\n };\n /**\n * Normalizes a query to a query we send the server for listening\n * @param {!Query} query\n * @return {!Query} The normalized query\n * @private\n */\n SyncTree.queryForListening_ = function (query) {\n if (query.getQueryParams().loadsAllData() &&\n !query.getQueryParams().isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return /** @type {!Query} */ query.getRef();\n }\n else {\n return query;\n }\n };\n /**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @param {!Query} query\n * @param {!View} view\n * @return {!Array.} This method can return events to support synchronous data sources\n * @private\n */\n SyncTree.prototype.setupListener_ = function (query, view) {\n var path = query.path;\n var tag = this.tagForQuery_(query);\n var listener = this.createListenerForView_(view);\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\n var subtree = this.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n util_1.assert(!subtree.value.hasCompleteView(), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (!relativePath.isEmpty() &&\n maybeChildSyncPoint &&\n maybeChildSyncPoint.hasCompleteView()) {\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n var queries_1 = [];\n if (maybeChildSyncPoint) {\n queries_1 = queries_1.concat(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\n }\n util_3.forEach(childMap, function (key, childQueries) {\n queries_1 = queries_1.concat(childQueries);\n });\n return queries_1;\n }\n });\n for (var i = 0; i < queriesToStop.length; ++i) {\n var queryToStop = queriesToStop[i];\n this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\n }\n }\n return events;\n };\n /**\n *\n * @param {!View} view\n * @return {{hashFn: function(), onComplete: function(!string, *)}}\n * @private\n */\n SyncTree.prototype.createListenerForView_ = function (view) {\n var _this = this;\n var query = view.getQuery();\n var tag = this.tagForQuery_(query);\n return {\n hashFn: function () {\n var cache = view.getServerCache() || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: function (status) {\n if (status === 'ok') {\n if (tag) {\n return _this.applyTaggedListenComplete(query.path, tag);\n }\n else {\n return _this.applyListenComplete(query.path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n var error = util_2.errorForServerCode(status, query);\n return _this.removeEventRegistration(query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n };\n /**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n * @private\n * @param {!Query} query\n * @return {string}\n */\n SyncTree.makeQueryKey_ = function (query) {\n return query.path.toString() + '$' + query.queryIdentifier();\n };\n /**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n * @private\n * @param {!string} queryKey\n * @return {{queryId: !string, path: !Path}}\n */\n SyncTree.parseQueryKey_ = function (queryKey) {\n var splitIndex = queryKey.indexOf('$');\n util_1.assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path_1.Path(queryKey.substr(0, splitIndex))\n };\n };\n /**\n * Return the query associated with the given tag, if we have one\n * @param {!number} tag\n * @return {?string}\n * @private\n */\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\n return this.tagToQueryMap_['_' + tag];\n };\n /**\n * Return the tag associated with the given query.\n * @param {!Query} query\n * @return {?number}\n * @private\n */\n SyncTree.prototype.tagForQuery_ = function (query) {\n var queryKey = SyncTree.makeQueryKey_(query);\n return util_3.safeGet(this.queryToTagMap_, queryKey);\n };\n /**\n * Static accessor for query tags.\n * @return {number}\n * @private\n */\n SyncTree.getNextQueryTag_ = function () {\n return SyncTree.nextQueryTag_++;\n };\n /**\n * A helper method to apply tagged operations\n *\n * @param {!Path} queryPath\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\n var syncPoint = this.syncPointTree_.get(queryPath);\n util_1.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\n return syncPoint.applyOperation(operation, writesCache, \n /*serverCache=*/ null);\n };\n /**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n \n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n \n * - We concatenate all of the events returned by each SyncPoint and return the result.\n *\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\n return this.applyOperationHelper_(operation, this.syncPointTree_, \n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path_1.Path.Empty));\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n if (operation.path.isEmpty()) {\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n var childName = operation.path.getFront();\n var childOperation = operation.operationForChild(childName);\n var childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n }\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n var _this = this;\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n var childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n };\n /**\n * Static tracker for next query tag.\n * @type {number}\n * @private\n */\n SyncTree.nextQueryTag_ = 1;\n return SyncTree;\n}());\nexports.SyncTree = SyncTree;\n\n//# sourceMappingURL=SyncTree.js.map\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(3);\nvar Operation_1 = __webpack_require__(9);\nvar AckUserWrite = /** @class */ (function () {\n /**\n *\n * @param {!Path} path\n * @param {!ImmutableTree} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\n * @param {!boolean} revert\n */\n function AckUserWrite(\n /**@inheritDoc */ path, \n /**@inheritDoc */ affectedTree, \n /**@inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = Operation_1.OperationSource.User;\n }\n /**\n * @inheritDoc\n */\n AckUserWrite.prototype.operationForChild = function (childName) {\n if (!this.path.isEmpty()) {\n util_1.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n util_1.assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n var childTree = this.affectedTree.subtree(new Path_1.Path(childName));\n return new AckUserWrite(Path_1.Path.Empty, childTree, this.revert);\n }\n };\n return AckUserWrite;\n}());\nexports.AckUserWrite = AckUserWrite;\n\n//# sourceMappingURL=AckUserWrite.js.map\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = __webpack_require__(3);\nvar Operation_1 = __webpack_require__(9);\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @constructor\n * @implements {Operation}\n */\nvar ListenComplete = /** @class */ (function () {\n function ListenComplete(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.LISTEN_COMPLETE;\n }\n ListenComplete.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new ListenComplete(this.source, Path_1.Path.Empty);\n }\n else {\n return new ListenComplete(this.source, this.path.popFront());\n }\n };\n return ListenComplete;\n}());\nexports.ListenComplete = ListenComplete;\n\n//# sourceMappingURL=ListenComplete.js.map\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = __webpack_require__(9);\nvar Overwrite_1 = __webpack_require__(48);\nvar Path_1 = __webpack_require__(3);\nvar util_1 = __webpack_require__(0);\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!ImmutableTree.} children\n * @constructor\n * @implements {Operation}\n */\nvar Merge = /** @class */ (function () {\n function Merge(\n /**@inheritDoc */ source, \n /**@inheritDoc */ path, \n /**@inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.MERGE;\n }\n /**\n * @inheritDoc\n */\n Merge.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n var childTree = this.children.subtree(new Path_1.Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite_1.Overwrite(this.source, Path_1.Path.Empty, childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, Path_1.Path.Empty, childTree);\n }\n }\n else {\n util_1.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, this.path.popFront(), this.children);\n }\n };\n /**\n * @inheritDoc\n */\n Merge.prototype.toString = function () {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n };\n return Merge;\n}());\nexports.Merge = Merge;\n\n//# sourceMappingURL=Merge.js.map\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = __webpack_require__(26);\nvar ViewProcessor_1 = __webpack_require__(93);\nvar ChildrenNode_1 = __webpack_require__(5);\nvar CacheNode_1 = __webpack_require__(20);\nvar ViewCache_1 = __webpack_require__(50);\nvar EventGenerator_1 = __webpack_require__(96);\nvar util_1 = __webpack_require__(0);\nvar Operation_1 = __webpack_require__(9);\nvar Change_1 = __webpack_require__(10);\nvar PriorityIndex_1 = __webpack_require__(4);\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n * @constructor\n */\nvar View = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n * @param {!ViewCache} initialViewCache\n */\n function View(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n var params = this.query_.getQueryParams();\n var indexFilter = new IndexedFilter_1.IndexedFilter(params.getIndex());\n var filter = params.getNodeFilter();\n /**\n * @type {ViewProcessor}\n * @private\n */\n this.processor_ = new ViewProcessor_1.ViewProcessor(filter);\n var initialServerCache = initialViewCache.getServerCache();\n var initialEventCache = initialViewCache.getEventCache();\n // Don't filter server node with other filter than index, wait for tagged listen\n var serverSnap = indexFilter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n var eventSnap = filter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n var newServerCache = new CacheNode_1.CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n var newEventCache = new CacheNode_1.CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n /**\n * @type {!ViewCache}\n * @private\n */\n this.viewCache_ = new ViewCache_1.ViewCache(newEventCache, newServerCache);\n /**\n * @type {!EventGenerator}\n * @private\n */\n this.eventGenerator_ = new EventGenerator_1.EventGenerator(this.query_);\n }\n /**\n * @return {!Query}\n */\n View.prototype.getQuery = function () {\n return this.query_;\n };\n /**\n * @return {?Node}\n */\n View.prototype.getServerCache = function () {\n return this.viewCache_.getServerCache().getNode();\n };\n /**\n * @param {!Path} path\n * @return {?Node}\n */\n View.prototype.getCompleteServerCache = function (path) {\n var cache = this.viewCache_.getCompleteServerSnap();\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (this.query_.getQueryParams().loadsAllData() ||\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n };\n /**\n * @return {boolean}\n */\n View.prototype.isEmpty = function () {\n return this.eventRegistrations_.length === 0;\n };\n /**\n * @param {!EventRegistration} eventRegistration\n */\n View.prototype.addEventRegistration = function (eventRegistration) {\n this.eventRegistrations_.push(eventRegistration);\n };\n /**\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\n var cancelEvents = [];\n if (cancelError) {\n util_1.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n var path_1 = this.query_.path;\n this.eventRegistrations_.forEach(function (registration) {\n cancelError /** @type {!Error} */ = cancelError;\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n var remaining = [];\n for (var i = 0; i < this.eventRegistrations_.length; ++i) {\n var existing = this.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(this.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n this.eventRegistrations_ = remaining;\n }\n else {\n this.eventRegistrations_ = [];\n }\n return cancelEvents;\n };\n /**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @return {!Array.}\n */\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\n if (operation.type === Operation_1.OperationType.MERGE &&\n operation.source.queryId !== null) {\n util_1.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\n util_1.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\n }\n var oldViewCache = this.viewCache_;\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\n this.processor_.assertIndexed(result.viewCache);\n util_1.assert(result.viewCache.getServerCache().isFullyInitialized() ||\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n this.viewCache_ = result.viewCache;\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\n };\n /**\n * @param {!EventRegistration} registration\n * @return {!Array.}\n */\n View.prototype.getInitialEvents = function (registration) {\n var eventSnap = this.viewCache_.getEventCache();\n var initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n var eventNode = eventSnap.getNode();\n eventNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n initialChanges.push(Change_1.Change.childAddedChange(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(Change_1.Change.valueChange(eventSnap.getNode()));\n }\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\n };\n /**\n * @private\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {EventRegistration=} eventRegistration\n * @return {!Array.}\n */\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\n var registrations = eventRegistration\n ? [eventRegistration]\n : this.eventRegistrations_;\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\n };\n return View;\n}());\nexports.View = View;\n\n//# sourceMappingURL=View.js.map\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = __webpack_require__(9);\nvar util_1 = __webpack_require__(0);\nvar ChildChangeAccumulator_1 = __webpack_require__(94);\nvar Change_1 = __webpack_require__(10);\nvar ChildrenNode_1 = __webpack_require__(5);\nvar KeyIndex_1 = __webpack_require__(12);\nvar ImmutableTree_1 = __webpack_require__(25);\nvar Path_1 = __webpack_require__(3);\nvar CompleteChildSource_1 = __webpack_require__(95);\n/**\n * @constructor\n * @struct\n */\nvar ProcessorResult = /** @class */ (function () {\n /**\n * @param {!ViewCache} viewCache\n * @param {!Array.} changes\n */\n function ProcessorResult(viewCache, changes) {\n this.viewCache = viewCache;\n this.changes = changes;\n }\n return ProcessorResult;\n}());\nexports.ProcessorResult = ProcessorResult;\n/**\n * @constructor\n */\nvar ViewProcessor = /** @class */ (function () {\n /**\n * @param {!NodeFilter} filter_\n */\n function ViewProcessor(filter_) {\n this.filter_ = filter_;\n }\n /**\n * @param {!ViewCache} viewCache\n */\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\n util_1.assert(viewCache\n .getEventCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\n util_1.assert(viewCache\n .getServerCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @return {!ProcessorResult}\n */\n ViewProcessor.prototype.applyOperation = function (oldViewCache, operation, writesCache, completeCache) {\n var accumulator = new ChildChangeAccumulator_1.ChildChangeAccumulator();\n var newViewCache, filterServerNode;\n if (operation.type === Operation_1.OperationType.OVERWRITE) {\n var overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.getServerCache().isFiltered() &&\n !overwrite.path.isEmpty());\n newViewCache = this.applyServerOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.MERGE) {\n var merge = operation;\n if (merge.source.fromUser) {\n newViewCache = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.getServerCache().isFiltered();\n newViewCache = this.applyServerMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.ACK_USER_WRITE) {\n var ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.LISTEN_COMPLETE) {\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw util_1.assertionError('Unknown operation type: ' + operation.type);\n }\n var changes = accumulator.getChanges();\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\n return new ProcessorResult(newViewCache, changes);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!ViewCache} newViewCache\n * @param {!Array.} accumulator\n * @private\n */\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\n var eventSnap = newViewCache.getEventCache();\n if (eventSnap.isFullyInitialized()) {\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\n if (accumulator.length > 0 ||\n !oldViewCache.getEventCache().isFullyInitialized() ||\n (isLeafOrEmpty &&\n !eventSnap\n .getNode()\n .equals(/** @type {!Node} */ (oldCompleteSnap))) ||\n !eventSnap\n .getNode()\n .getPriority()\n .equals(oldCompleteSnap.getPriority())) {\n accumulator.push(Change_1.Change.valueChange(\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\n }\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} changePath\n * @param {!WriteTreeRef} writesCache\n * @param {!CompleteChildSource} source\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\n var oldEventSnap = viewCache.getEventCache();\n if (writesCache.shadowingWrite(changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n var newEventCache = void 0, serverNode = void 0;\n if (changePath.isEmpty()) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n util_1.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.getServerCache().isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n var serverCache = viewCache.getCompleteServerSnap();\n var completeChildren = serverCache instanceof ChildrenNode_1.ChildrenNode\n ? serverCache\n : ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\n }\n else {\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\n }\n }\n else {\n var childKey = changePath.getFront();\n if (childKey == '.priority') {\n util_1.assert(changePath.getLength() == 1, \"Can't have a priority with additional path components\");\n var oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.getServerCache().getNode();\n // we might have overwrites for this priority\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = this.filter_.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n var childChangePath = changePath.popFront();\n // update child\n var newEventChild = void 0;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.getServerCache().getNode();\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n }\n if (newEventChild != null) {\n newEventCache = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\n }\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n var oldServerSnap = oldViewCache.getServerCache();\n var newServerCache;\n var serverFilter = filterServerNode\n ? this.filter_\n : this.filter_.getIndexedFilter();\n if (changePath.isEmpty()) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n var newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n var childKey = changePath.getFront();\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n changePath.getLength() > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n var childChangePath = changePath.popFront();\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey == '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n var newViewCache = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n var oldEventSnap = oldViewCache.getEventCache();\n var newViewCache, newEventCache;\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (changePath.isEmpty()) {\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\n }\n else {\n var childKey = changePath.getFront();\n if (childKey === '.priority') {\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n var childChangePath = changePath.popFront();\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n var newChild = void 0;\n if (childChangePath.isEmpty()) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n var childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (childChangePath.getBack() === '.priority' &&\n childNode.getChild(childChangePath.parent()).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n var newEventSnap = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {string} childKey\n * @return {boolean}\n * @private\n */\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\n return viewCache.getEventCache().isCompleteForChild(childKey);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n var _this = this;\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!Node} node\n * @param {ImmutableTree.} merge\n * @return {!Node}\n * @private\n */\n ViewProcessor.prototype.applyMerge_ = function (node, merge) {\n merge.foreach(function (relativePath, childNode) {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n var _this = this;\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache\n .getServerCache()\n .getNode()\n .isEmpty() &&\n !viewCache.getServerCache().isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n var viewMergeTree;\n if (path.isEmpty()) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = ImmutableTree_1.ImmutableTree.Empty.setTree(path, changedChildren);\n }\n var serverNode = viewCache.getServerCache().getNode();\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\n if (serverNode.hasChild(childKey)) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\n var isUnknownDeepMerge = !viewCache.getServerCache().isCompleteForChild(childKey) &&\n childMergeTree.value == null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} ackPath\n * @param {!ImmutableTree} affectedTree\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writesCache.shadowingWrite(ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n var filterServerNode = viewCache.getServerCache().isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n var serverCache = viewCache.getServerCache();\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (ackPath.isEmpty()) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n var changedChildren_1 = ImmutableTree_1.ImmutableTree.Empty;\n serverCache.getNode().forEachChild(KeyIndex_1.KEY_INDEX, function (name, node) {\n changedChildren_1 = changedChildren_1.set(new Path_1.Path(name), node);\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n var changedChildren_2 = ImmutableTree_1.ImmutableTree.Empty;\n affectedTree.foreach(function (mergePath, value) {\n var serverCachePath = ackPath.child(mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\n var oldServerNode = viewCache.getServerCache();\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, accumulator);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\n var complete;\n if (writesCache.shadowingWrite(path) != null) {\n return viewCache;\n }\n else {\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n var oldEventCache = viewCache.getEventCache().getNode();\n var newEventCache = void 0;\n if (path.isEmpty() || path.getFront() === '.priority') {\n var newNode = void 0;\n if (viewCache.getServerCache().isFullyInitialized()) {\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n }\n else {\n var serverChildren = viewCache.getServerCache().getNode();\n util_1.assert(serverChildren instanceof ChildrenNode_1.ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\n }\n newNode = newNode;\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n var childKey = path.getFront();\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n if (newChild == null &&\n viewCache.getServerCache().isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\n }\n else if (viewCache\n .getEventCache()\n .getNode()\n .hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.getServerCache().isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n if (complete.isLeafNode()) {\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.getServerCache().isFullyInitialized() ||\n writesCache.shadowingWrite(Path_1.Path.Empty) != null;\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\n }\n };\n return ViewProcessor;\n}());\nexports.ViewProcessor = ViewProcessor;\n\n//# sourceMappingURL=ViewProcessor.js.map\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Change_1 = __webpack_require__(10);\nvar util_2 = __webpack_require__(0);\n/**\n * @constructor\n */\nvar ChildChangeAccumulator = /** @class */ (function () {\n function ChildChangeAccumulator() {\n this.changeMap_ = {};\n }\n /**\n * @param {!Change} change\n */\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\n var type = change.type;\n var childKey /** @type {!string} */ = change.childName;\n util_2.assert(type == Change_1.Change.CHILD_ADDED ||\n type == Change_1.Change.CHILD_CHANGED ||\n type == Change_1.Change.CHILD_REMOVED, 'Only child changes supported for tracking');\n util_2.assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n var oldChange = util_1.safeGet(this.changeMap_, childKey);\n if (oldChange) {\n var oldType = oldChange.type;\n if (type == Change_1.Change.CHILD_ADDED && oldType == Change_1.Change.CHILD_REMOVED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n delete this.changeMap_[childKey];\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childRemovedChange(childKey, oldChange.oldSnap);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n this.changeMap_[childKey] = Change_1.Change.childAddedChange(childKey, change.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap);\n }\n else {\n throw util_2.assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap_[childKey] = change;\n }\n };\n /**\n * @return {!Array.}\n */\n ChildChangeAccumulator.prototype.getChanges = function () {\n return util_1.getValues(this.changeMap_);\n };\n return ChildChangeAccumulator;\n}());\nexports.ChildChangeAccumulator = ChildChangeAccumulator;\n\n//# sourceMappingURL=ChildChangeAccumulator.js.map\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = __webpack_require__(20);\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n *\n * @private\n * @constructor\n * @implements CompleteChildSource\n */\nvar NoCompleteChildSource_ = /** @class */ (function () {\n function NoCompleteChildSource_() {\n }\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\n return null;\n };\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\n return null;\n };\n return NoCompleteChildSource_;\n}());\nexports.NoCompleteChildSource_ = NoCompleteChildSource_;\n/**\n * Singleton instance.\n * @const\n * @type {!CompleteChildSource}\n */\nexports.NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n *\n *\n * @implements CompleteChildSource\n */\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\n /**\n * @param {!WriteTreeRef} writes_\n * @param {!ViewCache} viewCache_\n * @param {?Node} optCompleteServerCache_\n */\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\n var node = this.viewCache_.getEventCache();\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n var serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode_1.CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.getServerCache();\n return this.writes_.calcCompleteChild(childKey, serverNode);\n }\n };\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\n var completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : this.viewCache_.getCompleteServerSnap();\n var nodes = this.writes_.calcIndexedSlice(completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n };\n return WriteTreeCompleteChildSource;\n}());\nexports.WriteTreeCompleteChildSource = WriteTreeCompleteChildSource;\n\n//# sourceMappingURL=CompleteChildSource.js.map\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = __webpack_require__(6);\nvar Change_1 = __webpack_require__(10);\nvar util_1 = __webpack_require__(0);\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n * @constructor\n */\nvar EventGenerator = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n */\n function EventGenerator(query_) {\n this.query_ = query_;\n /**\n * @private\n * @type {!Index}\n */\n this.index_ = this.query_.getQueryParams().getIndex();\n }\n /**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n *\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {!Array.} eventRegistrations\n * @return {!Array.}\n */\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\n var _this = this;\n var events = [];\n var moves = [];\n changes.forEach(function (change) {\n if (change.type === Change_1.Change.CHILD_CHANGED &&\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(Change_1.Change.childMovedChange(change.childName, change.snapshotNode));\n }\n });\n this.generateEventsForType_(events, Change_1.Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.VALUE, changes, eventRegistrations, eventCache);\n return events;\n };\n /**\n * Given changes of a single change type, generate the corresponding events.\n *\n * @param {!Array.} events\n * @param {!string} eventType\n * @param {!Array.} changes\n * @param {!Array.} registrations\n * @param {!Node} eventCache\n * @private\n */\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\n var _this = this;\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\n filteredChanges.sort(this.compareChanges_.bind(this));\n filteredChanges.forEach(function (change) {\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\n registrations.forEach(function (registration) {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, _this.query_));\n }\n });\n });\n };\n /**\n * @param {!Change} change\n * @param {!Node} eventCache\n * @return {!Change}\n * @private\n */\n EventGenerator.prototype.materializeSingleChange_ = function (change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(\n /** @type {!string} */\n change.childName, change.snapshotNode, this.index_);\n return change;\n }\n };\n /**\n * @param {!Change} a\n * @param {!Change} b\n * @return {number}\n * @private\n */\n EventGenerator.prototype.compareChanges_ = function (a, b) {\n if (a.childName == null || b.childName == null) {\n throw util_1.assertionError('Should only compare child_ events.');\n }\n var aWrapped = new Node_1.NamedNode(a.childName, a.snapshotNode);\n var bWrapped = new Node_1.NamedNode(b.childName, b.snapshotNode);\n return this.index_.compare(aWrapped, bWrapped);\n };\n return EventGenerator;\n}());\nexports.EventGenerator = EventGenerator;\n\n//# sourceMappingURL=EventGenerator.js.map\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(3);\nvar CompoundWrite_1 = __webpack_require__(98);\nvar PriorityIndex_1 = __webpack_require__(4);\nvar ChildrenNode_1 = __webpack_require__(5);\n/**\n * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\n * and addMerge(), and removed with removeWrite().\n *\n * @constructor\n */\nvar WriteTree = /** @class */ (function () {\n function WriteTree() {\n /**\n * A tree tracking the result of applying all visible writes. This does not include transactions with\n * applyLocally=false or writes that are completely shadowed by other writes.\n *\n * @type {!CompoundWrite}\n * @private\n */\n this.visibleWrites_ = CompoundWrite_1.CompoundWrite.Empty;\n /**\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\n * used by transactions).\n *\n * @type {!Array.}\n * @private\n */\n this.allWrites_ = [];\n this.lastWriteId_ = -1;\n }\n /**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n * @param {!Path} path\n * @return {!WriteTreeRef}\n */\n WriteTree.prototype.childWrites = function (path) {\n return new WriteTreeRef(path, this);\n };\n /**\n * Record a new overwrite from user code.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} writeId\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\n */\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n this.allWrites_.push({\n path: path,\n snap: snap,\n writeId: writeId,\n visible: visible\n });\n if (visible) {\n this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\n }\n this.lastWriteId_ = writeId;\n };\n /**\n * Record a new merge from user code.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n */\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\n this.allWrites_.push({\n path: path,\n children: changedChildren,\n writeId: writeId,\n visible: true\n });\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\n this.lastWriteId_ = writeId;\n };\n /**\n * @param {!number} writeId\n * @return {?WriteRecord}\n */\n WriteTree.prototype.getWrite = function (writeId) {\n for (var i = 0; i < this.allWrites_.length; i++) {\n var record = this.allWrites_[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @param {!number} writeId\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\n WriteTree.prototype.removeWrite = function (writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n var _this = this;\n var idx = this.allWrites_.findIndex(function (s) {\n return s.writeId === writeId;\n });\n util_2.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n var writeToRemove = this.allWrites_[idx];\n this.allWrites_.splice(idx, 1);\n var removedWriteWasVisible = writeToRemove.visible;\n var removedWriteOverlapsWithOtherWrites = false;\n var i = this.allWrites_.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n var currentWrite = this.allWrites_[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n this.recordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (writeToRemove.path.contains(currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n this.resetTree_();\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\n }\n else {\n var children = writeToRemove.children;\n util_1.forEach(children, function (childName) {\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\n });\n }\n return true;\n }\n };\n /**\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\n * No server data is considered.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.getCompleteWriteData = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude An optional set to be excluded\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\n if (subMerge.isEmpty()) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !subMerge.hasCompleteWrite(Path_1.Path.Empty)) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return subMerge.apply(layeredCache);\n }\n }\n }\n else {\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n if (!includeHiddenWrites && merge.isEmpty()) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !merge.hasCompleteWrite(Path_1.Path.Empty)) {\n return null;\n }\n else {\n var filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (write.path.contains(treePath) || treePath.contains(write.path)));\n };\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return mergeAtPath.apply(layeredCache);\n }\n }\n }\n };\n /**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n *\n * @param {!Path} treePath\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\n var completeChildren = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var topLevelSet = this.visibleWrites_.getCompleteNode(treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childSnap) {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n var merge_1 = this.visibleWrites_.childCompoundWrite(treePath);\n completeServerChildren.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var node = merge_1\n .childCompoundWrite(new Path_1.Path(childName))\n .apply(childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n merge_1.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n merge.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n };\n /**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n *\n * @param {!Path} treePath\n * @param {!Path} childPath\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\n util_2.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n var path = treePath.child(childPath);\n if (this.visibleWrites_.hasCompleteWrite(path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n if (childMerge.isEmpty()) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return childMerge.apply(existingServerSnap.getChild(childPath));\n }\n }\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!Path} treePath\n * @param {!string} childKey\n * @param {!CacheNode} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\n var path = treePath.child(childKey);\n var shadowingNode = this.visibleWrites_.getCompleteNode(path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n return childMerge.apply(existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.shadowingWrite = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\n var toIterate;\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n var shadowingNode = merge.getCompleteNode(Path_1.Path.Empty);\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = merge.apply(completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n var nodes = [];\n var cmp = index.getCompare();\n var iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n var next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n };\n /**\n * @param {!WriteRecord} writeRecord\n * @param {!Path} path\n * @return {boolean}\n * @private\n */\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\n if (writeRecord.snap) {\n return writeRecord.path.contains(path);\n }\n else {\n // findKey can return undefined, so use !! to coerce to boolean\n return !!util_1.findKey(writeRecord.children, function (childSnap, childName) {\n return writeRecord.path.child(childName).contains(path);\n });\n }\n };\n /**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n * @private\n */\n WriteTree.prototype.resetTree_ = function () {\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path_1.Path.Empty);\n if (this.allWrites_.length > 0) {\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\n }\n else {\n this.lastWriteId_ = -1;\n }\n };\n /**\n * The default filter used when constructing the tree. Keep everything that's visible.\n *\n * @param {!WriteRecord} write\n * @return {boolean}\n * @private\n */\n WriteTree.DefaultFilter_ = function (write) {\n return write.visible;\n };\n /**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n *\n * @param {!Array.} writes\n * @param {!function(!WriteRecord):boolean} filter\n * @param {!Path} treeRoot\n * @return {!CompoundWrite}\n * @private\n */\n WriteTree.layerTree_ = function (writes, filter, treeRoot) {\n var compoundWrite = CompoundWrite_1.CompoundWrite.Empty;\n for (var i = 0; i < writes.length; ++i) {\n var write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n var writePath = write.path;\n var relativePath = void 0;\n if (write.snap) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, write.snap.getChild(relativePath));\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else if (write.children) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n if (relativePath.isEmpty()) {\n compoundWrite = compoundWrite.addWrites(Path_1.Path.Empty, write.children);\n }\n else {\n var child = util_1.safeGet(write.children, relativePath.getFront());\n if (child) {\n // There exists a child in this node that matches the root path\n var deepNode = child.getChild(relativePath.popFront());\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, deepNode);\n }\n }\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else {\n throw util_2.assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n };\n return WriteTree;\n}());\nexports.WriteTree = WriteTree;\n/**\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\n * just proxy to the underlying WriteTree.\n *\n * @constructor\n */\nvar WriteTreeRef = /** @class */ (function () {\n /**\n * @param {!Path} path\n * @param {!WriteTree} writeTree\n */\n function WriteTreeRef(path, writeTree) {\n this.treePath_ = path;\n this.writeTree_ = writeTree;\n }\n /**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude Optional writes to exclude.\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return this.writeTree_.calcCompleteEventCache(this.treePath_, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n };\n /**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\n return this.writeTree_.calcCompleteEventChildren(this.treePath_, completeServerChildren);\n };\n /**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n * @param {!Path} path\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.treePath_, path, existingEventSnap, existingServerSnap);\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTreeRef.prototype.shadowingWrite = function (path) {\n return this.writeTree_.shadowingWrite(this.treePath_.child(path));\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n *\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\n return this.writeTree_.calcIndexedSlice(this.treePath_, completeServerData, startPost, count, reverse, index);\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!string} childKey\n * @param {!CacheNode} existingServerCache\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\n };\n /**\n * Return a WriteTreeRef for a child.\n *\n * @param {string} childName\n * @return {!WriteTreeRef}\n */\n WriteTreeRef.prototype.child = function (childName) {\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\n };\n return WriteTreeRef;\n}());\nexports.WriteTreeRef = WriteTreeRef;\n\n//# sourceMappingURL=WriteTree.js.map\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ImmutableTree_1 = __webpack_require__(25);\nvar Path_1 = __webpack_require__(3);\nvar util_1 = __webpack_require__(0);\nvar Node_1 = __webpack_require__(6);\nvar PriorityIndex_1 = __webpack_require__(4);\nvar util_2 = __webpack_require__(0);\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n *\n * @constructor\n * @param {!ImmutableTree.} writeTree\n */\nvar CompoundWrite = /** @class */ (function () {\n function CompoundWrite(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n /**\n * @param {!Path} path\n * @param {!Node} node\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrite = function (path, node) {\n if (path.isEmpty()) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(node));\n }\n else {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n var rootMostPath = rootmost.path;\n var value = rootmost.value;\n var relativePath = Path_1.Path.relativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\n }\n else {\n var subtree = new ImmutableTree_1.ImmutableTree(node);\n var newWriteTree = this.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n };\n /**\n * @param {!Path} path\n * @param {!Object.} updates\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrites = function (path, updates) {\n var newWrite = this;\n util_1.forEach(updates, function (childKey, node) {\n newWrite = newWrite.addWrite(path.child(childKey), node);\n });\n return newWrite;\n };\n /**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param {!Path} path The path at which a write and all deeper writes should be removed\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\n */\n CompoundWrite.prototype.removeWrite = function (path) {\n if (path.isEmpty()) {\n return CompoundWrite.Empty;\n }\n else {\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree_1.ImmutableTree.Empty);\n return new CompoundWrite(newWriteTree);\n }\n };\n /**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param {!Path} path The path to check for\n * @return {boolean} Whether there is a complete write at that path\n */\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\n return this.getCompleteNode(path) != null;\n };\n /**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param {!Path} path The path to get a complete write\n * @return {?Node} The node if complete at that path, or null otherwise.\n */\n CompoundWrite.prototype.getCompleteNode = function (path) {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return this.writeTree_\n .get(rootmost.path)\n .getChild(Path_1.Path.relativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n };\n /**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @return {!Array.} A list of all complete children.\n */\n CompoundWrite.prototype.getCompleteChildren = function () {\n var children = [];\n var node = this.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n children.push(new Node_1.NamedNode(childName, childNode));\n });\n }\n }\n else {\n this.writeTree_.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value != null) {\n children.push(new Node_1.NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n };\n /**\n * @param {!Path} path\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.childCompoundWrite = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else {\n var shadowingNode = this.getCompleteNode(path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(this.writeTree_.subtree(path));\n }\n }\n };\n /**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @return {boolean} Whether this CompoundWrite is empty\n */\n CompoundWrite.prototype.isEmpty = function () {\n return this.writeTree_.isEmpty();\n };\n /**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param {!Node} node The node to apply this CompoundWrite to\n * @return {!Node} The node with all writes applied\n */\n CompoundWrite.prototype.apply = function (node) {\n return CompoundWrite.applySubtreeWrite_(Path_1.Path.Empty, this.writeTree_, node);\n };\n /**\n * @type {!CompoundWrite}\n */\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree_1.ImmutableTree(null));\n /**\n * @param {!Path} relativePath\n * @param {!ImmutableTree.} writeTree\n * @param {!Node} node\n * @return {!Node}\n * @private\n */\n CompoundWrite.applySubtreeWrite_ = function (relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n var priorityWrite_1 = null;\n writeTree.children.inorderTraversal(function (childKey, childTree) {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n util_2.assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite_1 = childTree.value;\n }\n else {\n node = CompoundWrite.applySubtreeWrite_(relativePath.child(childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\n node = node.updateChild(relativePath.child('.priority'), priorityWrite_1);\n }\n return node;\n }\n };\n return CompoundWrite;\n}());\nexports.CompoundWrite = CompoundWrite;\n\n//# sourceMappingURL=CompoundWrite.js.map\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = __webpack_require__(5);\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n *\n * @constructor\n */\nvar SnapshotHolder = /** @class */ (function () {\n function SnapshotHolder() {\n this.rootNode_ = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n SnapshotHolder.prototype.getNode = function (path) {\n return this.rootNode_.getChild(path);\n };\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n };\n return SnapshotHolder;\n}());\nexports.SnapshotHolder = SnapshotHolder;\n\n//# sourceMappingURL=SnapshotHolder.js.map\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nvar AuthTokenProvider = /** @class */ (function () {\n /**\n * @param {!FirebaseApp} app_\n */\n function AuthTokenProvider(app_) {\n this.app_ = app_;\n }\n /**\n * @param {boolean} forceRefresh\n * @return {!Promise}\n */\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\n return this.app_['INTERNAL']['getToken'](forceRefresh).then(null, \n // .catch\n function (error) {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n util_1.log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n };\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n this.app_['INTERNAL']['addAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\n this.app_['INTERNAL']['removeAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\n var errorMessage = 'Provided authentication credentials for the app named \"' +\n this.app_.name +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n util_1.warn(errorMessage);\n };\n return AuthTokenProvider;\n}());\nexports.AuthTokenProvider = AuthTokenProvider;\n\n//# sourceMappingURL=AuthTokenProvider.js.map\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\n/**\n * Tracks a collection of stats.\n *\n * @constructor\n */\nvar StatsCollection = /** @class */ (function () {\n function StatsCollection() {\n this.counters_ = {};\n }\n StatsCollection.prototype.incrementCounter = function (name, amount) {\n if (amount === void 0) { amount = 1; }\n if (!util_2.contains(this.counters_, name))\n this.counters_[name] = 0;\n this.counters_[name] += amount;\n };\n StatsCollection.prototype.get = function () {\n return util_1.deepCopy(this.counters_);\n };\n return StatsCollection;\n}());\nexports.StatsCollection = StatsCollection;\n\n//# sourceMappingURL=StatsCollection.js.map\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar StatsListener_1 = __webpack_require__(51);\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n/**\n * @constructor\n */\nvar StatsReporter = /** @class */ (function () {\n /**\n * @param collection\n * @param server_\n */\n function StatsReporter(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener_1.StatsListener(collection);\n var timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n StatsReporter.prototype.includeStat = function (stat) {\n this.statsToReport_[stat] = true;\n };\n StatsReporter.prototype.reportStats_ = function () {\n var _this = this;\n var stats = this.statsListener_.get();\n var reportedStats = {};\n var haveStatsToReport = false;\n util_1.forEach(stats, function (stat, value) {\n if (value > 0 && util_1.contains(_this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n };\n return StatsReporter;\n}());\nexports.StatsReporter = StatsReporter;\n\n//# sourceMappingURL=StatsReporter.js.map\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n * @constructor\n */\nvar EventQueue = /** @class */ (function () {\n function EventQueue() {\n /**\n * @private\n * @type {!Array.}\n */\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n * @private\n * @type {!number}\n */\n this.recursionDepth_ = 0;\n }\n /**\n * @param {!Array.} eventDataList The new events to queue.\n */\n EventQueue.prototype.queueEvents = function (eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n var currList = null;\n for (var i = 0; i < eventDataList.length; i++) {\n var eventData = eventDataList[i];\n var eventPath = eventData.getPath();\n if (currList !== null && !eventPath.equals(currList.getPath())) {\n this.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = new EventList(eventPath);\n }\n currList.add(eventData);\n }\n if (currList) {\n this.eventLists_.push(currList);\n }\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param {!Path} path The path to raise events for.\n * @param {!Array.} eventDataList The new events to raise.\n */\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.equals(path);\n });\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param {!Path} changedPath The path to raise events for.\n * @param {!Array.} eventDataList The events to raise\n */\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\n });\n };\n /**\n * @param {!function(!Path):boolean} predicate\n * @private\n */\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\n this.recursionDepth_++;\n var sentAll = true;\n for (var i = 0; i < this.eventLists_.length; i++) {\n var eventList = this.eventLists_[i];\n if (eventList) {\n var eventPath = eventList.getPath();\n if (predicate(eventPath)) {\n this.eventLists_[i].raise();\n this.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n this.eventLists_ = [];\n }\n this.recursionDepth_--;\n };\n return EventQueue;\n}());\nexports.EventQueue = EventQueue;\n/**\n * @param {!Path} path\n * @constructor\n */\nvar EventList = /** @class */ (function () {\n function EventList(path_) {\n this.path_ = path_;\n /**\n * @type {!Array.}\n * @private\n */\n this.events_ = [];\n }\n /**\n * @param {!Event} eventData\n */\n EventList.prototype.add = function (eventData) {\n this.events_.push(eventData);\n };\n /**\n * Iterates through the list and raises each event\n */\n EventList.prototype.raise = function () {\n for (var i = 0; i < this.events_.length; i++) {\n var eventData = this.events_[i];\n if (eventData !== null) {\n this.events_[i] = null;\n var eventFn = eventData.getEventRunner();\n if (util_1.logger) {\n util_1.log('event: ' + eventData.toString());\n }\n util_1.exceptionGuard(eventFn);\n }\n }\n };\n /**\n * @return {!Path}\n */\n EventList.prototype.getPath = function () {\n return this.path_;\n };\n return EventList;\n}());\nexports.EventList = EventList;\n\n//# sourceMappingURL=EventQueue.js.map\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(2);\nvar EventEmitter_1 = __webpack_require__(53);\nvar util_1 = __webpack_require__(0);\n/**\n * @extends {EventEmitter}\n */\nvar VisibilityMonitor = /** @class */ (function (_super) {\n tslib_1.__extends(VisibilityMonitor, _super);\n function VisibilityMonitor() {\n var _this = _super.call(this, ['visible']) || this;\n var hidden;\n var visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n _this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, function () {\n var visible = !document[hidden];\n if (visible !== _this.visible_) {\n _this.visible_ = visible;\n _this.trigger('visible', visible);\n }\n }, false);\n }\n return _this;\n }\n VisibilityMonitor.getInstance = function () {\n return new VisibilityMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n };\n return VisibilityMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.VisibilityMonitor = VisibilityMonitor;\n\n//# sourceMappingURL=VisibilityMonitor.js.map\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(2);\nvar util_1 = __webpack_require__(0);\nvar EventEmitter_1 = __webpack_require__(53);\nvar util_2 = __webpack_require__(0);\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n *\n * @extends {EventEmitter}\n */\nvar OnlineMonitor = /** @class */ (function (_super) {\n tslib_1.__extends(OnlineMonitor, _super);\n function OnlineMonitor() {\n var _this = _super.call(this, ['online']) || this;\n _this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !util_2.isMobileCordova()) {\n window.addEventListener('online', function () {\n if (!_this.online_) {\n _this.online_ = true;\n _this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', function () {\n if (_this.online_) {\n _this.online_ = false;\n _this.trigger('online', false);\n }\n }, false);\n }\n return _this;\n }\n OnlineMonitor.getInstance = function () {\n return new OnlineMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n };\n /**\n * @return {boolean}\n */\n OnlineMonitor.prototype.currentlyOnline = function () {\n return this.online_;\n };\n return OnlineMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.OnlineMonitor = OnlineMonitor;\n\n//# sourceMappingURL=OnlineMonitor.js.map\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserPollConnection_1 = __webpack_require__(55);\nvar WebSocketConnection_1 = __webpack_require__(56);\nvar util_1 = __webpack_require__(1);\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n * @constructor\n */\nvar TransportManager = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\n */\n function TransportManager(repoInfo) {\n this.initTransports_(repoInfo);\n }\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\n /**\n * @const\n * @type {!Array.}\n */\n get: function () {\n return [BrowserPollConnection_1.BrowserPollConnection, WebSocketConnection_1.WebSocketConnection];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {!RepoInfo} repoInfo\n * @private\n */\n TransportManager.prototype.initTransports_ = function (repoInfo) {\n var isWebSocketsAvailable = WebSocketConnection_1.WebSocketConnection && WebSocketConnection_1.WebSocketConnection['isAvailable']();\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection_1.WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable)\n util_1.warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection_1.WebSocketConnection];\n }\n else {\n var transports_1 = (this.transports_ = []);\n util_1.each(TransportManager.ALL_TRANSPORTS, function (i, transport) {\n if (transport && transport['isAvailable']()) {\n transports_1.push(transport);\n }\n });\n }\n };\n /**\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\n * initial transport to use\n */\n TransportManager.prototype.initialTransport = function () {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n };\n /**\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\n * transport, or null\n */\n TransportManager.prototype.upgradeTransport = function () {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n };\n return TransportManager;\n}());\nexports.TransportManager = TransportManager;\n\n//# sourceMappingURL=TransportManager.js.map\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n * @constructor\n */\nvar PacketReceiver = /** @class */ (function () {\n /**\n * @param onMessage_\n */\n function PacketReceiver(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n };\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n * @param {number} requestNum\n * @param {Array} data\n */\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\n var _this = this;\n this.pendingResponses[requestNum] = data;\n var _loop_1 = function () {\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\n delete this_1.pendingResponses[this_1.currentResponseNum];\n var _loop_2 = function (i) {\n if (toProcess[i]) {\n util_1.exceptionGuard(function () {\n _this.onMessage_(toProcess[i]);\n });\n }\n };\n for (var i = 0; i < toProcess.length; ++i) {\n _loop_2(i);\n }\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\n if (this_1.onClose) {\n this_1.onClose();\n this_1.onClose = null;\n }\n return \"break\";\n }\n this_1.currentResponseNum++;\n };\n var this_1 = this;\n while (this.pendingResponses[this.currentResponseNum]) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n return PacketReceiver;\n}());\nexports.PacketReceiver = PacketReceiver;\n\n//# sourceMappingURL=PacketReceiver.js.map\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(2);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar util_3 = __webpack_require__(0);\nvar util_4 = __webpack_require__(0);\nvar util_5 = __webpack_require__(0);\nvar ServerActions_1 = __webpack_require__(57);\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nvar ReadonlyRestClient = /** @class */ (function (_super) {\n tslib_1.__extends(ReadonlyRestClient, _super);\n /**\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param {AuthTokenProvider} authTokenProvider_\n * @implements {ServerActions}\n */\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n /** @private {function(...[*])} */\n _this.log_ = util_2.logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n *\n * @private {!Object.}\n */\n _this.listens_ = {};\n return _this;\n }\n ReadonlyRestClient.prototype.reportStats = function (stats) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {!Query} query\n * @param {?number=} tag\n * @return {string}\n * @private\n */\n ReadonlyRestClient.getListenId_ = function (query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n util_1.assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\n return query.path.toString();\n }\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var _this = this;\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\n // Mark this listener so we can tell if it's removed.\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n var thisListen = {};\n this.listens_[listenId] = thisListen;\n var queryStringParamaters = query\n .getQueryParams()\n .toRestQueryStringParameters();\n this.restRequest_(pathString + '.json', queryStringParamaters, function (error, result) {\n var data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (util_4.safeGet(_this.listens_, listenId) === thisListen) {\n var status_1;\n if (!error) {\n status_1 = 'ok';\n }\n else if (error == 401) {\n status_1 = 'permission_denied';\n }\n else {\n status_1 = 'rest_error:' + error;\n }\n onComplete(status_1, null);\n }\n });\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\n // no-op since we just always call getToken.\n };\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n *\n * @param {!string} pathString\n * @param {!Object.} queryStringParameters\n * @param {?function(?number, *=)} callback\n * @private\n */\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\n var _this = this;\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\n queryStringParameters['format'] = 'export';\n this.authTokenProvider_\n .getToken(/*forceRefresh=*/ false)\n .then(function (authTokenData) {\n var authToken = authTokenData && authTokenData.accessToken;\n if (authToken) {\n queryStringParameters['auth'] = authToken;\n }\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\n _this.repoInfo_.host +\n pathString +\n '?' +\n util_5.querystring(queryStringParameters);\n _this.log_('Sending REST request for ' + url);\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (callback && xhr.readyState === 4) {\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n var res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = util_3.jsonEval(xhr.responseText);\n }\n catch (e) {\n util_2.warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n util_2.warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n };\n return ReadonlyRestClient;\n}(ServerActions_1.ServerActions));\nexports.ReadonlyRestClient = ReadonlyRestClient;\n\n//# sourceMappingURL=ReadonlyRestClient.js.map\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar KeyIndex_1 = __webpack_require__(12);\nvar PriorityIndex_1 = __webpack_require__(4);\nvar ValueIndex_1 = __webpack_require__(40);\nvar PathIndex_1 = __webpack_require__(44);\nvar IndexedFilter_1 = __webpack_require__(26);\nvar LimitedFilter_1 = __webpack_require__(110);\nvar RangedFilter_1 = __webpack_require__(58);\nvar util_3 = __webpack_require__(0);\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n * @constructor\n */\nvar QueryParams = /** @class */ (function () {\n function QueryParams() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PriorityIndex_1.PRIORITY_INDEX;\n }\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasStart = function () {\n return this.startSet_;\n };\n /**\n * @return {boolean} True if it would return from left.\n */\n QueryParams.prototype.isViewFromLeft = function () {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\n }\n };\n /**\n * Only valid to call if hasStart() returns true\n * @return {*}\n */\n QueryParams.prototype.getIndexStartValue = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n };\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexStartName = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return util_2.MIN_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasEnd = function () {\n return this.endSet_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * @return {*}\n */\n QueryParams.prototype.getIndexEndValue = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexEndName = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return util_2.MAX_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasLimit = function () {\n return this.limitSet_;\n };\n /**\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\n */\n QueryParams.prototype.hasAnchoredLimit = function () {\n return this.limitSet_ && this.viewFrom_ !== '';\n };\n /**\n * Only valid to call if hasLimit() returns true\n * @return {!number}\n */\n QueryParams.prototype.getLimit = function () {\n util_1.assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n };\n /**\n * @return {!Index}\n */\n QueryParams.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @return {!QueryParams}\n * @private\n */\n QueryParams.prototype.copy_ = function () {\n var copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limit = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToFirst = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToLast = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.startAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.startSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.endAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.endSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n };\n /**\n * @param {!Index} index\n * @return {!QueryParams}\n */\n QueryParams.prototype.orderBy = function (index) {\n var newParams = this.copy_();\n newParams.index_ = index;\n return newParams;\n };\n /**\n * @return {!Object}\n */\n QueryParams.prototype.getQueryObject = function () {\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\n var obj = {};\n if (this.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\n if (this.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\n }\n }\n if (this.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\n if (this.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\n }\n }\n if (this.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\n var viewFrom = this.viewFrom_;\n if (viewFrom === '') {\n if (this.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (this.index_ !== PriorityIndex_1.PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\n }\n return obj;\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.loadsAllData = function () {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.isDefault = function () {\n return this.loadsAllData() && this.index_ == PriorityIndex_1.PRIORITY_INDEX;\n };\n /**\n * @return {!NodeFilter}\n */\n QueryParams.prototype.getNodeFilter = function () {\n if (this.loadsAllData()) {\n return new IndexedFilter_1.IndexedFilter(this.getIndex());\n }\n else if (this.hasLimit()) {\n return new LimitedFilter_1.LimitedFilter(this);\n }\n else {\n return new RangedFilter_1.RangedFilter(this);\n }\n };\n /**\n * Returns a set of REST query string parameters representing this query.\n *\n * @return {!Object.} query string parameters\n */\n QueryParams.prototype.toRestQueryStringParameters = function () {\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\n var qs = {};\n if (this.isDefault()) {\n return qs;\n }\n var orderBy;\n if (this.index_ === PriorityIndex_1.PRIORITY_INDEX) {\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\n }\n else if (this.index_ === ValueIndex_1.VALUE_INDEX) {\n orderBy = REST_CONSTANTS.VALUE_INDEX;\n }\n else if (this.index_ === KeyIndex_1.KEY_INDEX) {\n orderBy = REST_CONSTANTS.KEY_INDEX;\n }\n else {\n util_1.assert(this.index_ instanceof PathIndex_1.PathIndex, 'Unrecognized index type!');\n orderBy = this.index_.toString();\n }\n qs[REST_CONSTANTS.ORDER_BY] = util_3.stringify(orderBy);\n if (this.startSet_) {\n qs[REST_CONSTANTS.START_AT] = util_3.stringify(this.indexStartValue_);\n if (this.startNameSet_) {\n qs[REST_CONSTANTS.START_AT] += ',' + util_3.stringify(this.indexStartName_);\n }\n }\n if (this.endSet_) {\n qs[REST_CONSTANTS.END_AT] = util_3.stringify(this.indexEndValue_);\n if (this.endNameSet_) {\n qs[REST_CONSTANTS.END_AT] += ',' + util_3.stringify(this.indexEndName_);\n }\n }\n if (this.limitSet_) {\n if (this.isViewFromLeft()) {\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\n }\n else {\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\n }\n }\n return qs;\n };\n /**\n * Wire Protocol Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\n INDEX_START_VALUE: 'sp',\n INDEX_START_NAME: 'sn',\n INDEX_END_VALUE: 'ep',\n INDEX_END_NAME: 'en',\n LIMIT: 'l',\n VIEW_FROM: 'vf',\n VIEW_FROM_LEFT: 'l',\n VIEW_FROM_RIGHT: 'r',\n INDEX: 'i'\n };\n /**\n * REST Query Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.REST_QUERY_CONSTANTS_ = {\n ORDER_BY: 'orderBy',\n PRIORITY_INDEX: '$priority',\n VALUE_INDEX: '$value',\n KEY_INDEX: '$key',\n START_AT: 'startAt',\n END_AT: 'endAt',\n LIMIT_TO_FIRST: 'limitToFirst',\n LIMIT_TO_LAST: 'limitToLast'\n };\n /**\n * Default, empty query parameters\n * @type {!QueryParams}\n * @const\n */\n QueryParams.DEFAULT = new QueryParams();\n return QueryParams;\n}());\nexports.QueryParams = QueryParams;\n\n//# sourceMappingURL=QueryParams.js.map\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RangedFilter_1 = __webpack_require__(58);\nvar ChildrenNode_1 = __webpack_require__(5);\nvar Node_1 = __webpack_require__(6);\nvar util_1 = __webpack_require__(0);\nvar Change_1 = __webpack_require__(10);\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar LimitedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function LimitedFilter(params) {\n this.rangedFilter_ = new RangedFilter_1.RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n }\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n var filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n var iterator = void 0;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n var count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n var next = iterator.getNext();\n var inRange = void 0;\n if (this.reverse_) {\n inRange =\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\n }\n else {\n inRange =\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\n }\n if (inRange) {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n else {\n // if we have reached the end post, we cannot keep adding elemments\n break;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var startPost = void 0;\n var endPost = void 0;\n var cmp = void 0;\n var iterator = void 0;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n startPost = this.rangedFilter_.getEndPost();\n endPost = this.rangedFilter_.getStartPost();\n var indexCompare_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCompare_1(b, a); };\n }\n else {\n iterator = filtered.getIterator(this.index_);\n startPost = this.rangedFilter_.getStartPost();\n endPost = this.rangedFilter_.getEndPost();\n cmp = this.index_.getCompare();\n }\n var count = 0;\n var foundStartPost = false;\n while (iterator.hasNext()) {\n var next = iterator.getNext();\n if (!foundStartPost && cmp(startPost, next) <= 0) {\n // start adding\n foundStartPost = true;\n }\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndexedFilter = function () {\n return this.rangedFilter_.getIndexedFilter();\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!Node} snap\n * @param {string} childKey\n * @param {!Node} childSnap\n * @param {!CompleteChildSource} source\n * @param {?ChildChangeAccumulator} changeAccumulator\n * @return {!Node}\n * @private\n */\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n var cmp;\n if (this.reverse_) {\n var indexCmp_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCmp_1(b, a); };\n }\n else {\n cmp = this.index_.getCompare();\n }\n var oldEventCache = snap;\n util_1.assert(oldEventCache.numChildren() == this.limit_, '');\n var newChildNamedNode = new Node_1.NamedNode(childKey, childSnap);\n var windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name == childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childChangedChange(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(childKey, oldChildSnap));\n }\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n };\n return LimitedFilter;\n}());\nexports.LimitedFilter = LimitedFilter;\n\n//# sourceMappingURL=LimitedFilter.js.map\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Reference_1 = __webpack_require__(23);\nvar DataSnapshot_1 = __webpack_require__(24);\nvar Path_1 = __webpack_require__(3);\nvar Tree_1 = __webpack_require__(112);\nvar PriorityIndex_1 = __webpack_require__(4);\nvar util_2 = __webpack_require__(1);\nvar ServerValues_1 = __webpack_require__(45);\nvar validation_1 = __webpack_require__(8);\nvar util_3 = __webpack_require__(0);\nvar nodeFromJSON_1 = __webpack_require__(13);\nvar ChildrenNode_1 = __webpack_require__(5);\nvar Repo_1 = __webpack_require__(19);\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\n// For now it's part of Repo, but in its own file.\n/**\n * @enum {number}\n */\nvar TransactionStatus;\n(function (TransactionStatus) {\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\n // mismatched hash.\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\n // or rejected yet).\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\n // removed when we get a chance to prune completed ones.\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\n // If it comes back as unsuccessful, we'll abort it.\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\n // Temporary state used to mark transactions that need to be aborted.\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\n})(TransactionStatus = exports.TransactionStatus || (exports.TransactionStatus = {}));\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\n * @type {number}\n * @const\n * @private\n */\nRepo_1.Repo.MAX_TRANSACTION_RETRIES_ = 25;\n/**\n * Setup the transaction data structures\n * @private\n */\nRepo_1.Repo.prototype.transactions_init_ = function () {\n /**\n * Stores queues of outstanding transactions for Firebase locations.\n *\n * @type {!Tree.>}\n * @private\n */\n this.transactionQueueTree_ = new Tree_1.Tree();\n};\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\n *\n * @param {!Path} path Path at which to do transaction.\n * @param {function(*):*} transactionUpdate Update callback.\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\n */\nRepo_1.Repo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\n this.log_('transaction on ' + path);\n // Add a watch to make sure we get server updates.\n var valueCallback = function () { };\n var watchRef = new Reference_1.Reference(this, path);\n watchRef.on('value', valueCallback);\n var unwatcher = function () {\n watchRef.off('value', valueCallback);\n };\n // Initialize transaction.\n var transaction = {\n path: path,\n update: transactionUpdate,\n onComplete: onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out which one goes first.\n order: util_2.LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally: applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher: unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n var currentState = this.getLatestState_(path);\n transaction.currentInputSnapshot = currentState;\n var newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n // We just set the input snapshot, so this cast should be safe\n var snapshot = new DataSnapshot_1.DataSnapshot(transaction.currentInputSnapshot, new Reference_1.Reference(this, transaction.path), PriorityIndex_1.PRIORITY_INDEX);\n transaction.onComplete(null, false, snapshot);\n }\n }\n else {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = TransactionStatus.RUN;\n var queueNode = this.transactionQueueTree_.subTree(path);\n var nodeQueue = queueNode.getValue() || [];\n nodeQueue.push(transaction);\n queueNode.setValue(nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\n // start new transactions from the event callbacks.\n var priorityForNode = void 0;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n util_3.contains(newVal, '.priority')) {\n priorityForNode = util_3.safeGet(newVal, '.priority');\n util_1.assert(validation_1.isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, priorityForNode);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n this.sendReadyTransactions_();\n }\n};\n/**\n * @param {!Path} path\n * @param {Array.=} excludeSets A specific set to exclude\n * @return {Node}\n * @private\n */\nRepo_1.Repo.prototype.getLatestState_ = function (path, excludeSets) {\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n};\n/**\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\n * complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively with a particular\n * transactionQueueTree node to recurse through the tree.\n *\n * @param {Tree.>=} node transactionQueueTree node to start at.\n * @private\n */\nRepo_1.Repo.prototype.sendReadyTransactions_ = function (node) {\n var _this = this;\n if (node === void 0) { node = this.transactionQueueTree_; }\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n this.pruneCompletedTransactionsBelowNode_(node);\n }\n if (node.getValue() !== null) {\n var queue = this.buildTransactionQueue_(node);\n util_1.assert(queue.length > 0, 'Sending zero length transaction queue');\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n this.sendTransactionQueue_(node.path(), queue);\n }\n }\n else if (node.hasChildren()) {\n node.forEachChild(function (childNode) {\n _this.sendReadyTransactions_(childNode);\n });\n }\n};\n/**\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\n *\n * @param {!Path} path The location of the queue.\n * @param {!Array.} queue Queue of transactions under the specified location.\n * @private\n */\nRepo_1.Repo.prototype.sendTransactionQueue_ = function (path, queue) {\n var _this = this;\n // Mark transactions as sent and increment retry count!\n var setsToIgnore = queue.map(function (txn) {\n return txn.currentWriteId;\n });\n var latestState = this.getLatestState_(path, setsToIgnore);\n var snapToSend = latestState;\n var latestHash = latestState.hash();\n for (var i = 0; i < queue.length; i++) {\n var txn = queue[i];\n util_1.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = TransactionStatus.SENT;\n txn.retryCount++;\n var relativePath = Path_1.Path.relativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /**@type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n var dataToSend = snapToSend.val(true);\n var pathToSend = path;\n // Send the put.\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\n _this.log_('transaction put response', {\n path: pathToSend.toString(),\n status: status\n });\n var events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.COMPLETED;\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\n var node = queue[i].currentOutputSnapshotResolved;\n var ref = new Reference_1.Reference(_this, queue[i].path);\n var snapshot = new DataSnapshot_1.DataSnapshot(node, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\n // There may be pending transactions that we can now send.\n _this.sendReadyTransactions_();\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\n // Finally, trigger onComplete callbacks.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT)\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n else\n queue[i].status = TransactionStatus.RUN;\n }\n }\n else {\n util_2.warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n queue[i].abortReason = status;\n }\n }\n _this.rerunTransactions_(path);\n }\n }, latestHash);\n};\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\n * be raised for.\n *\n * @param {!Path} changedPath The path in mergedData that changed.\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactions_ = function (changedPath) {\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\n var path = rootMostTransactionNode.path();\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\n this.rerunTransactionQueue_(queue, path);\n return path;\n};\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\n *\n * @param {Array.} queue The queue of transactions to run.\n * @param {!Path} path The path the queue is for.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactionQueue_ = function (queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n var events = [];\n // Ignore all of the sets we're going to re-run.\n var txnsToRerun = queue.filter(function (q) {\n return q.status === TransactionStatus.RUN;\n });\n var setsToIgnore = txnsToRerun.map(function (q) {\n return q.currentWriteId;\n });\n for (var i = 0; i < queue.length; i++) {\n var transaction = queue[i];\n var relativePath = Path_1.Path.relativePath(path, transaction.path);\n var abortTransaction = false, abortReason = void 0;\n util_1.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else if (transaction.status === TransactionStatus.RUN) {\n if (transaction.retryCount >= Repo_1.Repo.MAX_TRANSACTION_RETRIES_) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n var newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n var newDataNode = nodeFromJSON_1.nodeFromJSON(newData);\n var hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n util_3.contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n var oldWriteId = transaction.currentWriteId;\n var serverValues = this.generateServerValues();\n var newNodeResolved = ServerValues_1.resolveDeferredValueSnapshot(newDataNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = this.getNextWriteId_();\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n }\n }\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = TransactionStatus.COMPLETED;\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\n // So defer the unwatcher until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n var ref = new Reference_1.Reference(this, queue[i].path);\n // We set this field immediately, so it's safe to cast to an actual snapshot\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\n var snapshot = new DataSnapshot_1.DataSnapshot(lastInput, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\n }\n else {\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n this.sendReadyTransactions_();\n};\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\n * the node for the given path if there are no pending transactions on any ancestor.\n *\n * @param {!Path} path The location to start at.\n * @return {!Tree.>} The rootmost node with a transaction.\n * @private\n */\nRepo_1.Repo.prototype.getAncestorTransactionNode_ = function (path) {\n var front;\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\n var transactionNode = this.transactionQueueTree_;\n while ((front = path.getFront()) !== null &&\n transactionNode.getValue() === null) {\n transactionNode = transactionNode.subTree(front);\n path = path.popFront();\n }\n return transactionNode;\n};\n/**\n * Builds the queue of all transactions at or below the specified transactionNode.\n *\n * @param {!Tree.>} transactionNode\n * @return {Array.} The generated queue.\n * @private\n */\nRepo_1.Repo.prototype.buildTransactionQueue_ = function (transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n var transactionQueue = [];\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort(function (a, b) {\n return a.order - b.order;\n });\n return transactionQueue;\n};\n/**\n * @param {!Tree.>} node\n * @param {Array.} queue\n * @private\n */\nRepo_1.Repo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\n var _this = this;\n var nodeQueue = node.getValue();\n if (nodeQueue !== null) {\n for (var i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n node.forEachChild(function (child) {\n _this.aggregateTransactionQueuesForNode_(child, queue);\n });\n};\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n *\n * @param {!Tree.>} node\n * @private\n */\nRepo_1.Repo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\n var _this = this;\n var queue = node.getValue();\n if (queue) {\n var to = 0;\n for (var from = 0; from < queue.length; from++) {\n if (queue[from].status !== TransactionStatus.COMPLETED) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n node.setValue(queue.length > 0 ? queue : null);\n }\n node.forEachChild(function (childNode) {\n _this.pruneCompletedTransactionsBelowNode_(childNode);\n });\n};\n/**\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\n * since we consider them incompatible with transactions.\n *\n * @param {!Path} path Path for which we want to abort related transactions.\n * @return {!Path}\n * @private\n */\nRepo_1.Repo.prototype.abortTransactions_ = function (path) {\n var _this = this;\n var affectedPath = this.getAncestorTransactionNode_(path).path();\n var transactionNode = this.transactionQueueTree_.subTree(path);\n transactionNode.forEachAncestor(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n this.abortTransactionsOnNode_(transactionNode);\n transactionNode.forEachDescendant(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n return affectedPath;\n};\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param {!Tree.>} node Node to abort transactions for.\n * @private\n */\nRepo_1.Repo.prototype.abortTransactionsOnNode_ = function (node) {\n var queue = node.getValue();\n if (queue !== null) {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\n // can be immediately aborted and removed.\n var events = [];\n var lastSent = -1;\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\n // Already marked. No action needed.\n }\n else if (queue[i].status === TransactionStatus.SENT) {\n util_1.assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\n queue[i].abortReason = 'set';\n }\n else {\n util_1.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n var snapshot = null;\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n node.setValue(null);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n};\n\n//# sourceMappingURL=Repo_transaction.js.map\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(3);\nvar util_2 = __webpack_require__(0);\n/**\n * Node in a Tree.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode() {\n // TODO: Consider making accessors that create children and value lazily or\n // separate Internal / Leaf 'types'.\n this.children = {};\n this.childCount = 0;\n this.value = null;\n }\n return TreeNode;\n}());\nexports.TreeNode = TreeNode;\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nvar Tree = /** @class */ (function () {\n /**\n * @template T\n * @param {string=} name_ Optional name of the node.\n * @param {Tree=} parent_ Optional parent node.\n * @param {TreeNode=} node_ Optional node to wrap.\n */\n function Tree(name_, parent_, node_) {\n if (name_ === void 0) { name_ = ''; }\n if (parent_ === void 0) { parent_ = null; }\n if (node_ === void 0) { node_ = new TreeNode(); }\n this.name_ = name_;\n this.parent_ = parent_;\n this.node_ = node_;\n }\n /**\n * Returns a sub-Tree for the given path.\n *\n * @param {!(string|Path)} pathObj Path to look up.\n * @return {!Tree.} Tree for path.\n */\n Tree.prototype.subTree = function (pathObj) {\n // TODO: Require pathObj to be Path?\n var path = pathObj instanceof Path_1.Path ? pathObj : new Path_1.Path(pathObj);\n var child = this, next;\n while ((next = path.getFront()) !== null) {\n var childNode = util_2.safeGet(child.node_.children, next) || new TreeNode();\n child = new Tree(next, child, childNode);\n path = path.popFront();\n }\n return child;\n };\n /**\n * Returns the data associated with this tree node.\n *\n * @return {?T} The data or null if no data exists.\n */\n Tree.prototype.getValue = function () {\n return this.node_.value;\n };\n /**\n * Sets data to this tree node.\n *\n * @param {!T} value Value to set.\n */\n Tree.prototype.setValue = function (value) {\n util_1.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\n this.node_.value = value;\n this.updateParents_();\n };\n /**\n * Clears the contents of the tree node (its value and all children).\n */\n Tree.prototype.clear = function () {\n this.node_.value = null;\n this.node_.children = {};\n this.node_.childCount = 0;\n this.updateParents_();\n };\n /**\n * @return {boolean} Whether the tree has any children.\n */\n Tree.prototype.hasChildren = function () {\n return this.node_.childCount > 0;\n };\n /**\n * @return {boolean} Whether the tree is empty (no value or children).\n */\n Tree.prototype.isEmpty = function () {\n return this.getValue() === null && !this.hasChildren();\n };\n /**\n * Calls action for each child of this tree node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachChild = function (action) {\n var _this = this;\n util_2.forEach(this.node_.children, function (child, childTree) {\n action(new Tree(child, _this, childTree));\n });\n };\n /**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\n * false.\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\n * parent.\n */\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst)\n action(this);\n this.forEachChild(function (child) {\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\n });\n if (includeSelf && childrenFirst)\n action(this);\n };\n /**\n * Calls action on each ancestor node.\n *\n * @param {function(!Tree.)} action Action to be called on each parent; return\n * true to abort.\n * @param {boolean=} includeSelf Whether to call action on this node as well.\n * @return {boolean} true if the action callback returned true.\n */\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\n var node = includeSelf ? this : this.parent();\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent();\n }\n return false;\n };\n /**\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\n * is found, action is called on it and traversal does not continue inside the node.\n * Action is *not* called on this node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\n this.forEachChild(function (child) {\n if (child.getValue() !== null)\n action(child);\n else\n child.forEachImmediateDescendantWithValue(action);\n });\n };\n /**\n * @return {!Path} The path of this tree node, as a Path.\n */\n Tree.prototype.path = function () {\n return new Path_1.Path(this.parent_ === null\n ? this.name_\n : this.parent_.path() + '/' + this.name_);\n };\n /**\n * @return {string} The name of the tree node.\n */\n Tree.prototype.name = function () {\n return this.name_;\n };\n /**\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\n */\n Tree.prototype.parent = function () {\n return this.parent_;\n };\n /**\n * Adds or removes this child from its parent based on whether it's empty or not.\n *\n * @private\n */\n Tree.prototype.updateParents_ = function () {\n if (this.parent_ !== null)\n this.parent_.updateChild_(this.name_, this);\n };\n /**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param {string} childName The name of the child to update.\n * @param {!Tree.} child The child to update.\n * @private\n */\n Tree.prototype.updateChild_ = function (childName, child) {\n var childEmpty = child.isEmpty();\n var childExists = util_2.contains(this.node_.children, childName);\n if (childEmpty && childExists) {\n delete this.node_.children[childName];\n this.node_.childCount--;\n this.updateParents_();\n }\n else if (!childEmpty && !childExists) {\n this.node_.children[childName] = child.node_;\n this.node_.childCount++;\n this.updateParents_();\n }\n };\n return Tree;\n}());\nexports.Tree = Tree;\n\n//# sourceMappingURL=Tree.js.map\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WebSocketConnection_1 = __webpack_require__(56);\nvar BrowserPollConnection_1 = __webpack_require__(55);\n/**\n * INTERNAL methods for internal-use only (tests, etc.).\n *\n * Customers shouldn't use these or else should be aware that they could break at any time.\n *\n * @const\n */\nexports.forceLongPolling = function () {\n WebSocketConnection_1.WebSocketConnection.forceDisallow();\n BrowserPollConnection_1.BrowserPollConnection.forceAllow();\n};\nexports.forceWebSockets = function () {\n BrowserPollConnection_1.BrowserPollConnection.forceDisallow();\n};\n/* Used by App Manager */\nexports.isWebSocketsAvailable = function () {\n return WebSocketConnection_1.WebSocketConnection['isAvailable']();\n};\nexports.setSecurityDebugCallback = function (ref, callback) {\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\n};\nexports.stats = function (ref, showDelta) {\n ref.repo.stats(showDelta);\n};\nexports.statsIncrementCounter = function (ref, metric) {\n ref.repo.statsIncrementCounter(metric);\n};\nexports.dataUpdateCount = function (ref) {\n return ref.repo.dataUpdateCount;\n};\nexports.interceptServerData = function (ref, callback) {\n return ref.repo.interceptServerData_(callback);\n};\n\n//# sourceMappingURL=internal.js.map\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RepoInfo_1 = __webpack_require__(36);\nvar PersistentConnection_1 = __webpack_require__(52);\nvar RepoManager_1 = __webpack_require__(28);\nvar Connection_1 = __webpack_require__(54);\nexports.DataConnection = PersistentConnection_1.PersistentConnection;\n/**\n * @param {!string} pathString\n * @param {function(*)} onComplete\n */\nPersistentConnection_1.PersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n/**\n * @param {*} data\n * @param {function(*)} onEcho\n */\nPersistentConnection_1.PersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nexports.RealTimeConnection = Connection_1.Connection;\n/**\n * @param {function(): string} newHash\n * @return {function()}\n */\nexports.hijackHash = function (newHash) {\n var oldPut = PersistentConnection_1.PersistentConnection.prototype.put;\n PersistentConnection_1.PersistentConnection.prototype.put = function (pathString, data, opt_onComplete, opt_hash) {\n if (opt_hash !== undefined) {\n opt_hash = newHash();\n }\n oldPut.call(this, pathString, data, opt_onComplete, opt_hash);\n };\n return function () {\n PersistentConnection_1.PersistentConnection.prototype.put = oldPut;\n };\n};\n/**\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\n */\nexports.ConnectionTarget = RepoInfo_1.RepoInfo;\n/**\n * @param {!Query} query\n * @return {!string}\n */\nexports.queryIdentifier = function (query) {\n return query.queryIdentifier();\n};\n/**\n * @param {!Query} firebaseRef\n * @return {!Object}\n */\nexports.listens = function (firebaseRef) {\n return firebaseRef.repo.persistentConnection_.listens_;\n};\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n *\n * @param {boolean} forceRestClient\n */\nexports.forceRestClient = function (forceRestClient) {\n RepoManager_1.RepoManager.getInstance().forceRestClient(forceRestClient);\n};\n\n//# sourceMappingURL=test_access.js.map\n\n\n/***/ })\n],[80]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-database.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-database.js","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar util_6 = require(\"@firebase/util\");\nvar storage_1 = require(\"../storage/storage\");\nvar util_7 = require(\"@firebase/util\");\nvar logger_1 = require(\"@firebase/logger\");\nvar logClient = new logger_1.Logger('@firebase/database');\n/**\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\n * @type {function(): number} Generated ID.\n */\nexports.LUIDGenerator = (function () {\n var id = 1;\n return function () {\n return id++;\n };\n})();\n/**\n * Sha1 hash of the input string\n * @param {!string} str The string to hash\n * @return {!string} The resulting hash\n */\nexports.sha1 = function (str) {\n var utf8Bytes = util_5.stringToByteArray(str);\n var sha1 = new util_4.Sha1();\n sha1.update(utf8Bytes);\n var sha1Bytes = sha1.digest();\n return util_3.base64.encodeByteArray(sha1Bytes);\n};\n/**\n * @param {...*} var_args\n * @return {string}\n * @private\n */\nvar buildLogMessage_ = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = '';\n for (var i = 0; i < var_args.length; i++) {\n if (Array.isArray(var_args[i]) ||\n (var_args[i] &&\n typeof var_args[i] === 'object' &&\n typeof var_args[i].length === 'number')) {\n message += buildLogMessage_.apply(null, var_args[i]);\n }\n else if (typeof var_args[i] === 'object') {\n message += util_6.stringify(var_args[i]);\n }\n else {\n message += var_args[i];\n }\n message += ' ';\n }\n return message;\n};\n/**\n * Use this for all debug messages in Firebase.\n * @type {?function(string)}\n */\nexports.logger = null;\n/**\n * Flag to check for log availability on first log message\n * @type {boolean}\n * @private\n */\nvar firstLog_ = true;\n/**\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\n * @param {boolean|?function(string)} logger_ A flag to turn on logging, or a custom logger\n * @param {boolean=} persistent Whether or not to persist logging settings across refreshes\n */\nexports.enableLogging = function (logger_, persistent) {\n util_1.assert(!persistent || (logger_ === true || logger_ === false), \"Can't turn on custom loggers persistently.\");\n if (logger_ === true) {\n logClient.logLevel = logger_1.LogLevel.VERBOSE;\n exports.logger = logClient.log.bind(logClient);\n if (persistent)\n storage_1.SessionStorage.set('logging_enabled', true);\n }\n else if (typeof logger_ === 'function') {\n exports.logger = logger_;\n }\n else {\n exports.logger = null;\n storage_1.SessionStorage.remove('logging_enabled');\n }\n};\n/**\n *\n * @param {...(string|Arguments)} var_args\n */\nexports.log = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (firstLog_ === true) {\n firstLog_ = false;\n if (exports.logger === null && storage_1.SessionStorage.get('logging_enabled') === true)\n exports.enableLogging(true);\n }\n if (exports.logger) {\n var message = buildLogMessage_.apply(null, var_args);\n exports.logger(message);\n }\n};\n/**\n * @param {!string} prefix\n * @return {function(...[*])}\n */\nexports.logWrapper = function (prefix) {\n return function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n exports.log.apply(void 0, [prefix].concat(var_args));\n };\n};\n/**\n * @param {...string} var_args\n */\nexports.error = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_.apply(void 0, var_args);\n logClient.error(message);\n};\n/**\n * @param {...string} var_args\n */\nexports.fatal = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = \"FIREBASE FATAL ERROR: \" + buildLogMessage_.apply(void 0, var_args);\n logClient.error(message);\n throw new Error(message);\n};\n/**\n * @param {...*} var_args\n */\nexports.warn = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = 'FIREBASE WARNING: ' + buildLogMessage_.apply(void 0, var_args);\n logClient.warn(message);\n};\n/**\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\n * does not use https.\n */\nexports.warnIfPageIsSecure = function () {\n // Be very careful accessing browser globals. Who knows what may or may not exist.\n if (typeof window !== 'undefined' &&\n window.location &&\n window.location.protocol &&\n window.location.protocol.indexOf('https:') !== -1) {\n exports.warn('Insecure Firebase access from a secure page. ' +\n 'Please use https in calls to new Firebase().');\n }\n};\n/**\n * @param {!String} methodName\n */\nexports.warnAboutUnsupportedMethod = function (methodName) {\n exports.warn(methodName +\n ' is unsupported and will likely change soon. ' +\n 'Please do not use.');\n};\n/**\n * Returns true if data is NaN, or +/- Infinity.\n * @param {*} data\n * @return {boolean}\n */\nexports.isInvalidJSONNumber = function (data) {\n return (typeof data === 'number' &&\n (data != data || // NaN\n data == Number.POSITIVE_INFINITY ||\n data == Number.NEGATIVE_INFINITY));\n};\n/**\n * @param {function()} fn\n */\nexports.executeWhenDOMReady = function (fn) {\n if (util_7.isNodeSdk() || document.readyState === 'complete') {\n fn();\n }\n else {\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\n // fire before onload), but fall back to onload.\n var called_1 = false;\n var wrappedFn_1 = function () {\n if (!document.body) {\n setTimeout(wrappedFn_1, Math.floor(10));\n return;\n }\n if (!called_1) {\n called_1 = true;\n fn();\n }\n };\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', wrappedFn_1, false);\n // fallback to onload.\n window.addEventListener('load', wrappedFn_1, false);\n }\n else if (document.attachEvent) {\n // IE.\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'complete')\n wrappedFn_1();\n });\n // fallback to onload.\n window.attachEvent('onload', wrappedFn_1);\n // jQuery has an extra hack for IE that we could employ (based on\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\n // I'm hoping we don't need it.\n }\n }\n};\n/**\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\n * @type {!string}\n */\nexports.MIN_NAME = '[MIN_NAME]';\n/**\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\n * @type {!string}\n */\nexports.MAX_NAME = '[MAX_NAME]';\n/**\n * Compares valid Firebase key names, plus min and max name\n * @param {!string} a\n * @param {!string} b\n * @return {!number}\n */\nexports.nameCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a === exports.MIN_NAME || b === exports.MAX_NAME) {\n return -1;\n }\n else if (b === exports.MIN_NAME || a === exports.MAX_NAME) {\n return 1;\n }\n else {\n var aAsInt = exports.tryParseInt(a), bAsInt = exports.tryParseInt(b);\n if (aAsInt !== null) {\n if (bAsInt !== null) {\n return aAsInt - bAsInt == 0 ? a.length - b.length : aAsInt - bAsInt;\n }\n else {\n return -1;\n }\n }\n else if (bAsInt !== null) {\n return 1;\n }\n else {\n return a < b ? -1 : 1;\n }\n }\n};\n/**\n * @param {!string} a\n * @param {!string} b\n * @return {!number} comparison result.\n */\nexports.stringCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a < b) {\n return -1;\n }\n else {\n return 1;\n }\n};\n/**\n * @param {string} key\n * @param {Object} obj\n * @return {*}\n */\nexports.requireKey = function (key, obj) {\n if (obj && key in obj) {\n return obj[key];\n }\n else {\n throw new Error('Missing required key (' + key + ') in object: ' + util_6.stringify(obj));\n }\n};\n/**\n * @param {*} obj\n * @return {string}\n */\nexports.ObjectToUniqueKey = function (obj) {\n if (typeof obj !== 'object' || obj === null)\n return util_6.stringify(obj);\n var keys = [];\n for (var k in obj) {\n keys.push(k);\n }\n // Export as json, but with the keys sorted.\n keys.sort();\n var key = '{';\n for (var i = 0; i < keys.length; i++) {\n if (i !== 0)\n key += ',';\n key += util_6.stringify(keys[i]);\n key += ':';\n key += exports.ObjectToUniqueKey(obj[keys[i]]);\n }\n key += '}';\n return key;\n};\n/**\n * Splits a string into a number of smaller segments of maximum size\n * @param {!string} str The string\n * @param {!number} segsize The maximum number of chars in the string.\n * @return {Array.} The string, split into appropriately-sized chunks\n */\nexports.splitStringBySize = function (str, segsize) {\n var len = str.length;\n if (len <= segsize) {\n return [str];\n }\n var dataSegs = [];\n for (var c = 0; c < len; c += segsize) {\n if (c + segsize > len) {\n dataSegs.push(str.substring(c, len));\n }\n else {\n dataSegs.push(str.substring(c, c + segsize));\n }\n }\n return dataSegs;\n};\n/**\n * Apply a function to each (key, value) pair in an object or\n * apply a function to each (index, value) pair in an array\n * @param {!(Object|Array)} obj The object or array to iterate over\n * @param {function(?, ?)} fn The function to apply\n */\nexports.each = function (obj, fn) {\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; ++i) {\n fn(i, obj[i]);\n }\n }\n else {\n /**\n * in the conversion of code we removed the goog.object.forEach\n * function which did a value,key callback. We standardized on\n * a single impl that does a key, value callback. So we invert\n * to not have to touch the `each` code points\n */\n util_2.forEach(obj, function (key, val) { return fn(val, key); });\n }\n};\n/**\n * Like goog.bind, but doesn't bother to create a closure if opt_context is null/undefined.\n * @param {function(*)} callback Callback function.\n * @param {?Object=} context Optional context to bind to.\n * @return {function(*)}\n */\nexports.bindCallback = function (callback, context) {\n return context ? callback.bind(context) : callback;\n};\n/**\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\n * I made one modification at the end and removed the NaN / Infinity\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\n * @param {!number} v A double\n * @return {string}\n */\nexports.doubleToIEEE754String = function (v) {\n util_1.assert(!exports.isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\n var ebits = 11, fbits = 52;\n var bias = (1 << (ebits - 1)) - 1, s, e, f, ln, i, bits, str;\n // Compute sign, exponent, fraction\n // Skip NaN / Infinity handling --MJL.\n if (v === 0) {\n e = 0;\n f = 0;\n s = 1 / v === -Infinity ? 1 : 0;\n }\n else {\n s = v < 0;\n v = Math.abs(v);\n if (v >= Math.pow(2, 1 - bias)) {\n // Normalized\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\n e = ln + bias;\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\n }\n else {\n // Denormalized\n e = 0;\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\n }\n }\n // Pack sign, exponent, fraction\n bits = [];\n for (i = fbits; i; i -= 1) {\n bits.push(f % 2 ? 1 : 0);\n f = Math.floor(f / 2);\n }\n for (i = ebits; i; i -= 1) {\n bits.push(e % 2 ? 1 : 0);\n e = Math.floor(e / 2);\n }\n bits.push(s ? 1 : 0);\n bits.reverse();\n str = bits.join('');\n // Return the data as a hex string. --MJL\n var hexByteString = '';\n for (i = 0; i < 64; i += 8) {\n var hexByte = parseInt(str.substr(i, 8), 2).toString(16);\n if (hexByte.length === 1)\n hexByte = '0' + hexByte;\n hexByteString = hexByteString + hexByte;\n }\n return hexByteString.toLowerCase();\n};\n/**\n * Used to detect if we're in a Chrome content script (which executes in an\n * isolated environment where long-polling doesn't work).\n * @return {boolean}\n */\nexports.isChromeExtensionContentScript = function () {\n return !!(typeof window === 'object' &&\n window['chrome'] &&\n window['chrome']['extension'] &&\n !/^chrome/.test(window.location.href));\n};\n/**\n * Used to detect if we're in a Windows 8 Store app.\n * @return {boolean}\n */\nexports.isWindowsStoreApp = function () {\n // Check for the presence of a couple WinRT globals\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\n};\n/**\n * Converts a server error code to a Javascript Error\n * @param {!string} code\n * @param {!Query} query\n * @return {Error}\n */\nexports.errorForServerCode = function (code, query) {\n var reason = 'Unknown Error';\n if (code === 'too_big') {\n reason =\n 'The data requested exceeds the maximum size ' +\n 'that can be accessed with a single request.';\n }\n else if (code == 'permission_denied') {\n reason = \"Client doesn't have permission to access the desired data.\";\n }\n else if (code == 'unavailable') {\n reason = 'The service is unavailable';\n }\n var error = new Error(code + ' at ' + query.path.toString() + ': ' + reason);\n error.code = code.toUpperCase();\n return error;\n};\n/**\n * Used to test for integer-looking strings\n * @type {RegExp}\n * @private\n */\nexports.INTEGER_REGEXP_ = new RegExp('^-?\\\\d{1,10}$');\n/**\n * If the string contains a 32-bit integer, return it. Else return null.\n * @param {!string} str\n * @return {?number}\n */\nexports.tryParseInt = function (str) {\n if (exports.INTEGER_REGEXP_.test(str)) {\n var intVal = Number(str);\n if (intVal >= -2147483648 && intVal <= 2147483647) {\n return intVal;\n }\n }\n return null;\n};\n/**\n * Helper to run some code but catch any exceptions and re-throw them later.\n * Useful for preventing user callbacks from breaking internal code.\n *\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\n * convenient (we don't have to try to figure out when is a safe point to\n * re-throw it), and the behavior seems reasonable:\n *\n * * If you aren't pausing on exceptions, you get an error in the console with\n * the correct stack trace.\n * * If you're pausing on all exceptions, the debugger will pause on your\n * exception and then again when we rethrow it.\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\n * on us re-throwing it.\n *\n * @param {!function()} fn The code to guard.\n */\nexports.exceptionGuard = function (fn) {\n try {\n fn();\n }\n catch (e) {\n // Re-throw exception when it's safe.\n setTimeout(function () {\n // It used to be that \"throw e\" would result in a good console error with\n // relevant context, but as of Chrome 39, you just get the firebase.js\n // file/line number where we re-throw it, which is useless. So we log\n // e.stack explicitly.\n var stack = e.stack || '';\n exports.warn('Exception was thrown by user callback.', stack);\n throw e;\n }, Math.floor(0));\n }\n};\n/**\n * Helper function to safely call opt_callback with the specified arguments. It:\n * 1. Turns into a no-op if opt_callback is null or undefined.\n * 2. Wraps the call inside exceptionGuard to prevent exceptions from breaking our state.\n *\n * @param {?Function=} callback Optional onComplete callback.\n * @param {...*} var_args Arbitrary args to be passed to opt_onComplete\n */\nexports.callUserCallback = function (callback) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (typeof callback === 'function') {\n exports.exceptionGuard(function () {\n callback.apply(void 0, var_args);\n });\n }\n};\n/**\n * @return {boolean} true if we think we're currently being crawled.\n */\nexports.beingCrawled = function () {\n var userAgent = (typeof window === 'object' &&\n window['navigator'] &&\n window['navigator']['userAgent']) ||\n '';\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\n // believe to support JavaScript/AJAX rendering.\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\n // would have seen the page\" is flaky if we don't treat it as a crawler.\n return (userAgent.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) >= 0);\n};\n/**\n * Export a property of an object using a getter function.\n *\n * @param {!Object} object\n * @param {string} name\n * @param {!function(): *} fnGet\n */\nexports.exportPropGetter = function (object, name, fnGet) {\n Object.defineProperty(object, name, { get: fnGet });\n};\n/**\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\n *\n * It is removed with clearTimeout() as normal.\n *\n * @param {Function} fn Function to run.\n * @param {number} time Milliseconds to wait before running.\n * @return {number|Object} The setTimeout() return value.\n */\nexports.setTimeoutNonBlocking = function (fn, time) {\n var timeout = setTimeout(fn, time);\n if (typeof timeout === 'object' && timeout['unref']) {\n timeout['unref']();\n }\n return timeout;\n};\n\n//# sourceMappingURL=util.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/util.js\n// module id = 1\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * An immutable object representing a parsed path. It's immutable so that you\n * can pass them around to other functions without worrying about them changing\n * it.\n */\nvar Path = /** @class */ (function () {\n /**\n * @param {string|Array.} pathOrString Path string to parse,\n * or another path, or the raw tokens array\n * @param {number=} pieceNum\n */\n function Path(pathOrString, pieceNum) {\n if (pieceNum === void 0) {\n this.pieces_ = pathOrString.split('/');\n // Remove empty pieces.\n var copyTo = 0;\n for (var i = 0; i < this.pieces_.length; i++) {\n if (this.pieces_[i].length > 0) {\n this.pieces_[copyTo] = this.pieces_[i];\n copyTo++;\n }\n }\n this.pieces_.length = copyTo;\n this.pieceNum_ = 0;\n }\n else {\n this.pieces_ = pathOrString;\n this.pieceNum_ = pieceNum;\n }\n }\n Object.defineProperty(Path, \"Empty\", {\n /**\n * Singleton to represent an empty path\n *\n * @const\n */\n get: function () {\n return new Path('');\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.getFront = function () {\n if (this.pieceNum_ >= this.pieces_.length)\n return null;\n return this.pieces_[this.pieceNum_];\n };\n /**\n * @return {number} The number of segments in this path\n */\n Path.prototype.getLength = function () {\n return this.pieces_.length - this.pieceNum_;\n };\n /**\n * @return {!Path}\n */\n Path.prototype.popFront = function () {\n var pieceNum = this.pieceNum_;\n if (pieceNum < this.pieces_.length) {\n pieceNum++;\n }\n return new Path(this.pieces_, pieceNum);\n };\n /**\n * @return {?string}\n */\n Path.prototype.getBack = function () {\n if (this.pieceNum_ < this.pieces_.length)\n return this.pieces_[this.pieces_.length - 1];\n return null;\n };\n Path.prototype.toString = function () {\n var pathString = '';\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '')\n pathString += '/' + this.pieces_[i];\n }\n return pathString || '/';\n };\n Path.prototype.toUrlEncodedString = function () {\n var pathString = '';\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '')\n pathString += '/' + encodeURIComponent(String(this.pieces_[i]));\n }\n return pathString || '/';\n };\n /**\n * Shallow copy of the parts of the path.\n *\n * @param {number=} begin\n * @return {!Array}\n */\n Path.prototype.slice = function (begin) {\n if (begin === void 0) { begin = 0; }\n return this.pieces_.slice(this.pieceNum_ + begin);\n };\n /**\n * @return {?Path}\n */\n Path.prototype.parent = function () {\n if (this.pieceNum_ >= this.pieces_.length)\n return null;\n var pieces = [];\n for (var i = this.pieceNum_; i < this.pieces_.length - 1; i++)\n pieces.push(this.pieces_[i]);\n return new Path(pieces, 0);\n };\n /**\n * @param {string|!Path} childPathObj\n * @return {!Path}\n */\n Path.prototype.child = function (childPathObj) {\n var pieces = [];\n for (var i = this.pieceNum_; i < this.pieces_.length; i++)\n pieces.push(this.pieces_[i]);\n if (childPathObj instanceof Path) {\n for (var i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\n pieces.push(childPathObj.pieces_[i]);\n }\n }\n else {\n var childPieces = childPathObj.split('/');\n for (var i = 0; i < childPieces.length; i++) {\n if (childPieces[i].length > 0)\n pieces.push(childPieces[i]);\n }\n }\n return new Path(pieces, 0);\n };\n /**\n * @return {boolean} True if there are no segments in this path\n */\n Path.prototype.isEmpty = function () {\n return this.pieceNum_ >= this.pieces_.length;\n };\n /**\n * @param {!Path} outerPath\n * @param {!Path} innerPath\n * @return {!Path} The path from outerPath to innerPath\n */\n Path.relativePath = function (outerPath, innerPath) {\n var outer = outerPath.getFront(), inner = innerPath.getFront();\n if (outer === null) {\n return innerPath;\n }\n else if (outer === inner) {\n return Path.relativePath(outerPath.popFront(), innerPath.popFront());\n }\n else {\n throw new Error('INTERNAL ERROR: innerPath (' +\n innerPath +\n ') is not within ' +\n 'outerPath (' +\n outerPath +\n ')');\n }\n };\n /**\n * @param {!Path} left\n * @param {!Path} right\n * @return {number} -1, 0, 1 if left is less, equal, or greater than the right.\n */\n Path.comparePaths = function (left, right) {\n var leftKeys = left.slice();\n var rightKeys = right.slice();\n for (var i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\n var cmp = util_1.nameCompare(leftKeys[i], rightKeys[i]);\n if (cmp !== 0)\n return cmp;\n }\n if (leftKeys.length === rightKeys.length)\n return 0;\n return leftKeys.length < rightKeys.length ? -1 : 1;\n };\n /**\n *\n * @param {Path} other\n * @return {boolean} true if paths are the same.\n */\n Path.prototype.equals = function (other) {\n if (this.getLength() !== other.getLength()) {\n return false;\n }\n for (var i = this.pieceNum_, j = other.pieceNum_; i <= this.pieces_.length; i++, j++) {\n if (this.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n }\n return true;\n };\n /**\n *\n * @param {!Path} other\n * @return {boolean} True if this path is a parent (or the same as) other\n */\n Path.prototype.contains = function (other) {\n var i = this.pieceNum_;\n var j = other.pieceNum_;\n if (this.getLength() > other.getLength()) {\n return false;\n }\n while (i < this.pieces_.length) {\n if (this.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n ++i;\n ++j;\n }\n return true;\n };\n return Path;\n}()); // end Path\nexports.Path = Path;\n/**\n * Dynamic (mutable) path used to count path lengths.\n *\n * This class is used to efficiently check paths for valid\n * length (in UTF8 bytes) and depth (used in path validation).\n *\n * Throws Error exception if path is ever invalid.\n *\n * The definition of a path always begins with '/'.\n */\nvar ValidationPath = /** @class */ (function () {\n /**\n * @param {!Path} path Initial Path.\n * @param {string} errorPrefix_ Prefix for any error messages.\n */\n function ValidationPath(path, errorPrefix_) {\n this.errorPrefix_ = errorPrefix_;\n /** @type {!Array} */\n this.parts_ = path.slice();\n /** @type {number} Initialize to number of '/' chars needed in path. */\n this.byteLength_ = Math.max(1, this.parts_.length);\n for (var i = 0; i < this.parts_.length; i++) {\n this.byteLength_ += util_2.stringLength(this.parts_[i]);\n }\n this.checkValid_();\n }\n Object.defineProperty(ValidationPath, \"MAX_PATH_DEPTH\", {\n /** @const {number} Maximum key depth. */\n get: function () {\n return 32;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValidationPath, \"MAX_PATH_LENGTH_BYTES\", {\n /** @const {number} Maximum number of (UTF8) bytes in a Firebase path. */\n get: function () {\n return 768;\n },\n enumerable: true,\n configurable: true\n });\n /** @param {string} child */\n ValidationPath.prototype.push = function (child) {\n // Count the needed '/'\n if (this.parts_.length > 0) {\n this.byteLength_ += 1;\n }\n this.parts_.push(child);\n this.byteLength_ += util_2.stringLength(child);\n this.checkValid_();\n };\n ValidationPath.prototype.pop = function () {\n var last = this.parts_.pop();\n this.byteLength_ -= util_2.stringLength(last);\n // Un-count the previous '/'\n if (this.parts_.length > 0) {\n this.byteLength_ -= 1;\n }\n };\n ValidationPath.prototype.checkValid_ = function () {\n if (this.byteLength_ > ValidationPath.MAX_PATH_LENGTH_BYTES) {\n throw new Error(this.errorPrefix_ +\n 'has a key path longer than ' +\n ValidationPath.MAX_PATH_LENGTH_BYTES +\n ' bytes (' +\n this.byteLength_ +\n ').');\n }\n if (this.parts_.length > ValidationPath.MAX_PATH_DEPTH) {\n throw new Error(this.errorPrefix_ +\n 'path specified exceeds the maximum depth that can be written (' +\n ValidationPath.MAX_PATH_DEPTH +\n ') or object contains a cycle ' +\n this.toErrorString());\n }\n };\n /**\n * String for use in error messages - uses '.' notation for path.\n *\n * @return {string}\n */\n ValidationPath.prototype.toErrorString = function () {\n if (this.parts_.length == 0) {\n return '';\n }\n return \"in property '\" + this.parts_.join('.') + \"'\";\n };\n return ValidationPath;\n}());\nexports.ValidationPath = ValidationPath;\n\n//# sourceMappingURL=Path.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/Path.js\n// module id = 3\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Index_1 = require(\"./Index\");\nvar util_1 = require(\"../../util/util\");\nvar Node_1 = require(\"../Node\");\nvar LeafNode_1 = require(\"../LeafNode\");\nvar nodeFromJSON;\nvar MAX_NODE;\nfunction setNodeFromJSON(val) {\n nodeFromJSON = val;\n}\nexports.setNodeFromJSON = setNodeFromJSON;\nfunction setMaxNode(val) {\n MAX_NODE = val;\n}\nexports.setMaxNode = setMaxNode;\n/**\n * @constructor\n * @extends {Index}\n * @private\n */\nvar PriorityIndex = /** @class */ (function (_super) {\n tslib_1.__extends(PriorityIndex, _super);\n function PriorityIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.compare = function (a, b) {\n var aPriority = a.node.getPriority();\n var bPriority = b.node.getPriority();\n var indexCmp = aPriority.compareTo(bPriority);\n if (indexCmp === 0) {\n return util_1.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.isDefinedOn = function (node) {\n return !node.getPriority().isEmpty();\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return !oldNode.getPriority().equals(newNode.getPriority());\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.maxPost = function () {\n return new Node_1.NamedNode(util_1.MAX_NAME, new LeafNode_1.LeafNode('[PRIORITY-POST]', MAX_NODE));\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n PriorityIndex.prototype.makePost = function (indexValue, name) {\n var priorityNode = nodeFromJSON(indexValue);\n return new Node_1.NamedNode(name, new LeafNode_1.LeafNode('[PRIORITY-POST]', priorityNode));\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n PriorityIndex.prototype.toString = function () {\n return '.priority';\n };\n return PriorityIndex;\n}(Index_1.Index));\nexports.PriorityIndex = PriorityIndex;\nexports.PRIORITY_INDEX = new PriorityIndex();\n\n//# sourceMappingURL=PriorityIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/PriorityIndex.js\n// module id = 4\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar SortedMap_1 = require(\"../util/SortedMap\");\nvar Node_1 = require(\"./Node\");\nvar snap_1 = require(\"./snap\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar KeyIndex_1 = require(\"./indexes/KeyIndex\");\nvar IndexMap_1 = require(\"./IndexMap\");\nvar LeafNode_1 = require(\"./LeafNode\");\nvar comparators_1 = require(\"./comparators\");\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\nvar EMPTY_NODE;\n/**\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\n * (i.e. nodes with children). It implements Node and stores the\n * list of children in the children property, sorted by child name.\n *\n * @constructor\n * @implements {Node}\n */\nvar ChildrenNode = /** @class */ (function () {\n /**\n *\n * @param {!SortedMap.} children_ List of children\n * of this node..\n * @param {?Node} priorityNode_ The priority of this node (as a snapshot node).\n * @param {!IndexMap} indexMap_\n */\n function ChildrenNode(children_, priorityNode_, indexMap_) {\n this.children_ = children_;\n this.priorityNode_ = priorityNode_;\n this.indexMap_ = indexMap_;\n this.lazyHash_ = null;\n /**\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\n * class instead of an empty ChildrenNode.\n */\n if (this.priorityNode_) {\n snap_1.validatePriorityNode(this.priorityNode_);\n }\n if (this.children_.isEmpty()) {\n util_1.assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\n }\n }\n Object.defineProperty(ChildrenNode, \"EMPTY_NODE\", {\n get: function () {\n return (EMPTY_NODE ||\n (EMPTY_NODE = new ChildrenNode(new SortedMap_1.SortedMap(comparators_1.NAME_COMPARATOR), null, IndexMap_1.IndexMap.Default)));\n },\n enumerable: true,\n configurable: true\n });\n /** @inheritDoc */\n ChildrenNode.prototype.isLeafNode = function () {\n return false;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getPriority = function () {\n return this.priorityNode_ || EMPTY_NODE;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updatePriority = function (newPriorityNode) {\n if (this.children_.isEmpty()) {\n // Don't allow priorities on empty nodes\n return this;\n }\n else {\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getImmediateChild = function (childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.getPriority();\n }\n else {\n var child = this.children_.get(childName);\n return child === null ? EMPTY_NODE : child;\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getChild = function (path) {\n var front = path.getFront();\n if (front === null)\n return this;\n return this.getImmediateChild(front).getChild(path.popFront());\n };\n /** @inheritDoc */\n ChildrenNode.prototype.hasChild = function (childName) {\n return this.children_.get(childName) !== null;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updateImmediateChild = function (childName, newChildNode) {\n util_1.assert(newChildNode, 'We should always be passing snapshot nodes');\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else {\n var namedNode = new Node_1.NamedNode(childName, newChildNode);\n var newChildren = void 0, newIndexMap = void 0, newPriority = void 0;\n if (newChildNode.isEmpty()) {\n newChildren = this.children_.remove(childName);\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\n }\n else {\n newChildren = this.children_.insert(childName, newChildNode);\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\n }\n newPriority = newChildren.isEmpty() ? EMPTY_NODE : this.priorityNode_;\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updateChild = function (path, newChildNode) {\n var front = path.getFront();\n if (front === null) {\n return newChildNode;\n }\n else {\n util_1.assert(path.getFront() !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\n var newImmediateChild = this.getImmediateChild(front).updateChild(path.popFront(), newChildNode);\n return this.updateImmediateChild(front, newImmediateChild);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.isEmpty = function () {\n return this.children_.isEmpty();\n };\n /** @inheritDoc */\n ChildrenNode.prototype.numChildren = function () {\n return this.children_.count();\n };\n /** @inheritDoc */\n ChildrenNode.prototype.val = function (exportFormat) {\n if (this.isEmpty())\n return null;\n var obj = {};\n var numKeys = 0, maxKey = 0, allIntegerKeys = true;\n this.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n obj[key] = childNode.val(exportFormat);\n numKeys++;\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\n maxKey = Math.max(maxKey, Number(key));\n }\n else {\n allIntegerKeys = false;\n }\n });\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\n // convert to array.\n var array = [];\n for (var key in obj)\n array[key] = obj[key];\n return array;\n }\n else {\n if (exportFormat && !this.getPriority().isEmpty()) {\n obj['.priority'] = this.getPriority().val();\n }\n return obj;\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.hash = function () {\n if (this.lazyHash_ === null) {\n var toHash_1 = '';\n if (!this.getPriority().isEmpty())\n toHash_1 +=\n 'priority:' +\n snap_1.priorityHashText(this.getPriority().val()) +\n ':';\n this.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n var childHash = childNode.hash();\n if (childHash !== '')\n toHash_1 += ':' + key + ':' + childHash;\n });\n this.lazyHash_ = toHash_1 === '' ? '' : util_2.sha1(toHash_1);\n }\n return this.lazyHash_;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getPredecessorChildName = function (childName, childNode, index) {\n var idx = this.resolveIndex_(index);\n if (idx) {\n var predecessor = idx.getPredecessorKey(new Node_1.NamedNode(childName, childNode));\n return predecessor ? predecessor.name : null;\n }\n else {\n return this.children_.getPredecessorKey(childName);\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?string}\n */\n ChildrenNode.prototype.getFirstChildName = function (indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n var minKey = idx.minKey();\n return minKey && minKey.name;\n }\n else {\n return this.children_.minKey();\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?NamedNode}\n */\n ChildrenNode.prototype.getFirstChild = function (indexDefinition) {\n var minKey = this.getFirstChildName(indexDefinition);\n if (minKey) {\n return new Node_1.NamedNode(minKey, this.children_.get(minKey));\n }\n else {\n return null;\n }\n };\n /**\n * Given an index, return the key name of the largest value we have, according to that index\n * @param {!Index} indexDefinition\n * @return {?string}\n */\n ChildrenNode.prototype.getLastChildName = function (indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n var maxKey = idx.maxKey();\n return maxKey && maxKey.name;\n }\n else {\n return this.children_.maxKey();\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?NamedNode}\n */\n ChildrenNode.prototype.getLastChild = function (indexDefinition) {\n var maxKey = this.getLastChildName(indexDefinition);\n if (maxKey) {\n return new Node_1.NamedNode(maxKey, this.children_.get(maxKey));\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.forEachChild = function (index, action) {\n var idx = this.resolveIndex_(index);\n if (idx) {\n return idx.inorderTraversal(function (wrappedNode) {\n return action(wrappedNode.name, wrappedNode.node);\n });\n }\n else {\n return this.children_.inorderTraversal(action);\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {SortedMapIterator}\n */\n ChildrenNode.prototype.getIterator = function (indexDefinition) {\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\n };\n /**\n *\n * @param {!NamedNode} startPost\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getIteratorFrom = function (startPost, indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getIteratorFrom(startPost, function (key) { return key; });\n }\n else {\n var iterator = this.children_.getIteratorFrom(startPost.name, Node_1.NamedNode.Wrap);\n var next = iterator.peek();\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getReverseIterator = function (indexDefinition) {\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\n };\n /**\n * @param {!NamedNode} endPost\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getReverseIteratorFrom = function (endPost, indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getReverseIteratorFrom(endPost, function (key) {\n return key;\n });\n }\n else {\n var iterator = this.children_.getReverseIteratorFrom(endPost.name, Node_1.NamedNode.Wrap);\n var next = iterator.peek();\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.compareTo = function (other) {\n if (this.isEmpty()) {\n if (other.isEmpty()) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (other.isLeafNode() || other.isEmpty()) {\n return 1;\n }\n else if (other === exports.MAX_NODE) {\n return -1;\n }\n else {\n // Must be another node with children.\n return 0;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.withIndex = function (indexDefinition) {\n if (indexDefinition === KeyIndex_1.KEY_INDEX ||\n this.indexMap_.hasIndex(indexDefinition)) {\n return this;\n }\n else {\n var newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.isIndexed = function (index) {\n return index === KeyIndex_1.KEY_INDEX || this.indexMap_.hasIndex(index);\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.equals = function (other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n return false;\n }\n else {\n var otherChildrenNode = other;\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\n return false;\n }\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\n var thisIter = this.getIterator(PriorityIndex_1.PRIORITY_INDEX);\n var otherIter = otherChildrenNode.getIterator(PriorityIndex_1.PRIORITY_INDEX);\n var thisCurrent = thisIter.getNext();\n var otherCurrent = otherIter.getNext();\n while (thisCurrent && otherCurrent) {\n if (thisCurrent.name !== otherCurrent.name ||\n !thisCurrent.node.equals(otherCurrent.node)) {\n return false;\n }\n thisCurrent = thisIter.getNext();\n otherCurrent = otherIter.getNext();\n }\n return thisCurrent === null && otherCurrent === null;\n }\n else {\n return false;\n }\n }\n };\n /**\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\n * instead.\n *\n * @private\n * @param {!Index} indexDefinition\n * @return {?SortedMap.}\n */\n ChildrenNode.prototype.resolveIndex_ = function (indexDefinition) {\n if (indexDefinition === KeyIndex_1.KEY_INDEX) {\n return null;\n }\n else {\n return this.indexMap_.get(indexDefinition.toString());\n }\n };\n /**\n * @private\n * @type {RegExp}\n */\n ChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\n return ChildrenNode;\n}());\nexports.ChildrenNode = ChildrenNode;\n/**\n * @constructor\n * @extends {ChildrenNode}\n * @private\n */\nvar MaxNode = /** @class */ (function (_super) {\n tslib_1.__extends(MaxNode, _super);\n function MaxNode() {\n return _super.call(this, new SortedMap_1.SortedMap(comparators_1.NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap_1.IndexMap.Default) || this;\n }\n MaxNode.prototype.compareTo = function (other) {\n if (other === this) {\n return 0;\n }\n else {\n return 1;\n }\n };\n MaxNode.prototype.equals = function (other) {\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\n return other === this;\n };\n MaxNode.prototype.getPriority = function () {\n return this;\n };\n MaxNode.prototype.getImmediateChild = function (childName) {\n return ChildrenNode.EMPTY_NODE;\n };\n MaxNode.prototype.isEmpty = function () {\n return false;\n };\n return MaxNode;\n}(ChildrenNode));\nexports.MaxNode = MaxNode;\n/**\n * Marker that will sort higher than any other snapshot.\n * @type {!MAX_NODE}\n * @const\n */\nexports.MAX_NODE = new MaxNode();\nObject.defineProperties(Node_1.NamedNode, {\n MIN: {\n value: new Node_1.NamedNode(util_2.MIN_NAME, ChildrenNode.EMPTY_NODE)\n },\n MAX: {\n value: new Node_1.NamedNode(util_2.MAX_NAME, exports.MAX_NODE)\n }\n});\n/**\n * Reference Extensions\n */\nKeyIndex_1.KeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\nLeafNode_1.LeafNode.__childrenNodeConstructor = ChildrenNode;\nsnap_1.setMaxNode(exports.MAX_NODE);\nPriorityIndex_1.setMaxNode(exports.MAX_NODE);\n\n//# sourceMappingURL=ChildrenNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/ChildrenNode.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n *\n * @param {!string} name\n * @param {!Node} node\n * @constructor\n * @struct\n */\nvar NamedNode = /** @class */ (function () {\n function NamedNode(name, node) {\n this.name = name;\n this.node = node;\n }\n /**\n *\n * @param {!string} name\n * @param {!Node} node\n * @return {NamedNode}\n */\n NamedNode.Wrap = function (name, node) {\n return new NamedNode(name, node);\n };\n return NamedNode;\n}());\nexports.NamedNode = NamedNode;\n\n//# sourceMappingURL=Node.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/Node.js\n// module id = 6\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"./Path\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\n/**\n * True for invalid Firebase keys\n * @type {RegExp}\n * @private\n */\nexports.INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\n/**\n * True for invalid Firebase paths.\n * Allows '/' in paths.\n * @type {RegExp}\n * @private\n */\nexports.INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\n/**\n * Maximum number of characters to allow in leaf value\n * @type {number}\n * @private\n */\nexports.MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\n/**\n * @param {*} key\n * @return {boolean}\n */\nexports.isValidKey = function (key) {\n return (typeof key === 'string' && key.length !== 0 && !exports.INVALID_KEY_REGEX_.test(key));\n};\n/**\n * @param {string} pathString\n * @return {boolean}\n */\nexports.isValidPathString = function (pathString) {\n return (typeof pathString === 'string' &&\n pathString.length !== 0 &&\n !exports.INVALID_PATH_REGEX_.test(pathString));\n};\n/**\n * @param {string} pathString\n * @return {boolean}\n */\nexports.isValidRootPathString = function (pathString) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n return exports.isValidPathString(pathString);\n};\n/**\n * @param {*} priority\n * @return {boolean}\n */\nexports.isValidPriority = function (priority) {\n return (priority === null ||\n typeof priority === 'string' ||\n (typeof priority === 'number' && !util_2.isInvalidJSONNumber(priority)) ||\n (priority && typeof priority === 'object' && util_1.contains(priority, '.sv')));\n};\n/**\n * Pre-validate a datum passed as an argument to Firebase function.\n *\n * @param {string} fnName\n * @param {number} argumentNumber\n * @param {*} data\n * @param {!Path} path\n * @param {boolean} optional\n */\nexports.validateFirebaseDataArg = function (fnName, argumentNumber, data, path, optional) {\n if (optional && data === undefined)\n return;\n exports.validateFirebaseData(util_3.errorPrefix(fnName, argumentNumber, optional), data, path);\n};\n/**\n * Validate a data object client-side before sending to server.\n *\n * @param {string} errorPrefix\n * @param {*} data\n * @param {!Path|!ValidationPath} path_\n */\nexports.validateFirebaseData = function (errorPrefix, data, path_) {\n var path = path_ instanceof Path_1.Path ? new Path_1.ValidationPath(path_, errorPrefix) : path_;\n if (data === undefined) {\n throw new Error(errorPrefix + 'contains undefined ' + path.toErrorString());\n }\n if (typeof data === 'function') {\n throw new Error(errorPrefix +\n 'contains a function ' +\n path.toErrorString() +\n ' with contents = ' +\n data.toString());\n }\n if (util_2.isInvalidJSONNumber(data)) {\n throw new Error(errorPrefix + 'contains ' + data.toString() + ' ' + path.toErrorString());\n }\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\n if (typeof data === 'string' &&\n data.length > exports.MAX_LEAF_SIZE_ / 3 &&\n util_4.stringLength(data) > exports.MAX_LEAF_SIZE_) {\n throw new Error(errorPrefix +\n 'contains a string greater than ' +\n exports.MAX_LEAF_SIZE_ +\n ' utf8 bytes ' +\n path.toErrorString() +\n \" ('\" +\n data.substring(0, 50) +\n \"...')\");\n }\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\n // to save extra walking of large objects.\n if (data && typeof data === 'object') {\n var hasDotValue_1 = false, hasActualChild_1 = false;\n util_1.forEach(data, function (key, value) {\n if (key === '.value') {\n hasDotValue_1 = true;\n }\n else if (key !== '.priority' && key !== '.sv') {\n hasActualChild_1 = true;\n if (!exports.isValidKey(key)) {\n throw new Error(errorPrefix +\n ' contains an invalid key (' +\n key +\n ') ' +\n path.toErrorString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n path.push(key);\n exports.validateFirebaseData(errorPrefix, value, path);\n path.pop();\n });\n if (hasDotValue_1 && hasActualChild_1) {\n throw new Error(errorPrefix +\n ' contains \".value\" child ' +\n path.toErrorString() +\n ' in addition to actual children.');\n }\n }\n};\n/**\n * Pre-validate paths passed in the firebase function.\n *\n * @param {string} errorPrefix\n * @param {Array} mergePaths\n */\nexports.validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\n var i, curPath;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n var keys = curPath.slice();\n for (var j = 0; j < keys.length; j++) {\n if (keys[j] === '.priority' && j === keys.length - 1) {\n // .priority is OK\n }\n else if (!exports.isValidKey(keys[j])) {\n throw new Error(errorPrefix +\n 'contains an invalid key (' +\n keys[j] +\n ') in path ' +\n curPath.toString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n }\n // Check that update keys are not descendants of each other.\n // We rely on the property that sorting guarantees that ancestors come\n // right before descendants.\n mergePaths.sort(Path_1.Path.comparePaths);\n var prevPath = null;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n if (prevPath !== null && prevPath.contains(curPath)) {\n throw new Error(errorPrefix +\n 'contains a path ' +\n prevPath.toString() +\n ' that is ancestor of another path ' +\n curPath.toString());\n }\n prevPath = curPath;\n }\n};\n/**\n * pre-validate an object passed as an argument to firebase function (\n * must be an object - e.g. for firebase.update()).\n *\n * @param {string} fnName\n * @param {number} argumentNumber\n * @param {*} data\n * @param {!Path} path\n * @param {boolean} optional\n */\nexports.validateFirebaseMergeDataArg = function (fnName, argumentNumber, data, path, optional) {\n if (optional && data === undefined)\n return;\n var errorPrefix = util_3.errorPrefix(fnName, argumentNumber, optional);\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\n throw new Error(errorPrefix + ' must be an object containing the children to replace.');\n }\n var mergePaths = [];\n util_1.forEach(data, function (key, value) {\n var curPath = new Path_1.Path(key);\n exports.validateFirebaseData(errorPrefix, value, path.child(curPath));\n if (curPath.getBack() === '.priority') {\n if (!exports.isValidPriority(value)) {\n throw new Error(errorPrefix +\n \"contains an invalid value for '\" +\n curPath.toString() +\n \"', which must be a valid \" +\n 'Firebase priority (a string, finite number, server value, or null).');\n }\n }\n mergePaths.push(curPath);\n });\n exports.validateFirebaseMergePaths(errorPrefix, mergePaths);\n};\nexports.validatePriority = function (fnName, argumentNumber, priority, optional) {\n if (optional && priority === undefined)\n return;\n if (util_2.isInvalidJSONNumber(priority))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'is ' +\n priority.toString() +\n ', but must be a valid Firebase priority (a string, finite number, ' +\n 'server value, or null).');\n // Special case to allow importing data with a .sv.\n if (!exports.isValidPriority(priority))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid Firebase priority ' +\n '(a string, finite number, server value, or null).');\n};\nexports.validateEventType = function (fnName, argumentNumber, eventType, optional) {\n if (optional && eventType === undefined)\n return;\n switch (eventType) {\n case 'value':\n case 'child_added':\n case 'child_removed':\n case 'child_changed':\n case 'child_moved':\n break;\n default:\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\n '\"child_changed\", or \"child_moved\".');\n }\n};\nexports.validateKey = function (fnName, argumentNumber, key, optional) {\n if (optional && key === undefined)\n return;\n if (!exports.isValidKey(key))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'was an invalid key = \"' +\n key +\n '\". Firebase keys must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\n};\nexports.validatePathString = function (fnName, argumentNumber, pathString, optional) {\n if (optional && pathString === undefined)\n return;\n if (!exports.isValidPathString(pathString))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'was an invalid path = \"' +\n pathString +\n '\". Paths must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\n};\nexports.validateRootPathString = function (fnName, argumentNumber, pathString, optional) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n exports.validatePathString(fnName, argumentNumber, pathString, optional);\n};\nexports.validateWritablePath = function (fnName, path) {\n if (path.getFront() === '.info') {\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\n }\n};\nexports.validateUrl = function (fnName, argumentNumber, parsedUrl) {\n // TODO = Validate server better.\n var pathString = parsedUrl.path.toString();\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\n parsedUrl.repoInfo.host.length === 0 ||\n (!exports.isValidKey(parsedUrl.repoInfo.namespace) &&\n parsedUrl.repoInfo.host.split(':')[0] !== 'localhost') ||\n (pathString.length !== 0 && !exports.isValidRootPathString(pathString))) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, false) +\n 'must be a valid firebase URL and ' +\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\n }\n};\nexports.validateCredential = function (fnName, argumentNumber, cred, optional) {\n if (optional && cred === undefined)\n return;\n if (!(typeof cred === 'string'))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid credential (a string).');\n};\nexports.validateBoolean = function (fnName, argumentNumber, bool, optional) {\n if (optional && bool === undefined)\n return;\n if (typeof bool !== 'boolean')\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) + 'must be a boolean.');\n};\nexports.validateString = function (fnName, argumentNumber, string, optional) {\n if (optional && string === undefined)\n return;\n if (!(typeof string === 'string')) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid string.');\n }\n};\nexports.validateObject = function (fnName, argumentNumber, obj, optional) {\n if (optional && obj === undefined)\n return;\n if (!(obj && typeof obj === 'object') || obj === null) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid object.');\n }\n};\nexports.validateObjectContainsKey = function (fnName, argumentNumber, obj, key, optional, opt_type) {\n var objectContainsKey = obj && typeof obj === 'object' && util_1.contains(obj, key);\n if (!objectContainsKey) {\n if (optional) {\n return;\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must contain the key \"' +\n key +\n '\"');\n }\n }\n if (opt_type) {\n var val = util_1.safeGet(obj, key);\n if ((opt_type === 'number' && !(typeof val === 'number')) ||\n (opt_type === 'string' && !(typeof val === 'string')) ||\n (opt_type === 'boolean' && !(typeof val === 'boolean')) ||\n (opt_type === 'function' && !(typeof val === 'function')) ||\n (opt_type === 'object' && !(typeof val === 'object') && val)) {\n if (optional) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'contains invalid value for key \"' +\n key +\n '\" (must be of type \"' +\n opt_type +\n '\")');\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must contain the key \"' +\n key +\n '\" with type \"' +\n opt_type +\n '\"');\n }\n }\n }\n};\n\n//# sourceMappingURL=validation.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/validation.js\n// module id = 8\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n *\n * @enum\n */\nvar OperationType;\n(function (OperationType) {\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\n})(OperationType = exports.OperationType || (exports.OperationType = {}));\n/**\n * @param {boolean} fromUser\n * @param {boolean} fromServer\n * @param {?string} queryId\n * @param {boolean} tagged\n * @constructor\n */\nvar OperationSource = /** @class */ (function () {\n function OperationSource(fromUser, fromServer, queryId, tagged) {\n this.fromUser = fromUser;\n this.fromServer = fromServer;\n this.queryId = queryId;\n this.tagged = tagged;\n util_1.assert(!tagged || fromServer, 'Tagged queries must be from server.');\n }\n /**\n * @const\n * @type {!OperationSource}\n */\n OperationSource.User = new OperationSource(\n /*fromUser=*/ true, false, null, \n /*tagged=*/ false);\n /**\n * @const\n * @type {!OperationSource}\n */\n OperationSource.Server = new OperationSource(false, \n /*fromServer=*/ true, null, \n /*tagged=*/ false);\n /**\n * @param {string} queryId\n * @return {!OperationSource}\n */\n OperationSource.forServerTaggedQuery = function (queryId) {\n return new OperationSource(false, \n /*fromServer=*/ true, queryId, \n /*tagged=*/ true);\n };\n return OperationSource;\n}());\nexports.OperationSource = OperationSource;\n\n//# sourceMappingURL=Operation.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Operation.js\n// module id = 9\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @constructor\n * @struct\n * @param {!string} type The event type\n * @param {!Node} snapshotNode The data\n * @param {string=} childName The name for this child, if it's a child event\n * @param {Node=} oldSnap Used for intermediate processing of child changed events\n * @param {string=} prevName The name for the previous child, if applicable\n */\nvar Change = /** @class */ (function () {\n function Change(type, snapshotNode, childName, oldSnap, prevName) {\n this.type = type;\n this.snapshotNode = snapshotNode;\n this.childName = childName;\n this.oldSnap = oldSnap;\n this.prevName = prevName;\n }\n /**\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.valueChange = function (snapshot) {\n return new Change(Change.VALUE, snapshot);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childAddedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_ADDED, snapshot, childKey);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childRemovedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_REMOVED, snapshot, childKey);\n };\n /**\n * @param {string} childKey\n * @param {!Node} newSnapshot\n * @param {!Node} oldSnapshot\n * @return {!Change}\n */\n Change.childChangedChange = function (childKey, newSnapshot, oldSnapshot) {\n return new Change(Change.CHILD_CHANGED, newSnapshot, childKey, oldSnapshot);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childMovedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_MOVED, snapshot, childKey);\n };\n //event types\n /** Event type for a child added */\n Change.CHILD_ADDED = 'child_added';\n /** Event type for a child removed */\n Change.CHILD_REMOVED = 'child_removed';\n /** Event type for a child changed */\n Change.CHILD_CHANGED = 'child_changed';\n /** Event type for a child moved */\n Change.CHILD_MOVED = 'child_moved';\n /** Event type for a value change */\n Change.VALUE = 'value';\n return Change;\n}());\nexports.Change = Change;\n\n//# sourceMappingURL=Change.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/Change.js\n// module id = 10\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Index_1 = require(\"./Index\");\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\nvar util_2 = require(\"@firebase/util\");\nvar __EMPTY_NODE;\nvar KeyIndex = /** @class */ (function (_super) {\n tslib_1.__extends(KeyIndex, _super);\n function KeyIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(KeyIndex, \"__EMPTY_NODE\", {\n get: function () {\n return __EMPTY_NODE;\n },\n set: function (val) {\n __EMPTY_NODE = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.compare = function (a, b) {\n return util_1.nameCompare(a.name, b.name);\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.isDefinedOn = function (node) {\n // We could probably return true here (since every node has a key), but it's never called\n // so just leaving unimplemented for now.\n throw util_2.assertionError('KeyIndex.isDefinedOn not expected to be called.');\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return false; // The key for a node never changes.\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.maxPost = function () {\n // TODO: This should really be created once and cached in a static property, but\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\n return new Node_1.NamedNode(util_1.MAX_NAME, __EMPTY_NODE);\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n KeyIndex.prototype.makePost = function (indexValue, name) {\n util_2.assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\n return new Node_1.NamedNode(indexValue, __EMPTY_NODE);\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n KeyIndex.prototype.toString = function () {\n return '.key';\n };\n return KeyIndex;\n}(Index_1.Index));\nexports.KeyIndex = KeyIndex;\nexports.KEY_INDEX = new KeyIndex();\n\n//# sourceMappingURL=KeyIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/KeyIndex.js\n// module id = 12\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"./ChildrenNode\");\nvar LeafNode_1 = require(\"./LeafNode\");\nvar Node_1 = require(\"./Node\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar childSet_1 = require(\"./childSet\");\nvar comparators_1 = require(\"./comparators\");\nvar IndexMap_1 = require(\"./IndexMap\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar USE_HINZE = true;\n/**\n * Constructs a snapshot node representing the passed JSON and returns it.\n * @param {*} json JSON to create a node for.\n * @param {?string|?number=} priority Optional priority to use. This will be ignored if the\n * passed JSON contains a .priority property.\n * @return {!Node}\n */\nfunction nodeFromJSON(json, priority) {\n if (priority === void 0) { priority = null; }\n if (json === null) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (typeof json === 'object' && '.priority' in json) {\n priority = json['.priority'];\n }\n util_2.assert(priority === null ||\n typeof priority === 'string' ||\n typeof priority === 'number' ||\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\n json = json['.value'];\n }\n // Valid leaf nodes include non-objects or server-value wrapper objects\n if (typeof json !== 'object' || '.sv' in json) {\n var jsonLeaf = json;\n return new LeafNode_1.LeafNode(jsonLeaf, nodeFromJSON(priority));\n }\n if (!(json instanceof Array) && USE_HINZE) {\n var children_1 = [];\n var childrenHavePriority_1 = false;\n var hinzeJsonObj_1 = json;\n util_1.forEach(hinzeJsonObj_1, function (key, child) {\n if (typeof key !== 'string' || key.substring(0, 1) !== '.') {\n // Ignore metadata nodes\n var childNode = nodeFromJSON(hinzeJsonObj_1[key]);\n if (!childNode.isEmpty()) {\n childrenHavePriority_1 =\n childrenHavePriority_1 || !childNode.getPriority().isEmpty();\n children_1.push(new Node_1.NamedNode(key, childNode));\n }\n }\n });\n if (children_1.length == 0) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var childSet = childSet_1.buildChildSet(children_1, comparators_1.NAME_ONLY_COMPARATOR, function (namedNode) { return namedNode.name; }, comparators_1.NAME_COMPARATOR);\n if (childrenHavePriority_1) {\n var sortedChildSet = childSet_1.buildChildSet(children_1, PriorityIndex_1.PRIORITY_INDEX.getCompare());\n return new ChildrenNode_1.ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap_1.IndexMap({ '.priority': sortedChildSet }, { '.priority': PriorityIndex_1.PRIORITY_INDEX }));\n }\n else {\n return new ChildrenNode_1.ChildrenNode(childSet, nodeFromJSON(priority), IndexMap_1.IndexMap.Default);\n }\n }\n else {\n var node_1 = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var jsonObj_1 = json;\n util_1.forEach(jsonObj_1, function (key, childData) {\n if (util_1.contains(jsonObj_1, key)) {\n if (key.substring(0, 1) !== '.') {\n // ignore metadata nodes.\n var childNode = nodeFromJSON(childData);\n if (childNode.isLeafNode() || !childNode.isEmpty())\n node_1 = node_1.updateImmediateChild(key, childNode);\n }\n }\n });\n return node_1.updatePriority(nodeFromJSON(priority));\n }\n}\nexports.nodeFromJSON = nodeFromJSON;\nPriorityIndex_1.setNodeFromJSON(nodeFromJSON);\n\n//# sourceMappingURL=nodeFromJSON.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/nodeFromJSON.js\n// module id = 13\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DOMStorageWrapper_1 = require(\"./DOMStorageWrapper\");\nvar MemoryStorage_1 = require(\"./MemoryStorage\");\n/**\n * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\n * to reflect this type\n *\n * @param {string} domStorageName Name of the underlying storage object\n * (e.g. 'localStorage' or 'sessionStorage').\n * @return {?} Turning off type information until a common interface is defined.\n */\nvar createStoragefor = function (domStorageName) {\n try {\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\n // so it must be inside the try/catch.\n if (typeof window !== 'undefined' &&\n typeof window[domStorageName] !== 'undefined') {\n // Need to test cache. Just because it's here doesn't mean it works\n var domStorage = window[domStorageName];\n domStorage.setItem('firebase:sentinel', 'cache');\n domStorage.removeItem('firebase:sentinel');\n return new DOMStorageWrapper_1.DOMStorageWrapper(domStorage);\n }\n }\n catch (e) { }\n // Failed to create wrapper. Just return in-memory storage.\n // TODO: log?\n return new MemoryStorage_1.MemoryStorage();\n};\n/** A storage object that lasts across sessions */\nexports.PersistentStorage = createStoragefor('localStorage');\n/** A storage object that only lasts one session */\nexports.SessionStorage = createStoragefor('sessionStorage');\n\n//# sourceMappingURL=storage.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/storage.js\n// module id = 14\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PROTOCOL_VERSION = '5';\nexports.VERSION_PARAM = 'v';\nexports.TRANSPORT_SESSION_PARAM = 's';\nexports.REFERER_PARAM = 'r';\nexports.FORGE_REF = 'f';\nexports.FORGE_DOMAIN = 'firebaseio.com';\nexports.LAST_SESSION_PARAM = 'ls';\nexports.WEBSOCKET = 'websocket';\nexports.LONG_POLLING = 'long_polling';\n\n//# sourceMappingURL=Constants.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/Constants.js\n// module id = 15\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\n/**\n *\n * @constructor\n */\nvar Index = /** @class */ (function () {\n function Index() {\n }\n /**\n * @return {function(!NamedNode, !NamedNode):number} A standalone comparison function for\n * this index\n */\n Index.prototype.getCompare = function () {\n return this.compare.bind(this);\n };\n /**\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\n *\n * @param {!Node} oldNode\n * @param {!Node} newNode\n * @return {boolean} True if the portion of the snapshot being indexed changed between oldNode and newNode\n */\n Index.prototype.indexedValueChanged = function (oldNode, newNode) {\n var oldWrapped = new Node_1.NamedNode(util_1.MIN_NAME, oldNode);\n var newWrapped = new Node_1.NamedNode(util_1.MIN_NAME, newNode);\n return this.compare(oldWrapped, newWrapped) !== 0;\n };\n /**\n * @return {!NamedNode} a node wrapper that will sort equal to or less than\n * any other node wrapper, using this index\n */\n Index.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n return Index;\n}());\nexports.Index = Index;\n\n//# sourceMappingURL=Index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/Index.js\n// module id = 16\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar snap_1 = require(\"./snap\");\nvar __childrenNodeConstructor;\n/**\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\n * implements Node and stores the value of the node (a string,\n * number, or boolean) accessible via getValue().\n */\nvar LeafNode = /** @class */ (function () {\n /**\n * @implements {Node}\n * @param {!(string|number|boolean|Object)} value_ The value to store in this leaf node.\n * The object type is possible in the event of a deferred value\n * @param {!Node=} priorityNode_ The priority of this node.\n */\n function LeafNode(value_, priorityNode_) {\n if (priorityNode_ === void 0) { priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE; }\n this.value_ = value_;\n this.priorityNode_ = priorityNode_;\n this.lazyHash_ = null;\n util_1.assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\n snap_1.validatePriorityNode(this.priorityNode_);\n }\n Object.defineProperty(LeafNode, \"__childrenNodeConstructor\", {\n get: function () {\n return __childrenNodeConstructor;\n },\n set: function (val) {\n __childrenNodeConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /** @inheritDoc */\n LeafNode.prototype.isLeafNode = function () {\n return true;\n };\n /** @inheritDoc */\n LeafNode.prototype.getPriority = function () {\n return this.priorityNode_;\n };\n /** @inheritDoc */\n LeafNode.prototype.updatePriority = function (newPriorityNode) {\n return new LeafNode(this.value_, newPriorityNode);\n };\n /** @inheritDoc */\n LeafNode.prototype.getImmediateChild = function (childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.getChild = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else if (path.getFront() === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.hasChild = function () {\n return false;\n };\n /** @inheritDoc */\n LeafNode.prototype.getPredecessorChildName = function (childName, childNode) {\n return null;\n };\n /** @inheritDoc */\n LeafNode.prototype.updateImmediateChild = function (childName, newChildNode) {\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else if (newChildNode.isEmpty() && childName !== '.priority') {\n return this;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(childName, newChildNode).updatePriority(this.priorityNode_);\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.updateChild = function (path, newChildNode) {\n var front = path.getFront();\n if (front === null) {\n return newChildNode;\n }\n else if (newChildNode.isEmpty() && front !== '.priority') {\n return this;\n }\n else {\n util_1.assert(front !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(path.popFront(), newChildNode));\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.isEmpty = function () {\n return false;\n };\n /** @inheritDoc */\n LeafNode.prototype.numChildren = function () {\n return 0;\n };\n /** @inheritDoc */\n LeafNode.prototype.forEachChild = function (index, action) {\n return false;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.val = function (exportFormat) {\n if (exportFormat && !this.getPriority().isEmpty())\n return {\n '.value': this.getValue(),\n '.priority': this.getPriority().val()\n };\n else\n return this.getValue();\n };\n /** @inheritDoc */\n LeafNode.prototype.hash = function () {\n if (this.lazyHash_ === null) {\n var toHash = '';\n if (!this.priorityNode_.isEmpty())\n toHash +=\n 'priority:' +\n snap_1.priorityHashText(this.priorityNode_.val()) +\n ':';\n var type = typeof this.value_;\n toHash += type + ':';\n if (type === 'number') {\n toHash += util_2.doubleToIEEE754String(this.value_);\n }\n else {\n toHash += this.value_;\n }\n this.lazyHash_ = util_2.sha1(toHash);\n }\n return this.lazyHash_;\n };\n /**\n * Returns the value of the leaf node.\n * @return {Object|string|number|boolean} The value of the node.\n */\n LeafNode.prototype.getValue = function () {\n return this.value_;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.compareTo = function (other) {\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n return 1;\n }\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\n return -1;\n }\n else {\n util_1.assert(other.isLeafNode(), 'Unknown node type');\n return this.compareToLeafNode_(other);\n }\n };\n /**\n * Comparison specifically for two leaf nodes\n * @param {!LeafNode} otherLeaf\n * @return {!number}\n * @private\n */\n LeafNode.prototype.compareToLeafNode_ = function (otherLeaf) {\n var otherLeafType = typeof otherLeaf.value_;\n var thisLeafType = typeof this.value_;\n var otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\n var thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\n util_1.assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\n util_1.assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\n if (otherIndex === thisIndex) {\n // Same type, compare values\n if (thisLeafType === 'object') {\n // Deferred value nodes are all equal, but we should also never get to this point...\n return 0;\n }\n else {\n // Note that this works because true > false, all others are number or string comparisons\n if (this.value_ < otherLeaf.value_) {\n return -1;\n }\n else if (this.value_ === otherLeaf.value_) {\n return 0;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return thisIndex - otherIndex;\n }\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.withIndex = function () {\n return this;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.isIndexed = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.equals = function (other) {\n /**\n * @inheritDoc\n */\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n var otherLeaf = other;\n return (this.value_ === otherLeaf.value_ &&\n this.priorityNode_.equals(otherLeaf.priorityNode_));\n }\n else {\n return false;\n }\n };\n /**\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\n * the same type, the comparison falls back to their value\n * @type {Array.}\n * @const\n */\n LeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n return LeafNode;\n}());\nexports.LeafNode = LeafNode;\n\n//# sourceMappingURL=LeafNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/LeafNode.js\n// module id = 17\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * An iterator over an LLRBNode.\n */\nvar SortedMapIterator = /** @class */ (function () {\n /**\n * @template K, V, T\n * @param {LLRBNode|LLRBEmptyNode} node Node to iterate.\n * @param {?K} startKey\n * @param {function(K, K): number} comparator\n * @param {boolean} isReverse_ Whether or not to iterate in reverse\n * @param {(function(K, V):T)=} resultGenerator_\n */\n function SortedMapIterator(node, startKey, comparator, isReverse_, resultGenerator_) {\n if (resultGenerator_ === void 0) { resultGenerator_ = null; }\n this.isReverse_ = isReverse_;\n this.resultGenerator_ = resultGenerator_;\n /** @private\n * @type {Array.}\n */\n this.nodeStack_ = [];\n var cmp = 1;\n while (!node.isEmpty()) {\n node = node;\n cmp = startKey ? comparator(node.key, startKey) : 1;\n // flip the comparison if we're going in reverse\n if (isReverse_)\n cmp *= -1;\n if (cmp < 0) {\n // This node is less than our start key. ignore it\n if (this.isReverse_) {\n node = node.left;\n }\n else {\n node = node.right;\n }\n }\n else if (cmp === 0) {\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\n this.nodeStack_.push(node);\n break;\n }\n else {\n // This node is greater than our start key, add it to the stack and move to the next one\n this.nodeStack_.push(node);\n if (this.isReverse_) {\n node = node.right;\n }\n else {\n node = node.left;\n }\n }\n }\n }\n SortedMapIterator.prototype.getNext = function () {\n if (this.nodeStack_.length === 0)\n return null;\n var node = this.nodeStack_.pop();\n var result;\n if (this.resultGenerator_)\n result = this.resultGenerator_(node.key, node.value);\n else\n result = { key: node.key, value: node.value };\n if (this.isReverse_) {\n node = node.left;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.right;\n }\n }\n else {\n node = node.right;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.left;\n }\n }\n return result;\n };\n SortedMapIterator.prototype.hasNext = function () {\n return this.nodeStack_.length > 0;\n };\n SortedMapIterator.prototype.peek = function () {\n if (this.nodeStack_.length === 0)\n return null;\n var node = this.nodeStack_[this.nodeStack_.length - 1];\n if (this.resultGenerator_) {\n return this.resultGenerator_(node.key, node.value);\n }\n else {\n return { key: node.key, value: node.value };\n }\n };\n return SortedMapIterator;\n}());\nexports.SortedMapIterator = SortedMapIterator;\n/**\n * Represents a node in a Left-leaning Red-Black tree.\n */\nvar LLRBNode = /** @class */ (function () {\n /**\n * @template K, V\n * @param {!K} key Key associated with this node.\n * @param {!V} value Value associated with this node.\n * @param {?boolean} color Whether this node is red.\n * @param {?(LLRBNode|LLRBEmptyNode)=} left Left child.\n * @param {?(LLRBNode|LLRBEmptyNode)=} right Right child.\n */\n function LLRBNode(key, value, color, left, right) {\n this.key = key;\n this.value = value;\n this.color = color != null ? color : LLRBNode.RED;\n this.left =\n left != null ? left : SortedMap.EMPTY_NODE;\n this.right =\n right != null ? right : SortedMap.EMPTY_NODE;\n }\n /**\n * Returns a copy of the current node, optionally replacing pieces of it.\n *\n * @param {?K} key New key for the node, or null.\n * @param {?V} value New value for the node, or null.\n * @param {?boolean} color New color for the node, or null.\n * @param {?LLRBNode|LLRBEmptyNode} left New left child for the node, or null.\n * @param {?LLRBNode|LLRBEmptyNode} right New right child for the node, or null.\n * @return {!LLRBNode} The node copy.\n */\n LLRBNode.prototype.copy = function (key, value, color, left, right) {\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\n };\n /**\n * @return {number} The total number of nodes in the tree.\n */\n LLRBNode.prototype.count = function () {\n return this.left.count() + 1 + this.right.count();\n };\n /**\n * @return {boolean} True if the tree is empty.\n */\n LLRBNode.prototype.isEmpty = function () {\n return false;\n };\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V):*} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {*} The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n LLRBNode.prototype.inorderTraversal = function (action) {\n return (this.left.inorderTraversal(action) ||\n action(this.key, this.value) ||\n this.right.inorderTraversal(action));\n };\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param {function(!Object, !Object)} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {*} True if traversal was aborted.\n */\n LLRBNode.prototype.reverseTraversal = function (action) {\n return (this.right.reverseTraversal(action) ||\n action(this.key, this.value) ||\n this.left.reverseTraversal(action));\n };\n /**\n * @return {!Object} The minimum node in the tree.\n * @private\n */\n LLRBNode.prototype.min_ = function () {\n if (this.left.isEmpty()) {\n return this;\n }\n else {\n return this.left.min_();\n }\n };\n /**\n * @return {!K} The maximum key in the tree.\n */\n LLRBNode.prototype.minKey = function () {\n return this.min_().key;\n };\n /**\n * @return {!K} The maximum key in the tree.\n */\n LLRBNode.prototype.maxKey = function () {\n if (this.right.isEmpty()) {\n return this.key;\n }\n else {\n return this.right.maxKey();\n }\n };\n /**\n *\n * @param {!Object} key Key to insert.\n * @param {!Object} value Value to insert.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode} New tree, with the key/value added.\n */\n LLRBNode.prototype.insert = function (key, value, comparator) {\n var cmp, n;\n n = this;\n cmp = comparator(key, n.key);\n if (cmp < 0) {\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\n }\n else if (cmp === 0) {\n n = n.copy(null, value, null, null, null);\n }\n else {\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\n }\n return n.fixUp_();\n };\n /**\n * @private\n * @return {!LLRBNode|LLRBEmptyNode} New tree, with the minimum key removed.\n */\n LLRBNode.prototype.removeMin_ = function () {\n if (this.left.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n var n = this;\n if (!n.left.isRed_() && !n.left.left.isRed_())\n n = n.moveRedLeft_();\n n = n.copy(null, null, null, n.left.removeMin_(), null);\n return n.fixUp_();\n };\n /**\n * @param {!Object} key The key of the item to remove.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode|LLRBEmptyNode} New tree, with the specified item removed.\n */\n LLRBNode.prototype.remove = function (key, comparator) {\n var n, smallest;\n n = this;\n if (comparator(key, n.key) < 0) {\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\n }\n else {\n if (n.left.isRed_())\n n = n.rotateRight_();\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\n n = n.moveRedRight_();\n }\n if (comparator(key, n.key) === 0) {\n if (n.right.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n else {\n smallest = n.right.min_();\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\n }\n }\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\n }\n return n.fixUp_();\n };\n /**\n * @private\n * @return {boolean} Whether this is a RED node.\n */\n LLRBNode.prototype.isRed_ = function () {\n return this.color;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree after performing any needed rotations.\n */\n LLRBNode.prototype.fixUp_ = function () {\n var n = this;\n if (n.right.isRed_() && !n.left.isRed_())\n n = n.rotateLeft_();\n if (n.left.isRed_() && n.left.left.isRed_())\n n = n.rotateRight_();\n if (n.left.isRed_() && n.right.isRed_())\n n = n.colorFlip_();\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after moveRedLeft.\n */\n LLRBNode.prototype.moveRedLeft_ = function () {\n var n = this.colorFlip_();\n if (n.right.left.isRed_()) {\n n = n.copy(null, null, null, null, n.right.rotateRight_());\n n = n.rotateLeft_();\n n = n.colorFlip_();\n }\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after moveRedRight.\n */\n LLRBNode.prototype.moveRedRight_ = function () {\n var n = this.colorFlip_();\n if (n.left.left.isRed_()) {\n n = n.rotateRight_();\n n = n.colorFlip_();\n }\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after rotateLeft.\n */\n LLRBNode.prototype.rotateLeft_ = function () {\n var nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, nl, null);\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after rotateRight.\n */\n LLRBNode.prototype.rotateRight_ = function () {\n var nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, nr);\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after colorFlip.\n */\n LLRBNode.prototype.colorFlip_ = function () {\n var left = this.left.copy(null, null, !this.left.color, null, null);\n var right = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, left, right);\n };\n /**\n * For testing.\n *\n * @private\n * @return {boolean} True if all is well.\n */\n LLRBNode.prototype.checkMaxDepth_ = function () {\n var blackDepth = this.check_();\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\n };\n /**\n * @private\n * @return {number} Not sure what this returns exactly. :-).\n */\n LLRBNode.prototype.check_ = function () {\n var blackDepth;\n if (this.isRed_() && this.left.isRed_()) {\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\n }\n if (this.right.isRed_()) {\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\n }\n blackDepth = this.left.check_();\n if (blackDepth !== this.right.check_()) {\n throw new Error('Black depths differ');\n }\n else {\n return blackDepth + (this.isRed_() ? 0 : 1);\n }\n };\n LLRBNode.RED = true;\n LLRBNode.BLACK = false;\n return LLRBNode;\n}());\nexports.LLRBNode = LLRBNode;\n/**\n * Represents an empty node (a leaf node in the Red-Black Tree).\n */\nvar LLRBEmptyNode = /** @class */ (function () {\n function LLRBEmptyNode() {\n }\n /**\n * Returns a copy of the current node.\n *\n * @return {!LLRBEmptyNode} The node copy.\n */\n LLRBEmptyNode.prototype.copy = function (key, value, color, left, right) {\n return this;\n };\n /**\n * Returns a copy of the tree, with the specified key/value added.\n *\n * @param {!K} key Key to be added.\n * @param {!V} value Value to be added.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode} New tree, with item added.\n */\n LLRBEmptyNode.prototype.insert = function (key, value, comparator) {\n return new LLRBNode(key, value, null);\n };\n /**\n * Returns a copy of the tree, with the specified key removed.\n *\n * @param {!K} key The key to remove.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBEmptyNode} New tree, with item removed.\n */\n LLRBEmptyNode.prototype.remove = function (key, comparator) {\n return this;\n };\n /**\n * @return {number} The total number of nodes in the tree.\n */\n LLRBEmptyNode.prototype.count = function () {\n return 0;\n };\n /**\n * @return {boolean} True if the tree is empty.\n */\n LLRBEmptyNode.prototype.isEmpty = function () {\n return true;\n };\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V):*} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {boolean} True if traversal was aborted.\n */\n LLRBEmptyNode.prototype.inorderTraversal = function (action) {\n return false;\n };\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V)} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {boolean} True if traversal was aborted.\n */\n LLRBEmptyNode.prototype.reverseTraversal = function (action) {\n return false;\n };\n /**\n * @return {null}\n */\n LLRBEmptyNode.prototype.minKey = function () {\n return null;\n };\n /**\n * @return {null}\n */\n LLRBEmptyNode.prototype.maxKey = function () {\n return null;\n };\n /**\n * @private\n * @return {number} Not sure what this returns exactly. :-).\n */\n LLRBEmptyNode.prototype.check_ = function () {\n return 0;\n };\n /**\n * @private\n * @return {boolean} Whether this node is red.\n */\n LLRBEmptyNode.prototype.isRed_ = function () {\n return false;\n };\n return LLRBEmptyNode;\n}());\nexports.LLRBEmptyNode = LLRBEmptyNode;\n/**\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\n * tree.\n */\nvar SortedMap = /** @class */ (function () {\n /**\n * @template K, V\n * @param {function(K, K):number} comparator_ Key comparator.\n * @param {LLRBNode=} root_ (Optional) Root node for the map.\n */\n function SortedMap(comparator_, root_) {\n if (root_ === void 0) { root_ = SortedMap.EMPTY_NODE; }\n this.comparator_ = comparator_;\n this.root_ = root_;\n }\n /**\n * Returns a copy of the map, with the specified key/value added or replaced.\n * (TODO: We should perhaps rename this method to 'put')\n *\n * @param {!K} key Key to be added.\n * @param {!V} value Value to be added.\n * @return {!SortedMap.} New map, with item added.\n */\n SortedMap.prototype.insert = function (key, value) {\n return new SortedMap(this.comparator_, this.root_\n .insert(key, value, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n };\n /**\n * Returns a copy of the map, with the specified key removed.\n *\n * @param {!K} key The key to remove.\n * @return {!SortedMap.} New map, with item removed.\n */\n SortedMap.prototype.remove = function (key) {\n return new SortedMap(this.comparator_, this.root_\n .remove(key, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n };\n /**\n * Returns the value of the node with the given key, or null.\n *\n * @param {!K} key The key to look up.\n * @return {?V} The value of the node with the given key, or null if the\n * key doesn't exist.\n */\n SortedMap.prototype.get = function (key) {\n var cmp;\n var node = this.root_;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n return node.value;\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n node = node.right;\n }\n }\n return null;\n };\n /**\n * Returns the key of the item *before* the specified key, or null if key is the first item.\n * @param {K} key The key to find the predecessor of\n * @return {?K} The predecessor key.\n */\n SortedMap.prototype.getPredecessorKey = function (key) {\n var cmp, node = this.root_, rightParent = null;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n if (!node.left.isEmpty()) {\n node = node.left;\n while (!node.right.isEmpty())\n node = node.right;\n return node.key;\n }\n else if (rightParent) {\n return rightParent.key;\n }\n else {\n return null; // first item.\n }\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n rightParent = node;\n node = node.right;\n }\n }\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\n };\n /**\n * @return {boolean} True if the map is empty.\n */\n SortedMap.prototype.isEmpty = function () {\n return this.root_.isEmpty();\n };\n /**\n * @return {number} The total number of nodes in the map.\n */\n SortedMap.prototype.count = function () {\n return this.root_.count();\n };\n /**\n * @return {?K} The minimum key in the map.\n */\n SortedMap.prototype.minKey = function () {\n return this.root_.minKey();\n };\n /**\n * @return {?K} The maximum key in the map.\n */\n SortedMap.prototype.maxKey = function () {\n return this.root_.maxKey();\n };\n /**\n * Traverses the map in key order and calls the specified action function\n * for each key/value pair.\n *\n * @param {function(!K, !V):*} action Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @return {*} The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n SortedMap.prototype.inorderTraversal = function (action) {\n return this.root_.inorderTraversal(action);\n };\n /**\n * Traverses the map in reverse key order and calls the specified action function\n * for each key/value pair.\n *\n * @param {function(!Object, !Object)} action Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @return {*} True if the traversal was aborted.\n */\n SortedMap.prototype.reverseTraversal = function (action) {\n return this.root_.reverseTraversal(action);\n };\n /**\n * Returns an iterator over the SortedMap.\n * @template T\n * @param {(function(K, V):T)=} resultGenerator\n * @return {SortedMapIterator.} The iterator.\n */\n SortedMap.prototype.getIterator = function (resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\n };\n SortedMap.prototype.getIteratorFrom = function (key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\n };\n SortedMap.prototype.getReverseIteratorFrom = function (key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\n };\n SortedMap.prototype.getReverseIterator = function (resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\n };\n /**\n * Always use the same empty node, to reduce memory.\n * @const\n */\n SortedMap.EMPTY_NODE = new LLRBEmptyNode();\n return SortedMap;\n}());\nexports.SortedMap = SortedMap;\n\n//# sourceMappingURL=SortedMap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/SortedMap.js\n// module id = 18\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ServerValues_1 = require(\"./util/ServerValues\");\nvar nodeFromJSON_1 = require(\"./snap/nodeFromJSON\");\nvar Path_1 = require(\"./util/Path\");\nvar SparseSnapshotTree_1 = require(\"./SparseSnapshotTree\");\nvar SyncTree_1 = require(\"./SyncTree\");\nvar SnapshotHolder_1 = require(\"./SnapshotHolder\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar AuthTokenProvider_1 = require(\"./AuthTokenProvider\");\nvar StatsManager_1 = require(\"./stats/StatsManager\");\nvar StatsReporter_1 = require(\"./stats/StatsReporter\");\nvar StatsListener_1 = require(\"./stats/StatsListener\");\nvar EventQueue_1 = require(\"./view/EventQueue\");\nvar PersistentConnection_1 = require(\"./PersistentConnection\");\nvar ReadonlyRestClient_1 = require(\"./ReadonlyRestClient\");\nvar Database_1 = require(\"../api/Database\");\nvar INTERRUPT_REASON = 'repo_interrupt';\n/**\n * A connection to a single data repository.\n */\nvar Repo = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo_\n * @param {boolean} forceRestClient\n * @param {!FirebaseApp} app\n */\n function Repo(repoInfo_, forceRestClient, app) {\n var _this = this;\n this.repoInfo_ = repoInfo_;\n this.app = app;\n this.dataUpdateCount = 0;\n this.statsListener_ = null;\n this.eventQueue_ = new EventQueue_1.EventQueue();\n this.nextWriteId_ = 1;\n this.interceptServerDataCallback_ = null;\n // A list of data pieces and paths to be set when this client disconnects.\n this.onDisconnect_ = new SparseSnapshotTree_1.SparseSnapshotTree();\n /**\n * TODO: This should be @private but it's used by test_access.js and internal.js\n * @type {?PersistentConnection}\n */\n this.persistentConnection_ = null;\n /** @type {!AuthTokenProvider} */\n var authTokenProvider = new AuthTokenProvider_1.AuthTokenProvider(app);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo_);\n if (forceRestClient || util_2.beingCrawled()) {\n this.server_ = new ReadonlyRestClient_1.ReadonlyRestClient(this.repoInfo_, this.onDataUpdate_.bind(this), authTokenProvider);\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\n setTimeout(this.onConnectStatus_.bind(this, true), 0);\n }\n else {\n var authOverride = app.options['databaseAuthVariableOverride'];\n // Validate authOverride\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\n if (typeof authOverride !== 'object') {\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\n }\n try {\n util_1.stringify(authOverride);\n }\n catch (e) {\n throw new Error('Invalid authOverride provided: ' + e);\n }\n }\n this.persistentConnection_ = new PersistentConnection_1.PersistentConnection(this.repoInfo_, this.onDataUpdate_.bind(this), this.onConnectStatus_.bind(this), this.onServerInfoUpdate_.bind(this), authTokenProvider, authOverride);\n this.server_ = this.persistentConnection_;\n }\n authTokenProvider.addTokenChangeListener(function (token) {\n _this.server_.refreshAuthToken(token);\n });\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\n this.statsReporter_ = StatsManager_1.StatsManager.getOrCreateReporter(repoInfo_, function () { return new StatsReporter_1.StatsReporter(_this.stats_, _this.server_); });\n this.transactions_init_();\n // Used for .info.\n this.infoData_ = new SnapshotHolder_1.SnapshotHolder();\n this.infoSyncTree_ = new SyncTree_1.SyncTree({\n startListening: function (query, tag, currentHashFn, onComplete) {\n var infoEvents = [];\n var node = _this.infoData_.getNode(query.path);\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\n // on initial data...\n if (!node.isEmpty()) {\n infoEvents = _this.infoSyncTree_.applyServerOverwrite(query.path, node);\n setTimeout(function () {\n onComplete('ok');\n }, 0);\n }\n return infoEvents;\n },\n stopListening: function () { }\n });\n this.updateInfo_('connected', false);\n this.serverSyncTree_ = new SyncTree_1.SyncTree({\n startListening: function (query, tag, currentHashFn, onComplete) {\n _this.server_.listen(query, currentHashFn, tag, function (status, data) {\n var events = onComplete(status, data);\n _this.eventQueue_.raiseEventsForChangedPath(query.path, events);\n });\n // No synchronous events for network-backed sync trees\n return [];\n },\n stopListening: function (query, tag) {\n _this.server_.unlisten(query, tag);\n }\n });\n }\n /**\n * @return {string} The URL corresponding to the root of this Firebase.\n */\n Repo.prototype.toString = function () {\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\n };\n /**\n * @return {!string} The namespace represented by the repo.\n */\n Repo.prototype.name = function () {\n return this.repoInfo_.namespace;\n };\n /**\n * @return {!number} The time in milliseconds, taking the server offset into account if we have one.\n */\n Repo.prototype.serverTime = function () {\n var offsetNode = this.infoData_.getNode(new Path_1.Path('.info/serverTimeOffset'));\n var offset = offsetNode.val() || 0;\n return new Date().getTime() + offset;\n };\n /**\n * Generate ServerValues using some variables from the repo object.\n * @return {!Object}\n */\n Repo.prototype.generateServerValues = function () {\n return ServerValues_1.generateWithValues({\n timestamp: this.serverTime()\n });\n };\n /**\n * Called by realtime when we get new messages from the server.\n *\n * @private\n * @param {string} pathString\n * @param {*} data\n * @param {boolean} isMerge\n * @param {?number} tag\n */\n Repo.prototype.onDataUpdate_ = function (pathString, data, isMerge, tag) {\n // For testing.\n this.dataUpdateCount++;\n var path = new Path_1.Path(pathString);\n data = this.interceptServerDataCallback_\n ? this.interceptServerDataCallback_(pathString, data)\n : data;\n var events = [];\n if (tag) {\n if (isMerge) {\n var taggedChildren = util_3.map(data, function (raw) {\n return nodeFromJSON_1.nodeFromJSON(raw);\n });\n events = this.serverSyncTree_.applyTaggedQueryMerge(path, taggedChildren, tag);\n }\n else {\n var taggedSnap = nodeFromJSON_1.nodeFromJSON(data);\n events = this.serverSyncTree_.applyTaggedQueryOverwrite(path, taggedSnap, tag);\n }\n }\n else if (isMerge) {\n var changedChildren = util_3.map(data, function (raw) {\n return nodeFromJSON_1.nodeFromJSON(raw);\n });\n events = this.serverSyncTree_.applyServerMerge(path, changedChildren);\n }\n else {\n var snap = nodeFromJSON_1.nodeFromJSON(data);\n events = this.serverSyncTree_.applyServerOverwrite(path, snap);\n }\n var affectedPath = path;\n if (events.length > 0) {\n // Since we have a listener outstanding for each transaction, receiving any events\n // is a proxy for some change having occurred.\n affectedPath = this.rerunTransactions_(path);\n }\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, events);\n };\n /**\n * TODO: This should be @private but it's used by test_access.js and internal.js\n * @param {?function(!string, *):*} callback\n * @private\n */\n Repo.prototype.interceptServerData_ = function (callback) {\n this.interceptServerDataCallback_ = callback;\n };\n /**\n * @param {!boolean} connectStatus\n * @private\n */\n Repo.prototype.onConnectStatus_ = function (connectStatus) {\n this.updateInfo_('connected', connectStatus);\n if (connectStatus === false) {\n this.runOnDisconnectEvents_();\n }\n };\n /**\n * @param {!Object} updates\n * @private\n */\n Repo.prototype.onServerInfoUpdate_ = function (updates) {\n var _this = this;\n util_2.each(updates, function (value, key) {\n _this.updateInfo_(key, value);\n });\n };\n /**\n *\n * @param {!string} pathString\n * @param {*} value\n * @private\n */\n Repo.prototype.updateInfo_ = function (pathString, value) {\n var path = new Path_1.Path('/.info/' + pathString);\n var newNode = nodeFromJSON_1.nodeFromJSON(value);\n this.infoData_.updateSnapshot(path, newNode);\n var events = this.infoSyncTree_.applyServerOverwrite(path, newNode);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n };\n /**\n * @return {!number}\n * @private\n */\n Repo.prototype.getNextWriteId_ = function () {\n return this.nextWriteId_++;\n };\n /**\n * @param {!Path} path\n * @param {*} newVal\n * @param {number|string|null} newPriority\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.setWithPriority = function (path, newVal, newPriority, onComplete) {\n var _this = this;\n this.log_('set', {\n path: path.toString(),\n value: newVal,\n priority: newPriority\n });\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\n // (b) store unresolved paths on JSON parse\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, newPriority);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n var writeId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, writeId, true);\n this.eventQueue_.queueEvents(events);\n this.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), function (status, errorReason) {\n var success = status === 'ok';\n if (!success) {\n util_2.warn('set at ' + path + ' failed: ' + status);\n }\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId, !success);\n _this.eventQueue_.raiseEventsForChangedPath(path, clearEvents);\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n var affectedPath = this.abortTransactions_(path);\n this.rerunTransactions_(affectedPath);\n // We queued the events above, so just flush the queue here\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, []);\n };\n /**\n * @param {!Path} path\n * @param {!Object} childrenToMerge\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.update = function (path, childrenToMerge, onComplete) {\n var _this = this;\n this.log_('update', { path: path.toString(), value: childrenToMerge });\n // Start with our existing data and merge each child into it.\n var empty = true;\n var serverValues = this.generateServerValues();\n var changedChildren = {};\n util_3.forEach(childrenToMerge, function (changedKey, changedValue) {\n empty = false;\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(changedValue);\n changedChildren[changedKey] = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n });\n if (!empty) {\n var writeId_1 = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserMerge(path, changedChildren, writeId_1);\n this.eventQueue_.queueEvents(events);\n this.server_.merge(path.toString(), childrenToMerge, function (status, errorReason) {\n var success = status === 'ok';\n if (!success) {\n util_2.warn('update at ' + path + ' failed: ' + status);\n }\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId_1, !success);\n var affectedPath = clearEvents.length > 0 ? _this.rerunTransactions_(path) : path;\n _this.eventQueue_.raiseEventsForChangedPath(affectedPath, clearEvents);\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n util_3.forEach(childrenToMerge, function (changedPath) {\n var affectedPath = _this.abortTransactions_(path.child(changedPath));\n _this.rerunTransactions_(affectedPath);\n });\n // We queued the events above, so just flush the queue here\n this.eventQueue_.raiseEventsForChangedPath(path, []);\n }\n else {\n util_2.log(\"update() called with empty data. Don't do anything.\");\n this.callOnCompleteCallback(onComplete, 'ok');\n }\n };\n /**\n * Applies all of the changes stored up in the onDisconnect_ tree.\n * @private\n */\n Repo.prototype.runOnDisconnectEvents_ = function () {\n var _this = this;\n this.log_('onDisconnectEvents');\n var serverValues = this.generateServerValues();\n var resolvedOnDisconnectTree = ServerValues_1.resolveDeferredValueTree(this.onDisconnect_, serverValues);\n var events = [];\n resolvedOnDisconnectTree.forEachTree(Path_1.Path.Empty, function (path, snap) {\n events = events.concat(_this.serverSyncTree_.applyServerOverwrite(path, snap));\n var affectedPath = _this.abortTransactions_(path);\n _this.rerunTransactions_(affectedPath);\n });\n this.onDisconnect_ = new SparseSnapshotTree_1.SparseSnapshotTree();\n this.eventQueue_.raiseEventsForChangedPath(Path_1.Path.Empty, events);\n };\n /**\n * @param {!Path} path\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectCancel = function (path, onComplete) {\n var _this = this;\n this.server_.onDisconnectCancel(path.toString(), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.forget(path);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} value\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectSet = function (path, value, onComplete) {\n var _this = this;\n var newNode = nodeFromJSON_1.nodeFromJSON(value);\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.remember(path, newNode);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} value\n * @param {*} priority\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectSetWithPriority = function (path, value, priority, onComplete) {\n var _this = this;\n var newNode = nodeFromJSON_1.nodeFromJSON(value, priority);\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.remember(path, newNode);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} childrenToMerge\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectUpdate = function (path, childrenToMerge, onComplete) {\n var _this = this;\n if (util_3.isEmpty(childrenToMerge)) {\n util_2.log(\"onDisconnect().update() called with empty data. Don't do anything.\");\n this.callOnCompleteCallback(onComplete, 'ok');\n return;\n }\n this.server_.onDisconnectMerge(path.toString(), childrenToMerge, function (status, errorReason) {\n if (status === 'ok') {\n util_3.forEach(childrenToMerge, function (childName, childNode) {\n var newChildNode = nodeFromJSON_1.nodeFromJSON(childNode);\n _this.onDisconnect_.remember(path.child(childName), newChildNode);\n });\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n */\n Repo.prototype.addEventCallbackForQuery = function (query, eventRegistration) {\n var events;\n if (query.path.getFront() === '.info') {\n events = this.infoSyncTree_.addEventRegistration(query, eventRegistration);\n }\n else {\n events = this.serverSyncTree_.addEventRegistration(query, eventRegistration);\n }\n this.eventQueue_.raiseEventsAtPath(query.path, events);\n };\n /**\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration\n */\n Repo.prototype.removeEventCallbackForQuery = function (query, eventRegistration) {\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\n // a little bit by handling the return values anyways.\n var events;\n if (query.path.getFront() === '.info') {\n events = this.infoSyncTree_.removeEventRegistration(query, eventRegistration);\n }\n else {\n events = this.serverSyncTree_.removeEventRegistration(query, eventRegistration);\n }\n this.eventQueue_.raiseEventsAtPath(query.path, events);\n };\n Repo.prototype.interrupt = function () {\n if (this.persistentConnection_) {\n this.persistentConnection_.interrupt(INTERRUPT_REASON);\n }\n };\n Repo.prototype.resume = function () {\n if (this.persistentConnection_) {\n this.persistentConnection_.resume(INTERRUPT_REASON);\n }\n };\n Repo.prototype.stats = function (showDelta) {\n if (showDelta === void 0) { showDelta = false; }\n if (typeof console === 'undefined')\n return;\n var stats;\n if (showDelta) {\n if (!this.statsListener_)\n this.statsListener_ = new StatsListener_1.StatsListener(this.stats_);\n stats = this.statsListener_.get();\n }\n else {\n stats = this.stats_.get();\n }\n var longestName = Object.keys(stats).reduce(function (previousValue, currentValue) {\n return Math.max(currentValue.length, previousValue);\n }, 0);\n util_3.forEach(stats, function (stat, value) {\n // pad stat names to be the same length (plus 2 extra spaces).\n for (var i = stat.length; i < longestName + 2; i++)\n stat += ' ';\n console.log(stat + value);\n });\n };\n Repo.prototype.statsIncrementCounter = function (metric) {\n this.stats_.incrementCounter(metric);\n this.statsReporter_.includeStat(metric);\n };\n /**\n * @param {...*} var_args\n * @private\n */\n Repo.prototype.log_ = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var prefix = '';\n if (this.persistentConnection_) {\n prefix = this.persistentConnection_.id + ':';\n }\n util_2.log.apply(void 0, [prefix].concat(var_args));\n };\n /**\n * @param {?function(?Error, *=)} callback\n * @param {!string} status\n * @param {?string=} errorReason\n */\n Repo.prototype.callOnCompleteCallback = function (callback, status, errorReason) {\n if (callback) {\n util_2.exceptionGuard(function () {\n if (status == 'ok') {\n callback(null);\n }\n else {\n var code = (status || 'error').toUpperCase();\n var message = code;\n if (errorReason)\n message += ': ' + errorReason;\n var error = new Error(message);\n error.code = code;\n callback(error);\n }\n });\n }\n };\n Object.defineProperty(Repo.prototype, \"database\", {\n get: function () {\n return this.__database || (this.__database = new Database_1.Database(this));\n },\n enumerable: true,\n configurable: true\n });\n return Repo;\n}());\nexports.Repo = Repo;\n\n//# sourceMappingURL=Repo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/Repo.js\n// module id = 19\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\n * whether a node potentially had children removed due to a filter.\n */\nvar CacheNode = /** @class */ (function () {\n /**\n * @param {!Node} node_\n * @param {boolean} fullyInitialized_\n * @param {boolean} filtered_\n */\n function CacheNode(node_, fullyInitialized_, filtered_) {\n this.node_ = node_;\n this.fullyInitialized_ = fullyInitialized_;\n this.filtered_ = filtered_;\n }\n /**\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\n * @return {boolean}\n */\n CacheNode.prototype.isFullyInitialized = function () {\n return this.fullyInitialized_;\n };\n /**\n * Returns whether this node is potentially missing children due to a filter applied to the node\n * @return {boolean}\n */\n CacheNode.prototype.isFiltered = function () {\n return this.filtered_;\n };\n /**\n * @param {!Path} path\n * @return {boolean}\n */\n CacheNode.prototype.isCompleteForPath = function (path) {\n if (path.isEmpty()) {\n return this.isFullyInitialized() && !this.filtered_;\n }\n var childKey = path.getFront();\n return this.isCompleteForChild(childKey);\n };\n /**\n * @param {!string} key\n * @return {boolean}\n */\n CacheNode.prototype.isCompleteForChild = function (key) {\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\n };\n /**\n * @return {!Node}\n */\n CacheNode.prototype.getNode = function () {\n return this.node_;\n };\n return CacheNode;\n}());\nexports.CacheNode = CacheNode;\n\n//# sourceMappingURL=CacheNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/CacheNode.js\n// module id = 20\n// module chunks = 0","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { instances } from './src/logger';\nexport function setLogLevel(level) {\n instances.forEach(function (inst) {\n inst.logLevel = level;\n });\n}\nexport { Logger, LogLevel } from './src/logger';\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../logger/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A container for all of the Logger instances\n */\nexport var instances = [];\n/**\n * The JS SDK supports 5 log levels and also allows a user the ability to\n * silence the logs altogether.\n *\n * The order is a follows:\n * DEBUG < VERBOSE < INFO < WARN < ERROR\n *\n * All of the log types above the current log level will be captured (i.e. if\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\n * `VERBOSE` logs will not)\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\n})(LogLevel || (LogLevel = {}));\n/**\n * The default log level\n */\nvar defaultLogLevel = LogLevel.INFO;\n/**\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\n * messages on to their corresponding console counterparts (if the log method\n * is supported by the current log level)\n */\nvar defaultLogHandler = function (instance, logType) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (logType < instance.logLevel)\n return;\n var now = new Date().toISOString();\n switch (logType) {\n /**\n * By default, `console.debug` is not displayed in the developer console (in\n * chrome). To avoid forcing users to have to opt-in to these logs twice\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\n * logs to the `console.log` function.\n */\n case LogLevel.DEBUG:\n console.log.apply(console, [\"[\" + now + \"] \" + instance.name + \":\"].concat(args));\n break;\n case LogLevel.VERBOSE:\n console.log.apply(console, [\"[\" + now + \"] \" + instance.name + \":\"].concat(args));\n break;\n case LogLevel.INFO:\n console.info.apply(console, [\"[\" + now + \"] \" + instance.name + \":\"].concat(args));\n break;\n case LogLevel.WARN:\n console.warn.apply(console, [\"[\" + now + \"] \" + instance.name + \":\"].concat(args));\n break;\n case LogLevel.ERROR:\n console.error.apply(console, [\"[\" + now + \"] \" + instance.name + \":\"].concat(args));\n break;\n default:\n throw new Error(\"Attempted to log a message with an invalid logType (value: \" + logType + \")\");\n }\n};\nvar Logger = /** @class */ (function () {\n /**\n * Gives you an instance of a Logger to capture messages according to\n * Firebase's logging scheme.\n *\n * @param name The name that the logs will be associated with\n */\n function Logger(name) {\n this.name = name;\n /**\n * The log level of the given Logger instance.\n */\n this._logLevel = defaultLogLevel;\n /**\n * The log handler for the Logger instance.\n */\n this._logHandler = defaultLogHandler;\n /**\n * Capture the current instance for later use\n */\n instances.push(this);\n }\n Object.defineProperty(Logger.prototype, \"logLevel\", {\n get: function () {\n return this._logLevel;\n },\n set: function (val) {\n if (!(val in LogLevel)) {\n throw new TypeError('Invalid value assigned to `logLevel`');\n }\n this._logLevel = val;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Logger.prototype, \"logHandler\", {\n get: function () {\n return this._logHandler;\n },\n set: function (val) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n this._logHandler = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * The functions below are all based on the `console` interface\n */\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this._logHandler.apply(this, [this, LogLevel.DEBUG].concat(args));\n };\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this._logHandler.apply(this, [this, LogLevel.VERBOSE].concat(args));\n };\n Logger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this._logHandler.apply(this, [this, LogLevel.INFO].concat(args));\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this._logHandler.apply(this, [this, LogLevel.WARN].concat(args));\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this._logHandler.apply(this, [this, LogLevel.ERROR].concat(args));\n };\n return Logger;\n}());\nexport { Logger };\n\n//# sourceMappingURL=logger.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../logger/dist/esm/src/logger.js\n// module id = null\n// module chunks = ","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar onDisconnect_1 = require(\"./onDisconnect\");\nvar TransactionResult_1 = require(\"./TransactionResult\");\nvar util_1 = require(\"../core/util/util\");\nvar NextPushId_1 = require(\"../core/util/NextPushId\");\nvar Query_1 = require(\"./Query\");\nvar Repo_1 = require(\"../core/Repo\");\nvar Path_1 = require(\"../core/util/Path\");\nvar QueryParams_1 = require(\"../core/view/QueryParams\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar SyncPoint_1 = require(\"../core/SyncPoint\");\nvar Reference = /** @class */ (function (_super) {\n tslib_1.__extends(Reference, _super);\n /**\n * Call options:\n * new Reference(Repo, Path) or\n * new Reference(url: string, string|RepoManager)\n *\n * Externally - this is the firebase.database.Reference type.\n *\n * @param {!Repo} repo\n * @param {(!Path)} path\n * @extends {Query}\n */\n function Reference(repo, path) {\n var _this = this;\n if (!(repo instanceof Repo_1.Repo)) {\n throw new Error('new Reference() no longer supported - use app.database().');\n }\n // call Query's constructor, passing in the repo and path.\n _this = _super.call(this, repo, path, QueryParams_1.QueryParams.DEFAULT, false) || this;\n return _this;\n }\n /** @return {?string} */\n Reference.prototype.getKey = function () {\n util_2.validateArgCount('Reference.key', 0, 0, arguments.length);\n if (this.path.isEmpty())\n return null;\n else\n return this.path.getBack();\n };\n /**\n * @param {!(string|Path)} pathString\n * @return {!Reference}\n */\n Reference.prototype.child = function (pathString) {\n util_2.validateArgCount('Reference.child', 1, 1, arguments.length);\n if (typeof pathString === 'number') {\n pathString = String(pathString);\n }\n else if (!(pathString instanceof Path_1.Path)) {\n if (this.path.getFront() === null)\n validation_1.validateRootPathString('Reference.child', 1, pathString, false);\n else\n validation_1.validatePathString('Reference.child', 1, pathString, false);\n }\n return new Reference(this.repo, this.path.child(pathString));\n };\n /** @return {?Reference} */\n Reference.prototype.getParent = function () {\n util_2.validateArgCount('Reference.parent', 0, 0, arguments.length);\n var parentPath = this.path.parent();\n return parentPath === null ? null : new Reference(this.repo, parentPath);\n };\n /** @return {!Reference} */\n Reference.prototype.getRoot = function () {\n util_2.validateArgCount('Reference.root', 0, 0, arguments.length);\n var ref = this;\n while (ref.getParent() !== null) {\n ref = ref.getParent();\n }\n return ref;\n };\n /** @return {!Database} */\n Reference.prototype.databaseProp = function () {\n return this.repo.database;\n };\n /**\n * @param {*} newVal\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.set = function (newVal, onComplete) {\n util_2.validateArgCount('Reference.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.set', this.path);\n validation_1.validateFirebaseDataArg('Reference.set', 1, newVal, this.path, false);\n util_2.validateCallback('Reference.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path, newVal, \n /*priority=*/ null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.update = function (objectToMerge, onComplete) {\n util_2.validateArgCount('Reference.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.update', this.path);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_1.warn('Passing an Array to Firebase.update() is deprecated. ' +\n 'Use set() if you want to overwrite the existing data, or ' +\n 'an Object with integer keys if you really do want to ' +\n 'only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('Reference.update', 1, objectToMerge, this.path, false);\n util_2.validateCallback('Reference.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.update(this.path, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} newVal\n * @param {string|number|null} newPriority\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.setWithPriority = function (newVal, newPriority, onComplete) {\n util_2.validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('Reference.setWithPriority', this.path);\n validation_1.validateFirebaseDataArg('Reference.setWithPriority', 1, newVal, this.path, false);\n validation_1.validatePriority('Reference.setWithPriority', 2, newPriority, false);\n util_2.validateCallback('Reference.setWithPriority', 3, onComplete, true);\n if (this.getKey() === '.length' || this.getKey() === '.keys')\n throw 'Reference.setWithPriority failed: ' +\n this.getKey() +\n ' is a read-only object.';\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path, newVal, newPriority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.remove = function (onComplete) {\n util_2.validateArgCount('Reference.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('Reference.remove', this.path);\n util_2.validateCallback('Reference.remove', 1, onComplete, true);\n return this.set(null, onComplete);\n };\n /**\n * @param {function(*):*} transactionUpdate\n * @param {(function(?Error, boolean, ?DataSnapshot))=} onComplete\n * @param {boolean=} applyLocally\n * @return {!Promise}\n */\n Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) {\n util_2.validateArgCount('Reference.transaction', 1, 3, arguments.length);\n validation_1.validateWritablePath('Reference.transaction', this.path);\n util_2.validateCallback('Reference.transaction', 1, transactionUpdate, false);\n util_2.validateCallback('Reference.transaction', 2, onComplete, true);\n // NOTE: applyLocally is an internal-only option for now. We need to decide if we want to keep it and how\n // to expose it.\n validation_1.validateBoolean('Reference.transaction', 3, applyLocally, true);\n if (this.getKey() === '.length' || this.getKey() === '.keys')\n throw 'Reference.transaction failed: ' +\n this.getKey() +\n ' is a read-only object.';\n if (applyLocally === undefined)\n applyLocally = true;\n var deferred = new util_3.Deferred();\n if (typeof onComplete === 'function') {\n deferred.promise.catch(function () { });\n }\n var promiseComplete = function (error, committed, snapshot) {\n if (error) {\n deferred.reject(error);\n }\n else {\n deferred.resolve(new TransactionResult_1.TransactionResult(committed, snapshot));\n }\n if (typeof onComplete === 'function') {\n onComplete(error, committed, snapshot);\n }\n };\n this.repo.startTransaction(this.path, transactionUpdate, promiseComplete, applyLocally);\n return deferred.promise;\n };\n /**\n * @param {string|number|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.setPriority = function (priority, onComplete) {\n util_2.validateArgCount('Reference.setPriority', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.setPriority', this.path);\n validation_1.validatePriority('Reference.setPriority', 1, priority, false);\n util_2.validateCallback('Reference.setPriority', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path.child('.priority'), priority, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*=} value\n * @param {function(?Error)=} onComplete\n * @return {!Reference}\n */\n Reference.prototype.push = function (value, onComplete) {\n util_2.validateArgCount('Reference.push', 0, 2, arguments.length);\n validation_1.validateWritablePath('Reference.push', this.path);\n validation_1.validateFirebaseDataArg('Reference.push', 1, value, this.path, true);\n util_2.validateCallback('Reference.push', 2, onComplete, true);\n var now = this.repo.serverTime();\n var name = NextPushId_1.nextPushId(now);\n // push() returns a ThennableReference whose promise is fulfilled with a regular Reference.\n // We use child() to create handles to two different references. The first is turned into a\n // ThennableReference below by adding then() and catch() methods and is used as the\n // return value of push(). The second remains a regular Reference and is used as the fulfilled\n // value of the first ThennableReference.\n var thennablePushRef = this.child(name);\n var pushRef = this.child(name);\n var promise;\n if (value != null) {\n promise = thennablePushRef.set(value, onComplete).then(function () { return pushRef; });\n }\n else {\n promise = Promise.resolve(pushRef);\n }\n thennablePushRef.then = promise.then.bind(promise);\n thennablePushRef.catch = promise.then.bind(promise, undefined);\n if (typeof onComplete === 'function') {\n promise.catch(function () { });\n }\n return thennablePushRef;\n };\n /**\n * @return {!OnDisconnect}\n */\n Reference.prototype.onDisconnect = function () {\n validation_1.validateWritablePath('Reference.onDisconnect', this.path);\n return new onDisconnect_1.OnDisconnect(this.repo, this.path);\n };\n Object.defineProperty(Reference.prototype, \"database\", {\n get: function () {\n return this.databaseProp();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"key\", {\n get: function () {\n return this.getKey();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"parent\", {\n get: function () {\n return this.getParent();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n get: function () {\n return this.getRoot();\n },\n enumerable: true,\n configurable: true\n });\n return Reference;\n}(Query_1.Query));\nexports.Reference = Reference;\n/**\n * Define reference constructor in various modules\n *\n * We are doing this here to avoid several circular\n * dependency issues\n */\nQuery_1.Query.__referenceConstructor = Reference;\nSyncPoint_1.SyncPoint.__referenceConstructor = Reference;\n\n//# sourceMappingURL=Reference.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Reference.js\n// module id = 23\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\nvar Path_1 = require(\"../core/util/Path\");\nvar PriorityIndex_1 = require(\"../core/snap/indexes/PriorityIndex\");\n/**\n * Class representing a firebase data snapshot. It wraps a SnapshotNode and\n * surfaces the public methods (val, forEach, etc.) we want to expose.\n */\nvar DataSnapshot = /** @class */ (function () {\n /**\n * @param {!Node} node_ A SnapshotNode to wrap.\n * @param {!Reference} ref_ The ref of the location this snapshot came from.\n * @param {!Index} index_ The iteration order for this snapshot\n */\n function DataSnapshot(node_, ref_, index_) {\n this.node_ = node_;\n this.ref_ = ref_;\n this.index_ = index_;\n }\n /**\n * Retrieves the snapshot contents as JSON. Returns null if the snapshot is\n * empty.\n *\n * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\n */\n DataSnapshot.prototype.val = function () {\n util_1.validateArgCount('DataSnapshot.val', 0, 0, arguments.length);\n return this.node_.val();\n };\n /**\n * Returns the snapshot contents as JSON, including priorities of node. Suitable for exporting\n * the entire node contents.\n * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\n */\n DataSnapshot.prototype.exportVal = function () {\n util_1.validateArgCount('DataSnapshot.exportVal', 0, 0, arguments.length);\n return this.node_.val(true);\n };\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n DataSnapshot.prototype.toJSON = function () {\n // Optional spacer argument is unnecessary because we're depending on recursion rather than stringifying the content\n util_1.validateArgCount('DataSnapshot.toJSON', 0, 1, arguments.length);\n return this.exportVal();\n };\n /**\n * Returns whether the snapshot contains a non-null value.\n *\n * @return {boolean} Whether the snapshot contains a non-null value, or is empty.\n */\n DataSnapshot.prototype.exists = function () {\n util_1.validateArgCount('DataSnapshot.exists', 0, 0, arguments.length);\n return !this.node_.isEmpty();\n };\n /**\n * Returns a DataSnapshot of the specified child node's contents.\n *\n * @param {!string} childPathString Path to a child.\n * @return {!DataSnapshot} DataSnapshot for child node.\n */\n DataSnapshot.prototype.child = function (childPathString) {\n util_1.validateArgCount('DataSnapshot.child', 0, 1, arguments.length);\n // Ensure the childPath is a string (can be a number)\n childPathString = String(childPathString);\n validation_1.validatePathString('DataSnapshot.child', 1, childPathString, false);\n var childPath = new Path_1.Path(childPathString);\n var childRef = this.ref_.child(childPath);\n return new DataSnapshot(this.node_.getChild(childPath), childRef, PriorityIndex_1.PRIORITY_INDEX);\n };\n /**\n * Returns whether the snapshot contains a child at the specified path.\n *\n * @param {!string} childPathString Path to a child.\n * @return {boolean} Whether the child exists.\n */\n DataSnapshot.prototype.hasChild = function (childPathString) {\n util_1.validateArgCount('DataSnapshot.hasChild', 1, 1, arguments.length);\n validation_1.validatePathString('DataSnapshot.hasChild', 1, childPathString, false);\n var childPath = new Path_1.Path(childPathString);\n return !this.node_.getChild(childPath).isEmpty();\n };\n /**\n * Returns the priority of the object, or null if no priority was set.\n *\n * @return {string|number|null} The priority.\n */\n DataSnapshot.prototype.getPriority = function () {\n util_1.validateArgCount('DataSnapshot.getPriority', 0, 0, arguments.length);\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\n return this.node_.getPriority().val();\n };\n /**\n * Iterates through child nodes and calls the specified action for each one.\n *\n * @param {function(!DataSnapshot)} action Callback function to be called\n * for each child.\n * @return {boolean} True if forEach was canceled by action returning true for\n * one of the child nodes.\n */\n DataSnapshot.prototype.forEach = function (action) {\n var _this = this;\n util_1.validateArgCount('DataSnapshot.forEach', 1, 1, arguments.length);\n util_1.validateCallback('DataSnapshot.forEach', 1, action, false);\n if (this.node_.isLeafNode())\n return false;\n var childrenNode = this.node_;\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\n return !!childrenNode.forEachChild(this.index_, function (key, node) {\n return action(new DataSnapshot(node, _this.ref_.child(key), PriorityIndex_1.PRIORITY_INDEX));\n });\n };\n /**\n * Returns whether this DataSnapshot has children.\n * @return {boolean} True if the DataSnapshot contains 1 or more child nodes.\n */\n DataSnapshot.prototype.hasChildren = function () {\n util_1.validateArgCount('DataSnapshot.hasChildren', 0, 0, arguments.length);\n if (this.node_.isLeafNode())\n return false;\n else\n return !this.node_.isEmpty();\n };\n Object.defineProperty(DataSnapshot.prototype, \"key\", {\n get: function () {\n return this.ref_.getKey();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the number of children for this DataSnapshot.\n * @return {number} The number of children that this DataSnapshot contains.\n */\n DataSnapshot.prototype.numChildren = function () {\n util_1.validateArgCount('DataSnapshot.numChildren', 0, 0, arguments.length);\n return this.node_.numChildren();\n };\n /**\n * @return {Reference} The Firebase reference for the location this snapshot's data came from.\n */\n DataSnapshot.prototype.getRef = function () {\n util_1.validateArgCount('DataSnapshot.ref', 0, 0, arguments.length);\n return this.ref_;\n };\n Object.defineProperty(DataSnapshot.prototype, \"ref\", {\n get: function () {\n return this.getRef();\n },\n enumerable: true,\n configurable: true\n });\n return DataSnapshot;\n}());\nexports.DataSnapshot = DataSnapshot;\n\n//# sourceMappingURL=DataSnapshot.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/DataSnapshot.js\n// module id = 24\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SortedMap_1 = require(\"./SortedMap\");\nvar Path_1 = require(\"./Path\");\nvar util_1 = require(\"./util\");\nvar util_2 = require(\"@firebase/util\");\nvar emptyChildrenSingleton;\n/**\n * Singleton empty children collection.\n *\n * @const\n * @type {!SortedMap.>}\n */\nvar EmptyChildren = function () {\n if (!emptyChildrenSingleton) {\n emptyChildrenSingleton = new SortedMap_1.SortedMap(util_1.stringCompare);\n }\n return emptyChildrenSingleton;\n};\n/**\n * A tree with immutable elements.\n */\nvar ImmutableTree = /** @class */ (function () {\n /**\n * @template T\n * @param {?T} value\n * @param {SortedMap.>=} children\n */\n function ImmutableTree(value, children) {\n if (children === void 0) { children = EmptyChildren(); }\n this.value = value;\n this.children = children;\n }\n /**\n * @template T\n * @param {!Object.} obj\n * @return {!ImmutableTree.}\n */\n ImmutableTree.fromObject = function (obj) {\n var tree = ImmutableTree.Empty;\n util_2.forEach(obj, function (childPath, childSnap) {\n tree = tree.set(new Path_1.Path(childPath), childSnap);\n });\n return tree;\n };\n /**\n * True if the value is empty and there are no children\n * @return {boolean}\n */\n ImmutableTree.prototype.isEmpty = function () {\n return this.value === null && this.children.isEmpty();\n };\n /**\n * Given a path and predicate, return the first node and the path to that node\n * where the predicate returns true.\n *\n * TODO Do a perf test -- If we're creating a bunch of {path: value:} objects\n * on the way back out, it may be better to pass down a pathSoFar obj.\n *\n * @param {!Path} relativePath The remainder of the path\n * @param {function(T):boolean} predicate The predicate to satisfy to return a\n * node\n * @return {?{path:!Path, value:!T}}\n */\n ImmutableTree.prototype.findRootMostMatchingPathAndValue = function (relativePath, predicate) {\n if (this.value != null && predicate(this.value)) {\n return { path: Path_1.Path.Empty, value: this.value };\n }\n else {\n if (relativePath.isEmpty()) {\n return null;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child !== null) {\n var childExistingPathAndValue = child.findRootMostMatchingPathAndValue(relativePath.popFront(), predicate);\n if (childExistingPathAndValue != null) {\n var fullPath = new Path_1.Path(front).child(childExistingPathAndValue.path);\n return { path: fullPath, value: childExistingPathAndValue.value };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n }\n };\n /**\n * Find, if it exists, the shortest subpath of the given path that points a defined\n * value in the tree\n * @param {!Path} relativePath\n * @return {?{path: !Path, value: !T}}\n */\n ImmutableTree.prototype.findRootMostValueAndPath = function (relativePath) {\n return this.findRootMostMatchingPathAndValue(relativePath, function () { return true; });\n };\n /**\n * @param {!Path} relativePath\n * @return {!ImmutableTree.} The subtree at the given path\n */\n ImmutableTree.prototype.subtree = function (relativePath) {\n if (relativePath.isEmpty()) {\n return this;\n }\n else {\n var front = relativePath.getFront();\n var childTree = this.children.get(front);\n if (childTree !== null) {\n return childTree.subtree(relativePath.popFront());\n }\n else {\n return ImmutableTree.Empty;\n }\n }\n };\n /**\n * Sets a value at the specified path.\n *\n * @param {!Path} relativePath Path to set value at.\n * @param {?T} toSet Value to set.\n * @return {!ImmutableTree.} Resulting tree.\n */\n ImmutableTree.prototype.set = function (relativePath, toSet) {\n if (relativePath.isEmpty()) {\n return new ImmutableTree(toSet, this.children);\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front) || ImmutableTree.Empty;\n var newChild = child.set(relativePath.popFront(), toSet);\n var newChildren = this.children.insert(front, newChild);\n return new ImmutableTree(this.value, newChildren);\n }\n };\n /**\n * Removes the value at the specified path.\n *\n * @param {!Path} relativePath Path to value to remove.\n * @return {!ImmutableTree.} Resulting tree.\n */\n ImmutableTree.prototype.remove = function (relativePath) {\n if (relativePath.isEmpty()) {\n if (this.children.isEmpty()) {\n return ImmutableTree.Empty;\n }\n else {\n return new ImmutableTree(null, this.children);\n }\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child) {\n var newChild = child.remove(relativePath.popFront());\n var newChildren = void 0;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n if (this.value === null && newChildren.isEmpty()) {\n return ImmutableTree.Empty;\n }\n else {\n return new ImmutableTree(this.value, newChildren);\n }\n }\n else {\n return this;\n }\n }\n };\n /**\n * Gets a value from the tree.\n *\n * @param {!Path} relativePath Path to get value for.\n * @return {?T} Value at path, or null.\n */\n ImmutableTree.prototype.get = function (relativePath) {\n if (relativePath.isEmpty()) {\n return this.value;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child) {\n return child.get(relativePath.popFront());\n }\n else {\n return null;\n }\n }\n };\n /**\n * Replace the subtree at the specified path with the given new tree.\n *\n * @param {!Path} relativePath Path to replace subtree for.\n * @param {!ImmutableTree} newTree New tree.\n * @return {!ImmutableTree} Resulting tree.\n */\n ImmutableTree.prototype.setTree = function (relativePath, newTree) {\n if (relativePath.isEmpty()) {\n return newTree;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front) || ImmutableTree.Empty;\n var newChild = child.setTree(relativePath.popFront(), newTree);\n var newChildren = void 0;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n return new ImmutableTree(this.value, newChildren);\n }\n };\n /**\n * Performs a depth first fold on this tree. Transforms a tree into a single\n * value, given a function that operates on the path to a node, an optional\n * current value, and a map of child names to folded subtrees\n * @template V\n * @param {function(Path, ?T, Object.):V} fn\n * @return {V}\n */\n ImmutableTree.prototype.fold = function (fn) {\n return this.fold_(Path_1.Path.Empty, fn);\n };\n /**\n * Recursive helper for public-facing fold() method\n * @template V\n * @param {!Path} pathSoFar\n * @param {function(Path, ?T, Object.):V} fn\n * @return {V}\n * @private\n */\n ImmutableTree.prototype.fold_ = function (pathSoFar, fn) {\n var accum = {};\n this.children.inorderTraversal(function (childKey, childTree) {\n accum[childKey] = childTree.fold_(pathSoFar.child(childKey), fn);\n });\n return fn(pathSoFar, this.value, accum);\n };\n /**\n * Find the first matching value on the given path. Return the result of applying f to it.\n * @template V\n * @param {!Path} path\n * @param {!function(!Path, !T):?V} f\n * @return {?V}\n */\n ImmutableTree.prototype.findOnPath = function (path, f) {\n return this.findOnPath_(path, Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.findOnPath_ = function (pathToFollow, pathSoFar, f) {\n var result = this.value ? f(pathSoFar, this.value) : false;\n if (result) {\n return result;\n }\n else {\n if (pathToFollow.isEmpty()) {\n return null;\n }\n else {\n var front = pathToFollow.getFront();\n var nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.findOnPath_(pathToFollow.popFront(), pathSoFar.child(front), f);\n }\n else {\n return null;\n }\n }\n }\n };\n /**\n *\n * @param {!Path} path\n * @param {!function(!Path, !T)} f\n * @returns {!ImmutableTree.}\n */\n ImmutableTree.prototype.foreachOnPath = function (path, f) {\n return this.foreachOnPath_(path, Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.foreachOnPath_ = function (pathToFollow, currentRelativePath, f) {\n if (pathToFollow.isEmpty()) {\n return this;\n }\n else {\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n var front = pathToFollow.getFront();\n var nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.foreachOnPath_(pathToFollow.popFront(), currentRelativePath.child(front), f);\n }\n else {\n return ImmutableTree.Empty;\n }\n }\n };\n /**\n * Calls the given function for each node in the tree that has a value.\n *\n * @param {function(!Path, !T)} f A function to be called with\n * the path from the root of the tree to a node, and the value at that node.\n * Called in depth-first order.\n */\n ImmutableTree.prototype.foreach = function (f) {\n this.foreach_(Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.foreach_ = function (currentRelativePath, f) {\n this.children.inorderTraversal(function (childName, childTree) {\n childTree.foreach_(currentRelativePath.child(childName), f);\n });\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n };\n /**\n *\n * @param {function(string, !T)} f\n */\n ImmutableTree.prototype.foreachChild = function (f) {\n this.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value) {\n f(childName, childTree.value);\n }\n });\n };\n ImmutableTree.Empty = new ImmutableTree(null);\n return ImmutableTree;\n}());\nexports.ImmutableTree = ImmutableTree;\n\n//# sourceMappingURL=ImmutableTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/ImmutableTree.js\n// module id = 25\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"../Change\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\nvar PriorityIndex_1 = require(\"../../snap/indexes/PriorityIndex\");\n/**\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\n *\n * @constructor\n * @implements {NodeFilter}\n * @param {!Index} index\n */\nvar IndexedFilter = /** @class */ (function () {\n function IndexedFilter(index_) {\n this.index_ = index_;\n }\n IndexedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n util_1.assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\n var oldChild = snap.getImmediateChild(key);\n // Check if anything actually changed.\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\n // to avoid treating these cases as \"nothing changed.\"\n if (oldChild.isEmpty() == newChild.isEmpty()) {\n // Nothing changed.\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\n return snap;\n }\n }\n if (optChangeAccumulator != null) {\n if (newChild.isEmpty()) {\n if (snap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(key, oldChild));\n }\n else {\n util_1.assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\n }\n }\n else if (oldChild.isEmpty()) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childAddedChange(key, newChild));\n }\n else {\n optChangeAccumulator.trackChildChange(Change_1.Change.childChangedChange(key, newChild, oldChild));\n }\n }\n if (snap.isLeafNode() && newChild.isEmpty()) {\n return snap;\n }\n else {\n // Make sure the node is indexed\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\n }\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (optChangeAccumulator != null) {\n if (!oldSnap.isLeafNode()) {\n oldSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!newSnap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(key, childNode));\n }\n });\n }\n if (!newSnap.isLeafNode()) {\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (oldSnap.hasChild(key)) {\n var oldChild = oldSnap.getImmediateChild(key);\n if (!oldChild.equals(childNode)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childChangedChange(key, childNode, oldChild));\n }\n }\n else {\n optChangeAccumulator.trackChildChange(Change_1.Change.childAddedChange(key, childNode));\n }\n });\n }\n }\n return newSnap.withIndex(this.index_);\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n if (oldSnap.isEmpty()) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n else {\n return oldSnap.updatePriority(newPriority);\n }\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.filtersNodes = function () {\n return false;\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.getIndexedFilter = function () {\n return this;\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n return IndexedFilter;\n}());\nexports.IndexedFilter = IndexedFilter;\n\n//# sourceMappingURL=IndexedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/IndexedFilter.js\n// module id = 26\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar StatsCollection_1 = require(\"./StatsCollection\");\nvar StatsManager = /** @class */ (function () {\n function StatsManager() {\n }\n StatsManager.getCollection = function (repoInfo) {\n var hashString = repoInfo.toString();\n if (!this.collections_[hashString]) {\n this.collections_[hashString] = new StatsCollection_1.StatsCollection();\n }\n return this.collections_[hashString];\n };\n StatsManager.getOrCreateReporter = function (repoInfo, creatorFunction) {\n var hashString = repoInfo.toString();\n if (!this.reporters_[hashString]) {\n this.reporters_[hashString] = creatorFunction();\n }\n return this.reporters_[hashString];\n };\n StatsManager.collections_ = {};\n StatsManager.reporters_ = {};\n return StatsManager;\n}());\nexports.StatsManager = StatsManager;\n\n//# sourceMappingURL=StatsManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsManager.js\n// module id = 27\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Repo_1 = require(\"./Repo\");\nvar util_2 = require(\"./util/util\");\nvar parser_1 = require(\"./util/libs/parser\");\nvar validation_1 = require(\"./util/validation\");\nrequire(\"./Repo_transaction\");\n/** @const {string} */\nvar DATABASE_URL_OPTION = 'databaseURL';\nvar _staticInstance;\n/**\n * Creates and caches Repo instances.\n */\nvar RepoManager = /** @class */ (function () {\n function RepoManager() {\n /**\n * @private {!Object.>}\n */\n this.repos_ = {};\n /**\n * If true, new Repos will be created to use ReadonlyRestClient (for testing purposes).\n * @private {boolean}\n */\n this.useRestClient_ = false;\n }\n RepoManager.getInstance = function () {\n if (!_staticInstance) {\n _staticInstance = new RepoManager();\n }\n return _staticInstance;\n };\n // TODO(koss): Remove these functions unless used in tests?\n RepoManager.prototype.interrupt = function () {\n for (var appName in this.repos_) {\n for (var dbUrl in this.repos_[appName]) {\n this.repos_[appName][dbUrl].interrupt();\n }\n }\n };\n RepoManager.prototype.resume = function () {\n for (var appName in this.repos_) {\n for (var dbUrl in this.repos_[appName]) {\n this.repos_[appName][dbUrl].resume();\n }\n }\n };\n /**\n * This function should only ever be called to CREATE a new database instance.\n *\n * @param {!FirebaseApp} app\n * @return {!Database}\n */\n RepoManager.prototype.databaseFromApp = function (app, url) {\n var dbUrl = url || app.options[DATABASE_URL_OPTION];\n if (dbUrl === undefined) {\n util_2.fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\n DATABASE_URL_OPTION +\n ' option when calling firebase.initializeApp().');\n }\n var parsedUrl = parser_1.parseRepoInfo(dbUrl);\n var repoInfo = parsedUrl.repoInfo;\n validation_1.validateUrl('Invalid Firebase Database URL', 1, parsedUrl);\n if (!parsedUrl.path.isEmpty()) {\n util_2.fatal('Database URL must point to the root of a Firebase Database ' +\n '(not including a child path).');\n }\n var repo = this.createRepo(repoInfo, app);\n return repo.database;\n };\n /**\n * Remove the repo and make sure it is disconnected.\n *\n * @param {!Repo} repo\n */\n RepoManager.prototype.deleteRepo = function (repo) {\n var appRepos = util_1.safeGet(this.repos_, repo.app.name);\n // This should never happen...\n if (!appRepos || util_1.safeGet(appRepos, repo.repoInfo_.toURLString()) !== repo) {\n util_2.fatal(\"Database \" + repo.app.name + \"(\" + repo.repoInfo_ + \") has already been deleted.\");\n }\n repo.interrupt();\n delete appRepos[repo.repoInfo_.toURLString()];\n };\n /**\n * Ensures a repo doesn't already exist and then creates one using the\n * provided app.\n *\n * @param {!RepoInfo} repoInfo The metadata about the Repo\n * @param {!FirebaseApp} app\n * @return {!Repo} The Repo object for the specified server / repoName.\n */\n RepoManager.prototype.createRepo = function (repoInfo, app) {\n var appRepos = util_1.safeGet(this.repos_, app.name);\n if (!appRepos) {\n appRepos = {};\n this.repos_[app.name] = appRepos;\n }\n var repo = util_1.safeGet(appRepos, repoInfo.toURLString());\n if (repo) {\n util_2.fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\n }\n repo = new Repo_1.Repo(repoInfo, this.useRestClient_, app);\n appRepos[repoInfo.toURLString()] = repo;\n return repo;\n };\n /**\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\n * @param {boolean} forceRestClient\n */\n RepoManager.prototype.forceRestClient = function (forceRestClient) {\n this.useRestClient_ = forceRestClient;\n };\n return RepoManager;\n}());\nexports.RepoManager = RepoManager;\n\n//# sourceMappingURL=RepoManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/RepoManager.js\n// module id = 28\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"../core/util/util\");\nvar parser_1 = require(\"../core/util/libs/parser\");\nvar Path_1 = require(\"../core/util/Path\");\nvar Reference_1 = require(\"./Reference\");\nvar Repo_1 = require(\"../core/Repo\");\nvar RepoManager_1 = require(\"../core/RepoManager\");\nvar util_2 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\n/**\n * Class representing a firebase database.\n * @implements {FirebaseService}\n */\nvar Database = /** @class */ (function () {\n /**\n * The constructor should not be called by users of our public API.\n * @param {!Repo} repo_\n */\n function Database(repo_) {\n this.repo_ = repo_;\n if (!(repo_ instanceof Repo_1.Repo)) {\n util_1.fatal(\"Don't call new Database() directly - please use firebase.database().\");\n }\n /** @type {Reference} */\n this.root_ = new Reference_1.Reference(repo_, Path_1.Path.Empty);\n this.INTERNAL = new DatabaseInternals(this);\n }\n Object.defineProperty(Database.prototype, \"app\", {\n get: function () {\n return this.repo_.app;\n },\n enumerable: true,\n configurable: true\n });\n Database.prototype.ref = function (path) {\n this.checkDeleted_('ref');\n util_2.validateArgCount('database.ref', 0, 1, arguments.length);\n if (path instanceof Reference_1.Reference) {\n return this.refFromURL(path.toString());\n }\n return path !== undefined ? this.root_.child(path) : this.root_;\n };\n /**\n * Returns a reference to the root or the path specified in url.\n * We throw a exception if the url is not in the same domain as the\n * current repo.\n * @param {string} url\n * @return {!Reference} Firebase reference.\n */\n Database.prototype.refFromURL = function (url) {\n /** @const {string} */\n var apiName = 'database.refFromURL';\n this.checkDeleted_(apiName);\n util_2.validateArgCount(apiName, 1, 1, arguments.length);\n var parsedURL = parser_1.parseRepoInfo(url);\n validation_1.validateUrl(apiName, 1, parsedURL);\n var repoInfo = parsedURL.repoInfo;\n if (repoInfo.host !== this.repo_.repoInfo_.host) {\n util_1.fatal(apiName +\n ': Host name does not match the current database: ' +\n '(found ' +\n repoInfo.host +\n ' but expected ' +\n this.repo_.repoInfo_.host +\n ')');\n }\n return this.ref(parsedURL.path.toString());\n };\n /**\n * @param {string} apiName\n */\n Database.prototype.checkDeleted_ = function (apiName) {\n if (this.repo_ === null) {\n util_1.fatal('Cannot call ' + apiName + ' on a deleted database.');\n }\n };\n // Make individual repo go offline.\n Database.prototype.goOffline = function () {\n util_2.validateArgCount('database.goOffline', 0, 0, arguments.length);\n this.checkDeleted_('goOffline');\n this.repo_.interrupt();\n };\n Database.prototype.goOnline = function () {\n util_2.validateArgCount('database.goOnline', 0, 0, arguments.length);\n this.checkDeleted_('goOnline');\n this.repo_.resume();\n };\n Database.ServerValue = {\n TIMESTAMP: {\n '.sv': 'timestamp'\n }\n };\n return Database;\n}());\nexports.Database = Database;\nvar DatabaseInternals = /** @class */ (function () {\n /** @param {!Database} database */\n function DatabaseInternals(database) {\n this.database = database;\n }\n /** @return {Promise} */\n DatabaseInternals.prototype.delete = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n this.database.checkDeleted_('delete');\n RepoManager_1.RepoManager.getInstance().deleteRepo(this.database.repo_);\n this.database.repo_ = null;\n this.database.root_ = null;\n this.database.INTERNAL = null;\n this.database = null;\n return [2 /*return*/];\n });\n });\n };\n return DatabaseInternals;\n}());\nexports.DatabaseInternals = DatabaseInternals;\n\n//# sourceMappingURL=Database.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Database.js\n// module id = 34\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"../Path\");\nvar RepoInfo_1 = require(\"../../RepoInfo\");\nvar util_1 = require(\"../util\");\n/**\n * @param {!string} pathString\n * @return {string}\n */\nfunction decodePath(pathString) {\n var pathStringDecoded = '';\n var pieces = pathString.split('/');\n for (var i = 0; i < pieces.length; i++) {\n if (pieces[i].length > 0) {\n var piece = pieces[i];\n try {\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\n }\n catch (e) { }\n pathStringDecoded += '/' + piece;\n }\n }\n return pathStringDecoded;\n}\n/**\n * @param {!string} queryString\n * @return {!{[key:string]:string}} key value hash\n */\nfunction decodeQuery(queryString) {\n var results = {};\n if (queryString.startsWith('?')) {\n queryString = queryString.substring(1);\n }\n for (var _i = 0, _a = queryString.split('&'); _i < _a.length; _i++) {\n var segment = _a[_i];\n if (segment.length === 0) {\n continue;\n }\n var kv = segment.split('=');\n if (kv.length === 2) {\n results[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);\n }\n else {\n util_1.warn(\"Invalid query segment '\" + segment + \"' in query '\" + queryString + \"'\");\n }\n }\n return results;\n}\n/**\n *\n * @param {!string} dataURL\n * @return {{repoInfo: !RepoInfo, path: !Path}}\n */\nexports.parseRepoInfo = function (dataURL) {\n var parsedUrl = exports.parseURL(dataURL), namespace = parsedUrl.subdomain;\n if (parsedUrl.domain === 'firebase') {\n util_1.fatal(parsedUrl.host +\n ' is no longer supported. ' +\n 'Please use .firebaseio.com instead');\n }\n // Catch common error of uninitialized namespace value.\n if ((!namespace || namespace == 'undefined') &&\n parsedUrl.domain !== 'localhost') {\n util_1.fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\n }\n if (!parsedUrl.secure) {\n util_1.warnIfPageIsSecure();\n }\n var webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\n return {\n repoInfo: new RepoInfo_1.RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, webSocketOnly),\n path: new Path_1.Path(parsedUrl.pathString)\n };\n};\n/**\n *\n * @param {!string} dataURL\n * @return {{host: string, port: number, domain: string, subdomain: string, secure: boolean, scheme: string, pathString: string}}\n */\nexports.parseURL = function (dataURL) {\n // Default to empty strings in the event of a malformed string.\n var host = '', domain = '', subdomain = '', pathString = '';\n // Always default to SSL, unless otherwise specified.\n var secure = true, scheme = 'https', port = 443;\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\n if (typeof dataURL === 'string') {\n // Parse scheme.\n var colonInd = dataURL.indexOf('//');\n if (colonInd >= 0) {\n scheme = dataURL.substring(0, colonInd - 1);\n dataURL = dataURL.substring(colonInd + 2);\n }\n // Parse host, path, and query string.\n var slashInd = dataURL.indexOf('/');\n if (slashInd === -1) {\n slashInd = dataURL.length;\n }\n var questionMarkInd = dataURL.indexOf('?');\n if (questionMarkInd === -1) {\n questionMarkInd = dataURL.length;\n }\n host = dataURL.substring(0, Math.min(slashInd, questionMarkInd));\n if (slashInd < questionMarkInd) {\n // For pathString, questionMarkInd will always come after slashInd\n pathString = decodePath(dataURL.substring(slashInd, questionMarkInd));\n }\n var queryParams = decodeQuery(dataURL.substring(Math.min(dataURL.length, questionMarkInd)));\n // If we have a port, use scheme for determining if it's secure.\n colonInd = host.indexOf(':');\n if (colonInd >= 0) {\n secure = scheme === 'https' || scheme === 'wss';\n port = parseInt(host.substring(colonInd + 1), 10);\n }\n else {\n colonInd = dataURL.length;\n }\n var parts = host.split('.');\n if (parts.length === 3) {\n // Normalize namespaces to lowercase to share storage / connection.\n domain = parts[1];\n subdomain = parts[0].toLowerCase();\n }\n else if (parts.length === 2) {\n domain = parts[0];\n }\n else if (parts[0].slice(0, colonInd).toLowerCase() === 'localhost') {\n domain = 'localhost';\n }\n // Support `ns` query param if subdomain not already set\n if (subdomain === '' && 'ns' in queryParams) {\n subdomain = queryParams['ns'];\n }\n }\n return {\n host: host,\n port: port,\n domain: domain,\n subdomain: subdomain,\n secure: secure,\n scheme: scheme,\n pathString: pathString\n };\n};\n\n//# sourceMappingURL=parser.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/libs/parser.js\n// module id = 35\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar storage_1 = require(\"./storage/storage\");\nvar Constants_1 = require(\"../realtime/Constants\");\n/**\n * A class that holds metadata about a Repo object\n *\n * @constructor\n */\nvar RepoInfo = /** @class */ (function () {\n /**\n * @param {string} host Hostname portion of the url for the repo\n * @param {boolean} secure Whether or not this repo is accessed over ssl\n * @param {string} namespace The namespace represented by the repo\n * @param {boolean} webSocketOnly Whether to prefer websockets over all other transports (used by Nest).\n * @param {string=} persistenceKey Override the default session persistence storage key\n */\n function RepoInfo(host, secure, namespace, webSocketOnly, persistenceKey) {\n if (persistenceKey === void 0) { persistenceKey = ''; }\n this.secure = secure;\n this.namespace = namespace;\n this.webSocketOnly = webSocketOnly;\n this.persistenceKey = persistenceKey;\n this.host = host.toLowerCase();\n this.domain = this.host.substr(this.host.indexOf('.') + 1);\n this.internalHost = storage_1.PersistentStorage.get('host:' + host) || this.host;\n }\n RepoInfo.prototype.needsQueryParam = function () {\n return this.host !== this.internalHost || this.isCustomHost();\n };\n RepoInfo.prototype.isCacheableHost = function () {\n return this.internalHost.substr(0, 2) === 's-';\n };\n RepoInfo.prototype.isDemoHost = function () {\n return this.domain === 'firebaseio-demo.com';\n };\n RepoInfo.prototype.isCustomHost = function () {\n return (this.domain !== 'firebaseio.com' && this.domain !== 'firebaseio-demo.com');\n };\n RepoInfo.prototype.updateHost = function (newHost) {\n if (newHost !== this.internalHost) {\n this.internalHost = newHost;\n if (this.isCacheableHost()) {\n storage_1.PersistentStorage.set('host:' + this.host, this.internalHost);\n }\n }\n };\n /**\n * Returns the websocket URL for this repo\n * @param {string} type of connection\n * @param {Object} params list\n * @return {string} The URL for this repo\n */\n RepoInfo.prototype.connectionURL = function (type, params) {\n util_1.assert(typeof type === 'string', 'typeof type must == string');\n util_1.assert(typeof params === 'object', 'typeof params must == object');\n var connURL;\n if (type === Constants_1.WEBSOCKET) {\n connURL =\n (this.secure ? 'wss://' : 'ws://') + this.internalHost + '/.ws?';\n }\n else if (type === Constants_1.LONG_POLLING) {\n connURL =\n (this.secure ? 'https://' : 'http://') + this.internalHost + '/.lp?';\n }\n else {\n throw new Error('Unknown connection type: ' + type);\n }\n if (this.needsQueryParam()) {\n params['ns'] = this.namespace;\n }\n var pairs = [];\n util_2.forEach(params, function (key, value) {\n pairs.push(key + '=' + value);\n });\n return connURL + pairs.join('&');\n };\n /** @return {string} */\n RepoInfo.prototype.toString = function () {\n var str = this.toURLString();\n if (this.persistenceKey) {\n str += '<' + this.persistenceKey + '>';\n }\n return str;\n };\n /** @return {string} */\n RepoInfo.prototype.toURLString = function () {\n return (this.secure ? 'https://' : 'http://') + this.host;\n };\n return RepoInfo;\n}());\nexports.RepoInfo = RepoInfo;\n\n//# sourceMappingURL=RepoInfo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/RepoInfo.js\n// module id = 36\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_2 = require(\"../core/util/util\");\nvar util_3 = require(\"@firebase/util\");\n/**\n * @constructor\n */\nvar OnDisconnect = /** @class */ (function () {\n /**\n * @param {!Repo} repo_\n * @param {!Path} path_\n */\n function OnDisconnect(repo_, path_) {\n this.repo_ = repo_;\n this.path_ = path_;\n }\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.cancel = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\n util_1.validateCallback('OnDisconnect.cancel', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectCancel(this.path_, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.remove = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.remove', this.path_);\n util_1.validateCallback('OnDisconnect.remove', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.set = function (value, onComplete) {\n util_1.validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.set', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.set', 1, value, this.path_, false);\n util_1.validateCallback('OnDisconnect.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, value, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {number|string|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.setWithPriority = function (value, priority, onComplete) {\n util_1.validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.setWithPriority', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.setWithPriority', 1, value, this.path_, false);\n validation_1.validatePriority('OnDisconnect.setWithPriority', 2, priority, false);\n util_1.validateCallback('OnDisconnect.setWithPriority', 3, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSetWithPriority(this.path_, value, priority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.update = function (objectToMerge, onComplete) {\n util_1.validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.update', this.path_);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_2.warn('Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the ' +\n 'existing data, or an Object with integer keys if you really do want to only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('OnDisconnect.update', 1, objectToMerge, this.path_, false);\n util_1.validateCallback('OnDisconnect.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectUpdate(this.path_, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n return OnDisconnect;\n}());\nexports.OnDisconnect = OnDisconnect;\n\n//# sourceMappingURL=onDisconnect.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/onDisconnect.js\n// module id = 37\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar KeyIndex_1 = require(\"../core/snap/indexes/KeyIndex\");\nvar PriorityIndex_1 = require(\"../core/snap/indexes/PriorityIndex\");\nvar ValueIndex_1 = require(\"../core/snap/indexes/ValueIndex\");\nvar PathIndex_1 = require(\"../core/snap/indexes/PathIndex\");\nvar util_2 = require(\"../core/util/util\");\nvar Path_1 = require(\"../core/util/Path\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_3 = require(\"@firebase/util\");\nvar EventRegistration_1 = require(\"../core/view/EventRegistration\");\nvar util_4 = require(\"@firebase/util\");\nvar __referenceConstructor;\n/**\n * A Query represents a filter to be applied to a firebase location. This object purely represents the\n * query expression (and exposes our public API to build the query). The actual query logic is in ViewBase.js.\n *\n * Since every Firebase reference is a query, Firebase inherits from this object.\n */\nvar Query = /** @class */ (function () {\n function Query(repo, path, queryParams_, orderByCalled_) {\n this.repo = repo;\n this.path = path;\n this.queryParams_ = queryParams_;\n this.orderByCalled_ = orderByCalled_;\n }\n Object.defineProperty(Query, \"__referenceConstructor\", {\n get: function () {\n util_1.assert(__referenceConstructor, 'Reference.ts has not been loaded');\n return __referenceConstructor;\n },\n set: function (val) {\n __referenceConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Validates start/end values for queries.\n * @param {!QueryParams} params\n * @private\n */\n Query.validateQueryEndpoints_ = function (params) {\n var startNode = null;\n var endNode = null;\n if (params.hasStart()) {\n startNode = params.getIndexStartValue();\n }\n if (params.hasEnd()) {\n endNode = params.getIndexEndValue();\n }\n if (params.getIndex() === KeyIndex_1.KEY_INDEX) {\n var tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\n 'startAt(), endAt(), or equalTo().';\n var wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), endAt(),' +\n 'or equalTo() must be a string.';\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n if (startName != util_2.MIN_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof startNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n if (endName != util_2.MAX_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof endNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n }\n else if (params.getIndex() === PriorityIndex_1.PRIORITY_INDEX) {\n if ((startNode != null && !validation_1.isValidPriority(startNode)) ||\n (endNode != null && !validation_1.isValidPriority(endNode))) {\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\n 'endAt(), or equalTo() must be a valid priority value (null, a number, or a string).');\n }\n }\n else {\n util_1.assert(params.getIndex() instanceof PathIndex_1.PathIndex ||\n params.getIndex() === ValueIndex_1.VALUE_INDEX, 'unknown index type.');\n if ((startNode != null && typeof startNode === 'object') ||\n (endNode != null && typeof endNode === 'object')) {\n throw new Error('Query: First argument passed to startAt(), endAt(), or equalTo() cannot be ' +\n 'an object.');\n }\n }\n };\n /**\n * Validates that limit* has been called with the correct combination of parameters\n * @param {!QueryParams} params\n * @private\n */\n Query.validateLimit_ = function (params) {\n if (params.hasStart() &&\n params.hasEnd() &&\n params.hasLimit() &&\n !params.hasAnchoredLimit()) {\n throw new Error(\"Query: Can't combine startAt(), endAt(), and limit(). Use limitToFirst() or limitToLast() instead.\");\n }\n };\n /**\n * Validates that no other order by call has been made\n * @param {!string} fnName\n * @private\n */\n Query.prototype.validateNoPreviousOrderByCall_ = function (fnName) {\n if (this.orderByCalled_ === true) {\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\n }\n };\n /**\n * @return {!QueryParams}\n */\n Query.prototype.getQueryParams = function () {\n return this.queryParams_;\n };\n /**\n * @return {!Reference}\n */\n Query.prototype.getRef = function () {\n util_3.validateArgCount('Query.ref', 0, 0, arguments.length);\n // This is a slight hack. We cannot goog.require('fb.api.Firebase'), since Firebase requires fb.api.Query.\n // However, we will always export 'Firebase' to the global namespace, so it's guaranteed to exist by the time this\n // method gets called.\n return new Query.__referenceConstructor(this.repo, this.path);\n };\n /**\n * @param {!string} eventType\n * @param {!function(DataSnapshot, string=)} callback\n * @param {(function(Error)|Object)=} cancelCallbackOrContext\n * @param {Object=} context\n * @return {!function(DataSnapshot, string=)}\n */\n Query.prototype.on = function (eventType, callback, cancelCallbackOrContext, context) {\n util_3.validateArgCount('Query.on', 2, 4, arguments.length);\n validation_1.validateEventType('Query.on', 1, eventType, false);\n util_3.validateCallback('Query.on', 2, callback, false);\n var ret = Query.getCancelAndContextArgs_('Query.on', cancelCallbackOrContext, context);\n if (eventType === 'value') {\n this.onValueEvent(callback, ret.cancel, ret.context);\n }\n else {\n var callbacks = {};\n callbacks[eventType] = callback;\n this.onChildEvent(callbacks, ret.cancel, ret.context);\n }\n return callback;\n };\n /**\n * @param {!function(!DataSnapshot)} callback\n * @param {?function(Error)} cancelCallback\n * @param {?Object} context\n * @protected\n */\n Query.prototype.onValueEvent = function (callback, cancelCallback, context) {\n var container = new EventRegistration_1.ValueEventRegistration(callback, cancelCallback || null, context || null);\n this.repo.addEventCallbackForQuery(this, container);\n };\n /**\n * @param {!Object.} callbacks\n * @param {?function(Error)} cancelCallback\n * @param {?Object} context\n * @protected\n */\n Query.prototype.onChildEvent = function (callbacks, cancelCallback, context) {\n var container = new EventRegistration_1.ChildEventRegistration(callbacks, cancelCallback, context);\n this.repo.addEventCallbackForQuery(this, container);\n };\n /**\n * @param {string=} eventType\n * @param {(function(!DataSnapshot, ?string=))=} callback\n * @param {Object=} context\n */\n Query.prototype.off = function (eventType, callback, context) {\n util_3.validateArgCount('Query.off', 0, 3, arguments.length);\n validation_1.validateEventType('Query.off', 1, eventType, true);\n util_3.validateCallback('Query.off', 2, callback, true);\n util_3.validateContextObject('Query.off', 3, context, true);\n var container = null;\n var callbacks = null;\n if (eventType === 'value') {\n var valueCallback = callback || null;\n container = new EventRegistration_1.ValueEventRegistration(valueCallback, null, context || null);\n }\n else if (eventType) {\n if (callback) {\n callbacks = {};\n callbacks[eventType] = callback;\n }\n container = new EventRegistration_1.ChildEventRegistration(callbacks, null, context || null);\n }\n this.repo.removeEventCallbackForQuery(this, container);\n };\n /**\n * Attaches a listener, waits for the first event, and then removes the listener\n * @param {!string} eventType\n * @param {!function(!DataSnapshot, string=)} userCallback\n * @param cancelOrContext\n * @param context\n * @return {!firebase.Promise}\n */\n Query.prototype.once = function (eventType, userCallback, cancelOrContext, context) {\n var _this = this;\n util_3.validateArgCount('Query.once', 1, 4, arguments.length);\n validation_1.validateEventType('Query.once', 1, eventType, false);\n util_3.validateCallback('Query.once', 2, userCallback, true);\n var ret = Query.getCancelAndContextArgs_('Query.once', cancelOrContext, context);\n // TODO: Implement this more efficiently (in particular, use 'get' wire protocol for 'value' event)\n // TODO: consider actually wiring the callbacks into the promise. We cannot do this without a breaking change\n // because the API currently expects callbacks will be called synchronously if the data is cached, but this is\n // against the Promise specification.\n var firstCall = true;\n var deferred = new util_4.Deferred();\n // A dummy error handler in case a user wasn't expecting promises\n deferred.promise.catch(function () { });\n var onceCallback = function (snapshot) {\n // NOTE: Even though we unsubscribe, we may get called multiple times if a single action (e.g. set() with JSON)\n // triggers multiple events (e.g. child_added or child_changed).\n if (firstCall) {\n firstCall = false;\n _this.off(eventType, onceCallback);\n if (userCallback) {\n userCallback.bind(ret.context)(snapshot);\n }\n deferred.resolve(snapshot);\n }\n };\n this.on(eventType, onceCallback, \n /*cancel=*/ function (err) {\n _this.off(eventType, onceCallback);\n if (ret.cancel)\n ret.cancel.bind(ret.context)(err);\n deferred.reject(err);\n });\n return deferred.promise;\n };\n /**\n * Set a limit and anchor it to the start of the window.\n * @param {!number} limit\n * @return {!Query}\n */\n Query.prototype.limitToFirst = function (limit) {\n util_3.validateArgCount('Query.limitToFirst', 1, 1, arguments.length);\n if (typeof limit !== 'number' ||\n Math.floor(limit) !== limit ||\n limit <= 0) {\n throw new Error('Query.limitToFirst: First argument must be a positive integer.');\n }\n if (this.queryParams_.hasLimit()) {\n throw new Error('Query.limitToFirst: Limit was already set (by another call to limit, ' +\n 'limitToFirst, or limitToLast).');\n }\n return new Query(this.repo, this.path, this.queryParams_.limitToFirst(limit), this.orderByCalled_);\n };\n /**\n * Set a limit and anchor it to the end of the window.\n * @param {!number} limit\n * @return {!Query}\n */\n Query.prototype.limitToLast = function (limit) {\n util_3.validateArgCount('Query.limitToLast', 1, 1, arguments.length);\n if (typeof limit !== 'number' ||\n Math.floor(limit) !== limit ||\n limit <= 0) {\n throw new Error('Query.limitToLast: First argument must be a positive integer.');\n }\n if (this.queryParams_.hasLimit()) {\n throw new Error('Query.limitToLast: Limit was already set (by another call to limit, ' +\n 'limitToFirst, or limitToLast).');\n }\n return new Query(this.repo, this.path, this.queryParams_.limitToLast(limit), this.orderByCalled_);\n };\n /**\n * Given a child path, return a new query ordered by the specified grandchild path.\n * @param {!string} path\n * @return {!Query}\n */\n Query.prototype.orderByChild = function (path) {\n util_3.validateArgCount('Query.orderByChild', 1, 1, arguments.length);\n if (path === '$key') {\n throw new Error('Query.orderByChild: \"$key\" is invalid. Use Query.orderByKey() instead.');\n }\n else if (path === '$priority') {\n throw new Error('Query.orderByChild: \"$priority\" is invalid. Use Query.orderByPriority() instead.');\n }\n else if (path === '$value') {\n throw new Error('Query.orderByChild: \"$value\" is invalid. Use Query.orderByValue() instead.');\n }\n validation_1.validatePathString('Query.orderByChild', 1, path, false);\n this.validateNoPreviousOrderByCall_('Query.orderByChild');\n var parsedPath = new Path_1.Path(path);\n if (parsedPath.isEmpty()) {\n throw new Error('Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead.');\n }\n var index = new PathIndex_1.PathIndex(parsedPath);\n var newParams = this.queryParams_.orderBy(index);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the KeyIndex\n * @return {!Query}\n */\n Query.prototype.orderByKey = function () {\n util_3.validateArgCount('Query.orderByKey', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByKey');\n var newParams = this.queryParams_.orderBy(KeyIndex_1.KEY_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the PriorityIndex\n * @return {!Query}\n */\n Query.prototype.orderByPriority = function () {\n util_3.validateArgCount('Query.orderByPriority', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByPriority');\n var newParams = this.queryParams_.orderBy(PriorityIndex_1.PRIORITY_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the ValueIndex\n * @return {!Query}\n */\n Query.prototype.orderByValue = function () {\n util_3.validateArgCount('Query.orderByValue', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByValue');\n var newParams = this.queryParams_.orderBy(ValueIndex_1.VALUE_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * @param {number|string|boolean|null} value\n * @param {?string=} name\n * @return {!Query}\n */\n Query.prototype.startAt = function (value, name) {\n if (value === void 0) { value = null; }\n util_3.validateArgCount('Query.startAt', 0, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.startAt', 1, value, this.path, true);\n validation_1.validateKey('Query.startAt', 2, name, true);\n var newParams = this.queryParams_.startAt(value, name);\n Query.validateLimit_(newParams);\n Query.validateQueryEndpoints_(newParams);\n if (this.queryParams_.hasStart()) {\n throw new Error('Query.startAt: Starting point was already set (by another call to startAt ' +\n 'or equalTo).');\n }\n // Calling with no params tells us to start at the beginning.\n if (value === undefined) {\n value = null;\n name = null;\n }\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\n };\n /**\n * @param {number|string|boolean|null} value\n * @param {?string=} name\n * @return {!Query}\n */\n Query.prototype.endAt = function (value, name) {\n if (value === void 0) { value = null; }\n util_3.validateArgCount('Query.endAt', 0, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.endAt', 1, value, this.path, true);\n validation_1.validateKey('Query.endAt', 2, name, true);\n var newParams = this.queryParams_.endAt(value, name);\n Query.validateLimit_(newParams);\n Query.validateQueryEndpoints_(newParams);\n if (this.queryParams_.hasEnd()) {\n throw new Error('Query.endAt: Ending point was already set (by another call to endAt or ' +\n 'equalTo).');\n }\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\n };\n /**\n * Load the selection of children with exactly the specified value, and, optionally,\n * the specified name.\n * @param {number|string|boolean|null} value\n * @param {string=} name\n * @return {!Query}\n */\n Query.prototype.equalTo = function (value, name) {\n util_3.validateArgCount('Query.equalTo', 1, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.equalTo', 1, value, this.path, false);\n validation_1.validateKey('Query.equalTo', 2, name, true);\n if (this.queryParams_.hasStart()) {\n throw new Error('Query.equalTo: Starting point was already set (by another call to startAt or ' +\n 'equalTo).');\n }\n if (this.queryParams_.hasEnd()) {\n throw new Error('Query.equalTo: Ending point was already set (by another call to endAt or ' +\n 'equalTo).');\n }\n return this.startAt(value, name).endAt(value, name);\n };\n /**\n * @return {!string} URL for this location.\n */\n Query.prototype.toString = function () {\n util_3.validateArgCount('Query.toString', 0, 0, arguments.length);\n return this.repo.toString() + this.path.toUrlEncodedString();\n };\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users.\n Query.prototype.toJSON = function () {\n // An optional spacer argument is unnecessary for a string.\n util_3.validateArgCount('Query.toJSON', 0, 1, arguments.length);\n return this.toString();\n };\n /**\n * An object representation of the query parameters used by this Query.\n * @return {!Object}\n */\n Query.prototype.queryObject = function () {\n return this.queryParams_.getQueryObject();\n };\n /**\n * @return {!string}\n */\n Query.prototype.queryIdentifier = function () {\n var obj = this.queryObject();\n var id = util_2.ObjectToUniqueKey(obj);\n return id === '{}' ? 'default' : id;\n };\n /**\n * Return true if this query and the provided query are equivalent; otherwise, return false.\n * @param {Query} other\n * @return {boolean}\n */\n Query.prototype.isEqual = function (other) {\n util_3.validateArgCount('Query.isEqual', 1, 1, arguments.length);\n if (!(other instanceof Query)) {\n var error = 'Query.isEqual failed: First argument must be an instance of firebase.database.Query.';\n throw new Error(error);\n }\n var sameRepo = this.repo === other.repo;\n var samePath = this.path.equals(other.path);\n var sameQueryIdentifier = this.queryIdentifier() === other.queryIdentifier();\n return sameRepo && samePath && sameQueryIdentifier;\n };\n /**\n * Helper used by .on and .once to extract the context and or cancel arguments.\n * @param {!string} fnName The function name (on or once)\n * @param {(function(Error)|Object)=} cancelOrContext\n * @param {Object=} context\n * @return {{cancel: ?function(Error), context: ?Object}}\n * @private\n */\n Query.getCancelAndContextArgs_ = function (fnName, cancelOrContext, context) {\n var ret = { cancel: null, context: null };\n if (cancelOrContext && context) {\n ret.cancel = cancelOrContext;\n util_3.validateCallback(fnName, 3, ret.cancel, true);\n ret.context = context;\n util_3.validateContextObject(fnName, 4, ret.context, true);\n }\n else if (cancelOrContext) {\n // we have either a cancel callback or a context.\n if (typeof cancelOrContext === 'object' && cancelOrContext !== null) {\n // it's a context!\n ret.context = cancelOrContext;\n }\n else if (typeof cancelOrContext === 'function') {\n ret.cancel = cancelOrContext;\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, 3, true) +\n ' must either be a cancel callback or a context object.');\n }\n }\n return ret;\n };\n Object.defineProperty(Query.prototype, \"ref\", {\n get: function () {\n return this.getRef();\n },\n enumerable: true,\n configurable: true\n });\n return Query;\n}());\nexports.Query = Query;\n\n//# sourceMappingURL=Query.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Query.js\n// module id = 38\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar MAX_NODE;\nfunction setMaxNode(val) {\n MAX_NODE = val;\n}\nexports.setMaxNode = setMaxNode;\n/**\n * @param {(!string|!number)} priority\n * @return {!string}\n */\nexports.priorityHashText = function (priority) {\n if (typeof priority === 'number')\n return 'number:' + util_2.doubleToIEEE754String(priority);\n else\n return 'string:' + priority;\n};\n/**\n * Validates that a priority snapshot Node is valid.\n *\n * @param {!Node} priorityNode\n */\nexports.validatePriorityNode = function (priorityNode) {\n if (priorityNode.isLeafNode()) {\n var val = priorityNode.val();\n util_1.assert(typeof val === 'string' ||\n typeof val === 'number' ||\n (typeof val === 'object' && util_3.contains(val, '.sv')), 'Priority must be a string or number.');\n }\n else {\n util_1.assert(priorityNode === MAX_NODE || priorityNode.isEmpty(), 'priority of unexpected type.');\n }\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\n util_1.assert(priorityNode === MAX_NODE || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\n};\n\n//# sourceMappingURL=snap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/snap.js\n// module id = 39\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Index_1 = require(\"./Index\");\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\nvar nodeFromJSON_1 = require(\"../nodeFromJSON\");\n/**\n * @constructor\n * @extends {Index}\n * @private\n */\nvar ValueIndex = /** @class */ (function (_super) {\n tslib_1.__extends(ValueIndex, _super);\n function ValueIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.compare = function (a, b) {\n var indexCmp = a.node.compareTo(b.node);\n if (indexCmp === 0) {\n return util_1.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.isDefinedOn = function (node) {\n return true;\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return !oldNode.equals(newNode);\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.maxPost = function () {\n return Node_1.NamedNode.MAX;\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n ValueIndex.prototype.makePost = function (indexValue, name) {\n var valueNode = nodeFromJSON_1.nodeFromJSON(indexValue);\n return new Node_1.NamedNode(name, valueNode);\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n ValueIndex.prototype.toString = function () {\n return '.value';\n };\n return ValueIndex;\n}(Index_1.Index));\nexports.ValueIndex = ValueIndex;\nexports.VALUE_INDEX = new ValueIndex();\n\n//# sourceMappingURL=ValueIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/ValueIndex.js\n// module id = 40\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar childSet_1 = require(\"./childSet\");\nvar util_2 = require(\"@firebase/util\");\nvar Node_1 = require(\"./Node\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar KeyIndex_1 = require(\"./indexes/KeyIndex\");\nvar _defaultIndexMap;\nvar fallbackObject = {};\n/**\n *\n * @param {Object.>} indexes\n * @param {Object.} indexSet\n * @constructor\n */\nvar IndexMap = /** @class */ (function () {\n function IndexMap(indexes_, indexSet_) {\n this.indexes_ = indexes_;\n this.indexSet_ = indexSet_;\n }\n Object.defineProperty(IndexMap, \"Default\", {\n /**\n * The default IndexMap for nodes without a priority\n * @type {!IndexMap}\n * @const\n */\n get: function () {\n util_1.assert(fallbackObject && PriorityIndex_1.PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\n _defaultIndexMap =\n _defaultIndexMap ||\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PriorityIndex_1.PRIORITY_INDEX });\n return _defaultIndexMap;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n * @param {!string} indexKey\n * @return {?SortedMap.}\n */\n IndexMap.prototype.get = function (indexKey) {\n var sortedMap = util_2.safeGet(this.indexes_, indexKey);\n if (!sortedMap)\n throw new Error('No index defined for ' + indexKey);\n if (sortedMap === fallbackObject) {\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\n // regular child map\n return null;\n }\n else {\n return sortedMap;\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {boolean}\n */\n IndexMap.prototype.hasIndex = function (indexDefinition) {\n return util_2.contains(this.indexSet_, indexDefinition.toString());\n };\n /**\n * @param {!Index} indexDefinition\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.addIndex = function (indexDefinition, existingChildren) {\n util_1.assert(indexDefinition !== KeyIndex_1.KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\n var childList = [];\n var sawIndexedValue = false;\n var iter = existingChildren.getIterator(Node_1.NamedNode.Wrap);\n var next = iter.getNext();\n while (next) {\n sawIndexedValue =\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\n childList.push(next);\n next = iter.getNext();\n }\n var newIndex;\n if (sawIndexedValue) {\n newIndex = childSet_1.buildChildSet(childList, indexDefinition.getCompare());\n }\n else {\n newIndex = fallbackObject;\n }\n var indexName = indexDefinition.toString();\n var newIndexSet = util_2.clone(this.indexSet_);\n newIndexSet[indexName] = indexDefinition;\n var newIndexes = util_2.clone(this.indexes_);\n newIndexes[indexName] = newIndex;\n return new IndexMap(newIndexes, newIndexSet);\n };\n /**\n * Ensure that this node is properly tracked in any indexes that we're maintaining\n * @param {!NamedNode} namedNode\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.addToIndexes = function (namedNode, existingChildren) {\n var _this = this;\n var newIndexes = util_2.map(this.indexes_, function (indexedChildren, indexName) {\n var index = util_2.safeGet(_this.indexSet_, indexName);\n util_1.assert(index, 'Missing index implementation for ' + indexName);\n if (indexedChildren === fallbackObject) {\n // Check to see if we need to index everything\n if (index.isDefinedOn(namedNode.node)) {\n // We need to build this index\n var childList = [];\n var iter = existingChildren.getIterator(Node_1.NamedNode.Wrap);\n var next = iter.getNext();\n while (next) {\n if (next.name != namedNode.name) {\n childList.push(next);\n }\n next = iter.getNext();\n }\n childList.push(namedNode);\n return childSet_1.buildChildSet(childList, index.getCompare());\n }\n else {\n // No change, this remains a fallback\n return fallbackObject;\n }\n }\n else {\n var existingSnap = existingChildren.get(namedNode.name);\n var newChildren = indexedChildren;\n if (existingSnap) {\n newChildren = newChildren.remove(new Node_1.NamedNode(namedNode.name, existingSnap));\n }\n return newChildren.insert(namedNode, namedNode.node);\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n };\n /**\n * Create a new IndexMap instance with the given value removed\n * @param {!NamedNode} namedNode\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.removeFromIndexes = function (namedNode, existingChildren) {\n var newIndexes = util_2.map(this.indexes_, function (indexedChildren) {\n if (indexedChildren === fallbackObject) {\n // This is the fallback. Just return it, nothing to do in this case\n return indexedChildren;\n }\n else {\n var existingSnap = existingChildren.get(namedNode.name);\n if (existingSnap) {\n return indexedChildren.remove(new Node_1.NamedNode(namedNode.name, existingSnap));\n }\n else {\n // No record of this child\n return indexedChildren;\n }\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n };\n return IndexMap;\n}());\nexports.IndexMap = IndexMap;\n\n//# sourceMappingURL=IndexMap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/IndexMap.js\n// module id = 41\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SortedMap_1 = require(\"../util/SortedMap\");\nvar SortedMap_2 = require(\"../util/SortedMap\");\nvar LOG_2 = Math.log(2);\n/**\n * @constructor\n */\nvar Base12Num = /** @class */ (function () {\n /**\n * @param {number} length\n */\n function Base12Num(length) {\n var logBase2 = function (num) {\n return parseInt((Math.log(num) / LOG_2), 10);\n };\n var bitMask = function (bits) { return parseInt(Array(bits + 1).join('1'), 2); };\n this.count = logBase2(length + 1);\n this.current_ = this.count - 1;\n var mask = bitMask(this.count);\n this.bits_ = (length + 1) & mask;\n }\n /**\n * @return {boolean}\n */\n Base12Num.prototype.nextBitIsOne = function () {\n //noinspection JSBitwiseOperatorUsage\n var result = !(this.bits_ & (0x1 << this.current_));\n this.current_--;\n return result;\n };\n return Base12Num;\n}());\n/**\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\n * function\n *\n * Uses the algorithm described in the paper linked here:\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\n *\n * @template K, V\n * @param {Array.} childList Unsorted list of children\n * @param {function(!NamedNode, !NamedNode):number} cmp The comparison method to be used\n * @param {(function(NamedNode):K)=} keyFn An optional function to extract K from a node wrapper, if K's\n * type is not NamedNode\n * @param {(function(K, K):number)=} mapSortFn An optional override for comparator used by the generated sorted map\n * @return {SortedMap.}\n */\nexports.buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\n childList.sort(cmp);\n var buildBalancedTree = function (low, high) {\n var length = high - low;\n var namedNode;\n var key;\n if (length == 0) {\n return null;\n }\n else if (length == 1) {\n namedNode = childList[low];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new SortedMap_1.LLRBNode(key, namedNode.node, SortedMap_1.LLRBNode.BLACK, null, null);\n }\n else {\n var middle = parseInt((length / 2), 10) + low;\n var left = buildBalancedTree(low, middle);\n var right = buildBalancedTree(middle + 1, high);\n namedNode = childList[middle];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new SortedMap_1.LLRBNode(key, namedNode.node, SortedMap_1.LLRBNode.BLACK, left, right);\n }\n };\n var buildFrom12Array = function (base12) {\n var node = null;\n var root = null;\n var index = childList.length;\n var buildPennant = function (chunkSize, color) {\n var low = index - chunkSize;\n var high = index;\n index -= chunkSize;\n var childTree = buildBalancedTree(low + 1, high);\n var namedNode = childList[low];\n var key = keyFn ? keyFn(namedNode) : namedNode;\n attachPennant(new SortedMap_1.LLRBNode(key, namedNode.node, color, null, childTree));\n };\n var attachPennant = function (pennant) {\n if (node) {\n node.left = pennant;\n node = pennant;\n }\n else {\n root = pennant;\n node = pennant;\n }\n };\n for (var i = 0; i < base12.count; ++i) {\n var isOne = base12.nextBitIsOne();\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\n var chunkSize = Math.pow(2, base12.count - (i + 1));\n if (isOne) {\n buildPennant(chunkSize, SortedMap_1.LLRBNode.BLACK);\n }\n else {\n // current == 2\n buildPennant(chunkSize, SortedMap_1.LLRBNode.BLACK);\n buildPennant(chunkSize, SortedMap_1.LLRBNode.RED);\n }\n }\n return root;\n };\n var base12 = new Base12Num(childList.length);\n var root = buildFrom12Array(base12);\n return new SortedMap_2.SortedMap(mapSortFn || cmp, root);\n};\n\n//# sourceMappingURL=childSet.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/childSet.js\n// module id = 42\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util/util\");\nfunction NAME_ONLY_COMPARATOR(left, right) {\n return util_1.nameCompare(left.name, right.name);\n}\nexports.NAME_ONLY_COMPARATOR = NAME_ONLY_COMPARATOR;\nfunction NAME_COMPARATOR(left, right) {\n return util_1.nameCompare(left, right);\n}\nexports.NAME_COMPARATOR = NAME_COMPARATOR;\n\n//# sourceMappingURL=comparators.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/comparators.js\n// module id = 43\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../../util/util\");\nvar Index_1 = require(\"./Index\");\nvar ChildrenNode_1 = require(\"../ChildrenNode\");\nvar Node_1 = require(\"../Node\");\nvar nodeFromJSON_1 = require(\"../nodeFromJSON\");\n/**\n * @param {!Path} indexPath\n * @constructor\n * @extends {Index}\n */\nvar PathIndex = /** @class */ (function (_super) {\n tslib_1.__extends(PathIndex, _super);\n function PathIndex(indexPath_) {\n var _this = _super.call(this) || this;\n _this.indexPath_ = indexPath_;\n util_1.assert(!indexPath_.isEmpty() && indexPath_.getFront() !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\n return _this;\n }\n /**\n * @param {!Node} snap\n * @return {!Node}\n * @protected\n */\n PathIndex.prototype.extractChild = function (snap) {\n return snap.getChild(this.indexPath_);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.isDefinedOn = function (node) {\n return !node.getChild(this.indexPath_).isEmpty();\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.compare = function (a, b) {\n var aChild = this.extractChild(a.node);\n var bChild = this.extractChild(b.node);\n var indexCmp = aChild.compareTo(bChild);\n if (indexCmp === 0) {\n return util_2.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.makePost = function (indexValue, name) {\n var valueNode = nodeFromJSON_1.nodeFromJSON(indexValue);\n var node = ChildrenNode_1.ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\n return new Node_1.NamedNode(name, node);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.maxPost = function () {\n var node = ChildrenNode_1.ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, ChildrenNode_1.MAX_NODE);\n return new Node_1.NamedNode(util_2.MAX_NAME, node);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.toString = function () {\n return this.indexPath_.slice().join('/');\n };\n return PathIndex;\n}(Index_1.Index));\nexports.PathIndex = PathIndex;\n\n//# sourceMappingURL=PathIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/PathIndex.js\n// module id = 44\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"./Path\");\nvar SparseSnapshotTree_1 = require(\"../SparseSnapshotTree\");\nvar LeafNode_1 = require(\"../snap/LeafNode\");\nvar nodeFromJSON_1 = require(\"../snap/nodeFromJSON\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\n/**\n * Generate placeholders for deferred values.\n * @param {?Object} values\n * @return {!Object}\n */\nexports.generateWithValues = function (values) {\n values = values || {};\n values['timestamp'] = values['timestamp'] || new Date().getTime();\n return values;\n};\n/**\n * Value to use when firing local events. When writing server values, fire\n * local events with an approximate value, otherwise return value as-is.\n * @param {(Object|string|number|boolean)} value\n * @param {!Object} serverValues\n * @return {!(string|number|boolean)}\n */\nexports.resolveDeferredValue = function (value, serverValues) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n else {\n util_1.assert('.sv' in value, 'Unexpected leaf node or priority contents');\n return serverValues[value['.sv']];\n }\n};\n/**\n * Recursively replace all deferred values and priorities in the tree with the\n * specified generated replacement values.\n * @param {!SparseSnapshotTree} tree\n * @param {!Object} serverValues\n * @return {!SparseSnapshotTree}\n */\nexports.resolveDeferredValueTree = function (tree, serverValues) {\n var resolvedTree = new SparseSnapshotTree_1.SparseSnapshotTree();\n tree.forEachTree(new Path_1.Path(''), function (path, node) {\n resolvedTree.remember(path, exports.resolveDeferredValueSnapshot(node, serverValues));\n });\n return resolvedTree;\n};\n/**\n * Recursively replace all deferred values and priorities in the node with the\n * specified generated replacement values. If there are no server values in the node,\n * it'll be returned as-is.\n * @param {!Node} node\n * @param {!Object} serverValues\n * @return {!Node}\n */\nexports.resolveDeferredValueSnapshot = function (node, serverValues) {\n var rawPri = node.getPriority().val();\n var priority = exports.resolveDeferredValue(rawPri, serverValues);\n var newNode;\n if (node.isLeafNode()) {\n var leafNode = node;\n var value = exports.resolveDeferredValue(leafNode.getValue(), serverValues);\n if (value !== leafNode.getValue() ||\n priority !== leafNode.getPriority().val()) {\n return new LeafNode_1.LeafNode(value, nodeFromJSON_1.nodeFromJSON(priority));\n }\n else {\n return node;\n }\n }\n else {\n var childrenNode = node;\n newNode = childrenNode;\n if (priority !== childrenNode.getPriority().val()) {\n newNode = newNode.updatePriority(new LeafNode_1.LeafNode(priority));\n }\n childrenNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var newChildNode = exports.resolveDeferredValueSnapshot(childNode, serverValues);\n if (newChildNode !== childNode) {\n newNode = newNode.updateImmediateChild(childName, newChildNode);\n }\n });\n return newNode;\n }\n};\n\n//# sourceMappingURL=ServerValues.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/ServerValues.js\n// module id = 45\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"./util/Path\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar CountedSet_1 = require(\"./util/CountedSet\");\n/**\n * Helper class to store a sparse set of snapshots.\n *\n * @constructor\n */\nvar SparseSnapshotTree = /** @class */ (function () {\n function SparseSnapshotTree() {\n /**\n * @private\n * @type {Node}\n */\n this.value_ = null;\n /**\n * @private\n * @type {CountedSet}\n */\n this.children_ = null;\n }\n /**\n * Gets the node stored at the given path if one exists.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @return {?Node} The retrieved node, or null.\n */\n SparseSnapshotTree.prototype.find = function (path) {\n if (this.value_ != null) {\n return this.value_.getChild(path);\n }\n else if (!path.isEmpty() && this.children_ != null) {\n var childKey = path.getFront();\n path = path.popFront();\n if (this.children_.contains(childKey)) {\n var childTree = this.children_.get(childKey);\n return childTree.find(path);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * Stores the given node at the specified path. If there is already a node\n * at a shallower path, it merges the new data into that snapshot node.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @param {!Node} data The new data, or null.\n */\n SparseSnapshotTree.prototype.remember = function (path, data) {\n if (path.isEmpty()) {\n this.value_ = data;\n this.children_ = null;\n }\n else if (this.value_ !== null) {\n this.value_ = this.value_.updateChild(path, data);\n }\n else {\n if (this.children_ == null) {\n this.children_ = new CountedSet_1.CountedSet();\n }\n var childKey = path.getFront();\n if (!this.children_.contains(childKey)) {\n this.children_.add(childKey, new SparseSnapshotTree());\n }\n var child = this.children_.get(childKey);\n path = path.popFront();\n child.remember(path, data);\n }\n };\n /**\n * Purge the data at path from the cache.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @return {boolean} True if this node should now be removed.\n */\n SparseSnapshotTree.prototype.forget = function (path) {\n if (path.isEmpty()) {\n this.value_ = null;\n this.children_ = null;\n return true;\n }\n else {\n if (this.value_ !== null) {\n if (this.value_.isLeafNode()) {\n // We're trying to forget a node that doesn't exist\n return false;\n }\n else {\n var value = this.value_;\n this.value_ = null;\n var self_1 = this;\n value.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, tree) {\n self_1.remember(new Path_1.Path(key), tree);\n });\n return this.forget(path);\n }\n }\n else if (this.children_ !== null) {\n var childKey = path.getFront();\n path = path.popFront();\n if (this.children_.contains(childKey)) {\n var safeToRemove = this.children_.get(childKey).forget(path);\n if (safeToRemove) {\n this.children_.remove(childKey);\n }\n }\n if (this.children_.isEmpty()) {\n this.children_ = null;\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }\n };\n /**\n * Recursively iterates through all of the stored tree and calls the\n * callback on each one.\n *\n * @param {!Path} prefixPath Path to look up node for.\n * @param {!Function} func The function to invoke for each tree.\n */\n SparseSnapshotTree.prototype.forEachTree = function (prefixPath, func) {\n if (this.value_ !== null) {\n func(prefixPath, this.value_);\n }\n else {\n this.forEachChild(function (key, tree) {\n var path = new Path_1.Path(prefixPath.toString() + '/' + key);\n tree.forEachTree(path, func);\n });\n }\n };\n /**\n * Iterates through each immediate child and triggers the callback.\n *\n * @param {!Function} func The function to invoke for each child.\n */\n SparseSnapshotTree.prototype.forEachChild = function (func) {\n if (this.children_ !== null) {\n this.children_.each(function (key, tree) {\n func(key, tree);\n });\n }\n };\n return SparseSnapshotTree;\n}());\nexports.SparseSnapshotTree = SparseSnapshotTree;\n\n//# sourceMappingURL=SparseSnapshotTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SparseSnapshotTree.js\n// module id = 46\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Implements a set with a count of elements.\n *\n * @template K, V\n */\nvar CountedSet = /** @class */ (function () {\n function CountedSet() {\n this.set = {};\n }\n /**\n * @param {!K} item\n * @param {V} val\n */\n CountedSet.prototype.add = function (item, val) {\n this.set[item] = val !== null ? val : true;\n };\n /**\n * @param {!K} key\n * @return {boolean}\n */\n CountedSet.prototype.contains = function (key) {\n return util_1.contains(this.set, key);\n };\n /**\n * @param {!K} item\n * @return {V}\n */\n CountedSet.prototype.get = function (item) {\n return this.contains(item) ? this.set[item] : undefined;\n };\n /**\n * @param {!K} item\n */\n CountedSet.prototype.remove = function (item) {\n delete this.set[item];\n };\n /**\n * Deletes everything in the set\n */\n CountedSet.prototype.clear = function () {\n this.set = {};\n };\n /**\n * True if there's nothing in the set\n * @return {boolean}\n */\n CountedSet.prototype.isEmpty = function () {\n return util_1.isEmpty(this.set);\n };\n /**\n * @return {number} The number of items in the set\n */\n CountedSet.prototype.count = function () {\n return util_1.getCount(this.set);\n };\n /**\n * Run a function on each k,v pair in the set\n * @param {function(K, V)} fn\n */\n CountedSet.prototype.each = function (fn) {\n util_1.forEach(this.set, function (k, v) { return fn(k, v); });\n };\n /**\n * Mostly for debugging\n * @return {Array.} The keys present in this CountedSet\n */\n CountedSet.prototype.keys = function () {\n var keys = [];\n util_1.forEach(this.set, function (k) {\n keys.push(k);\n });\n return keys;\n };\n return CountedSet;\n}());\nexports.CountedSet = CountedSet;\n\n//# sourceMappingURL=CountedSet.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/CountedSet.js\n// module id = 47\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"./Operation\");\nvar Path_1 = require(\"../util/Path\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!Node} snap\n * @constructor\n * @implements {Operation}\n */\nvar Overwrite = /** @class */ (function () {\n function Overwrite(source, path, snap) {\n this.source = source;\n this.path = path;\n this.snap = snap;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.OVERWRITE;\n }\n Overwrite.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new Overwrite(this.source, Path_1.Path.Empty, this.snap.getImmediateChild(childName));\n }\n else {\n return new Overwrite(this.source, this.path.popFront(), this.snap);\n }\n };\n return Overwrite;\n}());\nexports.Overwrite = Overwrite;\n\n//# sourceMappingURL=Overwrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Overwrite.js\n// module id = 48\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = require(\"./view/CacheNode\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar ViewCache_1 = require(\"./view/ViewCache\");\nvar View_1 = require(\"./view/View\");\nvar __referenceConstructor;\n/**\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\n * and user writes (set, transaction, update).\n *\n * It's responsible for:\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\n * applyUserOverwrite, etc.)\n */\nvar SyncPoint = /** @class */ (function () {\n function SyncPoint() {\n /**\n * The Views being tracked at this location in the tree, stored as a map where the key is a\n * queryId and the value is the View for that query.\n *\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\n *\n * @type {!Object.}\n * @private\n */\n this.views_ = {};\n }\n Object.defineProperty(SyncPoint, \"__referenceConstructor\", {\n get: function () {\n util_1.assert(__referenceConstructor, 'Reference.ts has not been loaded');\n return __referenceConstructor;\n },\n set: function (val) {\n util_1.assert(!__referenceConstructor, '__referenceConstructor has already been defined');\n __referenceConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {boolean}\n */\n SyncPoint.prototype.isEmpty = function () {\n return util_2.isEmpty(this.views_);\n };\n /**\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} optCompleteServerCache\n * @return {!Array.}\n */\n SyncPoint.prototype.applyOperation = function (operation, writesCache, optCompleteServerCache) {\n var queryId = operation.source.queryId;\n if (queryId !== null) {\n var view = util_2.safeGet(this.views_, queryId);\n util_1.assert(view != null, 'SyncTree gave us an op for an invalid query.');\n return view.applyOperation(operation, writesCache, optCompleteServerCache);\n }\n else {\n var events_1 = [];\n util_2.forEach(this.views_, function (key, view) {\n events_1 = events_1.concat(view.applyOperation(operation, writesCache, optCompleteServerCache));\n });\n return events_1;\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache Complete server cache, if we have it.\n * @param {boolean} serverCacheComplete\n * @return {!Array.} Events to raise.\n */\n SyncPoint.prototype.addEventRegistration = function (query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\n var queryId = query.queryIdentifier();\n var view = util_2.safeGet(this.views_, queryId);\n if (!view) {\n // TODO: make writesCache take flag for complete server node\n var eventCache = writesCache.calcCompleteEventCache(serverCacheComplete ? serverCache : null);\n var eventCacheComplete = false;\n if (eventCache) {\n eventCacheComplete = true;\n }\n else if (serverCache instanceof ChildrenNode_1.ChildrenNode) {\n eventCache = writesCache.calcCompleteEventChildren(serverCache);\n eventCacheComplete = false;\n }\n else {\n eventCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n eventCacheComplete = false;\n }\n var viewCache = new ViewCache_1.ViewCache(new CacheNode_1.CacheNode(\n /** @type {!Node} */ (eventCache), eventCacheComplete, false), new CacheNode_1.CacheNode(\n /** @type {!Node} */ (serverCache), serverCacheComplete, false));\n view = new View_1.View(query, viewCache);\n this.views_[queryId] = view;\n }\n // This is guaranteed to exist now, we just created anything that was missing\n view.addEventRegistration(eventRegistration);\n return view.getInitialEvents(eventRegistration);\n };\n /**\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\n *\n * If query is the default query, we'll check all views for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {{removed:!Array., events:!Array.}} removed queries and any cancel events\n */\n SyncPoint.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var queryId = query.queryIdentifier();\n var removed = [];\n var cancelEvents = [];\n var hadCompleteView = this.hasCompleteView();\n if (queryId === 'default') {\n // When you do ref.off(...), we search all views for the registration to remove.\n var self_1 = this;\n util_2.forEach(this.views_, function (viewQueryId, view) {\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\n if (view.isEmpty()) {\n delete self_1.views_[viewQueryId];\n // We'll deal with complete views later.\n if (!view\n .getQuery()\n .getQueryParams()\n .loadsAllData()) {\n removed.push(view.getQuery());\n }\n }\n });\n }\n else {\n // remove the callback from the specific view.\n var view = util_2.safeGet(this.views_, queryId);\n if (view) {\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\n if (view.isEmpty()) {\n delete this.views_[queryId];\n // We'll deal with complete views later.\n if (!view\n .getQuery()\n .getQueryParams()\n .loadsAllData()) {\n removed.push(view.getQuery());\n }\n }\n }\n }\n if (hadCompleteView && !this.hasCompleteView()) {\n // We removed our last complete view.\n removed.push(new SyncPoint.__referenceConstructor(query.repo, query.path));\n }\n return { removed: removed, events: cancelEvents };\n };\n /**\n * @return {!Array.}\n */\n SyncPoint.prototype.getQueryViews = function () {\n var _this = this;\n var values = Object.keys(this.views_).map(function (key) { return _this.views_[key]; });\n return values.filter(function (view) {\n return !view\n .getQuery()\n .getQueryParams()\n .loadsAllData();\n });\n };\n /**\n *\n * @param {!Path} path The path to the desired complete snapshot\n * @return {?Node} A complete cache, if it exists\n */\n SyncPoint.prototype.getCompleteServerCache = function (path) {\n var serverCache = null;\n util_2.forEach(this.views_, function (key, view) {\n serverCache = serverCache || view.getCompleteServerCache(path);\n });\n return serverCache;\n };\n /**\n * @param {!Query} query\n * @return {?View}\n */\n SyncPoint.prototype.viewForQuery = function (query) {\n var params = query.getQueryParams();\n if (params.loadsAllData()) {\n return this.getCompleteView();\n }\n else {\n var queryId = query.queryIdentifier();\n return util_2.safeGet(this.views_, queryId);\n }\n };\n /**\n * @param {!Query} query\n * @return {boolean}\n */\n SyncPoint.prototype.viewExistsForQuery = function (query) {\n return this.viewForQuery(query) != null;\n };\n /**\n * @return {boolean}\n */\n SyncPoint.prototype.hasCompleteView = function () {\n return this.getCompleteView() != null;\n };\n /**\n * @return {?View}\n */\n SyncPoint.prototype.getCompleteView = function () {\n var completeView = util_2.findValue(this.views_, function (view) {\n return view\n .getQuery()\n .getQueryParams()\n .loadsAllData();\n });\n return completeView || null;\n };\n return SyncPoint;\n}());\nexports.SyncPoint = SyncPoint;\n\n//# sourceMappingURL=SyncPoint.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SyncPoint.js\n// module id = 49\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar CacheNode_1 = require(\"./CacheNode\");\n/**\n * Stores the data we have cached for a view.\n *\n * serverSnap is the cached server data, eventSnap is the cached event data (server data plus any local writes).\n *\n * @constructor\n */\nvar ViewCache = /** @class */ (function () {\n /**\n *\n * @param {!CacheNode} eventCache_\n * @param {!CacheNode} serverCache_\n */\n function ViewCache(eventCache_, serverCache_) {\n this.eventCache_ = eventCache_;\n this.serverCache_ = serverCache_;\n }\n /**\n * @param {!Node} eventSnap\n * @param {boolean} complete\n * @param {boolean} filtered\n * @return {!ViewCache}\n */\n ViewCache.prototype.updateEventSnap = function (eventSnap, complete, filtered) {\n return new ViewCache(new CacheNode_1.CacheNode(eventSnap, complete, filtered), this.serverCache_);\n };\n /**\n * @param {!Node} serverSnap\n * @param {boolean} complete\n * @param {boolean} filtered\n * @return {!ViewCache}\n */\n ViewCache.prototype.updateServerSnap = function (serverSnap, complete, filtered) {\n return new ViewCache(this.eventCache_, new CacheNode_1.CacheNode(serverSnap, complete, filtered));\n };\n /**\n * @return {!CacheNode}\n */\n ViewCache.prototype.getEventCache = function () {\n return this.eventCache_;\n };\n /**\n * @return {?Node}\n */\n ViewCache.prototype.getCompleteEventSnap = function () {\n return this.eventCache_.isFullyInitialized()\n ? this.eventCache_.getNode()\n : null;\n };\n /**\n * @return {!CacheNode}\n */\n ViewCache.prototype.getServerCache = function () {\n return this.serverCache_;\n };\n /**\n * @return {?Node}\n */\n ViewCache.prototype.getCompleteServerSnap = function () {\n return this.serverCache_.isFullyInitialized()\n ? this.serverCache_.getNode()\n : null;\n };\n /**\n * @const\n * @type {ViewCache}\n */\n ViewCache.Empty = new ViewCache(new CacheNode_1.CacheNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, \n /*fullyInitialized=*/ false, \n /*filtered=*/ false), new CacheNode_1.CacheNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, \n /*fullyInitialized=*/ false, \n /*filtered=*/ false));\n return ViewCache;\n}());\nexports.ViewCache = ViewCache;\n\n//# sourceMappingURL=ViewCache.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ViewCache.js\n// module id = 50\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Returns the delta from the previous call to get stats.\n *\n * @param collection_ The collection to \"listen\" to.\n * @constructor\n */\nvar StatsListener = /** @class */ (function () {\n function StatsListener(collection_) {\n this.collection_ = collection_;\n this.last_ = null;\n }\n StatsListener.prototype.get = function () {\n var newStats = this.collection_.get();\n var delta = util_1.clone(newStats);\n if (this.last_) {\n util_1.forEach(this.last_, function (stat, value) {\n delta[stat] = delta[stat] - value;\n });\n }\n this.last_ = newStats;\n return delta;\n };\n return StatsListener;\n}());\nexports.StatsListener = StatsListener;\n\n//# sourceMappingURL=StatsListener.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsListener.js\n// module id = 51\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar app_1 = require(\"@firebase/app\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"./util/util\");\nvar Path_1 = require(\"./util/Path\");\nvar VisibilityMonitor_1 = require(\"./util/VisibilityMonitor\");\nvar OnlineMonitor_1 = require(\"./util/OnlineMonitor\");\nvar util_5 = require(\"@firebase/util\");\nvar Connection_1 = require(\"../realtime/Connection\");\nvar util_6 = require(\"@firebase/util\");\nvar util_7 = require(\"@firebase/util\");\nvar ServerActions_1 = require(\"./ServerActions\");\nvar RECONNECT_MIN_DELAY = 1000;\nvar RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\nvar RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\nvar RECONNECT_DELAY_MULTIPLIER = 1.3;\nvar RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\nvar SERVER_KILL_INTERRUPT_REASON = 'server_kill';\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\nvar INVALID_AUTH_TOKEN_THRESHOLD = 3;\n/**\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\n *\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\n * in quotes to make sure the closure compiler does not minify them.\n */\nvar PersistentConnection = /** @class */ (function (_super) {\n tslib_1.__extends(PersistentConnection, _super);\n /**\n * @implements {ServerActions}\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param onConnectStatus_\n * @param onServerInfoUpdate_\n * @param authTokenProvider_\n * @param authOverride_\n */\n function PersistentConnection(repoInfo_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, authOverride_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.onConnectStatus_ = onConnectStatus_;\n _this.onServerInfoUpdate_ = onServerInfoUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n _this.authOverride_ = authOverride_;\n // Used for diagnostic logging.\n _this.id = PersistentConnection.nextPersistentConnectionId_++;\n _this.log_ = util_4.logWrapper('p:' + _this.id + ':');\n /** @private {Object} */\n _this.interruptReasons_ = {};\n _this.listens_ = {};\n _this.outstandingPuts_ = [];\n _this.outstandingPutCount_ = 0;\n _this.onDisconnectRequestQueue_ = [];\n _this.connected_ = false;\n _this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n _this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\n _this.securityDebugCallback_ = null;\n _this.lastSessionId = null;\n /** @private {number|null} */\n _this.establishConnectionTimer_ = null;\n /** @private {boolean} */\n _this.visible_ = false;\n // Before we get connected, we keep a queue of pending messages to send.\n _this.requestCBHash_ = {};\n _this.requestNumber_ = 0;\n /** @private {?{\n * sendRequest(Object),\n * close()\n * }} */\n _this.realtime_ = null;\n /** @private {string|null} */\n _this.authToken_ = null;\n _this.forceTokenRefresh_ = false;\n _this.invalidAuthTokenCount_ = 0;\n _this.firstConnection_ = true;\n _this.lastConnectionAttemptTime_ = null;\n _this.lastConnectionEstablishedTime_ = null;\n if (authOverride_ && !util_7.isNodeSdk()) {\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\n }\n _this.scheduleConnect_(0);\n VisibilityMonitor_1.VisibilityMonitor.getInstance().on('visible', _this.onVisible_, _this);\n if (repoInfo_.host.indexOf('fblocal') === -1) {\n OnlineMonitor_1.OnlineMonitor.getInstance().on('online', _this.onOnline_, _this);\n }\n return _this;\n }\n /**\n * @param {!string} action\n * @param {*} body\n * @param {function(*)=} onResponse\n * @protected\n */\n PersistentConnection.prototype.sendRequest = function (action, body, onResponse) {\n var curReqNum = ++this.requestNumber_;\n var msg = { r: curReqNum, a: action, b: body };\n this.log_(util_2.stringify(msg));\n util_3.assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\n this.realtime_.sendRequest(msg);\n if (onResponse) {\n this.requestCBHash_[curReqNum] = onResponse;\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var queryId = query.queryIdentifier();\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + queryId);\n this.listens_[pathString] = this.listens_[pathString] || {};\n util_3.assert(query.getQueryParams().isDefault() ||\n !query.getQueryParams().loadsAllData(), 'listen() called for non-default but complete query');\n util_3.assert(!this.listens_[pathString][queryId], 'listen() called twice for same path/queryId.');\n var listenSpec = {\n onComplete: onComplete,\n hashFn: currentHashFn,\n query: query,\n tag: tag\n };\n this.listens_[pathString][queryId] = listenSpec;\n if (this.connected_) {\n this.sendListen_(listenSpec);\n }\n };\n /**\n * @param {!{onComplete(),\n * hashFn():!string,\n * query: !Query,\n * tag: ?number}} listenSpec\n * @private\n */\n PersistentConnection.prototype.sendListen_ = function (listenSpec) {\n var _this = this;\n var query = listenSpec.query;\n var pathString = query.path.toString();\n var queryId = query.queryIdentifier();\n this.log_('Listen on ' + pathString + ' for ' + queryId);\n var req = { /*path*/ p: pathString };\n var action = 'q';\n // Only bother to send query if it's non-default.\n if (listenSpec.tag) {\n req['q'] = query.queryObject();\n req['t'] = listenSpec.tag;\n }\n req['h'] = listenSpec.hashFn();\n this.sendRequest(action, req, function (message) {\n var payload = message['d'];\n var status = message['s'];\n // print warnings in any case...\n PersistentConnection.warnOnListenWarnings_(payload, query);\n var currentListenSpec = _this.listens_[pathString] && _this.listens_[pathString][queryId];\n // only trigger actions if the listen hasn't been removed and readded\n if (currentListenSpec === listenSpec) {\n _this.log_('listen response', message);\n if (status !== 'ok') {\n _this.removeListen_(pathString, queryId);\n }\n if (listenSpec.onComplete) {\n listenSpec.onComplete(status, payload);\n }\n }\n });\n };\n /**\n * @param {*} payload\n * @param {!Query} query\n * @private\n */\n PersistentConnection.warnOnListenWarnings_ = function (payload, query) {\n if (payload && typeof payload === 'object' && util_1.contains(payload, 'w')) {\n var warnings = util_1.safeGet(payload, 'w');\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\n var indexSpec = '\".indexOn\": \"' +\n query\n .getQueryParams()\n .getIndex()\n .toString() +\n '\"';\n var indexPath = query.path.toString();\n util_4.warn(\"Using an unspecified index. Your data will be downloaded and \" +\n (\"filtered on the client. Consider adding \" + indexSpec + \" at \") +\n (indexPath + \" to your security rules for better performance.\"));\n }\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.refreshAuthToken = function (token) {\n this.authToken_ = token;\n this.log_('Auth token refreshed');\n if (this.authToken_) {\n this.tryAuth();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\n //the credential so we dont become authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unauth', {}, function () { });\n }\n }\n this.reduceReconnectDelayIfAdminCredential_(token);\n };\n /**\n * @param {!string} credential\n * @private\n */\n PersistentConnection.prototype.reduceReconnectDelayIfAdminCredential_ = function (credential) {\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\n var isFirebaseSecret = credential && credential.length === 40;\n if (isFirebaseSecret || util_5.isAdmin(credential)) {\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n }\n };\n /**\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\n * a auth revoked (the connection is closed).\n */\n PersistentConnection.prototype.tryAuth = function () {\n var _this = this;\n if (this.connected_ && this.authToken_) {\n var token_1 = this.authToken_;\n var authMethod = util_5.isValidFormat(token_1) ? 'auth' : 'gauth';\n var requestData = { cred: token_1 };\n if (this.authOverride_ === null) {\n requestData['noauth'] = true;\n }\n else if (typeof this.authOverride_ === 'object') {\n requestData['authvar'] = this.authOverride_;\n }\n this.sendRequest(authMethod, requestData, function (res) {\n var status = res['s'];\n var data = res['d'] || 'error';\n if (_this.authToken_ === token_1) {\n if (status === 'ok') {\n _this.invalidAuthTokenCount_ = 0;\n }\n else {\n // Triggers reconnect and force refresh for auth token\n _this.onAuthRevoked_(status, data);\n }\n }\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.unlisten = function (query, tag) {\n var pathString = query.path.toString();\n var queryId = query.queryIdentifier();\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\n util_3.assert(query.getQueryParams().isDefault() ||\n !query.getQueryParams().loadsAllData(), 'unlisten() called for non-default but complete query');\n var listen = this.removeListen_(pathString, queryId);\n if (listen && this.connected_) {\n this.sendUnlisten_(pathString, queryId, query.queryObject(), tag);\n }\n };\n PersistentConnection.prototype.sendUnlisten_ = function (pathString, queryId, queryObj, tag) {\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\n var req = { /*path*/ p: pathString };\n var action = 'n';\n // Only bother sending queryId if it's non-default.\n if (tag) {\n req['q'] = queryObj;\n req['t'] = tag;\n }\n this.sendRequest(action, req);\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectPut = function (pathString, data, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('o', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'o',\n data: data,\n onComplete: onComplete\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectMerge = function (pathString, data, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('om', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'om',\n data: data,\n onComplete: onComplete\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectCancel = function (pathString, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'oc',\n data: null,\n onComplete: onComplete\n });\n }\n };\n PersistentConnection.prototype.sendOnDisconnect_ = function (action, pathString, data, onComplete) {\n var request = { /*path*/ p: pathString, /*data*/ d: data };\n this.log_('onDisconnect ' + action, request);\n this.sendRequest(action, request, function (response) {\n if (onComplete) {\n setTimeout(function () {\n onComplete(response['s'], response['d']);\n }, Math.floor(0));\n }\n });\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\n this.putInternal('p', pathString, data, onComplete, hash);\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.merge = function (pathString, data, onComplete, hash) {\n this.putInternal('m', pathString, data, onComplete, hash);\n };\n PersistentConnection.prototype.putInternal = function (action, pathString, data, onComplete, hash) {\n var request = {\n /*path*/ p: pathString,\n /*data*/ d: data\n };\n if (hash !== undefined)\n request['h'] = hash;\n // TODO: Only keep track of the most recent put for a given path?\n this.outstandingPuts_.push({\n action: action,\n request: request,\n onComplete: onComplete\n });\n this.outstandingPutCount_++;\n var index = this.outstandingPuts_.length - 1;\n if (this.connected_) {\n this.sendPut_(index);\n }\n else {\n this.log_('Buffering put: ' + pathString);\n }\n };\n PersistentConnection.prototype.sendPut_ = function (index) {\n var _this = this;\n var action = this.outstandingPuts_[index].action;\n var request = this.outstandingPuts_[index].request;\n var onComplete = this.outstandingPuts_[index].onComplete;\n this.outstandingPuts_[index].queued = this.connected_;\n this.sendRequest(action, request, function (message) {\n _this.log_(action + ' response', message);\n delete _this.outstandingPuts_[index];\n _this.outstandingPutCount_--;\n // Clean up array occasionally.\n if (_this.outstandingPutCount_ === 0) {\n _this.outstandingPuts_ = [];\n }\n if (onComplete)\n onComplete(message['s'], message['d']);\n });\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.reportStats = function (stats) {\n var _this = this;\n // If we're not connected, we just drop the stats.\n if (this.connected_) {\n var request = { /*counters*/ c: stats };\n this.log_('reportStats', request);\n this.sendRequest(/*stats*/ 's', request, function (result) {\n var status = result['s'];\n if (status !== 'ok') {\n var errorReason = result['d'];\n _this.log_('reportStats', 'Error sending stats: ' + errorReason);\n }\n });\n }\n };\n /**\n * @param {*} message\n * @private\n */\n PersistentConnection.prototype.onDataMessage_ = function (message) {\n if ('r' in message) {\n // this is a response\n this.log_('from server: ' + util_2.stringify(message));\n var reqNum = message['r'];\n var onResponse = this.requestCBHash_[reqNum];\n if (onResponse) {\n delete this.requestCBHash_[reqNum];\n onResponse(message['b']);\n }\n }\n else if ('error' in message) {\n throw 'A server-side error has occurred: ' + message['error'];\n }\n else if ('a' in message) {\n // a and b are action and body, respectively\n this.onDataPush_(message['a'], message['b']);\n }\n };\n PersistentConnection.prototype.onDataPush_ = function (action, body) {\n this.log_('handleServerMessage', action, body);\n if (action === 'd')\n this.onDataUpdate_(body['p'], body['d'], \n /*isMerge*/ false, body['t']);\n else if (action === 'm')\n this.onDataUpdate_(body['p'], body['d'], \n /*isMerge=*/ true, body['t']);\n else if (action === 'c')\n this.onListenRevoked_(body['p'], body['q']);\n else if (action === 'ac')\n this.onAuthRevoked_(body['s'], body['d']);\n else if (action === 'sd')\n this.onSecurityDebugPacket_(body);\n else\n util_4.error('Unrecognized action received from server: ' +\n util_2.stringify(action) +\n '\\nAre you using the latest client?');\n };\n PersistentConnection.prototype.onReady_ = function (timestamp, sessionId) {\n this.log_('connection ready');\n this.connected_ = true;\n this.lastConnectionEstablishedTime_ = new Date().getTime();\n this.handleTimestamp_(timestamp);\n this.lastSessionId = sessionId;\n if (this.firstConnection_) {\n this.sendConnectStats_();\n }\n this.restoreState_();\n this.firstConnection_ = false;\n this.onConnectStatus_(true);\n };\n PersistentConnection.prototype.scheduleConnect_ = function (timeout) {\n var _this = this;\n util_3.assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n }\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\n this.establishConnectionTimer_ = setTimeout(function () {\n _this.establishConnectionTimer_ = null;\n _this.establishConnection_();\n }, Math.floor(timeout));\n };\n /**\n * @param {boolean} visible\n * @private\n */\n PersistentConnection.prototype.onVisible_ = function (visible) {\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\n if (visible &&\n !this.visible_ &&\n this.reconnectDelay_ === this.maxReconnectDelay_) {\n this.log_('Window became visible. Reducing delay.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n this.visible_ = visible;\n };\n PersistentConnection.prototype.onOnline_ = function (online) {\n if (online) {\n this.log_('Browser went online.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n else {\n this.log_('Browser went offline. Killing connection.');\n if (this.realtime_) {\n this.realtime_.close();\n }\n }\n };\n PersistentConnection.prototype.onRealtimeDisconnect_ = function () {\n this.log_('data client disconnected');\n this.connected_ = false;\n this.realtime_ = null;\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\n this.cancelSentTransactions_();\n // Clear out the pending requests.\n this.requestCBHash_ = {};\n if (this.shouldReconnect_()) {\n if (!this.visible_) {\n this.log_(\"Window isn't visible. Delaying reconnect.\");\n this.reconnectDelay_ = this.maxReconnectDelay_;\n this.lastConnectionAttemptTime_ = new Date().getTime();\n }\n else if (this.lastConnectionEstablishedTime_) {\n // If we've been connected long enough, reset reconnect delay to minimum.\n var timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT)\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n this.lastConnectionEstablishedTime_ = null;\n }\n var timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\n var reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\n reconnectDelay = Math.random() * reconnectDelay;\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\n this.scheduleConnect_(reconnectDelay);\n // Adjust reconnect delay for next time.\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\n }\n this.onConnectStatus_(false);\n };\n PersistentConnection.prototype.establishConnection_ = function () {\n if (this.shouldReconnect_()) {\n this.log_('Making a connection attempt');\n this.lastConnectionAttemptTime_ = new Date().getTime();\n this.lastConnectionEstablishedTime_ = null;\n var onDataMessage_1 = this.onDataMessage_.bind(this);\n var onReady_1 = this.onReady_.bind(this);\n var onDisconnect_1 = this.onRealtimeDisconnect_.bind(this);\n var connId_1 = this.id + ':' + PersistentConnection.nextConnectionId_++;\n var self_1 = this;\n var lastSessionId_1 = this.lastSessionId;\n var canceled_1 = false;\n var connection_1 = null;\n var closeFn_1 = function () {\n if (connection_1) {\n connection_1.close();\n }\n else {\n canceled_1 = true;\n onDisconnect_1();\n }\n };\n var sendRequestFn = function (msg) {\n util_3.assert(connection_1, \"sendRequest call when we're not connected not allowed.\");\n connection_1.sendRequest(msg);\n };\n this.realtime_ = {\n close: closeFn_1,\n sendRequest: sendRequestFn\n };\n var forceRefresh = this.forceTokenRefresh_;\n this.forceTokenRefresh_ = false;\n // First fetch auth token, and establish connection after fetching the token was successful\n this.authTokenProvider_\n .getToken(forceRefresh)\n .then(function (result) {\n if (!canceled_1) {\n util_4.log('getToken() completed. Creating connection.');\n self_1.authToken_ = result && result.accessToken;\n connection_1 = new Connection_1.Connection(connId_1, self_1.repoInfo_, onDataMessage_1, onReady_1, onDisconnect_1, \n /* onKill= */ function (reason) {\n util_4.warn(reason + ' (' + self_1.repoInfo_.toString() + ')');\n self_1.interrupt(SERVER_KILL_INTERRUPT_REASON);\n }, lastSessionId_1);\n }\n else {\n util_4.log('getToken() completed but was canceled');\n }\n })\n .then(null, function (error) {\n self_1.log_('Failed to get token: ' + error);\n if (!canceled_1) {\n if (util_6.CONSTANTS.NODE_ADMIN) {\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\n // But getToken() may also just have temporarily failed, so we still want to\n // continue retrying.\n util_4.warn(error);\n }\n closeFn_1();\n }\n });\n }\n };\n /**\n * @param {string} reason\n */\n PersistentConnection.prototype.interrupt = function (reason) {\n util_4.log('Interrupting connection for reason: ' + reason);\n this.interruptReasons_[reason] = true;\n if (this.realtime_) {\n this.realtime_.close();\n }\n else {\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n this.establishConnectionTimer_ = null;\n }\n if (this.connected_) {\n this.onRealtimeDisconnect_();\n }\n }\n };\n /**\n * @param {string} reason\n */\n PersistentConnection.prototype.resume = function (reason) {\n util_4.log('Resuming connection for reason: ' + reason);\n delete this.interruptReasons_[reason];\n if (util_1.isEmpty(this.interruptReasons_)) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n };\n PersistentConnection.prototype.handleTimestamp_ = function (timestamp) {\n var delta = timestamp - new Date().getTime();\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\n };\n PersistentConnection.prototype.cancelSentTransactions_ = function () {\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\n var put = this.outstandingPuts_[i];\n if (put && /*hash*/ 'h' in put.request && put.queued) {\n if (put.onComplete)\n put.onComplete('disconnect');\n delete this.outstandingPuts_[i];\n this.outstandingPutCount_--;\n }\n }\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0)\n this.outstandingPuts_ = [];\n };\n /**\n * @param {!string} pathString\n * @param {Array.<*>=} query\n * @private\n */\n PersistentConnection.prototype.onListenRevoked_ = function (pathString, query) {\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\n var queryId;\n if (!query) {\n queryId = 'default';\n }\n else {\n queryId = query.map(function (q) { return util_4.ObjectToUniqueKey(q); }).join('$');\n }\n var listen = this.removeListen_(pathString, queryId);\n if (listen && listen.onComplete)\n listen.onComplete('permission_denied');\n };\n /**\n * @param {!string} pathString\n * @param {!string} queryId\n * @return {{queries:Array., onComplete:function(string)}}\n * @private\n */\n PersistentConnection.prototype.removeListen_ = function (pathString, queryId) {\n var normalizedPathString = new Path_1.Path(pathString).toString(); // normalize path.\n var listen;\n if (this.listens_[normalizedPathString] !== undefined) {\n listen = this.listens_[normalizedPathString][queryId];\n delete this.listens_[normalizedPathString][queryId];\n if (util_1.getCount(this.listens_[normalizedPathString]) === 0) {\n delete this.listens_[normalizedPathString];\n }\n }\n else {\n // all listens for this path has already been removed\n listen = undefined;\n }\n return listen;\n };\n PersistentConnection.prototype.onAuthRevoked_ = function (statusCode, explanation) {\n util_4.log('Auth token revoked: ' + statusCode + '/' + explanation);\n this.authToken_ = null;\n this.forceTokenRefresh_ = true;\n this.realtime_.close();\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAuthTokenCount_++;\n if (this.invalidAuthTokenCount_ >= INVALID_AUTH_TOKEN_THRESHOLD) {\n // Set a long reconnect delay because recovery is unlikely\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n // Notify the auth token provider that the token is invalid, which will log\n // a warning\n this.authTokenProvider_.notifyForInvalidToken();\n }\n }\n };\n PersistentConnection.prototype.onSecurityDebugPacket_ = function (body) {\n if (this.securityDebugCallback_) {\n this.securityDebugCallback_(body);\n }\n else {\n if ('msg' in body) {\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\n }\n }\n };\n PersistentConnection.prototype.restoreState_ = function () {\n var _this = this;\n //Re-authenticate ourselves if we have a credential stored.\n this.tryAuth();\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\n // make sure to send listens before puts.\n util_1.forEach(this.listens_, function (pathString, queries) {\n util_1.forEach(queries, function (key, listenSpec) {\n _this.sendListen_(listenSpec);\n });\n });\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\n if (this.outstandingPuts_[i])\n this.sendPut_(i);\n }\n while (this.onDisconnectRequestQueue_.length) {\n var request = this.onDisconnectRequestQueue_.shift();\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\n }\n };\n /**\n * Sends client stats for first connection\n * @private\n */\n PersistentConnection.prototype.sendConnectStats_ = function () {\n var stats = {};\n var clientName = 'js';\n if (util_6.CONSTANTS.NODE_ADMIN) {\n clientName = 'admin_node';\n }\n else if (util_6.CONSTANTS.NODE_CLIENT) {\n clientName = 'node';\n }\n stats['sdk.' + clientName + '.' + app_1.default.SDK_VERSION.replace(/\\./g, '-')] = 1;\n if (util_7.isMobileCordova()) {\n stats['framework.cordova'] = 1;\n }\n else if (util_7.isReactNative()) {\n stats['framework.reactnative'] = 1;\n }\n this.reportStats(stats);\n };\n /**\n * @return {boolean}\n * @private\n */\n PersistentConnection.prototype.shouldReconnect_ = function () {\n var online = OnlineMonitor_1.OnlineMonitor.getInstance().currentlyOnline();\n return util_1.isEmpty(this.interruptReasons_) && online;\n };\n /**\n * @private\n */\n PersistentConnection.nextPersistentConnectionId_ = 0;\n /**\n * Counter for number of connections created. Mainly used for tagging in the logs\n * @type {number}\n * @private\n */\n PersistentConnection.nextConnectionId_ = 0;\n return PersistentConnection;\n}(ServerActions_1.ServerActions));\nexports.PersistentConnection = PersistentConnection;\n\n//# sourceMappingURL=PersistentConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/PersistentConnection.js\n// module id = 52\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Base class to be used if you want to emit events. Call the constructor with\n * the set of allowed event names.\n */\nvar EventEmitter = /** @class */ (function () {\n /**\n * @param {!Array.} allowedEvents_\n */\n function EventEmitter(allowedEvents_) {\n this.allowedEvents_ = allowedEvents_;\n this.listeners_ = {};\n util_1.assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\n }\n /**\n * To be called by derived classes to trigger events.\n * @param {!string} eventType\n * @param {...*} var_args\n */\n EventEmitter.prototype.trigger = function (eventType) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (Array.isArray(this.listeners_[eventType])) {\n // Clone the list, since callbacks could add/remove listeners.\n var listeners = this.listeners_[eventType].slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].callback.apply(listeners[i].context, var_args);\n }\n }\n };\n EventEmitter.prototype.on = function (eventType, callback, context) {\n this.validateEventType_(eventType);\n this.listeners_[eventType] = this.listeners_[eventType] || [];\n this.listeners_[eventType].push({ callback: callback, context: context });\n var eventData = this.getInitialEvent(eventType);\n if (eventData) {\n callback.apply(context, eventData);\n }\n };\n EventEmitter.prototype.off = function (eventType, callback, context) {\n this.validateEventType_(eventType);\n var listeners = this.listeners_[eventType] || [];\n for (var i = 0; i < listeners.length; i++) {\n if (listeners[i].callback === callback &&\n (!context || context === listeners[i].context)) {\n listeners.splice(i, 1);\n return;\n }\n }\n };\n EventEmitter.prototype.validateEventType_ = function (eventType) {\n util_1.assert(this.allowedEvents_.find(function (et) {\n return et === eventType;\n }), 'Unknown event: ' + eventType);\n };\n return EventEmitter;\n}());\nexports.EventEmitter = EventEmitter;\n\n//# sourceMappingURL=EventEmitter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/EventEmitter.js\n// module id = 53\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar storage_1 = require(\"../core/storage/storage\");\nvar Constants_1 = require(\"./Constants\");\nvar TransportManager_1 = require(\"./TransportManager\");\n// Abort upgrade attempt if it takes longer than 60s.\nvar UPGRADE_TIMEOUT = 60000;\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\nvar DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\n// but we've sent/received enough bytes, we don't cancel the connection.\nvar BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\nvar BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\nvar MESSAGE_TYPE = 't';\nvar MESSAGE_DATA = 'd';\nvar CONTROL_SHUTDOWN = 's';\nvar CONTROL_RESET = 'r';\nvar CONTROL_ERROR = 'e';\nvar CONTROL_PONG = 'o';\nvar SWITCH_ACK = 'a';\nvar END_TRANSMISSION = 'n';\nvar PING = 'p';\nvar SERVER_HELLO = 'h';\n/**\n * Creates a new real-time connection to the server using whichever method works\n * best in the current browser.\n *\n * @constructor\n */\nvar Connection = /** @class */ (function () {\n /**\n * @param {!string} id - an id for this connection\n * @param {!RepoInfo} repoInfo_ - the info for the endpoint to connect to\n * @param {function(Object)} onMessage_ - the callback to be triggered when a server-push message arrives\n * @param {function(number, string)} onReady_ - the callback to be triggered when this connection is ready to send messages.\n * @param {function()} onDisconnect_ - the callback to be triggered when a connection was lost\n * @param {function(string)} onKill_ - the callback to be triggered when this connection has permanently shut down.\n * @param {string=} lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\n */\n function Connection(id, repoInfo_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\n this.id = id;\n this.repoInfo_ = repoInfo_;\n this.onMessage_ = onMessage_;\n this.onReady_ = onReady_;\n this.onDisconnect_ = onDisconnect_;\n this.onKill_ = onKill_;\n this.lastSessionId = lastSessionId;\n this.connectionCount = 0;\n this.pendingDataMessages = [];\n this.state_ = 0 /* CONNECTING */;\n this.log_ = util_1.logWrapper('c:' + this.id + ':');\n this.transportManager_ = new TransportManager_1.TransportManager(repoInfo_);\n this.log_('Connection created');\n this.start_();\n }\n /**\n * Starts a connection attempt\n * @private\n */\n Connection.prototype.start_ = function () {\n var _this = this;\n var conn = this.transportManager_.initialTransport();\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, undefined, this.lastSessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\n var onMessageReceived = this.connReceiver_(this.conn_);\n var onConnectionLost = this.disconnReceiver_(this.conn_);\n this.tx_ = this.conn_;\n this.rx_ = this.conn_;\n this.secondaryConn_ = null;\n this.isHealthy_ = false;\n /*\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\n * still have the context of your originating frame.\n */\n setTimeout(function () {\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\n _this.conn_ && _this.conn_.open(onMessageReceived, onConnectionLost);\n }, Math.floor(0));\n var healthyTimeout_ms = conn['healthyTimeout'] || 0;\n if (healthyTimeout_ms > 0) {\n this.healthyTimeout_ = util_1.setTimeoutNonBlocking(function () {\n _this.healthyTimeout_ = null;\n if (!_this.isHealthy_) {\n if (_this.conn_ &&\n _this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\n _this.log_('Connection exceeded healthy timeout but has received ' +\n _this.conn_.bytesReceived +\n ' bytes. Marking connection healthy.');\n _this.isHealthy_ = true;\n _this.conn_.markConnectionHealthy();\n }\n else if (_this.conn_ &&\n _this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\n _this.log_('Connection exceeded healthy timeout but has sent ' +\n _this.conn_.bytesSent +\n ' bytes. Leaving connection alive.');\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\n // the server.\n }\n else {\n _this.log_('Closing unhealthy connection after timeout.');\n _this.close();\n }\n }\n }, Math.floor(healthyTimeout_ms));\n }\n };\n /**\n * @return {!string}\n * @private\n */\n Connection.prototype.nextTransportId_ = function () {\n return 'c:' + this.id + ':' + this.connectionCount++;\n };\n Connection.prototype.disconnReceiver_ = function (conn) {\n var _this = this;\n return function (everConnected) {\n if (conn === _this.conn_) {\n _this.onConnectionLost_(everConnected);\n }\n else if (conn === _this.secondaryConn_) {\n _this.log_('Secondary connection lost.');\n _this.onSecondaryConnectionLost_();\n }\n else {\n _this.log_('closing an old connection');\n }\n };\n };\n Connection.prototype.connReceiver_ = function (conn) {\n var _this = this;\n return function (message) {\n if (_this.state_ != 2 /* DISCONNECTED */) {\n if (conn === _this.rx_) {\n _this.onPrimaryMessageReceived_(message);\n }\n else if (conn === _this.secondaryConn_) {\n _this.onSecondaryMessageReceived_(message);\n }\n else {\n _this.log_('message on old connection');\n }\n }\n };\n };\n /**\n *\n * @param {Object} dataMsg An arbitrary data message to be sent to the server\n */\n Connection.prototype.sendRequest = function (dataMsg) {\n // wrap in a data message envelope and send it on\n var msg = { t: 'd', d: dataMsg };\n this.sendData_(msg);\n };\n Connection.prototype.tryCleanupConnection = function () {\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\n this.conn_ = this.secondaryConn_;\n this.secondaryConn_ = null;\n // the server will shutdown the old connection\n }\n };\n Connection.prototype.onSecondaryControl_ = function (controlData) {\n if (MESSAGE_TYPE in controlData) {\n var cmd = controlData[MESSAGE_TYPE];\n if (cmd === SWITCH_ACK) {\n this.upgradeIfSecondaryHealthy_();\n }\n else if (cmd === CONTROL_RESET) {\n // Most likely the session wasn't valid. Abandon the switch attempt\n this.log_('Got a reset on secondary, closing it');\n this.secondaryConn_.close();\n // If we were already using this connection for something, than we need to fully close\n if (this.tx_ === this.secondaryConn_ ||\n this.rx_ === this.secondaryConn_) {\n this.close();\n }\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on secondary.');\n this.secondaryResponsesRequired_--;\n this.upgradeIfSecondaryHealthy_();\n }\n }\n };\n Connection.prototype.onSecondaryMessageReceived_ = function (parsedData) {\n var layer = util_1.requireKey('t', parsedData);\n var data = util_1.requireKey('d', parsedData);\n if (layer == 'c') {\n this.onSecondaryControl_(data);\n }\n else if (layer == 'd') {\n // got a data message, but we're still second connection. Need to buffer it up\n this.pendingDataMessages.push(data);\n }\n else {\n throw new Error('Unknown protocol layer: ' + layer);\n }\n };\n Connection.prototype.upgradeIfSecondaryHealthy_ = function () {\n if (this.secondaryResponsesRequired_ <= 0) {\n this.log_('Secondary connection is healthy.');\n this.isHealthy_ = true;\n this.secondaryConn_.markConnectionHealthy();\n this.proceedWithUpgrade_();\n }\n else {\n // Send a ping to make sure the connection is healthy.\n this.log_('sending ping on secondary.');\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\n }\n };\n Connection.prototype.proceedWithUpgrade_ = function () {\n // tell this connection to consider itself open\n this.secondaryConn_.start();\n // send ack\n this.log_('sending client ack on secondary');\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\n // send end packet on primary transport, switch to sending on this one\n // can receive on this one, buffer responses until end received on primary transport\n this.log_('Ending transmission on primary');\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\n this.tx_ = this.secondaryConn_;\n this.tryCleanupConnection();\n };\n Connection.prototype.onPrimaryMessageReceived_ = function (parsedData) {\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\n var layer = util_1.requireKey('t', parsedData);\n var data = util_1.requireKey('d', parsedData);\n if (layer == 'c') {\n this.onControl_(data);\n }\n else if (layer == 'd') {\n this.onDataMessage_(data);\n }\n };\n Connection.prototype.onDataMessage_ = function (message) {\n this.onPrimaryResponse_();\n // We don't do anything with data messages, just kick them up a level\n this.onMessage_(message);\n };\n Connection.prototype.onPrimaryResponse_ = function () {\n if (!this.isHealthy_) {\n this.primaryResponsesRequired_--;\n if (this.primaryResponsesRequired_ <= 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n }\n };\n Connection.prototype.onControl_ = function (controlData) {\n var cmd = util_1.requireKey(MESSAGE_TYPE, controlData);\n if (MESSAGE_DATA in controlData) {\n var payload = controlData[MESSAGE_DATA];\n if (cmd === SERVER_HELLO) {\n this.onHandshake_(payload);\n }\n else if (cmd === END_TRANSMISSION) {\n this.log_('recvd end transmission on primary');\n this.rx_ = this.secondaryConn_;\n for (var i = 0; i < this.pendingDataMessages.length; ++i) {\n this.onDataMessage_(this.pendingDataMessages[i]);\n }\n this.pendingDataMessages = [];\n this.tryCleanupConnection();\n }\n else if (cmd === CONTROL_SHUTDOWN) {\n // This was previously the 'onKill' callback passed to the lower-level connection\n // payload in this case is the reason for the shutdown. Generally a human-readable error\n this.onConnectionShutdown_(payload);\n }\n else if (cmd === CONTROL_RESET) {\n // payload in this case is the host we should contact\n this.onReset_(payload);\n }\n else if (cmd === CONTROL_ERROR) {\n util_1.error('Server Error: ' + payload);\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on primary.');\n this.onPrimaryResponse_();\n this.sendPingOnPrimaryIfNecessary_();\n }\n else {\n util_1.error('Unknown control packet command: ' + cmd);\n }\n }\n };\n /**\n *\n * @param {Object} handshake The handshake data returned from the server\n * @private\n */\n Connection.prototype.onHandshake_ = function (handshake) {\n var timestamp = handshake.ts;\n var version = handshake.v;\n var host = handshake.h;\n this.sessionId = handshake.s;\n this.repoInfo_.updateHost(host);\n // if we've already closed the connection, then don't bother trying to progress further\n if (this.state_ == 0 /* CONNECTING */) {\n this.conn_.start();\n this.onConnectionEstablished_(this.conn_, timestamp);\n if (Constants_1.PROTOCOL_VERSION !== version) {\n util_1.warn('Protocol version mismatch detected');\n }\n // TODO: do we want to upgrade? when? maybe a delay?\n this.tryStartUpgrade_();\n }\n };\n Connection.prototype.tryStartUpgrade_ = function () {\n var conn = this.transportManager_.upgradeTransport();\n if (conn) {\n this.startUpgrade_(conn);\n }\n };\n Connection.prototype.startUpgrade_ = function (conn) {\n var _this = this;\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.sessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.secondaryResponsesRequired_ =\n conn['responsesRequiredToBeHealthy'] || 0;\n var onMessage = this.connReceiver_(this.secondaryConn_);\n var onDisconnect = this.disconnReceiver_(this.secondaryConn_);\n this.secondaryConn_.open(onMessage, onDisconnect);\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\n util_1.setTimeoutNonBlocking(function () {\n if (_this.secondaryConn_) {\n _this.log_('Timed out trying to upgrade.');\n _this.secondaryConn_.close();\n }\n }, Math.floor(UPGRADE_TIMEOUT));\n };\n Connection.prototype.onReset_ = function (host) {\n this.log_('Reset packet received. New host: ' + host);\n this.repoInfo_.updateHost(host);\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\n // We don't currently support resets after the connection has already been established\n if (this.state_ === 1 /* CONNECTED */) {\n this.close();\n }\n else {\n // Close whatever connections we have open and start again.\n this.closeConnections_();\n this.start_();\n }\n };\n Connection.prototype.onConnectionEstablished_ = function (conn, timestamp) {\n var _this = this;\n this.log_('Realtime connection established.');\n this.conn_ = conn;\n this.state_ = 1 /* CONNECTED */;\n if (this.onReady_) {\n this.onReady_(timestamp, this.sessionId);\n this.onReady_ = null;\n }\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\n // send some pings.\n if (this.primaryResponsesRequired_ === 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n }\n else {\n util_1.setTimeoutNonBlocking(function () {\n _this.sendPingOnPrimaryIfNecessary_();\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\n }\n };\n Connection.prototype.sendPingOnPrimaryIfNecessary_ = function () {\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\n if (!this.isHealthy_ && this.state_ === 1 /* CONNECTED */) {\n this.log_('sending ping on primary.');\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\n }\n };\n Connection.prototype.onSecondaryConnectionLost_ = function () {\n var conn = this.secondaryConn_;\n this.secondaryConn_ = null;\n if (this.tx_ === conn || this.rx_ === conn) {\n // we are relying on this connection already in some capacity. Therefore, a failure is real\n this.close();\n }\n };\n /**\n *\n * @param {boolean} everConnected Whether or not the connection ever reached a server. Used to determine if\n * we should flush the host cache\n * @private\n */\n Connection.prototype.onConnectionLost_ = function (everConnected) {\n this.conn_ = null;\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\n if (!everConnected && this.state_ === 0 /* CONNECTING */) {\n this.log_('Realtime connection failed.');\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\n if (this.repoInfo_.isCacheableHost()) {\n storage_1.PersistentStorage.remove('host:' + this.repoInfo_.host);\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\n this.repoInfo_.internalHost = this.repoInfo_.host;\n }\n }\n else if (this.state_ === 1 /* CONNECTED */) {\n this.log_('Realtime connection lost.');\n }\n this.close();\n };\n /**\n *\n * @param {string} reason\n * @private\n */\n Connection.prototype.onConnectionShutdown_ = function (reason) {\n this.log_('Connection shutdown command received. Shutting down...');\n if (this.onKill_) {\n this.onKill_(reason);\n this.onKill_ = null;\n }\n // We intentionally don't want to fire onDisconnect (kill is a different case),\n // so clear the callback.\n this.onDisconnect_ = null;\n this.close();\n };\n Connection.prototype.sendData_ = function (data) {\n if (this.state_ !== 1 /* CONNECTED */) {\n throw 'Connection is not connected';\n }\n else {\n this.tx_.send(data);\n }\n };\n /**\n * Cleans up this connection, calling the appropriate callbacks\n */\n Connection.prototype.close = function () {\n if (this.state_ !== 2 /* DISCONNECTED */) {\n this.log_('Closing realtime connection.');\n this.state_ = 2 /* DISCONNECTED */;\n this.closeConnections_();\n if (this.onDisconnect_) {\n this.onDisconnect_();\n this.onDisconnect_ = null;\n }\n }\n };\n /**\n *\n * @private\n */\n Connection.prototype.closeConnections_ = function () {\n this.log_('Shutting down all connections');\n if (this.conn_) {\n this.conn_.close();\n this.conn_ = null;\n }\n if (this.secondaryConn_) {\n this.secondaryConn_.close();\n this.secondaryConn_ = null;\n }\n if (this.healthyTimeout_) {\n clearTimeout(this.healthyTimeout_);\n this.healthyTimeout_ = null;\n }\n };\n return Connection;\n}());\nexports.Connection = Connection;\n\n//# sourceMappingURL=Connection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/Connection.js\n// module id = 54\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar CountedSet_1 = require(\"../core/util/CountedSet\");\nvar StatsManager_1 = require(\"../core/stats/StatsManager\");\nvar PacketReceiver_1 = require(\"./polling/PacketReceiver\");\nvar Constants_1 = require(\"./Constants\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\n// URL query parameters associated with longpolling\nexports.FIREBASE_LONGPOLL_START_PARAM = 'start';\nexports.FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\nexports.FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\nexports.FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\nexports.FIREBASE_LONGPOLL_ID_PARAM = 'id';\nexports.FIREBASE_LONGPOLL_PW_PARAM = 'pw';\nexports.FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\nexports.FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\nexports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\nexports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\nexports.FIREBASE_LONGPOLL_DATA_PARAM = 'd';\nexports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM = 'disconn';\nexports.FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\n//Data size constants.\n//TODO: Perf: the maximum length actually differs from browser to browser.\n// We should check what browser we're on and set accordingly.\nvar MAX_URL_DATA_SIZE = 1870;\nvar SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\nvar MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\n/**\n * Keepalive period\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\n * length of 30 seconds that we can't exceed.\n * @const\n * @type {number}\n */\nvar KEEPALIVE_REQUEST_INTERVAL = 25000;\n/**\n * How long to wait before aborting a long-polling connection attempt.\n * @const\n * @type {number}\n */\nvar LP_CONNECT_TIMEOUT = 30000;\n/**\n * This class manages a single long-polling connection.\n *\n * @constructor\n * @implements {Transport}\n */\nvar BrowserPollConnection = /** @class */ (function () {\n /**\n * @param {string} connId An identifier for this connection, used for logging\n * @param {RepoInfo} repoInfo The info for the endpoint to send data to.\n * @param {string=} transportSessionId Optional transportSessionid if we are reconnecting for an existing\n * transport session\n * @param {string=} lastSessionId Optional lastSessionId if the PersistentConnection has already created a\n * connection previously\n */\n function BrowserPollConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.repoInfo = repoInfo;\n this.transportSessionId = transportSessionId;\n this.lastSessionId = lastSessionId;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.everConnected_ = false;\n this.log_ = util_1.logWrapper(connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.urlFn = function (params) {\n return repoInfo.connectionURL(Constants_1.LONG_POLLING, params);\n };\n }\n /**\n *\n * @param {function(Object)} onMessage Callback when messages arrive\n * @param {function()} onDisconnect Callback with connection lost.\n */\n BrowserPollConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.curSegmentNum = 0;\n this.onDisconnect_ = onDisconnect;\n this.myPacketOrderer = new PacketReceiver_1.PacketReceiver(onMessage);\n this.isClosed_ = false;\n this.connectTimeoutTimer_ = setTimeout(function () {\n _this.log_('Timed out trying to connect.');\n // Make sure we clear the host cache\n _this.onClosed_();\n _this.connectTimeoutTimer_ = null;\n }, Math.floor(LP_CONNECT_TIMEOUT));\n // Ensure we delay the creation of the iframe until the DOM is loaded.\n util_1.executeWhenDOMReady(function () {\n if (_this.isClosed_)\n return;\n //Set up a callback that gets triggered once a connection is set up.\n _this.scriptTagHolder = new FirebaseIFrameScriptHolder(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var command = args[0], arg1 = args[1], arg2 = args[2], arg3 = args[3], arg4 = args[4];\n _this.incrementIncomingBytes_(args);\n if (!_this.scriptTagHolder)\n return; // we closed the connection.\n if (_this.connectTimeoutTimer_) {\n clearTimeout(_this.connectTimeoutTimer_);\n _this.connectTimeoutTimer_ = null;\n }\n _this.everConnected_ = true;\n if (command == exports.FIREBASE_LONGPOLL_START_PARAM) {\n _this.id = arg1;\n _this.password = arg2;\n }\n else if (command === exports.FIREBASE_LONGPOLL_CLOSE_COMMAND) {\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\n if (arg1) {\n // We aren't expecting any more data (other than what the server's already in the process of sending us\n // through our already open polls), so don't send any more.\n _this.scriptTagHolder.sendNewPolls = false;\n // arg1 in this case is the last response number sent by the server. We should try to receive\n // all of the responses up to this one before closing\n _this.myPacketOrderer.closeAfter(arg1, function () {\n _this.onClosed_();\n });\n }\n else {\n _this.onClosed_();\n }\n }\n else {\n throw new Error('Unrecognized command received: ' + command);\n }\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pN = args[0], data = args[1];\n _this.incrementIncomingBytes_(args);\n _this.myPacketOrderer.handleResponse(pN, data);\n }, function () {\n _this.onClosed_();\n }, _this.urlFn);\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\n //from cache.\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_START_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(Math.random() * 100000000);\n if (_this.scriptTagHolder.uniqueCallbackIdentifier)\n urlParams[exports.FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] = _this.scriptTagHolder.uniqueCallbackIdentifier;\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (_this.transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = _this.transportSessionId;\n }\n if (_this.lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = _this.lastSessionId;\n }\n if (!util_3.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n var connectURL = _this.urlFn(urlParams);\n _this.log_('Connecting via long-poll to ' + connectURL);\n _this.scriptTagHolder.addTag(connectURL, function () {\n /* do nothing */\n });\n });\n };\n /**\n * Call this when a handshake has completed successfully and we want to consider the connection established\n */\n BrowserPollConnection.prototype.start = function () {\n this.scriptTagHolder.startLongPoll(this.id, this.password);\n this.addDisconnectPingFrame(this.id, this.password);\n };\n /**\n * Forces long polling to be considered as a potential transport\n */\n BrowserPollConnection.forceAllow = function () {\n BrowserPollConnection.forceAllow_ = true;\n };\n /**\n * Forces longpolling to not be considered as a potential transport\n */\n BrowserPollConnection.forceDisallow = function () {\n BrowserPollConnection.forceDisallow_ = true;\n };\n // Static method, use string literal so it can be accessed in a generic way\n BrowserPollConnection.isAvailable = function () {\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\n return (BrowserPollConnection.forceAllow_ ||\n (!BrowserPollConnection.forceDisallow_ &&\n typeof document !== 'undefined' &&\n document.createElement != null &&\n !util_1.isChromeExtensionContentScript() &&\n !util_1.isWindowsStoreApp() &&\n !util_3.isNodeSdk()));\n };\n /**\n * No-op for polling\n */\n BrowserPollConnection.prototype.markConnectionHealthy = function () { };\n /**\n * Stops polling and cleans up the iframe\n * @private\n */\n BrowserPollConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.scriptTagHolder) {\n this.scriptTagHolder.close();\n this.scriptTagHolder = null;\n }\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\n if (this.myDisconnFrame) {\n document.body.removeChild(this.myDisconnFrame);\n this.myDisconnFrame = null;\n }\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n };\n /**\n * Triggered when this transport is closed\n * @private\n */\n BrowserPollConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('Longpoll is closing itself');\n this.shutdown_();\n if (this.onDisconnect_) {\n this.onDisconnect_(this.everConnected_);\n this.onDisconnect_ = null;\n }\n }\n };\n /**\n * External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server\n * that we've left.\n */\n BrowserPollConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('Longpoll is being closed.');\n this.shutdown_();\n }\n };\n /**\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\n * broken into chunks (since URLs have a small maximum length).\n * @param {!Object} data The JSON data to transmit.\n */\n BrowserPollConnection.prototype.send = function (data) {\n var dataStr = util_2.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //first, lets get the base64-encoded data\n var base64data = util_2.base64Encode(dataStr);\n //We can only fit a certain amount in each URL, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_1.splitStringBySize(base64data, MAX_PAYLOAD_SIZE);\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\n //of segments so that we can reassemble the packet on the server.\n for (var i = 0; i < dataSegs.length; i++) {\n this.scriptTagHolder.enqueueSegment(this.curSegmentNum, dataSegs.length, dataSegs[i]);\n this.curSegmentNum++;\n }\n };\n /**\n * This is how we notify the server that we're leaving.\n * We aren't able to send requests with DHTML on a window close event, but we can\n * trigger XHR requests in some browsers (everything but Opera basically).\n * @param {!string} id\n * @param {!string} pw\n */\n BrowserPollConnection.prototype.addDisconnectPingFrame = function (id, pw) {\n if (util_3.isNodeSdk())\n return;\n this.myDisconnFrame = document.createElement('iframe');\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = id;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = pw;\n this.myDisconnFrame.src = this.urlFn(urlParams);\n this.myDisconnFrame.style.display = 'none';\n document.body.appendChild(this.myDisconnFrame);\n };\n /**\n * Used to track the bytes received by this client\n * @param {*} args\n * @private\n */\n BrowserPollConnection.prototype.incrementIncomingBytes_ = function (args) {\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\n var bytesReceived = util_2.stringify(args).length;\n this.bytesReceived += bytesReceived;\n this.stats_.incrementCounter('bytes_received', bytesReceived);\n };\n return BrowserPollConnection;\n}());\nexports.BrowserPollConnection = BrowserPollConnection;\n/*********************************************************************************************\n * A wrapper around an iframe that is used as a long-polling script holder.\n * @constructor\n *********************************************************************************************/\nvar FirebaseIFrameScriptHolder = /** @class */ (function () {\n /**\n * @param commandCB - The callback to be called when control commands are recevied from the server.\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\n */\n function FirebaseIFrameScriptHolder(commandCB, onMessageCB, onDisconnect, urlFn) {\n this.onDisconnect = onDisconnect;\n this.urlFn = urlFn;\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\n //problems in some browsers.\n /**\n * @type {CountedSet.}\n */\n this.outstandingRequests = new CountedSet_1.CountedSet();\n //A queue of the pending segments waiting for transmission to the server.\n this.pendingSegs = [];\n //A serial number. We use this for two things:\n // 1) A way to ensure the browser doesn't cache responses to polls\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\n // JSONP code in the order it was added to the iframe.\n this.currentSerial = Math.floor(Math.random() * 100000000);\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\n // incoming data from the server that we're waiting for).\n this.sendNewPolls = true;\n if (!util_3.isNodeSdk()) {\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\n //iframes where we put the long-polling script tags. We have two callbacks:\n // 1) Command Callback - Triggered for control issues, like starting a connection.\n // 2) Message Callback - Triggered when new data arrives.\n this.uniqueCallbackIdentifier = util_1.LUIDGenerator();\n window[exports.FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier] = commandCB;\n window[exports.FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] = onMessageCB;\n //Create an iframe for us to add script tags to.\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\n // Set the iframe's contents.\n var script = '';\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\n // for ie9, but ie8 needs to do it again in the document itself.\n if (this.myIFrame.src &&\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:') {\n var currentDomain = document.domain;\n script = '';\n }\n var iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n util_1.log('frame writing exception');\n if (e.stack) {\n util_1.log(e.stack);\n }\n util_1.log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n * @private\n * @return {Element}\n */\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n var a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n util_1.log('No IE domain setting required');\n }\n }\n catch (e) {\n var domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n }\n else if (iframe.document) {\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n };\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n FirebaseIFrameScriptHolder.prototype.close = function () {\n var _this = this;\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\n this.myIFrame.doc.body.innerHTML = '';\n setTimeout(function () {\n if (_this.myIFrame !== null) {\n document.body.removeChild(_this.myIFrame);\n _this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n if (util_3.isNodeSdk() && this.myID) {\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n var theURL = this.urlFn(urlParams);\n FirebaseIFrameScriptHolder.nodeRestRequest(theURL);\n }\n // Protect from being called recursively.\n var onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n };\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param {!string} id - The ID of this connection\n * @param {!string} pw - The password for this connection\n */\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n };\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.count() < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n var theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n var curDataString = '';\n var i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n var nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length + SEG_HEADER_SIZE + curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n var theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n exports.FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n };\n /**\n * Add a script tag for a regular long-poll request.\n * @param {!string} url - The URL of the script tag.\n * @param {!number} serial - The serial number of the request.\n * @private\n */\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\n var _this = this;\n //remember that we sent this request.\n this.outstandingRequests.add(serial, 1);\n var doNewRequest = function () {\n _this.outstandingRequests.remove(serial);\n _this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n var readyStateCB = function () {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n };\n /**\n * Add an arbitrary script tag to the iframe.\n * @param {!string} url - The URL for the script tag source.\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\n */\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\n var _this = this;\n if (util_3.isNodeSdk()) {\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(function () {\n try {\n // if we're already closed, don't add this poll\n if (!_this.sendNewPolls)\n return;\n var newScript_1 = _this.myIFrame.doc.createElement('script');\n newScript_1.type = 'text/javascript';\n newScript_1.async = true;\n newScript_1.src = url;\n newScript_1.onload = newScript_1.onreadystatechange = function () {\n var rstate = newScript_1.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n newScript_1.onload = newScript_1.onreadystatechange = null;\n if (newScript_1.parentNode) {\n newScript_1.parentNode.removeChild(newScript_1);\n }\n loadCB();\n }\n };\n newScript_1.onerror = function () {\n util_1.log('Long-poll script failed to load: ' + url);\n _this.sendNewPolls = false;\n _this.close();\n };\n _this.myIFrame.doc.body.appendChild(newScript_1);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n };\n return FirebaseIFrameScriptHolder;\n}());\nexports.FirebaseIFrameScriptHolder = FirebaseIFrameScriptHolder;\n\n//# sourceMappingURL=BrowserPollConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/BrowserPollConnection.js\n// module id = 55\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../core/util/util\");\nvar StatsManager_1 = require(\"../core/stats/StatsManager\");\nvar Constants_1 = require(\"./Constants\");\nvar util_3 = require(\"@firebase/util\");\nvar storage_1 = require(\"../core/storage/storage\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nvar WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\nfunction setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\nexports.setWebSocketImpl = setWebSocketImpl;\n/**\n * Create a new websocket connection with the given callbacks.\n * @constructor\n * @implements {Transport}\n */\nvar WebSocketConnection = /** @class */ (function () {\n /**\n * @param {string} connId identifier for this transport\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n */\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = util_2.logWrapper(this.connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\n }\n /**\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n * @return {string} connection url\n * @private\n */\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\n var urlParams = {};\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (!util_5.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = lastSessionId;\n }\n return repoInfo.connectionURL(Constants_1.WEBSOCKET, urlParams);\n };\n /**\n *\n * @param onMessage Callback when messages arrive\n * @param onDisconnect Callback with connection lost.\n */\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n storage_1.PersistentStorage.set('previous_websocket_failure', true);\n try {\n if (util_5.isNodeSdk()) {\n var device = util_3.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n var options = {\n headers: {\n 'User-Agent': \"Firebase/\" + Constants_1.PROTOCOL_VERSION + \"/\" + app_1.default.SDK_VERSION + \"/\" + process.platform + \"/\" + device\n }\n };\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n var env = process['env'];\n var proxy = this.connURL.indexOf('wss://') == 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n else {\n this.mySock = new WebSocketImpl(this.connURL);\n }\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n var error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = function () {\n _this.log_('Websocket connected.');\n _this.everConnected_ = true;\n };\n this.mySock.onclose = function () {\n _this.log_('Websocket connection was disconnected.');\n _this.mySock = null;\n _this.onClosed_();\n };\n this.mySock.onmessage = function (m) {\n _this.handleIncomingFrame(m);\n };\n this.mySock.onerror = function (e) {\n _this.log_('WebSocket error. Closing connection.');\n var error = e.message || e.data;\n if (error) {\n _this.log_(error);\n }\n _this.onClosed_();\n };\n };\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n WebSocketConnection.prototype.start = function () { };\n WebSocketConnection.forceDisallow = function () {\n WebSocketConnection.forceDisallow_ = true;\n };\n WebSocketConnection.isAvailable = function () {\n var isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n };\n /**\n * Returns true if we previously failed to connect with this transport.\n * @return {boolean}\n */\n WebSocketConnection.previouslyFailed = function () {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (storage_1.PersistentStorage.isInMemoryStorage ||\n storage_1.PersistentStorage.get('previous_websocket_failure') === true);\n };\n WebSocketConnection.prototype.markConnectionHealthy = function () {\n storage_1.PersistentStorage.remove('previous_websocket_failure');\n };\n WebSocketConnection.prototype.appendFrame_ = function (data) {\n this.frames.push(data);\n if (this.frames.length == this.totalFrames) {\n var fullMess = this.frames.join('');\n this.frames = null;\n var jsonMess = util_4.jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n };\n /**\n * @param {number} frameCount The number of frames we are expecting from the server\n * @private\n */\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n };\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @param {!String} data\n * @return {?String} Any remaining data to be process, or null if there is none\n * @private\n */\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\n util_1.assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n var frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n };\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess The frame data\n */\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\n if (this.mySock === null)\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n var data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n var remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n };\n /**\n * Send a message to the server\n * @param {Object} data The JSON object to transmit\n */\n WebSocketConnection.prototype.send = function (data) {\n this.resetKeepAlive();\n var dataStr = util_4.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_2.splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (var i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n };\n WebSocketConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n };\n WebSocketConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n };\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n WebSocketConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n };\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n WebSocketConnection.prototype.resetKeepAlive = function () {\n var _this = this;\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(function () {\n //If there has been no websocket activity for a while, send a no-op\n if (_this.mySock) {\n _this.sendString_('0');\n }\n _this.resetKeepAlive();\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n };\n /**\n * Send a string over the websocket.\n *\n * @param {string} str String to send.\n * @private\n */\n WebSocketConnection.prototype.sendString_ = function (str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n };\n /**\n * Number of response before we consider the connection \"healthy.\"\n * @type {number}\n */\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\n /**\n * Time to wait for the connection te become healthy before giving up.\n * @type {number}\n */\n WebSocketConnection.healthyTimeout = 30000;\n return WebSocketConnection;\n}());\nexports.WebSocketConnection = WebSocketConnection;\n\n//# sourceMappingURL=WebSocketConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/WebSocketConnection.js\n// module id = 56\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nvar ServerActions = /** @class */ (function () {\n function ServerActions() {\n }\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, ?string)} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\n /**\n * Refreshes the auth token for the current connection.\n * @param {string} token The authentication token\n */\n ServerActions.prototype.refreshAuthToken = function (token) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\n /**\n * @param {Object.} stats\n */\n ServerActions.prototype.reportStats = function (stats) { };\n return ServerActions;\n}());\nexports.ServerActions = ServerActions;\n\n//# sourceMappingURL=ServerActions.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/ServerActions.js\n// module id = 57\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = require(\"./IndexedFilter\");\nvar PriorityIndex_1 = require(\"../../snap/indexes/PriorityIndex\");\nvar Node_1 = require(\"../../../core/snap/Node\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar RangedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function RangedFilter(params) {\n this.indexedFilter_ = new IndexedFilter_1.IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n }\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getStartPost = function () {\n return this.startPost_;\n };\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getEndPost = function () {\n return this.endPost_;\n };\n /**\n * @param {!NamedNode} node\n * @return {boolean}\n */\n RangedFilter.prototype.matches = function (node) {\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\n this.index_.compare(node, this.getEndPost()) <= 0);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var self = this;\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!self.matches(new Node_1.NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndexedFilter = function () {\n return this.indexedFilter_;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getStartPost_ = function (params) {\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getEndPost_ = function (params) {\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n };\n return RangedFilter;\n}());\nexports.RangedFilter = RangedFilter;\n\n//# sourceMappingURL=RangedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/RangedFilter.js\n// module id = 58\n// module chunks = 0","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = require('@firebase/database');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./database/index.js\n// module id = 80\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar Database_1 = require(\"./src/api/Database\");\nexports.Database = Database_1.Database;\nvar Query_1 = require(\"./src/api/Query\");\nexports.Query = Query_1.Query;\nvar Reference_1 = require(\"./src/api/Reference\");\nexports.Reference = Reference_1.Reference;\nvar util_1 = require(\"./src/core/util/util\");\nexports.enableLogging = util_1.enableLogging;\nvar RepoManager_1 = require(\"./src/core/RepoManager\");\nvar INTERNAL = require(\"./src/api/internal\");\nvar TEST_ACCESS = require(\"./src/api/test_access\");\nvar util_2 = require(\"@firebase/util\");\nvar ServerValue = Database_1.Database.ServerValue;\nexports.ServerValue = ServerValue;\nfunction registerDatabase(instance) {\n // Register the Database Service with the 'firebase' namespace.\n var namespace = instance.INTERNAL.registerService('database', function (app, unused, url) { return RepoManager_1.RepoManager.getInstance().databaseFromApp(app, url); }, \n // firebase.database namespace properties\n {\n Reference: Reference_1.Reference,\n Query: Query_1.Query,\n Database: Database_1.Database,\n enableLogging: util_1.enableLogging,\n INTERNAL: INTERNAL,\n ServerValue: ServerValue,\n TEST_ACCESS: TEST_ACCESS\n }, null, true);\n if (util_2.isNodeSdk()) {\n module.exports = namespace;\n }\n}\nexports.registerDatabase = registerDatabase;\nregisterDatabase(app_1.default);\nvar DataSnapshot_1 = require(\"./src/api/DataSnapshot\");\nexports.DataSnapshot = DataSnapshot_1.DataSnapshot;\nvar onDisconnect_1 = require(\"./src/api/onDisconnect\");\nexports.OnDisconnect = onDisconnect_1.OnDisconnect;\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/index.js\n// module id = 81\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n * @constructor\n */\nvar DOMStorageWrapper = /** @class */ (function () {\n /**\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\n */\n function DOMStorageWrapper(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param {string} key The key to save the value under\n * @param {?Object} value The value being stored, or null to remove the key.\n */\n DOMStorageWrapper.prototype.set = function (key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), util_1.stringify(value));\n }\n };\n /**\n * @param {string} key\n * @return {*} The value that was stored under this key, or null\n */\n DOMStorageWrapper.prototype.get = function (key) {\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return util_1.jsonEval(storedVal);\n }\n };\n /**\n * @param {string} key\n */\n DOMStorageWrapper.prototype.remove = function (key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n };\n /**\n * @param {string} name\n * @return {string}\n */\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\n return this.prefix_ + name;\n };\n DOMStorageWrapper.prototype.toString = function () {\n return this.domStorage_.toString();\n };\n return DOMStorageWrapper;\n}());\nexports.DOMStorageWrapper = DOMStorageWrapper;\n\n//# sourceMappingURL=DOMStorageWrapper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/DOMStorageWrapper.js\n// module id = 82\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n *\n * @constructor\n */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n MemoryStorage.prototype.set = function (key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n };\n MemoryStorage.prototype.get = function (key) {\n if (util_1.contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n };\n MemoryStorage.prototype.remove = function (key) {\n delete this.cache_[key];\n };\n return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n\n//# sourceMappingURL=MemoryStorage.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/MemoryStorage.js\n// module id = 83\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar TransactionResult = /** @class */ (function () {\n /**\n * A type for the resolve value of Firebase.transaction.\n * @constructor\n * @dict\n * @param {boolean} committed\n * @param {DataSnapshot} snapshot\n */\n function TransactionResult(committed, snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n TransactionResult.prototype.toJSON = function () {\n util_1.validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n };\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n\n//# sourceMappingURL=TransactionResult.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/TransactionResult.js\n// module id = 84\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nexports.nextPushId = (function () {\n // Modeled after base64 web-safe chars, but ordered by ASCII.\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n var lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n var lastRandChars = [];\n return function (now) {\n var duplicateTime = now === lastPushTime;\n lastPushTime = now;\n var i;\n var timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n util_1.assert(now === 0, 'Cannot push at time == 0');\n var id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n util_1.assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n//# sourceMappingURL=NextPushId.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/NextPushId.js\n// module id = 85\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataSnapshot_1 = require(\"../../api/DataSnapshot\");\nvar Event_1 = require(\"./Event\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Represents registration for 'value' events.\n */\nvar ValueEventRegistration = /** @class */ (function () {\n /**\n * @param {?function(!DataSnapshot)} callback_\n * @param {?function(Error)} cancelCallback_\n * @param {?Object} context_\n */\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\n this.callback_ = callback_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\n return eventType === 'value';\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createEvent = function (change, query) {\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent('value', this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, query.getRef(), index));\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_1 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_1.call(ctx, eventData.error);\n };\n }\n else {\n var cb_1 = this.callback_;\n return function () {\n cb_1.call(ctx, eventData.snapshot);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.matches = function (other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callback_ || !this.callback_) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return (other.callback_ === this.callback_ && other.context_ === this.context_);\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.hasAnyCallback = function () {\n return this.callback_ !== null;\n };\n return ValueEventRegistration;\n}());\nexports.ValueEventRegistration = ValueEventRegistration;\n/**\n * Represents the registration of 1 or more child_xxx events.\n *\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\n * register a group of callbacks together in the future.\n *\n * @constructor\n * @implements {EventRegistration}\n */\nvar ChildEventRegistration = /** @class */ (function () {\n /**\n * @param {?Object.} callbacks_\n * @param {?function(Error)} cancelCallback_\n * @param {Object=} context_\n */\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\n this.callbacks_ = callbacks_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return util_1.contains(this.callbacks_, eventToCheck);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createEvent = function (change, query) {\n util_2.assert(change.childName != null, 'Child events should have a childName.');\n var ref = query.getRef().child(/** @type {!string} */ (change.childName));\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent(change.type, this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, ref, index), change.prevName);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_2 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_2.call(ctx, eventData.error);\n };\n }\n else {\n var cb_2 = this.callbacks_[eventData.eventType];\n return function () {\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.matches = function (other) {\n if (other instanceof ChildEventRegistration) {\n if (!this.callbacks_ || !other.callbacks_) {\n return true;\n }\n else if (this.context_ === other.context_) {\n var otherCount = util_1.getCount(other.callbacks_);\n var thisCount = util_1.getCount(this.callbacks_);\n if (otherCount === thisCount) {\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\n // If event types don't match, not a match\n // If count is not 1, exact match across all\n if (otherCount === 1) {\n var otherKey /** @type {!string} */ = util_1.getAnyKey(other.callbacks_);\n var thisKey /** @type {!string} */ = util_1.getAnyKey(this.callbacks_);\n return (thisKey === otherKey &&\n (!other.callbacks_[otherKey] ||\n !this.callbacks_[thisKey] ||\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\n }\n else {\n // Exact match on each key.\n return util_1.every(this.callbacks_, function (eventType, cb) { return other.callbacks_[eventType] === cb; });\n }\n }\n }\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.hasAnyCallback = function () {\n return this.callbacks_ !== null;\n };\n return ChildEventRegistration;\n}());\nexports.ChildEventRegistration = ChildEventRegistration;\n\n//# sourceMappingURL=EventRegistration.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventRegistration.js\n// module id = 86\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Encapsulates the data needed to raise an event\n * @implements {Event}\n */\nvar DataEvent = /** @class */ (function () {\n /**\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\n * @param {!DataSnapshot} snapshot The data backing the event\n * @param {?string=} prevName Optional, the name of the previous child for child_* events.\n */\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getPath = function () {\n var ref = this.snapshot.getRef();\n if (this.eventType === 'value') {\n return ref.path;\n }\n else {\n return ref.getParent().path;\n }\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventType = function () {\n return this.eventType;\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.toString = function () {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n util_1.stringify(this.snapshot.exportVal()));\n };\n return DataEvent;\n}());\nexports.DataEvent = DataEvent;\nvar CancelEvent = /** @class */ (function () {\n /**\n * @param {EventRegistration} eventRegistration\n * @param {Error} error\n * @param {!Path} path\n */\n function CancelEvent(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getPath = function () {\n return this.path;\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventType = function () {\n return 'cancel';\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.toString = function () {\n return this.path.toString() + ':cancel';\n };\n return CancelEvent;\n}());\nexports.CancelEvent = CancelEvent;\n\n//# sourceMappingURL=Event.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/Event.js\n// module id = 87\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar AckUserWrite_1 = require(\"./operation/AckUserWrite\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar util_3 = require(\"@firebase/util\");\nvar ImmutableTree_1 = require(\"./util/ImmutableTree\");\nvar ListenComplete_1 = require(\"./operation/ListenComplete\");\nvar Merge_1 = require(\"./operation/Merge\");\nvar Operation_1 = require(\"./operation/Operation\");\nvar Overwrite_1 = require(\"./operation/Overwrite\");\nvar Path_1 = require(\"./util/Path\");\nvar SyncPoint_1 = require(\"./SyncPoint\");\nvar WriteTree_1 = require(\"./WriteTree\");\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n * @constructor\n */\nvar SyncTree = /** @class */ (function () {\n /**\n * @param {!ListenProvider} listenProvider_ Used by SyncTree to start / stop listening\n * to server data.\n */\n function SyncTree(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n * @type {!ImmutableTree.}\n * @private\n */\n this.syncPointTree_ = ImmutableTree_1.ImmutableTree.Empty;\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n * @type {!WriteTree}\n * @private\n */\n this.pendingWriteTree_ = new WriteTree_1.WriteTree();\n this.tagToQueryMap_ = {};\n this.queryToTagMap_ = {};\n }\n /**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @param {number} writeId\n * @param {boolean=} visible\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\n // Record pending write.\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.User, path, newData));\n }\n };\n /**\n * Apply the data from a user-generated update() call\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\n // Record pending merge.\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.User, path, changeTree));\n };\n /**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param {!number} writeId\n * @param {boolean=} revert True if the given write failed and needs to be reverted\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\n if (revert === void 0) { revert = false; }\n var write = this.pendingWriteTree_.getWrite(writeId);\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n var affectedTree_1 = ImmutableTree_1.ImmutableTree.Empty;\n if (write.snap != null) {\n // overwrite\n affectedTree_1 = affectedTree_1.set(Path_1.Path.Empty, true);\n }\n else {\n util_3.forEach(write.children, function (pathString, node) {\n affectedTree_1 = affectedTree_1.set(new Path_1.Path(pathString), node);\n });\n }\n return this.applyOperationToSyncPoints_(new AckUserWrite_1.AckUserWrite(write.path, affectedTree_1, revert));\n }\n };\n /**\n * Apply new server data for the specified path..\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.Server, path, newData));\n };\n /**\n * Apply new server data to be merged in at the specified path.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.Server, path, changeTree));\n };\n /**\n * Apply a listen complete for a query\n *\n * @param {!Path} path\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyListenComplete = function (path) {\n return this.applyOperationToSyncPoints_(new ListenComplete_1.ListenComplete(Operation_1.OperationSource.Server, path));\n };\n /**\n * Apply new server data for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey != null) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new Overwrite_1.Overwrite(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n };\n /**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n var op = new Merge_1.Merge(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Apply a listen complete for a tagged query\n *\n * @param {!Path} path\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new ListenComplete_1.ListenComplete(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.addEventRegistration = function (query, eventRegistration) {\n var path = query.path;\n var serverCache = null;\n var foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\n var relativePath = Path_1.Path.relativePath(pathToSyncPoint, path);\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || sp.hasCompleteView();\n });\n var syncPoint = this.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint_1.SyncPoint();\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPoint.hasCompleteView();\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var subtree = this.syncPointTree_.subtree(path);\n subtree.foreachChild(function (childName, childSyncPoint) {\n var completeCache = childSyncPoint.getCompleteServerCache(Path_1.Path.Empty);\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\n // We need to track a tag for this query\n var queryKey = SyncTree.makeQueryKey_(query);\n util_1.assert(!(queryKey in this.queryToTagMap_), 'View does not exist, but we have a tag');\n var tag = SyncTree.getNextQueryTag_();\n this.queryToTagMap_[queryKey] = tag;\n // Coerce to string to avoid sparse arrays.\n this.tagToQueryMap_['_' + tag] = queryKey;\n }\n var writesCache = this.pendingWriteTree_.childWrites(path);\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\n var view /** @type !View */ = syncPoint.viewForQuery(query);\n events = events.concat(this.setupListener_(query, view));\n }\n return events;\n };\n /**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, all callbacks are removed.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var _this = this;\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n var path = query.path;\n var maybeSyncPoint = this.syncPointTree_.get(path);\n var cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query.queryIdentifier() === 'default' ||\n maybeSyncPoint.viewExistsForQuery(query))) {\n /**\n * @type {{removed: !Array., events: !Array.}}\n */\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\n if (maybeSyncPoint.isEmpty()) {\n this.syncPointTree_ = this.syncPointTree_.remove(path);\n }\n var removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n // We may have just removed one of many listeners and can short-circuit this whole process\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\n // properly set up.\n //\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n var removingDefault = -1 !==\n removed.findIndex(function (query) {\n return query.getQueryParams().loadsAllData();\n });\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\n return parentSyncPoint.hasCompleteView();\n });\n if (removingDefault && !covered) {\n var subtree = this.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n var newViews = this.collectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (var i = 0; i < newViews.length; ++i) {\n var view = newViews[i], newQuery = view.getQuery();\n var listener = this.createListenerForView_(view);\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(newQuery), listener.hashFn, listener.onComplete);\n }\n }\n else {\n // There's nothing below us, so nothing we need to start listening on\n }\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n var defaultTag = null;\n this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\n }\n else {\n removed.forEach(function (queryToRemove) {\n var tagToRemove = _this.queryToTagMap_[SyncTree.makeQueryKey_(queryToRemove)];\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n this.removeTags_(removed);\n }\n else {\n // No-op, this listener must've been already removed\n }\n return cancelEvents;\n };\n /**\n * Returns a complete cache, if we have one, of the data at a particular path. The location must have a listener above\n * it, but as this is only used by transaction code, that should always be the case anyways.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n * @param {!Path} path The path to the data we want\n * @param {Array.=} writeIdsToExclude A specific set to be excluded\n * @return {?Node}\n */\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\n var includeHiddenSets = true;\n var writeTree = this.pendingWriteTree_;\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\n var relativePath = Path_1.Path.relativePath(pathSoFar, path);\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\n };\n /**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n *\n * @param {!ImmutableTree.} subtree\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\n var completeView = maybeChildSyncPoint.getCompleteView();\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n var views_1 = [];\n if (maybeChildSyncPoint) {\n views_1 = maybeChildSyncPoint.getQueryViews();\n }\n util_3.forEach(childMap, function (key, childViews) {\n views_1 = views_1.concat(childViews);\n });\n return views_1;\n }\n });\n };\n /**\n * @param {!Array.} queries\n * @private\n */\n SyncTree.prototype.removeTags_ = function (queries) {\n for (var j = 0; j < queries.length; ++j) {\n var removedQuery = queries[j];\n if (!removedQuery.getQueryParams().loadsAllData()) {\n // We should have a tag for this\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\n var removedQueryTag = this.queryToTagMap_[removedQueryKey];\n delete this.queryToTagMap_[removedQueryKey];\n delete this.tagToQueryMap_['_' + removedQueryTag];\n }\n }\n };\n /**\n * Normalizes a query to a query we send the server for listening\n * @param {!Query} query\n * @return {!Query} The normalized query\n * @private\n */\n SyncTree.queryForListening_ = function (query) {\n if (query.getQueryParams().loadsAllData() &&\n !query.getQueryParams().isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return /** @type {!Query} */ query.getRef();\n }\n else {\n return query;\n }\n };\n /**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @param {!Query} query\n * @param {!View} view\n * @return {!Array.} This method can return events to support synchronous data sources\n * @private\n */\n SyncTree.prototype.setupListener_ = function (query, view) {\n var path = query.path;\n var tag = this.tagForQuery_(query);\n var listener = this.createListenerForView_(view);\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\n var subtree = this.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n util_1.assert(!subtree.value.hasCompleteView(), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (!relativePath.isEmpty() &&\n maybeChildSyncPoint &&\n maybeChildSyncPoint.hasCompleteView()) {\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n var queries_1 = [];\n if (maybeChildSyncPoint) {\n queries_1 = queries_1.concat(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\n }\n util_3.forEach(childMap, function (key, childQueries) {\n queries_1 = queries_1.concat(childQueries);\n });\n return queries_1;\n }\n });\n for (var i = 0; i < queriesToStop.length; ++i) {\n var queryToStop = queriesToStop[i];\n this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\n }\n }\n return events;\n };\n /**\n *\n * @param {!View} view\n * @return {{hashFn: function(), onComplete: function(!string, *)}}\n * @private\n */\n SyncTree.prototype.createListenerForView_ = function (view) {\n var _this = this;\n var query = view.getQuery();\n var tag = this.tagForQuery_(query);\n return {\n hashFn: function () {\n var cache = view.getServerCache() || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: function (status) {\n if (status === 'ok') {\n if (tag) {\n return _this.applyTaggedListenComplete(query.path, tag);\n }\n else {\n return _this.applyListenComplete(query.path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n var error = util_2.errorForServerCode(status, query);\n return _this.removeEventRegistration(query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n };\n /**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n * @private\n * @param {!Query} query\n * @return {string}\n */\n SyncTree.makeQueryKey_ = function (query) {\n return query.path.toString() + '$' + query.queryIdentifier();\n };\n /**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n * @private\n * @param {!string} queryKey\n * @return {{queryId: !string, path: !Path}}\n */\n SyncTree.parseQueryKey_ = function (queryKey) {\n var splitIndex = queryKey.indexOf('$');\n util_1.assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path_1.Path(queryKey.substr(0, splitIndex))\n };\n };\n /**\n * Return the query associated with the given tag, if we have one\n * @param {!number} tag\n * @return {?string}\n * @private\n */\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\n return this.tagToQueryMap_['_' + tag];\n };\n /**\n * Return the tag associated with the given query.\n * @param {!Query} query\n * @return {?number}\n * @private\n */\n SyncTree.prototype.tagForQuery_ = function (query) {\n var queryKey = SyncTree.makeQueryKey_(query);\n return util_3.safeGet(this.queryToTagMap_, queryKey);\n };\n /**\n * Static accessor for query tags.\n * @return {number}\n * @private\n */\n SyncTree.getNextQueryTag_ = function () {\n return SyncTree.nextQueryTag_++;\n };\n /**\n * A helper method to apply tagged operations\n *\n * @param {!Path} queryPath\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\n var syncPoint = this.syncPointTree_.get(queryPath);\n util_1.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\n return syncPoint.applyOperation(operation, writesCache, \n /*serverCache=*/ null);\n };\n /**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n \n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n \n * - We concatenate all of the events returned by each SyncPoint and return the result.\n *\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\n return this.applyOperationHelper_(operation, this.syncPointTree_, \n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path_1.Path.Empty));\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n if (operation.path.isEmpty()) {\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n var childName = operation.path.getFront();\n var childOperation = operation.operationForChild(childName);\n var childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n }\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n var _this = this;\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n var childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n };\n /**\n * Static tracker for next query tag.\n * @type {number}\n * @private\n */\n SyncTree.nextQueryTag_ = 1;\n return SyncTree;\n}());\nexports.SyncTree = SyncTree;\n\n//# sourceMappingURL=SyncTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SyncTree.js\n// module id = 88\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"../util/Path\");\nvar Operation_1 = require(\"./Operation\");\nvar AckUserWrite = /** @class */ (function () {\n /**\n *\n * @param {!Path} path\n * @param {!ImmutableTree} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\n * @param {!boolean} revert\n */\n function AckUserWrite(\n /**@inheritDoc */ path, \n /**@inheritDoc */ affectedTree, \n /**@inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = Operation_1.OperationSource.User;\n }\n /**\n * @inheritDoc\n */\n AckUserWrite.prototype.operationForChild = function (childName) {\n if (!this.path.isEmpty()) {\n util_1.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n util_1.assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n var childTree = this.affectedTree.subtree(new Path_1.Path(childName));\n return new AckUserWrite(Path_1.Path.Empty, childTree, this.revert);\n }\n };\n return AckUserWrite;\n}());\nexports.AckUserWrite = AckUserWrite;\n\n//# sourceMappingURL=AckUserWrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/AckUserWrite.js\n// module id = 89\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"../util/Path\");\nvar Operation_1 = require(\"./Operation\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @constructor\n * @implements {Operation}\n */\nvar ListenComplete = /** @class */ (function () {\n function ListenComplete(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.LISTEN_COMPLETE;\n }\n ListenComplete.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new ListenComplete(this.source, Path_1.Path.Empty);\n }\n else {\n return new ListenComplete(this.source, this.path.popFront());\n }\n };\n return ListenComplete;\n}());\nexports.ListenComplete = ListenComplete;\n\n//# sourceMappingURL=ListenComplete.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/ListenComplete.js\n// module id = 90\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"./Operation\");\nvar Overwrite_1 = require(\"./Overwrite\");\nvar Path_1 = require(\"../util/Path\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!ImmutableTree.} children\n * @constructor\n * @implements {Operation}\n */\nvar Merge = /** @class */ (function () {\n function Merge(\n /**@inheritDoc */ source, \n /**@inheritDoc */ path, \n /**@inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.MERGE;\n }\n /**\n * @inheritDoc\n */\n Merge.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n var childTree = this.children.subtree(new Path_1.Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite_1.Overwrite(this.source, Path_1.Path.Empty, childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, Path_1.Path.Empty, childTree);\n }\n }\n else {\n util_1.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, this.path.popFront(), this.children);\n }\n };\n /**\n * @inheritDoc\n */\n Merge.prototype.toString = function () {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n };\n return Merge;\n}());\nexports.Merge = Merge;\n\n//# sourceMappingURL=Merge.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Merge.js\n// module id = 91\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = require(\"./filter/IndexedFilter\");\nvar ViewProcessor_1 = require(\"./ViewProcessor\");\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar CacheNode_1 = require(\"./CacheNode\");\nvar ViewCache_1 = require(\"./ViewCache\");\nvar EventGenerator_1 = require(\"./EventGenerator\");\nvar util_1 = require(\"@firebase/util\");\nvar Operation_1 = require(\"../operation/Operation\");\nvar Change_1 = require(\"./Change\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n * @constructor\n */\nvar View = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n * @param {!ViewCache} initialViewCache\n */\n function View(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n var params = this.query_.getQueryParams();\n var indexFilter = new IndexedFilter_1.IndexedFilter(params.getIndex());\n var filter = params.getNodeFilter();\n /**\n * @type {ViewProcessor}\n * @private\n */\n this.processor_ = new ViewProcessor_1.ViewProcessor(filter);\n var initialServerCache = initialViewCache.getServerCache();\n var initialEventCache = initialViewCache.getEventCache();\n // Don't filter server node with other filter than index, wait for tagged listen\n var serverSnap = indexFilter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n var eventSnap = filter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n var newServerCache = new CacheNode_1.CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n var newEventCache = new CacheNode_1.CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n /**\n * @type {!ViewCache}\n * @private\n */\n this.viewCache_ = new ViewCache_1.ViewCache(newEventCache, newServerCache);\n /**\n * @type {!EventGenerator}\n * @private\n */\n this.eventGenerator_ = new EventGenerator_1.EventGenerator(this.query_);\n }\n /**\n * @return {!Query}\n */\n View.prototype.getQuery = function () {\n return this.query_;\n };\n /**\n * @return {?Node}\n */\n View.prototype.getServerCache = function () {\n return this.viewCache_.getServerCache().getNode();\n };\n /**\n * @param {!Path} path\n * @return {?Node}\n */\n View.prototype.getCompleteServerCache = function (path) {\n var cache = this.viewCache_.getCompleteServerSnap();\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (this.query_.getQueryParams().loadsAllData() ||\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n };\n /**\n * @return {boolean}\n */\n View.prototype.isEmpty = function () {\n return this.eventRegistrations_.length === 0;\n };\n /**\n * @param {!EventRegistration} eventRegistration\n */\n View.prototype.addEventRegistration = function (eventRegistration) {\n this.eventRegistrations_.push(eventRegistration);\n };\n /**\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\n var cancelEvents = [];\n if (cancelError) {\n util_1.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n var path_1 = this.query_.path;\n this.eventRegistrations_.forEach(function (registration) {\n cancelError /** @type {!Error} */ = cancelError;\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n var remaining = [];\n for (var i = 0; i < this.eventRegistrations_.length; ++i) {\n var existing = this.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(this.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n this.eventRegistrations_ = remaining;\n }\n else {\n this.eventRegistrations_ = [];\n }\n return cancelEvents;\n };\n /**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @return {!Array.}\n */\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\n if (operation.type === Operation_1.OperationType.MERGE &&\n operation.source.queryId !== null) {\n util_1.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\n util_1.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\n }\n var oldViewCache = this.viewCache_;\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\n this.processor_.assertIndexed(result.viewCache);\n util_1.assert(result.viewCache.getServerCache().isFullyInitialized() ||\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n this.viewCache_ = result.viewCache;\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\n };\n /**\n * @param {!EventRegistration} registration\n * @return {!Array.}\n */\n View.prototype.getInitialEvents = function (registration) {\n var eventSnap = this.viewCache_.getEventCache();\n var initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n var eventNode = eventSnap.getNode();\n eventNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n initialChanges.push(Change_1.Change.childAddedChange(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(Change_1.Change.valueChange(eventSnap.getNode()));\n }\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\n };\n /**\n * @private\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {EventRegistration=} eventRegistration\n * @return {!Array.}\n */\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\n var registrations = eventRegistration\n ? [eventRegistration]\n : this.eventRegistrations_;\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\n };\n return View;\n}());\nexports.View = View;\n\n//# sourceMappingURL=View.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/View.js\n// module id = 92\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"../operation/Operation\");\nvar util_1 = require(\"@firebase/util\");\nvar ChildChangeAccumulator_1 = require(\"./ChildChangeAccumulator\");\nvar Change_1 = require(\"./Change\");\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar KeyIndex_1 = require(\"../snap/indexes/KeyIndex\");\nvar ImmutableTree_1 = require(\"../util/ImmutableTree\");\nvar Path_1 = require(\"../util/Path\");\nvar CompleteChildSource_1 = require(\"./CompleteChildSource\");\n/**\n * @constructor\n * @struct\n */\nvar ProcessorResult = /** @class */ (function () {\n /**\n * @param {!ViewCache} viewCache\n * @param {!Array.} changes\n */\n function ProcessorResult(viewCache, changes) {\n this.viewCache = viewCache;\n this.changes = changes;\n }\n return ProcessorResult;\n}());\nexports.ProcessorResult = ProcessorResult;\n/**\n * @constructor\n */\nvar ViewProcessor = /** @class */ (function () {\n /**\n * @param {!NodeFilter} filter_\n */\n function ViewProcessor(filter_) {\n this.filter_ = filter_;\n }\n /**\n * @param {!ViewCache} viewCache\n */\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\n util_1.assert(viewCache\n .getEventCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\n util_1.assert(viewCache\n .getServerCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @return {!ProcessorResult}\n */\n ViewProcessor.prototype.applyOperation = function (oldViewCache, operation, writesCache, completeCache) {\n var accumulator = new ChildChangeAccumulator_1.ChildChangeAccumulator();\n var newViewCache, filterServerNode;\n if (operation.type === Operation_1.OperationType.OVERWRITE) {\n var overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.getServerCache().isFiltered() &&\n !overwrite.path.isEmpty());\n newViewCache = this.applyServerOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.MERGE) {\n var merge = operation;\n if (merge.source.fromUser) {\n newViewCache = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.getServerCache().isFiltered();\n newViewCache = this.applyServerMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.ACK_USER_WRITE) {\n var ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.LISTEN_COMPLETE) {\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw util_1.assertionError('Unknown operation type: ' + operation.type);\n }\n var changes = accumulator.getChanges();\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\n return new ProcessorResult(newViewCache, changes);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!ViewCache} newViewCache\n * @param {!Array.} accumulator\n * @private\n */\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\n var eventSnap = newViewCache.getEventCache();\n if (eventSnap.isFullyInitialized()) {\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\n if (accumulator.length > 0 ||\n !oldViewCache.getEventCache().isFullyInitialized() ||\n (isLeafOrEmpty &&\n !eventSnap\n .getNode()\n .equals(/** @type {!Node} */ (oldCompleteSnap))) ||\n !eventSnap\n .getNode()\n .getPriority()\n .equals(oldCompleteSnap.getPriority())) {\n accumulator.push(Change_1.Change.valueChange(\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\n }\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} changePath\n * @param {!WriteTreeRef} writesCache\n * @param {!CompleteChildSource} source\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\n var oldEventSnap = viewCache.getEventCache();\n if (writesCache.shadowingWrite(changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n var newEventCache = void 0, serverNode = void 0;\n if (changePath.isEmpty()) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n util_1.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.getServerCache().isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n var serverCache = viewCache.getCompleteServerSnap();\n var completeChildren = serverCache instanceof ChildrenNode_1.ChildrenNode\n ? serverCache\n : ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\n }\n else {\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\n }\n }\n else {\n var childKey = changePath.getFront();\n if (childKey == '.priority') {\n util_1.assert(changePath.getLength() == 1, \"Can't have a priority with additional path components\");\n var oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.getServerCache().getNode();\n // we might have overwrites for this priority\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = this.filter_.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n var childChangePath = changePath.popFront();\n // update child\n var newEventChild = void 0;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.getServerCache().getNode();\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n }\n if (newEventChild != null) {\n newEventCache = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\n }\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n var oldServerSnap = oldViewCache.getServerCache();\n var newServerCache;\n var serverFilter = filterServerNode\n ? this.filter_\n : this.filter_.getIndexedFilter();\n if (changePath.isEmpty()) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n var newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n var childKey = changePath.getFront();\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n changePath.getLength() > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n var childChangePath = changePath.popFront();\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey == '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n var newViewCache = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n var oldEventSnap = oldViewCache.getEventCache();\n var newViewCache, newEventCache;\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (changePath.isEmpty()) {\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\n }\n else {\n var childKey = changePath.getFront();\n if (childKey === '.priority') {\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n var childChangePath = changePath.popFront();\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n var newChild = void 0;\n if (childChangePath.isEmpty()) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n var childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (childChangePath.getBack() === '.priority' &&\n childNode.getChild(childChangePath.parent()).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n var newEventSnap = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {string} childKey\n * @return {boolean}\n * @private\n */\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\n return viewCache.getEventCache().isCompleteForChild(childKey);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n var _this = this;\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!Node} node\n * @param {ImmutableTree.} merge\n * @return {!Node}\n * @private\n */\n ViewProcessor.prototype.applyMerge_ = function (node, merge) {\n merge.foreach(function (relativePath, childNode) {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n var _this = this;\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache\n .getServerCache()\n .getNode()\n .isEmpty() &&\n !viewCache.getServerCache().isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n var viewMergeTree;\n if (path.isEmpty()) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = ImmutableTree_1.ImmutableTree.Empty.setTree(path, changedChildren);\n }\n var serverNode = viewCache.getServerCache().getNode();\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\n if (serverNode.hasChild(childKey)) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\n var isUnknownDeepMerge = !viewCache.getServerCache().isCompleteForChild(childKey) &&\n childMergeTree.value == null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} ackPath\n * @param {!ImmutableTree} affectedTree\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writesCache.shadowingWrite(ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n var filterServerNode = viewCache.getServerCache().isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n var serverCache = viewCache.getServerCache();\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (ackPath.isEmpty()) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n var changedChildren_1 = ImmutableTree_1.ImmutableTree.Empty;\n serverCache.getNode().forEachChild(KeyIndex_1.KEY_INDEX, function (name, node) {\n changedChildren_1 = changedChildren_1.set(new Path_1.Path(name), node);\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n var changedChildren_2 = ImmutableTree_1.ImmutableTree.Empty;\n affectedTree.foreach(function (mergePath, value) {\n var serverCachePath = ackPath.child(mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\n var oldServerNode = viewCache.getServerCache();\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, accumulator);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\n var complete;\n if (writesCache.shadowingWrite(path) != null) {\n return viewCache;\n }\n else {\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n var oldEventCache = viewCache.getEventCache().getNode();\n var newEventCache = void 0;\n if (path.isEmpty() || path.getFront() === '.priority') {\n var newNode = void 0;\n if (viewCache.getServerCache().isFullyInitialized()) {\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n }\n else {\n var serverChildren = viewCache.getServerCache().getNode();\n util_1.assert(serverChildren instanceof ChildrenNode_1.ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\n }\n newNode = newNode;\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n var childKey = path.getFront();\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n if (newChild == null &&\n viewCache.getServerCache().isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\n }\n else if (viewCache\n .getEventCache()\n .getNode()\n .hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.getServerCache().isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n if (complete.isLeafNode()) {\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.getServerCache().isFullyInitialized() ||\n writesCache.shadowingWrite(Path_1.Path.Empty) != null;\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\n }\n };\n return ViewProcessor;\n}());\nexports.ViewProcessor = ViewProcessor;\n\n//# sourceMappingURL=ViewProcessor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ViewProcessor.js\n// module id = 93\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"./Change\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * @constructor\n */\nvar ChildChangeAccumulator = /** @class */ (function () {\n function ChildChangeAccumulator() {\n this.changeMap_ = {};\n }\n /**\n * @param {!Change} change\n */\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\n var type = change.type;\n var childKey /** @type {!string} */ = change.childName;\n util_2.assert(type == Change_1.Change.CHILD_ADDED ||\n type == Change_1.Change.CHILD_CHANGED ||\n type == Change_1.Change.CHILD_REMOVED, 'Only child changes supported for tracking');\n util_2.assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n var oldChange = util_1.safeGet(this.changeMap_, childKey);\n if (oldChange) {\n var oldType = oldChange.type;\n if (type == Change_1.Change.CHILD_ADDED && oldType == Change_1.Change.CHILD_REMOVED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n delete this.changeMap_[childKey];\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childRemovedChange(childKey, oldChange.oldSnap);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n this.changeMap_[childKey] = Change_1.Change.childAddedChange(childKey, change.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap);\n }\n else {\n throw util_2.assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap_[childKey] = change;\n }\n };\n /**\n * @return {!Array.}\n */\n ChildChangeAccumulator.prototype.getChanges = function () {\n return util_1.getValues(this.changeMap_);\n };\n return ChildChangeAccumulator;\n}());\nexports.ChildChangeAccumulator = ChildChangeAccumulator;\n\n//# sourceMappingURL=ChildChangeAccumulator.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ChildChangeAccumulator.js\n// module id = 94\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = require(\"./CacheNode\");\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n *\n * @private\n * @constructor\n * @implements CompleteChildSource\n */\nvar NoCompleteChildSource_ = /** @class */ (function () {\n function NoCompleteChildSource_() {\n }\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\n return null;\n };\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\n return null;\n };\n return NoCompleteChildSource_;\n}());\nexports.NoCompleteChildSource_ = NoCompleteChildSource_;\n/**\n * Singleton instance.\n * @const\n * @type {!CompleteChildSource}\n */\nexports.NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n *\n *\n * @implements CompleteChildSource\n */\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\n /**\n * @param {!WriteTreeRef} writes_\n * @param {!ViewCache} viewCache_\n * @param {?Node} optCompleteServerCache_\n */\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\n var node = this.viewCache_.getEventCache();\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n var serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode_1.CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.getServerCache();\n return this.writes_.calcCompleteChild(childKey, serverNode);\n }\n };\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\n var completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : this.viewCache_.getCompleteServerSnap();\n var nodes = this.writes_.calcIndexedSlice(completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n };\n return WriteTreeCompleteChildSource;\n}());\nexports.WriteTreeCompleteChildSource = WriteTreeCompleteChildSource;\n\n//# sourceMappingURL=CompleteChildSource.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/CompleteChildSource.js\n// module id = 95\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = require(\"../snap/Node\");\nvar Change_1 = require(\"./Change\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n * @constructor\n */\nvar EventGenerator = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n */\n function EventGenerator(query_) {\n this.query_ = query_;\n /**\n * @private\n * @type {!Index}\n */\n this.index_ = this.query_.getQueryParams().getIndex();\n }\n /**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n *\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {!Array.} eventRegistrations\n * @return {!Array.}\n */\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\n var _this = this;\n var events = [];\n var moves = [];\n changes.forEach(function (change) {\n if (change.type === Change_1.Change.CHILD_CHANGED &&\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(Change_1.Change.childMovedChange(change.childName, change.snapshotNode));\n }\n });\n this.generateEventsForType_(events, Change_1.Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.VALUE, changes, eventRegistrations, eventCache);\n return events;\n };\n /**\n * Given changes of a single change type, generate the corresponding events.\n *\n * @param {!Array.} events\n * @param {!string} eventType\n * @param {!Array.} changes\n * @param {!Array.} registrations\n * @param {!Node} eventCache\n * @private\n */\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\n var _this = this;\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\n filteredChanges.sort(this.compareChanges_.bind(this));\n filteredChanges.forEach(function (change) {\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\n registrations.forEach(function (registration) {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, _this.query_));\n }\n });\n });\n };\n /**\n * @param {!Change} change\n * @param {!Node} eventCache\n * @return {!Change}\n * @private\n */\n EventGenerator.prototype.materializeSingleChange_ = function (change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(\n /** @type {!string} */\n change.childName, change.snapshotNode, this.index_);\n return change;\n }\n };\n /**\n * @param {!Change} a\n * @param {!Change} b\n * @return {number}\n * @private\n */\n EventGenerator.prototype.compareChanges_ = function (a, b) {\n if (a.childName == null || b.childName == null) {\n throw util_1.assertionError('Should only compare child_ events.');\n }\n var aWrapped = new Node_1.NamedNode(a.childName, a.snapshotNode);\n var bWrapped = new Node_1.NamedNode(b.childName, b.snapshotNode);\n return this.index_.compare(aWrapped, bWrapped);\n };\n return EventGenerator;\n}());\nexports.EventGenerator = EventGenerator;\n\n//# sourceMappingURL=EventGenerator.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventGenerator.js\n// module id = 96\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar Path_1 = require(\"./util/Path\");\nvar CompoundWrite_1 = require(\"./CompoundWrite\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\n/**\n * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\n * and addMerge(), and removed with removeWrite().\n *\n * @constructor\n */\nvar WriteTree = /** @class */ (function () {\n function WriteTree() {\n /**\n * A tree tracking the result of applying all visible writes. This does not include transactions with\n * applyLocally=false or writes that are completely shadowed by other writes.\n *\n * @type {!CompoundWrite}\n * @private\n */\n this.visibleWrites_ = CompoundWrite_1.CompoundWrite.Empty;\n /**\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\n * used by transactions).\n *\n * @type {!Array.}\n * @private\n */\n this.allWrites_ = [];\n this.lastWriteId_ = -1;\n }\n /**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n * @param {!Path} path\n * @return {!WriteTreeRef}\n */\n WriteTree.prototype.childWrites = function (path) {\n return new WriteTreeRef(path, this);\n };\n /**\n * Record a new overwrite from user code.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} writeId\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\n */\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n this.allWrites_.push({\n path: path,\n snap: snap,\n writeId: writeId,\n visible: visible\n });\n if (visible) {\n this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\n }\n this.lastWriteId_ = writeId;\n };\n /**\n * Record a new merge from user code.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n */\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\n this.allWrites_.push({\n path: path,\n children: changedChildren,\n writeId: writeId,\n visible: true\n });\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\n this.lastWriteId_ = writeId;\n };\n /**\n * @param {!number} writeId\n * @return {?WriteRecord}\n */\n WriteTree.prototype.getWrite = function (writeId) {\n for (var i = 0; i < this.allWrites_.length; i++) {\n var record = this.allWrites_[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @param {!number} writeId\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\n WriteTree.prototype.removeWrite = function (writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n var _this = this;\n var idx = this.allWrites_.findIndex(function (s) {\n return s.writeId === writeId;\n });\n util_2.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n var writeToRemove = this.allWrites_[idx];\n this.allWrites_.splice(idx, 1);\n var removedWriteWasVisible = writeToRemove.visible;\n var removedWriteOverlapsWithOtherWrites = false;\n var i = this.allWrites_.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n var currentWrite = this.allWrites_[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n this.recordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (writeToRemove.path.contains(currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n this.resetTree_();\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\n }\n else {\n var children = writeToRemove.children;\n util_1.forEach(children, function (childName) {\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\n });\n }\n return true;\n }\n };\n /**\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\n * No server data is considered.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.getCompleteWriteData = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude An optional set to be excluded\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\n if (subMerge.isEmpty()) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !subMerge.hasCompleteWrite(Path_1.Path.Empty)) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return subMerge.apply(layeredCache);\n }\n }\n }\n else {\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n if (!includeHiddenWrites && merge.isEmpty()) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !merge.hasCompleteWrite(Path_1.Path.Empty)) {\n return null;\n }\n else {\n var filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (write.path.contains(treePath) || treePath.contains(write.path)));\n };\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return mergeAtPath.apply(layeredCache);\n }\n }\n }\n };\n /**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n *\n * @param {!Path} treePath\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\n var completeChildren = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var topLevelSet = this.visibleWrites_.getCompleteNode(treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childSnap) {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n var merge_1 = this.visibleWrites_.childCompoundWrite(treePath);\n completeServerChildren.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var node = merge_1\n .childCompoundWrite(new Path_1.Path(childName))\n .apply(childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n merge_1.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n merge.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n };\n /**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n *\n * @param {!Path} treePath\n * @param {!Path} childPath\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\n util_2.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n var path = treePath.child(childPath);\n if (this.visibleWrites_.hasCompleteWrite(path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n if (childMerge.isEmpty()) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return childMerge.apply(existingServerSnap.getChild(childPath));\n }\n }\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!Path} treePath\n * @param {!string} childKey\n * @param {!CacheNode} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\n var path = treePath.child(childKey);\n var shadowingNode = this.visibleWrites_.getCompleteNode(path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n return childMerge.apply(existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.shadowingWrite = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\n var toIterate;\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n var shadowingNode = merge.getCompleteNode(Path_1.Path.Empty);\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = merge.apply(completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n var nodes = [];\n var cmp = index.getCompare();\n var iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n var next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n };\n /**\n * @param {!WriteRecord} writeRecord\n * @param {!Path} path\n * @return {boolean}\n * @private\n */\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\n if (writeRecord.snap) {\n return writeRecord.path.contains(path);\n }\n else {\n // findKey can return undefined, so use !! to coerce to boolean\n return !!util_1.findKey(writeRecord.children, function (childSnap, childName) {\n return writeRecord.path.child(childName).contains(path);\n });\n }\n };\n /**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n * @private\n */\n WriteTree.prototype.resetTree_ = function () {\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path_1.Path.Empty);\n if (this.allWrites_.length > 0) {\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\n }\n else {\n this.lastWriteId_ = -1;\n }\n };\n /**\n * The default filter used when constructing the tree. Keep everything that's visible.\n *\n * @param {!WriteRecord} write\n * @return {boolean}\n * @private\n */\n WriteTree.DefaultFilter_ = function (write) {\n return write.visible;\n };\n /**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n *\n * @param {!Array.} writes\n * @param {!function(!WriteRecord):boolean} filter\n * @param {!Path} treeRoot\n * @return {!CompoundWrite}\n * @private\n */\n WriteTree.layerTree_ = function (writes, filter, treeRoot) {\n var compoundWrite = CompoundWrite_1.CompoundWrite.Empty;\n for (var i = 0; i < writes.length; ++i) {\n var write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n var writePath = write.path;\n var relativePath = void 0;\n if (write.snap) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, write.snap.getChild(relativePath));\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else if (write.children) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n if (relativePath.isEmpty()) {\n compoundWrite = compoundWrite.addWrites(Path_1.Path.Empty, write.children);\n }\n else {\n var child = util_1.safeGet(write.children, relativePath.getFront());\n if (child) {\n // There exists a child in this node that matches the root path\n var deepNode = child.getChild(relativePath.popFront());\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, deepNode);\n }\n }\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else {\n throw util_2.assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n };\n return WriteTree;\n}());\nexports.WriteTree = WriteTree;\n/**\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\n * just proxy to the underlying WriteTree.\n *\n * @constructor\n */\nvar WriteTreeRef = /** @class */ (function () {\n /**\n * @param {!Path} path\n * @param {!WriteTree} writeTree\n */\n function WriteTreeRef(path, writeTree) {\n this.treePath_ = path;\n this.writeTree_ = writeTree;\n }\n /**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude Optional writes to exclude.\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return this.writeTree_.calcCompleteEventCache(this.treePath_, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n };\n /**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\n return this.writeTree_.calcCompleteEventChildren(this.treePath_, completeServerChildren);\n };\n /**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n * @param {!Path} path\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.treePath_, path, existingEventSnap, existingServerSnap);\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTreeRef.prototype.shadowingWrite = function (path) {\n return this.writeTree_.shadowingWrite(this.treePath_.child(path));\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n *\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\n return this.writeTree_.calcIndexedSlice(this.treePath_, completeServerData, startPost, count, reverse, index);\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!string} childKey\n * @param {!CacheNode} existingServerCache\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\n };\n /**\n * Return a WriteTreeRef for a child.\n *\n * @param {string} childName\n * @return {!WriteTreeRef}\n */\n WriteTreeRef.prototype.child = function (childName) {\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\n };\n return WriteTreeRef;\n}());\nexports.WriteTreeRef = WriteTreeRef;\n\n//# sourceMappingURL=WriteTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/WriteTree.js\n// module id = 97\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ImmutableTree_1 = require(\"./util/ImmutableTree\");\nvar Path_1 = require(\"./util/Path\");\nvar util_1 = require(\"@firebase/util\");\nvar Node_1 = require(\"./snap/Node\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n *\n * @constructor\n * @param {!ImmutableTree.} writeTree\n */\nvar CompoundWrite = /** @class */ (function () {\n function CompoundWrite(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n /**\n * @param {!Path} path\n * @param {!Node} node\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrite = function (path, node) {\n if (path.isEmpty()) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(node));\n }\n else {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n var rootMostPath = rootmost.path;\n var value = rootmost.value;\n var relativePath = Path_1.Path.relativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\n }\n else {\n var subtree = new ImmutableTree_1.ImmutableTree(node);\n var newWriteTree = this.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n };\n /**\n * @param {!Path} path\n * @param {!Object.} updates\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrites = function (path, updates) {\n var newWrite = this;\n util_1.forEach(updates, function (childKey, node) {\n newWrite = newWrite.addWrite(path.child(childKey), node);\n });\n return newWrite;\n };\n /**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param {!Path} path The path at which a write and all deeper writes should be removed\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\n */\n CompoundWrite.prototype.removeWrite = function (path) {\n if (path.isEmpty()) {\n return CompoundWrite.Empty;\n }\n else {\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree_1.ImmutableTree.Empty);\n return new CompoundWrite(newWriteTree);\n }\n };\n /**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param {!Path} path The path to check for\n * @return {boolean} Whether there is a complete write at that path\n */\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\n return this.getCompleteNode(path) != null;\n };\n /**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param {!Path} path The path to get a complete write\n * @return {?Node} The node if complete at that path, or null otherwise.\n */\n CompoundWrite.prototype.getCompleteNode = function (path) {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return this.writeTree_\n .get(rootmost.path)\n .getChild(Path_1.Path.relativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n };\n /**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @return {!Array.} A list of all complete children.\n */\n CompoundWrite.prototype.getCompleteChildren = function () {\n var children = [];\n var node = this.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n children.push(new Node_1.NamedNode(childName, childNode));\n });\n }\n }\n else {\n this.writeTree_.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value != null) {\n children.push(new Node_1.NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n };\n /**\n * @param {!Path} path\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.childCompoundWrite = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else {\n var shadowingNode = this.getCompleteNode(path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(this.writeTree_.subtree(path));\n }\n }\n };\n /**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @return {boolean} Whether this CompoundWrite is empty\n */\n CompoundWrite.prototype.isEmpty = function () {\n return this.writeTree_.isEmpty();\n };\n /**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param {!Node} node The node to apply this CompoundWrite to\n * @return {!Node} The node with all writes applied\n */\n CompoundWrite.prototype.apply = function (node) {\n return CompoundWrite.applySubtreeWrite_(Path_1.Path.Empty, this.writeTree_, node);\n };\n /**\n * @type {!CompoundWrite}\n */\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree_1.ImmutableTree(null));\n /**\n * @param {!Path} relativePath\n * @param {!ImmutableTree.} writeTree\n * @param {!Node} node\n * @return {!Node}\n * @private\n */\n CompoundWrite.applySubtreeWrite_ = function (relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n var priorityWrite_1 = null;\n writeTree.children.inorderTraversal(function (childKey, childTree) {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n util_2.assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite_1 = childTree.value;\n }\n else {\n node = CompoundWrite.applySubtreeWrite_(relativePath.child(childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\n node = node.updateChild(relativePath.child('.priority'), priorityWrite_1);\n }\n return node;\n }\n };\n return CompoundWrite;\n}());\nexports.CompoundWrite = CompoundWrite;\n\n//# sourceMappingURL=CompoundWrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/CompoundWrite.js\n// module id = 98\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n *\n * @constructor\n */\nvar SnapshotHolder = /** @class */ (function () {\n function SnapshotHolder() {\n this.rootNode_ = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n SnapshotHolder.prototype.getNode = function (path) {\n return this.rootNode_.getChild(path);\n };\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n };\n return SnapshotHolder;\n}());\nexports.SnapshotHolder = SnapshotHolder;\n\n//# sourceMappingURL=SnapshotHolder.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SnapshotHolder.js\n// module id = 99\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util/util\");\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nvar AuthTokenProvider = /** @class */ (function () {\n /**\n * @param {!FirebaseApp} app_\n */\n function AuthTokenProvider(app_) {\n this.app_ = app_;\n }\n /**\n * @param {boolean} forceRefresh\n * @return {!Promise}\n */\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\n return this.app_['INTERNAL']['getToken'](forceRefresh).then(null, \n // .catch\n function (error) {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n util_1.log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n };\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n this.app_['INTERNAL']['addAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\n this.app_['INTERNAL']['removeAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\n var errorMessage = 'Provided authentication credentials for the app named \"' +\n this.app_.name +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n util_1.warn(errorMessage);\n };\n return AuthTokenProvider;\n}());\nexports.AuthTokenProvider = AuthTokenProvider;\n\n//# sourceMappingURL=AuthTokenProvider.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/AuthTokenProvider.js\n// module id = 100\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Tracks a collection of stats.\n *\n * @constructor\n */\nvar StatsCollection = /** @class */ (function () {\n function StatsCollection() {\n this.counters_ = {};\n }\n StatsCollection.prototype.incrementCounter = function (name, amount) {\n if (amount === void 0) { amount = 1; }\n if (!util_2.contains(this.counters_, name))\n this.counters_[name] = 0;\n this.counters_[name] += amount;\n };\n StatsCollection.prototype.get = function () {\n return util_1.deepCopy(this.counters_);\n };\n return StatsCollection;\n}());\nexports.StatsCollection = StatsCollection;\n\n//# sourceMappingURL=StatsCollection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsCollection.js\n// module id = 101\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar StatsListener_1 = require(\"./StatsListener\");\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n/**\n * @constructor\n */\nvar StatsReporter = /** @class */ (function () {\n /**\n * @param collection\n * @param server_\n */\n function StatsReporter(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener_1.StatsListener(collection);\n var timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n StatsReporter.prototype.includeStat = function (stat) {\n this.statsToReport_[stat] = true;\n };\n StatsReporter.prototype.reportStats_ = function () {\n var _this = this;\n var stats = this.statsListener_.get();\n var reportedStats = {};\n var haveStatsToReport = false;\n util_1.forEach(stats, function (stat, value) {\n if (value > 0 && util_1.contains(_this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n };\n return StatsReporter;\n}());\nexports.StatsReporter = StatsReporter;\n\n//# sourceMappingURL=StatsReporter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsReporter.js\n// module id = 102\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util/util\");\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n * @constructor\n */\nvar EventQueue = /** @class */ (function () {\n function EventQueue() {\n /**\n * @private\n * @type {!Array.}\n */\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n * @private\n * @type {!number}\n */\n this.recursionDepth_ = 0;\n }\n /**\n * @param {!Array.} eventDataList The new events to queue.\n */\n EventQueue.prototype.queueEvents = function (eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n var currList = null;\n for (var i = 0; i < eventDataList.length; i++) {\n var eventData = eventDataList[i];\n var eventPath = eventData.getPath();\n if (currList !== null && !eventPath.equals(currList.getPath())) {\n this.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = new EventList(eventPath);\n }\n currList.add(eventData);\n }\n if (currList) {\n this.eventLists_.push(currList);\n }\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param {!Path} path The path to raise events for.\n * @param {!Array.} eventDataList The new events to raise.\n */\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.equals(path);\n });\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param {!Path} changedPath The path to raise events for.\n * @param {!Array.} eventDataList The events to raise\n */\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\n });\n };\n /**\n * @param {!function(!Path):boolean} predicate\n * @private\n */\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\n this.recursionDepth_++;\n var sentAll = true;\n for (var i = 0; i < this.eventLists_.length; i++) {\n var eventList = this.eventLists_[i];\n if (eventList) {\n var eventPath = eventList.getPath();\n if (predicate(eventPath)) {\n this.eventLists_[i].raise();\n this.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n this.eventLists_ = [];\n }\n this.recursionDepth_--;\n };\n return EventQueue;\n}());\nexports.EventQueue = EventQueue;\n/**\n * @param {!Path} path\n * @constructor\n */\nvar EventList = /** @class */ (function () {\n function EventList(path_) {\n this.path_ = path_;\n /**\n * @type {!Array.}\n * @private\n */\n this.events_ = [];\n }\n /**\n * @param {!Event} eventData\n */\n EventList.prototype.add = function (eventData) {\n this.events_.push(eventData);\n };\n /**\n * Iterates through the list and raises each event\n */\n EventList.prototype.raise = function () {\n for (var i = 0; i < this.events_.length; i++) {\n var eventData = this.events_[i];\n if (eventData !== null) {\n this.events_[i] = null;\n var eventFn = eventData.getEventRunner();\n if (util_1.logger) {\n util_1.log('event: ' + eventData.toString());\n }\n util_1.exceptionGuard(eventFn);\n }\n }\n };\n /**\n * @return {!Path}\n */\n EventList.prototype.getPath = function () {\n return this.path_;\n };\n return EventList;\n}());\nexports.EventList = EventList;\n\n//# sourceMappingURL=EventQueue.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventQueue.js\n// module id = 103\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar EventEmitter_1 = require(\"./EventEmitter\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * @extends {EventEmitter}\n */\nvar VisibilityMonitor = /** @class */ (function (_super) {\n tslib_1.__extends(VisibilityMonitor, _super);\n function VisibilityMonitor() {\n var _this = _super.call(this, ['visible']) || this;\n var hidden;\n var visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n _this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, function () {\n var visible = !document[hidden];\n if (visible !== _this.visible_) {\n _this.visible_ = visible;\n _this.trigger('visible', visible);\n }\n }, false);\n }\n return _this;\n }\n VisibilityMonitor.getInstance = function () {\n return new VisibilityMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n };\n return VisibilityMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.VisibilityMonitor = VisibilityMonitor;\n\n//# sourceMappingURL=VisibilityMonitor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/VisibilityMonitor.js\n// module id = 104\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"@firebase/util\");\nvar EventEmitter_1 = require(\"./EventEmitter\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n *\n * @extends {EventEmitter}\n */\nvar OnlineMonitor = /** @class */ (function (_super) {\n tslib_1.__extends(OnlineMonitor, _super);\n function OnlineMonitor() {\n var _this = _super.call(this, ['online']) || this;\n _this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !util_2.isMobileCordova()) {\n window.addEventListener('online', function () {\n if (!_this.online_) {\n _this.online_ = true;\n _this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', function () {\n if (_this.online_) {\n _this.online_ = false;\n _this.trigger('online', false);\n }\n }, false);\n }\n return _this;\n }\n OnlineMonitor.getInstance = function () {\n return new OnlineMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n };\n /**\n * @return {boolean}\n */\n OnlineMonitor.prototype.currentlyOnline = function () {\n return this.online_;\n };\n return OnlineMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.OnlineMonitor = OnlineMonitor;\n\n//# sourceMappingURL=OnlineMonitor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/OnlineMonitor.js\n// module id = 105\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserPollConnection_1 = require(\"./BrowserPollConnection\");\nvar WebSocketConnection_1 = require(\"./WebSocketConnection\");\nvar util_1 = require(\"../core/util/util\");\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n * @constructor\n */\nvar TransportManager = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\n */\n function TransportManager(repoInfo) {\n this.initTransports_(repoInfo);\n }\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\n /**\n * @const\n * @type {!Array.}\n */\n get: function () {\n return [BrowserPollConnection_1.BrowserPollConnection, WebSocketConnection_1.WebSocketConnection];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {!RepoInfo} repoInfo\n * @private\n */\n TransportManager.prototype.initTransports_ = function (repoInfo) {\n var isWebSocketsAvailable = WebSocketConnection_1.WebSocketConnection && WebSocketConnection_1.WebSocketConnection['isAvailable']();\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection_1.WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable)\n util_1.warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection_1.WebSocketConnection];\n }\n else {\n var transports_1 = (this.transports_ = []);\n util_1.each(TransportManager.ALL_TRANSPORTS, function (i, transport) {\n if (transport && transport['isAvailable']()) {\n transports_1.push(transport);\n }\n });\n }\n };\n /**\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\n * initial transport to use\n */\n TransportManager.prototype.initialTransport = function () {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n };\n /**\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\n * transport, or null\n */\n TransportManager.prototype.upgradeTransport = function () {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n };\n return TransportManager;\n}());\nexports.TransportManager = TransportManager;\n\n//# sourceMappingURL=TransportManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/TransportManager.js\n// module id = 106\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../../core/util/util\");\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n * @constructor\n */\nvar PacketReceiver = /** @class */ (function () {\n /**\n * @param onMessage_\n */\n function PacketReceiver(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n };\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n * @param {number} requestNum\n * @param {Array} data\n */\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\n var _this = this;\n this.pendingResponses[requestNum] = data;\n var _loop_1 = function () {\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\n delete this_1.pendingResponses[this_1.currentResponseNum];\n var _loop_2 = function (i) {\n if (toProcess[i]) {\n util_1.exceptionGuard(function () {\n _this.onMessage_(toProcess[i]);\n });\n }\n };\n for (var i = 0; i < toProcess.length; ++i) {\n _loop_2(i);\n }\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\n if (this_1.onClose) {\n this_1.onClose();\n this_1.onClose = null;\n }\n return \"break\";\n }\n this_1.currentResponseNum++;\n };\n var this_1 = this;\n while (this.pendingResponses[this.currentResponseNum]) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n return PacketReceiver;\n}());\nexports.PacketReceiver = PacketReceiver;\n\n//# sourceMappingURL=PacketReceiver.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/polling/PacketReceiver.js\n// module id = 107\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar ServerActions_1 = require(\"./ServerActions\");\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nvar ReadonlyRestClient = /** @class */ (function (_super) {\n tslib_1.__extends(ReadonlyRestClient, _super);\n /**\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param {AuthTokenProvider} authTokenProvider_\n * @implements {ServerActions}\n */\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n /** @private {function(...[*])} */\n _this.log_ = util_2.logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n *\n * @private {!Object.}\n */\n _this.listens_ = {};\n return _this;\n }\n ReadonlyRestClient.prototype.reportStats = function (stats) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {!Query} query\n * @param {?number=} tag\n * @return {string}\n * @private\n */\n ReadonlyRestClient.getListenId_ = function (query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n util_1.assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\n return query.path.toString();\n }\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var _this = this;\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\n // Mark this listener so we can tell if it's removed.\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n var thisListen = {};\n this.listens_[listenId] = thisListen;\n var queryStringParamaters = query\n .getQueryParams()\n .toRestQueryStringParameters();\n this.restRequest_(pathString + '.json', queryStringParamaters, function (error, result) {\n var data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (util_4.safeGet(_this.listens_, listenId) === thisListen) {\n var status_1;\n if (!error) {\n status_1 = 'ok';\n }\n else if (error == 401) {\n status_1 = 'permission_denied';\n }\n else {\n status_1 = 'rest_error:' + error;\n }\n onComplete(status_1, null);\n }\n });\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\n // no-op since we just always call getToken.\n };\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n *\n * @param {!string} pathString\n * @param {!Object.} queryStringParameters\n * @param {?function(?number, *=)} callback\n * @private\n */\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\n var _this = this;\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\n queryStringParameters['format'] = 'export';\n this.authTokenProvider_\n .getToken(/*forceRefresh=*/ false)\n .then(function (authTokenData) {\n var authToken = authTokenData && authTokenData.accessToken;\n if (authToken) {\n queryStringParameters['auth'] = authToken;\n }\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\n _this.repoInfo_.host +\n pathString +\n '?' +\n util_5.querystring(queryStringParameters);\n _this.log_('Sending REST request for ' + url);\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (callback && xhr.readyState === 4) {\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n var res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = util_3.jsonEval(xhr.responseText);\n }\n catch (e) {\n util_2.warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n util_2.warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n };\n return ReadonlyRestClient;\n}(ServerActions_1.ServerActions));\nexports.ReadonlyRestClient = ReadonlyRestClient;\n\n//# sourceMappingURL=ReadonlyRestClient.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/ReadonlyRestClient.js\n// module id = 108\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar KeyIndex_1 = require(\"../snap/indexes/KeyIndex\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\nvar ValueIndex_1 = require(\"../snap/indexes/ValueIndex\");\nvar PathIndex_1 = require(\"../snap/indexes/PathIndex\");\nvar IndexedFilter_1 = require(\"./filter/IndexedFilter\");\nvar LimitedFilter_1 = require(\"./filter/LimitedFilter\");\nvar RangedFilter_1 = require(\"./filter/RangedFilter\");\nvar util_3 = require(\"@firebase/util\");\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n * @constructor\n */\nvar QueryParams = /** @class */ (function () {\n function QueryParams() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PriorityIndex_1.PRIORITY_INDEX;\n }\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasStart = function () {\n return this.startSet_;\n };\n /**\n * @return {boolean} True if it would return from left.\n */\n QueryParams.prototype.isViewFromLeft = function () {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\n }\n };\n /**\n * Only valid to call if hasStart() returns true\n * @return {*}\n */\n QueryParams.prototype.getIndexStartValue = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n };\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexStartName = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return util_2.MIN_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasEnd = function () {\n return this.endSet_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * @return {*}\n */\n QueryParams.prototype.getIndexEndValue = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexEndName = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return util_2.MAX_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasLimit = function () {\n return this.limitSet_;\n };\n /**\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\n */\n QueryParams.prototype.hasAnchoredLimit = function () {\n return this.limitSet_ && this.viewFrom_ !== '';\n };\n /**\n * Only valid to call if hasLimit() returns true\n * @return {!number}\n */\n QueryParams.prototype.getLimit = function () {\n util_1.assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n };\n /**\n * @return {!Index}\n */\n QueryParams.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @return {!QueryParams}\n * @private\n */\n QueryParams.prototype.copy_ = function () {\n var copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limit = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToFirst = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToLast = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.startAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.startSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.endAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.endSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n };\n /**\n * @param {!Index} index\n * @return {!QueryParams}\n */\n QueryParams.prototype.orderBy = function (index) {\n var newParams = this.copy_();\n newParams.index_ = index;\n return newParams;\n };\n /**\n * @return {!Object}\n */\n QueryParams.prototype.getQueryObject = function () {\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\n var obj = {};\n if (this.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\n if (this.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\n }\n }\n if (this.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\n if (this.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\n }\n }\n if (this.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\n var viewFrom = this.viewFrom_;\n if (viewFrom === '') {\n if (this.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (this.index_ !== PriorityIndex_1.PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\n }\n return obj;\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.loadsAllData = function () {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.isDefault = function () {\n return this.loadsAllData() && this.index_ == PriorityIndex_1.PRIORITY_INDEX;\n };\n /**\n * @return {!NodeFilter}\n */\n QueryParams.prototype.getNodeFilter = function () {\n if (this.loadsAllData()) {\n return new IndexedFilter_1.IndexedFilter(this.getIndex());\n }\n else if (this.hasLimit()) {\n return new LimitedFilter_1.LimitedFilter(this);\n }\n else {\n return new RangedFilter_1.RangedFilter(this);\n }\n };\n /**\n * Returns a set of REST query string parameters representing this query.\n *\n * @return {!Object.} query string parameters\n */\n QueryParams.prototype.toRestQueryStringParameters = function () {\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\n var qs = {};\n if (this.isDefault()) {\n return qs;\n }\n var orderBy;\n if (this.index_ === PriorityIndex_1.PRIORITY_INDEX) {\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\n }\n else if (this.index_ === ValueIndex_1.VALUE_INDEX) {\n orderBy = REST_CONSTANTS.VALUE_INDEX;\n }\n else if (this.index_ === KeyIndex_1.KEY_INDEX) {\n orderBy = REST_CONSTANTS.KEY_INDEX;\n }\n else {\n util_1.assert(this.index_ instanceof PathIndex_1.PathIndex, 'Unrecognized index type!');\n orderBy = this.index_.toString();\n }\n qs[REST_CONSTANTS.ORDER_BY] = util_3.stringify(orderBy);\n if (this.startSet_) {\n qs[REST_CONSTANTS.START_AT] = util_3.stringify(this.indexStartValue_);\n if (this.startNameSet_) {\n qs[REST_CONSTANTS.START_AT] += ',' + util_3.stringify(this.indexStartName_);\n }\n }\n if (this.endSet_) {\n qs[REST_CONSTANTS.END_AT] = util_3.stringify(this.indexEndValue_);\n if (this.endNameSet_) {\n qs[REST_CONSTANTS.END_AT] += ',' + util_3.stringify(this.indexEndName_);\n }\n }\n if (this.limitSet_) {\n if (this.isViewFromLeft()) {\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\n }\n else {\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\n }\n }\n return qs;\n };\n /**\n * Wire Protocol Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\n INDEX_START_VALUE: 'sp',\n INDEX_START_NAME: 'sn',\n INDEX_END_VALUE: 'ep',\n INDEX_END_NAME: 'en',\n LIMIT: 'l',\n VIEW_FROM: 'vf',\n VIEW_FROM_LEFT: 'l',\n VIEW_FROM_RIGHT: 'r',\n INDEX: 'i'\n };\n /**\n * REST Query Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.REST_QUERY_CONSTANTS_ = {\n ORDER_BY: 'orderBy',\n PRIORITY_INDEX: '$priority',\n VALUE_INDEX: '$value',\n KEY_INDEX: '$key',\n START_AT: 'startAt',\n END_AT: 'endAt',\n LIMIT_TO_FIRST: 'limitToFirst',\n LIMIT_TO_LAST: 'limitToLast'\n };\n /**\n * Default, empty query parameters\n * @type {!QueryParams}\n * @const\n */\n QueryParams.DEFAULT = new QueryParams();\n return QueryParams;\n}());\nexports.QueryParams = QueryParams;\n\n//# sourceMappingURL=QueryParams.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/QueryParams.js\n// module id = 109\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RangedFilter_1 = require(\"./RangedFilter\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\nvar Node_1 = require(\"../../snap/Node\");\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"../Change\");\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar LimitedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function LimitedFilter(params) {\n this.rangedFilter_ = new RangedFilter_1.RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n }\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n var filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n var iterator = void 0;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n var count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n var next = iterator.getNext();\n var inRange = void 0;\n if (this.reverse_) {\n inRange =\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\n }\n else {\n inRange =\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\n }\n if (inRange) {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n else {\n // if we have reached the end post, we cannot keep adding elemments\n break;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var startPost = void 0;\n var endPost = void 0;\n var cmp = void 0;\n var iterator = void 0;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n startPost = this.rangedFilter_.getEndPost();\n endPost = this.rangedFilter_.getStartPost();\n var indexCompare_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCompare_1(b, a); };\n }\n else {\n iterator = filtered.getIterator(this.index_);\n startPost = this.rangedFilter_.getStartPost();\n endPost = this.rangedFilter_.getEndPost();\n cmp = this.index_.getCompare();\n }\n var count = 0;\n var foundStartPost = false;\n while (iterator.hasNext()) {\n var next = iterator.getNext();\n if (!foundStartPost && cmp(startPost, next) <= 0) {\n // start adding\n foundStartPost = true;\n }\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndexedFilter = function () {\n return this.rangedFilter_.getIndexedFilter();\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!Node} snap\n * @param {string} childKey\n * @param {!Node} childSnap\n * @param {!CompleteChildSource} source\n * @param {?ChildChangeAccumulator} changeAccumulator\n * @return {!Node}\n * @private\n */\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n var cmp;\n if (this.reverse_) {\n var indexCmp_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCmp_1(b, a); };\n }\n else {\n cmp = this.index_.getCompare();\n }\n var oldEventCache = snap;\n util_1.assert(oldEventCache.numChildren() == this.limit_, '');\n var newChildNamedNode = new Node_1.NamedNode(childKey, childSnap);\n var windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name == childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childChangedChange(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(childKey, oldChildSnap));\n }\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n };\n return LimitedFilter;\n}());\nexports.LimitedFilter = LimitedFilter;\n\n//# sourceMappingURL=LimitedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/LimitedFilter.js\n// module id = 110\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Reference_1 = require(\"../api/Reference\");\nvar DataSnapshot_1 = require(\"../api/DataSnapshot\");\nvar Path_1 = require(\"./util/Path\");\nvar Tree_1 = require(\"./util/Tree\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar util_2 = require(\"./util/util\");\nvar ServerValues_1 = require(\"./util/ServerValues\");\nvar validation_1 = require(\"./util/validation\");\nvar util_3 = require(\"@firebase/util\");\nvar nodeFromJSON_1 = require(\"./snap/nodeFromJSON\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar Repo_1 = require(\"./Repo\");\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\n// For now it's part of Repo, but in its own file.\n/**\n * @enum {number}\n */\nvar TransactionStatus;\n(function (TransactionStatus) {\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\n // mismatched hash.\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\n // or rejected yet).\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\n // removed when we get a chance to prune completed ones.\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\n // If it comes back as unsuccessful, we'll abort it.\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\n // Temporary state used to mark transactions that need to be aborted.\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\n})(TransactionStatus = exports.TransactionStatus || (exports.TransactionStatus = {}));\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\n * @type {number}\n * @const\n * @private\n */\nRepo_1.Repo.MAX_TRANSACTION_RETRIES_ = 25;\n/**\n * Setup the transaction data structures\n * @private\n */\nRepo_1.Repo.prototype.transactions_init_ = function () {\n /**\n * Stores queues of outstanding transactions for Firebase locations.\n *\n * @type {!Tree.>}\n * @private\n */\n this.transactionQueueTree_ = new Tree_1.Tree();\n};\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\n *\n * @param {!Path} path Path at which to do transaction.\n * @param {function(*):*} transactionUpdate Update callback.\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\n */\nRepo_1.Repo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\n this.log_('transaction on ' + path);\n // Add a watch to make sure we get server updates.\n var valueCallback = function () { };\n var watchRef = new Reference_1.Reference(this, path);\n watchRef.on('value', valueCallback);\n var unwatcher = function () {\n watchRef.off('value', valueCallback);\n };\n // Initialize transaction.\n var transaction = {\n path: path,\n update: transactionUpdate,\n onComplete: onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out which one goes first.\n order: util_2.LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally: applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher: unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n var currentState = this.getLatestState_(path);\n transaction.currentInputSnapshot = currentState;\n var newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n // We just set the input snapshot, so this cast should be safe\n var snapshot = new DataSnapshot_1.DataSnapshot(transaction.currentInputSnapshot, new Reference_1.Reference(this, transaction.path), PriorityIndex_1.PRIORITY_INDEX);\n transaction.onComplete(null, false, snapshot);\n }\n }\n else {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = TransactionStatus.RUN;\n var queueNode = this.transactionQueueTree_.subTree(path);\n var nodeQueue = queueNode.getValue() || [];\n nodeQueue.push(transaction);\n queueNode.setValue(nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\n // start new transactions from the event callbacks.\n var priorityForNode = void 0;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n util_3.contains(newVal, '.priority')) {\n priorityForNode = util_3.safeGet(newVal, '.priority');\n util_1.assert(validation_1.isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, priorityForNode);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n this.sendReadyTransactions_();\n }\n};\n/**\n * @param {!Path} path\n * @param {Array.=} excludeSets A specific set to exclude\n * @return {Node}\n * @private\n */\nRepo_1.Repo.prototype.getLatestState_ = function (path, excludeSets) {\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n};\n/**\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\n * complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively with a particular\n * transactionQueueTree node to recurse through the tree.\n *\n * @param {Tree.>=} node transactionQueueTree node to start at.\n * @private\n */\nRepo_1.Repo.prototype.sendReadyTransactions_ = function (node) {\n var _this = this;\n if (node === void 0) { node = this.transactionQueueTree_; }\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n this.pruneCompletedTransactionsBelowNode_(node);\n }\n if (node.getValue() !== null) {\n var queue = this.buildTransactionQueue_(node);\n util_1.assert(queue.length > 0, 'Sending zero length transaction queue');\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n this.sendTransactionQueue_(node.path(), queue);\n }\n }\n else if (node.hasChildren()) {\n node.forEachChild(function (childNode) {\n _this.sendReadyTransactions_(childNode);\n });\n }\n};\n/**\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\n *\n * @param {!Path} path The location of the queue.\n * @param {!Array.} queue Queue of transactions under the specified location.\n * @private\n */\nRepo_1.Repo.prototype.sendTransactionQueue_ = function (path, queue) {\n var _this = this;\n // Mark transactions as sent and increment retry count!\n var setsToIgnore = queue.map(function (txn) {\n return txn.currentWriteId;\n });\n var latestState = this.getLatestState_(path, setsToIgnore);\n var snapToSend = latestState;\n var latestHash = latestState.hash();\n for (var i = 0; i < queue.length; i++) {\n var txn = queue[i];\n util_1.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = TransactionStatus.SENT;\n txn.retryCount++;\n var relativePath = Path_1.Path.relativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /**@type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n var dataToSend = snapToSend.val(true);\n var pathToSend = path;\n // Send the put.\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\n _this.log_('transaction put response', {\n path: pathToSend.toString(),\n status: status\n });\n var events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.COMPLETED;\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\n var node = queue[i].currentOutputSnapshotResolved;\n var ref = new Reference_1.Reference(_this, queue[i].path);\n var snapshot = new DataSnapshot_1.DataSnapshot(node, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\n // There may be pending transactions that we can now send.\n _this.sendReadyTransactions_();\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\n // Finally, trigger onComplete callbacks.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT)\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n else\n queue[i].status = TransactionStatus.RUN;\n }\n }\n else {\n util_2.warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n queue[i].abortReason = status;\n }\n }\n _this.rerunTransactions_(path);\n }\n }, latestHash);\n};\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\n * be raised for.\n *\n * @param {!Path} changedPath The path in mergedData that changed.\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactions_ = function (changedPath) {\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\n var path = rootMostTransactionNode.path();\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\n this.rerunTransactionQueue_(queue, path);\n return path;\n};\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\n *\n * @param {Array.} queue The queue of transactions to run.\n * @param {!Path} path The path the queue is for.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactionQueue_ = function (queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n var events = [];\n // Ignore all of the sets we're going to re-run.\n var txnsToRerun = queue.filter(function (q) {\n return q.status === TransactionStatus.RUN;\n });\n var setsToIgnore = txnsToRerun.map(function (q) {\n return q.currentWriteId;\n });\n for (var i = 0; i < queue.length; i++) {\n var transaction = queue[i];\n var relativePath = Path_1.Path.relativePath(path, transaction.path);\n var abortTransaction = false, abortReason = void 0;\n util_1.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else if (transaction.status === TransactionStatus.RUN) {\n if (transaction.retryCount >= Repo_1.Repo.MAX_TRANSACTION_RETRIES_) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n var newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n var newDataNode = nodeFromJSON_1.nodeFromJSON(newData);\n var hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n util_3.contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n var oldWriteId = transaction.currentWriteId;\n var serverValues = this.generateServerValues();\n var newNodeResolved = ServerValues_1.resolveDeferredValueSnapshot(newDataNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = this.getNextWriteId_();\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n }\n }\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = TransactionStatus.COMPLETED;\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\n // So defer the unwatcher until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n var ref = new Reference_1.Reference(this, queue[i].path);\n // We set this field immediately, so it's safe to cast to an actual snapshot\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\n var snapshot = new DataSnapshot_1.DataSnapshot(lastInput, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\n }\n else {\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n this.sendReadyTransactions_();\n};\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\n * the node for the given path if there are no pending transactions on any ancestor.\n *\n * @param {!Path} path The location to start at.\n * @return {!Tree.>} The rootmost node with a transaction.\n * @private\n */\nRepo_1.Repo.prototype.getAncestorTransactionNode_ = function (path) {\n var front;\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\n var transactionNode = this.transactionQueueTree_;\n while ((front = path.getFront()) !== null &&\n transactionNode.getValue() === null) {\n transactionNode = transactionNode.subTree(front);\n path = path.popFront();\n }\n return transactionNode;\n};\n/**\n * Builds the queue of all transactions at or below the specified transactionNode.\n *\n * @param {!Tree.>} transactionNode\n * @return {Array.} The generated queue.\n * @private\n */\nRepo_1.Repo.prototype.buildTransactionQueue_ = function (transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n var transactionQueue = [];\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort(function (a, b) {\n return a.order - b.order;\n });\n return transactionQueue;\n};\n/**\n * @param {!Tree.>} node\n * @param {Array.} queue\n * @private\n */\nRepo_1.Repo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\n var _this = this;\n var nodeQueue = node.getValue();\n if (nodeQueue !== null) {\n for (var i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n node.forEachChild(function (child) {\n _this.aggregateTransactionQueuesForNode_(child, queue);\n });\n};\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n *\n * @param {!Tree.>} node\n * @private\n */\nRepo_1.Repo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\n var _this = this;\n var queue = node.getValue();\n if (queue) {\n var to = 0;\n for (var from = 0; from < queue.length; from++) {\n if (queue[from].status !== TransactionStatus.COMPLETED) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n node.setValue(queue.length > 0 ? queue : null);\n }\n node.forEachChild(function (childNode) {\n _this.pruneCompletedTransactionsBelowNode_(childNode);\n });\n};\n/**\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\n * since we consider them incompatible with transactions.\n *\n * @param {!Path} path Path for which we want to abort related transactions.\n * @return {!Path}\n * @private\n */\nRepo_1.Repo.prototype.abortTransactions_ = function (path) {\n var _this = this;\n var affectedPath = this.getAncestorTransactionNode_(path).path();\n var transactionNode = this.transactionQueueTree_.subTree(path);\n transactionNode.forEachAncestor(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n this.abortTransactionsOnNode_(transactionNode);\n transactionNode.forEachDescendant(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n return affectedPath;\n};\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param {!Tree.>} node Node to abort transactions for.\n * @private\n */\nRepo_1.Repo.prototype.abortTransactionsOnNode_ = function (node) {\n var queue = node.getValue();\n if (queue !== null) {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\n // can be immediately aborted and removed.\n var events = [];\n var lastSent = -1;\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\n // Already marked. No action needed.\n }\n else if (queue[i].status === TransactionStatus.SENT) {\n util_1.assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\n queue[i].abortReason = 'set';\n }\n else {\n util_1.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n var snapshot = null;\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n node.setValue(null);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n};\n\n//# sourceMappingURL=Repo_transaction.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/Repo_transaction.js\n// module id = 111\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"./Path\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Node in a Tree.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode() {\n // TODO: Consider making accessors that create children and value lazily or\n // separate Internal / Leaf 'types'.\n this.children = {};\n this.childCount = 0;\n this.value = null;\n }\n return TreeNode;\n}());\nexports.TreeNode = TreeNode;\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nvar Tree = /** @class */ (function () {\n /**\n * @template T\n * @param {string=} name_ Optional name of the node.\n * @param {Tree=} parent_ Optional parent node.\n * @param {TreeNode=} node_ Optional node to wrap.\n */\n function Tree(name_, parent_, node_) {\n if (name_ === void 0) { name_ = ''; }\n if (parent_ === void 0) { parent_ = null; }\n if (node_ === void 0) { node_ = new TreeNode(); }\n this.name_ = name_;\n this.parent_ = parent_;\n this.node_ = node_;\n }\n /**\n * Returns a sub-Tree for the given path.\n *\n * @param {!(string|Path)} pathObj Path to look up.\n * @return {!Tree.} Tree for path.\n */\n Tree.prototype.subTree = function (pathObj) {\n // TODO: Require pathObj to be Path?\n var path = pathObj instanceof Path_1.Path ? pathObj : new Path_1.Path(pathObj);\n var child = this, next;\n while ((next = path.getFront()) !== null) {\n var childNode = util_2.safeGet(child.node_.children, next) || new TreeNode();\n child = new Tree(next, child, childNode);\n path = path.popFront();\n }\n return child;\n };\n /**\n * Returns the data associated with this tree node.\n *\n * @return {?T} The data or null if no data exists.\n */\n Tree.prototype.getValue = function () {\n return this.node_.value;\n };\n /**\n * Sets data to this tree node.\n *\n * @param {!T} value Value to set.\n */\n Tree.prototype.setValue = function (value) {\n util_1.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\n this.node_.value = value;\n this.updateParents_();\n };\n /**\n * Clears the contents of the tree node (its value and all children).\n */\n Tree.prototype.clear = function () {\n this.node_.value = null;\n this.node_.children = {};\n this.node_.childCount = 0;\n this.updateParents_();\n };\n /**\n * @return {boolean} Whether the tree has any children.\n */\n Tree.prototype.hasChildren = function () {\n return this.node_.childCount > 0;\n };\n /**\n * @return {boolean} Whether the tree is empty (no value or children).\n */\n Tree.prototype.isEmpty = function () {\n return this.getValue() === null && !this.hasChildren();\n };\n /**\n * Calls action for each child of this tree node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachChild = function (action) {\n var _this = this;\n util_2.forEach(this.node_.children, function (child, childTree) {\n action(new Tree(child, _this, childTree));\n });\n };\n /**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\n * false.\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\n * parent.\n */\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst)\n action(this);\n this.forEachChild(function (child) {\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\n });\n if (includeSelf && childrenFirst)\n action(this);\n };\n /**\n * Calls action on each ancestor node.\n *\n * @param {function(!Tree.)} action Action to be called on each parent; return\n * true to abort.\n * @param {boolean=} includeSelf Whether to call action on this node as well.\n * @return {boolean} true if the action callback returned true.\n */\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\n var node = includeSelf ? this : this.parent();\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent();\n }\n return false;\n };\n /**\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\n * is found, action is called on it and traversal does not continue inside the node.\n * Action is *not* called on this node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\n this.forEachChild(function (child) {\n if (child.getValue() !== null)\n action(child);\n else\n child.forEachImmediateDescendantWithValue(action);\n });\n };\n /**\n * @return {!Path} The path of this tree node, as a Path.\n */\n Tree.prototype.path = function () {\n return new Path_1.Path(this.parent_ === null\n ? this.name_\n : this.parent_.path() + '/' + this.name_);\n };\n /**\n * @return {string} The name of the tree node.\n */\n Tree.prototype.name = function () {\n return this.name_;\n };\n /**\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\n */\n Tree.prototype.parent = function () {\n return this.parent_;\n };\n /**\n * Adds or removes this child from its parent based on whether it's empty or not.\n *\n * @private\n */\n Tree.prototype.updateParents_ = function () {\n if (this.parent_ !== null)\n this.parent_.updateChild_(this.name_, this);\n };\n /**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param {string} childName The name of the child to update.\n * @param {!Tree.} child The child to update.\n * @private\n */\n Tree.prototype.updateChild_ = function (childName, child) {\n var childEmpty = child.isEmpty();\n var childExists = util_2.contains(this.node_.children, childName);\n if (childEmpty && childExists) {\n delete this.node_.children[childName];\n this.node_.childCount--;\n this.updateParents_();\n }\n else if (!childEmpty && !childExists) {\n this.node_.children[childName] = child.node_;\n this.node_.childCount++;\n this.updateParents_();\n }\n };\n return Tree;\n}());\nexports.Tree = Tree;\n\n//# sourceMappingURL=Tree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/Tree.js\n// module id = 112\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WebSocketConnection_1 = require(\"../realtime/WebSocketConnection\");\nvar BrowserPollConnection_1 = require(\"../realtime/BrowserPollConnection\");\n/**\n * INTERNAL methods for internal-use only (tests, etc.).\n *\n * Customers shouldn't use these or else should be aware that they could break at any time.\n *\n * @const\n */\nexports.forceLongPolling = function () {\n WebSocketConnection_1.WebSocketConnection.forceDisallow();\n BrowserPollConnection_1.BrowserPollConnection.forceAllow();\n};\nexports.forceWebSockets = function () {\n BrowserPollConnection_1.BrowserPollConnection.forceDisallow();\n};\n/* Used by App Manager */\nexports.isWebSocketsAvailable = function () {\n return WebSocketConnection_1.WebSocketConnection['isAvailable']();\n};\nexports.setSecurityDebugCallback = function (ref, callback) {\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\n};\nexports.stats = function (ref, showDelta) {\n ref.repo.stats(showDelta);\n};\nexports.statsIncrementCounter = function (ref, metric) {\n ref.repo.statsIncrementCounter(metric);\n};\nexports.dataUpdateCount = function (ref) {\n return ref.repo.dataUpdateCount;\n};\nexports.interceptServerData = function (ref, callback) {\n return ref.repo.interceptServerData_(callback);\n};\n\n//# sourceMappingURL=internal.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/internal.js\n// module id = 113\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RepoInfo_1 = require(\"../core/RepoInfo\");\nvar PersistentConnection_1 = require(\"../core/PersistentConnection\");\nvar RepoManager_1 = require(\"../core/RepoManager\");\nvar Connection_1 = require(\"../realtime/Connection\");\nexports.DataConnection = PersistentConnection_1.PersistentConnection;\n/**\n * @param {!string} pathString\n * @param {function(*)} onComplete\n */\nPersistentConnection_1.PersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n/**\n * @param {*} data\n * @param {function(*)} onEcho\n */\nPersistentConnection_1.PersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nexports.RealTimeConnection = Connection_1.Connection;\n/**\n * @param {function(): string} newHash\n * @return {function()}\n */\nexports.hijackHash = function (newHash) {\n var oldPut = PersistentConnection_1.PersistentConnection.prototype.put;\n PersistentConnection_1.PersistentConnection.prototype.put = function (pathString, data, opt_onComplete, opt_hash) {\n if (opt_hash !== undefined) {\n opt_hash = newHash();\n }\n oldPut.call(this, pathString, data, opt_onComplete, opt_hash);\n };\n return function () {\n PersistentConnection_1.PersistentConnection.prototype.put = oldPut;\n };\n};\n/**\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\n */\nexports.ConnectionTarget = RepoInfo_1.RepoInfo;\n/**\n * @param {!Query} query\n * @return {!string}\n */\nexports.queryIdentifier = function (query) {\n return query.queryIdentifier();\n};\n/**\n * @param {!Query} firebaseRef\n * @return {!Object}\n */\nexports.listens = function (firebaseRef) {\n return firebaseRef.repo.persistentConnection_.listens_;\n};\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n *\n * @param {boolean} forceRestClient\n */\nexports.forceRestClient = function (forceRestClient) {\n RepoManager_1.RepoManager.getInstance().forceRestClient(forceRestClient);\n};\n\n//# sourceMappingURL=test_access.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/test_access.js\n// module id = 114\n// module chunks = 0","/*!\n * @license Firebase v4.12.1\n * Build: rev-5cfbafd\n * Terms: https://firebase.google.com/terms/\n */\ntry {\n webpackJsonpFirebase([3],{\n\n/***/ 120:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(121);\n\n\n/***/ }),\n\n/***/ 121:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: /tmp/tmp-200660cAD3hoK2kLNh/node_modules/tslib/tslib.es6.js\nvar tslib_es6 = __webpack_require__(2);\n\n// EXTERNAL MODULE: ../util/dist/cjs/index.js\nvar cjs = __webpack_require__(0);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/errors.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CODES = {\n AVAILABLE_IN_WINDOW: 'only-available-in-window',\n AVAILABLE_IN_SW: 'only-available-in-sw',\n SHOULD_BE_INHERITED: 'should-be-overriden',\n BAD_SENDER_ID: 'bad-sender-id',\n INCORRECT_GCM_SENDER_ID: 'incorrect-gcm-sender-id',\n PERMISSION_DEFAULT: 'permission-default',\n PERMISSION_BLOCKED: 'permission-blocked',\n UNSUPPORTED_BROWSER: 'unsupported-browser',\n NOTIFICATIONS_BLOCKED: 'notifications-blocked',\n FAILED_DEFAULT_REGISTRATION: 'failed-serviceworker-registration',\n SW_REGISTRATION_EXPECTED: 'sw-registration-expected',\n GET_SUBSCRIPTION_FAILED: 'get-subscription-failed',\n INVALID_SAVED_TOKEN: 'invalid-saved-token',\n SW_REG_REDUNDANT: 'sw-reg-redundant',\n TOKEN_SUBSCRIBE_FAILED: 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN: 'token-subscribe-no-token',\n TOKEN_SUBSCRIBE_NO_PUSH_SET: 'token-subscribe-no-push-set',\n TOKEN_UNSUBSCRIBE_FAILED: 'token-unsubscribe-failed',\n TOKEN_UPDATE_FAILED: 'token-update-failed',\n TOKEN_UPDATE_NO_TOKEN: 'token-update-no-token',\n USE_SW_BEFORE_GET_TOKEN: 'use-sw-before-get-token',\n INVALID_DELETE_TOKEN: 'invalid-delete-token',\n DELETE_TOKEN_NOT_FOUND: 'delete-token-not-found',\n DELETE_SCOPE_NOT_FOUND: 'delete-scope-not-found',\n BG_HANDLER_FUNCTION_EXPECTED: 'bg-handler-function-expected',\n NO_WINDOW_CLIENT_TO_MSG: 'no-window-client-to-msg',\n UNABLE_TO_RESUBSCRIBE: 'unable-to-resubscribe',\n NO_FCM_TOKEN_FOR_RESUBSCRIBE: 'no-fcm-token-for-resubscribe',\n FAILED_TO_DELETE_TOKEN: 'failed-to-delete-token',\n NO_SW_IN_REG: 'no-sw-in-reg',\n BAD_SCOPE: 'bad-scope',\n BAD_VAPID_KEY: 'bad-vapid-key',\n BAD_SUBSCRIPTION: 'bad-subscription',\n BAD_TOKEN: 'bad-token',\n BAD_PUSH_SET: 'bad-push-set',\n FAILED_DELETE_VAPID_KEY: 'failed-delete-vapid-key',\n INVALID_PUBLIC_VAPID_KEY: 'invalid-public-vapid-key',\n USE_PUBLIC_KEY_BEFORE_GET_TOKEN: 'use-public-key-before-get-token',\n PUBLIC_KEY_DECRYPTION_FAILED: 'public-vapid-key-decryption-failed'\n};\nvar ERROR_MAP = (errors__a = {},\n errors__a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n errors__a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n errors__a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n errors__a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n errors__a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n errors__a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n errors__a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n errors__a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n errors__a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n errors__a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n errors__a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n errors__a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n errors__a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n errors__a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n errors__a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n errors__a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n errors__a[CODES.TOKEN_UNSUBSCRIBE_FAILED] = 'A problem occured while unsubscribing the ' + 'user from FCM: {$message}',\n errors__a[CODES.TOKEN_UPDATE_FAILED] = 'A problem occured while updating the ' + 'user from FCM: {$message}',\n errors__a[CODES.TOKEN_UPDATE_NO_TOKEN] = 'FCM returned no token when updating ' + 'the user to push.',\n errors__a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'The useServiceWorker() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your service worker is used.',\n errors__a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n errors__a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n errors__a[CODES.DELETE_SCOPE_NOT_FOUND] = 'The deletion attempt for service worker ' +\n 'scope could not be performed as the scope was not found.',\n errors__a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n errors__a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n errors__a[CODES.UNABLE_TO_RESUBSCRIBE] = 'There was an error while re-subscribing ' +\n 'the FCM token for push messaging. Will have to resubscribe the ' +\n 'user on next visit. {$message}',\n errors__a[CODES.NO_FCM_TOKEN_FOR_RESUBSCRIBE] = 'Could not find an FCM token ' +\n 'and as a result, unable to resubscribe. Will have to resubscribe the ' +\n 'user on next visit.',\n errors__a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n errors__a[CODES.NO_SW_IN_REG] = 'Even though the service worker registration was ' +\n 'successful, there was a problem accessing the service worker itself.',\n errors__a[CODES.INCORRECT_GCM_SENDER_ID] = \"Please change your web app manifest's \" +\n \"'gcm_sender_id' value to '103953800507' to use Firebase messaging.\",\n errors__a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n errors__a[CODES.BAD_VAPID_KEY] = 'The public VAPID key is not a Uint8Array with 65 bytes.',\n errors__a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n errors__a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n errors__a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n errors__a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n errors__a[CODES.INVALID_PUBLIC_VAPID_KEY] = 'The public VAPID key must be a string.',\n errors__a[CODES.PUBLIC_KEY_DECRYPTION_FAILED] = 'The public VAPID key did not equal ' + '65 bytes when decrypted.',\n errors__a);\n/* harmony default export */ var errors = ({\n codes: CODES,\n map: ERROR_MAP\n});\nvar errors__a;\n\n//# sourceMappingURL=errors.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/db-interface.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\nvar db_interface_DBInterface = /** @class */ (function () {\n /**\n * @param {string} dbName\n * @param {number} dbVersion\n */\n function DBInterface(dbName, dbVersion) {\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n this.DB_NAME_ = dbName;\n this.dbVersion_ = dbVersion;\n this.openDbPromise_ = null;\n this.TRANSACTION_READ_WRITE = 'readwrite';\n }\n /**\n * Get the indexedDB as a promsie.\n * @protected\n * @return {!Promise} The IndexedDB database\n */\n DBInterface.prototype.openDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(_this.DB_NAME_, _this.dbVersion_);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onupgradeneeded = function (event) {\n try {\n var db = event.target.result;\n _this.onDBUpgrade(db, event);\n }\n catch (err) {\n // close the database as it can't be used.\n db.close();\n reject(err);\n }\n };\n });\n return this.openDbPromise_;\n };\n /**\n * Close the currently open database.\n * @return {!Promise} Returns the result of the promise chain.\n */\n DBInterface.prototype.closeDatabase = function () {\n var _this = this;\n return Promise.resolve().then(function () {\n if (_this.openDbPromise_) {\n return _this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n });\n };\n /**\n * @protected\n * @param {!IDBDatabase} db\n */\n DBInterface.prototype.onDBUpgrade = function (db, event) {\n throw this.errorFactory_.create(errors.codes.SHOULD_BE_INHERITED);\n };\n return DBInterface;\n}());\n/* harmony default export */ var db_interface = (db_interface_DBInterface);\n\n//# sourceMappingURL=db-interface.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/helpers/array-buffer-to-base64.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction toBase64(arrayBuffer) {\n var uint8Version = new Uint8Array(arrayBuffer);\n return window.btoa(String.fromCharCode.apply(null, uint8Version));\n}\n/* harmony default export */ var array_buffer_to_base64 = (function (arrayBuffer) {\n var base64String = toBase64(arrayBuffer);\n return base64String\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n});\n\n//# sourceMappingURL=array-buffer-to-base64.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/fcm-details.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar DEFAULT_PUBLIC_VAPID_KEY = new Uint8Array([\n 0x04,\n 0x33,\n 0x94,\n 0xf7,\n 0xdf,\n 0xa1,\n 0xeb,\n 0xb1,\n 0xdc,\n 0x03,\n 0xa2,\n 0x5e,\n 0x15,\n 0x71,\n 0xdb,\n 0x48,\n 0xd3,\n 0x2e,\n 0xed,\n 0xed,\n 0xb2,\n 0x34,\n 0xdb,\n 0xb7,\n 0x47,\n 0x3a,\n 0x0c,\n 0x8f,\n 0xc4,\n 0xcc,\n 0xe1,\n 0x6f,\n 0x3c,\n 0x8c,\n 0x84,\n 0xdf,\n 0xab,\n 0xb6,\n 0x66,\n 0x3e,\n 0xf2,\n 0x0c,\n 0xd4,\n 0x8b,\n 0xfe,\n 0xe3,\n 0xf9,\n 0x76,\n 0x2f,\n 0x14,\n 0x1c,\n 0x63,\n 0x08,\n 0x6a,\n 0x6f,\n 0x2d,\n 0xb1,\n 0x1a,\n 0x95,\n 0xb0,\n 0xce,\n 0x37,\n 0xc0,\n 0x9c,\n 0x6e\n]);\nvar SUBSCRIPTION_DETAILS = {\n userVisibleOnly: true,\n applicationServerKey: DEFAULT_PUBLIC_VAPID_KEY\n};\n/* harmony default export */ var fcm_details = ({\n DEFAULT_PUBLIC_VAPID_KEY: DEFAULT_PUBLIC_VAPID_KEY,\n SUBSCRIPTION_DETAILS: SUBSCRIPTION_DETAILS,\n ENDPOINT: 'https://fcm.googleapis.com'\n // ENDPOINT: 'https://jmt17.google.com'\n});\n\n//# sourceMappingURL=fcm-details.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/iid-model.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nvar iid_model_IIDModel = /** @class */ (function () {\n function IIDModel() {\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n }\n /**\n * Given a PushSubscription and messagingSenderId, get an FCM token.\n * @public\n * @param {string} senderId The 'messagingSenderId' to tie the token to.\n * @param {PushSubscription} subscription The PushSusbcription to \"federate\".\n * @param {Uint8Array} publicVapidKey The public VAPID key.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n IIDModel.prototype.getToken = function (senderId, subscription, publicVapidKey) {\n var _this = this;\n var p256dh = array_buffer_to_base64(subscription['getKey']('p256dh'));\n var auth = array_buffer_to_base64(subscription['getKey']('auth'));\n var fcmSubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (publicVapidKey !== fcm_details.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = array_buffer_to_base64(publicVapidKey);\n fcmSubscribeBody += \"&application_pub_key=\" + applicationPubKey;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmSubscribeBody\n };\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/subscribe', subscribeOptions)\n .then(function (response) { return response.json(); })\n .catch(function () {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_FAILED);\n })\n .then(function (response) {\n var fcmTokenResponse = response;\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n if (!fcmTokenResponse['pushSet']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);\n }\n return {\n token: fcmTokenResponse['token'],\n pushSet: fcmTokenResponse['pushSet']\n };\n });\n };\n /**\n * Update the underlying token details for fcmToken.\n */\n IIDModel.prototype.updateToken = function (senderId, fcmToken, fcmPushSet, subscription, publicVapidKey) {\n var _this = this;\n var p256dh = array_buffer_to_base64(subscription['getKey']('p256dh'));\n var auth = array_buffer_to_base64(subscription['getKey']('auth'));\n var fcmUpdateBody = \"push_set=\" + fcmPushSet + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"authorized_entity=\" + senderId + \"&\") +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (publicVapidKey !== fcm_details.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = array_buffer_to_base64(publicVapidKey);\n fcmUpdateBody += \"&application_pub_key=\" + applicationPubKey;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var updateOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUpdateBody\n };\n var updateFetchRes;\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/subscribe', updateOptions)\n .then(function (fetchResponse) {\n updateFetchRes = fetchResponse;\n return fetchResponse.json();\n })\n .catch(function () {\n throw _this.errorFactory_.create(errors.codes.TOKEN_UPDATE_FAILED);\n })\n .then(function (fcmTokenResponse) {\n if (!updateFetchRes.ok) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_UPDATE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_UPDATE_NO_TOKEN);\n }\n return fcmTokenResponse['token'];\n });\n };\n /**\n * Given a fcmToken, pushSet and messagingSenderId, delete an FCM token.\n */\n IIDModel.prototype.deleteToken = function (senderId, fcmToken, fcmPushSet) {\n var _this = this;\n var fcmUnsubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"pushSet=\" + fcmPushSet);\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var unsubscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUnsubscribeBody\n };\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/unsubscribe', unsubscribeOptions).then(function (fetchResponse) {\n if (!fetchResponse.ok) {\n return fetchResponse.json().then(function (fcmTokenResponse) {\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_UNSUBSCRIBE_FAILED, {\n message: message\n });\n }\n }, function (err) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_UNSUBSCRIBE_FAILED);\n });\n }\n });\n };\n return IIDModel;\n}());\n/* harmony default export */ var iid_model = (iid_model_IIDModel);\n\n//# sourceMappingURL=iid-model.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/clean-v1-undefined.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * There seems to have been a bug in the messaging SDK versions <= 4.9.x\n * where the IndexedDB model was using a database name of 'undefined'.\n *\n * In 4.10.x we changed the model implementation, but kept the database\n * name as it should have been. This however introduced an issue where\n * two tokens were pointing to the same underlying PushSubscription.\n *\n * This code will look for the undefined database and delete any of the\n * underlying tokens.\n */\n\nvar OLD_DB_NAME = 'undefined';\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\nfunction handleDb(db) {\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\n // We found a database with the name 'undefined', but our expected object\n // store isn't defined.\n return;\n }\n var transaction = db.transaction(OLD_OBJECT_STORE_NAME);\n var objectStore = transaction.objectStore(OLD_OBJECT_STORE_NAME);\n var iidModel = new iid_model();\n var openCursorRequest = objectStore.openCursor();\n openCursorRequest.onerror = function (event) {\n // NOOP - Nothing we can do.\n console.warn('Unable to cleanup old IDB.', event);\n };\n openCursorRequest.onsuccess = function () {\n var cursor = openCursorRequest.result;\n if (cursor) {\n // cursor.value contains the current record being iterated through\n // this is where you'd do something with the result\n var tokenDetails = cursor.value;\n iidModel.deleteToken(tokenDetails.fcmSenderId, tokenDetails.fcmToken, tokenDetails.fcmPushSet);\n cursor.continue();\n }\n else {\n db.close();\n indexedDB.deleteDatabase(OLD_DB_NAME);\n }\n };\n}\nfunction cleanV1() {\n var request = indexedDB.open(OLD_DB_NAME);\n request.onerror = function (event) {\n // NOOP - Nothing we can do.\n };\n request.onsuccess = function (event) {\n var db = request.result;\n handleDb(db);\n };\n}\n\n\n//# sourceMappingURL=clean-v1-undefined.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/token-details-model.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar DB_NAME = 'fcm_token_details_db';\nvar DB_VERSION = 2;\n/** @record */\nfunction ValidateInput() { }\n/** @type {string|undefined} */\nValidateInput.prototype.fcmToken;\n/** @type {string|undefined} */\nValidateInput.prototype.swScope;\n/** @type {string|undefined} */\nValidateInput.prototype.vapidKey;\n/** @type {PushSubscription|undefined} */\nValidateInput.prototype.subscription;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmSenderId;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmPushSet;\nvar token_details_model_TokenDetailsModel = /** @class */ (function (_super) {\n tslib_es6[\"__extends\"](TokenDetailsModel, _super);\n function TokenDetailsModel() {\n return _super.call(this, DB_NAME, DB_VERSION) || this;\n }\n TokenDetailsModel.prototype.onDBUpgrade = function (db, evt) {\n if (evt.oldVersion < 1) {\n // New IDB instance\n var objectStore = db.createObjectStore(FCM_TOKEN_OBJ_STORE, {\n keyPath: 'swScope'\n });\n // Make sure the sender ID can be searched\n objectStore.createIndex('fcmSenderId', 'fcmSenderId', {\n unique: false\n });\n objectStore.createIndex('fcmToken', 'fcmToken', {\n unique: true\n });\n }\n if (evt.oldVersion < 2) {\n // Prior to version 2, we were using either 'fcm_token_details_db'\n // or 'undefined' as the database name due to bug in the SDK\n // So remove the old tokens and databases.\n cleanV1();\n }\n };\n /**\n * This method takes an object and will check for known arguments and\n * validate the input.\n * @private\n * @param {!ValidateInput} input\n * @return {!Promise} Returns promise that resolves if input is valid,\n * rejects otherwise.\n */\n TokenDetailsModel.prototype.validateInputs_ = function (input) {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n return tslib_es6[\"__generator\"](this, function (_a) {\n if (input.fcmToken) {\n if (typeof input.fcmToken !== 'string' || input.fcmToken.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.BAD_TOKEN))];\n }\n }\n if (input.swScope) {\n if (typeof input.swScope !== 'string' || input.swScope.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE))];\n }\n }\n if (input.vapidKey) {\n if (!(input.vapidKey instanceof Uint8Array) ||\n input.vapidKey.length !== 65) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.BAD_VAPID_KEY))];\n }\n }\n if (input.subscription) {\n if (!(input.subscription instanceof PushSubscription)) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.BAD_SUBSCRIPTION))];\n }\n }\n if (input.fcmSenderId) {\n if (typeof input.fcmSenderId !== 'string' ||\n input.fcmSenderId.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID))];\n }\n }\n if (input.fcmPushSet) {\n if (typeof input.fcmPushSet !== 'string' ||\n input.fcmPushSet.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.BAD_PUSH_SET))];\n }\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromToken = function (fcmToken) {\n var _this = this;\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_TOKEN));\n }\n return this.validateInputs_({ fcmToken: fcmToken })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var index = objectStore.index('fcmToken');\n var request = index.get(fcmToken);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Given a service worker scope, this method will look up the details in\n * indexedDB.\n * @public\n * @param {string} swScope\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromSWScope = function (swScope) {\n var _this = this;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n return this.validateInputs_({ swScope: swScope })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function (event) {\n reject(event.target.error);\n };\n scopeRequest.onsuccess = function (event) {\n var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @param {{swScope: !string, vapidKey: !string,\n * subscription: !PushSubscription, fcmSenderId: !string, fcmToken: !string,\n * fcmPushSet: !string}} input A plain js object containing args to save.\n * @return {Promise}\n */\n TokenDetailsModel.prototype.saveTokenDetails = function (_a) {\n var _this = this;\n var swScope = _a.swScope, vapidKey = _a.vapidKey, subscription = _a.subscription, fcmSenderId = _a.fcmSenderId, fcmToken = _a.fcmToken, fcmPushSet = _a.fcmPushSet;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n if (!vapidKey) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_VAPID_KEY));\n }\n if (!subscription) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SUBSCRIPTION));\n }\n if (!fcmSenderId) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_TOKEN));\n }\n if (!fcmPushSet) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_PUSH_SET));\n }\n return this.validateInputs_({\n swScope: swScope,\n vapidKey: vapidKey,\n subscription: subscription,\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet\n })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n /**\n * @dict\n */\n var details = {\n swScope: swScope,\n vapidKey: array_buffer_to_base64(vapidKey),\n endpoint: subscription.endpoint,\n auth: array_buffer_to_base64(subscription['getKey']('auth')),\n p256dh: array_buffer_to_base64(subscription['getKey']('p256dh')),\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n createTime: Date.now()\n };\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve();\n };\n });\n });\n };\n /**\n * This method deletes details of the current FCM token.\n * It's returning a promise in case we need to move to an async\n * method for deleting at a later date.\n * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenDetailsModel.prototype.deleteToken = function (token) {\n var _this = this;\n if (typeof token !== 'string' || token.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.INVALID_DELETE_TOKEN));\n }\n return this.getTokenDetailsFromToken(token).then(function (details) {\n if (!details) {\n throw _this.errorFactory_.create(errors.codes.DELETE_TOKEN_NOT_FOUND);\n }\n return _this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.delete(details['swScope']);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n if (event.target.result === 0) {\n reject(_this.errorFactory_.create(errors.codes.FAILED_TO_DELETE_TOKEN));\n return;\n }\n resolve(details);\n };\n });\n });\n });\n };\n return TokenDetailsModel;\n}(db_interface));\n/* harmony default export */ var token_details_model = (token_details_model_TokenDetailsModel);\n\n//# sourceMappingURL=token-details-model.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/vapid-details-model.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\nvar FCM_VAPID_OBJ_STORE = 'fcm_vapid_object_Store';\nvar vapid_details_model_DB_NAME = 'fcm_vapid_details_db';\nvar vapid_details_model_DB_VERSION = 1;\nvar UNCOMPRESSED_PUBLIC_KEY_SIZE = 65;\nvar vapid_details_model_VapidDetailsModel = /** @class */ (function (_super) {\n tslib_es6[\"__extends\"](VapidDetailsModel, _super);\n function VapidDetailsModel() {\n return _super.call(this, vapid_details_model_DB_NAME, vapid_details_model_DB_VERSION) || this;\n }\n /**\n * @override\n * @param {IDBDatabase} db\n */\n VapidDetailsModel.prototype.onDBUpgrade = function (db) {\n db.createObjectStore(FCM_VAPID_OBJ_STORE, {\n keyPath: 'swScope'\n });\n };\n /**\n * Given a service worker scope, this method will look up the vapid key\n * in indexedDB.\n */\n VapidDetailsModel.prototype.getVapidFromSWScope = function (swScope) {\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function () {\n reject(scopeRequest.error);\n };\n scopeRequest.onsuccess = function () {\n var result = scopeRequest.result;\n var vapidKey = null;\n if (result) {\n vapidKey = result.vapidKey;\n }\n resolve(vapidKey);\n };\n });\n });\n };\n /**\n * Save a vapid key against a swScope for later date.\n */\n VapidDetailsModel.prototype.saveVapidDetails = function (swScope, vapidKey) {\n var _this = this;\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SCOPE));\n }\n if (vapidKey === null || vapidKey.length !== UNCOMPRESSED_PUBLIC_KEY_SIZE) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_VAPID_KEY));\n }\n var details = {\n swScope: swScope,\n vapidKey: vapidKey\n };\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n resolve();\n };\n });\n });\n };\n /**\n * This method deletes details of the current FCM VAPID key for a SW scope.\n * Resolves once the scope/vapid details have been deleted and returns the\n * deleted vapid key.\n */\n VapidDetailsModel.prototype.deleteVapidDetails = function (swScope) {\n var _this = this;\n return this.getVapidFromSWScope(swScope).then(function (vapidKey) {\n if (!vapidKey) {\n throw _this.errorFactory_.create(errors.codes.DELETE_SCOPE_NOT_FOUND);\n }\n return _this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.delete(swScope);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n if (request.result === 0) {\n reject(_this.errorFactory_.create(errors.codes.FAILED_DELETE_VAPID_KEY));\n return;\n }\n resolve(vapidKey);\n };\n });\n });\n });\n };\n return VapidDetailsModel;\n}(db_interface));\n/* harmony default export */ var vapid_details_model = (vapid_details_model_VapidDetailsModel);\n\n//# sourceMappingURL=vapid-details-model.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/notification-permission.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var notification_permission = ({\n granted: 'granted',\n default: 'default',\n denied: 'denied'\n});\n\n//# sourceMappingURL=notification-permission.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/controller-interface.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\n// Database cache should be invalidated once a week.\nvar TOKEN_EXPIRATION_MILLIS = 7 * 24 * 60 * 60 * 1000; // 7 days\nvar controller_interface_ControllerInterface = /** @class */ (function () {\n /**\n * An interface of the Messaging Service API\n * @param {!firebase.app.App} app\n */\n function ControllerInterface(app) {\n var _this = this;\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n if (!app.options[SENDER_ID_OPTION_NAME] ||\n typeof app.options[SENDER_ID_OPTION_NAME] !== 'string') {\n throw this.errorFactory_.create(errors.codes.BAD_SENDER_ID);\n }\n this.messagingSenderId_ = app.options[SENDER_ID_OPTION_NAME];\n this.tokenDetailsModel_ = new token_details_model();\n this.vapidDetailsModel_ = new vapid_details_model();\n this.iidModel_ = new iid_model();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete(); };\n }\n /**\n * @export\n */\n ControllerInterface.prototype.getToken = function () {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n var currentPermission, swReg, publicVapidKey, pushSubscription, tokenDetails;\n return tslib_es6[\"__generator\"](this, function (_a) {\n switch (_a.label) {\n case 0:\n currentPermission = this.getNotificationPermission_();\n if (currentPermission !== notification_permission.granted) {\n if (currentPermission === notification_permission.denied) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.NOTIFICATIONS_BLOCKED))];\n }\n // We must wait for permission to be granted\n return [2 /*return*/, Promise.resolve(null)];\n }\n return [4 /*yield*/, this.getSWRegistration_()];\n case 1:\n swReg = _a.sent();\n return [4 /*yield*/, this.getPublicVapidKey_()];\n case 2:\n publicVapidKey = _a.sent();\n return [4 /*yield*/, this.getPushSubscription(swReg, publicVapidKey)];\n case 3:\n pushSubscription = _a.sent();\n return [4 /*yield*/, this.tokenDetailsModel_.getTokenDetailsFromSWScope(swReg.scope)];\n case 4:\n tokenDetails = _a.sent();\n if (tokenDetails) {\n return [2 /*return*/, this.manageExistingToken(swReg, pushSubscription, publicVapidKey, tokenDetails)];\n }\n return [2 /*return*/, this.getNewToken(swReg, pushSubscription, publicVapidKey)];\n }\n });\n });\n };\n /**\n * manageExistingToken is triggered if there's an existing FCM token in the\n * database and it can take 3 different actions:\n * 1) Retrieve the existing FCM token from the database.\n * 2) If VAPID details have changed: Delete the existing token and create a\n * new one with the new VAPID key.\n * 3) If the database cache is invalidated: Send a request to FCM to update\n * the token, and to check if the token is still valid on FCM-side.\n */\n ControllerInterface.prototype.manageExistingToken = function (swReg, pushSubscription, publicVapidKey, tokenDetails) {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n var isTokenValid, now;\n return tslib_es6[\"__generator\"](this, function (_a) {\n switch (_a.label) {\n case 0:\n isTokenValid = this.isTokenStillValid(pushSubscription, publicVapidKey, tokenDetails);\n if (isTokenValid) {\n now = Date.now();\n if (now < tokenDetails['createTime'] + TOKEN_EXPIRATION_MILLIS) {\n return [2 /*return*/, tokenDetails['fcmToken']];\n }\n else {\n return [2 /*return*/, this.updateToken(swReg, pushSubscription, publicVapidKey, tokenDetails)];\n }\n }\n // If the token is no longer valid (for example if the VAPID details\n // have changed), delete the existing token, and create a new one.\n return [4 /*yield*/, this.deleteToken(tokenDetails['fcmToken'])];\n case 1:\n // If the token is no longer valid (for example if the VAPID details\n // have changed), delete the existing token, and create a new one.\n _a.sent();\n return [2 /*return*/, this.getNewToken(swReg, pushSubscription, publicVapidKey)];\n }\n });\n });\n };\n /*\n * Checks if the tokenDetails match the details provided in the clients.\n */\n ControllerInterface.prototype.isTokenStillValid = function (pushSubscription, publicVapidKey, tokenDetails) {\n if (array_buffer_to_base64(publicVapidKey) !== tokenDetails['vapidKey']) {\n return false;\n }\n // getKey() isn't defined in the PushSubscription externs file, hence\n // subscription['getKey']('').\n return (pushSubscription.endpoint === tokenDetails['endpoint'] &&\n array_buffer_to_base64(pushSubscription['getKey']('auth')) ===\n tokenDetails['auth'] &&\n array_buffer_to_base64(pushSubscription['getKey']('p256dh')) ===\n tokenDetails['p256dh']);\n };\n ControllerInterface.prototype.updateToken = function (swReg, pushSubscription, publicVapidKey, tokenDetails) {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n var updatedToken, allDetails, e_1;\n return tslib_es6[\"__generator\"](this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 6]);\n return [4 /*yield*/, this.iidModel_.updateToken(this.messagingSenderId_, tokenDetails['fcmToken'], tokenDetails['fcmPushSet'], pushSubscription, publicVapidKey)];\n case 1:\n updatedToken = _a.sent();\n allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: pushSubscription,\n fcmSenderId: this.messagingSenderId_,\n fcmToken: updatedToken,\n fcmPushSet: tokenDetails['fcmPushSet']\n };\n return [4 /*yield*/, this.tokenDetailsModel_.saveTokenDetails(allDetails)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey)];\n case 3:\n _a.sent();\n return [2 /*return*/, updatedToken];\n case 4:\n e_1 = _a.sent();\n return [4 /*yield*/, this.deleteToken(tokenDetails['fcmToken'])];\n case 5:\n _a.sent();\n throw e_1;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n ControllerInterface.prototype.getNewToken = function (swReg, pushSubscription, publicVapidKey) {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n var tokenDetails, allDetails;\n return tslib_es6[\"__generator\"](this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.iidModel_.getToken(this.messagingSenderId_, pushSubscription, publicVapidKey)];\n case 1:\n tokenDetails = _a.sent();\n allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: pushSubscription,\n fcmSenderId: this.messagingSenderId_,\n fcmToken: tokenDetails['token'],\n fcmPushSet: tokenDetails['pushSet']\n };\n return [4 /*yield*/, this.tokenDetailsModel_.saveTokenDetails(allDetails)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey)];\n case 3:\n _a.sent();\n return [2 /*return*/, tokenDetails['token']];\n }\n });\n });\n };\n /**\n * This method deletes tokens that the token manager looks after,\n * unsubscribes the token from FCM and then unregisters the push\n * subscription if it exists. It returns a promise that indicates\n * whether or not the unsubscribe request was processed successfully.\n * @export\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenDetailsModel_\n .deleteToken(token)\n .then(function (details) {\n return _this.iidModel_.deleteToken(details['fcmSenderId'], details['fcmToken'], details['fcmPushSet']);\n })\n .then(function () {\n return _this.getSWRegistration_()\n .then(function (registration) {\n if (registration) {\n return registration.pushManager.getSubscription();\n }\n })\n .then(function (subscription) {\n if (subscription) {\n return subscription.unsubscribe();\n }\n });\n });\n };\n ControllerInterface.prototype.getSWRegistration_ = function () {\n throw this.errorFactory_.create(errors.codes.SHOULD_BE_INHERITED);\n };\n ControllerInterface.prototype.getPublicVapidKey_ = function () {\n throw this.errorFactory_.create(errors.codes.SHOULD_BE_INHERITED);\n };\n //\n // The following methods should only be available in the window.\n //\n ControllerInterface.prototype.requestPermission = function () {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * Gets a PushSubscription for the current user.\n */\n ControllerInterface.prototype.getPushSubscription = function (swRegistration, publicVapidKey) {\n return swRegistration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: publicVapidKey\n });\n });\n };\n /**\n * @export\n * @param {!ServiceWorkerRegistration} registration\n */\n ControllerInterface.prototype.useServiceWorker = function (registration) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!string} b64PublicKey\n */\n ControllerInterface.prototype.usePublicVapidKey = function (b64PublicKey) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver\n * @param {function(!Error)=} optError\n * @param {function()=} optCompleted\n * @return {!function()}\n */\n ControllerInterface.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n ControllerInterface.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n //\n // The following methods are used by the service worker only.\n //\n /**\n * @export\n * @param {function(Object)} callback\n */\n ControllerInterface.prototype.setBackgroundMessageHandler = function (callback) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_SW);\n };\n //\n // The following methods are used by the service themselves and not exposed\n // publicly or not expected to be used by developers.\n //\n /**\n * This method is required to adhere to the Firebase interface.\n * It closes any currently open indexdb database connections.\n */\n ControllerInterface.prototype.delete = function () {\n return Promise.all([\n this.tokenDetailsModel_.closeDatabase(),\n this.vapidDetailsModel_.closeDatabase()\n ]);\n };\n /**\n * Returns the current Notification Permission state.\n * @private\n * @return {string} The currenct permission state.\n */\n ControllerInterface.prototype.getNotificationPermission_ = function () {\n return Notification.permission;\n };\n ControllerInterface.prototype.getTokenDetailsModel = function () {\n return this.tokenDetailsModel_;\n };\n ControllerInterface.prototype.getVapidDetailsModel = function () {\n return this.vapidDetailsModel_;\n };\n /**\n * @protected\n * @returns {IIDModel}\n */\n ControllerInterface.prototype.getIIDModel = function () {\n return this.iidModel_;\n };\n return ControllerInterface;\n}());\n/* harmony default export */ var controller_interface = (controller_interface_ControllerInterface);\n\n//# sourceMappingURL=controller-interface.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/worker-page-message.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// These fields are strings to prevent closure from thinking goog.getMsg\n// should be used to initialise the values\nvar PARAMS = {\n TYPE_OF_MSG: 'firebase-messaging-msg-type',\n DATA: 'firebase-messaging-msg-data'\n};\n// This value isn't using the TYPE_OF_MSG short hand as closure\n// expects the variable to be defined via goog.getMsg\nvar msgType = {\n PUSH_MSG_RECEIVED: 'push-msg-received',\n NOTIFICATION_CLICKED: 'notification-clicked'\n};\nvar createNewMsg = function (msgType, msgData) {\n var message = (_a = {},\n _a[PARAMS.TYPE_OF_MSG] = msgType,\n _a[PARAMS.DATA] = msgData,\n _a);\n return message;\n var _a;\n};\n/* harmony default export */ var worker_page_message = ({\n PARAMS: PARAMS,\n TYPES_OF_MSG: msgType,\n createNewMsg: createNewMsg\n});\n\n//# sourceMappingURL=worker-page-message.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/default-sw.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var default_sw = ({\n path: '/firebase-messaging-sw.js',\n scope: '/firebase-cloud-messaging-push-scope'\n});\n\n//# sourceMappingURL=default-sw.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/helpers/base64-to-array-buffer.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* harmony default export */ var base64_to_array_buffer = (function (base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n});\n\n//# sourceMappingURL=base64-to-array-buffer.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/window-controller.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n\n\nvar window_controller_WindowController = /** @class */ (function (_super) {\n tslib_es6[\"__extends\"](WindowController, _super);\n /**\n * A service that provides a MessagingService instance.\n * @param {!firebase.app.App} app\n */\n function WindowController(app) {\n var _this = _super.call(this, app) || this;\n _this.messageObserver_ = null;\n _this.onMessage_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.messageObserver_ = observer;\n });\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n /**\n * @private\n * @type {ServiceWorkerRegistration}\n */\n _this.registrationToUse_;\n /**\n * @private\n * @type {Promise}\n */\n _this.manifestCheckPromise_;\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.messageObserver_ = null;\n /**\n * @private {!firebase.Subscribe} The subscribe function to the onMessage\n * observer.\n */\n _this.onMessage_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.messageObserver_ = observer;\n });\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n _this.setupSWMessageListener_();\n return _this;\n }\n /**\n * This method returns an FCM token if it can be generated.\n * The return promise will reject if the browser doesn't support\n * FCM, if permission is denied for notifications or it's not\n * possible to generate a token.\n * @export\n * @return {Promise | Promise} Returns a promise the\n * resolves to an FCM token or null if permission isn't granted.\n */\n WindowController.prototype.getToken = function () {\n var _this = this;\n // Check that the required API's are available\n if (!this.isSupported_()) {\n return Promise.reject(this.errorFactory_.create(errors.codes.UNSUPPORTED_BROWSER));\n }\n return this.manifestCheck_().then(function () {\n return _super.prototype.getToken.call(_this);\n });\n };\n /**\n * The method checks that a manifest is defined and has the correct GCM\n * sender ID.\n * @private\n * @return {Promise} Returns a promise that resolves if the manifest matches\n * our required sender ID\n */\n WindowController.prototype.manifestCheck_ = function () {\n var _this = this;\n if (this.manifestCheckPromise_) {\n return this.manifestCheckPromise_;\n }\n var manifestTag = document.querySelector('link[rel=\"manifest\"]');\n if (!manifestTag) {\n this.manifestCheckPromise_ = Promise.resolve();\n }\n else {\n this.manifestCheckPromise_ = fetch(manifestTag.href)\n .then(function (response) {\n return response.json();\n })\n .catch(function () {\n // If the download or parsing fails allow check.\n // We only want to error if we KNOW that the gcm_sender_id is incorrect.\n })\n .then(function (manifestContent) {\n if (!manifestContent) {\n return;\n }\n if (!manifestContent['gcm_sender_id']) {\n return;\n }\n if (manifestContent['gcm_sender_id'] !== '103953800507') {\n throw _this.errorFactory_.create(errors.codes.INCORRECT_GCM_SENDER_ID);\n }\n });\n }\n return this.manifestCheckPromise_;\n };\n /**\n * Request permission if it is not currently granted\n * @export\n * @returns {Promise} Resolves if the permission was granted, otherwise\n * rejects\n */\n WindowController.prototype.requestPermission = function () {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n var _this = this;\n return tslib_es6[\"__generator\"](this, function (_a) {\n if (Notification.permission === notification_permission.granted) {\n return [2 /*return*/];\n }\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var managePermissionResult = function (result) {\n if (result === notification_permission.granted) {\n return resolve();\n }\n else if (result === notification_permission.denied) {\n return reject(_this.errorFactory_.create(errors.codes.PERMISSION_BLOCKED));\n }\n else {\n return reject(_this.errorFactory_.create(errors.codes.PERMISSION_DEFAULT));\n }\n };\n // The Notification.requestPermission API was changed to\n // return a promise so now have to handle both in case\n // browsers stop support callbacks for promised version\n var permissionPromise = Notification.requestPermission(managePermissionResult);\n if (permissionPromise) {\n // Prefer the promise version as it's the future API.\n permissionPromise.then(managePermissionResult);\n }\n })];\n });\n });\n };\n /**\n * This method allows a developer to override the default service worker and\n * instead use a custom service worker.\n * @export\n * @param {!ServiceWorkerRegistration} registration The service worker\n * registration that should be used to receive the push messages.\n */\n WindowController.prototype.useServiceWorker = function (registration) {\n if (!(registration instanceof ServiceWorkerRegistration)) {\n throw this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED);\n }\n if (typeof this.registrationToUse_ !== 'undefined') {\n throw this.errorFactory_.create(errors.codes.USE_SW_BEFORE_GET_TOKEN);\n }\n this.registrationToUse_ = registration;\n };\n /**\n * This method allows a developer to override the default vapid key\n * and instead use a custom VAPID public key.\n * @export\n * @param {!string} publicKey A URL safe base64 encoded string.\n */\n WindowController.prototype.usePublicVapidKey = function (publicKey) {\n if (typeof publicKey !== 'string') {\n throw this.errorFactory_.create(errors.codes.INVALID_PUBLIC_VAPID_KEY);\n }\n if (typeof this.publicVapidKeyToUse_ !== 'undefined') {\n throw this.errorFactory_.create(errors.codes.USE_PUBLIC_KEY_BEFORE_GET_TOKEN);\n }\n var parsedKey = base64_to_array_buffer(publicKey);\n if (parsedKey.length !== 65) {\n throw this.errorFactory_.create(errors.codes.PUBLIC_KEY_DECRYPTION_FAILED);\n }\n this.publicVapidKeyToUse_ = parsedKey;\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver An observer object\n * or a function triggered on message.\n * @param {function(!Error)=} optError Optional A function triggered on\n * message error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n return this.onMessage_(nextOrObserver, optError, optCompleted);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n return this.onTokenRefresh_(nextOrObserver, optError, optCompleted);\n };\n /**\n * Given a registration, wait for the service worker it relates to\n * become activer\n * @private\n * @param {ServiceWorkerRegistration} registration Registration to wait\n * for service worker to become active\n * @return {Promise} Wait for service worker\n * registration to become active\n */\n WindowController.prototype.waitForRegistrationToActivate_ = function (registration) {\n var _this = this;\n var serviceWorker = registration.installing || registration.waiting || registration.active;\n return new Promise(function (resolve, reject) {\n if (!serviceWorker) {\n // This is a rare scenario but has occured in firefox\n reject(_this.errorFactory_.create(errors.codes.NO_SW_IN_REG));\n return;\n }\n // Because the Promise function is called on next tick there is a\n // small chance that the worker became active or redundant already.\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n return;\n }\n if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(errors.codes.SW_REG_REDUNDANT));\n return;\n }\n var stateChangeListener = function () {\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n }\n else if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(errors.codes.SW_REG_REDUNDANT));\n }\n else {\n // Return early and wait to next state change\n return;\n }\n serviceWorker.removeEventListener('statechange', stateChangeListener);\n };\n serviceWorker.addEventListener('statechange', stateChangeListener);\n });\n };\n /**\n * This will regiater the default service worker and return the registration\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n WindowController.prototype.getSWRegistration_ = function () {\n var _this = this;\n if (this.registrationToUse_) {\n return this.waitForRegistrationToActivate_(this.registrationToUse_);\n }\n // Make the registration null so we know useServiceWorker will not\n // use a new service worker as registrationToUse_ is no longer undefined\n this.registrationToUse_ = null;\n return navigator.serviceWorker\n .register(default_sw.path, {\n scope: default_sw.scope\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: err.message\n });\n })\n .then(function (registration) {\n return _this.waitForRegistrationToActivate_(registration).then(function () {\n _this.registrationToUse_ = registration;\n // We update after activation due to an issue with Firefox v49 where\n // a race condition occassionally causes the service work to not\n // install\n registration.update();\n return registration;\n });\n });\n };\n /**\n * This will return the default VAPID key or the uint8array version of the public VAPID key\n * provided by the developer.\n * @private\n */\n WindowController.prototype.getPublicVapidKey_ = function () {\n if (this.publicVapidKeyToUse_) {\n return Promise.resolve(this.publicVapidKeyToUse_);\n }\n return Promise.resolve(fcm_details.DEFAULT_PUBLIC_VAPID_KEY);\n };\n /**\n * This method will set up a message listener to handle\n * events from the service worker that should trigger\n * events in the page.\n *\n * @private\n */\n WindowController.prototype.setupSWMessageListener_ = function () {\n var _this = this;\n if (!('serviceWorker' in navigator)) {\n return;\n }\n navigator.serviceWorker.addEventListener('message', function (event) {\n if (!event.data || !event.data[worker_page_message.PARAMS.TYPE_OF_MSG]) {\n // Not a message from FCM\n return;\n }\n var workerPageMessage = event.data;\n switch (workerPageMessage[worker_page_message.PARAMS.TYPE_OF_MSG]) {\n case worker_page_message.TYPES_OF_MSG.PUSH_MSG_RECEIVED:\n case worker_page_message.TYPES_OF_MSG.NOTIFICATION_CLICKED:\n var pushMessage = workerPageMessage[worker_page_message.PARAMS.DATA];\n if (_this.messageObserver_) {\n _this.messageObserver_.next(pushMessage);\n }\n break;\n default:\n // Noop.\n break;\n }\n }, false);\n };\n /**\n * Checks to see if the required API's are valid or not.\n * @private\n * @return {boolean} Returns true if the desired APIs are available.\n */\n WindowController.prototype.isSupported_ = function () {\n return ('serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n };\n return WindowController;\n}(controller_interface));\n/* harmony default export */ var window_controller = (window_controller_WindowController);\n\n//# sourceMappingURL=window-controller.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/sw-controller.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\nvar FCM_MSG = 'FCM_MSG';\nvar sw_controller_SWController = /** @class */ (function (_super) {\n tslib_es6[\"__extends\"](SWController, _super);\n function SWController(app) {\n var _this = _super.call(this, app) || this;\n self.addEventListener('push', function (e) { return _this.onPush_(e); }, false);\n self.addEventListener('pushsubscriptionchange', function (e) { return _this.onSubChange_(e); }, false);\n self.addEventListener('notificationclick', function (e) { return _this.onNotificationClick_(e); }, false);\n /**\n * @private\n * @type {function(Object)|null}\n */\n _this.bgMessageHandler_ = null;\n return _this;\n }\n /**\n * A handler for push events that shows notifications based on the content of\n * the payload.\n *\n * The payload must be a JSON-encoded Object with a `notification` key. The\n * value of the `notification` property will be used as the NotificationOptions\n * object passed to showNotification. Additionally, the `title` property of the\n * notification object will be used as the title.\n *\n * If there is no notification data in the payload then no notification will be\n * shown.\n * @private\n */\n SWController.prototype.onPush_ = function (event) {\n var _this = this;\n var msgPayload;\n try {\n msgPayload = event.data.json();\n }\n catch (err) {\n // Not JSON so not an FCM message\n return;\n }\n var handleMsgPromise = this.hasVisibleClients_().then(function (hasVisibleClients) {\n if (hasVisibleClients) {\n // Do not need to show a notification.\n if (msgPayload.notification || _this.bgMessageHandler_) {\n // Send to page\n return _this.sendMessageToWindowClients_(msgPayload);\n }\n return;\n }\n var notificationDetails = _this.getNotificationData_(msgPayload);\n if (notificationDetails) {\n var notificationTitle_1 = notificationDetails.title || '';\n return _this.getSWRegistration_().then(function (reg) {\n return reg.showNotification(notificationTitle_1, notificationDetails);\n });\n }\n else if (_this.bgMessageHandler_) {\n return _this.bgMessageHandler_(msgPayload);\n }\n });\n event.waitUntil(handleMsgPromise);\n };\n /**\n * @private\n */\n SWController.prototype.onSubChange_ = function (event) {\n var _this = this;\n var promiseChain = this.getSWRegistration_()\n .then(function (registration) {\n return registration.pushManager\n .getSubscription()\n .then(function (subscription) {\n // TODO: Check if it's still valid\n // TODO: If not, then update token\n })\n .catch(function (err) {\n // The best thing we can do is log this to the terminal so\n // developers might notice the error.\n var tokenDetailsModel = _this.getTokenDetailsModel();\n return tokenDetailsModel\n .getTokenDetailsFromSWScope(registration.scope)\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n // This should rarely occure, but could if indexedDB\n // is corrupted or wiped\n throw err;\n }\n // Attempt to delete the token if we know it's bad\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n throw err;\n });\n });\n });\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\n });\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n */\n SWController.prototype.onNotificationClick_ = function (event) {\n var _this = this;\n if (!(event.notification &&\n event.notification.data &&\n event.notification.data[FCM_MSG])) {\n // Not an FCM notification, do nothing.\n return;\n }\n // Prevent other listeners from receiving the event\n event.stopImmediatePropagation();\n event.notification.close();\n var msgPayload = event.notification.data[FCM_MSG];\n if (!msgPayload['notification']) {\n // Nothing to do.\n return;\n }\n var clickAction = msgPayload['notification']['click_action'];\n if (!clickAction) {\n // Nothing to do.\n return;\n }\n var promiseChain = this.getWindowClient_(clickAction)\n .then(function (windowClient) {\n if (!windowClient) {\n // Unable to find window client so need to open one.\n return self.clients.openWindow(clickAction);\n }\n return windowClient.focus();\n })\n .then(function (windowClient) {\n if (!windowClient) {\n // Window Client will not be returned if it's for a third party origin.\n return;\n }\n // Delete notification data from payload before sending to the page.\n var notificationData = msgPayload['notification'];\n delete msgPayload['notification'];\n var internalMsg = worker_page_message.createNewMsg(worker_page_message.TYPES_OF_MSG.NOTIFICATION_CLICKED, msgPayload);\n // Attempt to send a message to the client to handle the data\n // Is affected by: https://github.com/slightlyoff/ServiceWorker/issues/728\n return _this.attemptToMessageClient_(windowClient, internalMsg);\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n * @param {Object} msgPayload\n * @return {NotificationOptions|undefined}\n */\n SWController.prototype.getNotificationData_ = function (msgPayload) {\n if (!msgPayload) {\n return;\n }\n if (typeof msgPayload.notification !== 'object') {\n return;\n }\n var notificationInformation = Object.assign({}, msgPayload.notification);\n // Put the message payload under FCM_MSG name so we can identify the\n // notification as being an FCM notification vs a notification from\n // somewhere else (i.e. normal web push or developer generated\n // notification).\n notificationInformation['data'] = (_a = {},\n _a[FCM_MSG] = msgPayload,\n _a);\n return notificationInformation;\n var _a;\n };\n /**\n * Calling setBackgroundMessageHandler will opt in to some specific\n * behaviours.\n * 1.) If a notification doesn't need to be shown due to a window already\n * being visible, then push messages will be sent to the page.\n * 2.) If a notification needs to be shown, and the message contains no\n * notification data this method will be called\n * and the promise it returns will be passed to event.waitUntil.\n * If you do not set this callback then all push messages will let and the\n * developer can handle them in a their own 'push' event callback\n * @export\n * @param {function(Object)} callback The callback to be called when a push\n * message is received and a notification must be shown. The callback will\n * be given the data from the push message.\n */\n SWController.prototype.setBackgroundMessageHandler = function (callback) {\n if (!callback || typeof callback !== 'function') {\n throw this.errorFactory_.create(errors.codes.BG_HANDLER_FUNCTION_EXPECTED);\n }\n this.bgMessageHandler_ = callback;\n };\n /**\n * @private\n * @param {string} url The URL to look for when focusing a client.\n * @return {Object} Returns an existing window client or a newly opened\n * WindowClient.\n */\n SWController.prototype.getWindowClient_ = function (url) {\n // Use URL to normalize the URL when comparing to windowClients.\n // This at least handles whether to include trailing slashes or not\n var parsedURL = new URL(url, self.location).href;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var suitableClient = null;\n for (var i = 0; i < clientList.length; i++) {\n var parsedClientUrl = new URL(clientList[i].url, self.location).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n return suitableClient;\n }\n return null;\n });\n };\n /**\n * This message will attempt to send the message to a window client.\n * @private\n * @param {Object} client The WindowClient to send the message to.\n * @param {Object} message The message to send to the client.\n * @returns {Promise} Returns a promise that resolves after sending the\n * message. This does not guarantee that the message was successfully\n * received.\n */\n SWController.prototype.attemptToMessageClient_ = function (client, message) {\n return tslib_es6[\"__awaiter\"](this, void 0, void 0, function () {\n return tslib_es6[\"__generator\"](this, function (_a) {\n // NOTE: This returns a promise in case this API is abstracted later on to\n // do additional work\n if (!client) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(errors.codes.NO_WINDOW_CLIENT_TO_MSG))];\n }\n client.postMessage(message);\n return [2 /*return*/];\n });\n });\n };\n /**\n * @private\n * @returns {Promise} If there is currently a visible WindowClient,\n * this method will resolve to true, otherwise false.\n */\n SWController.prototype.hasVisibleClients_ = function () {\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n return clientList.some(function (client) { return client.visibilityState === 'visible'; });\n });\n };\n /**\n * @private\n * @param {Object} msgPayload The data from the push event that should be sent\n * to all available pages.\n * @returns {Promise} Returns a promise that resolves once the message\n * has been sent to all WindowClients.\n */\n SWController.prototype.sendMessageToWindowClients_ = function (msgPayload) {\n var _this = this;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var internalMsg = worker_page_message.createNewMsg(worker_page_message.TYPES_OF_MSG.PUSH_MSG_RECEIVED, msgPayload);\n return Promise.all(clientList.map(function (client) {\n return _this.attemptToMessageClient_(client, internalMsg);\n }));\n });\n };\n /**\n * This will register the default service worker and return the registration.\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n SWController.prototype.getSWRegistration_ = function () {\n return Promise.resolve(self.registration);\n };\n /**\n * This will return the default VAPID key or the uint8array version of the\n * public VAPID key provided by the developer.\n */\n SWController.prototype.getPublicVapidKey_ = function () {\n var _this = this;\n return this.getSWRegistration_()\n .then(function (swReg) {\n return _this.getVapidDetailsModel().getVapidFromSWScope(swReg.scope);\n })\n .then(function (vapidKeyFromDatabase) {\n if (vapidKeyFromDatabase === null) {\n return fcm_details.DEFAULT_PUBLIC_VAPID_KEY;\n }\n return vapidKeyFromDatabase;\n });\n };\n return SWController;\n}(controller_interface));\n/* harmony default export */ var sw_controller = (sw_controller_SWController);\n\n//# sourceMappingURL=sw-controller.js.map\n\n// EXTERNAL MODULE: ../app/dist/esm/index.js + 1 modules\nvar esm = __webpack_require__(7);\n\n// CONCATENATED MODULE: ../messaging/dist/esm/index.js\n/* harmony export (immutable) */ __webpack_exports__[\"registerMessaging\"] = registerMessaging;\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\nfunction registerMessaging(instance) {\n var messagingName = 'messaging';\n var factoryMethod = function (app) {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n return new sw_controller(app);\n }\n // Assume we are in the window context.\n return new window_controller(app);\n };\n var namespaceExports = {\n // no-inline\n Messaging: window_controller\n };\n instance.INTERNAL.registerService(messagingName, factoryMethod, namespaceExports);\n}\nregisterMessaging(esm[\"firebase\"]);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ })\n\n},[120]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-messaging.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-messaging.js","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nrequire('@firebase/messaging');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./messaging/index.js\n// module id = 120\n// module chunks = 3","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction toBase64(arrayBuffer) {\n var uint8Version = new Uint8Array(arrayBuffer);\n return window.btoa(String.fromCharCode.apply(null, uint8Version));\n}\nexport default (function (arrayBuffer) {\n var base64String = toBase64(arrayBuffer);\n return base64String\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n});\n\n//# sourceMappingURL=array-buffer-to-base64.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/helpers/array-buffer-to-base64.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * There seems to have been a bug in the messaging SDK versions <= 4.9.x\n * where the IndexedDB model was using a database name of 'undefined'.\n *\n * In 4.10.x we changed the model implementation, but kept the database\n * name as it should have been. This however introduced an issue where\n * two tokens were pointing to the same underlying PushSubscription.\n *\n * This code will look for the undefined database and delete any of the\n * underlying tokens.\n */\nimport IIDModel from '../models/iid-model';\nvar OLD_DB_NAME = 'undefined';\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\nfunction handleDb(db) {\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\n // We found a database with the name 'undefined', but our expected object\n // store isn't defined.\n return;\n }\n var transaction = db.transaction(OLD_OBJECT_STORE_NAME);\n var objectStore = transaction.objectStore(OLD_OBJECT_STORE_NAME);\n var iidModel = new IIDModel();\n var openCursorRequest = objectStore.openCursor();\n openCursorRequest.onerror = function (event) {\n // NOOP - Nothing we can do.\n console.warn('Unable to cleanup old IDB.', event);\n };\n openCursorRequest.onsuccess = function () {\n var cursor = openCursorRequest.result;\n if (cursor) {\n // cursor.value contains the current record being iterated through\n // this is where you'd do something with the result\n var tokenDetails = cursor.value;\n iidModel.deleteToken(tokenDetails.fcmSenderId, tokenDetails.fcmToken, tokenDetails.fcmPushSet);\n cursor.continue();\n }\n else {\n db.close();\n indexedDB.deleteDatabase(OLD_DB_NAME);\n }\n };\n}\nfunction cleanV1() {\n var request = indexedDB.open(OLD_DB_NAME);\n request.onerror = function (event) {\n // NOOP - Nothing we can do.\n };\n request.onsuccess = function (event) {\n var db = request.result;\n handleDb(db);\n };\n}\nexport { cleanV1 };\n\n//# sourceMappingURL=clean-v1-undefined.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/clean-v1-undefined.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport * as tslib_1 from \"tslib\";\nimport DBInterface from './db-interface';\nimport Errors from './errors';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nimport { cleanV1 } from './clean-v1-undefined';\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar DB_NAME = 'fcm_token_details_db';\nvar DB_VERSION = 2;\n/** @record */\nfunction ValidateInput() { }\n/** @type {string|undefined} */\nValidateInput.prototype.fcmToken;\n/** @type {string|undefined} */\nValidateInput.prototype.swScope;\n/** @type {string|undefined} */\nValidateInput.prototype.vapidKey;\n/** @type {PushSubscription|undefined} */\nValidateInput.prototype.subscription;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmSenderId;\n/** @type {string|undefined} */\nValidateInput.prototype.fcmPushSet;\nvar TokenDetailsModel = /** @class */ (function (_super) {\n tslib_1.__extends(TokenDetailsModel, _super);\n function TokenDetailsModel() {\n return _super.call(this, DB_NAME, DB_VERSION) || this;\n }\n TokenDetailsModel.prototype.onDBUpgrade = function (db, evt) {\n if (evt.oldVersion < 1) {\n // New IDB instance\n var objectStore = db.createObjectStore(FCM_TOKEN_OBJ_STORE, {\n keyPath: 'swScope'\n });\n // Make sure the sender ID can be searched\n objectStore.createIndex('fcmSenderId', 'fcmSenderId', {\n unique: false\n });\n objectStore.createIndex('fcmToken', 'fcmToken', {\n unique: true\n });\n }\n if (evt.oldVersion < 2) {\n // Prior to version 2, we were using either 'fcm_token_details_db'\n // or 'undefined' as the database name due to bug in the SDK\n // So remove the old tokens and databases.\n cleanV1();\n }\n };\n /**\n * This method takes an object and will check for known arguments and\n * validate the input.\n * @private\n * @param {!ValidateInput} input\n * @return {!Promise} Returns promise that resolves if input is valid,\n * rejects otherwise.\n */\n TokenDetailsModel.prototype.validateInputs_ = function (input) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n if (input.fcmToken) {\n if (typeof input.fcmToken !== 'string' || input.fcmToken.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.BAD_TOKEN))];\n }\n }\n if (input.swScope) {\n if (typeof input.swScope !== 'string' || input.swScope.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE))];\n }\n }\n if (input.vapidKey) {\n if (!(input.vapidKey instanceof Uint8Array) ||\n input.vapidKey.length !== 65) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.BAD_VAPID_KEY))];\n }\n }\n if (input.subscription) {\n if (!(input.subscription instanceof PushSubscription)) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SUBSCRIPTION))];\n }\n }\n if (input.fcmSenderId) {\n if (typeof input.fcmSenderId !== 'string' ||\n input.fcmSenderId.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID))];\n }\n }\n if (input.fcmPushSet) {\n if (typeof input.fcmPushSet !== 'string' ||\n input.fcmPushSet.length === 0) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.BAD_PUSH_SET))];\n }\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromToken = function (fcmToken) {\n var _this = this;\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_TOKEN));\n }\n return this.validateInputs_({ fcmToken: fcmToken })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var index = objectStore.index('fcmToken');\n var request = index.get(fcmToken);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Given a service worker scope, this method will look up the details in\n * indexedDB.\n * @public\n * @param {string} swScope\n * @return {Promise} The details associated with that token.\n */\n TokenDetailsModel.prototype.getTokenDetailsFromSWScope = function (swScope) {\n var _this = this;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n return this.validateInputs_({ swScope: swScope })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function (event) {\n reject(event.target.error);\n };\n scopeRequest.onsuccess = function (event) {\n var result = event.target.result\n ? event.target.result\n : null;\n resolve(result);\n };\n });\n });\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @param {{swScope: !string, vapidKey: !string,\n * subscription: !PushSubscription, fcmSenderId: !string, fcmToken: !string,\n * fcmPushSet: !string}} input A plain js object containing args to save.\n * @return {Promise}\n */\n TokenDetailsModel.prototype.saveTokenDetails = function (_a) {\n var _this = this;\n var swScope = _a.swScope, vapidKey = _a.vapidKey, subscription = _a.subscription, fcmSenderId = _a.fcmSenderId, fcmToken = _a.fcmToken, fcmPushSet = _a.fcmPushSet;\n if (!swScope) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n if (!vapidKey) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_VAPID_KEY));\n }\n if (!subscription) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SUBSCRIPTION));\n }\n if (!fcmSenderId) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n if (!fcmToken) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_TOKEN));\n }\n if (!fcmPushSet) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_PUSH_SET));\n }\n return this.validateInputs_({\n swScope: swScope,\n vapidKey: vapidKey,\n subscription: subscription,\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet\n })\n .then(function () {\n return _this.openDatabase();\n })\n .then(function (db) {\n /**\n * @dict\n */\n var details = {\n swScope: swScope,\n vapidKey: arrayBufferToBase64(vapidKey),\n endpoint: subscription.endpoint,\n auth: arrayBufferToBase64(subscription['getKey']('auth')),\n p256dh: arrayBufferToBase64(subscription['getKey']('p256dh')),\n fcmSenderId: fcmSenderId,\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n createTime: Date.now()\n };\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve();\n };\n });\n });\n };\n /**\n * This method deletes details of the current FCM token.\n * It's returning a promise in case we need to move to an async\n * method for deleting at a later date.\n * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenDetailsModel.prototype.deleteToken = function (token) {\n var _this = this;\n if (typeof token !== 'string' || token.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.INVALID_DELETE_TOKEN));\n }\n return this.getTokenDetailsFromToken(token).then(function (details) {\n if (!details) {\n throw _this.errorFactory_.create(Errors.codes.DELETE_TOKEN_NOT_FOUND);\n }\n return _this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.delete(details['swScope']);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n if (event.target.result === 0) {\n reject(_this.errorFactory_.create(Errors.codes.FAILED_TO_DELETE_TOKEN));\n return;\n }\n resolve(details);\n };\n });\n });\n });\n };\n return TokenDetailsModel;\n}(DBInterface));\nexport default TokenDetailsModel;\n\n//# sourceMappingURL=token-details-model.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/token-details-model.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport WindowController from './src/controllers/window-controller';\nimport SWController from './src/controllers/sw-controller';\nimport { firebase } from '@firebase/app';\nexport function registerMessaging(instance) {\n var messagingName = 'messaging';\n var factoryMethod = function (app) {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n return new SWController(app);\n }\n // Assume we are in the window context.\n return new WindowController(app);\n };\n var namespaceExports = {\n // no-inline\n Messaging: WindowController\n };\n instance.INTERNAL.registerService(messagingName, factoryMethod, namespaceExports);\n}\nregisterMessaging(firebase);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar CODES = {\n AVAILABLE_IN_WINDOW: 'only-available-in-window',\n AVAILABLE_IN_SW: 'only-available-in-sw',\n SHOULD_BE_INHERITED: 'should-be-overriden',\n BAD_SENDER_ID: 'bad-sender-id',\n INCORRECT_GCM_SENDER_ID: 'incorrect-gcm-sender-id',\n PERMISSION_DEFAULT: 'permission-default',\n PERMISSION_BLOCKED: 'permission-blocked',\n UNSUPPORTED_BROWSER: 'unsupported-browser',\n NOTIFICATIONS_BLOCKED: 'notifications-blocked',\n FAILED_DEFAULT_REGISTRATION: 'failed-serviceworker-registration',\n SW_REGISTRATION_EXPECTED: 'sw-registration-expected',\n GET_SUBSCRIPTION_FAILED: 'get-subscription-failed',\n INVALID_SAVED_TOKEN: 'invalid-saved-token',\n SW_REG_REDUNDANT: 'sw-reg-redundant',\n TOKEN_SUBSCRIBE_FAILED: 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN: 'token-subscribe-no-token',\n TOKEN_SUBSCRIBE_NO_PUSH_SET: 'token-subscribe-no-push-set',\n TOKEN_UNSUBSCRIBE_FAILED: 'token-unsubscribe-failed',\n TOKEN_UPDATE_FAILED: 'token-update-failed',\n TOKEN_UPDATE_NO_TOKEN: 'token-update-no-token',\n USE_SW_BEFORE_GET_TOKEN: 'use-sw-before-get-token',\n INVALID_DELETE_TOKEN: 'invalid-delete-token',\n DELETE_TOKEN_NOT_FOUND: 'delete-token-not-found',\n DELETE_SCOPE_NOT_FOUND: 'delete-scope-not-found',\n BG_HANDLER_FUNCTION_EXPECTED: 'bg-handler-function-expected',\n NO_WINDOW_CLIENT_TO_MSG: 'no-window-client-to-msg',\n UNABLE_TO_RESUBSCRIBE: 'unable-to-resubscribe',\n NO_FCM_TOKEN_FOR_RESUBSCRIBE: 'no-fcm-token-for-resubscribe',\n FAILED_TO_DELETE_TOKEN: 'failed-to-delete-token',\n NO_SW_IN_REG: 'no-sw-in-reg',\n BAD_SCOPE: 'bad-scope',\n BAD_VAPID_KEY: 'bad-vapid-key',\n BAD_SUBSCRIPTION: 'bad-subscription',\n BAD_TOKEN: 'bad-token',\n BAD_PUSH_SET: 'bad-push-set',\n FAILED_DELETE_VAPID_KEY: 'failed-delete-vapid-key',\n INVALID_PUBLIC_VAPID_KEY: 'invalid-public-vapid-key',\n USE_PUBLIC_KEY_BEFORE_GET_TOKEN: 'use-public-key-before-get-token',\n PUBLIC_KEY_DECRYPTION_FAILED: 'public-vapid-key-decryption-failed'\n};\nvar ERROR_MAP = (_a = {},\n _a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n _a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n _a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n _a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n _a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n _a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n _a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n _a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n _a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n _a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n _a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n _a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n _a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n _a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n _a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n _a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n _a[CODES.TOKEN_UNSUBSCRIBE_FAILED] = 'A problem occured while unsubscribing the ' + 'user from FCM: {$message}',\n _a[CODES.TOKEN_UPDATE_FAILED] = 'A problem occured while updating the ' + 'user from FCM: {$message}',\n _a[CODES.TOKEN_UPDATE_NO_TOKEN] = 'FCM returned no token when updating ' + 'the user to push.',\n _a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'The useServiceWorker() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your service worker is used.',\n _a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n _a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n _a[CODES.DELETE_SCOPE_NOT_FOUND] = 'The deletion attempt for service worker ' +\n 'scope could not be performed as the scope was not found.',\n _a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n _a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n _a[CODES.UNABLE_TO_RESUBSCRIBE] = 'There was an error while re-subscribing ' +\n 'the FCM token for push messaging. Will have to resubscribe the ' +\n 'user on next visit. {$message}',\n _a[CODES.NO_FCM_TOKEN_FOR_RESUBSCRIBE] = 'Could not find an FCM token ' +\n 'and as a result, unable to resubscribe. Will have to resubscribe the ' +\n 'user on next visit.',\n _a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n _a[CODES.NO_SW_IN_REG] = 'Even though the service worker registration was ' +\n 'successful, there was a problem accessing the service worker itself.',\n _a[CODES.INCORRECT_GCM_SENDER_ID] = \"Please change your web app manifest's \" +\n \"'gcm_sender_id' value to '103953800507' to use Firebase messaging.\",\n _a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n _a[CODES.BAD_VAPID_KEY] = 'The public VAPID key is not a Uint8Array with 65 bytes.',\n _a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n _a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n _a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n _a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n _a[CODES.INVALID_PUBLIC_VAPID_KEY] = 'The public VAPID key must be a string.',\n _a[CODES.PUBLIC_KEY_DECRYPTION_FAILED] = 'The public VAPID key did not equal ' + '65 bytes when decrypted.',\n _a);\nexport default {\n codes: CODES,\n map: ERROR_MAP\n};\nvar _a;\n\n//# sourceMappingURL=errors.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/errors.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from './errors';\nvar DBInterface = /** @class */ (function () {\n /**\n * @param {string} dbName\n * @param {number} dbVersion\n */\n function DBInterface(dbName, dbVersion) {\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n this.DB_NAME_ = dbName;\n this.dbVersion_ = dbVersion;\n this.openDbPromise_ = null;\n this.TRANSACTION_READ_WRITE = 'readwrite';\n }\n /**\n * Get the indexedDB as a promsie.\n * @protected\n * @return {!Promise} The IndexedDB database\n */\n DBInterface.prototype.openDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(_this.DB_NAME_, _this.dbVersion_);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onupgradeneeded = function (event) {\n try {\n var db = event.target.result;\n _this.onDBUpgrade(db, event);\n }\n catch (err) {\n // close the database as it can't be used.\n db.close();\n reject(err);\n }\n };\n });\n return this.openDbPromise_;\n };\n /**\n * Close the currently open database.\n * @return {!Promise} Returns the result of the promise chain.\n */\n DBInterface.prototype.closeDatabase = function () {\n var _this = this;\n return Promise.resolve().then(function () {\n if (_this.openDbPromise_) {\n return _this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n });\n };\n /**\n * @protected\n * @param {!IDBDatabase} db\n */\n DBInterface.prototype.onDBUpgrade = function (db, event) {\n throw this.errorFactory_.create(Errors.codes.SHOULD_BE_INHERITED);\n };\n return DBInterface;\n}());\nexport default DBInterface;\n\n//# sourceMappingURL=db-interface.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/db-interface.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar DEFAULT_PUBLIC_VAPID_KEY = new Uint8Array([\n 0x04,\n 0x33,\n 0x94,\n 0xf7,\n 0xdf,\n 0xa1,\n 0xeb,\n 0xb1,\n 0xdc,\n 0x03,\n 0xa2,\n 0x5e,\n 0x15,\n 0x71,\n 0xdb,\n 0x48,\n 0xd3,\n 0x2e,\n 0xed,\n 0xed,\n 0xb2,\n 0x34,\n 0xdb,\n 0xb7,\n 0x47,\n 0x3a,\n 0x0c,\n 0x8f,\n 0xc4,\n 0xcc,\n 0xe1,\n 0x6f,\n 0x3c,\n 0x8c,\n 0x84,\n 0xdf,\n 0xab,\n 0xb6,\n 0x66,\n 0x3e,\n 0xf2,\n 0x0c,\n 0xd4,\n 0x8b,\n 0xfe,\n 0xe3,\n 0xf9,\n 0x76,\n 0x2f,\n 0x14,\n 0x1c,\n 0x63,\n 0x08,\n 0x6a,\n 0x6f,\n 0x2d,\n 0xb1,\n 0x1a,\n 0x95,\n 0xb0,\n 0xce,\n 0x37,\n 0xc0,\n 0x9c,\n 0x6e\n]);\nvar SUBSCRIPTION_DETAILS = {\n userVisibleOnly: true,\n applicationServerKey: DEFAULT_PUBLIC_VAPID_KEY\n};\nexport default {\n DEFAULT_PUBLIC_VAPID_KEY: DEFAULT_PUBLIC_VAPID_KEY,\n SUBSCRIPTION_DETAILS: SUBSCRIPTION_DETAILS,\n ENDPOINT: 'https://fcm.googleapis.com'\n // ENDPOINT: 'https://jmt17.google.com'\n};\n\n//# sourceMappingURL=fcm-details.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/fcm-details.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from './errors';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nimport FCMDetails from './fcm-details';\nvar IIDModel = /** @class */ (function () {\n function IIDModel() {\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n }\n /**\n * Given a PushSubscription and messagingSenderId, get an FCM token.\n * @public\n * @param {string} senderId The 'messagingSenderId' to tie the token to.\n * @param {PushSubscription} subscription The PushSusbcription to \"federate\".\n * @param {Uint8Array} publicVapidKey The public VAPID key.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n IIDModel.prototype.getToken = function (senderId, subscription, publicVapidKey) {\n var _this = this;\n var p256dh = arrayBufferToBase64(subscription['getKey']('p256dh'));\n var auth = arrayBufferToBase64(subscription['getKey']('auth'));\n var fcmSubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (publicVapidKey !== FCMDetails.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = arrayBufferToBase64(publicVapidKey);\n fcmSubscribeBody += \"&application_pub_key=\" + applicationPubKey;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmSubscribeBody\n };\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/subscribe', subscribeOptions)\n .then(function (response) { return response.json(); })\n .catch(function () {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_FAILED);\n })\n .then(function (response) {\n var fcmTokenResponse = response;\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n if (!fcmTokenResponse['pushSet']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);\n }\n return {\n token: fcmTokenResponse['token'],\n pushSet: fcmTokenResponse['pushSet']\n };\n });\n };\n /**\n * Update the underlying token details for fcmToken.\n */\n IIDModel.prototype.updateToken = function (senderId, fcmToken, fcmPushSet, subscription, publicVapidKey) {\n var _this = this;\n var p256dh = arrayBufferToBase64(subscription['getKey']('p256dh'));\n var auth = arrayBufferToBase64(subscription['getKey']('auth'));\n var fcmUpdateBody = \"push_set=\" + fcmPushSet + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"authorized_entity=\" + senderId + \"&\") +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (publicVapidKey !== FCMDetails.DEFAULT_PUBLIC_VAPID_KEY) {\n var applicationPubKey = arrayBufferToBase64(publicVapidKey);\n fcmUpdateBody += \"&application_pub_key=\" + applicationPubKey;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var updateOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUpdateBody\n };\n var updateFetchRes;\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/subscribe', updateOptions)\n .then(function (fetchResponse) {\n updateFetchRes = fetchResponse;\n return fetchResponse.json();\n })\n .catch(function () {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UPDATE_FAILED);\n })\n .then(function (fcmTokenResponse) {\n if (!updateFetchRes.ok) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UPDATE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UPDATE_NO_TOKEN);\n }\n return fcmTokenResponse['token'];\n });\n };\n /**\n * Given a fcmToken, pushSet and messagingSenderId, delete an FCM token.\n */\n IIDModel.prototype.deleteToken = function (senderId, fcmToken, fcmPushSet) {\n var _this = this;\n var fcmUnsubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"token=\" + fcmToken + \"&\") +\n (\"pushSet=\" + fcmPushSet);\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var unsubscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmUnsubscribeBody\n };\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/unsubscribe', unsubscribeOptions).then(function (fetchResponse) {\n if (!fetchResponse.ok) {\n return fetchResponse.json().then(function (fcmTokenResponse) {\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UNSUBSCRIBE_FAILED, {\n message: message\n });\n }\n }, function (err) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_UNSUBSCRIBE_FAILED);\n });\n }\n });\n };\n return IIDModel;\n}());\nexport default IIDModel;\n\n//# sourceMappingURL=iid-model.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/iid-model.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport * as tslib_1 from \"tslib\";\nimport DBInterface from './db-interface';\nimport Errors from './errors';\nvar FCM_VAPID_OBJ_STORE = 'fcm_vapid_object_Store';\nvar DB_NAME = 'fcm_vapid_details_db';\nvar DB_VERSION = 1;\nvar UNCOMPRESSED_PUBLIC_KEY_SIZE = 65;\nvar VapidDetailsModel = /** @class */ (function (_super) {\n tslib_1.__extends(VapidDetailsModel, _super);\n function VapidDetailsModel() {\n return _super.call(this, DB_NAME, DB_VERSION) || this;\n }\n /**\n * @override\n * @param {IDBDatabase} db\n */\n VapidDetailsModel.prototype.onDBUpgrade = function (db) {\n db.createObjectStore(FCM_VAPID_OBJ_STORE, {\n keyPath: 'swScope'\n });\n };\n /**\n * Given a service worker scope, this method will look up the vapid key\n * in indexedDB.\n */\n VapidDetailsModel.prototype.getVapidFromSWScope = function (swScope) {\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function () {\n reject(scopeRequest.error);\n };\n scopeRequest.onsuccess = function () {\n var result = scopeRequest.result;\n var vapidKey = null;\n if (result) {\n vapidKey = result.vapidKey;\n }\n resolve(vapidKey);\n };\n });\n });\n };\n /**\n * Save a vapid key against a swScope for later date.\n */\n VapidDetailsModel.prototype.saveVapidDetails = function (swScope, vapidKey) {\n var _this = this;\n if (typeof swScope !== 'string' || swScope.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SCOPE));\n }\n if (vapidKey === null || vapidKey.length !== UNCOMPRESSED_PUBLIC_KEY_SIZE) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_VAPID_KEY));\n }\n var details = {\n swScope: swScope,\n vapidKey: vapidKey\n };\n return this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n resolve();\n };\n });\n });\n };\n /**\n * This method deletes details of the current FCM VAPID key for a SW scope.\n * Resolves once the scope/vapid details have been deleted and returns the\n * deleted vapid key.\n */\n VapidDetailsModel.prototype.deleteVapidDetails = function (swScope) {\n var _this = this;\n return this.getVapidFromSWScope(swScope).then(function (vapidKey) {\n if (!vapidKey) {\n throw _this.errorFactory_.create(Errors.codes.DELETE_SCOPE_NOT_FOUND);\n }\n return _this.openDatabase().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_VAPID_OBJ_STORE], _this.TRANSACTION_READ_WRITE);\n var objectStore = transaction.objectStore(FCM_VAPID_OBJ_STORE);\n var request = objectStore.delete(swScope);\n request.onerror = function () {\n reject(request.error);\n };\n request.onsuccess = function () {\n if (request.result === 0) {\n reject(_this.errorFactory_.create(Errors.codes.FAILED_DELETE_VAPID_KEY));\n return;\n }\n resolve(vapidKey);\n };\n });\n });\n });\n };\n return VapidDetailsModel;\n}(DBInterface));\nexport default VapidDetailsModel;\n\n//# sourceMappingURL=vapid-details-model.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/vapid-details-model.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport * as tslib_1 from \"tslib\";\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from '../models/errors';\nimport TokenDetailsModel from '../models/token-details-model';\nimport VapidDetailsModel from '../models/vapid-details-model';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nimport IIDModel from '../models/iid-model';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\n// Database cache should be invalidated once a week.\nexport var TOKEN_EXPIRATION_MILLIS = 7 * 24 * 60 * 60 * 1000; // 7 days\nvar ControllerInterface = /** @class */ (function () {\n /**\n * An interface of the Messaging Service API\n * @param {!firebase.app.App} app\n */\n function ControllerInterface(app) {\n var _this = this;\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n if (!app.options[SENDER_ID_OPTION_NAME] ||\n typeof app.options[SENDER_ID_OPTION_NAME] !== 'string') {\n throw this.errorFactory_.create(Errors.codes.BAD_SENDER_ID);\n }\n this.messagingSenderId_ = app.options[SENDER_ID_OPTION_NAME];\n this.tokenDetailsModel_ = new TokenDetailsModel();\n this.vapidDetailsModel_ = new VapidDetailsModel();\n this.iidModel_ = new IIDModel();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete(); };\n }\n /**\n * @export\n */\n ControllerInterface.prototype.getToken = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var currentPermission, swReg, publicVapidKey, pushSubscription, tokenDetails;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n currentPermission = this.getNotificationPermission_();\n if (currentPermission !== NOTIFICATION_PERMISSION.granted) {\n if (currentPermission === NOTIFICATION_PERMISSION.denied) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.NOTIFICATIONS_BLOCKED))];\n }\n // We must wait for permission to be granted\n return [2 /*return*/, Promise.resolve(null)];\n }\n return [4 /*yield*/, this.getSWRegistration_()];\n case 1:\n swReg = _a.sent();\n return [4 /*yield*/, this.getPublicVapidKey_()];\n case 2:\n publicVapidKey = _a.sent();\n return [4 /*yield*/, this.getPushSubscription(swReg, publicVapidKey)];\n case 3:\n pushSubscription = _a.sent();\n return [4 /*yield*/, this.tokenDetailsModel_.getTokenDetailsFromSWScope(swReg.scope)];\n case 4:\n tokenDetails = _a.sent();\n if (tokenDetails) {\n return [2 /*return*/, this.manageExistingToken(swReg, pushSubscription, publicVapidKey, tokenDetails)];\n }\n return [2 /*return*/, this.getNewToken(swReg, pushSubscription, publicVapidKey)];\n }\n });\n });\n };\n /**\n * manageExistingToken is triggered if there's an existing FCM token in the\n * database and it can take 3 different actions:\n * 1) Retrieve the existing FCM token from the database.\n * 2) If VAPID details have changed: Delete the existing token and create a\n * new one with the new VAPID key.\n * 3) If the database cache is invalidated: Send a request to FCM to update\n * the token, and to check if the token is still valid on FCM-side.\n */\n ControllerInterface.prototype.manageExistingToken = function (swReg, pushSubscription, publicVapidKey, tokenDetails) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var isTokenValid, now;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTokenValid = this.isTokenStillValid(pushSubscription, publicVapidKey, tokenDetails);\n if (isTokenValid) {\n now = Date.now();\n if (now < tokenDetails['createTime'] + TOKEN_EXPIRATION_MILLIS) {\n return [2 /*return*/, tokenDetails['fcmToken']];\n }\n else {\n return [2 /*return*/, this.updateToken(swReg, pushSubscription, publicVapidKey, tokenDetails)];\n }\n }\n // If the token is no longer valid (for example if the VAPID details\n // have changed), delete the existing token, and create a new one.\n return [4 /*yield*/, this.deleteToken(tokenDetails['fcmToken'])];\n case 1:\n // If the token is no longer valid (for example if the VAPID details\n // have changed), delete the existing token, and create a new one.\n _a.sent();\n return [2 /*return*/, this.getNewToken(swReg, pushSubscription, publicVapidKey)];\n }\n });\n });\n };\n /*\n * Checks if the tokenDetails match the details provided in the clients.\n */\n ControllerInterface.prototype.isTokenStillValid = function (pushSubscription, publicVapidKey, tokenDetails) {\n if (arrayBufferToBase64(publicVapidKey) !== tokenDetails['vapidKey']) {\n return false;\n }\n // getKey() isn't defined in the PushSubscription externs file, hence\n // subscription['getKey']('').\n return (pushSubscription.endpoint === tokenDetails['endpoint'] &&\n arrayBufferToBase64(pushSubscription['getKey']('auth')) ===\n tokenDetails['auth'] &&\n arrayBufferToBase64(pushSubscription['getKey']('p256dh')) ===\n tokenDetails['p256dh']);\n };\n ControllerInterface.prototype.updateToken = function (swReg, pushSubscription, publicVapidKey, tokenDetails) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var updatedToken, allDetails, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 6]);\n return [4 /*yield*/, this.iidModel_.updateToken(this.messagingSenderId_, tokenDetails['fcmToken'], tokenDetails['fcmPushSet'], pushSubscription, publicVapidKey)];\n case 1:\n updatedToken = _a.sent();\n allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: pushSubscription,\n fcmSenderId: this.messagingSenderId_,\n fcmToken: updatedToken,\n fcmPushSet: tokenDetails['fcmPushSet']\n };\n return [4 /*yield*/, this.tokenDetailsModel_.saveTokenDetails(allDetails)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey)];\n case 3:\n _a.sent();\n return [2 /*return*/, updatedToken];\n case 4:\n e_1 = _a.sent();\n return [4 /*yield*/, this.deleteToken(tokenDetails['fcmToken'])];\n case 5:\n _a.sent();\n throw e_1;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n ControllerInterface.prototype.getNewToken = function (swReg, pushSubscription, publicVapidKey) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var tokenDetails, allDetails;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.iidModel_.getToken(this.messagingSenderId_, pushSubscription, publicVapidKey)];\n case 1:\n tokenDetails = _a.sent();\n allDetails = {\n swScope: swReg.scope,\n vapidKey: publicVapidKey,\n subscription: pushSubscription,\n fcmSenderId: this.messagingSenderId_,\n fcmToken: tokenDetails['token'],\n fcmPushSet: tokenDetails['pushSet']\n };\n return [4 /*yield*/, this.tokenDetailsModel_.saveTokenDetails(allDetails)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.vapidDetailsModel_.saveVapidDetails(swReg.scope, publicVapidKey)];\n case 3:\n _a.sent();\n return [2 /*return*/, tokenDetails['token']];\n }\n });\n });\n };\n /**\n * This method deletes tokens that the token manager looks after,\n * unsubscribes the token from FCM and then unregisters the push\n * subscription if it exists. It returns a promise that indicates\n * whether or not the unsubscribe request was processed successfully.\n * @export\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenDetailsModel_\n .deleteToken(token)\n .then(function (details) {\n return _this.iidModel_.deleteToken(details['fcmSenderId'], details['fcmToken'], details['fcmPushSet']);\n })\n .then(function () {\n return _this.getSWRegistration_()\n .then(function (registration) {\n if (registration) {\n return registration.pushManager.getSubscription();\n }\n })\n .then(function (subscription) {\n if (subscription) {\n return subscription.unsubscribe();\n }\n });\n });\n };\n ControllerInterface.prototype.getSWRegistration_ = function () {\n throw this.errorFactory_.create(Errors.codes.SHOULD_BE_INHERITED);\n };\n ControllerInterface.prototype.getPublicVapidKey_ = function () {\n throw this.errorFactory_.create(Errors.codes.SHOULD_BE_INHERITED);\n };\n //\n // The following methods should only be available in the window.\n //\n ControllerInterface.prototype.requestPermission = function () {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * Gets a PushSubscription for the current user.\n */\n ControllerInterface.prototype.getPushSubscription = function (swRegistration, publicVapidKey) {\n return swRegistration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: publicVapidKey\n });\n });\n };\n /**\n * @export\n * @param {!ServiceWorkerRegistration} registration\n */\n ControllerInterface.prototype.useServiceWorker = function (registration) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!string} b64PublicKey\n */\n ControllerInterface.prototype.usePublicVapidKey = function (b64PublicKey) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver\n * @param {function(!Error)=} optError\n * @param {function()=} optCompleted\n * @return {!function()}\n */\n ControllerInterface.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n ControllerInterface.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n //\n // The following methods are used by the service worker only.\n //\n /**\n * @export\n * @param {function(Object)} callback\n */\n ControllerInterface.prototype.setBackgroundMessageHandler = function (callback) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_SW);\n };\n //\n // The following methods are used by the service themselves and not exposed\n // publicly or not expected to be used by developers.\n //\n /**\n * This method is required to adhere to the Firebase interface.\n * It closes any currently open indexdb database connections.\n */\n ControllerInterface.prototype.delete = function () {\n return Promise.all([\n this.tokenDetailsModel_.closeDatabase(),\n this.vapidDetailsModel_.closeDatabase()\n ]);\n };\n /**\n * Returns the current Notification Permission state.\n * @private\n * @return {string} The currenct permission state.\n */\n ControllerInterface.prototype.getNotificationPermission_ = function () {\n return Notification.permission;\n };\n ControllerInterface.prototype.getTokenDetailsModel = function () {\n return this.tokenDetailsModel_;\n };\n ControllerInterface.prototype.getVapidDetailsModel = function () {\n return this.vapidDetailsModel_;\n };\n /**\n * @protected\n * @returns {IIDModel}\n */\n ControllerInterface.prototype.getIIDModel = function () {\n return this.iidModel_;\n };\n return ControllerInterface;\n}());\nexport default ControllerInterface;\n\n//# sourceMappingURL=controller-interface.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/controller-interface.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\n// These fields are strings to prevent closure from thinking goog.getMsg\n// should be used to initialise the values\nvar PARAMS = {\n TYPE_OF_MSG: 'firebase-messaging-msg-type',\n DATA: 'firebase-messaging-msg-data'\n};\n// This value isn't using the TYPE_OF_MSG short hand as closure\n// expects the variable to be defined via goog.getMsg\nvar msgType = {\n PUSH_MSG_RECEIVED: 'push-msg-received',\n NOTIFICATION_CLICKED: 'notification-clicked'\n};\nvar createNewMsg = function (msgType, msgData) {\n var message = (_a = {},\n _a[PARAMS.TYPE_OF_MSG] = msgType,\n _a[PARAMS.DATA] = msgData,\n _a);\n return message;\n var _a;\n};\nexport default {\n PARAMS: PARAMS,\n TYPES_OF_MSG: msgType,\n createNewMsg: createNewMsg\n};\n\n//# sourceMappingURL=worker-page-message.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/worker-page-message.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nexport default {\n path: '/firebase-messaging-sw.js',\n scope: '/firebase-cloud-messaging-push-scope'\n};\n\n//# sourceMappingURL=default-sw.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/default-sw.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport default (function (base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n});\n\n//# sourceMappingURL=base64-to-array-buffer.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/helpers/base64-to-array-buffer.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport * as tslib_1 from \"tslib\";\nimport ControllerInterface from './controller-interface';\nimport Errors from '../models/errors';\nimport WorkerPageMessage from '../models/worker-page-message';\nimport DefaultSW from '../models/default-sw';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nimport FCMDetails from '../models/fcm-details';\nimport base64ToArrayBuffer from '../helpers/base64-to-array-buffer';\nimport { createSubscribe } from '@firebase/util';\nvar WindowController = /** @class */ (function (_super) {\n tslib_1.__extends(WindowController, _super);\n /**\n * A service that provides a MessagingService instance.\n * @param {!firebase.app.App} app\n */\n function WindowController(app) {\n var _this = _super.call(this, app) || this;\n _this.messageObserver_ = null;\n _this.onMessage_ = createSubscribe(function (observer) {\n _this.messageObserver_ = observer;\n });\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = createSubscribe(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n /**\n * @private\n * @type {ServiceWorkerRegistration}\n */\n _this.registrationToUse_;\n /**\n * @private\n * @type {Promise}\n */\n _this.manifestCheckPromise_;\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.messageObserver_ = null;\n /**\n * @private {!firebase.Subscribe} The subscribe function to the onMessage\n * observer.\n */\n _this.onMessage_ = createSubscribe(function (observer) {\n _this.messageObserver_ = observer;\n });\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = createSubscribe(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n _this.setupSWMessageListener_();\n return _this;\n }\n /**\n * This method returns an FCM token if it can be generated.\n * The return promise will reject if the browser doesn't support\n * FCM, if permission is denied for notifications or it's not\n * possible to generate a token.\n * @export\n * @return {Promise | Promise} Returns a promise the\n * resolves to an FCM token or null if permission isn't granted.\n */\n WindowController.prototype.getToken = function () {\n var _this = this;\n // Check that the required API's are available\n if (!this.isSupported_()) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.UNSUPPORTED_BROWSER));\n }\n return this.manifestCheck_().then(function () {\n return _super.prototype.getToken.call(_this);\n });\n };\n /**\n * The method checks that a manifest is defined and has the correct GCM\n * sender ID.\n * @private\n * @return {Promise} Returns a promise that resolves if the manifest matches\n * our required sender ID\n */\n WindowController.prototype.manifestCheck_ = function () {\n var _this = this;\n if (this.manifestCheckPromise_) {\n return this.manifestCheckPromise_;\n }\n var manifestTag = document.querySelector('link[rel=\"manifest\"]');\n if (!manifestTag) {\n this.manifestCheckPromise_ = Promise.resolve();\n }\n else {\n this.manifestCheckPromise_ = fetch(manifestTag.href)\n .then(function (response) {\n return response.json();\n })\n .catch(function () {\n // If the download or parsing fails allow check.\n // We only want to error if we KNOW that the gcm_sender_id is incorrect.\n })\n .then(function (manifestContent) {\n if (!manifestContent) {\n return;\n }\n if (!manifestContent['gcm_sender_id']) {\n return;\n }\n if (manifestContent['gcm_sender_id'] !== '103953800507') {\n throw _this.errorFactory_.create(Errors.codes.INCORRECT_GCM_SENDER_ID);\n }\n });\n }\n return this.manifestCheckPromise_;\n };\n /**\n * Request permission if it is not currently granted\n * @export\n * @returns {Promise} Resolves if the permission was granted, otherwise\n * rejects\n */\n WindowController.prototype.requestPermission = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _this = this;\n return tslib_1.__generator(this, function (_a) {\n if (Notification.permission === NOTIFICATION_PERMISSION.granted) {\n return [2 /*return*/];\n }\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var managePermissionResult = function (result) {\n if (result === NOTIFICATION_PERMISSION.granted) {\n return resolve();\n }\n else if (result === NOTIFICATION_PERMISSION.denied) {\n return reject(_this.errorFactory_.create(Errors.codes.PERMISSION_BLOCKED));\n }\n else {\n return reject(_this.errorFactory_.create(Errors.codes.PERMISSION_DEFAULT));\n }\n };\n // The Notification.requestPermission API was changed to\n // return a promise so now have to handle both in case\n // browsers stop support callbacks for promised version\n var permissionPromise = Notification.requestPermission(managePermissionResult);\n if (permissionPromise) {\n // Prefer the promise version as it's the future API.\n permissionPromise.then(managePermissionResult);\n }\n })];\n });\n });\n };\n /**\n * This method allows a developer to override the default service worker and\n * instead use a custom service worker.\n * @export\n * @param {!ServiceWorkerRegistration} registration The service worker\n * registration that should be used to receive the push messages.\n */\n WindowController.prototype.useServiceWorker = function (registration) {\n if (!(registration instanceof ServiceWorkerRegistration)) {\n throw this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED);\n }\n if (typeof this.registrationToUse_ !== 'undefined') {\n throw this.errorFactory_.create(Errors.codes.USE_SW_BEFORE_GET_TOKEN);\n }\n this.registrationToUse_ = registration;\n };\n /**\n * This method allows a developer to override the default vapid key\n * and instead use a custom VAPID public key.\n * @export\n * @param {!string} publicKey A URL safe base64 encoded string.\n */\n WindowController.prototype.usePublicVapidKey = function (publicKey) {\n if (typeof publicKey !== 'string') {\n throw this.errorFactory_.create(Errors.codes.INVALID_PUBLIC_VAPID_KEY);\n }\n if (typeof this.publicVapidKeyToUse_ !== 'undefined') {\n throw this.errorFactory_.create(Errors.codes.USE_PUBLIC_KEY_BEFORE_GET_TOKEN);\n }\n var parsedKey = base64ToArrayBuffer(publicKey);\n if (parsedKey.length !== 65) {\n throw this.errorFactory_.create(Errors.codes.PUBLIC_KEY_DECRYPTION_FAILED);\n }\n this.publicVapidKeyToUse_ = parsedKey;\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver An observer object\n * or a function triggered on message.\n * @param {function(!Error)=} optError Optional A function triggered on\n * message error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n return this.onMessage_(nextOrObserver, optError, optCompleted);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n return this.onTokenRefresh_(nextOrObserver, optError, optCompleted);\n };\n /**\n * Given a registration, wait for the service worker it relates to\n * become activer\n * @private\n * @param {ServiceWorkerRegistration} registration Registration to wait\n * for service worker to become active\n * @return {Promise} Wait for service worker\n * registration to become active\n */\n WindowController.prototype.waitForRegistrationToActivate_ = function (registration) {\n var _this = this;\n var serviceWorker = registration.installing || registration.waiting || registration.active;\n return new Promise(function (resolve, reject) {\n if (!serviceWorker) {\n // This is a rare scenario but has occured in firefox\n reject(_this.errorFactory_.create(Errors.codes.NO_SW_IN_REG));\n return;\n }\n // Because the Promise function is called on next tick there is a\n // small chance that the worker became active or redundant already.\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n return;\n }\n if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(Errors.codes.SW_REG_REDUNDANT));\n return;\n }\n var stateChangeListener = function () {\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n }\n else if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(Errors.codes.SW_REG_REDUNDANT));\n }\n else {\n // Return early and wait to next state change\n return;\n }\n serviceWorker.removeEventListener('statechange', stateChangeListener);\n };\n serviceWorker.addEventListener('statechange', stateChangeListener);\n });\n };\n /**\n * This will regiater the default service worker and return the registration\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n WindowController.prototype.getSWRegistration_ = function () {\n var _this = this;\n if (this.registrationToUse_) {\n return this.waitForRegistrationToActivate_(this.registrationToUse_);\n }\n // Make the registration null so we know useServiceWorker will not\n // use a new service worker as registrationToUse_ is no longer undefined\n this.registrationToUse_ = null;\n return navigator.serviceWorker\n .register(DefaultSW.path, {\n scope: DefaultSW.scope\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: err.message\n });\n })\n .then(function (registration) {\n return _this.waitForRegistrationToActivate_(registration).then(function () {\n _this.registrationToUse_ = registration;\n // We update after activation due to an issue with Firefox v49 where\n // a race condition occassionally causes the service work to not\n // install\n registration.update();\n return registration;\n });\n });\n };\n /**\n * This will return the default VAPID key or the uint8array version of the public VAPID key\n * provided by the developer.\n * @private\n */\n WindowController.prototype.getPublicVapidKey_ = function () {\n if (this.publicVapidKeyToUse_) {\n return Promise.resolve(this.publicVapidKeyToUse_);\n }\n return Promise.resolve(FCMDetails.DEFAULT_PUBLIC_VAPID_KEY);\n };\n /**\n * This method will set up a message listener to handle\n * events from the service worker that should trigger\n * events in the page.\n *\n * @private\n */\n WindowController.prototype.setupSWMessageListener_ = function () {\n var _this = this;\n if (!('serviceWorker' in navigator)) {\n return;\n }\n navigator.serviceWorker.addEventListener('message', function (event) {\n if (!event.data || !event.data[WorkerPageMessage.PARAMS.TYPE_OF_MSG]) {\n // Not a message from FCM\n return;\n }\n var workerPageMessage = event.data;\n switch (workerPageMessage[WorkerPageMessage.PARAMS.TYPE_OF_MSG]) {\n case WorkerPageMessage.TYPES_OF_MSG.PUSH_MSG_RECEIVED:\n case WorkerPageMessage.TYPES_OF_MSG.NOTIFICATION_CLICKED:\n var pushMessage = workerPageMessage[WorkerPageMessage.PARAMS.DATA];\n if (_this.messageObserver_) {\n _this.messageObserver_.next(pushMessage);\n }\n break;\n default:\n // Noop.\n break;\n }\n }, false);\n };\n /**\n * Checks to see if the required API's are valid or not.\n * @private\n * @return {boolean} Returns true if the desired APIs are available.\n */\n WindowController.prototype.isSupported_ = function () {\n return ('serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n };\n return WindowController;\n}(ControllerInterface));\nexport default WindowController;\n\n//# sourceMappingURL=window-controller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/window-controller.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport * as tslib_1 from \"tslib\";\nimport ControllerInterface from './controller-interface';\nimport Errors from '../models/errors';\nimport FCMDetails from '../models/fcm-details';\nimport WorkerPageMessage from '../models/worker-page-message';\nvar FCM_MSG = 'FCM_MSG';\nvar SWController = /** @class */ (function (_super) {\n tslib_1.__extends(SWController, _super);\n function SWController(app) {\n var _this = _super.call(this, app) || this;\n self.addEventListener('push', function (e) { return _this.onPush_(e); }, false);\n self.addEventListener('pushsubscriptionchange', function (e) { return _this.onSubChange_(e); }, false);\n self.addEventListener('notificationclick', function (e) { return _this.onNotificationClick_(e); }, false);\n /**\n * @private\n * @type {function(Object)|null}\n */\n _this.bgMessageHandler_ = null;\n return _this;\n }\n /**\n * A handler for push events that shows notifications based on the content of\n * the payload.\n *\n * The payload must be a JSON-encoded Object with a `notification` key. The\n * value of the `notification` property will be used as the NotificationOptions\n * object passed to showNotification. Additionally, the `title` property of the\n * notification object will be used as the title.\n *\n * If there is no notification data in the payload then no notification will be\n * shown.\n * @private\n */\n SWController.prototype.onPush_ = function (event) {\n var _this = this;\n var msgPayload;\n try {\n msgPayload = event.data.json();\n }\n catch (err) {\n // Not JSON so not an FCM message\n return;\n }\n var handleMsgPromise = this.hasVisibleClients_().then(function (hasVisibleClients) {\n if (hasVisibleClients) {\n // Do not need to show a notification.\n if (msgPayload.notification || _this.bgMessageHandler_) {\n // Send to page\n return _this.sendMessageToWindowClients_(msgPayload);\n }\n return;\n }\n var notificationDetails = _this.getNotificationData_(msgPayload);\n if (notificationDetails) {\n var notificationTitle_1 = notificationDetails.title || '';\n return _this.getSWRegistration_().then(function (reg) {\n return reg.showNotification(notificationTitle_1, notificationDetails);\n });\n }\n else if (_this.bgMessageHandler_) {\n return _this.bgMessageHandler_(msgPayload);\n }\n });\n event.waitUntil(handleMsgPromise);\n };\n /**\n * @private\n */\n SWController.prototype.onSubChange_ = function (event) {\n var _this = this;\n var promiseChain = this.getSWRegistration_()\n .then(function (registration) {\n return registration.pushManager\n .getSubscription()\n .then(function (subscription) {\n // TODO: Check if it's still valid\n // TODO: If not, then update token\n })\n .catch(function (err) {\n // The best thing we can do is log this to the terminal so\n // developers might notice the error.\n var tokenDetailsModel = _this.getTokenDetailsModel();\n return tokenDetailsModel\n .getTokenDetailsFromSWScope(registration.scope)\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n // This should rarely occure, but could if indexedDB\n // is corrupted or wiped\n throw err;\n }\n // Attempt to delete the token if we know it's bad\n return _this.deleteToken(tokenDetails['fcmToken']).then(function () {\n throw err;\n });\n });\n });\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\n });\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n */\n SWController.prototype.onNotificationClick_ = function (event) {\n var _this = this;\n if (!(event.notification &&\n event.notification.data &&\n event.notification.data[FCM_MSG])) {\n // Not an FCM notification, do nothing.\n return;\n }\n // Prevent other listeners from receiving the event\n event.stopImmediatePropagation();\n event.notification.close();\n var msgPayload = event.notification.data[FCM_MSG];\n if (!msgPayload['notification']) {\n // Nothing to do.\n return;\n }\n var clickAction = msgPayload['notification']['click_action'];\n if (!clickAction) {\n // Nothing to do.\n return;\n }\n var promiseChain = this.getWindowClient_(clickAction)\n .then(function (windowClient) {\n if (!windowClient) {\n // Unable to find window client so need to open one.\n return self.clients.openWindow(clickAction);\n }\n return windowClient.focus();\n })\n .then(function (windowClient) {\n if (!windowClient) {\n // Window Client will not be returned if it's for a third party origin.\n return;\n }\n // Delete notification data from payload before sending to the page.\n var notificationData = msgPayload['notification'];\n delete msgPayload['notification'];\n var internalMsg = WorkerPageMessage.createNewMsg(WorkerPageMessage.TYPES_OF_MSG.NOTIFICATION_CLICKED, msgPayload);\n // Attempt to send a message to the client to handle the data\n // Is affected by: https://github.com/slightlyoff/ServiceWorker/issues/728\n return _this.attemptToMessageClient_(windowClient, internalMsg);\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n * @param {Object} msgPayload\n * @return {NotificationOptions|undefined}\n */\n SWController.prototype.getNotificationData_ = function (msgPayload) {\n if (!msgPayload) {\n return;\n }\n if (typeof msgPayload.notification !== 'object') {\n return;\n }\n var notificationInformation = Object.assign({}, msgPayload.notification);\n // Put the message payload under FCM_MSG name so we can identify the\n // notification as being an FCM notification vs a notification from\n // somewhere else (i.e. normal web push or developer generated\n // notification).\n notificationInformation['data'] = (_a = {},\n _a[FCM_MSG] = msgPayload,\n _a);\n return notificationInformation;\n var _a;\n };\n /**\n * Calling setBackgroundMessageHandler will opt in to some specific\n * behaviours.\n * 1.) If a notification doesn't need to be shown due to a window already\n * being visible, then push messages will be sent to the page.\n * 2.) If a notification needs to be shown, and the message contains no\n * notification data this method will be called\n * and the promise it returns will be passed to event.waitUntil.\n * If you do not set this callback then all push messages will let and the\n * developer can handle them in a their own 'push' event callback\n * @export\n * @param {function(Object)} callback The callback to be called when a push\n * message is received and a notification must be shown. The callback will\n * be given the data from the push message.\n */\n SWController.prototype.setBackgroundMessageHandler = function (callback) {\n if (!callback || typeof callback !== 'function') {\n throw this.errorFactory_.create(Errors.codes.BG_HANDLER_FUNCTION_EXPECTED);\n }\n this.bgMessageHandler_ = callback;\n };\n /**\n * @private\n * @param {string} url The URL to look for when focusing a client.\n * @return {Object} Returns an existing window client or a newly opened\n * WindowClient.\n */\n SWController.prototype.getWindowClient_ = function (url) {\n // Use URL to normalize the URL when comparing to windowClients.\n // This at least handles whether to include trailing slashes or not\n var parsedURL = new URL(url, self.location).href;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var suitableClient = null;\n for (var i = 0; i < clientList.length; i++) {\n var parsedClientUrl = new URL(clientList[i].url, self.location).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n return suitableClient;\n }\n return null;\n });\n };\n /**\n * This message will attempt to send the message to a window client.\n * @private\n * @param {Object} client The WindowClient to send the message to.\n * @param {Object} message The message to send to the client.\n * @returns {Promise} Returns a promise that resolves after sending the\n * message. This does not guarantee that the message was successfully\n * received.\n */\n SWController.prototype.attemptToMessageClient_ = function (client, message) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n // NOTE: This returns a promise in case this API is abstracted later on to\n // do additional work\n if (!client) {\n return [2 /*return*/, Promise.reject(this.errorFactory_.create(Errors.codes.NO_WINDOW_CLIENT_TO_MSG))];\n }\n client.postMessage(message);\n return [2 /*return*/];\n });\n });\n };\n /**\n * @private\n * @returns {Promise} If there is currently a visible WindowClient,\n * this method will resolve to true, otherwise false.\n */\n SWController.prototype.hasVisibleClients_ = function () {\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n return clientList.some(function (client) { return client.visibilityState === 'visible'; });\n });\n };\n /**\n * @private\n * @param {Object} msgPayload The data from the push event that should be sent\n * to all available pages.\n * @returns {Promise} Returns a promise that resolves once the message\n * has been sent to all WindowClients.\n */\n SWController.prototype.sendMessageToWindowClients_ = function (msgPayload) {\n var _this = this;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var internalMsg = WorkerPageMessage.createNewMsg(WorkerPageMessage.TYPES_OF_MSG.PUSH_MSG_RECEIVED, msgPayload);\n return Promise.all(clientList.map(function (client) {\n return _this.attemptToMessageClient_(client, internalMsg);\n }));\n });\n };\n /**\n * This will register the default service worker and return the registration.\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n SWController.prototype.getSWRegistration_ = function () {\n return Promise.resolve(self.registration);\n };\n /**\n * This will return the default VAPID key or the uint8array version of the\n * public VAPID key provided by the developer.\n */\n SWController.prototype.getPublicVapidKey_ = function () {\n var _this = this;\n return this.getSWRegistration_()\n .then(function (swReg) {\n return _this.getVapidDetailsModel().getVapidFromSWScope(swReg.scope);\n })\n .then(function (vapidKeyFromDatabase) {\n if (vapidKeyFromDatabase === null) {\n return FCMDetails.DEFAULT_PUBLIC_VAPID_KEY;\n }\n return vapidKeyFromDatabase;\n });\n };\n return SWController;\n}(ControllerInterface));\nexport default SWController;\n\n//# sourceMappingURL=sw-controller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/sw-controller.js\n// module id = null\n// module chunks = ","/*!\n * @license Firebase v4.12.1\n * Build: rev-5cfbafd\n * Terms: https://firebase.google.com/terms/\n */\ntry {\n webpackJsonpFirebase([2],{\n\n/***/ 122:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(123);\n\n\n/***/ }),\n\n/***/ 123:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../app/dist/esm/index.js + 1 modules\nvar esm = __webpack_require__(7);\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/constants.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Constants used in the Firebase Storage library.\n */\n/**\n * Domain and scheme for API calls.\n */\nvar domainBase = 'https://firebasestorage.googleapis.com';\n/**\n * Domain and scheme for object downloads.\n */\nvar downloadBase = 'https://firebasestorage.googleapis.com';\n/**\n * Base URL for non-upload calls to the API.\n */\nvar apiBaseUrl = '/v0';\n/**\n * Base URL for upload calls to the API.\n */\nvar apiUploadBaseUrl = '/v0';\nfunction setDomainBase(domainBase) {\n domainBase = domainBase;\n}\nvar configOption = 'storageBucket';\n/**\n * 1 minute\n */\nvar shortMaxOperationRetryTime = 1 * 60 * 1000;\n/**\n * 2 minutes\n */\nvar defaultMaxOperationRetryTime = 2 * 60 * 1000;\n/**\n * 10 minutes\n */\nvar defaultMaxUploadRetryTime = 10 * 60 * 100;\n/**\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\n * enough for us to use it directly.\n */\nvar minSafeInteger = -9007199254740991;\n\n//# sourceMappingURL=constants.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/error.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar FirebaseStorageError = /** @class */ (function () {\n function FirebaseStorageError(code, message) {\n this.code_ = prependCode(code);\n this.message_ = 'Firebase Storage: ' + message;\n this.serverResponse_ = null;\n this.name_ = 'FirebaseError';\n }\n FirebaseStorageError.prototype.codeProp = function () {\n return this.code;\n };\n FirebaseStorageError.prototype.codeEquals = function (code) {\n return prependCode(code) === this.codeProp();\n };\n FirebaseStorageError.prototype.serverResponseProp = function () {\n return this.serverResponse_;\n };\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\n this.serverResponse_ = serverResponse;\n };\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\n get: function () {\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\n get: function () {\n return this.code_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\n get: function () {\n return this.message_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\n get: function () {\n return this.serverResponse_;\n },\n enumerable: true,\n configurable: true\n });\n return FirebaseStorageError;\n}());\n\nvar errors = {};\nvar Code = {\n // Shared between all platforms\n UNKNOWN: 'unknown',\n OBJECT_NOT_FOUND: 'object-not-found',\n BUCKET_NOT_FOUND: 'bucket-not-found',\n PROJECT_NOT_FOUND: 'project-not-found',\n QUOTA_EXCEEDED: 'quota-exceeded',\n UNAUTHENTICATED: 'unauthenticated',\n UNAUTHORIZED: 'unauthorized',\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\n INVALID_CHECKSUM: 'invalid-checksum',\n CANCELED: 'canceled',\n // JS specific\n INVALID_EVENT_NAME: 'invalid-event-name',\n INVALID_URL: 'invalid-url',\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\n NO_DEFAULT_BUCKET: 'no-default-bucket',\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\n NO_DOWNLOAD_URL: 'no-download-url',\n INVALID_ARGUMENT: 'invalid-argument',\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\n APP_DELETED: 'app-deleted',\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\n INVALID_FORMAT: 'invalid-format',\n INTERNAL_ERROR: 'internal-error'\n};\nfunction prependCode(code) {\n return 'storage/' + code;\n}\nfunction unknown() {\n var message = 'An unknown error occurred, please check the error payload for ' +\n 'server response.';\n return new FirebaseStorageError(Code.UNKNOWN, message);\n}\nfunction objectNotFound(path) {\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\n}\nfunction bucketNotFound(bucket) {\n return new FirebaseStorageError(Code.BUCKET_NOT_FOUND, \"Bucket '\" + bucket + \"' does not exist.\");\n}\nfunction projectNotFound(project) {\n return new FirebaseStorageError(Code.PROJECT_NOT_FOUND, \"Project '\" + project + \"' does not exist.\");\n}\nfunction quotaExceeded(bucket) {\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\n bucket +\n \"' exceeded, please view quota on \" +\n 'https://firebase.google.com/pricing/.');\n}\nfunction unauthenticated() {\n var message = 'User is not authenticated, please authenticate using Firebase ' +\n 'Authentication and try again.';\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\n}\nfunction unauthorized(path) {\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\n}\nfunction retryLimitExceeded() {\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\n}\nfunction invalidChecksum(path, checksum, calculated) {\n return new FirebaseStorageError(Code.INVALID_CHECKSUM, \"Uploaded/downloaded object '\" +\n path +\n \"' has checksum '\" +\n checksum +\n \"' which does not match '\" +\n calculated +\n \"'. Please retry the upload/download.\");\n}\nfunction error_canceled() {\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\n}\nfunction invalidEventName(name) {\n return new FirebaseStorageError(Code.INVALID_EVENT_NAME, \"Invalid event name '\" + name + \"'.\");\n}\nfunction invalidUrl(url) {\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\n}\nfunction invalidDefaultBucket(bucket) {\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\n}\nfunction noDefaultBucket() {\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\n \"found. Did you set the '\" +\n configOption +\n \"' property when initializing the app?\");\n}\nfunction cannotSliceBlob() {\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\n}\nfunction serverFileWrongSize() {\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\n}\nfunction noDownloadURL() {\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\n}\nfunction invalidArgument(index, fnName, message) {\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\n}\nfunction invalidArgumentCount(argMin, argMax, fnName, real) {\n var countPart;\n var plural;\n if (argMin === argMax) {\n countPart = argMin;\n plural = argMin === 1 ? 'argument' : 'arguments';\n }\n else {\n countPart = 'between ' + argMin + ' and ' + argMax;\n plural = 'arguments';\n }\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\n fnName +\n '`: Expected ' +\n countPart +\n ' ' +\n plural +\n ', received ' +\n real +\n '.');\n}\nfunction appDeleted() {\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\n}\n/**\n * @param name The name of the operation that was invalid.\n */\nfunction invalidRootOperation(name) {\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\n name +\n \"' cannot be performed on a root reference, create a non-root \" +\n \"reference using child, such as .child('file.png').\");\n}\n/**\n * @param format The format that was not valid.\n * @param message A message describing the format violation.\n */\nfunction invalidFormat(format, message) {\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\n}\n/**\n * @param message A message describing the internal error.\n */\nfunction internalError(message) {\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\n}\n\n//# sourceMappingURL=error.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/string.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringFormat = {\n RAW: 'raw',\n BASE64: 'base64',\n BASE64URL: 'base64url',\n DATA_URL: 'data_url'\n};\nfunction formatValidator(stringFormat) {\n switch (stringFormat) {\n case StringFormat.RAW:\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n case StringFormat.DATA_URL:\n return;\n default:\n throw 'Expected one of the event types: [' +\n StringFormat.RAW +\n ', ' +\n StringFormat.BASE64 +\n ', ' +\n StringFormat.BASE64URL +\n ', ' +\n StringFormat.DATA_URL +\n '].';\n }\n}\n/**\n * @struct\n */\nvar StringData = /** @class */ (function () {\n function StringData(data, opt_contentType) {\n this.data = data;\n this.contentType = opt_contentType || null;\n }\n return StringData;\n}());\n\nfunction dataFromString(format, string) {\n switch (format) {\n case StringFormat.RAW:\n return new StringData(utf8Bytes_(string));\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n return new StringData(base64Bytes_(format, string));\n case StringFormat.DATA_URL:\n return new StringData(dataURLBytes_(string), dataURLContentType_(string));\n }\n // assert(false);\n throw unknown();\n}\nfunction utf8Bytes_(string) {\n var b = [];\n for (var i = 0; i < string.length; i++) {\n var c = string.charCodeAt(i);\n if (c <= 127) {\n b.push(c);\n }\n else {\n if (c <= 2047) {\n b.push(192 | (c >> 6), 128 | (c & 63));\n }\n else {\n if ((c & 64512) == 55296) {\n // The start of a surrogate pair.\n var valid = i < string.length - 1 &&\n (string.charCodeAt(i + 1) & 64512) == 56320;\n if (!valid) {\n // The second surrogate wasn't there.\n b.push(239, 191, 189);\n }\n else {\n var hi = c;\n var lo = string.charCodeAt(++i);\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n else {\n if ((c & 64512) == 56320) {\n // Invalid low surrogate.\n b.push(239, 191, 189);\n }\n else {\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n }\n }\n }\n return new Uint8Array(b);\n}\nfunction percentEncodedBytes_(string) {\n var decoded;\n try {\n decoded = decodeURIComponent(string);\n }\n catch (e) {\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\n }\n return utf8Bytes_(decoded);\n}\nfunction base64Bytes_(format, string) {\n switch (format) {\n case StringFormat.BASE64: {\n var hasMinus = string.indexOf('-') !== -1;\n var hasUnder = string.indexOf('_') !== -1;\n if (hasMinus || hasUnder) {\n var invalidChar = hasMinus ? '-' : '_';\n throw invalidFormat(format, \"Invalid character '\" +\n invalidChar +\n \"' found: is it base64url encoded?\");\n }\n break;\n }\n case StringFormat.BASE64URL: {\n var hasPlus = string.indexOf('+') !== -1;\n var hasSlash = string.indexOf('/') !== -1;\n if (hasPlus || hasSlash) {\n var invalidChar = hasPlus ? '+' : '/';\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\n }\n string = string.replace(/-/g, '+').replace(/_/g, '/');\n break;\n }\n }\n var bytes;\n try {\n bytes = atob(string);\n }\n catch (e) {\n throw invalidFormat(format, 'Invalid character found');\n }\n var array = new Uint8Array(bytes.length);\n for (var i = 0; i < bytes.length; i++) {\n array[i] = bytes.charCodeAt(i);\n }\n return array;\n}\n/**\n * @struct\n */\nvar string_DataURLParts = /** @class */ (function () {\n function DataURLParts(dataURL) {\n this.base64 = false;\n this.contentType = null;\n var matches = dataURL.match(/^data:([^,]+)?,/);\n if (matches === null) {\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\n }\n var middle = matches[1] || null;\n if (middle != null) {\n this.base64 = endsWith(middle, ';base64');\n this.contentType = this.base64\n ? middle.substring(0, middle.length - ';base64'.length)\n : middle;\n }\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\n }\n return DataURLParts;\n}());\nfunction dataURLBytes_(string) {\n var parts = new string_DataURLParts(string);\n if (parts.base64) {\n return base64Bytes_(StringFormat.BASE64, parts.rest);\n }\n else {\n return percentEncodedBytes_(parts.rest);\n }\n}\nfunction dataURLContentType_(string) {\n var parts = new string_DataURLParts(string);\n return parts.contentType;\n}\nfunction endsWith(s, end) {\n var longEnough = s.length >= end.length;\n if (!longEnough) {\n return false;\n }\n return s.substring(s.length - end.length) === end;\n}\n\n//# sourceMappingURL=string.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/taskenums.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TaskEvent = {\n /** Triggered whenever the task changes or progress is updated. */\n STATE_CHANGED: 'state_changed'\n};\nvar InternalTaskState = {\n RUNNING: 'running',\n PAUSING: 'pausing',\n PAUSED: 'paused',\n SUCCESS: 'success',\n CANCELING: 'canceling',\n CANCELED: 'canceled',\n ERROR: 'error'\n};\nvar TaskState = {\n /** The task is currently transferring data. */\n RUNNING: 'running',\n /** The task was paused by the user. */\n PAUSED: 'paused',\n /** The task completed successfully. */\n SUCCESS: 'success',\n /** The task was canceled. */\n CANCELED: 'canceled',\n /** The task failed with an error. */\n ERROR: 'error'\n};\nfunction taskStateFromInternalTaskState(state) {\n switch (state) {\n case InternalTaskState.RUNNING:\n case InternalTaskState.PAUSING:\n case InternalTaskState.CANCELING:\n return TaskState.RUNNING;\n case InternalTaskState.PAUSED:\n return TaskState.PAUSED;\n case InternalTaskState.SUCCESS:\n return TaskState.SUCCESS;\n case InternalTaskState.CANCELED:\n return TaskState.CANCELED;\n case InternalTaskState.ERROR:\n return TaskState.ERROR;\n default:\n // TODO(andysoto): assert(false);\n return TaskState.ERROR;\n }\n}\n\n//# sourceMappingURL=taskenums.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/object.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains methods for working with objects.\n */\nfunction contains(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction forEach(obj, f) {\n for (var key in obj) {\n if (contains(obj, key)) {\n f(key, obj[key]);\n }\n }\n}\nfunction clone(obj) {\n if (obj == null) {\n return {};\n }\n var c = {};\n forEach(obj, function (key, val) {\n c[key] = val;\n });\n return c;\n}\n\n//# sourceMappingURL=object.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/promise_external.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Implements the promise abstraction interface for external\n * (public SDK) packaging, which just passes through to the firebase-app impl.\n */\n/**\n * @template T\n * @param {function((function(T): void),\n * (function(!Error): void))} resolver\n */\nfunction make(resolver) {\n return new Promise(resolver);\n}\n/**\n * @template T\n */\nfunction promise_external_resolve(value) {\n return Promise.resolve(value);\n}\nfunction promise_external_reject(error) {\n return Promise.reject(error);\n}\n\n//# sourceMappingURL=promise_external.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/type.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @return False if the object is undefined or null, true otherwise.\n */\nfunction isDef(p) {\n return p != null;\n}\nfunction isJustDef(p) {\n return p !== void 0;\n}\nfunction isFunction(p) {\n return typeof p === 'function';\n}\nfunction isObject(p) {\n return typeof p === 'object';\n}\nfunction isNonNullObject(p) {\n return isObject(p) && p !== null;\n}\nfunction isNonArrayObject(p) {\n return isObject(p) && !Array.isArray(p);\n}\nfunction isString(p) {\n return typeof p === 'string' || p instanceof String;\n}\nfunction isNumber(p) {\n return typeof p === 'number' || p instanceof Number;\n}\nfunction isNativeBlob(p) {\n return isNativeBlobDefined() && p instanceof Blob;\n}\nfunction isNativeBlobDefined() {\n return typeof Blob !== 'undefined';\n}\n\n//# sourceMappingURL=type.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhrio.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @enum{number}\n */\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\n})(ErrorCode || (ErrorCode = {}));\n\n//# sourceMappingURL=xhrio.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhrio_network.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n/**\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\n * doesn't work in React Native on Android.\n */\nvar xhrio_network_NetworkXhrIo = /** @class */ (function () {\n function NetworkXhrIo() {\n var _this = this;\n this.sent_ = false;\n this.xhr_ = new XMLHttpRequest();\n this.errorCode_ = ErrorCode.NO_ERROR;\n this.sendPromise_ = make(function (resolve, reject) {\n _this.xhr_.addEventListener('abort', function (event) {\n _this.errorCode_ = ErrorCode.ABORT;\n resolve(_this);\n });\n _this.xhr_.addEventListener('error', function (event) {\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\n resolve(_this);\n });\n _this.xhr_.addEventListener('load', function (event) {\n resolve(_this);\n });\n });\n }\n /**\n * @override\n */\n NetworkXhrIo.prototype.send = function (url, method, opt_body, opt_headers) {\n var _this = this;\n if (this.sent_) {\n throw internalError('cannot .send() more than once');\n }\n this.sent_ = true;\n this.xhr_.open(method, url, true);\n if (isDef(opt_headers)) {\n var headers = opt_headers;\n forEach(headers, function (key, val) {\n _this.xhr_.setRequestHeader(key, val.toString());\n });\n }\n if (isDef(opt_body)) {\n this.xhr_.send(opt_body);\n }\n else {\n this.xhr_.send();\n }\n return this.sendPromise_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getErrorCode = function () {\n if (!this.sent_) {\n throw internalError('cannot .getErrorCode() before sending');\n }\n return this.errorCode_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getStatus = function () {\n if (!this.sent_) {\n throw internalError('cannot .getStatus() before sending');\n }\n try {\n return this.xhr_.status;\n }\n catch (e) {\n return -1;\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseText = function () {\n if (!this.sent_) {\n throw internalError('cannot .getResponseText() before sending');\n }\n return this.xhr_.responseText;\n };\n /**\n * Aborts the request.\n * @override\n */\n NetworkXhrIo.prototype.abort = function () {\n this.xhr_.abort();\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\n return this.xhr_.getResponseHeader(header);\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\n if (isDef(this.xhr_.upload)) {\n this.xhr_.upload.addEventListener('progress', listener);\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\n if (isDef(this.xhr_.upload)) {\n this.xhr_.upload.removeEventListener('progress', listener);\n }\n };\n return NetworkXhrIo;\n}());\n\n\n//# sourceMappingURL=xhrio_network.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhriopool.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Factory-like class for creating XhrIo instances.\n */\nvar xhriopool_XhrIoPool = /** @class */ (function () {\n function XhrIoPool() {\n }\n XhrIoPool.prototype.createXhrIo = function () {\n return new xhrio_network_NetworkXhrIo();\n };\n return XhrIoPool;\n}());\n\n\n//# sourceMappingURL=xhriopool.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/json.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns the Object resulting from parsing the given JSON, or null if the\n * given string does not represent a JSON object.\n */\nfunction jsonObjectOrNull(s) {\n var obj;\n try {\n obj = JSON.parse(s);\n }\n catch (e) {\n return null;\n }\n if (isNonArrayObject(obj)) {\n return obj;\n }\n else {\n return null;\n }\n}\n\n//# sourceMappingURL=json.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/location.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functionality related to the parsing/composition of bucket/\n * object location.\n */\n\n/**\n * @struct\n */\nvar location_Location = /** @class */ (function () {\n function Location(bucket, path) {\n this.bucket = bucket;\n this.path_ = path;\n }\n Object.defineProperty(Location.prototype, \"path\", {\n get: function () {\n return this.path_;\n },\n enumerable: true,\n configurable: true\n });\n Location.prototype.fullServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\n };\n Location.prototype.bucketOnlyServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o';\n };\n Location.makeFromBucketSpec = function (bucketString) {\n var bucketLocation;\n try {\n bucketLocation = Location.makeFromUrl(bucketString);\n }\n catch (e) {\n // Not valid URL, use as-is. This lets you put bare bucket names in\n // config.\n return new Location(bucketString, '');\n }\n if (bucketLocation.path === '') {\n return bucketLocation;\n }\n else {\n throw invalidDefaultBucket(bucketString);\n }\n };\n Location.makeFromUrl = function (url) {\n var location = null;\n var bucketDomain = '([A-Za-z0-9.\\\\-]+)';\n function gsModify(loc) {\n if (loc.path.charAt(loc.path.length - 1) === '/') {\n loc.path_ = loc.path_.slice(0, -1);\n }\n }\n var gsPath = '(/(.*))?$';\n var path = '(/([^?#]*).*)?$';\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\n var gsIndices = { bucket: 1, path: 3 };\n function httpModify(loc) {\n loc.path_ = decodeURIComponent(loc.path);\n }\n var version = 'v[A-Za-z0-9_]+';\n var httpRegex = new RegExp('^https?://firebasestorage\\\\.googleapis\\\\.com/' +\n version +\n '/b/' +\n bucketDomain +\n '/o' +\n path, 'i');\n var httpIndices = { bucket: 1, path: 3 };\n var groups = [\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\n { regex: httpRegex, indices: httpIndices, postModify: httpModify }\n ];\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var captures = group.regex.exec(url);\n if (captures) {\n var bucketValue = captures[group.indices.bucket];\n var pathValue = captures[group.indices.path];\n if (!pathValue) {\n pathValue = '';\n }\n location = new Location(bucketValue, pathValue);\n group.postModify(location);\n break;\n }\n }\n if (location == null) {\n throw invalidUrl(url);\n }\n return location;\n };\n return Location;\n}());\n\n\n//# sourceMappingURL=location.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/path.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains helper methods for manipulating paths.\n */\n/**\n * @return Null if the path is already at the root.\n */\nfunction path_parent(path) {\n if (path.length == 0) {\n return null;\n }\n var index = path.lastIndexOf('/');\n if (index === -1) {\n return '';\n }\n var newPath = path.slice(0, index);\n return newPath;\n}\nfunction child(path, childPath) {\n var canonicalChildPath = childPath\n .split('/')\n .filter(function (component) {\n return component.length > 0;\n })\n .join('/');\n if (path.length === 0) {\n return canonicalChildPath;\n }\n else {\n return path + '/' + canonicalChildPath;\n }\n}\n/**\n * Returns the last component of a path.\n * '/foo/bar' -> 'bar'\n * '/foo/bar/baz/' -> 'baz/'\n * '/a' -> 'a'\n */\nfunction lastComponent(path) {\n var index = path.lastIndexOf('/', path.length - 2);\n if (index === -1) {\n return path;\n }\n else {\n return path.slice(index + 1);\n }\n}\n\n//# sourceMappingURL=path.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/url.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functions to create and manipulate URLs for the server API.\n */\n\n\nfunction makeNormalUrl(urlPart) {\n return domainBase + apiBaseUrl + urlPart;\n}\nfunction makeDownloadUrl(urlPart) {\n return downloadBase + apiBaseUrl + urlPart;\n}\nfunction makeUploadUrl(urlPart) {\n return domainBase + apiUploadBaseUrl + urlPart;\n}\nfunction makeQueryString(params) {\n var encode = encodeURIComponent;\n var queryPart = '?';\n forEach(params, function (key, val) {\n var nextPart = encode(key) + '=' + encode(val);\n queryPart = queryPart + nextPart + '&';\n });\n // Chop off the extra '&' or '?' on the end\n queryPart = queryPart.slice(0, -1);\n return queryPart;\n}\n\n//# sourceMappingURL=url.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/metadata.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nfunction noXform_(metadata, value) {\n return value;\n}\n/**\n * @struct\n */\nvar Mapping = /** @class */ (function () {\n function Mapping(server, opt_local, opt_writable, opt_xform) {\n this.server = server;\n this.local = opt_local || server;\n this.writable = !!opt_writable;\n this.xform = opt_xform || noXform_;\n }\n return Mapping;\n}());\n\nvar mappings_ = null;\nfunction xformPath(fullPath) {\n var valid = isString(fullPath);\n if (!valid || fullPath.length < 2) {\n return fullPath;\n }\n else {\n fullPath = fullPath;\n return lastComponent(fullPath);\n }\n}\nfunction getMappings() {\n if (mappings_) {\n return mappings_;\n }\n var mappings = [];\n mappings.push(new Mapping('bucket'));\n mappings.push(new Mapping('generation'));\n mappings.push(new Mapping('metageneration'));\n mappings.push(new Mapping('name', 'fullPath', true));\n function mappingsXformPath(metadata, fullPath) {\n return xformPath(fullPath);\n }\n var nameMapping = new Mapping('name');\n nameMapping.xform = mappingsXformPath;\n mappings.push(nameMapping);\n /**\n * Coerces the second param to a number, if it is defined.\n */\n function xformSize(metadata, size) {\n if (isDef(size)) {\n return +size;\n }\n else {\n return size;\n }\n }\n var sizeMapping = new Mapping('size');\n sizeMapping.xform = xformSize;\n mappings.push(sizeMapping);\n mappings.push(new Mapping('timeCreated'));\n mappings.push(new Mapping('updated'));\n mappings.push(new Mapping('md5Hash', null, true));\n mappings.push(new Mapping('cacheControl', null, true));\n mappings.push(new Mapping('contentDisposition', null, true));\n mappings.push(new Mapping('contentEncoding', null, true));\n mappings.push(new Mapping('contentLanguage', null, true));\n mappings.push(new Mapping('contentType', null, true));\n mappings.push(new Mapping('metadata', 'customMetadata', true));\n /**\n * Transforms a comma-separated string of tokens into a list of download\n * URLs.\n */\n function xformTokens(metadata, tokens) {\n var valid = isString(tokens) && tokens.length > 0;\n if (!valid) {\n // This can happen if objects are uploaded through GCS and retrieved\n // through list, so we don't want to throw an Error.\n return [];\n }\n var encode = encodeURIComponent;\n var tokensList = tokens.split(',');\n var urls = tokensList.map(function (token) {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\n var base = makeDownloadUrl(urlPart);\n var queryString = makeQueryString({\n alt: 'media',\n token: token\n });\n return base + queryString;\n });\n return urls;\n }\n mappings.push(new Mapping('downloadTokens', 'downloadURLs', false, xformTokens));\n mappings_ = mappings;\n return mappings_;\n}\nfunction addRef(metadata, authWrapper) {\n function generateRef() {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var loc = new location_Location(bucket, path);\n return authWrapper.makeStorageReference(loc);\n }\n Object.defineProperty(metadata, 'ref', { get: generateRef });\n}\nfunction fromResource(authWrapper, resource, mappings) {\n var metadata = {};\n metadata['type'] = 'file';\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\n }\n addRef(metadata, authWrapper);\n return metadata;\n}\nfunction fromResourceString(authWrapper, resourceString, mappings) {\n var obj = jsonObjectOrNull(resourceString);\n if (obj === null) {\n return null;\n }\n var resource = obj;\n return fromResource(authWrapper, resource, mappings);\n}\nfunction toResourceString(metadata, mappings) {\n var resource = {};\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n if (mapping.writable) {\n resource[mapping.server] = metadata[mapping.local];\n }\n }\n return JSON.stringify(resource);\n}\nfunction metadataValidator(p) {\n var validType = p && isObject(p);\n if (!validType) {\n throw 'Expected Metadata object.';\n }\n for (var key in p) {\n var val = p[key];\n if (key === 'customMetadata') {\n if (!isObject(val)) {\n throw 'Expected object for \\'customMetadata\\' mapping.';\n }\n }\n else {\n if (isNonNullObject(val)) {\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\n }\n }\n }\n}\n\n//# sourceMappingURL=metadata.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/args.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n/**\n * @param name Name of the function.\n * @param specs Argument specs.\n * @param passed The actual arguments passed to the function.\n * @throws {fbs.Error} If the arguments are invalid.\n */\nfunction validate(name, specs, passed) {\n var minArgs = specs.length;\n var maxArgs = specs.length;\n for (var i = 0; i < specs.length; i++) {\n if (specs[i].optional) {\n minArgs = i;\n break;\n }\n }\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\n if (!validLength) {\n throw invalidArgumentCount(minArgs, maxArgs, name, passed.length);\n }\n for (var i = 0; i < passed.length; i++) {\n try {\n specs[i].validator(passed[i]);\n }\n catch (e) {\n if (e instanceof Error) {\n throw invalidArgument(i, name, e.message);\n }\n else {\n throw invalidArgument(i, name, e);\n }\n }\n }\n}\n/**\n * @struct\n */\nvar args_ArgSpec = /** @class */ (function () {\n function ArgSpec(validator, opt_optional) {\n var self = this;\n this.validator = function (p) {\n if (self.optional && !isJustDef(p)) {\n return;\n }\n validator(p);\n };\n this.optional = !!opt_optional;\n }\n return ArgSpec;\n}());\n\nfunction and_(v1, v2) {\n return function (p) {\n v1(p);\n v2(p);\n };\n}\nfunction stringSpec(opt_validator, opt_optional) {\n function stringValidator(p) {\n if (!isString(p)) {\n throw 'Expected string.';\n }\n }\n var validator;\n if (opt_validator) {\n validator = and_(stringValidator, opt_validator);\n }\n else {\n validator = stringValidator;\n }\n return new args_ArgSpec(validator, opt_optional);\n}\nfunction uploadDataSpec() {\n function validator(p) {\n var valid = p instanceof Uint8Array ||\n p instanceof ArrayBuffer ||\n (isNativeBlobDefined() && p instanceof Blob);\n if (!valid) {\n throw 'Expected Blob or File.';\n }\n }\n return new args_ArgSpec(validator);\n}\nfunction metadataSpec(opt_optional) {\n return new args_ArgSpec(metadataValidator, opt_optional);\n}\nfunction nonNegativeNumberSpec() {\n function validator(p) {\n var valid = isNumber(p) && p >= 0;\n if (!valid) {\n throw 'Expected a number 0 or greater.';\n }\n }\n return new args_ArgSpec(validator);\n}\nfunction looseObjectSpec(opt_validator, opt_optional) {\n function validator(p) {\n var isLooseObject = p === null || (isDef(p) && p instanceof Object);\n if (!isLooseObject) {\n throw 'Expected an Object.';\n }\n if (opt_validator !== undefined && opt_validator !== null) {\n opt_validator(p);\n }\n }\n return new args_ArgSpec(validator, opt_optional);\n}\nfunction nullFunctionSpec(opt_optional) {\n function validator(p) {\n var valid = p === null || isFunction(p);\n if (!valid) {\n throw 'Expected a Function.';\n }\n }\n return new args_ArgSpec(validator, opt_optional);\n}\n\n//# sourceMappingURL=args.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/fs.js\n\nfunction getBlobBuilder() {\n if (typeof BlobBuilder !== 'undefined') {\n return BlobBuilder;\n }\n else if (typeof WebKitBlobBuilder !== 'undefined') {\n return WebKitBlobBuilder;\n }\n else {\n return undefined;\n }\n}\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param var_args The values that will make up the resulting blob.\n * @return The blob.\n */\nfunction getBlob() {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var BlobBuilder = getBlobBuilder();\n if (BlobBuilder !== undefined) {\n var bb = new BlobBuilder();\n for (var i = 0; i < var_args.length; i++) {\n bb.append(var_args[i]);\n }\n return bb.getBlob();\n }\n else {\n if (isNativeBlobDefined()) {\n return new Blob(var_args);\n }\n else {\n throw Error(\"This browser doesn't seem to support creating Blobs\");\n }\n }\n}\n/**\n * Slices the blob. The returned blob contains data from the start byte\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\n *\n * @param blob The blob to be sliced.\n * @param start Index of the starting byte.\n * @param end Index of the ending byte.\n * @return The blob slice or null if not supported.\n */\nfunction sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n else if (blob.mozSlice) {\n return blob.mozSlice(start, end);\n }\n else if (blob.slice) {\n return blob.slice(start, end);\n }\n return null;\n}\n\n//# sourceMappingURL=fs.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/blob.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @file Provides a Blob-like wrapper for various binary types (including the\n * native Blob type). This makes it possible to upload types like ArrayBuffers,\n * making uploads possible in environments without the native Blob type.\n */\n\n\n\n\n/**\n * @param opt_elideCopy If true, doesn't copy mutable input data\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\n * modified after this blob's construction.\n */\nvar blob_FbsBlob = /** @class */ (function () {\n function FbsBlob(data, opt_elideCopy) {\n var size = 0;\n var blobType = '';\n if (isNativeBlob(data)) {\n this.data_ = data;\n size = data.size;\n blobType = data.type;\n }\n else if (data instanceof ArrayBuffer) {\n if (opt_elideCopy) {\n this.data_ = new Uint8Array(data);\n }\n else {\n this.data_ = new Uint8Array(data.byteLength);\n this.data_.set(new Uint8Array(data));\n }\n size = this.data_.length;\n }\n else if (data instanceof Uint8Array) {\n if (opt_elideCopy) {\n this.data_ = data;\n }\n else {\n this.data_ = new Uint8Array(data.length);\n this.data_.set(data);\n }\n size = data.length;\n }\n this.size_ = size;\n this.type_ = blobType;\n }\n FbsBlob.prototype.size = function () {\n return this.size_;\n };\n FbsBlob.prototype.type = function () {\n return this.type_;\n };\n FbsBlob.prototype.slice = function (startByte, endByte) {\n if (isNativeBlob(this.data_)) {\n var realBlob = this.data_;\n var sliced = sliceBlob(realBlob, startByte, endByte);\n if (sliced === null) {\n return null;\n }\n return new FbsBlob(sliced);\n }\n else {\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\n return new FbsBlob(slice, true);\n }\n };\n FbsBlob.getBlob = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (isNativeBlobDefined()) {\n var blobby = var_args.map(function (val) {\n if (val instanceof FbsBlob) {\n return val.data_;\n }\n else {\n return val;\n }\n });\n return new FbsBlob(getBlob.apply(null, blobby));\n }\n else {\n var uint8Arrays = var_args.map(function (val) {\n if (isString(val)) {\n return dataFromString(StringFormat.RAW, val).data;\n }\n else {\n // Blobs don't exist, so this has to be a Uint8Array.\n return val.data_;\n }\n });\n var finalLength_1 = 0;\n uint8Arrays.forEach(function (array) {\n finalLength_1 += array.byteLength;\n });\n var merged_1 = new Uint8Array(finalLength_1);\n var index_1 = 0;\n uint8Arrays.forEach(function (array) {\n for (var i = 0; i < array.length; i++) {\n merged_1[index_1++] = array[i];\n }\n });\n return new FbsBlob(merged_1, true);\n }\n };\n FbsBlob.prototype.uploadData = function () {\n return this.data_;\n };\n return FbsBlob;\n}());\n\n\n//# sourceMappingURL=blob.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/array.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns true if the object is contained in the array (compared with ===).\n * @template T\n */\nfunction array_contains(array, elem) {\n return array.indexOf(elem) !== -1;\n}\n/**\n * Returns a shallow copy of the array or array-like object (e.g. arguments).\n * @template T\n */\nfunction array_clone(arraylike) {\n return Array.prototype.slice.call(arraylike);\n}\n/**\n * Removes the given element from the given array, if it is contained.\n * Directly modifies the passed-in array.\n * @template T\n */\nfunction remove(array, elem) {\n var i = array.indexOf(elem);\n if (i !== -1) {\n array.splice(i, 1);\n }\n}\n\n//# sourceMappingURL=array.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requestinfo.js\nvar RequestInfo = /** @class */ (function () {\n function RequestInfo(url, method, \n /**\n * Returns the value with which to resolve the request's promise. Only called\n * if the request is successful. Throw from this function to reject the\n * returned Request's promise with the thrown error.\n * Note: The XhrIo passed to this function may be reused after this callback\n * returns. Do not keep a reference to it in any way.\n */\n handler, timeout) {\n this.url = url;\n this.method = method;\n this.handler = handler;\n this.timeout = timeout;\n this.urlParams = {};\n this.headers = {};\n this.body = null;\n this.errorHandler = null;\n /**\n * Called with the current number of bytes uploaded and total size (-1 if not\n * computable) of the request body (i.e. used to report upload progress).\n */\n this.progressCallback = null;\n this.successCodes = [200];\n this.additionalRetryCodes = [];\n }\n return RequestInfo;\n}());\n\n\n//# sourceMappingURL=requestinfo.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requests.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n/**\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\n */\nfunction handlerCheck(cndn) {\n if (!cndn) {\n throw unknown();\n }\n}\nfunction metadataHandler(authWrapper, mappings) {\n function handler(xhr, text) {\n var metadata = fromResourceString(authWrapper, text, mappings);\n handlerCheck(metadata !== null);\n return metadata;\n }\n return handler;\n}\nfunction sharedErrorHandler(location) {\n function errorHandler(xhr, err) {\n var newErr;\n if (xhr.getStatus() === 401) {\n newErr = unauthenticated();\n }\n else {\n if (xhr.getStatus() === 402) {\n newErr = quotaExceeded(location.bucket);\n }\n else {\n if (xhr.getStatus() === 403) {\n newErr = unauthorized(location.path);\n }\n else {\n newErr = err;\n }\n }\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nfunction objectErrorHandler(location) {\n var shared = sharedErrorHandler(location);\n function errorHandler(xhr, err) {\n var newErr = shared(xhr, err);\n if (xhr.getStatus() === 404) {\n newErr = objectNotFound(location.path);\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nfunction getMetadata(authWrapper, location, mappings) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'GET';\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction updateMetadata(authWrapper, location, metadata, mappings) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'PATCH';\n var body = toResourceString(metadata, mappings);\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction deleteObject(authWrapper, location) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'DELETE';\n var timeout = authWrapper.maxOperationRetryTime();\n function handler(xhr, text) { }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.successCodes = [200, 204];\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction determineContentType_(metadata, blob) {\n return ((metadata && metadata['contentType']) ||\n (blob && blob.type()) ||\n 'application/octet-stream');\n}\nfunction metadataForUpload_(location, blob, opt_metadata) {\n var metadata = clone(opt_metadata);\n metadata['fullPath'] = location.path;\n metadata['size'] = blob.size();\n if (!metadata['contentType']) {\n metadata['contentType'] = determineContentType_(null, blob);\n }\n return metadata;\n}\nfunction multipartUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var headers = {\n 'X-Goog-Upload-Protocol': 'multipart'\n };\n function genBoundary() {\n var str = '';\n for (var i = 0; i < 2; i++) {\n str =\n str +\n Math.random()\n .toString()\n .slice(2);\n }\n return str;\n }\n var boundary = genBoundary();\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var metadataString = toResourceString(metadata, mappings);\n var preBlobPart = '--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\n metadataString +\n '\\r\\n--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: ' +\n metadata['contentType'] +\n '\\r\\n\\r\\n';\n var postBlobPart = '\\r\\n--' + boundary + '--';\n var body = blob_FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\n if (body === null) {\n throw cannotSliceBlob();\n }\n var urlParams = { name: metadata['fullPath'] };\n var url = makeUploadUrl(urlPart);\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param current The number of bytes that have been uploaded so far.\n * @param total The total number of bytes in the upload.\n * @param opt_finalized True if the server has finished the upload.\n * @param opt_metadata The upload metadata, should\n * only be passed if opt_finalized is true.\n * @struct\n */\nvar ResumableUploadStatus = /** @class */ (function () {\n function ResumableUploadStatus(current, total, finalized, metadata) {\n this.current = current;\n this.total = total;\n this.finalized = !!finalized;\n this.metadata = metadata || null;\n }\n return ResumableUploadStatus;\n}());\n\nfunction checkResumeHeader_(xhr, opt_allowed) {\n var status;\n try {\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\n }\n catch (e) {\n handlerCheck(false);\n }\n var allowed = opt_allowed || ['active'];\n handlerCheck(array_contains(allowed, status));\n return status;\n}\nfunction createResumableUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var urlParams = { name: metadata['fullPath'] };\n var url = makeUploadUrl(urlPart);\n var method = 'POST';\n var headers = {\n 'X-Goog-Upload-Protocol': 'resumable',\n 'X-Goog-Upload-Command': 'start',\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\n 'X-Goog-Upload-Header-Content-Type': metadata['contentType'],\n 'Content-Type': 'application/json; charset=utf-8'\n };\n var body = toResourceString(metadata, mappings);\n var timeout = authWrapper.maxUploadRetryTime();\n function handler(xhr, text) {\n checkResumeHeader_(xhr);\n var url;\n try {\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\n }\n catch (e) {\n handlerCheck(false);\n }\n handlerCheck(isString(url));\n return url;\n }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n */\nfunction getResumableUploadStatus(authWrapper, location, url, blob) {\n var headers = { 'X-Goog-Upload-Command': 'query' };\n function handler(xhr, text) {\n var status = checkResumeHeader_(xhr, ['active', 'final']);\n var sizeString;\n try {\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\n }\n catch (e) {\n handlerCheck(false);\n }\n var size = parseInt(sizeString, 10);\n handlerCheck(!isNaN(size));\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * Any uploads via the resumable upload API must transfer a number of bytes\n * that is a multiple of this number.\n */\nvar resumableUploadChunkSize = 256 * 1024;\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n * @param chunkSize Number of bytes to upload.\n * @param opt_status The previous status.\n * If not passed or null, we start from the beginning.\n * @throws fbs.Error If the upload is already complete, the passed in status\n * has a final size inconsistent with the blob, or the blob cannot be sliced\n * for upload.\n */\nfunction continueResumableUpload(location, authWrapper, url, blob, chunkSize, mappings, opt_status, opt_progressCallback) {\n // TODO(andysoto): standardize on internal asserts\n // assert(!(opt_status && opt_status.finalized));\n var status = new ResumableUploadStatus(0, 0);\n if (opt_status) {\n status.current = opt_status.current;\n status.total = opt_status.total;\n }\n else {\n status.current = 0;\n status.total = blob.size();\n }\n if (blob.size() !== status.total) {\n throw serverFileWrongSize();\n }\n var bytesLeft = status.total - status.current;\n var bytesToUpload = bytesLeft;\n if (chunkSize > 0) {\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\n }\n var startByte = status.current;\n var endByte = startByte + bytesToUpload;\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\n var headers = {\n 'X-Goog-Upload-Command': uploadCommand,\n 'X-Goog-Upload-Offset': status.current\n };\n var body = blob.slice(startByte, endByte);\n if (body === null) {\n throw cannotSliceBlob();\n }\n function handler(xhr, text) {\n // TODO(andysoto): Verify the MD5 of each uploaded range:\n // the 'x-range-md5' header comes back with status code 308 responses.\n // We'll only be able to bail out though, because you can't re-upload a\n // range that you previously uploaded.\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\n var newCurrent = status.current + bytesToUpload;\n var size = blob.size();\n var metadata;\n if (uploadStatus === 'final') {\n metadata = metadataHandler(authWrapper, mappings)(xhr, text);\n }\n else {\n metadata = null;\n }\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.progressCallback = opt_progressCallback || null;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n\n//# sourceMappingURL=requests.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/observer.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @struct\n */\nvar observer_Observer = /** @class */ (function () {\n function Observer(nextOrObserver, opt_error, opt_complete) {\n var asFunctions = isFunction(nextOrObserver) ||\n isDef(opt_error) ||\n isDef(opt_complete);\n if (asFunctions) {\n this.next = nextOrObserver;\n this.error = opt_error || null;\n this.complete = opt_complete || null;\n }\n else {\n var observer = nextOrObserver;\n this.next = observer.next || null;\n this.error = observer.error || null;\n this.complete = observer.complete || null;\n }\n }\n return Observer;\n}());\n\n\n//# sourceMappingURL=observer.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/tasksnapshot.js\nvar UploadTaskSnapshot = /** @class */ (function () {\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\n this.bytesTransferred = bytesTransferred;\n this.totalBytes = totalBytes;\n this.state = state;\n this.metadata = metadata;\n this.task = task;\n this.ref = ref;\n }\n Object.defineProperty(UploadTaskSnapshot.prototype, \"downloadURL\", {\n get: function () {\n if (this.metadata !== null) {\n var urls = this.metadata['downloadURLs'];\n if (urls != null && urls[0] != null) {\n return urls[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n return UploadTaskSnapshot;\n}());\n\n\n//# sourceMappingURL=tasksnapshot.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/async.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Method for invoking a callback asynchronously.\n */\n\n/**\n * Returns a function that invokes f with its arguments asynchronously as a\n * microtask, i.e. as soon as possible after the current script returns back\n * into browser code.\n */\nfunction async_async(f) {\n return function () {\n var argsToForward = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argsToForward[_i] = arguments[_i];\n }\n promise_external_resolve(true).then(function () {\n f.apply(null, argsToForward);\n });\n };\n}\n\n//# sourceMappingURL=async.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/task.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines types for interacting with blob transfer tasks.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\n * upload and manage callbacks for various events.\n */\nvar task_UploadTask = /** @class */ (function () {\n /**\n * @param ref The firebaseStorage.Reference object this task came\n * from, untyped to avoid cyclic dependencies.\n * @param blob The blob to upload.\n */\n function UploadTask(ref, authWrapper, location, mappings, blob, metadata) {\n if (metadata === void 0) { metadata = null; }\n var _this = this;\n this.transferred_ = 0;\n this.needToFetchStatus_ = false;\n this.needToFetchMetadata_ = false;\n this.observers_ = [];\n this.error_ = null;\n this.uploadUrl_ = null;\n this.request_ = null;\n this.chunkMultiplier_ = 1;\n this.resolve_ = null;\n this.reject_ = null;\n this.ref_ = ref;\n this.authWrapper_ = authWrapper;\n this.location_ = location;\n this.blob_ = blob;\n this.metadata_ = metadata;\n this.mappings_ = mappings;\n this.resumable_ = this.shouldDoResumable_(this.blob_);\n this.state_ = InternalTaskState.RUNNING;\n this.errorHandler_ = function (error) {\n _this.request_ = null;\n _this.chunkMultiplier_ = 1;\n if (error.codeEquals(Code.CANCELED)) {\n _this.needToFetchStatus_ = true;\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.metadataErrorHandler_ = function (error) {\n _this.request_ = null;\n if (error.codeEquals(Code.CANCELED)) {\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.promise_ = make(function (resolve, reject) {\n _this.resolve_ = resolve;\n _this.reject_ = reject;\n _this.start_();\n });\n // Prevent uncaught rejections on the internal promise from bubbling out\n // to the top level with a dummy handler.\n this.promise_.then(null, function () { });\n }\n UploadTask.prototype.makeProgressCallback_ = function () {\n var _this = this;\n var sizeBefore = this.transferred_;\n return function (loaded, total) {\n _this.updateProgress_(sizeBefore + loaded);\n };\n };\n UploadTask.prototype.shouldDoResumable_ = function (blob) {\n return blob.size() > 256 * 1024;\n };\n UploadTask.prototype.start_ = function () {\n if (this.state_ !== InternalTaskState.RUNNING) {\n // This can happen if someone pauses us in a resume callback, for example.\n return;\n }\n if (this.request_ !== null) {\n return;\n }\n if (this.resumable_) {\n if (this.uploadUrl_ === null) {\n this.createResumable_();\n }\n else {\n if (this.needToFetchStatus_) {\n this.fetchStatus_();\n }\n else {\n if (this.needToFetchMetadata_) {\n // Happens if we miss the metadata on upload completion.\n this.fetchMetadata_();\n }\n else {\n this.continueUpload_();\n }\n }\n }\n }\n else {\n this.oneShotUpload_();\n }\n };\n UploadTask.prototype.resolveToken_ = function (callback) {\n var _this = this;\n this.authWrapper_.getAuthToken().then(function (authToken) {\n switch (_this.state_) {\n case InternalTaskState.RUNNING:\n callback(authToken);\n break;\n case InternalTaskState.CANCELING:\n _this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.PAUSING:\n _this.transition_(InternalTaskState.PAUSED);\n break;\n default:\n }\n });\n };\n // TODO(andysoto): assert false\n UploadTask.prototype.createResumable_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = createRequest;\n createRequest.getPromise().then(function (url) {\n _this.request_ = null;\n _this.uploadUrl_ = url;\n _this.needToFetchStatus_ = false;\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.fetchStatus_ = function () {\n var _this = this;\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo = getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = statusRequest;\n statusRequest.getPromise().then(function (status) {\n status = status;\n _this.request_ = null;\n _this.updateProgress_(status.current);\n _this.needToFetchStatus_ = false;\n if (status.finalized) {\n _this.needToFetchMetadata_ = true;\n }\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.continueUpload_ = function () {\n var _this = this;\n var chunkSize = resumableUploadChunkSize * this.chunkMultiplier_;\n var status = new ResumableUploadStatus(this.transferred_, this.blob_.size());\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo;\n try {\n requestInfo = continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\n }\n catch (e) {\n _this.error_ = e;\n _this.transition_(InternalTaskState.ERROR);\n return;\n }\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = uploadRequest;\n uploadRequest\n .getPromise()\n .then(function (newStatus) {\n _this.increaseMultiplier_();\n _this.request_ = null;\n _this.updateProgress_(newStatus.current);\n if (newStatus.finalized) {\n _this.metadata_ = newStatus.metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }\n else {\n _this.completeTransitions_();\n }\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.increaseMultiplier_ = function () {\n var currentSize = resumableUploadChunkSize * this.chunkMultiplier_;\n // Max chunk size is 32M.\n if (currentSize < 32 * 1024 * 1024) {\n this.chunkMultiplier_ *= 2;\n }\n };\n UploadTask.prototype.fetchMetadata_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = metadataRequest;\n metadataRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.metadataErrorHandler_);\n });\n };\n UploadTask.prototype.oneShotUpload_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = multipartRequest;\n multipartRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.updateProgress_(_this.blob_.size());\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.updateProgress_ = function (transferred) {\n var old = this.transferred_;\n this.transferred_ = transferred;\n // A progress update can make the \"transferred\" value smaller (e.g. a\n // partial upload not completed by server, after which the \"transferred\"\n // value may reset to the value at the beginning of the request).\n if (this.transferred_ !== old) {\n this.notifyObservers_();\n }\n };\n UploadTask.prototype.transition_ = function (state) {\n if (this.state_ === state) {\n return;\n }\n switch (state) {\n case InternalTaskState.CANCELING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.PAUSING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.RUNNING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.PAUSING);\n var wasPaused = this.state_ === InternalTaskState.PAUSED;\n this.state_ = state;\n if (wasPaused) {\n this.notifyObservers_();\n this.start_();\n }\n break;\n case InternalTaskState.PAUSED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.CANCELED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.CANCELING);\n this.error_ = error_canceled();\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.ERROR:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.SUCCESS:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n }\n };\n UploadTask.prototype.completeTransitions_ = function () {\n switch (this.state_) {\n case InternalTaskState.PAUSING:\n this.transition_(InternalTaskState.PAUSED);\n break;\n case InternalTaskState.CANCELING:\n this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.RUNNING:\n this.start_();\n break;\n default:\n // TODO(andysoto): assert(false);\n break;\n }\n };\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\n get: function () {\n var externalState = taskStateFromInternalTaskState(this.state_);\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a callback for an event.\n * @param type The type of event to listen for.\n */\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\n if (nextOrObserver === void 0) { nextOrObserver = undefined; }\n if (error === void 0) { error = undefined; }\n if (completed === void 0) { completed = undefined; }\n function typeValidator(_p) {\n if (type !== TaskEvent.STATE_CHANGED) {\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\n }\n }\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\n '`next`, `error`, `complete` properties.';\n var nextValidator = nullFunctionSpec(true).validator;\n var observerValidator = looseObjectSpec(null, true).validator;\n function nextOrObserverValidator(p) {\n try {\n nextValidator(p);\n return;\n }\n catch (e) { }\n try {\n observerValidator(p);\n var anyDefined = isJustDef(p['next']) ||\n isJustDef(p['error']) ||\n isJustDef(p['complete']);\n if (!anyDefined) {\n throw '';\n }\n return;\n }\n catch (e) {\n throw nextOrObserverMessage;\n }\n }\n var specs = [\n stringSpec(typeValidator),\n looseObjectSpec(nextOrObserverValidator, true),\n nullFunctionSpec(true),\n nullFunctionSpec(true)\n ];\n validate('on', specs, arguments);\n var self = this;\n function makeBinder(specs) {\n function binder(nextOrObserver, error, opt_complete) {\n if (specs !== null) {\n validate('on', specs, arguments);\n }\n var observer = new observer_Observer(nextOrObserver, error, completed);\n self.addObserver_(observer);\n return function () {\n self.removeObserver_(observer);\n };\n }\n return binder;\n }\n function binderNextOrObserverValidator(p) {\n if (p === null) {\n throw nextOrObserverMessage;\n }\n nextOrObserverValidator(p);\n }\n var binderSpecs = [\n looseObjectSpec(binderNextOrObserverValidator),\n nullFunctionSpec(true),\n nullFunctionSpec(true)\n ];\n var typeOnly = !(isJustDef(nextOrObserver) ||\n isJustDef(error) ||\n isJustDef(completed));\n if (typeOnly) {\n return makeBinder(binderSpecs);\n }\n else {\n return makeBinder(null)(nextOrObserver, error, completed);\n }\n };\n /**\n * This object behaves like a Promise, and resolves with its snapshot data\n * when the upload completes.\n * @param onFulfilled The fulfillment callback. Promise chaining works as normal.\n * @param onRejected The rejection callback.\n */\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\n // These casts are needed so that TypeScript can infer the types of the\n // resulting Promise.\n return this.promise_.then(onFulfilled, onRejected);\n };\n /**\n * Equivalent to calling `then(null, onRejected)`.\n */\n UploadTask.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n * Adds the given observer.\n */\n UploadTask.prototype.addObserver_ = function (observer) {\n this.observers_.push(observer);\n this.notifyObserver_(observer);\n };\n /**\n * Removes the given observer.\n */\n UploadTask.prototype.removeObserver_ = function (observer) {\n remove(this.observers_, observer);\n };\n UploadTask.prototype.notifyObservers_ = function () {\n var _this = this;\n this.finishPromise_();\n var observers = array_clone(this.observers_);\n observers.forEach(function (observer) {\n _this.notifyObserver_(observer);\n });\n };\n UploadTask.prototype.finishPromise_ = function () {\n if (this.resolve_ !== null) {\n var triggered = true;\n switch (taskStateFromInternalTaskState(this.state_)) {\n case TaskState.SUCCESS:\n async_async(this.resolve_.bind(null, this.snapshot))();\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n var toCall = this.reject_;\n async_async(toCall.bind(null, this.error_))();\n break;\n default:\n triggered = false;\n break;\n }\n if (triggered) {\n this.resolve_ = null;\n this.reject_ = null;\n }\n }\n };\n UploadTask.prototype.notifyObserver_ = function (observer) {\n var externalState = taskStateFromInternalTaskState(this.state_);\n switch (externalState) {\n case TaskState.RUNNING:\n case TaskState.PAUSED:\n if (observer.next !== null) {\n async_async(observer.next.bind(observer, this.snapshot))();\n }\n break;\n case TaskState.SUCCESS:\n if (observer.complete !== null) {\n async_async(observer.complete.bind(observer))();\n }\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n if (observer.error !== null) {\n async_async(observer.error.bind(observer, this.error_))();\n }\n break;\n default:\n // TODO(andysoto): assert(false);\n if (observer.error !== null) {\n async_async(observer.error.bind(observer, this.error_))();\n }\n }\n };\n /**\n * Resumes a paused task. Has no effect on a currently running or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.resume = function () {\n validate('resume', [], arguments);\n var valid = this.state_ === InternalTaskState.PAUSED ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.RUNNING);\n }\n return valid;\n };\n /**\n * Pauses a currently running task. Has no effect on a paused or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.pause = function () {\n validate('pause', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING;\n if (valid) {\n this.transition_(InternalTaskState.PAUSING);\n }\n return valid;\n };\n /**\n * Cancels a currently running or paused task. Has no effect on a complete or\n * failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.cancel = function () {\n validate('cancel', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.CANCELING);\n }\n return valid;\n };\n return UploadTask;\n}());\n\n\n//# sourceMappingURL=task.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/reference.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines the Firebase Storage Reference class.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Provides methods to interact with a bucket in the Firebase Storage service.\n * @param location An fbs.location, or the URL at\n * which to base this object, in one of the following forms:\n * gs:///\n * http[s]://firebasestorage.googleapis.com/\n * /b//o/\n * Any query or fragment strings will be ignored in the http[s]\n * format. If no value is passed, the storage object will use a URL based on\n * the project ID of the base firebase.App instance.\n */\nvar reference_Reference = /** @class */ (function () {\n function Reference(authWrapper, location) {\n this.authWrapper = authWrapper;\n if (location instanceof location_Location) {\n this.location = location;\n }\n else {\n this.location = location_Location.makeFromUrl(location);\n }\n }\n /**\n * @return The URL for the bucket and path this object references,\n * in the form gs:///\n * @override\n */\n Reference.prototype.toString = function () {\n validate('toString', [], arguments);\n return 'gs://' + this.location.bucket + '/' + this.location.path;\n };\n Reference.prototype.newRef = function (authWrapper, location) {\n return new Reference(authWrapper, location);\n };\n Reference.prototype.mappings = function () {\n return getMappings();\n };\n /**\n * @return A reference to the object obtained by\n * appending childPath, removing any duplicate, beginning, or trailing\n * slashes.\n */\n Reference.prototype.child = function (childPath) {\n validate('child', [stringSpec()], arguments);\n var newPath = child(this.location.path, childPath);\n var location = new location_Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n };\n Object.defineProperty(Reference.prototype, \"parent\", {\n /**\n * @return A reference to the parent of the\n * current object, or null if the current object is the root.\n */\n get: function () {\n var newPath = path_parent(this.location.path);\n if (newPath === null) {\n return null;\n }\n var location = new location_Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n /**\n * @return An reference to the root of this\n * object's bucket.\n */\n get: function () {\n var location = new location_Location(this.location.bucket, '');\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"bucket\", {\n get: function () {\n return this.location.bucket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"fullPath\", {\n get: function () {\n return this.location.path;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"name\", {\n get: function () {\n return lastComponent(this.location.path);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"storage\", {\n get: function () {\n return this.authWrapper.service();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Uploads a blob to this object's location.\n * @param data The blob to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.put = function (data, metadata) {\n if (metadata === void 0) { metadata = null; }\n validate('put', [uploadDataSpec(), metadataSpec(true)], arguments);\n this.throwIfRoot_('put');\n return new task_UploadTask(this, this.authWrapper, this.location, this.mappings(), new blob_FbsBlob(data), metadata);\n };\n /**\n * Uploads a string to this object's location.\n * @param string The string to upload.\n * @param opt_format The format of the string to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.putString = function (string, format, opt_metadata) {\n if (format === void 0) { format = StringFormat.RAW; }\n validate('putString', [\n stringSpec(),\n stringSpec(formatValidator, true),\n metadataSpec(true)\n ], arguments);\n this.throwIfRoot_('putString');\n var data = dataFromString(format, string);\n var metadata = clone(opt_metadata);\n if (!isDef(metadata['contentType']) && isDef(data.contentType)) {\n metadata['contentType'] = data.contentType;\n }\n return new task_UploadTask(this, this.authWrapper, this.location, this.mappings(), new blob_FbsBlob(data.data, true), metadata);\n };\n /**\n * Deletes the object at this location.\n * @return A promise that resolves if the deletion succeeds.\n */\n Reference.prototype.delete = function () {\n validate('delete', [], arguments);\n this.throwIfRoot_('delete');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = deleteObject(self.authWrapper, self.location);\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * A promise that resolves with the metadata for this object. If this\n * object doesn't exist or metadata cannot be retreived, the promise is\n * rejected.\n */\n Reference.prototype.getMetadata = function () {\n validate('getMetadata', [], arguments);\n this.throwIfRoot_('getMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = getMetadata(self.authWrapper, self.location, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * Updates the metadata for this object.\n * @param metadata The new metadata for the object.\n * Only values that have been explicitly set will be changed. Explicitly\n * setting a value to null will remove the metadata.\n * @return A promise that resolves\n * with the new metadata for this object.\n * @see firebaseStorage.Reference.prototype.getMetadata\n */\n Reference.prototype.updateMetadata = function (metadata) {\n validate('updateMetadata', [metadataSpec()], arguments);\n this.throwIfRoot_('updateMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = updateMetadata(self.authWrapper, self.location, metadata, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * @return A promise that resolves with the download\n * URL for this object.\n */\n Reference.prototype.getDownloadURL = function () {\n validate('getDownloadURL', [], arguments);\n this.throwIfRoot_('getDownloadURL');\n return this.getMetadata().then(function (metadata) {\n var url = metadata['downloadURLs'][0];\n if (isDef(url)) {\n return url;\n }\n else {\n throw noDownloadURL();\n }\n });\n };\n Reference.prototype.throwIfRoot_ = function (name) {\n if (this.location.path === '') {\n throw invalidRootOperation(name);\n }\n };\n return Reference;\n}());\n\n\n//# sourceMappingURL=reference.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/failrequest.js\n\n/**\n * A request whose promise always fails.\n * @struct\n * @template T\n */\nvar failrequest_FailRequest = /** @class */ (function () {\n function FailRequest(error) {\n this.promise_ = promise_external_reject(error);\n }\n /** @inheritDoc */\n FailRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n FailRequest.prototype.cancel = function (appDelete) {\n if (appDelete === void 0) { appDelete = false; }\n };\n return FailRequest;\n}());\n\n\n//# sourceMappingURL=failrequest.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requestmap.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * @struct\n */\nvar requestmap_RequestMap = /** @class */ (function () {\n function RequestMap() {\n this.map_ = {};\n this.id_ = minSafeInteger;\n }\n /**\n * Registers the given request with this map.\n * The request is unregistered when it completes.\n * @param r The request to register.\n */\n RequestMap.prototype.addRequest = function (r) {\n var id = this.id_;\n this.id_++;\n this.map_[id] = r;\n var self = this;\n function unmap() {\n delete self.map_[id];\n }\n r.getPromise().then(unmap, unmap);\n };\n /**\n * Cancels all registered requests.\n */\n RequestMap.prototype.clear = function () {\n forEach(this.map_, function (key, val) {\n if (val) {\n val.cancel(true);\n }\n });\n this.map_ = {};\n };\n return RequestMap;\n}());\n\n\n//# sourceMappingURL=requestmap.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/authwrapper.js\n\n\n\n\n\n\n\n/**\n * @param app If null, getAuthToken always resolves with null.\n * @param service The storage service associated with this auth wrapper.\n * Untyped to avoid circular type dependencies.\n * @struct\n */\nvar authwrapper_AuthWrapper = /** @class */ (function () {\n function AuthWrapper(app, maker, requestMaker, service, pool) {\n this.bucket_ = null;\n this.deleted_ = false;\n this.app_ = app;\n if (this.app_ !== null) {\n var options = this.app_.options;\n if (isDef(options)) {\n this.bucket_ = AuthWrapper.extractBucket_(options);\n }\n }\n this.storageRefMaker_ = maker;\n this.requestMaker_ = requestMaker;\n this.pool_ = pool;\n this.service_ = service;\n this.maxOperationRetryTime_ = defaultMaxOperationRetryTime;\n this.maxUploadRetryTime_ = defaultMaxUploadRetryTime;\n this.requestMap_ = new requestmap_RequestMap();\n }\n AuthWrapper.extractBucket_ = function (config) {\n var bucketString = config[configOption] || null;\n if (bucketString == null) {\n return null;\n }\n var loc = location_Location.makeFromBucketSpec(bucketString);\n return loc.bucket;\n };\n AuthWrapper.prototype.getAuthToken = function () {\n // TODO(andysoto): remove ifDef checks after firebase-app implements stubs\n // (b/28673818).\n if (this.app_ !== null &&\n isDef(this.app_.INTERNAL) &&\n isDef(this.app_.INTERNAL.getToken)) {\n return this.app_.INTERNAL.getToken().then(function (response) {\n if (response !== null) {\n return response.accessToken;\n }\n else {\n return null;\n }\n }, function (_error) {\n return null;\n });\n }\n else {\n return promise_external_resolve(null);\n }\n };\n AuthWrapper.prototype.bucket = function () {\n if (this.deleted_) {\n throw appDeleted();\n }\n else {\n return this.bucket_;\n }\n };\n /**\n * The service associated with this auth wrapper. Untyped to avoid circular\n * type dependencies.\n */\n AuthWrapper.prototype.service = function () {\n return this.service_;\n };\n /**\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\n * at the given Location.\n * @param loc The Location.\n * @return Actually a firebaseStorage.Reference, typing not allowed\n * because of circular dependency problems.\n */\n AuthWrapper.prototype.makeStorageReference = function (loc) {\n return this.storageRefMaker_(this, loc);\n };\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\n if (!this.deleted_) {\n var request = this.requestMaker_(requestInfo, authToken, this.pool_);\n this.requestMap_.addRequest(request);\n return request;\n }\n else {\n return new failrequest_FailRequest(appDeleted());\n }\n };\n /**\n * Stop running requests and prevent more from being created.\n */\n AuthWrapper.prototype.deleteApp = function () {\n this.deleted_ = true;\n this.app_ = null;\n this.requestMap_.clear();\n };\n AuthWrapper.prototype.maxUploadRetryTime = function () {\n return this.maxUploadRetryTime_;\n };\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\n this.maxUploadRetryTime_ = time;\n };\n AuthWrapper.prototype.maxOperationRetryTime = function () {\n return this.maxOperationRetryTime_;\n };\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\n this.maxOperationRetryTime_ = time;\n };\n return AuthWrapper;\n}());\n\n\n//# sourceMappingURL=authwrapper.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/backoff.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param f May be invoked\n * before the function returns.\n * @param callback Get all the arguments passed to the function\n * passed to f, including the initial boolean.\n */\nfunction start(f, callback, timeout) {\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\n // type instead of a bunch of functions with state shared in the closure)\n var waitSeconds = 1;\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\n var timeoutId = null;\n var hitTimeout = false;\n var cancelState = 0;\n function canceled() {\n return cancelState === 2;\n }\n var triggeredCallback = false;\n function triggerCallback() {\n if (!triggeredCallback) {\n triggeredCallback = true;\n callback.apply(null, arguments);\n }\n }\n function callWithDelay(millis) {\n timeoutId = setTimeout(function () {\n timeoutId = null;\n f(handler, canceled());\n }, millis);\n }\n function handler(success) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (triggeredCallback) {\n return;\n }\n if (success) {\n triggerCallback.apply(null, arguments);\n return;\n }\n var mustStop = canceled() || hitTimeout;\n if (mustStop) {\n triggerCallback.apply(null, arguments);\n return;\n }\n if (waitSeconds < 64) {\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\n waitSeconds *= 2;\n }\n var waitMillis;\n if (cancelState === 1) {\n cancelState = 2;\n waitMillis = 0;\n }\n else {\n waitMillis = (waitSeconds + Math.random()) * 1000;\n }\n callWithDelay(waitMillis);\n }\n var stopped = false;\n function stop(wasTimeout) {\n if (stopped) {\n return;\n }\n stopped = true;\n if (triggeredCallback) {\n return;\n }\n if (timeoutId !== null) {\n if (!wasTimeout) {\n cancelState = 2;\n }\n clearTimeout(timeoutId);\n callWithDelay(0);\n }\n else {\n if (!wasTimeout) {\n cancelState = 1;\n }\n }\n }\n callWithDelay(0);\n setTimeout(function () {\n hitTimeout = true;\n stop(true);\n }, timeout);\n return stop;\n}\n/**\n * Stops the retry loop from repeating.\n * If the function is currently \"in between\" retries, it is invoked immediately\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\n * after the current invocation finishes iff the current invocation would have\n * triggered another retry.\n */\nfunction stop(id) {\n id(false);\n}\n\n//# sourceMappingURL=backoff.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/request.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines methods used to actually send HTTP requests from\n * abstract representations.\n */\n\n\n\n\n\n\n\n\n\n/**\n * @struct\n * @template T\n */\nvar request_NetworkRequest = /** @class */ (function () {\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\n this.pendingXhr_ = null;\n this.backoffId_ = null;\n this.resolve_ = null;\n this.reject_ = null;\n this.canceled_ = false;\n this.appDelete_ = false;\n this.url_ = url;\n this.method_ = method;\n this.headers_ = headers;\n this.body_ = body;\n this.successCodes_ = successCodes.slice();\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\n this.callback_ = callback;\n this.errorCallback_ = errorCallback;\n this.progressCallback_ = progressCallback;\n this.timeout_ = timeout;\n this.pool_ = pool;\n var self = this;\n this.promise_ = make(function (resolve, reject) {\n self.resolve_ = resolve;\n self.reject_ = reject;\n self.start_();\n });\n }\n /**\n * Actually starts the retry loop.\n */\n NetworkRequest.prototype.start_ = function () {\n var self = this;\n function doTheRequest(backoffCallback, canceled) {\n if (canceled) {\n backoffCallback(false, new RequestEndStatus(false, null, true));\n return;\n }\n var xhr = self.pool_.createXhrIo();\n self.pendingXhr_ = xhr;\n function progressListener(progressEvent) {\n var loaded = progressEvent.loaded;\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\n if (self.progressCallback_ !== null) {\n self.progressCallback_(loaded, total);\n }\n }\n if (self.progressCallback_ !== null) {\n xhr.addUploadProgressListener(progressListener);\n }\n xhr\n .send(self.url_, self.method_, self.body_, self.headers_)\n .then(function (xhr) {\n if (self.progressCallback_ !== null) {\n xhr.removeUploadProgressListener(progressListener);\n }\n self.pendingXhr_ = null;\n xhr = xhr;\n var hitServer = xhr.getErrorCode() === ErrorCode.NO_ERROR;\n var status = xhr.getStatus();\n if (!hitServer || self.isRetryStatusCode_(status)) {\n var wasCanceled = xhr.getErrorCode() === ErrorCode.ABORT;\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\n return;\n }\n var successCode = array_contains(self.successCodes_, status);\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\n });\n }\n /**\n * @param requestWentThrough True if the request eventually went\n * through, false if it hit the retry limit or was canceled.\n */\n function backoffDone(requestWentThrough, status) {\n var resolve = self.resolve_;\n var reject = self.reject_;\n var xhr = status.xhr;\n if (status.wasSuccessCode) {\n try {\n var result = self.callback_(xhr, xhr.getResponseText());\n if (isJustDef(result)) {\n resolve(result);\n }\n else {\n resolve();\n }\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n if (xhr !== null) {\n var err = unknown();\n err.setServerResponseProp(xhr.getResponseText());\n if (self.errorCallback_) {\n reject(self.errorCallback_(xhr, err));\n }\n else {\n reject(err);\n }\n }\n else {\n if (status.canceled) {\n var err = self.appDelete_\n ? appDeleted()\n : error_canceled();\n reject(err);\n }\n else {\n var err = retryLimitExceeded();\n reject(err);\n }\n }\n }\n }\n if (this.canceled_) {\n backoffDone(false, new RequestEndStatus(false, null, true));\n }\n else {\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\n }\n };\n /** @inheritDoc */\n NetworkRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n NetworkRequest.prototype.cancel = function (appDelete) {\n this.canceled_ = true;\n this.appDelete_ = appDelete || false;\n if (this.backoffId_ !== null) {\n stop(this.backoffId_);\n }\n if (this.pendingXhr_ !== null) {\n this.pendingXhr_.abort();\n }\n };\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\n // The codes for which to retry came from this page:\n // https://cloud.google.com/storage/docs/exponential-backoff\n var isFiveHundredCode = status >= 500 && status < 600;\n var extraRetryCodes = [\n // Request Timeout: web server didn't receive full request in time.\n 408,\n // Too Many Requests: you're getting rate-limited, basically.\n 429\n ];\n var isExtraRetryCode = array_contains(extraRetryCodes, status);\n var isRequestSpecificRetryCode = array_contains(this.additionalRetryCodes_, status);\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\n };\n return NetworkRequest;\n}());\n/**\n * A collection of information about the result of a network request.\n * @param opt_canceled Defaults to false.\n * @struct\n */\nvar RequestEndStatus = /** @class */ (function () {\n function RequestEndStatus(wasSuccessCode, xhr, opt_canceled) {\n this.wasSuccessCode = wasSuccessCode;\n this.xhr = xhr;\n this.canceled = !!opt_canceled;\n }\n return RequestEndStatus;\n}());\n\nfunction addAuthHeader_(headers, authToken) {\n if (authToken !== null && authToken.length > 0) {\n headers['Authorization'] = 'Firebase ' + authToken;\n }\n}\nfunction addVersionHeader_(headers) {\n var number = typeof esm[\"default\"] !== 'undefined' ? esm[\"default\"].SDK_VERSION : 'AppManager';\n headers['X-Firebase-Storage-Version'] = 'webjs/' + number;\n}\n/**\n * @template T\n */\nfunction makeRequest(requestInfo, authToken, pool) {\n var queryPart = makeQueryString(requestInfo.urlParams);\n var url = requestInfo.url + queryPart;\n var headers = clone(requestInfo.headers);\n addAuthHeader_(headers, authToken);\n addVersionHeader_(headers);\n return new request_NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\n}\n\n//# sourceMappingURL=request.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/service.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n/**\n * A service that provides firebaseStorage.Reference instances.\n * @param opt_url gs:// url to a custom Storage Bucket\n *\n * @struct\n */\nvar service_Service = /** @class */ (function () {\n function Service(app, pool, url) {\n this.bucket_ = null;\n function maker(authWrapper, loc) {\n return new reference_Reference(authWrapper, loc);\n }\n this.authWrapper_ = new authwrapper_AuthWrapper(app, maker, makeRequest, this, pool);\n this.app_ = app;\n if (url != null) {\n this.bucket_ = location_Location.makeFromBucketSpec(url);\n }\n else {\n var authWrapperBucket = this.authWrapper_.bucket();\n if (authWrapperBucket != null) {\n this.bucket_ = new location_Location(authWrapperBucket, '');\n }\n }\n this.internals_ = new service_ServiceInternals(this);\n }\n /**\n * Returns a firebaseStorage.Reference for the given path in the default\n * bucket.\n */\n Service.prototype.ref = function (path) {\n function validator(path) {\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\n throw 'Expected child path but got a URL, use refFromURL instead.';\n }\n }\n validate('ref', [stringSpec(validator, true)], arguments);\n if (this.bucket_ == null) {\n throw new Error('No Storage Bucket defined in Firebase Options.');\n }\n var ref = new reference_Reference(this.authWrapper_, this.bucket_);\n if (path != null) {\n return ref.child(path);\n }\n else {\n return ref;\n }\n };\n /**\n * Returns a firebaseStorage.Reference object for the given absolute URL,\n * which must be a gs:// or http[s]:// URL.\n */\n Service.prototype.refFromURL = function (url) {\n function validator(p) {\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\n throw 'Expected full URL but got a child path, use ref instead.';\n }\n try {\n location_Location.makeFromUrl(p);\n }\n catch (e) {\n throw 'Expected valid full URL but got an invalid one.';\n }\n }\n validate('refFromURL', [stringSpec(validator, false)], arguments);\n return new reference_Reference(this.authWrapper_, url);\n };\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\n get: function () {\n return this.authWrapper_.maxUploadRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxUploadRetryTime = function (time) {\n validate('setMaxUploadRetryTime', [nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxUploadRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"maxOperationRetryTime\", {\n get: function () {\n return this.authWrapper_.maxOperationRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxOperationRetryTime = function (time) {\n validate('setMaxOperationRetryTime', [nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxOperationRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"app\", {\n get: function () {\n return this.app_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\n get: function () {\n return this.internals_;\n },\n enumerable: true,\n configurable: true\n });\n return Service;\n}());\n\n/**\n * @struct\n */\nvar service_ServiceInternals = /** @class */ (function () {\n function ServiceInternals(service) {\n this.service_ = service;\n }\n /**\n * Called when the associated app is deleted.\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\n */\n ServiceInternals.prototype.delete = function () {\n this.service_.authWrapper_.deleteApp();\n return promise_external_resolve(undefined);\n };\n return ServiceInternals;\n}());\n\n\n//# sourceMappingURL=service.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/index.js\n/* harmony export (immutable) */ __webpack_exports__[\"registerStorage\"] = registerStorage;\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n/**\n * Type constant for Firebase Storage.\n */\nvar STORAGE_TYPE = 'storage';\nfunction factory(app, unused, opt_url) {\n return new service_Service(app, new xhriopool_XhrIoPool(), opt_url);\n}\nfunction registerStorage(instance) {\n var namespaceExports = {\n // no-inline\n TaskState: TaskState,\n TaskEvent: TaskEvent,\n StringFormat: StringFormat,\n Storage: service_Service,\n Reference: reference_Reference\n };\n instance.INTERNAL.registerService(STORAGE_TYPE, factory, namespaceExports, undefined, \n // Allow multiple storage instances per app.\n true);\n}\nregisterStorage(esm[\"default\"]);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ })\n\n},[122]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-storage.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-storage.js","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nrequire('@firebase/storage');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./storage/index.js\n// module id = 122\n// module chunks = 2","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { configOption } from './constants';\nvar FirebaseStorageError = /** @class */ (function () {\n function FirebaseStorageError(code, message) {\n this.code_ = prependCode(code);\n this.message_ = 'Firebase Storage: ' + message;\n this.serverResponse_ = null;\n this.name_ = 'FirebaseError';\n }\n FirebaseStorageError.prototype.codeProp = function () {\n return this.code;\n };\n FirebaseStorageError.prototype.codeEquals = function (code) {\n return prependCode(code) === this.codeProp();\n };\n FirebaseStorageError.prototype.serverResponseProp = function () {\n return this.serverResponse_;\n };\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\n this.serverResponse_ = serverResponse;\n };\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\n get: function () {\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\n get: function () {\n return this.code_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\n get: function () {\n return this.message_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\n get: function () {\n return this.serverResponse_;\n },\n enumerable: true,\n configurable: true\n });\n return FirebaseStorageError;\n}());\nexport { FirebaseStorageError };\nexport var errors = {};\nexport var Code = {\n // Shared between all platforms\n UNKNOWN: 'unknown',\n OBJECT_NOT_FOUND: 'object-not-found',\n BUCKET_NOT_FOUND: 'bucket-not-found',\n PROJECT_NOT_FOUND: 'project-not-found',\n QUOTA_EXCEEDED: 'quota-exceeded',\n UNAUTHENTICATED: 'unauthenticated',\n UNAUTHORIZED: 'unauthorized',\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\n INVALID_CHECKSUM: 'invalid-checksum',\n CANCELED: 'canceled',\n // JS specific\n INVALID_EVENT_NAME: 'invalid-event-name',\n INVALID_URL: 'invalid-url',\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\n NO_DEFAULT_BUCKET: 'no-default-bucket',\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\n NO_DOWNLOAD_URL: 'no-download-url',\n INVALID_ARGUMENT: 'invalid-argument',\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\n APP_DELETED: 'app-deleted',\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\n INVALID_FORMAT: 'invalid-format',\n INTERNAL_ERROR: 'internal-error'\n};\nexport function prependCode(code) {\n return 'storage/' + code;\n}\nexport function unknown() {\n var message = 'An unknown error occurred, please check the error payload for ' +\n 'server response.';\n return new FirebaseStorageError(Code.UNKNOWN, message);\n}\nexport function objectNotFound(path) {\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\n}\nexport function bucketNotFound(bucket) {\n return new FirebaseStorageError(Code.BUCKET_NOT_FOUND, \"Bucket '\" + bucket + \"' does not exist.\");\n}\nexport function projectNotFound(project) {\n return new FirebaseStorageError(Code.PROJECT_NOT_FOUND, \"Project '\" + project + \"' does not exist.\");\n}\nexport function quotaExceeded(bucket) {\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\n bucket +\n \"' exceeded, please view quota on \" +\n 'https://firebase.google.com/pricing/.');\n}\nexport function unauthenticated() {\n var message = 'User is not authenticated, please authenticate using Firebase ' +\n 'Authentication and try again.';\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\n}\nexport function unauthorized(path) {\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\n}\nexport function retryLimitExceeded() {\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\n}\nexport function invalidChecksum(path, checksum, calculated) {\n return new FirebaseStorageError(Code.INVALID_CHECKSUM, \"Uploaded/downloaded object '\" +\n path +\n \"' has checksum '\" +\n checksum +\n \"' which does not match '\" +\n calculated +\n \"'. Please retry the upload/download.\");\n}\nexport function canceled() {\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\n}\nexport function invalidEventName(name) {\n return new FirebaseStorageError(Code.INVALID_EVENT_NAME, \"Invalid event name '\" + name + \"'.\");\n}\nexport function invalidUrl(url) {\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\n}\nexport function invalidDefaultBucket(bucket) {\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\n}\nexport function noDefaultBucket() {\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\n \"found. Did you set the '\" +\n configOption +\n \"' property when initializing the app?\");\n}\nexport function cannotSliceBlob() {\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\n}\nexport function serverFileWrongSize() {\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\n}\nexport function noDownloadURL() {\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\n}\nexport function invalidArgument(index, fnName, message) {\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\n}\nexport function invalidArgumentCount(argMin, argMax, fnName, real) {\n var countPart;\n var plural;\n if (argMin === argMax) {\n countPart = argMin;\n plural = argMin === 1 ? 'argument' : 'arguments';\n }\n else {\n countPart = 'between ' + argMin + ' and ' + argMax;\n plural = 'arguments';\n }\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\n fnName +\n '`: Expected ' +\n countPart +\n ' ' +\n plural +\n ', received ' +\n real +\n '.');\n}\nexport function appDeleted() {\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\n}\n/**\n * @param name The name of the operation that was invalid.\n */\nexport function invalidRootOperation(name) {\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\n name +\n \"' cannot be performed on a root reference, create a non-root \" +\n \"reference using child, such as .child('file.png').\");\n}\n/**\n * @param format The format that was not valid.\n * @param message A message describing the format violation.\n */\nexport function invalidFormat(format, message) {\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\n}\n/**\n * @param message A message describing the internal error.\n */\nexport function internalError(message) {\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\n}\n\n//# sourceMappingURL=error.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/error.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nexport var StringFormat = {\n RAW: 'raw',\n BASE64: 'base64',\n BASE64URL: 'base64url',\n DATA_URL: 'data_url'\n};\nexport function formatValidator(stringFormat) {\n switch (stringFormat) {\n case StringFormat.RAW:\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n case StringFormat.DATA_URL:\n return;\n default:\n throw 'Expected one of the event types: [' +\n StringFormat.RAW +\n ', ' +\n StringFormat.BASE64 +\n ', ' +\n StringFormat.BASE64URL +\n ', ' +\n StringFormat.DATA_URL +\n '].';\n }\n}\n/**\n * @struct\n */\nvar StringData = /** @class */ (function () {\n function StringData(data, opt_contentType) {\n this.data = data;\n this.contentType = opt_contentType || null;\n }\n return StringData;\n}());\nexport { StringData };\nexport function dataFromString(format, string) {\n switch (format) {\n case StringFormat.RAW:\n return new StringData(utf8Bytes_(string));\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n return new StringData(base64Bytes_(format, string));\n case StringFormat.DATA_URL:\n return new StringData(dataURLBytes_(string), dataURLContentType_(string));\n }\n // assert(false);\n throw errorsExports.unknown();\n}\nexport function utf8Bytes_(string) {\n var b = [];\n for (var i = 0; i < string.length; i++) {\n var c = string.charCodeAt(i);\n if (c <= 127) {\n b.push(c);\n }\n else {\n if (c <= 2047) {\n b.push(192 | (c >> 6), 128 | (c & 63));\n }\n else {\n if ((c & 64512) == 55296) {\n // The start of a surrogate pair.\n var valid = i < string.length - 1 &&\n (string.charCodeAt(i + 1) & 64512) == 56320;\n if (!valid) {\n // The second surrogate wasn't there.\n b.push(239, 191, 189);\n }\n else {\n var hi = c;\n var lo = string.charCodeAt(++i);\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n else {\n if ((c & 64512) == 56320) {\n // Invalid low surrogate.\n b.push(239, 191, 189);\n }\n else {\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n }\n }\n }\n return new Uint8Array(b);\n}\nexport function percentEncodedBytes_(string) {\n var decoded;\n try {\n decoded = decodeURIComponent(string);\n }\n catch (e) {\n throw errorsExports.invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\n }\n return utf8Bytes_(decoded);\n}\nexport function base64Bytes_(format, string) {\n switch (format) {\n case StringFormat.BASE64: {\n var hasMinus = string.indexOf('-') !== -1;\n var hasUnder = string.indexOf('_') !== -1;\n if (hasMinus || hasUnder) {\n var invalidChar = hasMinus ? '-' : '_';\n throw errorsExports.invalidFormat(format, \"Invalid character '\" +\n invalidChar +\n \"' found: is it base64url encoded?\");\n }\n break;\n }\n case StringFormat.BASE64URL: {\n var hasPlus = string.indexOf('+') !== -1;\n var hasSlash = string.indexOf('/') !== -1;\n if (hasPlus || hasSlash) {\n var invalidChar = hasPlus ? '+' : '/';\n throw errorsExports.invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\n }\n string = string.replace(/-/g, '+').replace(/_/g, '/');\n break;\n }\n }\n var bytes;\n try {\n bytes = atob(string);\n }\n catch (e) {\n throw errorsExports.invalidFormat(format, 'Invalid character found');\n }\n var array = new Uint8Array(bytes.length);\n for (var i = 0; i < bytes.length; i++) {\n array[i] = bytes.charCodeAt(i);\n }\n return array;\n}\n/**\n * @struct\n */\nvar DataURLParts = /** @class */ (function () {\n function DataURLParts(dataURL) {\n this.base64 = false;\n this.contentType = null;\n var matches = dataURL.match(/^data:([^,]+)?,/);\n if (matches === null) {\n throw errorsExports.invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\n }\n var middle = matches[1] || null;\n if (middle != null) {\n this.base64 = endsWith(middle, ';base64');\n this.contentType = this.base64\n ? middle.substring(0, middle.length - ';base64'.length)\n : middle;\n }\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\n }\n return DataURLParts;\n}());\nexport function dataURLBytes_(string) {\n var parts = new DataURLParts(string);\n if (parts.base64) {\n return base64Bytes_(StringFormat.BASE64, parts.rest);\n }\n else {\n return percentEncodedBytes_(parts.rest);\n }\n}\nexport function dataURLContentType_(string) {\n var parts = new DataURLParts(string);\n return parts.contentType;\n}\nfunction endsWith(s, end) {\n var longEnough = s.length >= end.length;\n if (!longEnough) {\n return false;\n }\n return s.substring(s.length - end.length) === end;\n}\n\n//# sourceMappingURL=string.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/string.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var TaskEvent = {\n /** Triggered whenever the task changes or progress is updated. */\n STATE_CHANGED: 'state_changed'\n};\nexport var InternalTaskState = {\n RUNNING: 'running',\n PAUSING: 'pausing',\n PAUSED: 'paused',\n SUCCESS: 'success',\n CANCELING: 'canceling',\n CANCELED: 'canceled',\n ERROR: 'error'\n};\nexport var TaskState = {\n /** The task is currently transferring data. */\n RUNNING: 'running',\n /** The task was paused by the user. */\n PAUSED: 'paused',\n /** The task completed successfully. */\n SUCCESS: 'success',\n /** The task was canceled. */\n CANCELED: 'canceled',\n /** The task failed with an error. */\n ERROR: 'error'\n};\nexport function taskStateFromInternalTaskState(state) {\n switch (state) {\n case InternalTaskState.RUNNING:\n case InternalTaskState.PAUSING:\n case InternalTaskState.CANCELING:\n return TaskState.RUNNING;\n case InternalTaskState.PAUSED:\n return TaskState.PAUSED;\n case InternalTaskState.SUCCESS:\n return TaskState.SUCCESS;\n case InternalTaskState.CANCELED:\n return TaskState.CANCELED;\n case InternalTaskState.ERROR:\n return TaskState.ERROR;\n default:\n // TODO(andysoto): assert(false);\n return TaskState.ERROR;\n }\n}\n\n//# sourceMappingURL=taskenums.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/taskenums.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains methods for working with objects.\n */\nexport function contains(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nexport function forEach(obj, f) {\n for (var key in obj) {\n if (contains(obj, key)) {\n f(key, obj[key]);\n }\n }\n}\nexport function clone(obj) {\n if (obj == null) {\n return {};\n }\n var c = {};\n forEach(obj, function (key, val) {\n c[key] = val;\n });\n return c;\n}\n\n//# sourceMappingURL=object.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/object.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Implements the promise abstraction interface for external\n * (public SDK) packaging, which just passes through to the firebase-app impl.\n */\n/**\n * @template T\n * @param {function((function(T): void),\n * (function(!Error): void))} resolver\n */\nexport function make(resolver) {\n return new Promise(resolver);\n}\n/**\n * @template T\n */\nexport function resolve(value) {\n return Promise.resolve(value);\n}\nexport function reject(error) {\n return Promise.reject(error);\n}\n\n//# sourceMappingURL=promise_external.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/promise_external.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @return False if the object is undefined or null, true otherwise.\n */\nexport function isDef(p) {\n return p != null;\n}\nexport function isJustDef(p) {\n return p !== void 0;\n}\nexport function isFunction(p) {\n return typeof p === 'function';\n}\nexport function isObject(p) {\n return typeof p === 'object';\n}\nexport function isNonNullObject(p) {\n return isObject(p) && p !== null;\n}\nexport function isNonArrayObject(p) {\n return isObject(p) && !Array.isArray(p);\n}\nexport function isString(p) {\n return typeof p === 'string' || p instanceof String;\n}\nexport function isNumber(p) {\n return typeof p === 'number' || p instanceof Number;\n}\nexport function isNativeBlob(p) {\n return isNativeBlobDefined() && p instanceof Blob;\n}\nexport function isNativeBlobDefined() {\n return typeof Blob !== 'undefined';\n}\n\n//# sourceMappingURL=type.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/type.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as type from './type';\n/**\n * Returns the Object resulting from parsing the given JSON, or null if the\n * given string does not represent a JSON object.\n */\nexport function jsonObjectOrNull(s) {\n var obj;\n try {\n obj = JSON.parse(s);\n }\n catch (e) {\n return null;\n }\n if (type.isNonArrayObject(obj)) {\n return obj;\n }\n else {\n return null;\n }\n}\n\n//# sourceMappingURL=json.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/json.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains helper methods for manipulating paths.\n */\n/**\n * @return Null if the path is already at the root.\n */\nexport function parent(path) {\n if (path.length == 0) {\n return null;\n }\n var index = path.lastIndexOf('/');\n if (index === -1) {\n return '';\n }\n var newPath = path.slice(0, index);\n return newPath;\n}\nexport function child(path, childPath) {\n var canonicalChildPath = childPath\n .split('/')\n .filter(function (component) {\n return component.length > 0;\n })\n .join('/');\n if (path.length === 0) {\n return canonicalChildPath;\n }\n else {\n return path + '/' + canonicalChildPath;\n }\n}\n/**\n * Returns the last component of a path.\n * '/foo/bar' -> 'bar'\n * '/foo/bar/baz/' -> 'baz/'\n * '/a' -> 'a'\n */\nexport function lastComponent(path) {\n var index = path.lastIndexOf('/', path.length - 2);\n if (index === -1) {\n return path;\n }\n else {\n return path.slice(index + 1);\n }\n}\n\n//# sourceMappingURL=path.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/path.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functions to create and manipulate URLs for the server API.\n */\nimport * as constants from './constants';\nimport * as object from './object';\nexport function makeNormalUrl(urlPart) {\n return constants.domainBase + constants.apiBaseUrl + urlPart;\n}\nexport function makeDownloadUrl(urlPart) {\n return constants.downloadBase + constants.apiBaseUrl + urlPart;\n}\nexport function makeUploadUrl(urlPart) {\n return constants.domainBase + constants.apiUploadBaseUrl + urlPart;\n}\nexport function makeQueryString(params) {\n var encode = encodeURIComponent;\n var queryPart = '?';\n object.forEach(params, function (key, val) {\n var nextPart = encode(key) + '=' + encode(val);\n queryPart = queryPart + nextPart + '&';\n });\n // Chop off the extra '&' or '?' on the end\n queryPart = queryPart.slice(0, -1);\n return queryPart;\n}\n\n//# sourceMappingURL=url.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/url.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as json from './json';\nimport { Location } from './location';\nimport * as path from './path';\nimport * as type from './type';\nimport * as UrlUtils from './url';\nexport function noXform_(metadata, value) {\n return value;\n}\n/**\n * @struct\n */\nvar Mapping = /** @class */ (function () {\n function Mapping(server, opt_local, opt_writable, opt_xform) {\n this.server = server;\n this.local = opt_local || server;\n this.writable = !!opt_writable;\n this.xform = opt_xform || noXform_;\n }\n return Mapping;\n}());\nexport { Mapping };\nvar mappings_ = null;\nexport function xformPath(fullPath) {\n var valid = type.isString(fullPath);\n if (!valid || fullPath.length < 2) {\n return fullPath;\n }\n else {\n fullPath = fullPath;\n return path.lastComponent(fullPath);\n }\n}\nexport function getMappings() {\n if (mappings_) {\n return mappings_;\n }\n var mappings = [];\n mappings.push(new Mapping('bucket'));\n mappings.push(new Mapping('generation'));\n mappings.push(new Mapping('metageneration'));\n mappings.push(new Mapping('name', 'fullPath', true));\n function mappingsXformPath(metadata, fullPath) {\n return xformPath(fullPath);\n }\n var nameMapping = new Mapping('name');\n nameMapping.xform = mappingsXformPath;\n mappings.push(nameMapping);\n /**\n * Coerces the second param to a number, if it is defined.\n */\n function xformSize(metadata, size) {\n if (type.isDef(size)) {\n return +size;\n }\n else {\n return size;\n }\n }\n var sizeMapping = new Mapping('size');\n sizeMapping.xform = xformSize;\n mappings.push(sizeMapping);\n mappings.push(new Mapping('timeCreated'));\n mappings.push(new Mapping('updated'));\n mappings.push(new Mapping('md5Hash', null, true));\n mappings.push(new Mapping('cacheControl', null, true));\n mappings.push(new Mapping('contentDisposition', null, true));\n mappings.push(new Mapping('contentEncoding', null, true));\n mappings.push(new Mapping('contentLanguage', null, true));\n mappings.push(new Mapping('contentType', null, true));\n mappings.push(new Mapping('metadata', 'customMetadata', true));\n /**\n * Transforms a comma-separated string of tokens into a list of download\n * URLs.\n */\n function xformTokens(metadata, tokens) {\n var valid = type.isString(tokens) && tokens.length > 0;\n if (!valid) {\n // This can happen if objects are uploaded through GCS and retrieved\n // through list, so we don't want to throw an Error.\n return [];\n }\n var encode = encodeURIComponent;\n var tokensList = tokens.split(',');\n var urls = tokensList.map(function (token) {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\n var base = UrlUtils.makeDownloadUrl(urlPart);\n var queryString = UrlUtils.makeQueryString({\n alt: 'media',\n token: token\n });\n return base + queryString;\n });\n return urls;\n }\n mappings.push(new Mapping('downloadTokens', 'downloadURLs', false, xformTokens));\n mappings_ = mappings;\n return mappings_;\n}\nexport function addRef(metadata, authWrapper) {\n function generateRef() {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var loc = new Location(bucket, path);\n return authWrapper.makeStorageReference(loc);\n }\n Object.defineProperty(metadata, 'ref', { get: generateRef });\n}\nexport function fromResource(authWrapper, resource, mappings) {\n var metadata = {};\n metadata['type'] = 'file';\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\n }\n addRef(metadata, authWrapper);\n return metadata;\n}\nexport function fromResourceString(authWrapper, resourceString, mappings) {\n var obj = json.jsonObjectOrNull(resourceString);\n if (obj === null) {\n return null;\n }\n var resource = obj;\n return fromResource(authWrapper, resource, mappings);\n}\nexport function toResourceString(metadata, mappings) {\n var resource = {};\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n if (mapping.writable) {\n resource[mapping.server] = metadata[mapping.local];\n }\n }\n return JSON.stringify(resource);\n}\nexport function metadataValidator(p) {\n var validType = p && type.isObject(p);\n if (!validType) {\n throw 'Expected Metadata object.';\n }\n for (var key in p) {\n var val = p[key];\n if (key === 'customMetadata') {\n if (!type.isObject(val)) {\n throw 'Expected object for \\'customMetadata\\' mapping.';\n }\n }\n else {\n if (type.isNonNullObject(val)) {\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\n }\n }\n }\n}\n\n//# sourceMappingURL=metadata.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/metadata.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nimport * as MetadataUtils from './metadata';\nimport * as type from './type';\n/**\n * @param name Name of the function.\n * @param specs Argument specs.\n * @param passed The actual arguments passed to the function.\n * @throws {fbs.Error} If the arguments are invalid.\n */\nexport function validate(name, specs, passed) {\n var minArgs = specs.length;\n var maxArgs = specs.length;\n for (var i = 0; i < specs.length; i++) {\n if (specs[i].optional) {\n minArgs = i;\n break;\n }\n }\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\n if (!validLength) {\n throw errorsExports.invalidArgumentCount(minArgs, maxArgs, name, passed.length);\n }\n for (var i = 0; i < passed.length; i++) {\n try {\n specs[i].validator(passed[i]);\n }\n catch (e) {\n if (e instanceof Error) {\n throw errorsExports.invalidArgument(i, name, e.message);\n }\n else {\n throw errorsExports.invalidArgument(i, name, e);\n }\n }\n }\n}\n/**\n * @struct\n */\nvar ArgSpec = /** @class */ (function () {\n function ArgSpec(validator, opt_optional) {\n var self = this;\n this.validator = function (p) {\n if (self.optional && !type.isJustDef(p)) {\n return;\n }\n validator(p);\n };\n this.optional = !!opt_optional;\n }\n return ArgSpec;\n}());\nexport { ArgSpec };\nexport function and_(v1, v2) {\n return function (p) {\n v1(p);\n v2(p);\n };\n}\nexport function stringSpec(opt_validator, opt_optional) {\n function stringValidator(p) {\n if (!type.isString(p)) {\n throw 'Expected string.';\n }\n }\n var validator;\n if (opt_validator) {\n validator = and_(stringValidator, opt_validator);\n }\n else {\n validator = stringValidator;\n }\n return new ArgSpec(validator, opt_optional);\n}\nexport function uploadDataSpec() {\n function validator(p) {\n var valid = p instanceof Uint8Array ||\n p instanceof ArrayBuffer ||\n (type.isNativeBlobDefined() && p instanceof Blob);\n if (!valid) {\n throw 'Expected Blob or File.';\n }\n }\n return new ArgSpec(validator);\n}\nexport function metadataSpec(opt_optional) {\n return new ArgSpec(MetadataUtils.metadataValidator, opt_optional);\n}\nexport function nonNegativeNumberSpec() {\n function validator(p) {\n var valid = type.isNumber(p) && p >= 0;\n if (!valid) {\n throw 'Expected a number 0 or greater.';\n }\n }\n return new ArgSpec(validator);\n}\nexport function looseObjectSpec(opt_validator, opt_optional) {\n function validator(p) {\n var isLooseObject = p === null || (type.isDef(p) && p instanceof Object);\n if (!isLooseObject) {\n throw 'Expected an Object.';\n }\n if (opt_validator !== undefined && opt_validator !== null) {\n opt_validator(p);\n }\n }\n return new ArgSpec(validator, opt_optional);\n}\nexport function nullFunctionSpec(opt_optional) {\n function validator(p) {\n var valid = p === null || type.isFunction(p);\n if (!valid) {\n throw 'Expected a Function.';\n }\n }\n return new ArgSpec(validator, opt_optional);\n}\n\n//# sourceMappingURL=args.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/args.js\n// module id = null\n// module chunks = ","import * as type from './type';\nfunction getBlobBuilder() {\n if (typeof BlobBuilder !== 'undefined') {\n return BlobBuilder;\n }\n else if (typeof WebKitBlobBuilder !== 'undefined') {\n return WebKitBlobBuilder;\n }\n else {\n return undefined;\n }\n}\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param var_args The values that will make up the resulting blob.\n * @return The blob.\n */\nexport function getBlob() {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var BlobBuilder = getBlobBuilder();\n if (BlobBuilder !== undefined) {\n var bb = new BlobBuilder();\n for (var i = 0; i < var_args.length; i++) {\n bb.append(var_args[i]);\n }\n return bb.getBlob();\n }\n else {\n if (type.isNativeBlobDefined()) {\n return new Blob(var_args);\n }\n else {\n throw Error(\"This browser doesn't seem to support creating Blobs\");\n }\n }\n}\n/**\n * Slices the blob. The returned blob contains data from the start byte\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\n *\n * @param blob The blob to be sliced.\n * @param start Index of the starting byte.\n * @param end Index of the ending byte.\n * @return The blob slice or null if not supported.\n */\nexport function sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n else if (blob.mozSlice) {\n return blob.mozSlice(start, end);\n }\n else if (blob.slice) {\n return blob.slice(start, end);\n }\n return null;\n}\n\n//# sourceMappingURL=fs.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/fs.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns true if the object is contained in the array (compared with ===).\n * @template T\n */\nexport function contains(array, elem) {\n return array.indexOf(elem) !== -1;\n}\n/**\n * Returns a shallow copy of the array or array-like object (e.g. arguments).\n * @template T\n */\nexport function clone(arraylike) {\n return Array.prototype.slice.call(arraylike);\n}\n/**\n * Removes the given element from the given array, if it is contained.\n * Directly modifies the passed-in array.\n * @template T\n */\nexport function remove(array, elem) {\n var i = array.indexOf(elem);\n if (i !== -1) {\n array.splice(i, 1);\n }\n}\n\n//# sourceMappingURL=array.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/array.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as array from './array';\nimport { FbsBlob } from './blob';\nimport * as errorsExports from './error';\nimport * as MetadataUtils from './metadata';\nimport * as object from './object';\nimport { RequestInfo } from './requestinfo';\nimport * as type from './type';\nimport * as UrlUtils from './url';\n/**\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\n */\nexport function handlerCheck(cndn) {\n if (!cndn) {\n throw errorsExports.unknown();\n }\n}\nexport function metadataHandler(authWrapper, mappings) {\n function handler(xhr, text) {\n var metadata = MetadataUtils.fromResourceString(authWrapper, text, mappings);\n handlerCheck(metadata !== null);\n return metadata;\n }\n return handler;\n}\nexport function sharedErrorHandler(location) {\n function errorHandler(xhr, err) {\n var newErr;\n if (xhr.getStatus() === 401) {\n newErr = errorsExports.unauthenticated();\n }\n else {\n if (xhr.getStatus() === 402) {\n newErr = errorsExports.quotaExceeded(location.bucket);\n }\n else {\n if (xhr.getStatus() === 403) {\n newErr = errorsExports.unauthorized(location.path);\n }\n else {\n newErr = err;\n }\n }\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nexport function objectErrorHandler(location) {\n var shared = sharedErrorHandler(location);\n function errorHandler(xhr, err) {\n var newErr = shared(xhr, err);\n if (xhr.getStatus() === 404) {\n newErr = errorsExports.objectNotFound(location.path);\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nexport function getMetadata(authWrapper, location, mappings) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'GET';\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function updateMetadata(authWrapper, location, metadata, mappings) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'PATCH';\n var body = MetadataUtils.toResourceString(metadata, mappings);\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function deleteObject(authWrapper, location) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'DELETE';\n var timeout = authWrapper.maxOperationRetryTime();\n function handler(xhr, text) { }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.successCodes = [200, 204];\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function determineContentType_(metadata, blob) {\n return ((metadata && metadata['contentType']) ||\n (blob && blob.type()) ||\n 'application/octet-stream');\n}\nexport function metadataForUpload_(location, blob, opt_metadata) {\n var metadata = object.clone(opt_metadata);\n metadata['fullPath'] = location.path;\n metadata['size'] = blob.size();\n if (!metadata['contentType']) {\n metadata['contentType'] = determineContentType_(null, blob);\n }\n return metadata;\n}\nexport function multipartUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var headers = {\n 'X-Goog-Upload-Protocol': 'multipart'\n };\n function genBoundary() {\n var str = '';\n for (var i = 0; i < 2; i++) {\n str =\n str +\n Math.random()\n .toString()\n .slice(2);\n }\n return str;\n }\n var boundary = genBoundary();\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var metadataString = MetadataUtils.toResourceString(metadata, mappings);\n var preBlobPart = '--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\n metadataString +\n '\\r\\n--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: ' +\n metadata['contentType'] +\n '\\r\\n\\r\\n';\n var postBlobPart = '\\r\\n--' + boundary + '--';\n var body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\n if (body === null) {\n throw errorsExports.cannotSliceBlob();\n }\n var urlParams = { name: metadata['fullPath'] };\n var url = UrlUtils.makeUploadUrl(urlPart);\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param current The number of bytes that have been uploaded so far.\n * @param total The total number of bytes in the upload.\n * @param opt_finalized True if the server has finished the upload.\n * @param opt_metadata The upload metadata, should\n * only be passed if opt_finalized is true.\n * @struct\n */\nvar ResumableUploadStatus = /** @class */ (function () {\n function ResumableUploadStatus(current, total, finalized, metadata) {\n this.current = current;\n this.total = total;\n this.finalized = !!finalized;\n this.metadata = metadata || null;\n }\n return ResumableUploadStatus;\n}());\nexport { ResumableUploadStatus };\nexport function checkResumeHeader_(xhr, opt_allowed) {\n var status;\n try {\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\n }\n catch (e) {\n handlerCheck(false);\n }\n var allowed = opt_allowed || ['active'];\n handlerCheck(array.contains(allowed, status));\n return status;\n}\nexport function createResumableUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var urlParams = { name: metadata['fullPath'] };\n var url = UrlUtils.makeUploadUrl(urlPart);\n var method = 'POST';\n var headers = {\n 'X-Goog-Upload-Protocol': 'resumable',\n 'X-Goog-Upload-Command': 'start',\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\n 'X-Goog-Upload-Header-Content-Type': metadata['contentType'],\n 'Content-Type': 'application/json; charset=utf-8'\n };\n var body = MetadataUtils.toResourceString(metadata, mappings);\n var timeout = authWrapper.maxUploadRetryTime();\n function handler(xhr, text) {\n checkResumeHeader_(xhr);\n var url;\n try {\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\n }\n catch (e) {\n handlerCheck(false);\n }\n handlerCheck(type.isString(url));\n return url;\n }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n */\nexport function getResumableUploadStatus(authWrapper, location, url, blob) {\n var headers = { 'X-Goog-Upload-Command': 'query' };\n function handler(xhr, text) {\n var status = checkResumeHeader_(xhr, ['active', 'final']);\n var sizeString;\n try {\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\n }\n catch (e) {\n handlerCheck(false);\n }\n var size = parseInt(sizeString, 10);\n handlerCheck(!isNaN(size));\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * Any uploads via the resumable upload API must transfer a number of bytes\n * that is a multiple of this number.\n */\nexport var resumableUploadChunkSize = 256 * 1024;\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n * @param chunkSize Number of bytes to upload.\n * @param opt_status The previous status.\n * If not passed or null, we start from the beginning.\n * @throws fbs.Error If the upload is already complete, the passed in status\n * has a final size inconsistent with the blob, or the blob cannot be sliced\n * for upload.\n */\nexport function continueResumableUpload(location, authWrapper, url, blob, chunkSize, mappings, opt_status, opt_progressCallback) {\n // TODO(andysoto): standardize on internal asserts\n // assert(!(opt_status && opt_status.finalized));\n var status = new ResumableUploadStatus(0, 0);\n if (opt_status) {\n status.current = opt_status.current;\n status.total = opt_status.total;\n }\n else {\n status.current = 0;\n status.total = blob.size();\n }\n if (blob.size() !== status.total) {\n throw errorsExports.serverFileWrongSize();\n }\n var bytesLeft = status.total - status.current;\n var bytesToUpload = bytesLeft;\n if (chunkSize > 0) {\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\n }\n var startByte = status.current;\n var endByte = startByte + bytesToUpload;\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\n var headers = {\n 'X-Goog-Upload-Command': uploadCommand,\n 'X-Goog-Upload-Offset': status.current\n };\n var body = blob.slice(startByte, endByte);\n if (body === null) {\n throw errorsExports.cannotSliceBlob();\n }\n function handler(xhr, text) {\n // TODO(andysoto): Verify the MD5 of each uploaded range:\n // the 'x-range-md5' header comes back with status code 308 responses.\n // We'll only be able to bail out though, because you can't re-upload a\n // range that you previously uploaded.\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\n var newCurrent = status.current + bytesToUpload;\n var size = blob.size();\n var metadata;\n if (uploadStatus === 'final') {\n metadata = metadataHandler(authWrapper, mappings)(xhr, text);\n }\n else {\n metadata = null;\n }\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.progressCallback = opt_progressCallback || null;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n\n//# sourceMappingURL=requests.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requests.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Method for invoking a callback asynchronously.\n */\nimport * as promiseimpl from './promise_external';\n/**\n * Returns a function that invokes f with its arguments asynchronously as a\n * microtask, i.e. as soon as possible after the current script returns back\n * into browser code.\n */\nexport function async(f) {\n return function () {\n var argsToForward = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argsToForward[_i] = arguments[_i];\n }\n promiseimpl.resolve(true).then(function () {\n f.apply(null, argsToForward);\n });\n };\n}\n\n//# sourceMappingURL=async.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/async.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param f May be invoked\n * before the function returns.\n * @param callback Get all the arguments passed to the function\n * passed to f, including the initial boolean.\n */\nexport function start(f, callback, timeout) {\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\n // type instead of a bunch of functions with state shared in the closure)\n var waitSeconds = 1;\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\n var timeoutId = null;\n var hitTimeout = false;\n var cancelState = 0;\n function canceled() {\n return cancelState === 2;\n }\n var triggeredCallback = false;\n function triggerCallback() {\n if (!triggeredCallback) {\n triggeredCallback = true;\n callback.apply(null, arguments);\n }\n }\n function callWithDelay(millis) {\n timeoutId = setTimeout(function () {\n timeoutId = null;\n f(handler, canceled());\n }, millis);\n }\n function handler(success) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (triggeredCallback) {\n return;\n }\n if (success) {\n triggerCallback.apply(null, arguments);\n return;\n }\n var mustStop = canceled() || hitTimeout;\n if (mustStop) {\n triggerCallback.apply(null, arguments);\n return;\n }\n if (waitSeconds < 64) {\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\n waitSeconds *= 2;\n }\n var waitMillis;\n if (cancelState === 1) {\n cancelState = 2;\n waitMillis = 0;\n }\n else {\n waitMillis = (waitSeconds + Math.random()) * 1000;\n }\n callWithDelay(waitMillis);\n }\n var stopped = false;\n function stop(wasTimeout) {\n if (stopped) {\n return;\n }\n stopped = true;\n if (triggeredCallback) {\n return;\n }\n if (timeoutId !== null) {\n if (!wasTimeout) {\n cancelState = 2;\n }\n clearTimeout(timeoutId);\n callWithDelay(0);\n }\n else {\n if (!wasTimeout) {\n cancelState = 1;\n }\n }\n }\n callWithDelay(0);\n setTimeout(function () {\n hitTimeout = true;\n stop(true);\n }, timeout);\n return stop;\n}\n/**\n * Stops the retry loop from repeating.\n * If the function is currently \"in between\" retries, it is invoked immediately\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\n * after the current invocation finishes iff the current invocation would have\n * triggered another retry.\n */\nexport function stop(id) {\n id(false);\n}\n\n//# sourceMappingURL=backoff.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/backoff.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines methods used to actually send HTTP requests from\n * abstract representations.\n */\nimport firebase from '@firebase/app';\nimport * as array from './array';\nimport * as backoff from './backoff';\nimport * as errorsExports from './error';\nimport * as object from './object';\nimport * as promiseimpl from './promise_external';\nimport * as type from './type';\nimport * as UrlUtils from './url';\nimport * as XhrIoExports from './xhrio';\n/**\n * @struct\n * @template T\n */\nvar NetworkRequest = /** @class */ (function () {\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\n this.pendingXhr_ = null;\n this.backoffId_ = null;\n this.resolve_ = null;\n this.reject_ = null;\n this.canceled_ = false;\n this.appDelete_ = false;\n this.url_ = url;\n this.method_ = method;\n this.headers_ = headers;\n this.body_ = body;\n this.successCodes_ = successCodes.slice();\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\n this.callback_ = callback;\n this.errorCallback_ = errorCallback;\n this.progressCallback_ = progressCallback;\n this.timeout_ = timeout;\n this.pool_ = pool;\n var self = this;\n this.promise_ = promiseimpl.make(function (resolve, reject) {\n self.resolve_ = resolve;\n self.reject_ = reject;\n self.start_();\n });\n }\n /**\n * Actually starts the retry loop.\n */\n NetworkRequest.prototype.start_ = function () {\n var self = this;\n function doTheRequest(backoffCallback, canceled) {\n if (canceled) {\n backoffCallback(false, new RequestEndStatus(false, null, true));\n return;\n }\n var xhr = self.pool_.createXhrIo();\n self.pendingXhr_ = xhr;\n function progressListener(progressEvent) {\n var loaded = progressEvent.loaded;\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\n if (self.progressCallback_ !== null) {\n self.progressCallback_(loaded, total);\n }\n }\n if (self.progressCallback_ !== null) {\n xhr.addUploadProgressListener(progressListener);\n }\n xhr\n .send(self.url_, self.method_, self.body_, self.headers_)\n .then(function (xhr) {\n if (self.progressCallback_ !== null) {\n xhr.removeUploadProgressListener(progressListener);\n }\n self.pendingXhr_ = null;\n xhr = xhr;\n var hitServer = xhr.getErrorCode() === XhrIoExports.ErrorCode.NO_ERROR;\n var status = xhr.getStatus();\n if (!hitServer || self.isRetryStatusCode_(status)) {\n var wasCanceled = xhr.getErrorCode() === XhrIoExports.ErrorCode.ABORT;\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\n return;\n }\n var successCode = array.contains(self.successCodes_, status);\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\n });\n }\n /**\n * @param requestWentThrough True if the request eventually went\n * through, false if it hit the retry limit or was canceled.\n */\n function backoffDone(requestWentThrough, status) {\n var resolve = self.resolve_;\n var reject = self.reject_;\n var xhr = status.xhr;\n if (status.wasSuccessCode) {\n try {\n var result = self.callback_(xhr, xhr.getResponseText());\n if (type.isJustDef(result)) {\n resolve(result);\n }\n else {\n resolve();\n }\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n if (xhr !== null) {\n var err = errorsExports.unknown();\n err.setServerResponseProp(xhr.getResponseText());\n if (self.errorCallback_) {\n reject(self.errorCallback_(xhr, err));\n }\n else {\n reject(err);\n }\n }\n else {\n if (status.canceled) {\n var err = self.appDelete_\n ? errorsExports.appDeleted()\n : errorsExports.canceled();\n reject(err);\n }\n else {\n var err = errorsExports.retryLimitExceeded();\n reject(err);\n }\n }\n }\n }\n if (this.canceled_) {\n backoffDone(false, new RequestEndStatus(false, null, true));\n }\n else {\n this.backoffId_ = backoff.start(doTheRequest, backoffDone, this.timeout_);\n }\n };\n /** @inheritDoc */\n NetworkRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n NetworkRequest.prototype.cancel = function (appDelete) {\n this.canceled_ = true;\n this.appDelete_ = appDelete || false;\n if (this.backoffId_ !== null) {\n backoff.stop(this.backoffId_);\n }\n if (this.pendingXhr_ !== null) {\n this.pendingXhr_.abort();\n }\n };\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\n // The codes for which to retry came from this page:\n // https://cloud.google.com/storage/docs/exponential-backoff\n var isFiveHundredCode = status >= 500 && status < 600;\n var extraRetryCodes = [\n // Request Timeout: web server didn't receive full request in time.\n 408,\n // Too Many Requests: you're getting rate-limited, basically.\n 429\n ];\n var isExtraRetryCode = array.contains(extraRetryCodes, status);\n var isRequestSpecificRetryCode = array.contains(this.additionalRetryCodes_, status);\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\n };\n return NetworkRequest;\n}());\n/**\n * A collection of information about the result of a network request.\n * @param opt_canceled Defaults to false.\n * @struct\n */\nvar RequestEndStatus = /** @class */ (function () {\n function RequestEndStatus(wasSuccessCode, xhr, opt_canceled) {\n this.wasSuccessCode = wasSuccessCode;\n this.xhr = xhr;\n this.canceled = !!opt_canceled;\n }\n return RequestEndStatus;\n}());\nexport { RequestEndStatus };\nexport function addAuthHeader_(headers, authToken) {\n if (authToken !== null && authToken.length > 0) {\n headers['Authorization'] = 'Firebase ' + authToken;\n }\n}\nexport function addVersionHeader_(headers) {\n var number = typeof firebase !== 'undefined' ? firebase.SDK_VERSION : 'AppManager';\n headers['X-Firebase-Storage-Version'] = 'webjs/' + number;\n}\n/**\n * @template T\n */\nexport function makeRequest(requestInfo, authToken, pool) {\n var queryPart = UrlUtils.makeQueryString(requestInfo.urlParams);\n var url = requestInfo.url + queryPart;\n var headers = object.clone(requestInfo.headers);\n addAuthHeader_(headers, authToken);\n addVersionHeader_(headers);\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\n}\n\n//# sourceMappingURL=request.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/request.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport firebase from '@firebase/app';\nimport { StringFormat } from './src/implementation/string';\nimport { TaskEvent } from './src/implementation/taskenums';\nimport { TaskState } from './src/implementation/taskenums';\nimport { XhrIoPool } from './src/implementation/xhriopool';\nimport { Reference } from './src/reference';\nimport { Service } from './src/service';\n/**\n * Type constant for Firebase Storage.\n */\nvar STORAGE_TYPE = 'storage';\nfunction factory(app, unused, opt_url) {\n return new Service(app, new XhrIoPool(), opt_url);\n}\nexport function registerStorage(instance) {\n var namespaceExports = {\n // no-inline\n TaskState: TaskState,\n TaskEvent: TaskEvent,\n StringFormat: StringFormat,\n Storage: Service,\n Reference: Reference\n };\n instance.INTERNAL.registerService(STORAGE_TYPE, factory, namespaceExports, undefined, \n // Allow multiple storage instances per app.\n true);\n}\nregisterStorage(firebase);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @enum{number}\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\n})(ErrorCode || (ErrorCode = {}));\n\n//# sourceMappingURL=xhrio.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhrio.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Constants used in the Firebase Storage library.\n */\n/**\n * Domain and scheme for API calls.\n */\nexport var domainBase = 'https://firebasestorage.googleapis.com';\n/**\n * Domain and scheme for object downloads.\n */\nexport var downloadBase = 'https://firebasestorage.googleapis.com';\n/**\n * Base URL for non-upload calls to the API.\n */\nexport var apiBaseUrl = '/v0';\n/**\n * Base URL for upload calls to the API.\n */\nexport var apiUploadBaseUrl = '/v0';\nexport function setDomainBase(domainBase) {\n domainBase = domainBase;\n}\nexport var configOption = 'storageBucket';\n/**\n * 1 minute\n */\nexport var shortMaxOperationRetryTime = 1 * 60 * 1000;\n/**\n * 2 minutes\n */\nexport var defaultMaxOperationRetryTime = 2 * 60 * 1000;\n/**\n * 10 minutes\n */\nexport var defaultMaxUploadRetryTime = 10 * 60 * 100;\n/**\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\n * enough for us to use it directly.\n */\nexport var minSafeInteger = -9007199254740991;\n\n//# sourceMappingURL=constants.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/constants.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nimport * as object from './object';\nimport * as promiseimpl from './promise_external';\nimport * as type from './type';\nimport * as XhrIoExports from './xhrio';\n/**\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\n * doesn't work in React Native on Android.\n */\nvar NetworkXhrIo = /** @class */ (function () {\n function NetworkXhrIo() {\n var _this = this;\n this.sent_ = false;\n this.xhr_ = new XMLHttpRequest();\n this.errorCode_ = XhrIoExports.ErrorCode.NO_ERROR;\n this.sendPromise_ = promiseimpl.make(function (resolve, reject) {\n _this.xhr_.addEventListener('abort', function (event) {\n _this.errorCode_ = XhrIoExports.ErrorCode.ABORT;\n resolve(_this);\n });\n _this.xhr_.addEventListener('error', function (event) {\n _this.errorCode_ = XhrIoExports.ErrorCode.NETWORK_ERROR;\n resolve(_this);\n });\n _this.xhr_.addEventListener('load', function (event) {\n resolve(_this);\n });\n });\n }\n /**\n * @override\n */\n NetworkXhrIo.prototype.send = function (url, method, opt_body, opt_headers) {\n var _this = this;\n if (this.sent_) {\n throw errorsExports.internalError('cannot .send() more than once');\n }\n this.sent_ = true;\n this.xhr_.open(method, url, true);\n if (type.isDef(opt_headers)) {\n var headers = opt_headers;\n object.forEach(headers, function (key, val) {\n _this.xhr_.setRequestHeader(key, val.toString());\n });\n }\n if (type.isDef(opt_body)) {\n this.xhr_.send(opt_body);\n }\n else {\n this.xhr_.send();\n }\n return this.sendPromise_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getErrorCode = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getErrorCode() before sending');\n }\n return this.errorCode_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getStatus = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getStatus() before sending');\n }\n try {\n return this.xhr_.status;\n }\n catch (e) {\n return -1;\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseText = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getResponseText() before sending');\n }\n return this.xhr_.responseText;\n };\n /**\n * Aborts the request.\n * @override\n */\n NetworkXhrIo.prototype.abort = function () {\n this.xhr_.abort();\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\n return this.xhr_.getResponseHeader(header);\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\n if (type.isDef(this.xhr_.upload)) {\n this.xhr_.upload.addEventListener('progress', listener);\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\n if (type.isDef(this.xhr_.upload)) {\n this.xhr_.upload.removeEventListener('progress', listener);\n }\n };\n return NetworkXhrIo;\n}());\nexport { NetworkXhrIo };\n\n//# sourceMappingURL=xhrio_network.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhrio_network.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NetworkXhrIo } from './xhrio_network';\n/**\n * Factory-like class for creating XhrIo instances.\n */\nvar XhrIoPool = /** @class */ (function () {\n function XhrIoPool() {\n }\n XhrIoPool.prototype.createXhrIo = function () {\n return new NetworkXhrIo();\n };\n return XhrIoPool;\n}());\nexport { XhrIoPool };\n\n//# sourceMappingURL=xhriopool.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhriopool.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functionality related to the parsing/composition of bucket/\n * object location.\n */\nimport * as errorsExports from './error';\n/**\n * @struct\n */\nvar Location = /** @class */ (function () {\n function Location(bucket, path) {\n this.bucket = bucket;\n this.path_ = path;\n }\n Object.defineProperty(Location.prototype, \"path\", {\n get: function () {\n return this.path_;\n },\n enumerable: true,\n configurable: true\n });\n Location.prototype.fullServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\n };\n Location.prototype.bucketOnlyServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o';\n };\n Location.makeFromBucketSpec = function (bucketString) {\n var bucketLocation;\n try {\n bucketLocation = Location.makeFromUrl(bucketString);\n }\n catch (e) {\n // Not valid URL, use as-is. This lets you put bare bucket names in\n // config.\n return new Location(bucketString, '');\n }\n if (bucketLocation.path === '') {\n return bucketLocation;\n }\n else {\n throw errorsExports.invalidDefaultBucket(bucketString);\n }\n };\n Location.makeFromUrl = function (url) {\n var location = null;\n var bucketDomain = '([A-Za-z0-9.\\\\-]+)';\n function gsModify(loc) {\n if (loc.path.charAt(loc.path.length - 1) === '/') {\n loc.path_ = loc.path_.slice(0, -1);\n }\n }\n var gsPath = '(/(.*))?$';\n var path = '(/([^?#]*).*)?$';\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\n var gsIndices = { bucket: 1, path: 3 };\n function httpModify(loc) {\n loc.path_ = decodeURIComponent(loc.path);\n }\n var version = 'v[A-Za-z0-9_]+';\n var httpRegex = new RegExp('^https?://firebasestorage\\\\.googleapis\\\\.com/' +\n version +\n '/b/' +\n bucketDomain +\n '/o' +\n path, 'i');\n var httpIndices = { bucket: 1, path: 3 };\n var groups = [\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\n { regex: httpRegex, indices: httpIndices, postModify: httpModify }\n ];\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var captures = group.regex.exec(url);\n if (captures) {\n var bucketValue = captures[group.indices.bucket];\n var pathValue = captures[group.indices.path];\n if (!pathValue) {\n pathValue = '';\n }\n location = new Location(bucketValue, pathValue);\n group.postModify(location);\n break;\n }\n }\n if (location == null) {\n throw errorsExports.invalidUrl(url);\n }\n return location;\n };\n return Location;\n}());\nexport { Location };\n\n//# sourceMappingURL=location.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/location.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @file Provides a Blob-like wrapper for various binary types (including the\n * native Blob type). This makes it possible to upload types like ArrayBuffers,\n * making uploads possible in environments without the native Blob type.\n */\nimport * as fs from './fs';\nimport * as string from './string';\nimport { StringFormat } from './string';\nimport * as type from './type';\n/**\n * @param opt_elideCopy If true, doesn't copy mutable input data\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\n * modified after this blob's construction.\n */\nvar FbsBlob = /** @class */ (function () {\n function FbsBlob(data, opt_elideCopy) {\n var size = 0;\n var blobType = '';\n if (type.isNativeBlob(data)) {\n this.data_ = data;\n size = data.size;\n blobType = data.type;\n }\n else if (data instanceof ArrayBuffer) {\n if (opt_elideCopy) {\n this.data_ = new Uint8Array(data);\n }\n else {\n this.data_ = new Uint8Array(data.byteLength);\n this.data_.set(new Uint8Array(data));\n }\n size = this.data_.length;\n }\n else if (data instanceof Uint8Array) {\n if (opt_elideCopy) {\n this.data_ = data;\n }\n else {\n this.data_ = new Uint8Array(data.length);\n this.data_.set(data);\n }\n size = data.length;\n }\n this.size_ = size;\n this.type_ = blobType;\n }\n FbsBlob.prototype.size = function () {\n return this.size_;\n };\n FbsBlob.prototype.type = function () {\n return this.type_;\n };\n FbsBlob.prototype.slice = function (startByte, endByte) {\n if (type.isNativeBlob(this.data_)) {\n var realBlob = this.data_;\n var sliced = fs.sliceBlob(realBlob, startByte, endByte);\n if (sliced === null) {\n return null;\n }\n return new FbsBlob(sliced);\n }\n else {\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\n return new FbsBlob(slice, true);\n }\n };\n FbsBlob.getBlob = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (type.isNativeBlobDefined()) {\n var blobby = var_args.map(function (val) {\n if (val instanceof FbsBlob) {\n return val.data_;\n }\n else {\n return val;\n }\n });\n return new FbsBlob(fs.getBlob.apply(null, blobby));\n }\n else {\n var uint8Arrays = var_args.map(function (val) {\n if (type.isString(val)) {\n return string.dataFromString(StringFormat.RAW, val).data;\n }\n else {\n // Blobs don't exist, so this has to be a Uint8Array.\n return val.data_;\n }\n });\n var finalLength_1 = 0;\n uint8Arrays.forEach(function (array) {\n finalLength_1 += array.byteLength;\n });\n var merged_1 = new Uint8Array(finalLength_1);\n var index_1 = 0;\n uint8Arrays.forEach(function (array) {\n for (var i = 0; i < array.length; i++) {\n merged_1[index_1++] = array[i];\n }\n });\n return new FbsBlob(merged_1, true);\n }\n };\n FbsBlob.prototype.uploadData = function () {\n return this.data_;\n };\n return FbsBlob;\n}());\nexport { FbsBlob };\n\n//# sourceMappingURL=blob.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/blob.js\n// module id = null\n// module chunks = ","var RequestInfo = /** @class */ (function () {\n function RequestInfo(url, method, \n /**\n * Returns the value with which to resolve the request's promise. Only called\n * if the request is successful. Throw from this function to reject the\n * returned Request's promise with the thrown error.\n * Note: The XhrIo passed to this function may be reused after this callback\n * returns. Do not keep a reference to it in any way.\n */\n handler, timeout) {\n this.url = url;\n this.method = method;\n this.handler = handler;\n this.timeout = timeout;\n this.urlParams = {};\n this.headers = {};\n this.body = null;\n this.errorHandler = null;\n /**\n * Called with the current number of bytes uploaded and total size (-1 if not\n * computable) of the request body (i.e. used to report upload progress).\n */\n this.progressCallback = null;\n this.successCodes = [200];\n this.additionalRetryCodes = [];\n }\n return RequestInfo;\n}());\nexport { RequestInfo };\n\n//# sourceMappingURL=requestinfo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requestinfo.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as type from './type';\n/**\n * @struct\n */\nvar Observer = /** @class */ (function () {\n function Observer(nextOrObserver, opt_error, opt_complete) {\n var asFunctions = type.isFunction(nextOrObserver) ||\n type.isDef(opt_error) ||\n type.isDef(opt_complete);\n if (asFunctions) {\n this.next = nextOrObserver;\n this.error = opt_error || null;\n this.complete = opt_complete || null;\n }\n else {\n var observer = nextOrObserver;\n this.next = observer.next || null;\n this.error = observer.error || null;\n this.complete = observer.complete || null;\n }\n }\n return Observer;\n}());\nexport { Observer };\n\n//# sourceMappingURL=observer.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/observer.js\n// module id = null\n// module chunks = ","var UploadTaskSnapshot = /** @class */ (function () {\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\n this.bytesTransferred = bytesTransferred;\n this.totalBytes = totalBytes;\n this.state = state;\n this.metadata = metadata;\n this.task = task;\n this.ref = ref;\n }\n Object.defineProperty(UploadTaskSnapshot.prototype, \"downloadURL\", {\n get: function () {\n if (this.metadata !== null) {\n var urls = this.metadata['downloadURLs'];\n if (urls != null && urls[0] != null) {\n return urls[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n return UploadTaskSnapshot;\n}());\nexport { UploadTaskSnapshot };\n\n//# sourceMappingURL=tasksnapshot.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/tasksnapshot.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines types for interacting with blob transfer tasks.\n */\nimport { InternalTaskState } from './implementation/taskenums';\nimport { Observer } from './implementation/observer';\nimport { TaskEvent, TaskState } from './implementation/taskenums';\nimport { UploadTaskSnapshot } from './tasksnapshot';\nimport * as fbsArgs from './implementation/args';\nimport * as fbsArray from './implementation/array';\nimport { async as fbsAsync } from './implementation/async';\nimport * as errors from './implementation/error';\nimport * as fbsPromiseimpl from './implementation/promise_external';\nimport * as fbsRequests from './implementation/requests';\nimport * as fbsTaskEnums from './implementation/taskenums';\nimport * as typeUtils from './implementation/type';\n/**\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\n * upload and manage callbacks for various events.\n */\nvar UploadTask = /** @class */ (function () {\n /**\n * @param ref The firebaseStorage.Reference object this task came\n * from, untyped to avoid cyclic dependencies.\n * @param blob The blob to upload.\n */\n function UploadTask(ref, authWrapper, location, mappings, blob, metadata) {\n if (metadata === void 0) { metadata = null; }\n var _this = this;\n this.transferred_ = 0;\n this.needToFetchStatus_ = false;\n this.needToFetchMetadata_ = false;\n this.observers_ = [];\n this.error_ = null;\n this.uploadUrl_ = null;\n this.request_ = null;\n this.chunkMultiplier_ = 1;\n this.resolve_ = null;\n this.reject_ = null;\n this.ref_ = ref;\n this.authWrapper_ = authWrapper;\n this.location_ = location;\n this.blob_ = blob;\n this.metadata_ = metadata;\n this.mappings_ = mappings;\n this.resumable_ = this.shouldDoResumable_(this.blob_);\n this.state_ = InternalTaskState.RUNNING;\n this.errorHandler_ = function (error) {\n _this.request_ = null;\n _this.chunkMultiplier_ = 1;\n if (error.codeEquals(errors.Code.CANCELED)) {\n _this.needToFetchStatus_ = true;\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.metadataErrorHandler_ = function (error) {\n _this.request_ = null;\n if (error.codeEquals(errors.Code.CANCELED)) {\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.promise_ = fbsPromiseimpl.make(function (resolve, reject) {\n _this.resolve_ = resolve;\n _this.reject_ = reject;\n _this.start_();\n });\n // Prevent uncaught rejections on the internal promise from bubbling out\n // to the top level with a dummy handler.\n this.promise_.then(null, function () { });\n }\n UploadTask.prototype.makeProgressCallback_ = function () {\n var _this = this;\n var sizeBefore = this.transferred_;\n return function (loaded, total) {\n _this.updateProgress_(sizeBefore + loaded);\n };\n };\n UploadTask.prototype.shouldDoResumable_ = function (blob) {\n return blob.size() > 256 * 1024;\n };\n UploadTask.prototype.start_ = function () {\n if (this.state_ !== InternalTaskState.RUNNING) {\n // This can happen if someone pauses us in a resume callback, for example.\n return;\n }\n if (this.request_ !== null) {\n return;\n }\n if (this.resumable_) {\n if (this.uploadUrl_ === null) {\n this.createResumable_();\n }\n else {\n if (this.needToFetchStatus_) {\n this.fetchStatus_();\n }\n else {\n if (this.needToFetchMetadata_) {\n // Happens if we miss the metadata on upload completion.\n this.fetchMetadata_();\n }\n else {\n this.continueUpload_();\n }\n }\n }\n }\n else {\n this.oneShotUpload_();\n }\n };\n UploadTask.prototype.resolveToken_ = function (callback) {\n var _this = this;\n this.authWrapper_.getAuthToken().then(function (authToken) {\n switch (_this.state_) {\n case InternalTaskState.RUNNING:\n callback(authToken);\n break;\n case InternalTaskState.CANCELING:\n _this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.PAUSING:\n _this.transition_(InternalTaskState.PAUSED);\n break;\n default:\n }\n });\n };\n // TODO(andysoto): assert false\n UploadTask.prototype.createResumable_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = createRequest;\n createRequest.getPromise().then(function (url) {\n _this.request_ = null;\n _this.uploadUrl_ = url;\n _this.needToFetchStatus_ = false;\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.fetchStatus_ = function () {\n var _this = this;\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = statusRequest;\n statusRequest.getPromise().then(function (status) {\n status = status;\n _this.request_ = null;\n _this.updateProgress_(status.current);\n _this.needToFetchStatus_ = false;\n if (status.finalized) {\n _this.needToFetchMetadata_ = true;\n }\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.continueUpload_ = function () {\n var _this = this;\n var chunkSize = fbsRequests.resumableUploadChunkSize * this.chunkMultiplier_;\n var status = new fbsRequests.ResumableUploadStatus(this.transferred_, this.blob_.size());\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo;\n try {\n requestInfo = fbsRequests.continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\n }\n catch (e) {\n _this.error_ = e;\n _this.transition_(InternalTaskState.ERROR);\n return;\n }\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = uploadRequest;\n uploadRequest\n .getPromise()\n .then(function (newStatus) {\n _this.increaseMultiplier_();\n _this.request_ = null;\n _this.updateProgress_(newStatus.current);\n if (newStatus.finalized) {\n _this.metadata_ = newStatus.metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }\n else {\n _this.completeTransitions_();\n }\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.increaseMultiplier_ = function () {\n var currentSize = fbsRequests.resumableUploadChunkSize * this.chunkMultiplier_;\n // Max chunk size is 32M.\n if (currentSize < 32 * 1024 * 1024) {\n this.chunkMultiplier_ *= 2;\n }\n };\n UploadTask.prototype.fetchMetadata_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = metadataRequest;\n metadataRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.metadataErrorHandler_);\n });\n };\n UploadTask.prototype.oneShotUpload_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = multipartRequest;\n multipartRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.updateProgress_(_this.blob_.size());\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.updateProgress_ = function (transferred) {\n var old = this.transferred_;\n this.transferred_ = transferred;\n // A progress update can make the \"transferred\" value smaller (e.g. a\n // partial upload not completed by server, after which the \"transferred\"\n // value may reset to the value at the beginning of the request).\n if (this.transferred_ !== old) {\n this.notifyObservers_();\n }\n };\n UploadTask.prototype.transition_ = function (state) {\n if (this.state_ === state) {\n return;\n }\n switch (state) {\n case InternalTaskState.CANCELING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.PAUSING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.RUNNING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.PAUSING);\n var wasPaused = this.state_ === InternalTaskState.PAUSED;\n this.state_ = state;\n if (wasPaused) {\n this.notifyObservers_();\n this.start_();\n }\n break;\n case InternalTaskState.PAUSED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.CANCELED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.CANCELING);\n this.error_ = errors.canceled();\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.ERROR:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.SUCCESS:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n }\n };\n UploadTask.prototype.completeTransitions_ = function () {\n switch (this.state_) {\n case InternalTaskState.PAUSING:\n this.transition_(InternalTaskState.PAUSED);\n break;\n case InternalTaskState.CANCELING:\n this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.RUNNING:\n this.start_();\n break;\n default:\n // TODO(andysoto): assert(false);\n break;\n }\n };\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\n get: function () {\n var externalState = fbsTaskEnums.taskStateFromInternalTaskState(this.state_);\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a callback for an event.\n * @param type The type of event to listen for.\n */\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\n if (nextOrObserver === void 0) { nextOrObserver = undefined; }\n if (error === void 0) { error = undefined; }\n if (completed === void 0) { completed = undefined; }\n function typeValidator(_p) {\n if (type !== TaskEvent.STATE_CHANGED) {\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\n }\n }\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\n '`next`, `error`, `complete` properties.';\n var nextValidator = fbsArgs.nullFunctionSpec(true).validator;\n var observerValidator = fbsArgs.looseObjectSpec(null, true).validator;\n function nextOrObserverValidator(p) {\n try {\n nextValidator(p);\n return;\n }\n catch (e) { }\n try {\n observerValidator(p);\n var anyDefined = typeUtils.isJustDef(p['next']) ||\n typeUtils.isJustDef(p['error']) ||\n typeUtils.isJustDef(p['complete']);\n if (!anyDefined) {\n throw '';\n }\n return;\n }\n catch (e) {\n throw nextOrObserverMessage;\n }\n }\n var specs = [\n fbsArgs.stringSpec(typeValidator),\n fbsArgs.looseObjectSpec(nextOrObserverValidator, true),\n fbsArgs.nullFunctionSpec(true),\n fbsArgs.nullFunctionSpec(true)\n ];\n fbsArgs.validate('on', specs, arguments);\n var self = this;\n function makeBinder(specs) {\n function binder(nextOrObserver, error, opt_complete) {\n if (specs !== null) {\n fbsArgs.validate('on', specs, arguments);\n }\n var observer = new Observer(nextOrObserver, error, completed);\n self.addObserver_(observer);\n return function () {\n self.removeObserver_(observer);\n };\n }\n return binder;\n }\n function binderNextOrObserverValidator(p) {\n if (p === null) {\n throw nextOrObserverMessage;\n }\n nextOrObserverValidator(p);\n }\n var binderSpecs = [\n fbsArgs.looseObjectSpec(binderNextOrObserverValidator),\n fbsArgs.nullFunctionSpec(true),\n fbsArgs.nullFunctionSpec(true)\n ];\n var typeOnly = !(typeUtils.isJustDef(nextOrObserver) ||\n typeUtils.isJustDef(error) ||\n typeUtils.isJustDef(completed));\n if (typeOnly) {\n return makeBinder(binderSpecs);\n }\n else {\n return makeBinder(null)(nextOrObserver, error, completed);\n }\n };\n /**\n * This object behaves like a Promise, and resolves with its snapshot data\n * when the upload completes.\n * @param onFulfilled The fulfillment callback. Promise chaining works as normal.\n * @param onRejected The rejection callback.\n */\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\n // These casts are needed so that TypeScript can infer the types of the\n // resulting Promise.\n return this.promise_.then(onFulfilled, onRejected);\n };\n /**\n * Equivalent to calling `then(null, onRejected)`.\n */\n UploadTask.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n * Adds the given observer.\n */\n UploadTask.prototype.addObserver_ = function (observer) {\n this.observers_.push(observer);\n this.notifyObserver_(observer);\n };\n /**\n * Removes the given observer.\n */\n UploadTask.prototype.removeObserver_ = function (observer) {\n fbsArray.remove(this.observers_, observer);\n };\n UploadTask.prototype.notifyObservers_ = function () {\n var _this = this;\n this.finishPromise_();\n var observers = fbsArray.clone(this.observers_);\n observers.forEach(function (observer) {\n _this.notifyObserver_(observer);\n });\n };\n UploadTask.prototype.finishPromise_ = function () {\n if (this.resolve_ !== null) {\n var triggered = true;\n switch (fbsTaskEnums.taskStateFromInternalTaskState(this.state_)) {\n case TaskState.SUCCESS:\n fbsAsync(this.resolve_.bind(null, this.snapshot))();\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n var toCall = this.reject_;\n fbsAsync(toCall.bind(null, this.error_))();\n break;\n default:\n triggered = false;\n break;\n }\n if (triggered) {\n this.resolve_ = null;\n this.reject_ = null;\n }\n }\n };\n UploadTask.prototype.notifyObserver_ = function (observer) {\n var externalState = fbsTaskEnums.taskStateFromInternalTaskState(this.state_);\n switch (externalState) {\n case TaskState.RUNNING:\n case TaskState.PAUSED:\n if (observer.next !== null) {\n fbsAsync(observer.next.bind(observer, this.snapshot))();\n }\n break;\n case TaskState.SUCCESS:\n if (observer.complete !== null) {\n fbsAsync(observer.complete.bind(observer))();\n }\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n if (observer.error !== null) {\n fbsAsync(observer.error.bind(observer, this.error_))();\n }\n break;\n default:\n // TODO(andysoto): assert(false);\n if (observer.error !== null) {\n fbsAsync(observer.error.bind(observer, this.error_))();\n }\n }\n };\n /**\n * Resumes a paused task. Has no effect on a currently running or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.resume = function () {\n fbsArgs.validate('resume', [], arguments);\n var valid = this.state_ === InternalTaskState.PAUSED ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.RUNNING);\n }\n return valid;\n };\n /**\n * Pauses a currently running task. Has no effect on a paused or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.pause = function () {\n fbsArgs.validate('pause', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING;\n if (valid) {\n this.transition_(InternalTaskState.PAUSING);\n }\n return valid;\n };\n /**\n * Cancels a currently running or paused task. Has no effect on a complete or\n * failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.cancel = function () {\n fbsArgs.validate('cancel', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.CANCELING);\n }\n return valid;\n };\n return UploadTask;\n}());\nexport { UploadTask };\n\n//# sourceMappingURL=task.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/task.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines the Firebase Storage Reference class.\n */\nimport * as args from './implementation/args';\nimport { FbsBlob } from './implementation/blob';\nimport * as errorsExports from './implementation/error';\nimport { Location } from './implementation/location';\nimport * as metadata from './implementation/metadata';\nimport * as object from './implementation/object';\nimport * as path from './implementation/path';\nimport * as requests from './implementation/requests';\nimport * as fbsString from './implementation/string';\nimport { StringFormat } from './implementation/string';\nimport * as type from './implementation/type';\nimport { UploadTask } from './task';\n/**\n * Provides methods to interact with a bucket in the Firebase Storage service.\n * @param location An fbs.location, or the URL at\n * which to base this object, in one of the following forms:\n * gs:///\n * http[s]://firebasestorage.googleapis.com/\n * /b//o/\n * Any query or fragment strings will be ignored in the http[s]\n * format. If no value is passed, the storage object will use a URL based on\n * the project ID of the base firebase.App instance.\n */\nvar Reference = /** @class */ (function () {\n function Reference(authWrapper, location) {\n this.authWrapper = authWrapper;\n if (location instanceof Location) {\n this.location = location;\n }\n else {\n this.location = Location.makeFromUrl(location);\n }\n }\n /**\n * @return The URL for the bucket and path this object references,\n * in the form gs:///\n * @override\n */\n Reference.prototype.toString = function () {\n args.validate('toString', [], arguments);\n return 'gs://' + this.location.bucket + '/' + this.location.path;\n };\n Reference.prototype.newRef = function (authWrapper, location) {\n return new Reference(authWrapper, location);\n };\n Reference.prototype.mappings = function () {\n return metadata.getMappings();\n };\n /**\n * @return A reference to the object obtained by\n * appending childPath, removing any duplicate, beginning, or trailing\n * slashes.\n */\n Reference.prototype.child = function (childPath) {\n args.validate('child', [args.stringSpec()], arguments);\n var newPath = path.child(this.location.path, childPath);\n var location = new Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n };\n Object.defineProperty(Reference.prototype, \"parent\", {\n /**\n * @return A reference to the parent of the\n * current object, or null if the current object is the root.\n */\n get: function () {\n var newPath = path.parent(this.location.path);\n if (newPath === null) {\n return null;\n }\n var location = new Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n /**\n * @return An reference to the root of this\n * object's bucket.\n */\n get: function () {\n var location = new Location(this.location.bucket, '');\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"bucket\", {\n get: function () {\n return this.location.bucket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"fullPath\", {\n get: function () {\n return this.location.path;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"name\", {\n get: function () {\n return path.lastComponent(this.location.path);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"storage\", {\n get: function () {\n return this.authWrapper.service();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Uploads a blob to this object's location.\n * @param data The blob to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.put = function (data, metadata) {\n if (metadata === void 0) { metadata = null; }\n args.validate('put', [args.uploadDataSpec(), args.metadataSpec(true)], arguments);\n this.throwIfRoot_('put');\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data), metadata);\n };\n /**\n * Uploads a string to this object's location.\n * @param string The string to upload.\n * @param opt_format The format of the string to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.putString = function (string, format, opt_metadata) {\n if (format === void 0) { format = StringFormat.RAW; }\n args.validate('putString', [\n args.stringSpec(),\n args.stringSpec(fbsString.formatValidator, true),\n args.metadataSpec(true)\n ], arguments);\n this.throwIfRoot_('putString');\n var data = fbsString.dataFromString(format, string);\n var metadata = object.clone(opt_metadata);\n if (!type.isDef(metadata['contentType']) && type.isDef(data.contentType)) {\n metadata['contentType'] = data.contentType;\n }\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data.data, true), metadata);\n };\n /**\n * Deletes the object at this location.\n * @return A promise that resolves if the deletion succeeds.\n */\n Reference.prototype.delete = function () {\n args.validate('delete', [], arguments);\n this.throwIfRoot_('delete');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.deleteObject(self.authWrapper, self.location);\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * A promise that resolves with the metadata for this object. If this\n * object doesn't exist or metadata cannot be retreived, the promise is\n * rejected.\n */\n Reference.prototype.getMetadata = function () {\n args.validate('getMetadata', [], arguments);\n this.throwIfRoot_('getMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.getMetadata(self.authWrapper, self.location, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * Updates the metadata for this object.\n * @param metadata The new metadata for the object.\n * Only values that have been explicitly set will be changed. Explicitly\n * setting a value to null will remove the metadata.\n * @return A promise that resolves\n * with the new metadata for this object.\n * @see firebaseStorage.Reference.prototype.getMetadata\n */\n Reference.prototype.updateMetadata = function (metadata) {\n args.validate('updateMetadata', [args.metadataSpec()], arguments);\n this.throwIfRoot_('updateMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.updateMetadata(self.authWrapper, self.location, metadata, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * @return A promise that resolves with the download\n * URL for this object.\n */\n Reference.prototype.getDownloadURL = function () {\n args.validate('getDownloadURL', [], arguments);\n this.throwIfRoot_('getDownloadURL');\n return this.getMetadata().then(function (metadata) {\n var url = metadata['downloadURLs'][0];\n if (type.isDef(url)) {\n return url;\n }\n else {\n throw errorsExports.noDownloadURL();\n }\n });\n };\n Reference.prototype.throwIfRoot_ = function (name) {\n if (this.location.path === '') {\n throw errorsExports.invalidRootOperation(name);\n }\n };\n return Reference;\n}());\nexport { Reference };\n\n//# sourceMappingURL=reference.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/reference.js\n// module id = null\n// module chunks = ","import * as promiseimpl from './promise_external';\n/**\n * A request whose promise always fails.\n * @struct\n * @template T\n */\nvar FailRequest = /** @class */ (function () {\n function FailRequest(error) {\n this.promise_ = promiseimpl.reject(error);\n }\n /** @inheritDoc */\n FailRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n FailRequest.prototype.cancel = function (appDelete) {\n if (appDelete === void 0) { appDelete = false; }\n };\n return FailRequest;\n}());\nexport { FailRequest };\n\n//# sourceMappingURL=failrequest.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/failrequest.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as object from './object';\nimport * as constants from './constants';\n/**\n * @struct\n */\nvar RequestMap = /** @class */ (function () {\n function RequestMap() {\n this.map_ = {};\n this.id_ = constants.minSafeInteger;\n }\n /**\n * Registers the given request with this map.\n * The request is unregistered when it completes.\n * @param r The request to register.\n */\n RequestMap.prototype.addRequest = function (r) {\n var id = this.id_;\n this.id_++;\n this.map_[id] = r;\n var self = this;\n function unmap() {\n delete self.map_[id];\n }\n r.getPromise().then(unmap, unmap);\n };\n /**\n * Cancels all registered requests.\n */\n RequestMap.prototype.clear = function () {\n object.forEach(this.map_, function (key, val) {\n if (val) {\n val.cancel(true);\n }\n });\n this.map_ = {};\n };\n return RequestMap;\n}());\nexport { RequestMap };\n\n//# sourceMappingURL=requestmap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requestmap.js\n// module id = null\n// module chunks = ","import * as constants from './constants';\nimport * as errorsExports from './error';\nimport { FailRequest } from './failrequest';\nimport { Location } from './location';\nimport * as promiseimpl from './promise_external';\nimport { RequestMap } from './requestmap';\nimport * as type from './type';\n/**\n * @param app If null, getAuthToken always resolves with null.\n * @param service The storage service associated with this auth wrapper.\n * Untyped to avoid circular type dependencies.\n * @struct\n */\nvar AuthWrapper = /** @class */ (function () {\n function AuthWrapper(app, maker, requestMaker, service, pool) {\n this.bucket_ = null;\n this.deleted_ = false;\n this.app_ = app;\n if (this.app_ !== null) {\n var options = this.app_.options;\n if (type.isDef(options)) {\n this.bucket_ = AuthWrapper.extractBucket_(options);\n }\n }\n this.storageRefMaker_ = maker;\n this.requestMaker_ = requestMaker;\n this.pool_ = pool;\n this.service_ = service;\n this.maxOperationRetryTime_ = constants.defaultMaxOperationRetryTime;\n this.maxUploadRetryTime_ = constants.defaultMaxUploadRetryTime;\n this.requestMap_ = new RequestMap();\n }\n AuthWrapper.extractBucket_ = function (config) {\n var bucketString = config[constants.configOption] || null;\n if (bucketString == null) {\n return null;\n }\n var loc = Location.makeFromBucketSpec(bucketString);\n return loc.bucket;\n };\n AuthWrapper.prototype.getAuthToken = function () {\n // TODO(andysoto): remove ifDef checks after firebase-app implements stubs\n // (b/28673818).\n if (this.app_ !== null &&\n type.isDef(this.app_.INTERNAL) &&\n type.isDef(this.app_.INTERNAL.getToken)) {\n return this.app_.INTERNAL.getToken().then(function (response) {\n if (response !== null) {\n return response.accessToken;\n }\n else {\n return null;\n }\n }, function (_error) {\n return null;\n });\n }\n else {\n return promiseimpl.resolve(null);\n }\n };\n AuthWrapper.prototype.bucket = function () {\n if (this.deleted_) {\n throw errorsExports.appDeleted();\n }\n else {\n return this.bucket_;\n }\n };\n /**\n * The service associated with this auth wrapper. Untyped to avoid circular\n * type dependencies.\n */\n AuthWrapper.prototype.service = function () {\n return this.service_;\n };\n /**\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\n * at the given Location.\n * @param loc The Location.\n * @return Actually a firebaseStorage.Reference, typing not allowed\n * because of circular dependency problems.\n */\n AuthWrapper.prototype.makeStorageReference = function (loc) {\n return this.storageRefMaker_(this, loc);\n };\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\n if (!this.deleted_) {\n var request = this.requestMaker_(requestInfo, authToken, this.pool_);\n this.requestMap_.addRequest(request);\n return request;\n }\n else {\n return new FailRequest(errorsExports.appDeleted());\n }\n };\n /**\n * Stop running requests and prevent more from being created.\n */\n AuthWrapper.prototype.deleteApp = function () {\n this.deleted_ = true;\n this.app_ = null;\n this.requestMap_.clear();\n };\n AuthWrapper.prototype.maxUploadRetryTime = function () {\n return this.maxUploadRetryTime_;\n };\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\n this.maxUploadRetryTime_ = time;\n };\n AuthWrapper.prototype.maxOperationRetryTime = function () {\n return this.maxOperationRetryTime_;\n };\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\n this.maxOperationRetryTime_ = time;\n };\n return AuthWrapper;\n}());\nexport { AuthWrapper };\n\n//# sourceMappingURL=authwrapper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/authwrapper.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * 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\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as args from './implementation/args';\nimport { AuthWrapper } from './implementation/authwrapper';\nimport { Location } from './implementation/location';\nimport * as fbsPromiseImpl from './implementation/promise_external';\nimport * as RequestExports from './implementation/request';\nimport { Reference } from './reference';\n/**\n * A service that provides firebaseStorage.Reference instances.\n * @param opt_url gs:// url to a custom Storage Bucket\n *\n * @struct\n */\nvar Service = /** @class */ (function () {\n function Service(app, pool, url) {\n this.bucket_ = null;\n function maker(authWrapper, loc) {\n return new Reference(authWrapper, loc);\n }\n this.authWrapper_ = new AuthWrapper(app, maker, RequestExports.makeRequest, this, pool);\n this.app_ = app;\n if (url != null) {\n this.bucket_ = Location.makeFromBucketSpec(url);\n }\n else {\n var authWrapperBucket = this.authWrapper_.bucket();\n if (authWrapperBucket != null) {\n this.bucket_ = new Location(authWrapperBucket, '');\n }\n }\n this.internals_ = new ServiceInternals(this);\n }\n /**\n * Returns a firebaseStorage.Reference for the given path in the default\n * bucket.\n */\n Service.prototype.ref = function (path) {\n function validator(path) {\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\n throw 'Expected child path but got a URL, use refFromURL instead.';\n }\n }\n args.validate('ref', [args.stringSpec(validator, true)], arguments);\n if (this.bucket_ == null) {\n throw new Error('No Storage Bucket defined in Firebase Options.');\n }\n var ref = new Reference(this.authWrapper_, this.bucket_);\n if (path != null) {\n return ref.child(path);\n }\n else {\n return ref;\n }\n };\n /**\n * Returns a firebaseStorage.Reference object for the given absolute URL,\n * which must be a gs:// or http[s]:// URL.\n */\n Service.prototype.refFromURL = function (url) {\n function validator(p) {\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\n throw 'Expected full URL but got a child path, use ref instead.';\n }\n try {\n Location.makeFromUrl(p);\n }\n catch (e) {\n throw 'Expected valid full URL but got an invalid one.';\n }\n }\n args.validate('refFromURL', [args.stringSpec(validator, false)], arguments);\n return new Reference(this.authWrapper_, url);\n };\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\n get: function () {\n return this.authWrapper_.maxUploadRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxUploadRetryTime = function (time) {\n args.validate('setMaxUploadRetryTime', [args.nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxUploadRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"maxOperationRetryTime\", {\n get: function () {\n return this.authWrapper_.maxOperationRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxOperationRetryTime = function (time) {\n args.validate('setMaxOperationRetryTime', [args.nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxOperationRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"app\", {\n get: function () {\n return this.app_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\n get: function () {\n return this.internals_;\n },\n enumerable: true,\n configurable: true\n });\n return Service;\n}());\nexport { Service };\n/**\n * @struct\n */\nvar ServiceInternals = /** @class */ (function () {\n function ServiceInternals(service) {\n this.service_ = service;\n }\n /**\n * Called when the associated app is deleted.\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\n */\n ServiceInternals.prototype.delete = function () {\n this.service_.authWrapper_.deleteApp();\n return fbsPromiseImpl.resolve(undefined);\n };\n return ServiceInternals;\n}());\nexport { ServiceInternals };\n\n//# sourceMappingURL=service.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/service.js\n// module id = null\n// module chunks = "]}