{"version":3,"file":"c8osdkangular.mjs","sources":["../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oLogLevel.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oBase.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oUtilsCore.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oException.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oExceptionMessage.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oLogger.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oFullSyncTranslator.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oLocalCacheResponse.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oResponse.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oCouchBaseLiteException.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oRessourceNotFoundException.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oUnavailableLocalCacheException.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oProgress.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncReplication.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oload.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/pouchdbSearchPlugin.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/workerPouchBundle.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/pouchdbWorkerAdapter.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncDatabase.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncDeleteDocumentParameter.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncAttachmentParameter.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncGetDocumentParameter.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncGetViewParameter.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncRequestable.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/fullSyncResponse.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oAlldocsLocal.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oFullSync.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oLocalCache.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oTranslator.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oHttpRequestException.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oCallTask.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oFullSyncChangeListener.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oPromise.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/Exception/c8oExceptionListener.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oNetworkStatus.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oManagerNetwork.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oSessionStatus.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/C8oReplicationStatus.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oManagerDatabase.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oManagerLogin.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/C8oSessionUser.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oManagerSession.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oCore.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oHttpInterfaceCore.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/c8oSettings.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdk-js-core/src/c8o/priority.service.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/lib/c8oHttpInterface.service.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/lib/c8o.service.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/lib/c8oUtils.service.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/lib/c8oHttpxsrfInterceptor.service.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/public_api.ts","../../../projects/c8osdkangular/src/c8osdk-angular-core/c8osdkangular.ts"],"sourcesContent":["export class C8oLogLevel {\n    // private static JSON_KEY_REMOTE_LOG_LEVEL: string = \"remoteLogLevel\";\n\n    public static NULL: C8oLogLevel = new C8oLogLevel(\"\", 0);\n    public static NONE: C8oLogLevel = new C8oLogLevel(\"none\", 1);\n    public static TRACE: C8oLogLevel = new C8oLogLevel(\"trace\", 2);\n    public static DEBUG: C8oLogLevel = new C8oLogLevel(\"debug\", 3);\n    public static INFO: C8oLogLevel = new C8oLogLevel(\"info\", 4);\n    public static WARN: C8oLogLevel = new C8oLogLevel(\"warn\", 5);\n    public static ERROR: C8oLogLevel = new C8oLogLevel(\"error\", 6);\n    public static FATAL: C8oLogLevel = new C8oLogLevel(\"fatal\", 7);\n\n    public static C8O_LOG_LEVELS = [C8oLogLevel.NULL, C8oLogLevel.NONE, C8oLogLevel.TRACE, C8oLogLevel.DEBUG, C8oLogLevel.INFO, C8oLogLevel.WARN, C8oLogLevel.ERROR, C8oLogLevel.FATAL];\n\n    public name: string;\n    public priority: number;\n\n    constructor(name: string, priority: number) {\n        this.name = name;\n        this.priority = priority;\n    }\n\n    public static getC8oLogLevel(name: string): C8oLogLevel {\n        for (let i = 0; i <= C8oLogLevel.C8O_LOG_LEVELS.length; i++) {\n            if (C8oLogLevel.C8O_LOG_LEVELS[i].name === name) {\n                return C8oLogLevel.C8O_LOG_LEVELS[i];\n            }\n        }\n        return null;\n    }\n}\n","import {C8oLogLevel} from \"./c8oLogLevel\";\n\nexport type C8oEndpointScope = \"auto\" | \"global\" | \"project\";\n\nexport class C8oBase {\n    /*HTTP*/\n    protected _endpointSettings: string;\n    protected _timeout: number = 3600000;\n    protected _retry: number = 1;\n    // protected _trustAllCertificates: boolean = false;\r\n    protected _cookies: Object = {};\r\n    protected _clientCertificateFiles: Object;\r\n    protected _clientCertificateBinaries: Object;\r\n\r\n    protected _forceFormData: boolean = false;\r\n    /*Log*/\r\n    protected _logRemote: boolean = true;\r\n    protected _initialLogRemote: boolean = true;\r\n    protected _logLevelLocal: C8oLogLevel = C8oLogLevel.NONE;\r\n    protected _logPouchDB: boolean = false;\r\n    protected _logC8o: boolean = false;\r\n    protected _logOnFail: (exception: Error, parameters: Object) => void;\r\n\r\n    /* FullSync */\r\n    protected _defaultDatabaseName: string = null;\r\n    protected _authenticationCookieValue: string = null;\r\n    protected _fullSyncLocalSuffix: string = null;\r\n    protected _fullSyncServerUrl: string = \"http://localhost:5984\";\r\n    protected _fullSyncUsername: string;\r\n    protected _fullSyncPassword: string;\r\n\r\n    /* Encryption */\r\n    protected _useEncryption: boolean = false;\r\n    protected _disableSSL: boolean = false;\r\n    //noinspection JSUnusedGlobalSymbols\r\n    protected _keyStorePassword: string;\r\n    //noinspection JSUnusedGlobalSymbols\r\n    protected _trustStorePassword: string;\r\n\r\n    //Dates\r\n    protected _normalizeParameters: boolean;\r\n\r\n    //Dates\r\n    protected _useworker: boolean = false;\r\n\r\n    protected _keepSessionAlive: boolean = true;\r\n\r\n    protected _errorConvertigoIntoFail: boolean = false;\r\n\r\n    protected _resetBase: boolean = true;\r\n    \r\n    protected _prefixBase: boolean = false;\r\n\r\n    protected _headers: Object = {};\n    \n    protected _initalLogLevel: Boolean;\n\n    protected _parrallelizeCallSequences: boolean = true;\n    protected _endpointScope: C8oEndpointScope = \"auto\";\n    /** Getters **/\n\r\n    /**\r\n     * Gets if normalize parameters.<br/>\r\n     * Default is <b>false</b>.\r\n     * @returns The timeout.\r\n     */\r\n     public get usewroker(): boolean {\r\n        return this._useworker;\r\n    }\r\n\r\n    /**\r\n     * Gets if normalize parameters.<br/>\r\n     * Default is <b>false</b>.\r\n     * @returns The timeout.\r\n     */\r\n    public get normalizeParameters(): boolean {\r\n        return this._normalizeParameters;\r\n    }\r\n    /**\r\n     * Gets if session has to be keep alive.<br/>\r\n     * Default is <b>true</b>.\r\n     * @returns The KeepSessionAlive status.\r\n     */\r\n    public get keepSessionAlive(): boolean {\r\n        return this._keepSessionAlive;\r\n    }\r\n\r\n    /**\r\n     * Gets if error convertigo are thrown into fail.<br/>\r\n     * Default is <b>false</b>.\r\n     * @returns The errorConvertigoIntoFail status.\r\n     */\r\n    public get errorConvertigoIntoFail(): boolean {\r\n        return this._errorConvertigoIntoFail;\r\n    }\r\n    \r\n\r\n    /**\r\n     * Gets if reset database is disabled.<br/>\r\n     * Default is <b>true</b>.\r\n     * @returns The disable reset base status.\r\n     */\r\n    public get resetBase(): boolean {\r\n        return this._resetBase;\r\n    }\r\n\r\n    /**\r\n     * Gets if we have to prefix databases with user name.<br/>\r\n     * Default is <b>false</b>.\r\n     * @returns The prefix base status.\r\n     */\r\n    public get prefixBase(): boolean {\r\n        return this._prefixBase;\r\n    }\r\n    \r\n    /**\r\n     * Gets the connection timeout to Convertigo in milliseconds. A value of zero means the timeout is not used.<br/>\r\n     * Default is <b>0</b>.\r\n     * @returns The timeout.\r\n     */\r\n    public get timeout(): number {\r\n        return this._timeout;\r\n    }\r\n\r\n    /**\r\n     * Gets the http connection attempt before failing.<br/>\r\n     * Default is <b>1</b>.\r\n     * @returns The timeout.\r\n     */\r\n    public get retry(): number {\r\n        return this._retry;\r\n    }\r\n    /**\r\n     * Gets a value indicating whether https calls trust all certificates or not.<br/>\r\n     * Default is <b>false</b>.\r\n     * @returns <b>true</b> if https calls trust all certificates; otherwise, <b>false</b>.\r\n     */\r\n    /*public get trustAllCertificates(): boolean {\r\n        return this._trustAllCertificates;\r\n    }*/\r\n\r\n    /**\r\n     * Gets initial cookies to send to the Convertigo server.<br/>\r\n     * Default is <b>null</b>.\r\n     * @returns List of cookies.\r\n     */\r\n    public get cookies(): Object {\r\n        return this._cookies;\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating if logs are sent to the Convertigo server.<br/>\r\n     * Default is <b>true</b>.\r\n     * @returns <b>true</b> if logs are sent to the Convertigo server; otherwise, <b>false</b>.\r\n     */\r\n    public get logRemote(): boolean {\r\n        return this._logRemote;\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating if pouchDB logs are enabled.<br/>\r\n     * Default is <b>false</b>.\r\n     * @returns <b>true</b> if pouchDB logs are enabled; otherwise, <b>false</b>.\r\n     */\r\n    public get logPouchDB(): boolean {\r\n        return this._logPouchDB;\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating logs level local\r\n     *\r\n     * @returns C8oLogLevel object\r\n     */\r\n    public get logLevelLocal(): C8oLogLevel {\r\n        return this._logLevelLocal;\r\n    }\r\n\r\n    public get logC8o(): boolean {\r\n        return this._logC8o;\r\n    }\r\n\r\n    public get defaultDatabaseName(): string {\r\n        return this._defaultDatabaseName;\r\n    }\r\n\r\n    public get authenticationCookieValue(): string {\r\n        return this._authenticationCookieValue;\r\n    }\r\n\r\n    public get fullSyncLocalSuffix(): string {\r\n        return this._fullSyncLocalSuffix;\r\n    }\r\n\r\n    //noinspection JSUnusedGlobalSymbols\r\n    public get fullSyncServerUrl(): string {\r\n        return this._fullSyncServerUrl;\r\n    }\r\n\r\n    //noinspection JSUnusedGlobalSymbols\r\n    public get fullSyncUsername(): string {\r\n        return this._fullSyncUsername;\r\n    }\r\n\r\n    //noinspection JSUnusedGlobalSymbols\r\n    public get fullSyncPassword(): string {\r\n        return this._fullSyncPassword;\r\n    }\r\n\r\n    public get logOnFail(): (exception: Error, parameters: Object) => void {\r\n        return this._logOnFail;\r\n    }\r\n\r\n    /**\r\n     * Gets the endpoint define in C8oSettings<br/>\r\n     * @returns The current <b>endpoint</b>, if defined by c8oSettings.\r\n     */\r\n    public get endpoint(): string {\r\n        return this._endpointSettings;\r\n    }\r\n\r\n    public get headers(): Object {\r\n        return this._headers;\r\n    }\r\n\r\n    public get parrallelizeCallSequences (): boolean {\n        return this._parrallelizeCallSequences;\n    }\n\n    public get endpointScope(): C8oEndpointScope {\n        return this._endpointScope;\n    }\n\r\n    public copy(c8oBase: C8oBase) {\r\n        if (c8oBase !== undefined) {\r\n            /** HTTP **/\r\n            this._timeout = c8oBase._timeout;\r\n            this._retry = c8oBase._retry;\r\n            this._parrallelizeCallSequences = c8oBase._parrallelizeCallSequences;\r\n            // this._trustAllCertificates = c8oBase._trustAllCertificates;\r\n            if (this.cookies == null) {\r\n                this._cookies = {};\r\n            }\r\n            if (c8oBase.cookies !== null) {\r\n                this._cookies = c8oBase._cookies;\r\n            }\r\n\r\n            /** Log **/\r\n            this._logPouchDB = c8oBase.logPouchDB;\r\n            this._logRemote = c8oBase.logRemote;\r\n            this._initialLogRemote = c8oBase.logRemote;\r\n            this._logLevelLocal = c8oBase.logLevelLocal;\r\n            this._logC8o = c8oBase.logC8o;\r\n            this._logOnFail = c8oBase.logOnFail;\r\n\r\n            this._forceFormData = c8oBase._forceFormData;\r\n            /** FullSync **/\r\n            this._defaultDatabaseName = c8oBase.defaultDatabaseName;\r\n            this._authenticationCookieValue = c8oBase.authenticationCookieValue;\r\n            this._fullSyncLocalSuffix = c8oBase.fullSyncLocalSuffix;\r\n\r\n            this._fullSyncServerUrl = c8oBase.fullSyncServerUrl;\r\n            this._fullSyncUsername = c8oBase.fullSyncUsername;\r\n            this._fullSyncPassword = c8oBase.fullSyncPassword;\r\n            this._headers = c8oBase._headers;\r\n\r\n            /** Date **/\r\n            this._normalizeParameters = c8oBase._normalizeParameters;\r\n\r\n            /**Keep ALive */\r\n            this._keepSessionAlive = c8oBase._keepSessionAlive;\r\n\r\n            /** Reset base */\r\n            this._resetBase = c8oBase._resetBase;\r\n            /** Reset base */\r\n            this._prefixBase = c8oBase._prefixBase;\n            this._errorConvertigoIntoFail = c8oBase._errorConvertigoIntoFail;\n            this._useworker = c8oBase.usewroker;\n            this._endpointScope = c8oBase._endpointScope;\n            \n        }\n    }\n}\n","// @dynamic\n\nexport class C8oUtilsCore {\n\n    /** FullSync parameters prefix. **/\n    private static USE_PARAMETER_IDENTIFIER: string = \"_use_\";\n    public data: JSON;\n\n    public constructor() {\n    }\n\n    /**\n     * Returns the class name of the object as a String, if the object is null then returns the String \"null\".\n     *\n     * @param object\n     * @returns string\n     */\n    public static getObjectClassName(object: any) {\n        return typeof object;\n    }\n\n    public static isValidUrl(url: string): boolean {\n        return /^(http|https):\\/\\/[^ \"]+$/.test(url.toString());\n    }\n\n    /**\n     * returns 128 bits hash using MD5 algo \n     * @param str any string\n     */\n    public static MD5(str: string):string{\n        const MD5 = (d) => {var r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};function M(d){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}function X(d){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}function V(d){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}function Y(d,_){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}function md5_cmn(d,_,m,f,r,i){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}function md5_ff(d,_,m,f,r,i,n){return md5_cmn(_&m|~_&f,d,_,r,i,n)}function md5_gg(d,_,m,f,r,i,n){return md5_cmn(_&f|m&~f,d,_,r,i,n)}function md5_hh(d,_,m,f,r,i,n){return md5_cmn(_^m^f,d,_,r,i,n)}function md5_ii(d,_,m,f,r,i,n){return md5_cmn(m^(_|~f),d,_,r,i,n)}function safe_add(d,_){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}function bit_rol(d,_){return d<<_|d>>>32-_}\n        return MD5(str);\n    }\n\n    /**\n     * \n     * @param str any string\n     */\n    public static MD5ArrayBuffer(str): any{\n        const MD5str = C8oUtilsCore.MD5(str);\n        return new TextEncoder().encode(MD5str).slice(0,16);\n    }\n    \n    public static getNewGUIDString(): string {\n        if(window[\"device\"] != undefined){\n            let platform: string = window[\"device\"][\"platform\"];\n            platform = platform.substring(0,3);\n            let uuid = platform +\"-\"+ window[\"device\"][\"uuid\"];\n            return uuid;\n        }\n        else{\n            let uuidStored: string = localStorage.getItem(\"__c8o_uuid\");\n\n            if(uuidStored != undefined && uuidStored != \"\"){\n                return uuidStored;\n            }\n            else{\n                let platform: string = \"web-\";\n                let d = new Date().getTime();\n                let uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n                    const r = (d + Math.random() * 16) % 16 | 0;\n                    d = Math.floor(d / 16);\n                    return (c === \"x\" ? r : (r & 0x3 | 0x8)).toString(16);\n                });\n                uuid = platform + uuid;\n                localStorage.setItem(\"__c8o_uuid\", uuid);\n                return uuid;\n            }\n        }\n        \n    }\n\n    /** TAG Parameter **/\n\n    public static getParameter(parameters: Object, name: string, useName: boolean): any {\n        for (let _i = 0; _i < Object.keys(parameters).length; _i++) {\n            const parameterName = Object.keys(parameters)[_i];\n            if ((name === parameterName) || (useName && name === this.USE_PARAMETER_IDENTIFIER + parameterName)) {\n                const obj = {};\n                obj[Object.keys(parameters)[_i]] = parameters[Object.keys(parameters)[_i]];\n                return obj;\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Searches in the list the parameter with this specific name (or the same name with the prefix '_use_') and returns it.<br/>\n     * Returns null if the parameter is not found.\n     *\n     * @param parameters\n     * @param name\n     * @param useName\n     * @returns string\n     */\n    public static getParameterStringValue(parameters: Object, name: string, useName: boolean): string {\n        const parameter = C8oUtilsCore.getParameter(parameters, name, useName);\n        if (parameter != null) {\n            return \"\" + parameter[name];\n        }\n        return null;\n    }\n\n    public static getParameterObjectValue(parameters: Object, name: string, useName: boolean = false): any {\n        //noinspection UnnecessaryLocalVariableJS\n        const parameters2 = parameters;\n        const parameter = C8oUtilsCore.getParameter(parameters2, name, useName);\n        if (parameter != null) {\n            return parameter[name];\n        } else {\n            return null;\n        }\n\n    }\n\n    public static peekParameterStringValue(parameters: Object, name: string, exceptionIfMissing: boolean): string {\n        //noinspection UnnecessaryLocalVariableJS\n        const parameters2 = parameters;\n        const value: string = this.getParameterStringValue(parameters2, name, false);\n        if (value == null) {\n            if (exceptionIfMissing) {\n                throw new Error(\"The parameter '\" + name + \"' is missing\");\n            }\n        } else {\n            delete parameters[name];\n        }\n        return value;\n    }\n\n    public static peekParameterObjectValue(parameters: Object, name: string, exceptionIfMissing: boolean): string {\n        const parameters2 = parameters;\n        const value: string = this.getParameterObjectValue(parameters2, name, false);\n        if (value == null) {\n            if (exceptionIfMissing) {\n                throw new Error(\"The parameter '\" + name + \"' is missing\");\n            }\n        } else {\n            delete parameters2[name];\n        }\n        return value;\n    }\n\n    /**\n     * Serializes a c8o call request thanks to its parameters and response type.\n     *\n     * @param parameters\n     * @param responseType\n     * @returns string\n     * @throws C8oException\n     */\n    public static identifyC8oCallRequest(parameters: Object, responseType: string): string {\n        return responseType + JSON.stringify(parameters);\n    }\n\n    public static checkHeaderArgument(response, argument){\n        return response.headers.get(argument);\n    }\n}\n\nexport class Queue<T> {\n    public _store: T[] = [];\n\n    public push(val: T) {\n        this._store.push(val);\n    }\n\n    public pop(): T {\n        return this._store.shift();\n    }\n\n    public count(): number {\n        return this._store.length;\n    }\n}\n\n\nexport class Semaphore {\n    private max: number;\n    private counter = 0;\n    private waiting = [];\n\n    constructor(max){\n        this.max = max;\n    }\n    \n    \n    public take () {\n      if (this.waiting.length > 0 && this.counter < this.max){\n        this.counter++;\n        let promise = this.waiting.shift();\n        promise.resolve();\n      }\n    }\n    \n    public acquire () {\n      if(this.counter < this.max) {\n        this.counter++\n        return new Promise<void>(resolve => {\n        resolve();\n      });\n      } else {\n        return new Promise((resolve, err) => {\n          this.waiting.push({resolve: resolve, err: err});\n        });\n      }\n    }\n      \n    public release (arg = null) {\n     this.counter--;\n     this.take();\n    }\n    \n    public purge () {\n      let unresolved = this.waiting.length;\n    \n      for (let i = 0; i < unresolved; i++) {\n        this.waiting[i].err('Task has been purged.');\n      }\n    \n      this.counter = 0;\n      this.waiting = [];\n      \n      return unresolved;\n    }\n  }\n","/**\n * Thrown specific exceptions to Convertigo.\n */\nexport class C8oException extends Error {\n\n    public  message: string;\n    protected _cause: Error;\n\n    constructor(message: string);\n    constructor(message: string, cause: Error);\n    constructor(message: string, cause: Error, all: boolean);\n    //noinspection JSUnusedLocalSymbols\n    constructor(message: string, cause: Error = null, all: boolean = false) {\n        if (cause == null) {\n            super(message);\n            this.message = message;\n            // Since typescript 2.1.1 we have to set the prototype explicitly.\n            Object.setPrototypeOf(this, C8oException.prototype);\n        }\n        else {\n            super(message);\n            this.message = message;\n            this._cause = cause;\n            // Since typescript 2.1.1 we have to set the prototype explicitly.\n            Object.setPrototypeOf(this, C8oException.prototype);\n        }\n    }\n    public get cause(): Error{\n        return this._cause;\n    }\n\n    public toJSON(){\n        var alt = {};\n        Object.getOwnPropertyNames(this).forEach(function (key) {\n            alt[key] = this[key];\n        }, this);\n        return alt;\n    }\n    \n    public toString(){\n        var alt = {};\n        Object.getOwnPropertyNames(this).forEach(function (key) {\n            alt[key] = this[key];\n        }, this);\n        return alt;\n    }\n}","import {C8oResponseListener} from \"../c8oResponse\";\nimport {C8oUtilsCore} from \"../c8oUtilsCore\";\n/**\n * Contains static Functions returning the exception messages\n * in order to make simpler their modification and avoid duplication.\n */\nexport class C8oExceptionMessage {\n\n    /** TAG Illegal argument **/\n    static notImplementedFullSyncInterface(): string {\n        return \"You are using the default FullSyncInterface which is not implemented\";\n    }\n\n    static invalidParameterValue(parameterName: string, details: string = null): string {\n        let errorMessage: string = \"The parameter '\" + parameterName + \"' is invalid\";\n        if (details != null) {\n            errorMessage += \", \" + details;\n        }\n        return errorMessage;\n    }\n    static illegalArgumentInvalidEndpoint(endpoint: string): string {\n        return \"'\" + endpoint + \"' is not a valid Convertigo endpoint\";\n    }\n\n    static wrongListener(c8oListener: C8oResponseListener): string {\n        return \"The C8oListener class \" + C8oUtilsCore.getObjectClassName(c8oListener) + \" is not handled\";\n    }\n\n    static illegalArgumentNullParameter(parameterName: string): string {\n        return parameterName + \" must be not null\";\n    }\n\n    static  missingValue(valueName: string): string {\n        return \"The \" + valueName + \" is missing\";\n    }\n\n    static  unknownValue(valueName: string, value: string): string {\n        return \"The \" + valueName + \" value \" + value + \" is unknown\";\n    }\n\n    static  unknownType(variableName: string, variable: Object): string {\n        return \"The \" + variableName + \" type \" + C8oUtilsCore.getObjectClassName(variable) + \"is unknown\";\n    }\n\n    static  ressourceNotFound(ressourceName: string): string {\n        return \"The \" + ressourceName + \" was not found\";\n    }\n\n    /** TAG Illegal argument */\n\n    static  illegalArgumentInvalidFullSyncDatabaseUrl(fullSyncDatabaseUrlStr: string): string {\n        return \"The fullSync database url '\" + fullSyncDatabaseUrlStr + \"' is not a valid url\";\n    }\n\n    static  FullSyncDatabaseInitFailed(databaseName: string): string {\n        return \"Failed to initialize the FullSync database '\" + databaseName + \"'\";\n    }\n\n    static  MissParameter(parameterName: string): string {\n        return \"The parameter '\" + parameterName + \"' is missing\";\n    }\n\n    /* private static  illegalArgumentInvalidParameterValue(parameterName: string, parameterValue: string): string {\n     return \"'\" + parameterValue + \"' is not a valid value for the parameter '\" + parameterName + \"'\"\n     } */\n\n    static illegalArgumentInvalidURL(urlStr: string): string {\n        return \"'\" + urlStr + \"' is not a valid URL\";\n    }\n\n    static  InvalidArgumentInvalidURL(urlStr: string): string {\n        return \"'\" + urlStr + \"' is not a valid URL\";\n    }\n\n    static  UnknownFullSyncPolicy(policy: any): string {\n        return \"Unknown the FullSync policy '\" + policy + \"'\";\n    }\n\n    static InvalidArgumentInvalidEndpoint(endpoint: string): string {\n        return \"'\" + endpoint + \"' is not a valid Convertigo endpoint\";\n    }\n\n    static  InvalidRequestable(requestable: string): string {\n        return \"'\" + requestable + \"' is not a valid requestable.\";\n    }\n\n    static  InvalidParameterType(parameterName: string, wantedParameterType: string, actualParameterType: string): string {\n        return \"The parameter '\" + parameterName + \"' must be of type '\" + wantedParameterType + \"' and not '\" + actualParameterType + \"'\";\n    }\n\n    static  illegalArgumentIncompatibleListener(listenerType: string, responseType: string): string {\n        return \"The listener type '\" + listenerType + \"' is incompatible with the response type '\" + responseType + \"'\";\n    }\n\n    static  InvalidArgumentNullParameter(parameterName: string): string {\n        return parameterName + \" must be not null\";\n    }\n\n    /** TAG Initialization */\n    static  InitError(): string {\n        return \"Unable to initialize\";\n    }\n\n    static  InitRsainternalKey(): string {\n        return \"Unable to initialize the RSA internal key\";\n    }\n\n    static  InitCouchManager(): string {\n        return \"Unable to initialize the fullSync databases manager\";\n    }\n\n    static  InitSslSocketFactory(): string {\n        return \"Unable to initialize the ssl socket factory\";\n    }\n\n    static  InitDocumentBuilder(): string {\n        return \"Unable to initialize the XML document builder\";\n    }\n\n    /** TAG Parse */\n\n    static  ParseStreamToJson(): string {\n        return \"Unable to parse the input stream to a json document\";\n    }\n\n    static  ParseStreamToXml(): string {\n        return \"Unable to parse the input stream to an xml document\";\n    }\n\n    static  parseInputStreamToString(): string {\n        return \"Unable to parse the input stream to a string\";\n    }\n\n    static  parseXmlToString(): string {\n        return \"Unable to parse the xml document to a string\";\n    }\n\n    static  parseRsainternalKey(): string {\n        return \"Unable to parse the RSA internal key\";\n    }\n\n    static  parseQueryEnumeratorToJson(): string {\n        return \"Unable to parse the query to a json document\";\n    }\n\n    static  parseLogsToJson(): string {\n        return \"Unable to parse logs to a json document\";\n    }\n\n    static  parseLogsStreamToJson(): string {\n        return \"Unable to parse stream containing logs response to a json document\";\n    }\n\n    static  parseC8oReplicationResultToJson(): string {\n        return \"Unable to parse the replication result to a json document\";\n    }\n\n    static  parseFullSyncDefaultResponseToJson(): string {\n        return \"Unable to parse the default fullSync result to a json document\";\n    }\n\n    static  parseFullSyncPostDocumentResponseToJson(): string {\n        return \"Unable to parse the post document fullSync result to a json document\";\n    }\n\n    static  parseStringToJson(): string {\n        return \"Unable to parse the string to a JSON document\";\n    }\n\n    static  ParseStringToObject(type: any/*type*/): string {\n        return \"Unable to parse the string (JSON):string to an object of type \"; // + type\n    }\n\n    static  StringToJsonValue(str: string): string {\n        return \"Unable to translate the string '\" + str + \"' to a JSON value\";\n    }\n\n    /** TAG HTTP */\n\n    static  retrieveRsainternalKey(): string {\n        return \"Error during http request to get the RSA internal key\";\n    }\n\n    static  httpLogs(): string {\n        return \"Error during http request to send logs to the Convertigo server\";\n    }\n\n    /** TAG Couch */\n\n    static  couchRequestGetView(): string {\n        return \"Unable to run the view query\";\n    }\n\n    static couchRequestCreateIndex(): string {\n        return \"Unable to create the index\";\n    }\n    static couchRequestFind(): string {\n        return \"Unable to run the query find\";\n    }\n\n    static couchRequestExplain(): string {\n        return \"Unable to run the query explain\";\n    }\n\n    static couchRequestGetIndexes(): string {\n        return \"Unable to run the query getIndexes\";\n    }\n\n    static couchRequestDeleteIndex(): string {\n        return \"Unable to run the query deleteIndex\";\n    }\n\n    static couchRequestSearch(): string {\n        return \"Unable to run the query search\";\n    }\n    \n\n    static  couchRequestAllDocuments(): string {\n        return \"Unable to run the all query\";\n    }\n\n    static  couchRequestResetDatabase(): string {\n        return \"Unable to run the reset query\";\n    }\n\n    static  couchRequestDeleteDocument(): string {\n        return \"Unable to run the delete document query\";\n    }\n\n    static  couchRequestInvalidRevision(): string {\n        return \"The revision is invalid\";\n    }\n\n    static  couchRequestPostDocument(): string {\n        return \"Unable to run the post document query\";\n    }\n\n    static  unableToGetFullSyncDatabase(databaseName: string): string {\n        return \"Unable to get the fullSync database '\" + databaseName + \"' from the manager\";\n    }\n\n    static  couchNullResult(): string {\n        return \"An error occured during the fullSync request, its result is null\";\n    }\n\n    static  couchFullSyncNotActive(): string {\n        return \"Unable to use fullSync because it was not activated at the initialization\";\n    }\n\n    static  CouchDeleteFailed(): string {\n        return \"Delete the Couch document failed\";\n    }\n\n    static  fullSyncPutProperties(properties: Object): string {\n        return \"Unable to put the following properties in the fullSync Document: \" + JSON.stringify(properties);\n    }\n\n    static  fullSyncGetOrCreateDatabase(databaseName: string): string {\n        return \"Unable to get or create the fullSync database '\" + databaseName + \"'\";\n    }\n\n    static  fullSyncHandleResponse(): string {\n        return \"Error while handling the fullSync response\";\n    }\n\n    /** TAG Certificate */\n\n    static  loadKeyStore(): string {\n        return \"Failed to load key store\";\n    }\n\n    static  trustAllCertificates(): string {\n        return \"Unable to load a key store trusting all certificates\";\n    }\n\n    static  clientKeyStore(): string {\n        return \"Unable to load the client key store\";\n    }\n\n    static  serverKeyStore(): string {\n        return \"Unable to load the server key store\";\n    }\n\n    /** TAG Not found */\n\n    static  illegalArgumentNotFoundFullSyncView(viewName: string, databaseName: string): string {\n        return \"Cannot found the view '\" + viewName + \"' in database '\" + databaseName + \"'\";\n    }\n\n    /** TAG Other */\n\n    static  unhandledResponseType(responseType: string): string {\n        return \"The response type '\" + responseType + \"' is not handled\";\n    }\n\n    static  unhandledListenerType(listenerType: string): string {\n        return \"The listener type '\" + listenerType + \"' is not handled\";\n    }\n\n    //noinspection JSUnusedLocalSymbols\n    static  WrongListener(c8oListener: C8oResponseListener): string {\n        return \"wrong listener\"; // \"The C8oListener class \" + C8oUtils.GetObjectClassName(c8oListener) + \" is not handled\"\n    }\n\n    static  wrongResult(result: any): string {\n        return \"The response class \" + C8oUtilsCore.getObjectClassName(result) + \" is not handled\";\n    }\n\n\n    static  unhandledFullSyncRequestable(fullSyncRequestableValue: string): string {\n        return \"The fullSync requestable '\" + fullSyncRequestableValue + \"' is not handled\";\n    }\n\n    static  closeInputStream(): string {\n        return \"Unable to close the input stream\";\n    }\n\n    static  deserializeJsonObjectFromString(str: string): string {\n        return \"Unable to deserialize the JSON object from the following string: '\" + str + \"'\";\n    }\n\n    static  postDocument(): string {\n        return \"Unable to post document\";\n    }\n\n    static  getNameValuePairObjectValue(name: string): string {\n        return \"Unable to get the object value from the NameValuePair named '\" + name + \"'\";\n    }\n\n    static  queryEnumeratorToJSON(): string {\n        return \"Unable to parse the QueryEnumerator to a JSON document\";\n    }\n\n    static  queryEnumeratorToXML(): string {\n        return \"Unable to parse the QueryEnumerator to a XML document\";\n    }\n\n    static  addparametersToQuery(): string {\n        return \"Unable to add parameters to the fullSync query\";\n    }\n\n    static  putJson(): string {\n        return \"Failed to put data in JSON ...\";\n    }\n\n    static  changeEventToJson(): string {\n        return \"Failed to parse ChangeEvent to JSON document\";\n    }\n\n    static  initC8oSslSocketFactory(): string {\n        return \"Failed to initialize C8oSslSocketFactory\";\n    }\n\n    static  createSslContext(): string {\n        return \"failed to create a new SSL context\";\n    }\n\n    static  keyManagerFactoryInstance(): string {\n        return \"Failed to instanciate KeyManagerFactory\";\n    }\n\n    static  initKeyManagerFactory(): string {\n        return \"Failed to initialize the key manager factory\";\n    }\n\n    static  InitHttpInterface(): string {\n        return \"Failed to initialize the secure HTTP Interface\";\n    }\n\n    static  trustManagerFactoryInstance(): string {\n        return \"Failed to instanciate KeyManagerFactory\";\n    }\n\n    static  initTrustManagerFactory(): string {\n        return \"Failed to initialize the key manager factory\";\n    }\n\n    static  initSslContext(): string {\n        return \"Failed to initialize the SSL context\";\n    }\n\n    static  initCipher(): string {\n        return \"Failed to initialize the cipher\";\n    }\n\n    static  urlEncode(): string {\n        return \"Failed to URL encode parameters\";\n    }\n\n    static  getParametersStringBytes(): string {\n        return \"Failed to get parameters string bytes\";\n    }\n\n    static  encodeParameters(): string {\n        return \"Failed to encode parameters\";\n    }\n\n    static  RunHttpRequest(): string {\n        return \"Failed to run the HTTP request\";\n    }\n\n    static  generateRsainternalKey(): string {\n        return \"Failed to generate RSA internal key\";\n    }\n\n    static  keyFactoryInstance(): string {\n        return \"Failed to get KeyFactory instance\";\n    }\n\n    static  getCipherInstance(): string {\n        return \"Failed to get Cipher instance\";\n    }\n\n    static  entryNotFound(entryKey: string): string {\n        return \"Entry key '\" + entryKey + \"' not found\";\n    }\n\n    static  c8oCallRequestToJson(): string {\n        return \"Failed to parse c8o call request to JSON\";\n    }\n\n    static  getJsonKey(key: string): string {\n        return \"Failed to get the JSON key '\" + key + \"'\";\n    }\n\n    static  jsonValueToXML(): string {\n        return \"Failed to parse JSON value to XML\";\n    }\n\n    static  inputStreamToXML(): string {\n        return \"Failed to parse InputStream to an XML document\";\n    }\n\n    static  inputStreamReaderEncoding(): string {\n        return \"Failed to instanciate the InputStreamReader\";\n    }\n\n    static  readLineFromBufferReader(): string {\n        return \"Failed to read line from the BufferReader\";\n    }\n\n    static  GetLocalCacheParameters(): string {\n        return \"Failed to get local cache parameters\";\n    }\n\n    static  GetLocalCachePolicy(policy: string): string {\n        return \"Failed to get local cache policy: \" + policy;\n    }\n\n    static  fullSyncJsonToXML(): string {\n        return \"Failed to translate full sync JSON to XML\";\n    }\n\n    static  takeLog(): string {\n        return \"Failed to take a log line in the list\";\n    }\n\n    static  remoteLogHttpRequest(): string {\n        return \"Failed while running the HTTP request sending logs to the Convertigo server\";\n    }\n\n    static  getInputStreamFromHttpResponse(): string {\n        return \"Failed to get InputStream from the HTTP response\";\n    }\n\n    static  inputStreamToJSON(): string {\n        return \"Failed to translate the input stream to a JSON document\";\n    }\n\n    static  httpInterfaceInstance(): string {\n        return \"Failed to instanciate the HTTP interface\";\n    }\n\n    static  FullSyncInterfaceInstance(): string {\n        return \"Failed to instanciate the FullSync interface\";\n    }\n\n    static  getDocumentFromDatabase(documentId: string): string {\n        return \"Failed to get fullSync document '\" + documentId + \"' from the database\";\n    }\n\n    static  FullSyncReplicationFail(databaseName: string, way: string): string {\n        return \"Failed to '\" + way + \"' replicate the '\" + databaseName + \"' database\";\n    }\n\n    static  localCachePolicyIsDisable(): string {\n        return \"Depending to the network state the local cache is disabled\";\n    }\n\n    static  localCacheDocumentJustCreated(): string {\n        return \"The local cache document is just created (empty):string\";\n    }\n\n    static  illegalArgumentInvalidLocalCachePolicy(localCachePolicyString: string): string {\n        return \"The local cache policy '\" + localCachePolicyString + \"' is invalid\";\n    }\n\n    static  timeToLiveExpired(): string {\n        return \"The time to live expired\";\n    }\n\n    static  InvalidLocalCacheResponseInformation(): string {\n        return \"Local cache response informations are invalid\";\n    }\n\n    static  overrideDocument(): string {\n        return \"Failed to override the fullSync document\";\n    }\n\n    static  handleFullSyncRequest(): string {\n        return \"Failed while running the fullSync request\";\n    }\n\n    static  serializeC8oCallRequest(): string {\n        return \"Fails to serialize the Convertigo call request\";\n    }\n\n    static  getResponseFromLocalCache(): string {\n        return \"Failed to get response from the local cache\";\n    }\n\n    static  getResponseFromLocalCacheDocument(): string {\n        return \"Failed to get response form the local cache document\";\n    }\n\n    static  handleC8oCallRequest(): string {\n        return \"Failed while running the c8o call request\";\n    }\n    public static runHttpRequest(): string {\n        return \"Failed to run the HTTP request\";\n    }\n\n    static  saveResponseToLocalCache(): string {\n        return \"Failed to save the response to the local cache\";\n    }\n\n    static  RemoteLogFail(): string {\n        return \"Failed to send log to the Convertigo server: disabling remote logging\";\n    }\n\n    static  FullSyncRequestFail(): string {\n        return \"Failed to process the fullsync request\";\n    }\n\n    static  MissingLocalCacheResponseDocument(): string {\n        return \"Missing local cache response document\";\n    }\n}","import {C8oCore} from \"./c8oCore\";\nimport {C8oLogLevel} from \"./c8oLogLevel\";\nimport {Queue} from \"./c8oUtilsCore\";\nimport {C8oException} from \"./Exception/c8oException\";\nimport {C8oExceptionMessage} from \"./Exception/c8oExceptionMessage\";\nimport { Observable } from \"rxjs\";\n\nexport class C8oLogger {\n\n    // *** Constants ***//\n    // private static LOG_TAG: string = \"c8o\";\n    private static LOG_INTERNAL_PREFIX: string = \"[c8o] \";\n\n    public static REMOTE_LOG_LIMIT: number = 100;\n\n    private static JSON_KEY_REMOTE_LOG_LEVEL: string = \"remoteLogLevel\";\n    private static JSON_KEY_TIME: string = \"time\";\n    private static JSON_KEY_LEVEL: string = \"level\";\n    private static JSON_KEY_MESSAGE: string = \"msg\";\n    private static JSON_KEY_LOGS: string = \"logs\";\n    private static JSON_KEY_ENV: string = \"env\";\n\n    /** Attributes */\n\n    private remoteLogUrl: string;\n    private remoteLogs: Queue<JSON>;\n    //noinspection JSMismatchedCollectionQueryUpdate\n    private alreadyRemoteLogging: boolean[];\n    private remoteLogLevel: C8oLogLevel;\n    private uidRemoteLogs: string;\n    private startTimeRemoteLog: number;\n    public initDone: boolean = false;\n    private pending_remoteLogs: Queue<JSON>;\n    private pending_remoteLogsLevel: Queue<C8oLogLevel>;\n\n    private c8o: C8oCore;\n\n    private env: string;\n    private pInit: Promise<any>;\n    private waitForSending: boolean = false;\n    constructor(c8o: C8oCore, first: boolean) {\n        this.pInit = this.affect_val(c8o, first);\n    }\n    public affect_val(c8o: C8oCore, first: boolean) {\n        return new Promise<void>(async (resolve)=>{\n\n            if (first) {\n                this.c8o = c8o;\n                this.remoteLogUrl = \"\";\n                this.remoteLogs = new Queue<JSON>();\n                this.pending_remoteLogsLevel = new Queue<C8oLogLevel>();\n                this.pending_remoteLogs = new Queue<JSON>();\n                this.alreadyRemoteLogging = [];\n                this.alreadyRemoteLogging.push(false);\n                this.remoteLogLevel = C8oLogLevel.TRACE;\n                this.startTimeRemoteLog = new Date().getTime();\n                this.uidRemoteLogs = Math.round((new Date().getTime() * Math.random())).toString(36);\n                const obj = {};\n                obj[\"uid\"] = this.uidRemoteLogs.toUpperCase();\n                obj[\"uuid\"] = (await this.c8o.deviceUUID).toUpperCase();\n                obj[\"project\"] = \"\";\n                this.env = JSON.stringify(obj);\n                resolve();\n            } else {\n                this.c8o = c8o;\n    \n                this.updateRemoteLogUrl();\n                this.remoteLogs = new Queue<JSON>();\n                this.alreadyRemoteLogging = [];\n                this.alreadyRemoteLogging.push(false);\n    \n                this.remoteLogLevel = C8oLogLevel.TRACE;\n                this.startTimeRemoteLog = new Date().getTime();\n                this.uidRemoteLogs = Math.round((new Date().getTime() * Math.random())).toString(36);\n                const obj = {};\n                obj[\"uid\"] = this.uidRemoteLogs.toUpperCase();\n                obj[\"uuid\"] = (await this.c8o.deviceUUID).toUpperCase();\n                obj[\"project\"] = encodeURIComponent(c8o.endpointProject.toString());\n                this.env = JSON.stringify(obj);\n                resolve();\n            }\n        });\n\n    }\n\n    public updateRemoteLogUrl(): void {\n        if (this.c8o) {\n            this.remoteLogUrl = this.c8o.buildServicesUrl(\"logs.Add\");\n        }\n    }\n\n    private isLoggableRemote(logLevel: C8oLogLevel): boolean {\n        return this.c8o.logRemote && logLevel != null && C8oLogLevel.TRACE.priority <= this.remoteLogLevel.priority && this.remoteLogLevel.priority <= logLevel.priority;\n    }\n\n    private isLoggableConsole(logLevel: C8oLogLevel): boolean {\n        return logLevel != null && C8oLogLevel.TRACE.priority <= this.c8o.logLevelLocal.priority && this.c8o.logLevelLocal.priority <= logLevel.priority;\n    }\n\n    public canLog(logLevel: C8oLogLevel): boolean {\n        return this.isLoggableConsole(logLevel) || this.isLoggableRemote(logLevel);\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get isFatal(): boolean {\n        return this.canLog(C8oLogLevel.FATAL);\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get isError(): boolean {\n        return this.canLog(C8oLogLevel.ERROR);\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get isWarn(): boolean {\n        return this.canLog(C8oLogLevel.WARN);\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get isInfo(): boolean {\n        return this.canLog(C8oLogLevel.INFO);\n    }\n\n    public get isDebug(): boolean {\n        return this.canLog(C8oLogLevel.DEBUG);\n    }\n\n    public get isTrace(): boolean {\n        return this.canLog(C8oLogLevel.TRACE);\n    }\n\n    private log(logLevel: C8oLogLevel, message: string, exception: Error) {\n        const isLogConsole: boolean = this.isLoggableConsole(logLevel);\n        const isLogRemote: boolean = this.isLoggableRemote(logLevel);\n        let copyMsg = \"\" + message;\n        if (isLogConsole || isLogRemote) {\n            if (exception != null) {\n                let messageB = false;\n                let messageS = false;\n                try {\n                    if(exception.message != undefined){\n                        message += \" : \" + JSON.stringify(exception.message);\n                    }\n                    else{\n                        messageB = true;\n                    }\n                    if(exception.stack != undefined){\n                        message += \"\\n\" + JSON.stringify(exception.stack); \n                    }\n                    else{\n                        messageS = true;\n                    }\n                }\n                catch(e){\n                    message += \"\\n\" + exception.toString();\n                }\n                if(messageB && messageS){\n                    try{\n                        message += \"\\n\" + JSON.stringify(exception);\n                    }\n                    catch(e){\n                        message += \"\\n\" + exception.toString();\n                    }\n                }\n                \n            }\n\n            const time: string = (((new Date().getTime().valueOf()) - (this.startTimeRemoteLog)) / 1000).toString();\n            if (!this.initDone) {\n                const obj = {};\n                obj[(C8oLogger.JSON_KEY_TIME.valueOf())] = time;\n                obj[(C8oLogger.JSON_KEY_LEVEL.valueOf())] = logLevel.name;\n                obj[(C8oLogger.JSON_KEY_MESSAGE.valueOf())] = message.toString();\n                const objJson: JSON = obj as JSON;\n                this.pending_remoteLogs.push(objJson);\n                this.pending_remoteLogsLevel.push(logLevel);\n            } else {\n                if (isLogRemote) {\n                    const obj = {};\n                    obj[(C8oLogger.JSON_KEY_TIME.valueOf())] = time;\n                    obj[(C8oLogger.JSON_KEY_LEVEL.valueOf())] = logLevel.name;\n                    obj[(C8oLogger.JSON_KEY_MESSAGE.valueOf())] = message.toString();\n                    const objJson: JSON = obj as JSON;\n                    this.remoteLogs.push(objJson);\n                    this.logRemote();\n                }\n                if (isLogConsole) {\n                    let verb = logLevel.name.toLowerCase();\n                    if(logLevel.name == \"FATAL\" || logLevel.name == \"fatal\"){\n                        verb = \"error\";\n                    }\n                    else if(logLevel.name == \"TRACE\" || logLevel.name == \"trace\"){\n                        verb = \"debug\";\n                    }\n                    try{\n                        if(exception != undefined){\n                            if(exception.message != undefined && exception[\"cause\"] != undefined){\n                                console[verb](\"(\" + time + \") [\" + logLevel.name + \"] \" + copyMsg, exception.message, exception[\"cause\"]);\n                            }\n                            else{\n                                console[verb](\"(\" + time + \") [\" + logLevel.name + \"] \" + copyMsg, exception);\n                            }\n                        }\n                        else{\n                            console[verb](\"(\" + time + \") [\" + logLevel.name + \"] \" + copyMsg);\n                        }\n                        \n                    }\n                    catch(e){\n                        console.log(\"(\" + time + \") [\" + logLevel.name + \"] \" + message);\n                    }\n                    \n                }\n            }\n\n        }\n    }\n\n    public fatal(message: string, exceptions: Error = null) {\n        this.log(C8oLogLevel.FATAL, message, exceptions);\n    }\n\n    public error(message: string, exceptions: Error = null) {\n        this.log(C8oLogLevel.ERROR, message, exceptions);\n    }\n\n    public warn(message: string, exceptions: Error = null) {\n        this.log(C8oLogLevel.WARN, message, exceptions);\n    }\n\n    public info(message: string, exceptions: Error = null) {\n        this.log(C8oLogLevel.INFO, message, exceptions);\n    }\n\n    public debug(message: string, exceptions: Error = null) {\n        this.log(C8oLogLevel.DEBUG, message, exceptions);\n    }\n\n    public trace(message: string, exceptions: Error = null) {\n        this.log(C8oLogLevel.TRACE, message, exceptions);\n    }\n\n    private _log(logLevel: C8oLogLevel, messages: string, exceptions: Error = null) {\n        if (this.c8o.logC8o) {\n            this.log(logLevel, C8oLogger.LOG_INTERNAL_PREFIX.toString() + messages.toString(), exceptions);\n        }\n    }\n\n    public _fatal(message: string, exceptions: Error = null) {\n     this._log(C8oLogLevel.FATAL, message, exceptions);\n    }\n\n    public _error(message: string, exceptions: Error = null) {\n     this._log(C8oLogLevel.ERROR, message, exceptions);\n    }\n\n    public _warn(message: string, exceptions: Error = null) {\n     this._log(C8oLogLevel.WARN, message, exceptions);\n    }\n\n    public _info(message: string, exceptions: Error = null) {\n     this._log(C8oLogLevel.INFO, message, exceptions);\n    } \n\n    public _debug(message: string, exceptions: Error = null) {\n        this._log(C8oLogLevel.DEBUG, message, exceptions);\n    }\n\n    public _trace(message: string, exceptions: Error = null) {\n        this._log(C8oLogLevel.TRACE, message, exceptions);\n    }\n\n    public async logRemoteInit() {\n        this.pInit.then(async()=>{\n            this.initDone = true;\n\n            let count: number = 0;\n            const listSize: number = this.pending_remoteLogs.count();\n            const logsArray = new Array<any>();\n    \n            while (count < listSize && count < C8oLogger.REMOTE_LOG_LIMIT) {\n                const logLvl = this.pending_remoteLogsLevel.pop();\n                const mvar = this.pending_remoteLogs.pop();\n    \n                if (this.isLoggableConsole(logLvl)) {\n                    console.log(\"(\" + mvar[\"time\"] + \") [\" + logLvl.name + \"] \" + mvar[\"msg\"]);\n                }\n                if (this.isLoggableRemote(logLvl)) {\n                    logsArray.push(mvar);\n                    count += 1;\n                }\n    \n            }\n            //noinspection JSUnusedAssignment\n            let canLog: boolean = false;\n            canLog = logsArray.length > 0;\n            if (canLog) {\n                this.alreadyRemoteLogging[0] = true;\n            }\n            const parameters: Object = {};\n            parameters[C8oLogger.JSON_KEY_LOGS.valueOf()] = JSON.stringify(logsArray);\n            parameters[C8oCore.ENGINE_PARAMETER_DEVICE_UUID] = await this.c8o.deviceUUID;\n            parameters[C8oLogger.JSON_KEY_ENV] = this.env;\n    \n            this.c8o.httpInterface.handleRequest(this.remoteLogUrl, parameters)\n                .then((response) => {\n                    if (response !== undefined) {\n                        if (response.error !== undefined) {\n                            this.c8o.logRemote = false;\n                            if (this.c8o.logOnFail != null) {\n                                this.c8o.logOnFail(new C8oException(C8oExceptionMessage.RemoteLogFail(), response.error), null);\n                            }\n                        }\n                    }\n                    const logLevelResponse = response[C8oLogger.JSON_KEY_REMOTE_LOG_LEVEL.toString()];\n                    if (logLevelResponse != null) {\n                        const logLevelResponseStr: string = logLevelResponse.toString();\n                        const c8oLogLevel = C8oLogLevel.getC8oLogLevel(logLevelResponseStr);\n                        if (c8oLogLevel != null) {\n                            this.remoteLogLevel = c8oLogLevel;\n                        }\n                        this.alreadyRemoteLogging[0] = false;\n                        this.logRemote();\n                    }\n                })\n                .catch((error) => {\n                    if (this.c8o.handleEndpointFallback(\"services\", error)) {\n                        this.updateRemoteLogUrl();\n                        this.logRemote(0);\n                        return;\n                    }\n                    this.c8o.logRemote = false;\n                    if (this.c8o.logOnFail != null) {\n                        this.c8o.logOnFail(new C8oException(C8oExceptionMessage.RemoteLogFail(), error), null);\n                    }\n                });\n        })\n        \n    }\n\n    checkInitDone(resolve = null):Promise<any>{\n        if(resolve == null){\n            return new Promise<void>((resolve)=>{\n                if(!this.initDone){\n                    setTimeout(()=>{\n                        this.checkInitDone(resolve)\n                    }, 100);\n                }   \n                else{resolve()}\n            })\n            \n        }\n        else{\n            if(!this.initDone){\n                setTimeout(()=>{\n                    this.checkInitDone(resolve)\n                }, 100);\n            }\n            else{\n                resolve();\n            }   \n        }\n        return null;\n        \n    }\n    public async logTest(): Promise<any>{\n        \n        await this.checkInitDone()\n        return this.logTestAction();\n        \n            /*if (!this.initDone) {\n                setTimeout(()=>{\n                    return this.logTest();\n                },100)\n            }\n            else{\n                return this.logTestAction();\n            } */   \n    }\n\n    private logTestAction(): Promise<any>{\n        return new Promise(async (resolve, reject)=>{\n                const message = \"[c8o] Testing if endpoint is reachable\";\n                const time: string = (((new Date().getTime().valueOf()) - (this.startTimeRemoteLog)) / 1000).toString();\n                const obj = {};\n                obj[(C8oLogger.JSON_KEY_TIME.valueOf())] = time;\n                obj[(C8oLogger.JSON_KEY_LEVEL.valueOf())] = C8oLogLevel.DEBUG.name;\n                obj[(C8oLogger.JSON_KEY_MESSAGE.valueOf())] = message;\n                const parameters: Object = {};\n                parameters[C8oLogger.JSON_KEY_LOGS.valueOf()] = JSON.stringify([obj]);\n                parameters[C8oCore.ENGINE_PARAMETER_DEVICE_UUID] = await this.c8o.deviceUUID;\n                parameters[C8oLogger.JSON_KEY_ENV] = this.env;\n                this.c8o.httpInterface.handleRequest(this.remoteLogUrl, parameters)\n                .then((response) => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    if (this.c8o.handleEndpointFallback(\"services\", error)) {\n                        this.updateRemoteLogUrl();\n                        this.logRemote(0);\n                        resolve(false);\n                        return;\n                    }\n                    reject(false);\n                });\n            });\n    }\n\n    private timeout(ms) {\n        return new Promise(resolve => setTimeout(resolve, ms));\n    }\n\n    public async logRemote(wait = 5000) {\n        // if sending is already processing\n        if(this.waitForSending){\n            return;\n        }\n        //noinspection JSUnusedAssignment\n        let canLog: boolean = false;\n        canLog = this.remoteLogs.count() > 0;\n        if (canLog) {\n            this.alreadyRemoteLogging[0] = true;\n        }\n\n        if (canLog) {\n            // We're using Angular Http provider to request the data,\n            // then on the response it'll map the JSON data to a parsed JS object.\n            // Next we process the data and resolve the promise with the new data.\n            // \"/services/logs.Add\";\n\n            // wait 5000 ms to group http request with severals logs and reduce http charge\n            if(wait == null){\n                wait = 0;\n            }\n            this.waitForSending = true;\n            await this.timeout(wait);\n            this.waitForSending = false;\n            let count: number = 0;\n            const listSize: number = this.remoteLogs.count() as number;\n            const logsArray = [];\n            while (count < listSize && count < C8oLogger.REMOTE_LOG_LIMIT) {\n                logsArray.push(this.remoteLogs.pop());\n                count += 1;\n            }\n            // if there are still los to be pushed after timeout the log them\n            if(logsArray.length > 0){\n                const parameters: Object = {};\n                parameters[C8oLogger.JSON_KEY_LOGS.valueOf()] = JSON.stringify(logsArray);\n                parameters[C8oCore.ENGINE_PARAMETER_DEVICE_UUID] = await this.c8o.deviceUUID;\n                parameters[C8oLogger.JSON_KEY_ENV] = this.env;\n\n                this.c8o.httpInterface.handleRequest(this.remoteLogUrl, parameters)\n                .then((response) => {\n                    if (response !== undefined) {\n                        if (response.error !== undefined) {\n                            this.c8o.logRemote = false;\n                            if (this.c8o.logOnFail != null) {\n                                this.c8o.logOnFail(new C8oException(C8oExceptionMessage.RemoteLogFail(), response.error), null);\n                            }\n                        }\n                    }\n                    const logLevelResponse = response[C8oLogger.JSON_KEY_REMOTE_LOG_LEVEL.toString()];\n                    if (logLevelResponse != null) {\n                        const logLevelResponseStr: string = logLevelResponse.toString();\n                        const c8oLogLevel = C8oLogLevel.getC8oLogLevel(logLevelResponseStr);\n                        if (c8oLogLevel != null) {\n                            this.remoteLogLevel = c8oLogLevel;\n                        }\n                        this.alreadyRemoteLogging[0] = false;\n                        this.logRemote();\n                    }\n                })\n                .catch((error) => {\n                    if (this.c8o.handleEndpointFallback(\"services\", error)) {\n                        this.updateRemoteLogUrl();\n                        this.logRemote(0);\n                        return;\n                    }\n                    this.c8o.logRemote = false;\n                    if (this.c8o.logOnFail != null) {\n                        this.c8o.logOnFail(new C8oException(C8oExceptionMessage.RemoteLogFail(), error), null);\n                    }\n                });\n            }\n        }\n    }\n    public logMethodCall(methodName: string, ...parameters: any[]) {\n        if (this.c8o.logC8o && this.isDebug) {\n            let methodCallLogMessage: string = \"Method call: \" + methodName;\n            if (parameters == null || Object.keys(parameters).length === 0) {\n                this._debug(methodCallLogMessage);\n            }\n            if (this.isTrace) {\n                methodCallLogMessage += \", Parameters: [\";\n                for (const param of parameters) {\n                    let paramStr = \"null\";\n                    if (parameters != null) {\n                        try{\n                            paramStr = JSON.stringify(param);\n                        }\n                        catch(error){\n                            paramStr = \"cannot view value due to circular reference\";\n                        }\n                        \n                    }\n                    methodCallLogMessage += \"\\n\" + paramStr + \", \";\n                }\n                // Remove the last character\n                methodCallLogMessage = methodCallLogMessage.substring(0, methodCallLogMessage.length - 2) + \"]\";\n\n                this._trace(methodCallLogMessage);\n            } else {\n                this._debug(methodCallLogMessage);\n            }\n        }\n    }\n\n    public logC8oCall(url: string, parameters: any) {\n        if (this.c8o.logC8o && this.isDebug) {\n            let c8oCallLogMessage: string = \"C8o call: \" + url;\n            if (parameters.length > 0) {\n                c8oCallLogMessage += \"\\n\" + String(parameters);\n            }\n            this._debug(c8oCallLogMessage);\n        }\n    }\n\n    public logC8oCallJSONResponse(response: JSON, url: string, parameters: any) {\n        this.logC8oCallResponse(JSON.stringify(response), \"JSON\", url, parameters);\n    }\n\n    public logC8oCallXMLResponse(response: Document, url: string, parameters: Object) {\n        this.logC8oCallResponse(response.toString(), \"XML\", url, parameters);\n    }\n\n    public logC8oCallResponse(responseStr: string, responseType: string, url: string, parameters: any) {\n        if (this.c8o.logC8o && this.isTrace) {\n            let c8oCallResponseLogMessage: string;\n            if (url == null) {\n                c8oCallResponseLogMessage = \"C8o call \" + responseType + \" response: \";\n            } else {\n                c8oCallResponseLogMessage = \"C8o call \" + responseType + \" response: \" + url;\n            }\n            if (parameters.count > 0) {\n                c8oCallResponseLogMessage += \"\\n\" + parameters.toString();\n            }\n            c8oCallResponseLogMessage += \"\\n\" + responseStr;\n\n            this._trace(c8oCallResponseLogMessage);\n        }\n    }\n}\n","import {FullSyncAbstractResponse, FullSyncDefaultResponse} from \"./fullSyncResponse\";\nexport class C8oFullSyncTranslator {\n    public static FULL_SYNC_RESPONSE_KEY_COUNT: string = \"count\";\n    public static FULL_SYNC_RESPONSE_KEY_ROWS: string = \"rows\";\n    public static FULL_SYNC_RESPONSE_KEY_CURRENT: string = \"current\";\n    public static FULL_SYNC_RESPONSE_KEY_DIRECTION: string = \"direction\";\n    public static FULL_SYNC_RESPONSE_KEY_TOTAL: string = \"total\";\n    public static FULL_SYNC_RESPONSE_KEY_OK: string = \"ok\";\n    public static FULL_SYNC_RESPONSE_KEY_STATUS: string = \"status\";\n\n    public static FULL_SYNC_RESPONSE_VALUE_DIRECTION_PUSH: string = \"push\";\n    public static FULL_SYNC_RESPONSE_VALUE_DIRECTION_PULL: string = \"pull\";\n\n    public static XML_KEY_DOCUMENT: string = \"document\";\n    public static XML_KEY_COUCHDB_OUTPUT: string = \"couchdb_output\";\n\n    public static fullSyncDocumentOperationResponseToJson(fullSyncDocumentOperationResponse: FullSyncAbstractResponse): JSON {\n        return fullSyncDocumentOperationResponse.getProperties() as JSON;\n    }\n\n    public static fullSyncDefaultResponseToJson(fullSyncDefaultResponse: FullSyncDefaultResponse): JSON {\n        return fullSyncDefaultResponse.getProperties() as JSON;\n    }\n\n}\n","export class C8oLocalCacheResponse {\n    private response: string;\n    private responseType: string;\n    private expirationDate: number;\n\n    constructor(response: string, responseType: string, expirationDate: number) {\n        this.response = response;\n        this.responseType = responseType;\n        this.expirationDate = expirationDate;\n    }\n\n    public isExpired(): boolean {\n        if (this.expirationDate <= 0) {\n            return false;\n        } else {\n            const currentDate = new Date().getTime();\n            return this.expirationDate < currentDate;\n        }\n    }\n\n    public getResponse(): string {\n        return this.response;\n    }\n\n    public getResponseType(): string {\n        return this.responseType;\n    }\n\n    public getExpirationDate(): number {\n        return this.expirationDate;\n    }\n}\n","/**\n * Created by charlesg on 10/01/2017.\n */\nexport interface C8oResponseListener {\n}\n\nexport class C8oResponseJsonListener implements C8oResponseListener {\n    /**\n     * Called on c8o call JSON responses.\n     *\n     * @param response - C8o call response\n     * @param parameters - C8o call parameters\n     */\n    public onJsonResponse: (JSON, Object) => void;\n\n    constructor(onJsonResponse: (JSON, Object) => void) {\n        this.onJsonResponse = onJsonResponse;\n    }\n}\n\nexport class C8oResponseProgressListener implements C8oResponseListener {\n    public onProgressResponse: (C8oProgress, Object) => void;\n    constructor(onProgressResponse: (C8oProgress, Object) => void) {\n        this.onProgressResponse = onProgressResponse;\n    }\n}\n","import {C8oException}           from \"./c8oException\";\n\nexport class C8oCouchBaseLiteException extends C8oException {\n    constructor(message: string);\n    constructor(message: string, cause: Error);\n    constructor(message: string, cause: Error = null) {\n        super(message, cause);\n        // Since typescript 2.1.1 we have to set the prototype explicitly.\n        Object.setPrototypeOf(this, C8oCouchBaseLiteException.prototype);\n    }\n}","import {C8oException} from \"./c8oException\";\n\nexport class C8oRessourceNotFoundException extends C8oException {\n\n    constructor(message: string);\n    constructor(message: string, cause: Error);\n    constructor(message: string, cause: Error = null) {\n        super(message, cause);\n        // Since typescript 2.1.1 we have to set the prototype explicitly.\n        Object.setPrototypeOf(this, C8oRessourceNotFoundException.prototype);\n    }\n}","import {C8oException} from \"./c8oException\";\n\n/**\n * This Exception is not thrown to the user, it is used to know if the requested response from the local cache is available or no.\n */\nexport class C8oUnavailableLocalCacheException extends C8oException {\n    constructor(detailMessage: string);\n    constructor(detailMessage: string, cause: Error);\n    constructor(detailMessage: string, cause: Error = null) {\n        super(detailMessage, cause);\n        // Since typescript 2.1.1 we have to set the prototype explicitly.\n        Object.setPrototypeOf(this, C8oUnavailableLocalCacheException.prototype);\n    }\n}","import {C8oFullSyncTranslator} from \"./c8oFullSyncTranslator\";\n\nexport class C8oProgress {\n    private _changed: boolean = false;\n    private _continuous: boolean = false;\n    private _finished: boolean = false;\n    private _pull: boolean = true;\n    private _current: number = -1;\n    private _total: number = -1;\n    private _status: string = \"\";\n    private _taskInfo: string = \"\";\n    private _raw: any;\n\n    // Constructor overload in typescript...\n    constructor();\n    constructor(progress: C8oProgress);\n    constructor(progress?: any) {\n        if (progress instanceof C8oProgress) {\n            this._changed = false;\n            this._continuous = progress._continuous;\n            this._finished = progress._finished;\n            this._pull = progress._pull;\n            this._current = progress._current;\n            this._total = progress._total;\n            this._status = progress._status;\n            this._taskInfo = progress._taskInfo;\n            this._raw = progress._raw;\n        } else {\n            if (progress === undefined) {\n                this._raw = null;\n            } else {\n                throw new Error(`Expected C8oProgress or empty constructor, got '${progress}'.`);\n            }\n\n        }\n\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get changed(): boolean {\n        return this._changed;\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public set changed(value: boolean) {\n        this._changed = value;\n    }\n\n    public get continuous(): boolean {\n        return this._continuous;\n    }\n\n    public set continuous(value: boolean) {\n        this._continuous = value;\n        this._changed = true;\n    }\n\n    public get finished(): boolean {\n        return this._finished;\n    }\n\n    public set finished(value: boolean) {\n        this._finished = value;\n        this._changed = true;\n    }\n\n    public get pull(): boolean {\n        return this._pull;\n    }\n\n    public set pull(value: boolean) {\n        this._pull = value;\n        this._changed = true;\n    }\n\n    public get push(): boolean {\n        return !this._pull;\n    }\n\n    public get current(): number {\n        return this._current;\n    }\n\n    public set current(value: number) {\n        this._current = value;\n        this._changed = true;\n    }\n\n    public get total(): number {\n        return this._total;\n    }\n\n    public set total(value: number) {\n        this._total = value;\n        this._changed = true;\n    }\n\n    public get direction(): string {\n        return this._pull ? C8oFullSyncTranslator.FULL_SYNC_RESPONSE_VALUE_DIRECTION_PULL : C8oFullSyncTranslator.FULL_SYNC_RESPONSE_VALUE_DIRECTION_PUSH;\n    }\n\n    public get status(): string {\n        return this._status;\n    }\n\n    public set status(value: string) {\n        this._changed = true;\n        this._status = value;\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get taskInfo(): string {\n        return this._taskInfo;\n    }\n\n    public set taskInfo(value: string) {\n        this._changed = true;\n        this._taskInfo = value;\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get raw(): any {\n        return this._raw;\n    }\n\n    public set raw(value: any) {\n        this._changed = true;\n        this._raw = value;\n    }\n\n    public toString(): string {\n        return this.direction + \": \" + this.current + \"/\" + this.total + \" (\" + (this.finished ? (this.continuous ? \"live\" : \"done\") : \"running\") + \")\";\n    }\n}\n","export class FullSyncReplication {\n    public pull: boolean;\n    public sync: boolean;\n    public replication: any;\n    //noinspection JSUnusedGlobalSymbols\n    public changeListener: Event;\n\n    constructor(pull: boolean = null) {\n        if (pull != null) {\n            this.pull = pull;\n        } else {\n            this.sync = true;\n        }\n    }\n}\n","import { C8oCore } from \"./c8oCore\";\nexport class C8oLoad {\n\n    constructor(private c8o: C8oCore) {\n        \n    }\n    public plugin: any = {\n        c8oload: function (url, opts, c8o){\n            var db = this;\n            \n            var extend = require('pouchdb-extend');\n            var Checkpointer = require('pouchdb-checkpointer');\n            var genReplicationId = require('pouchdb-generate-replication-id');\n\n            let loadString = (db, datastr, opts, resolve, reject, c8o)=>{\n                let parsedDump = parseDump(datastr);\n                if (parsedDump[\"err\"]) {\n                    return reject(parsedDump[\"err\"]);\n                }\n                let docs = parsedDump[\"docs\"];\n                let lastSeq = parsedDump[\"lastSeq\"];\n        \n        \n                db.bulkDocs({docs: docs, new_edits: false})\n                .then(()=> {\n                    if (!opts.proxy) {\n                      resolve({ok:true});\n                    }\n                    else{\n                        writeProxyCheckpoint(db, lastSeq, opts, resolve, reject);\n                    }\n                    \n                  })\n                  .catch((err)=>{\n                    reject(err);\n                  })\n            };\n\n\n            let loadUrl = (db, url, opts, resolve, reject, c8o)=>{\n                let headersObject = { 'Accept': 'application/json', 'x-convertigo-sdk': c8o.sdkVersion};\n                    Object.assign(headersObject, c8o.headers);\n                    let headers =  c8o.httpInterface.getHeaders(headersObject);\n        \n                    c8o.httpInterface.httpGetObservable(url, {\n                        headers: headers,\n                        withCredentials: true,\n                        responseType: 'text' as 'json'\n                    }, {})\n                    .subscribe(\n                        response => {\n                            loadString(db, response, opts, resolve, reject, c8o);\n                            \n                    },\n                    error => {\n                        reject(error);\n                    })\n            };\n\n            let parseDump = (data)=>{\n                var docs = [];\n                var lastSeq = 0;\n                try {\n                  data.split('\\n').forEach(function (line) {\n                    if (!line) {\n                      return;\n                    }\n                    line = JSON.parse(line);\n                    if (line[\"docs\"]) {\n                      docs = docs.concat(line[\"docs\"]);\n                    }\n                    if (line.seq) {\n                      lastSeq = line.seq;\n                    }\n                  });\n                } catch (err) {\n                  return {err: err};\n                }\n                return {docs: docs, lastSeq: lastSeq};\n            }\n\n            let writeProxyCheckpoint = (db, lastSeq, opts, resolve, reject)=>{\n                db.info()\n                .then((info)=> {\n        \n                    var src = new db.constructor(opts.proxy,\n                      extend(true, {}, {}, opts));\n        \n        \n                    var target = new db.constructor(info.db_name,\n                      extend(true, {}, db.__opts, opts));\n        \n                    var replIdOpts = {};\n        \n                    if (opts.filter) {\n                      replIdOpts[\"filter\"] = opts.filter;\n                    }\n        \n                    if (opts.query_params) {\n                      replIdOpts[\"query_params\"] = opts.query_params;\n                    }\n        \n                    if (opts.view) {\n                      replIdOpts[\"view\"] = opts.view;\n                    }\n              \n                    genReplicationId.default(src, target, replIdOpts)\n                    .then(function (replId) {\n                      var state = {\n                        cancelled: false\n                      };\n                      var checkpointer = new Checkpointer.default(src, target, replId, state);\n                      checkpointer.writeCheckpoint(lastSeq)\n                      .then((response)=>{\n                        resolve(response);\n                      })\n                      .catch((err)=>{\n                          reject(err);\n                      })\n                    })\n                    .catch((err)=>{\n                        reject(err);\n                    })\n                  });\n            }\n\n\n\n\n\n\n            return new Promise((resolve, reject)=>{\n                \n                // if its a dumped string\n                if (/^\\s*\\{/.test(url)) {\n                    loadString(db, url, opts, resolve, reject, c8o);\n                  }\n                  else{\n                    loadUrl(db, url, opts, resolve, reject, c8o);\n                  }\n                  \n            })\n        }\n    }\n   \n      \n}","import { sha256 } from \"js-sha256\";\n\nexport interface C8oPouchDbSearchOptions {\n    query?: string;\n    q?: string;\n    fields?: string[] | Record<string, number>;\n    highlighting?: boolean;\n    highlighting_pre?: string;\n    highlighting_post?: string;\n    include_docs?: boolean;\n    limit?: number;\n    skip?: number;\n    mm?: string | number;\n    build?: boolean;\n    destroy?: boolean;\n    stale?: string;\n    language?: string | string[];\n    filter?: (doc: any) => boolean;\n}\n\ninterface FieldBoost {\n    field: string;\n    boost: number;\n    path?: string[];\n}\n\ninterface IndexedDoc {\n    id: string;\n    doc: any;\n    fieldTexts: Record<string, string>;\n    fieldTokens: Record<string, Map<string, number>>;\n}\n\ninterface SearchIndex {\n    fields: FieldBoost[];\n    docs: Map<string, IndexedDoc>;\n}\n\nconst indexCache = new WeakMap<any, Map<string, SearchIndex>>();\n\nfunction getCacheForDb(db: any): Map<string, SearchIndex> {\n    let cache = indexCache.get(db);\n    if (!cache) {\n        cache = new Map();\n        indexCache.set(db, cache);\n    }\n    return cache;\n}\n\nfunction normalizeFields(fields: C8oPouchDbSearchOptions[\"fields\"]): FieldBoost[] {\n    if (Array.isArray(fields)) {\n        return fields.map((field) => ({\n            field,\n            boost: 1,\n            path: field.includes(\".\") ? field.split(\".\") : undefined\n        }));\n    }\n\n    if (fields && typeof fields === \"object\") {\n        return Object.keys(fields).map((field) => ({\n            field,\n            boost: typeof fields[field] === \"number\" ? fields[field] : 1,\n            path: field.includes(\".\") ? field.split(\".\") : undefined\n        }));\n    }\n\n    return [];\n}\n\nfunction extractText(fieldBoost: FieldBoost, doc: any): string | undefined {\n    const path = fieldBoost.path;\n    let value: any = doc;\n    if (path) {\n        for (let i = 0; i < path.length; i += 1) {\n            if (Array.isArray(value)) {\n                value = value.map((entry) => extractText({ field: fieldBoost.field, boost: fieldBoost.boost, path: path.slice(i) }, entry));\n                break;\n            }\n            value = value?.[path[i]];\n            if (value === undefined || value === null) {\n                break;\n            }\n        }\n    } else {\n        value = doc?.[fieldBoost.field];\n    }\n\n    if (value === undefined || value === null) {\n        return undefined;\n    }\n\n    if (Array.isArray(value)) {\n        return value.map((item) => `${item ?? \"\"}`).join(\" \");\n    }\n\n    if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n        return `${value}`;\n    }\n\n    return value.toString ? value.toString() : undefined;\n}\n\nfunction tokenize(text: string): string[] {\n    const matches = text.toLowerCase().match(/[\\p{L}\\p{N}]+/gu);\n    return matches ?? [];\n}\n\nfunction countTokens(tokens: string[]): Map<string, number> {\n    const counts = new Map<string, number>();\n    tokens.forEach((token) => {\n        counts.set(token, (counts.get(token) || 0) + 1);\n    });\n    return counts;\n}\n\nfunction parseMinMatch(mm: C8oPouchDbSearchOptions[\"mm\"]): number {\n    if (mm === undefined || mm === null) {\n        return 1;\n    }\n\n    const asString = `${mm}`.trim();\n    if (!asString) {\n        return 1;\n    }\n\n    const parsed = parseFloat(asString.replace(\"%\", \"\"));\n    if (Number.isNaN(parsed)) {\n        return 1;\n    }\n    return parsed / 100;\n}\n\nfunction escapeRegExp(value: string): string {\n    return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nasync function buildIndex(db: any, fieldBoosts: FieldBoost[], filter?: (doc: any) => boolean): Promise<SearchIndex> {\n    const result = await db.allDocs({ include_docs: true });\n    const docs = new Map<string, IndexedDoc>();\n\n    result.rows.forEach((row: any) => {\n        const doc = row.doc;\n        if (!doc || typeof doc !== \"object\") {\n            return;\n        }\n        if (typeof doc._id === \"string\" && (doc._id.startsWith(\"_design/\") || doc._id.startsWith(\"_local/\"))) {\n            return;\n        }\n        if (filter) {\n            try {\n                if (!filter(doc)) {\n                    return;\n                }\n            } catch (_error) {\n                return;\n            }\n        }\n\n        const fieldTexts: Record<string, string> = {};\n        const fieldTokens: Record<string, Map<string, number>> = {};\n        fieldBoosts.forEach((fieldBoost) => {\n            const text = extractText(fieldBoost, doc);\n            if (text) {\n                fieldTexts[fieldBoost.field] = text;\n                fieldTokens[fieldBoost.field] = countTokens(tokenize(text));\n            }\n        });\n\n        docs.set(row.id, {\n            id: row.id,\n            doc,\n            fieldTexts,\n            fieldTokens\n        });\n    });\n\n    return {\n        fields: fieldBoosts,\n        docs\n    };\n}\n\nfunction buildCacheKey(fieldBoosts: FieldBoost[], language: C8oPouchDbSearchOptions[\"language\"], filter?: (doc: any) => boolean): string {\n    const payload = {\n        language: Array.isArray(language) ? language.join(\",\") : language || \"en\",\n        fields: fieldBoosts.map((field) => field.field).sort(),\n        filter: filter ? filter.toString() : \"\"\n    };\n\n    return sha256(JSON.stringify(payload));\n}\n\nexport function registerPouchDbSearchPlugin(PouchDB: any): void {\n    if (PouchDB?.prototype?.search) {\n        return;\n    }\n\n    PouchDB.plugin({\n        search: function search(options: C8oPouchDbSearchOptions = {}) {\n            const query = options.query ?? options.q ?? \"\";\n            const fieldBoosts = normalizeFields(options.fields);\n            if (fieldBoosts.length === 0) {\n                return Promise.resolve({ total_rows: 0, rows: [] });\n            }\n\n            const includeDocs = options.include_docs === true;\n            const highlight = options.highlighting === true;\n            const pre = options.highlighting_pre || \"<strong>\";\n            const post = options.highlighting_post || \"</strong>\";\n            const skip = typeof options.skip === \"number\" ? options.skip : 0;\n            const limit = typeof options.limit === \"number\" ? options.limit : undefined;\n            const minMatch = parseMinMatch(options.mm);\n            const filter = options.filter;\n            const cacheKey = buildCacheKey(fieldBoosts, options.language, filter);\n            const cache = getCacheForDb(this);\n\n            if (options.destroy) {\n                cache.delete(cacheKey);\n                return Promise.resolve({ ok: true });\n            }\n\n            const ensureIndex = async (): Promise<SearchIndex> => {\n                const cached = cache.get(cacheKey);\n                if (cached && options.stale === \"ok\") {\n                    return cached;\n                }\n                const built = await buildIndex(this, fieldBoosts, filter);\n                cache.set(cacheKey, built);\n                return built;\n            };\n\n            if (options.build) {\n                return ensureIndex().then(() => ({ ok: true }));\n            }\n\n            return ensureIndex().then((index) => {\n                const queryTokens = Array.from(new Set(tokenize(`${query}`)));\n                if (queryTokens.length === 0) {\n                    return { total_rows: 0, rows: [] };\n                }\n\n                const rows: any[] = [];\n                index.docs.forEach((docEntry) => {\n                    const matchedTerms = new Set<string>();\n                    let score = 0;\n\n                    fieldBoosts.forEach((fieldBoost) => {\n                        const counts = docEntry.fieldTokens[fieldBoost.field];\n                        if (!counts) {\n                            return;\n                        }\n                        queryTokens.forEach((term) => {\n                            const count = counts.get(term);\n                            if (count) {\n                                matchedTerms.add(term);\n                                score += count * fieldBoost.boost;\n                            }\n                        });\n                    });\n\n                    if (matchedTerms.size === 0) {\n                        return;\n                    }\n\n                    if (queryTokens.length > 1) {\n                        const ratio = matchedTerms.size / queryTokens.length;\n                        if (Math.floor(ratio * 100) / 100 < minMatch) {\n                            return;\n                        }\n                    }\n\n                    const row: any = {\n                        id: docEntry.id,\n                        score\n                    };\n\n                    if (includeDocs) {\n                        row.doc = docEntry.doc;\n                    }\n\n                    if (highlight) {\n                        row.highlighting = {};\n                        fieldBoosts.forEach((fieldBoost) => {\n                            const text = docEntry.fieldTexts[fieldBoost.field];\n                            if (!text) {\n                                return;\n                            }\n                            let highlighted = text;\n                            queryTokens.forEach((term) => {\n                                const regex = new RegExp(`(${escapeRegExp(term)}[a-z]*)`, \"gi\");\n                                highlighted = highlighted.replace(regex, `${pre}$1${post}`);\n                            });\n                            row.highlighting[fieldBoost.field] = highlighted;\n                        });\n                    }\n\n                    rows.push(row);\n                });\n\n                rows.sort((a, b) => (a.score < b.score ? 1 : a.score > b.score ? -1 : 0));\n                const totalRows = rows.length;\n                const sliced = typeof limit === \"number\" && limit >= 0\n                    ? rows.slice(skip, skip + limit)\n                    : skip > 0\n                        ? rows.slice(skip)\n                        : rows;\n\n                return {\n                    total_rows: totalRows,\n                    rows: sliced\n                };\n            });\n        }\n    });\n}\n","export const workerPouchBundle = \"(function(f){if(typeof exports===\\\"object\\\"&&typeof module!==\\\"undefined\\\"){module.exports=f()}else if(typeof define===\\\"function\\\"&&define.amd){define([],f)}else{var g;if(typeof window!==\\\"undefined\\\"){g=window}else if(typeof global!==\\\"undefined\\\"){g=global}else if(typeof self!==\\\"undefined\\\"){g=self}else{g=this}g.workerPouch = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\\\"function\\\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\\\"Cannot find module '\\\"+o+\\\"'\\\");throw f.code=\\\"MODULE_NOT_FOUND\\\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\\\"function\\\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\\n'use strict';\\n\\nvar utils = _dereq_(8);\\nvar clientUtils = _dereq_(5);\\nvar uuid = _dereq_(9);\\nvar errors = _dereq_(6);\\nvar log = _dereq_(11)('pouchdb:worker:client');\\nvar preprocessAttachments = clientUtils.preprocessAttachments;\\nvar encodeArgs = clientUtils.encodeArgs;\\nvar adapterFun = clientUtils.adapterFun;\\n\\n// Implements the PouchDB API for dealing with PouchDB instances over WW\\nfunction WorkerPouch(opts, callback) {\\n  var api = this;\\n\\n  if (typeof opts === 'string') {\\n    var slashIdx = utils.lastIndexOf(opts, '/');\\n    opts = {\\n      url: opts.substring(0, slashIdx),\\n      name: opts.substring(slashIdx + 1)\\n    };\\n  } else {\\n    opts = utils.clone(opts);\\n  }\\n\\n  log('constructor called', opts);\\n\\n  // Aspirational. once https://github.com/pouchdb/pouchdb/issues/5200\\n  // is resolved, you'll be able to directly pass in a worker here instead of\\n  // a function that returns a worker.\\n  var worker = (opts.worker && typeof opts.worker === 'function') ?\\n    opts.worker() : opts.worker;\\n  if (!worker || !worker.postMessage) {\\n    var workerOptsErrMessage =\\n      'Error: you must provide a valid `worker` in `new PouchDB()`';\\n    console.error(workerOptsErrMessage);\\n    return callback(new Error(workerOptsErrMessage));\\n  }\\n\\n  if (!opts.name) {\\n    var optsErrMessage = 'Error: you must provide a database name.';\\n    console.error(optsErrMessage);\\n    return callback(new Error(optsErrMessage));\\n  }\\n\\n  function handleUncaughtError(content) {\\n    try {\\n      api.emit('error', content);\\n    } catch (err) {\\n      // TODO: it's weird that adapters should have to handle this themselves\\n      console.error(\\n        'The user\\\\'s map/reduce function threw an uncaught error.\\\\n' +\\n        'You can debug this error by doing:\\\\n' +\\n        'myDatabase.on(\\\\'error\\\\', function (err) { debugger; });\\\\n' +\\n        'Please double-check your map/reduce function.');\\n      console.error(content);\\n    }\\n  }\\n\\n  function onReceiveMessage(message) {\\n    var messageId = message.messageId;\\n    var messageType = message.type;\\n    var content = message.content;\\n\\n    if (messageType === 'uncaughtError') {\\n      handleUncaughtError(content);\\n      return;\\n    }\\n\\n    var cb = api._callbacks[messageId];\\n\\n    if (!cb) {\\n      log('duplicate message (ignoring)', messageId, messageType, content);\\n      return;\\n    }\\n\\n    log('receive message', api._instanceId, messageId, messageType, content);\\n\\n    if (messageType === 'error') {\\n      delete api._callbacks[messageId];\\n      cb(content);\\n    } else if (messageType === 'success') {\\n      delete api._callbacks[messageId];\\n      cb(null, content);\\n    } else { // 'update'\\n      api._changesListeners[messageId](content);\\n    }\\n  }\\n\\n  function workerListener(e) {\\n    if (e.data.id === api._instanceId) {\\n      onReceiveMessage(e.data);\\n    }\\n  }\\n\\n  function sendMessage(type, args, callback) {\\n    var messageId = uuid();\\n    log('send message', api._instanceId, messageId, type, args);\\n    api._callbacks[messageId] = callback;\\n    var encodedArgs = encodeArgs(args);\\n    worker.postMessage({\\n      id: api._instanceId,\\n      type: type,\\n      messageId: messageId,\\n      args: encodedArgs\\n    });\\n    log('message sent', api._instanceId, messageId);\\n  }\\n\\n  function sendRawMessage(messageId, type, args) {\\n    log('send message', api._instanceId, messageId, type, args);\\n    var encodedArgs = encodeArgs(args);\\n    worker.postMessage({\\n      id: api._instanceId,\\n      type: type,\\n      messageId: messageId,\\n      args: encodedArgs\\n    });\\n    log('message sent', api._instanceId, messageId);\\n  }\\n\\n  api.type = function () {\\n    return 'worker';\\n  };\\n\\n  api._id = adapterFun('id', function (callback) {\\n    sendMessage('id', [], callback);\\n  });\\n\\n  api.compact = adapterFun('compact', function (opts, callback) {\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n    sendMessage('compact', [opts], callback);\\n  });\\n\\n  api._info = function (callback) {\\n    sendMessage('info', [], callback);\\n  };\\n\\n  api.get = adapterFun('get', function (id, opts, callback) {\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n    sendMessage('get', [id, opts], callback);\\n  });\\n\\n  // hacky code necessary due to implicit breaking change in\\n  // https://github.com/pouchdb/pouchdb/commits/0ddeae6b\\n  api._get = function (id, opts, callback) {\\n    api.get(id, opts, function (err, doc) {\\n      if (err) {\\n        return callback(err);\\n      }\\n      callback(null, {doc: doc});\\n    });\\n  };\\n\\n  api.remove =\\n    adapterFun('remove', function (docOrId, optsOrRev, opts, callback) {\\n      var doc;\\n      if (typeof optsOrRev === 'string') {\\n        // id, rev, opts, callback style\\n        doc = {\\n          _id: docOrId,\\n          _rev: optsOrRev\\n        };\\n        if (typeof opts === 'function') {\\n          callback = opts;\\n          opts = {};\\n        }\\n      } else {\\n        // doc, opts, callback style\\n        doc = docOrId;\\n        if (typeof optsOrRev === 'function') {\\n          callback = optsOrRev;\\n          opts = {};\\n        } else {\\n          callback = opts;\\n          opts = optsOrRev;\\n        }\\n      }\\n      var rev = (doc._rev || opts.rev);\\n\\n      sendMessage('remove', [doc._id, rev], callback);\\n  });\\n\\n  api.getAttachment =\\n    adapterFun('getAttachment', function (docId, attachmentId, opts,\\n                                                callback) {\\n      if (typeof opts === 'function') {\\n        callback = opts;\\n        opts = {};\\n      }\\n      sendMessage('getAttachment', [docId, attachmentId, opts], callback);\\n  });\\n\\n  api.removeAttachment =\\n    adapterFun('removeAttachment', function (docId, attachmentId, rev,\\n                                                   callback) {\\n\\n      sendMessage('removeAttachment', [docId, attachmentId, rev], callback);\\n    });\\n\\n  // Add the attachment given by blob and its contentType property\\n  // to the document with the given id, the revision given by rev, and\\n  // add it to the database given by host.\\n  api.putAttachment =\\n    adapterFun('putAttachment', function (docId, attachmentId, rev, blob,\\n                                                type, callback) {\\n      if (typeof type === 'function') {\\n        callback = type;\\n        type = blob;\\n        blob = rev;\\n        rev = null;\\n      }\\n      if (typeof type === 'undefined') {\\n        type = blob;\\n        blob = rev;\\n        rev = null;\\n      }\\n\\n      if (typeof blob === 'string') {\\n        var binary;\\n        try {\\n          binary = atob(blob);\\n        } catch (err) {\\n          // it's not base64-encoded, so throw error\\n          return callback(errors.error(errors.BAD_ARG,\\n            'Attachments need to be base64 encoded'));\\n        }\\n        blob = utils.createBlob([utils.binaryStringToArrayBuffer(binary)], {type: type});\\n      }\\n\\n      var args = [docId, attachmentId, rev, blob, type];\\n      sendMessage('putAttachment', args, callback);\\n    });\\n\\n  api.put = adapterFun('put', utils.getArguments(function (args) {\\n    var temp, temptype, opts;\\n    var doc = args.shift();\\n    var id = '_id' in doc;\\n    var callback = args.pop();\\n    if (typeof doc !== 'object' || Array.isArray(doc)) {\\n      return callback(errors.error(errors.NOT_AN_OBJECT));\\n    }\\n\\n    doc = utils.clone(doc);\\n\\n    preprocessAttachments(doc).then(function () {\\n      while (true) {\\n        temp = args.shift();\\n        temptype = typeof temp;\\n        if (temptype === \\\"string\\\" && !id) {\\n          doc._id = temp;\\n          id = true;\\n        } else if (temptype === \\\"string\\\" && id && !('_rev' in doc)) {\\n          doc._rev = temp;\\n        } else if (temptype === \\\"object\\\") {\\n          opts = utils.clone(temp);\\n        }\\n        if (!args.length) {\\n          break;\\n        }\\n      }\\n      opts = opts || {};\\n\\n      sendMessage('put', [doc, opts], callback);\\n    })[\\\"catch\\\"](callback);\\n\\n  }));\\n\\n  api.post = adapterFun('post', function (doc, opts, callback) {\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n    opts = utils.clone(opts);\\n\\n    sendMessage('post', [doc, opts], callback);\\n  });\\n\\n  api._bulkDocs = function (req, opts, callback) {\\n    sendMessage('bulkDocs', [req, opts], callback);\\n  };\\n\\n  api._allDocs = function (opts, callback) {\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n    sendMessage('allDocs', [opts], callback);\\n  };\\n\\n  api._changes = function (opts) {\\n    opts = utils.clone(opts);\\n\\n    if (opts.continuous) {\\n      var messageId = uuid();\\n      api._changesListeners[messageId] = opts.onChange;\\n      api._callbacks[messageId] = opts.complete;\\n      sendRawMessage(messageId, 'liveChanges', [opts]);\\n      return {\\n        cancel: function () {\\n          sendRawMessage(messageId, 'cancelChanges', []);\\n        }\\n      };\\n    }\\n\\n    sendMessage('changes', [opts], function (err, res) {\\n      if (err) {\\n        opts.complete(err);\\n        return callback(err);\\n      }\\n      res.results.forEach(function (change) {\\n        opts.onChange(change);\\n      });\\n      if (opts.returnDocs === false || opts.return_docs === false) {\\n        res.results = [];\\n      }\\n      opts.complete(null, res);\\n    });\\n  };\\n\\n  // Given a set of document/revision IDs (given by req), tets the subset of\\n  // those that do NOT correspond to revisions stored in the database.\\n  // See http://wiki.apache.org/couchdb/HttpPostRevsDiff\\n  api.revsDiff = adapterFun('revsDiff', function (req, opts, callback) {\\n    // If no options were given, set the callback to be the second parameter\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n\\n    sendMessage('revsDiff', [req, opts], callback);\\n  });\\n\\n  api._query = adapterFun('query', function (fun, opts, callback) {\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n    var funEncoded = fun;\\n    if (typeof fun === 'function') {\\n      funEncoded = {map: fun};\\n    }\\n    sendMessage('query', [funEncoded, opts], callback);\\n  });\\n\\n  api._viewCleanup = adapterFun('viewCleanup', function (callback) {\\n    sendMessage('viewCleanup', [], callback);\\n  });\\n\\n  api._close = function (callback) {\\n    callback();\\n  };\\n\\n  api.destroy = adapterFun('destroy', function (opts, callback) {\\n    if (typeof opts === 'function') {\\n      callback = opts;\\n      opts = {};\\n    }\\n    sendMessage('destroy', [], function (err, res) {\\n      if (err) {\\n        api.emit('error', err);\\n        return callback(err);\\n      }\\n      worker.removeEventListener('message', workerListener);\\n      api.emit('destroyed');\\n      callback(null, res);\\n    });\\n  });\\n\\n  api._instanceId = opts.originalName;\\n  api._callbacks = {};\\n  api._changesListeners = {};\\n  api._name = opts.originalName;\\n\\n  worker.addEventListener('message', workerListener);\\n\\n  var workerOpts = {\\n    name: api._name,\\n    auto_compaction: !!opts.auto_compaction\\n  };\\n  if (opts.revs_limit) {\\n    workerOpts.revs_limit = opts.revs_limit;\\n  }\\n\\n  sendMessage('createDatabase', [workerOpts], function (err) {\\n    if (err) {\\n      return callback(err);\\n    }\\n    callback(null, api);\\n  });\\n}\\n\\n// WorkerPouch is a valid adapter.\\nWorkerPouch.valid = function () {\\n  return true;\\n};\\nWorkerPouch.use_prefix = false;\\n\\nmodule.exports = WorkerPouch;\\n},{\\\"11\\\":11,\\\"5\\\":5,\\\"6\\\":6,\\\"8\\\":8,\\\"9\\\":9}],2:[function(_dereq_,module,exports){\\n'use strict';\\n/* global webkitURL */\\n\\nmodule.exports = function createWorker(code) {\\n  var createBlob = _dereq_(8).createBlob;\\n  var URLCompat = typeof URL !== 'undefined' ? URL : webkitURL;\\n\\n  function makeBlobURI(script) {\\n    var blob = createBlob([script], {type: 'text/javascript'});\\n    return URLCompat.createObjectURL(blob);\\n  }\\n\\n  var blob = createBlob([code], {type: 'text/javascript'});\\n  return new Worker(makeBlobURI(blob));\\n};\\n},{\\\"8\\\":8}],3:[function(_dereq_,module,exports){\\n(function (global){\\n'use strict';\\n\\n// main script used with a blob-style worker\\n\\nvar extend = _dereq_(15).extend;\\nvar WorkerPouchCore = _dereq_(1);\\nvar createWorker = _dereq_(2);\\nvar isSupportedBrowser = _dereq_(4);\\nvar workerCode = _dereq_(10);\\n\\nfunction WorkerPouch(opts, callback) {\\n\\n  var worker = window.__pouchdb_global_worker; // cache so there's only one\\n  if (!worker) {\\n    try {\\n      worker = createWorker(workerCode);\\n      worker.addEventListener('error', function (e) {\\n        if ('console' in global && 'warn' in console) {\\n          console.warn('worker threw an error', e.error);\\n        }\\n      });\\n      window.__pouchdb_global_worker = worker;\\n    } catch (e) {\\n      if ('console' in global && 'info' in console) {\\n        console.info('This browser is not supported by WorkerPouch. ' +\\n          'Please use isSupportedBrowser() to check.', e);\\n      }\\n      return callback(new Error('browser unsupported by worker-pouch'));\\n    }\\n  }\\n\\n  var _opts = extend({\\n    worker: function () { return worker; }\\n  }, opts);\\n\\n  WorkerPouchCore.call(this, _opts, callback);\\n}\\n\\nWorkerPouch.valid = function () {\\n  return true;\\n};\\nWorkerPouch.use_prefix = false;\\n\\nWorkerPouch.isSupportedBrowser = isSupportedBrowser;\\n\\nmodule.exports = WorkerPouch;\\n\\n/* istanbul ignore next */\\nif (typeof window !== 'undefined' && window.PouchDB) {\\n  window.PouchDB.adapter('worker', module.exports);\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"1\\\":1,\\\"10\\\":10,\\\"15\\\":15,\\\"2\\\":2,\\\"4\\\":4}],4:[function(_dereq_,module,exports){\\n(function (global){\\n'use strict';\\n\\nvar Promise = _dereq_(19);\\nvar createWorker = _dereq_(2);\\n\\nmodule.exports = function isSupportedBrowser() {\\n  return Promise.resolve().then(function () {\\n    // synchronously throws in IE/Edge\\n    var worker = createWorker('' +\\n      'self.onmessage = function () {' +\\n      '  self.postMessage({' +\\n      '    hasIndexedDB: (typeof indexedDB !== \\\"undefined\\\")' +\\n      '  });' +\\n      '};');\\n\\n    return new Promise(function (resolve, reject) {\\n\\n      function listener(e) {\\n        worker.terminate();\\n        if (e.data.hasIndexedDB) {\\n          resolve();\\n          return;\\n        }\\n        reject();\\n      }\\n\\n      function errorListener() {\\n        worker.terminate();\\n        reject();\\n      }\\n\\n      worker.addEventListener('error', errorListener);\\n      worker.addEventListener('message', listener);\\n      worker.postMessage({});\\n    });\\n  }).then(function () {\\n    return true;\\n  }, function (err) {\\n    if ('console' in global && 'info' in console) {\\n      console.info('This browser is not supported by WorkerPouch', err);\\n    }\\n    return false;\\n  });\\n};\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"19\\\":19,\\\"2\\\":2}],5:[function(_dereq_,module,exports){\\n(function (process){\\n'use strict';\\n\\nvar utils = _dereq_(8);\\nvar log = _dereq_(11)('pouchdb:worker:client');\\nvar isBrowser = typeof process === 'undefined' || process.browser;\\n\\nexports.preprocessAttachments = function preprocessAttachments(doc) {\\n  if (!doc._attachments || !Object.keys(doc._attachments)) {\\n    return utils.Promise.resolve();\\n  }\\n\\n  return utils.Promise.all(Object.keys(doc._attachments).map(function (key) {\\n    var attachment = doc._attachments[key];\\n    if (attachment.data && typeof attachment.data !== 'string') {\\n      if (isBrowser) {\\n        return new utils.Promise(function (resolve) {\\n          utils.readAsBinaryString(attachment.data, function (binary) {\\n            attachment.data = btoa(binary);\\n            resolve();\\n          });\\n        });\\n      } else {\\n        attachment.data = attachment.data.toString('base64');\\n      }\\n    }\\n  }));\\n};\\n\\nfunction encodeObjectArg(arg) {\\n  // these can't be encoded by normal structured cloning\\n  var funcKeys = ['filter', 'map', 'reduce'];\\n  var keysToRemove = ['onChange', 'processChange', 'complete'];\\n  var clonedArg = {};\\n  Object.keys(arg).forEach(function (key) {\\n    if (keysToRemove.indexOf(key) !== -1) {\\n      return;\\n    }\\n    if (funcKeys.indexOf(key) !== -1 && typeof arg[key] === 'function') {\\n      clonedArg[key] = {\\n        type: 'func',\\n        func: arg[key].toString()\\n      };\\n    } else {\\n      clonedArg[key] = arg[key];\\n    }\\n  });\\n  return clonedArg;\\n}\\n\\nexports.encodeArgs = function encodeArgs(args) {\\n  var result = [];\\n  args.forEach(function (arg) {\\n    if (arg === null || typeof arg !== 'object' ||\\n        Array.isArray(arg) || arg instanceof Blob || arg instanceof Date) {\\n      result.push(arg);\\n    } else {\\n      result.push(encodeObjectArg(arg));\\n    }\\n  });\\n  return result;\\n};\\n\\nexports.padInt = function padInt(i, len) {\\n  var res = i.toString();\\n  while (res.length < len) {\\n    res = '0' + res;\\n  }\\n  return res;\\n};\\n\\n\\nexports.adapterFun = function adapterFun(name, callback) {\\n\\n  function logApiCall(self, name, args) {\\n    if (!log.enabled) {\\n      return;\\n    }\\n    var logArgs = [self._db_name, name];\\n    for (var i = 0; i < args.length - 1; i++) {\\n      logArgs.push(args[i]);\\n    }\\n    log.apply(null, logArgs);\\n\\n    // override the callback itself to log the response\\n    var origCallback = args[args.length - 1];\\n    args[args.length - 1] = function (err, res) {\\n      var responseArgs = [self._db_name, name];\\n      responseArgs = responseArgs.concat(\\n        err ? ['error', err] : ['success', res]\\n      );\\n      log.apply(null, responseArgs);\\n      origCallback(err, res);\\n    };\\n  }\\n\\n\\n  return utils.toPromise(utils.getArguments(function (args) {\\n    if (this._closed) {\\n      return utils.Promise.reject(new Error('database is closed'));\\n    }\\n    var self = this;\\n    logApiCall(self, name, args);\\n    if (!this.taskqueue.isReady) {\\n      return new utils.Promise(function (fulfill, reject) {\\n        self.taskqueue.addTask(function (failed) {\\n          if (failed) {\\n            reject(failed);\\n          } else {\\n            fulfill(self[name].apply(self, args));\\n          }\\n        });\\n      });\\n    }\\n    return callback.apply(this, args);\\n  }));\\n};\\n}).call(this,_dereq_(20))\\n},{\\\"11\\\":11,\\\"20\\\":20,\\\"8\\\":8}],6:[function(_dereq_,module,exports){\\n\\\"use strict\\\";\\n\\nvar inherits = _dereq_(14);\\ninherits(PouchError, Error);\\n\\nfunction PouchError(opts) {\\n  Error.call(opts.reason);\\n  this.status = opts.status;\\n  this.name = opts.error;\\n  this.message = opts.reason;\\n  this.error = true;\\n}\\n\\nPouchError.prototype.toString = function () {\\n  return JSON.stringify({\\n    status: this.status,\\n    name: this.name,\\n    message: this.message\\n  });\\n};\\n\\nexports.UNAUTHORIZED = new PouchError({\\n  status: 401,\\n  error: 'unauthorized',\\n  reason: \\\"Name or password is incorrect.\\\"\\n});\\n\\nexports.MISSING_BULK_DOCS = new PouchError({\\n  status: 400,\\n  error: 'bad_request',\\n  reason: \\\"Missing JSON list of 'docs'\\\"\\n});\\n\\nexports.MISSING_DOC = new PouchError({\\n  status: 404,\\n  error: 'not_found',\\n  reason: 'missing'\\n});\\n\\nexports.REV_CONFLICT = new PouchError({\\n  status: 409,\\n  error: 'conflict',\\n  reason: 'Document update conflict'\\n});\\n\\nexports.INVALID_ID = new PouchError({\\n  status: 400,\\n  error: 'invalid_id',\\n  reason: '_id field must contain a string'\\n});\\n\\nexports.MISSING_ID = new PouchError({\\n  status: 412,\\n  error: 'missing_id',\\n  reason: '_id is required for puts'\\n});\\n\\nexports.RESERVED_ID = new PouchError({\\n  status: 400,\\n  error: 'bad_request',\\n  reason: 'Only reserved document ids may start with underscore.'\\n});\\n\\nexports.NOT_OPEN = new PouchError({\\n  status: 412,\\n  error: 'precondition_failed',\\n  reason: 'Database not open'\\n});\\n\\nexports.UNKNOWN_ERROR = new PouchError({\\n  status: 500,\\n  error: 'unknown_error',\\n  reason: 'Database encountered an unknown error'\\n});\\n\\nexports.BAD_ARG = new PouchError({\\n  status: 500,\\n  error: 'badarg',\\n  reason: 'Some query argument is invalid'\\n});\\n\\nexports.INVALID_REQUEST = new PouchError({\\n  status: 400,\\n  error: 'invalid_request',\\n  reason: 'Request was invalid'\\n});\\n\\nexports.QUERY_PARSE_ERROR = new PouchError({\\n  status: 400,\\n  error: 'query_parse_error',\\n  reason: 'Some query parameter is invalid'\\n});\\n\\nexports.DOC_VALIDATION = new PouchError({\\n  status: 500,\\n  error: 'doc_validation',\\n  reason: 'Bad special document member'\\n});\\n\\nexports.BAD_REQUEST = new PouchError({\\n  status: 400,\\n  error: 'bad_request',\\n  reason: 'Something wrong with the request'\\n});\\n\\nexports.NOT_AN_OBJECT = new PouchError({\\n  status: 400,\\n  error: 'bad_request',\\n  reason: 'Document must be a JSON object'\\n});\\n\\nexports.DB_MISSING = new PouchError({\\n  status: 404,\\n  error: 'not_found',\\n  reason: 'Database not found'\\n});\\n\\nexports.IDB_ERROR = new PouchError({\\n  status: 500,\\n  error: 'indexed_db_went_bad',\\n  reason: 'unknown'\\n});\\n\\nexports.WSQ_ERROR = new PouchError({\\n  status: 500,\\n  error: 'web_sql_went_bad',\\n  reason: 'unknown'\\n});\\n\\nexports.LDB_ERROR = new PouchError({\\n  status: 500,\\n  error: 'levelDB_went_went_bad',\\n  reason: 'unknown'\\n});\\n\\nexports.FORBIDDEN = new PouchError({\\n  status: 403,\\n  error: 'forbidden',\\n  reason: 'Forbidden by design doc validate_doc_update function'\\n});\\n\\nexports.INVALID_REV = new PouchError({\\n  status: 400,\\n  error: 'bad_request',\\n  reason: 'Invalid rev format'\\n});\\n\\nexports.FILE_EXISTS = new PouchError({\\n  status: 412,\\n  error: 'file_exists',\\n  reason: 'The database could not be created, the file already exists.'\\n});\\n\\nexports.MISSING_STUB = new PouchError({\\n  status: 412,\\n  error: 'missing_stub'\\n});\\n\\nexports.error = function (error, reason, name) {\\n  function CustomPouchError(reason) {\\n    // inherit error properties from our parent error manually\\n    // so as to allow proper JSON parsing.\\n    /* jshint ignore:start */\\n    for (var p in error) {\\n      if (typeof error[p] !== 'function') {\\n        this[p] = error[p];\\n      }\\n    }\\n    /* jshint ignore:end */\\n    if (name !== undefined) {\\n      this.name = name;\\n    }\\n    if (reason !== undefined) {\\n      this.reason = reason;\\n    }\\n  }\\n  CustomPouchError.prototype = PouchError.prototype;\\n  return new CustomPouchError(reason);\\n};\\n\\n// Find one of the errors defined above based on the value\\n// of the specified property.\\n// If reason is provided prefer the error matching that reason.\\n// This is for differentiating between errors with the same name and status,\\n// eg, bad_request.\\nexports.getErrorTypeByProp = function (prop, value, reason) {\\n  var errors = exports;\\n  var keys = Object.keys(errors).filter(function (key) {\\n    var error = errors[key];\\n    return typeof error !== 'function' && error[prop] === value;\\n  });\\n  var key = reason && keys.filter(function (key) {\\n      var error = errors[key];\\n      return error.message === reason;\\n    })[0] || keys[0];\\n  return (key) ? errors[key] : null;\\n};\\n\\nexports.generateErrorFromResponse = function (res) {\\n  var error, errName, errType, errMsg, errReason;\\n  var errors = exports;\\n\\n  errName = (res.error === true && typeof res.name === 'string') ?\\n    res.name :\\n    res.error;\\n  errReason = res.reason;\\n  errType = errors.getErrorTypeByProp('name', errName, errReason);\\n\\n  if (res.missing ||\\n    errReason === 'missing' ||\\n    errReason === 'deleted' ||\\n    errName === 'not_found') {\\n    errType = errors.MISSING_DOC;\\n  } else if (errName === 'doc_validation') {\\n    // doc validation needs special treatment since\\n    // res.reason depends on the validation error.\\n    // see utils.js\\n    errType = errors.DOC_VALIDATION;\\n    errMsg = errReason;\\n  } else if (errName === 'bad_request' && errType.message !== errReason) {\\n    // if bad_request error already found based on reason don't override.\\n\\n    // attachment errors.\\n    if (errReason.indexOf('unknown stub attachment') === 0) {\\n      errType = errors.MISSING_STUB;\\n      errMsg = errReason;\\n    } else {\\n      errType = errors.BAD_REQUEST;\\n    }\\n  }\\n\\n  // fallback to error by statys or unknown error.\\n  if (!errType) {\\n    errType = errors.getErrorTypeByProp('status', res.status, errReason) ||\\n    errors.UNKNOWN_ERROR;\\n  }\\n\\n  error = errors.error(errType, errReason, errName);\\n\\n  // Keep custom message.\\n  if (errMsg) {\\n    error.message = errMsg;\\n  }\\n\\n  // Keep helpful response data in our error messages.\\n  if (res.id) {\\n    error.id = res.id;\\n  }\\n  if (res.status) {\\n    error.status = res.status;\\n  }\\n  if (res.statusText) {\\n    error.name = res.statusText;\\n  }\\n  if (res.missing) {\\n    error.missing = res.missing;\\n  }\\n\\n  return error;\\n};\\n\\n},{\\\"14\\\":14}],7:[function(_dereq_,module,exports){\\n'use strict';\\n\\nfunction isBinaryObject(object) {\\n  return object instanceof ArrayBuffer ||\\n    (typeof Blob !== 'undefined' && object instanceof Blob);\\n}\\n\\nfunction cloneArrayBuffer(buff) {\\n  if (typeof buff.slice === 'function') {\\n    return buff.slice(0);\\n  }\\n  // IE10-11 slice() polyfill\\n  var target = new ArrayBuffer(buff.byteLength);\\n  var targetArray = new Uint8Array(target);\\n  var sourceArray = new Uint8Array(buff);\\n  targetArray.set(sourceArray);\\n  return target;\\n}\\n\\nfunction cloneBinaryObject(object) {\\n  if (object instanceof ArrayBuffer) {\\n    return cloneArrayBuffer(object);\\n  }\\n  // Blob\\n  return object.slice(0, object.size, object.type);\\n}\\n\\nmodule.exports = function clone(object) {\\n  var newObject;\\n  var i;\\n  var len;\\n\\n  if (!object || typeof object !== 'object') {\\n    return object;\\n  }\\n\\n  if (Array.isArray(object)) {\\n    newObject = [];\\n    for (i = 0, len = object.length; i < len; i++) {\\n      newObject[i] = clone(object[i]);\\n    }\\n    return newObject;\\n  }\\n\\n  // special case: to avoid inconsistencies between IndexedDB\\n  // and other backends, we automatically stringify Dates\\n  if (object instanceof Date) {\\n    return object.toISOString();\\n  }\\n\\n  if (isBinaryObject(object)) {\\n    return cloneBinaryObject(object);\\n  }\\n\\n  newObject = {};\\n  for (i in object) {\\n    if (Object.prototype.hasOwnProperty.call(object, i)) {\\n      var value = clone(object[i]);\\n      if (typeof value !== 'undefined') {\\n        newObject[i] = value;\\n      }\\n    }\\n  }\\n  return newObject;\\n};\\n\\n},{}],8:[function(_dereq_,module,exports){\\n(function (process,global){\\n'use strict';\\n\\nvar Promise = _dereq_(19);\\n\\nexports.lastIndexOf = function lastIndexOf(str, char) {\\n  for (var i = str.length - 1; i >= 0; i--) {\\n    if (str.charAt(i) === char) {\\n      return i;\\n    }\\n  }\\n  return -1;\\n};\\n\\nexports.clone = _dereq_(7);\\n\\n/* istanbul ignore next */\\nexports.once = function once(fun) {\\n  var called = false;\\n  return exports.getArguments(function (args) {\\n    if (called) {\\n      if ('console' in global && 'trace' in console) {\\n        console.trace();\\n      }\\n      throw new Error('once called  more than once');\\n    } else {\\n      called = true;\\n      fun.apply(this, args);\\n    }\\n  });\\n};\\n/* istanbul ignore next */\\nexports.getArguments = function getArguments(fun) {\\n  return function () {\\n    var len = arguments.length;\\n    var args = new Array(len);\\n    var i = -1;\\n    while (++i < len) {\\n      args[i] = arguments[i];\\n    }\\n    return fun.call(this, args);\\n  };\\n};\\n/* istanbul ignore next */\\nexports.toPromise = function toPromise(func) {\\n  //create the function we will be returning\\n  return exports.getArguments(function (args) {\\n    var self = this;\\n    var tempCB = (typeof args[args.length - 1] === 'function') ? args.pop() : false;\\n    // if the last argument is a function, assume its a callback\\n    var usedCB;\\n    if (tempCB) {\\n      // if it was a callback, create a new callback which calls it,\\n      // but do so async so we don't trap any errors\\n      usedCB = function (err, resp) {\\n        process.nextTick(function () {\\n          tempCB(err, resp);\\n        });\\n      };\\n    }\\n    var promise = new Promise(function (fulfill, reject) {\\n      try {\\n        var callback = exports.once(function (err, mesg) {\\n          if (err) {\\n            reject(err);\\n          } else {\\n            fulfill(mesg);\\n          }\\n        });\\n        // create a callback for this invocation\\n        // apply the function in the orig context\\n        args.push(callback);\\n        func.apply(self, args);\\n      } catch (e) {\\n        reject(e);\\n      }\\n    });\\n    // if there is a callback, call it back\\n    if (usedCB) {\\n      promise.then(function (result) {\\n        usedCB(null, result);\\n      }, usedCB);\\n    }\\n    promise.cancel = function () {\\n      return this;\\n    };\\n    return promise;\\n  });\\n};\\n\\nexports.inherits = _dereq_(14);\\nexports.Promise = Promise;\\n\\nvar binUtil = _dereq_(18);\\n\\nexports.createBlob = binUtil.createBlob;\\nexports.readAsArrayBuffer = binUtil.readAsArrayBuffer;\\nexports.readAsBinaryString = binUtil.readAsBinaryString;\\nexports.binaryStringToArrayBuffer = binUtil.binaryStringToArrayBuffer;\\nexports.arrayBufferToBinaryString = binUtil.arrayBufferToBinaryString;\\n\\n}).call(this,_dereq_(20),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"14\\\":14,\\\"18\\\":18,\\\"19\\\":19,\\\"20\\\":20,\\\"7\\\":7}],9:[function(_dereq_,module,exports){\\n\\\"use strict\\\";\\n\\n// BEGIN Math.uuid.js\\n\\n/*!\\n Math.uuid.js (v1.4)\\n http://www.broofa.com\\n mailto:robert@broofa.com\\n\\n Copyright (c) 2010 Robert Kieffer\\n Dual licensed under the MIT and GPL licenses.\\n */\\n\\n/*\\n * Generate a random uuid.\\n *\\n * USAGE: Math.uuid(length, radix)\\n *   length - the desired number of characters\\n *   radix  - the number of allowable values for each character.\\n *\\n * EXAMPLES:\\n *   // No arguments  - returns RFC4122, version 4 ID\\n *   >>> Math.uuid()\\n *   \\\"92329D39-6F5C-4520-ABFC-AAB64544E172\\\"\\n *\\n *   // One argument - returns ID of the specified length\\n *   >>> Math.uuid(15)     // 15 character ID (default base=62)\\n *   \\\"VcydxgltxrVZSTV\\\"\\n *\\n *   // Two arguments - returns ID of the specified length, and radix. \\n *   // (Radix must be <= 62)\\n *   >>> Math.uuid(8, 2)  // 8 character ID (base=2)\\n *   \\\"01001010\\\"\\n *   >>> Math.uuid(8, 10) // 8 character ID (base=10)\\n *   \\\"47473046\\\"\\n *   >>> Math.uuid(8, 16) // 8 character ID (base=16)\\n *   \\\"098F4D35\\\"\\n */\\nvar chars = (\\n'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' +\\n'abcdefghijklmnopqrstuvwxyz'\\n).split('');\\nfunction getValue(radix) {\\n  return 0 | Math.random() * radix;\\n}\\nfunction uuid(len, radix) {\\n  radix = radix || chars.length;\\n  var out = '';\\n  var i = -1;\\n\\n  if (len) {\\n    // Compact form\\n    while (++i < len) {\\n      out += chars[getValue(radix)];\\n    }\\n    return out;\\n  }\\n  // rfc4122, version 4 form\\n  // Fill in random data.  At i==19 set the high bits of clock sequence as\\n  // per rfc4122, sec. 4.1.5\\n  while (++i < 36) {\\n    switch (i) {\\n      case 8:\\n      case 13:\\n      case 18:\\n      case 23:\\n        out += '-';\\n        break;\\n      case 19:\\n        out += chars[(getValue(16) & 0x3) | 0x8];\\n        break;\\n      default:\\n        out += chars[getValue(16)];\\n    }\\n  }\\n\\n  return out;\\n}\\n\\n\\n\\nmodule.exports = uuid;\\n\\n\\n},{}],10:[function(_dereq_,module,exports){\\n// this code is automatically generated by bin/build.js\\nmodule.exports = \\\"!function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var u=\\\\\\\"function\\\\\\\"==typeof require&&require;if(!s&&u)return u(a,!0);if(i)return i(a,!0);var c=new Error(\\\\\\\"Cannot find module '\\\\\\\"+a+\\\\\\\"'\\\\\\\");throw c.code=\\\\\\\"MODULE_NOT_FOUND\\\\\\\",c}var f=n[a]={exports:{}};t[a][0].call(f.exports,function(e){var n=t[a][1][e];return o(n?n:e)},f,f.exports,e,t,n,r)}return n[a].exports}for(var i=\\\\\\\"function\\\\\\\"==typeof require&&require,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(e,t,n){\\\\\\\"use strict\\\\\\\";var r=e(3),o=e(4);r(self,o)},{3:3,4:4}],2:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){Error.call(e.reason),this.status=e.status,this.name=e.error,this.message=e.reason,this.error=!0}var o=e(12);o(r,Error),r.prototype.toString=function(){return JSON.stringify({status:this.status,name:this.name,message:this.message})},n.UNAUTHORIZED=new r({status:401,error:\\\\\\\"unauthorized\\\\\\\",reason:\\\\\\\"Name or password is incorrect.\\\\\\\"}),n.MISSING_BULK_DOCS=new r({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Missing JSON list of 'docs'\\\\\\\"}),n.MISSING_DOC=new r({status:404,error:\\\\\\\"not_found\\\\\\\",reason:\\\\\\\"missing\\\\\\\"}),n.REV_CONFLICT=new r({status:409,error:\\\\\\\"conflict\\\\\\\",reason:\\\\\\\"Document update conflict\\\\\\\"}),n.INVALID_ID=new r({status:400,error:\\\\\\\"invalid_id\\\\\\\",reason:\\\\\\\"_id field must contain a string\\\\\\\"}),n.MISSING_ID=new r({status:412,error:\\\\\\\"missing_id\\\\\\\",reason:\\\\\\\"_id is required for puts\\\\\\\"}),n.RESERVED_ID=new r({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Only reserved document ids may start with underscore.\\\\\\\"}),n.NOT_OPEN=new r({status:412,error:\\\\\\\"precondition_failed\\\\\\\",reason:\\\\\\\"Database not open\\\\\\\"}),n.UNKNOWN_ERROR=new r({status:500,error:\\\\\\\"unknown_error\\\\\\\",reason:\\\\\\\"Database encountered an unknown error\\\\\\\"}),n.BAD_ARG=new r({status:500,error:\\\\\\\"badarg\\\\\\\",reason:\\\\\\\"Some query argument is invalid\\\\\\\"}),n.INVALID_REQUEST=new r({status:400,error:\\\\\\\"invalid_request\\\\\\\",reason:\\\\\\\"Request was invalid\\\\\\\"}),n.QUERY_PARSE_ERROR=new r({status:400,error:\\\\\\\"query_parse_error\\\\\\\",reason:\\\\\\\"Some query parameter is invalid\\\\\\\"}),n.DOC_VALIDATION=new r({status:500,error:\\\\\\\"doc_validation\\\\\\\",reason:\\\\\\\"Bad special document member\\\\\\\"}),n.BAD_REQUEST=new r({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Something wrong with the request\\\\\\\"}),n.NOT_AN_OBJECT=new r({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Document must be a JSON object\\\\\\\"}),n.DB_MISSING=new r({status:404,error:\\\\\\\"not_found\\\\\\\",reason:\\\\\\\"Database not found\\\\\\\"}),n.IDB_ERROR=new r({status:500,error:\\\\\\\"indexed_db_went_bad\\\\\\\",reason:\\\\\\\"unknown\\\\\\\"}),n.WSQ_ERROR=new r({status:500,error:\\\\\\\"web_sql_went_bad\\\\\\\",reason:\\\\\\\"unknown\\\\\\\"}),n.LDB_ERROR=new r({status:500,error:\\\\\\\"levelDB_went_went_bad\\\\\\\",reason:\\\\\\\"unknown\\\\\\\"}),n.FORBIDDEN=new r({status:403,error:\\\\\\\"forbidden\\\\\\\",reason:\\\\\\\"Forbidden by design doc validate_doc_update function\\\\\\\"}),n.INVALID_REV=new r({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Invalid rev format\\\\\\\"}),n.FILE_EXISTS=new r({status:412,error:\\\\\\\"file_exists\\\\\\\",reason:\\\\\\\"The database could not be created, the file already exists.\\\\\\\"}),n.MISSING_STUB=new r({status:412,error:\\\\\\\"missing_stub\\\\\\\"}),n.error=function(e,t,n){function o(t){for(var r in e)\\\\\\\"function\\\\\\\"!=typeof e[r]&&(this[r]=e[r]);void 0!==n&&(this.name=n),void 0!==t&&(this.reason=t)}return o.prototype=r.prototype,new o(t)},n.getErrorTypeByProp=function(e,t,r){var o=n,i=Object.keys(o).filter(function(n){var r=o[n];return\\\\\\\"function\\\\\\\"!=typeof r&&r[e]===t}),a=r&&i.filter(function(e){var t=o[e];return t.message===r})[0]||i[0];return a?o[a]:null},n.generateErrorFromResponse=function(e){var t,r,o,i,a,s=n;return r=e.error===!0&&\\\\\\\"string\\\\\\\"==typeof e.name?e.name:e.error,a=e.reason,o=s.getErrorTypeByProp(\\\\\\\"name\\\\\\\",r,a),e.missing||\\\\\\\"missing\\\\\\\"===a||\\\\\\\"deleted\\\\\\\"===a||\\\\\\\"not_found\\\\\\\"===r?o=s.MISSING_DOC:\\\\\\\"doc_validation\\\\\\\"===r?(o=s.DOC_VALIDATION,i=a):\\\\\\\"bad_request\\\\\\\"===r&&o.message!==a&&(0===a.indexOf(\\\\\\\"unknown stub attachment\\\\\\\")?(o=s.MISSING_STUB,i=a):o=s.BAD_REQUEST),o||(o=s.getErrorTypeByProp(\\\\\\\"status\\\\\\\",e.status,a)||s.UNKNOWN_ERROR),t=s.error(o,a,r),i&&(t.message=i),e.id&&(t.id=e.id),e.status&&(t.status=e.status),e.statusText&&(t.name=e.statusText),e.missing&&(t.missing=e.missing),t}},{12:12}],3:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e,t){function n(t,n){f(\\\\\\\" -> sendUncaughtError\\\\\\\",t,n),e.postMessage({type:\\\\\\\"uncaughtError\\\\\\\",id:t,content:a.createError(n)})}function r(t,n,r){f(\\\\\\\" -> sendError\\\\\\\",t,n,r),e.postMessage({type:\\\\\\\"error\\\\\\\",id:t,messageId:n,content:a.createError(r)})}function l(t,n,r){f(\\\\\\\" -> sendSuccess\\\\\\\",t,n),e.postMessage({type:\\\\\\\"success\\\\\\\",id:t,messageId:n,content:r})}function d(t,n,r){f(\\\\\\\" -> sendUpdate\\\\\\\",t,n),e.postMessage({type:\\\\\\\"update\\\\\\\",id:t,messageId:n,content:r})}function h(e,t,n,i){var a=u[\\\\\\\"$\\\\\\\"+e];return a?void o.resolve().then(function(){return a[t].apply(a,i)}).then(function(t){l(e,n,t)})[\\\\\\\"catch\\\\\\\"](function(t){r(e,n,t)}):r(e,n,{error:\\\\\\\"db not found\\\\\\\"})}function p(e,t,n){var r=n[0];r&&\\\\\\\"object\\\\\\\"==typeof r&&(r.returnDocs=!0,r.return_docs=!0),h(e,\\\\\\\"changes\\\\\\\",t,n)}function v(e,t,n){var a=u[\\\\\\\"$\\\\\\\"+e];return a?void o.resolve().then(function(){var r=n[0],o=n[1],s=n[2];return\\\\\\\"object\\\\\\\"!=typeof s&&(s={}),a.get(r,s).then(function(r){if(!r._attachments||!r._attachments[o])throw i.MISSING_DOC;return a.getAttachment.apply(a,n).then(function(n){l(e,t,n)})})})[\\\\\\\"catch\\\\\\\"](function(n){r(e,t,n)}):r(e,t,{error:\\\\\\\"db not found\\\\\\\"})}function y(e,t,n){var i=\\\\\\\"$\\\\\\\"+e,a=u[i];return a?(delete u[i],void o.resolve().then(function(){return a.destroy.apply(a,n)}).then(function(n){l(e,t,n)})[\\\\\\\"catch\\\\\\\"](function(n){r(e,t,n)})):r(e,t,{error:\\\\\\\"db not found\\\\\\\"})}function _(e,t,n){var i=u[\\\\\\\"$\\\\\\\"+e];return i?void o.resolve().then(function(){var o=i.changes(n[0]);c[t]=o,o.on(\\\\\\\"change\\\\\\\",function(n){d(e,t,n)}).on(\\\\\\\"complete\\\\\\\",function(n){o.removeAllListeners(),delete c[t],l(e,t,n)}).on(\\\\\\\"error\\\\\\\",function(n){o.removeAllListeners(),delete c[t],r(e,t,n)})}):r(e,t,{error:\\\\\\\"db not found\\\\\\\"})}function m(e){var t=c[e];t&&t.cancel()}function g(e,t){return o.resolve().then(function(){e.on(\\\\\\\"error\\\\\\\",function(e){n(t,e)})})}function b(e,n,o){var i=\\\\\\\"$\\\\\\\"+e,a=u[i];if(a)return g(a,e).then(function(){return l(e,n,{ok:!0,exists:!0})});var s=\\\\\\\"string\\\\\\\"==typeof o[0]?o[0]:o[0].name;return s?(a=u[i]=t(o[0]),void g(a,e).then(function(){l(e,n,{ok:!0})})[\\\\\\\"catch\\\\\\\"](function(t){r(e,n,t)})):r(e,n,{error:\\\\\\\"you must provide a database name\\\\\\\"})}function w(e,t,n,o){switch(f(\\\\\\\"onReceiveMessage\\\\\\\",t,e,n,o),t){case\\\\\\\"createDatabase\\\\\\\":return b(e,n,o);case\\\\\\\"id\\\\\\\":return void l(e,n,e);case\\\\\\\"info\\\\\\\":case\\\\\\\"put\\\\\\\":case\\\\\\\"allDocs\\\\\\\":case\\\\\\\"bulkDocs\\\\\\\":case\\\\\\\"post\\\\\\\":case\\\\\\\"get\\\\\\\":case\\\\\\\"remove\\\\\\\":case\\\\\\\"revsDiff\\\\\\\":case\\\\\\\"compact\\\\\\\":case\\\\\\\"viewCleanup\\\\\\\":case\\\\\\\"removeAttachment\\\\\\\":case\\\\\\\"putAttachment\\\\\\\":case\\\\\\\"query\\\\\\\":return h(e,t,n,o);case\\\\\\\"changes\\\\\\\":return p(e,n,o);case\\\\\\\"getAttachment\\\\\\\":return v(e,n,o);case\\\\\\\"liveChanges\\\\\\\":return _(e,n,o);case\\\\\\\"cancelChanges\\\\\\\":return m(n);case\\\\\\\"destroy\\\\\\\":return y(e,n,o);default:return r(e,n,{error:\\\\\\\"unknown API method: \\\\\\\"+t})}}function k(e,t){var n=e.type,r=e.messageId,o=s(e.args);w(t,n,r,o)}e.addEventListener(\\\\\\\"message\\\\\\\",function(e){if(e.data&&e.data.id&&e.data.args&&e.data.type&&e.data.messageId){var t=e.data.id;\\\\\\\"close\\\\\\\"===e.data.type?(f(\\\\\\\"closing worker\\\\\\\",t),delete u[\\\\\\\"$\\\\\\\"+t]):k(e.data,t)}})}var o=e(33),i=e(2),a=e(6),s=a.decodeArgs,u={},c={},f=e(8)(\\\\\\\"pouchdb:worker\\\\\\\");t.exports=r},{2:2,33:33,6:6,8:8}],4:[function(e,t,n){\\\\\\\"use strict\\\\\\\";t.exports=e(25).plugin(e(17)).plugin(e(16)).plugin(e(30)).plugin(e(34))},{16:16,17:17,25:25,30:30,34:34}],5:[function(_dereq_,module,exports){\\\\\\\"use strict\\\\\\\";var log=_dereq_(8)(\\\\\\\"pouchdb:worker\\\\\\\");module.exports=function safeEval(str){log(\\\\\\\"safeEvaling\\\\\\\",str);var target={};return eval(\\\\\\\"target.target = (\\\\\\\"+str+\\\\\\\");\\\\\\\"),log(\\\\\\\"returning\\\\\\\",target.target),target.target}},{8:8}],6:[function(e,t,n){\\\\\\\"use strict\\\\\\\";var r=e(5);n.createError=function(e){var t=e.status||500;return e.name&&e.message&&(\\\\\\\"Error\\\\\\\"!==e.name&&\\\\\\\"TypeError\\\\\\\"!==e.name||(-1!==e.message.indexOf(\\\\\\\"Bad special document member\\\\\\\")?e.name=\\\\\\\"doc_validation\\\\\\\":e.name=\\\\\\\"bad_request\\\\\\\"),e={error:e.name,name:e.name,reason:e.message,message:e.message,status:t}),e},n.decodeArgs=function(e){var t=[\\\\\\\"filter\\\\\\\",\\\\\\\"map\\\\\\\",\\\\\\\"reduce\\\\\\\"];return e.forEach(function(e){\\\\\\\"object\\\\\\\"!=typeof e||null===e||Array.isArray(e)||t.forEach(function(t){t in e&&null!==e[t]?\\\\\\\"func\\\\\\\"===e[t].type&&e[t].func&&(e[t]=r(e[t].func)):delete e[t]})}),e}},{5:5}],7:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return function(){var t=arguments.length;if(t){for(var n=[],r=-1;++r<t;)n[r]=arguments[r];return e.call(this,n)}return e.call(this,[])}}t.exports=r},{}],8:[function(e,t,n){function r(){return\\\\\\\"WebkitAppearance\\\\\\\"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\\\\\\\\/(\\\\\\\\d+)/)&&parseInt(RegExp.$1,10)>=31}function o(){var e=arguments,t=this.useColors;if(e[0]=(t?\\\\\\\"%c\\\\\\\":\\\\\\\"\\\\\\\")+this.namespace+(t?\\\\\\\" %c\\\\\\\":\\\\\\\" \\\\\\\")+e[0]+(t?\\\\\\\"%c \\\\\\\":\\\\\\\" \\\\\\\")+\\\\\\\"+\\\\\\\"+n.humanize(this.diff),!t)return e;var r=\\\\\\\"color: \\\\\\\"+this.color;e=[e[0],r,\\\\\\\"color: inherit\\\\\\\"].concat(Array.prototype.slice.call(e,1));var o=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){\\\\\\\"%%\\\\\\\"!==e&&(o++,\\\\\\\"%c\\\\\\\"===e&&(i=o))}),e.splice(i,0,r),e}function i(){return\\\\\\\"object\\\\\\\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(e){try{null==e?n.storage.removeItem(\\\\\\\"debug\\\\\\\"):n.storage.debug=e}catch(t){}}function s(){var e;try{e=n.storage.debug}catch(t){}return e}function u(){try{return window.localStorage}catch(e){}}n=t.exports=e(9),n.log=i,n.formatArgs=o,n.save=a,n.load=s,n.useColors=r,n.storage=\\\\\\\"undefined\\\\\\\"!=typeof chrome&&\\\\\\\"undefined\\\\\\\"!=typeof chrome.storage?chrome.storage.local:u(),n.colors=[\\\\\\\"lightseagreen\\\\\\\",\\\\\\\"forestgreen\\\\\\\",\\\\\\\"goldenrod\\\\\\\",\\\\\\\"dodgerblue\\\\\\\",\\\\\\\"darkorchid\\\\\\\",\\\\\\\"crimson\\\\\\\"],n.formatters.j=function(e){return JSON.stringify(e)},n.enable(s())},{9:9}],9:[function(e,t,n){function r(){return n.colors[f++%n.colors.length]}function o(e){function t(){}function o(){var e=o,t=+new Date,i=t-(c||t);e.diff=i,e.prev=c,e.curr=t,c=t,null==e.useColors&&(e.useColors=n.useColors()),null==e.color&&e.useColors&&(e.color=r());var a=Array.prototype.slice.call(arguments);a[0]=n.coerce(a[0]),\\\\\\\"string\\\\\\\"!=typeof a[0]&&(a=[\\\\\\\"%o\\\\\\\"].concat(a));var s=0;a[0]=a[0].replace(/%([a-z%])/g,function(t,r){if(\\\\\\\"%%\\\\\\\"===t)return t;s++;var o=n.formatters[r];if(\\\\\\\"function\\\\\\\"==typeof o){var i=a[s];t=o.call(e,i),a.splice(s,1),s--}return t}),\\\\\\\"function\\\\\\\"==typeof n.formatArgs&&(a=n.formatArgs.apply(e,a));var u=o.log||n.log||console.log.bind(console);u.apply(e,a)}t.enabled=!1,o.enabled=!0;var i=n.enabled(e)?o:t;return i.namespace=e,i}function i(e){n.save(e);for(var t=(e||\\\\\\\"\\\\\\\").split(/[\\\\\\\\s,]+/),r=t.length,o=0;r>o;o++)t[o]&&(e=t[o].replace(/\\\\\\\\*/g,\\\\\\\".*?\\\\\\\"),\\\\\\\"-\\\\\\\"===e[0]?n.skips.push(new RegExp(\\\\\\\"^\\\\\\\"+e.substr(1)+\\\\\\\"$\\\\\\\")):n.names.push(new RegExp(\\\\\\\"^\\\\\\\"+e+\\\\\\\"$\\\\\\\")))}function a(){n.enable(\\\\\\\"\\\\\\\")}function s(e){var t,r;for(t=0,r=n.skips.length;r>t;t++)if(n.skips[t].test(e))return!1;for(t=0,r=n.names.length;r>t;t++)if(n.names[t].test(e))return!0;return!1}function u(e){return e instanceof Error?e.stack||e.message:e}n=t.exports=o,n.coerce=u,n.disable=a,n.enable=i,n.enabled=s,n.humanize=e(15),n.names=[],n.skips=[],n.formatters={};var c,f=0},{15:15}],10:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function o(e){return\\\\\\\"function\\\\\\\"==typeof e}function i(e){return\\\\\\\"number\\\\\\\"==typeof e}function a(e){return\\\\\\\"object\\\\\\\"==typeof e&&null!==e}function s(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!i(e)||0>e||isNaN(e))throw TypeError(\\\\\\\"n must be a positive number\\\\\\\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,i,u,c;if(this._events||(this._events={}),\\\\\\\"error\\\\\\\"===e&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;throw TypeError('Uncaught, unspecified \\\\\\\"error\\\\\\\" event.')}if(n=this._events[e],s(n))return!1;if(o(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:for(r=arguments.length,i=new Array(r-1),u=1;r>u;u++)i[u-1]=arguments[u];n.apply(this,i)}else if(a(n)){for(r=arguments.length,i=new Array(r-1),u=1;r>u;u++)i[u-1]=arguments[u];for(c=n.slice(),r=c.length,u=0;r>u;u++)c[u].apply(this,i)}return!0},r.prototype.addListener=function(e,t){var n;if(!o(t))throw TypeError(\\\\\\\"listener must be a function\\\\\\\");if(this._events||(this._events={}),this._events.newListener&&this.emit(\\\\\\\"newListener\\\\\\\",e,o(t.listener)?t.listener:t),this._events[e]?a(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,a(this._events[e])&&!this._events[e].warned){var n;n=s(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error(\\\\\\\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\\\\\\\",this._events[e].length),\\\\\\\"function\\\\\\\"==typeof console.trace&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!o(t))throw TypeError(\\\\\\\"listener must be a function\\\\\\\");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,i,s;if(!o(t))throw TypeError(\\\\\\\"listener must be a function\\\\\\\");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,r=-1,n===t||o(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\\\\\\\"removeListener\\\\\\\",e,t);else if(a(n)){for(s=i;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){r=s;break}if(0>r)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit(\\\\\\\"removeListener\\\\\\\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\\\\\\\"removeListener\\\\\\\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\\\\\\\"removeListener\\\\\\\"),this._events={},this}if(n=this._events[e],o(n))this.removeListener(e,n);else for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?o(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.listenerCount=function(e,t){var n;return n=e._events&&e._events[t]?o(e._events[t])?1:e._events[t].length:0}},{}],11:[function(e,t,n){(function(e){\\\\\\\"use strict\\\\\\\";function n(){f=!0;for(var e,t,n=l.length;n;){for(t=l,l=[],e=-1;++e<n;)t[e]();n=l.length}f=!1}function r(e){1!==l.push(e)||f||o()}var o,i=e.MutationObserver||e.WebKitMutationObserver;if(i){var a=0,s=new i(n),u=e.document.createTextNode(\\\\\\\"\\\\\\\");s.observe(u,{characterData:!0}),o=function(){u.data=a=++a%2}}else if(e.setImmediate||\\\\\\\"undefined\\\\\\\"==typeof e.MessageChannel)o=\\\\\\\"document\\\\\\\"in e&&\\\\\\\"onreadystatechange\\\\\\\"in e.document.createElement(\\\\\\\"script\\\\\\\")?function(){var t=e.document.createElement(\\\\\\\"script\\\\\\\");t.onreadystatechange=function(){n(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(n,0)};else{var c=new e.MessageChannel;c.port1.onmessage=n,o=function(){c.port2.postMessage(0)}}var f,l=[];t.exports=r}).call(this,\\\\\\\"undefined\\\\\\\"!=typeof global?global:\\\\\\\"undefined\\\\\\\"!=typeof self?self:\\\\\\\"undefined\\\\\\\"!=typeof window?window:{})},{}],12:[function(e,t,n){\\\\\\\"function\\\\\\\"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],13:[function(e,t,n){(function(e){e(\\\\\\\"object\\\\\\\"==typeof n?n:this)}).call(this,function(e){var t=Array.prototype.slice,n=Array.prototype.forEach,r=function(e){if(\\\\\\\"object\\\\\\\"!=typeof e)throw e+\\\\\\\" is not an object\\\\\\\";var o=t.call(arguments,1);return n.call(o,function(t){if(t)for(var n in t)\\\\\\\"object\\\\\\\"==typeof t[n]&&e[n]?r.call(e,e[n],t[n]):e[n]=t[n]}),e};e.extend=r})},{}],14:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(){}function o(e){if(\\\\\\\"function\\\\\\\"!=typeof e)throw new TypeError(\\\\\\\"resolver must be a function\\\\\\\");this.state=m,this.queue=[],this.outcome=void 0,e!==r&&u(this,e)}function i(e,t,n){this.promise=e,\\\\\\\"function\\\\\\\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\\\\\\\"function\\\\\\\"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function a(e,t,n){p(function(){var r;try{r=t(n)}catch(o){return v.reject(e,o)}r===e?v.reject(e,new TypeError(\\\\\\\"Cannot resolve promise with itself\\\\\\\")):v.resolve(e,r)})}function s(e){var t=e&&e.then;return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"function\\\\\\\"==typeof t?function(){t.apply(e,arguments)}:void 0}function u(e,t){function n(t){i||(i=!0,v.reject(e,t))}function r(t){i||(i=!0,v.resolve(e,t))}function o(){t(r,n)}var i=!1,a=c(o);\\\\\\\"error\\\\\\\"===a.status&&n(a.value)}function c(e,t){var n={};try{n.value=e(t),n.status=\\\\\\\"success\\\\\\\"}catch(r){n.status=\\\\\\\"error\\\\\\\",n.value=r}return n}function f(e){return e instanceof this?e:v.resolve(new this(r),e)}function l(e){var t=new this(r);return v.reject(t,e)}function d(e){function t(e,t){function r(e){a[t]=e,++s!==o||i||(i=!0,v.resolve(c,a))}n.resolve(e).then(r,function(e){i||(i=!0,v.reject(c,e))})}var n=this;if(\\\\\\\"[object Array]\\\\\\\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\\\\\\\"must be an array\\\\\\\"));var o=e.length,i=!1;if(!o)return this.resolve([]);for(var a=new Array(o),s=0,u=-1,c=new this(r);++u<o;)t(e[u],u);return c}function h(e){function t(e){n.resolve(e).then(function(e){i||(i=!0,v.resolve(s,e))},function(e){i||(i=!0,v.reject(s,e))})}var n=this;if(\\\\\\\"[object Array]\\\\\\\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\\\\\\\"must be an array\\\\\\\"));var o=e.length,i=!1;if(!o)return this.resolve([]);for(var a=-1,s=new this(r);++a<o;)t(e[a]);return s}var p=e(11),v={},y=[\\\\\\\"REJECTED\\\\\\\"],_=[\\\\\\\"FULFILLED\\\\\\\"],m=[\\\\\\\"PENDING\\\\\\\"];t.exports=o,o.prototype[\\\\\\\"catch\\\\\\\"]=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\\\\\\\"function\\\\\\\"!=typeof e&&this.state===_||\\\\\\\"function\\\\\\\"!=typeof t&&this.state===y)return this;var n=new this.constructor(r);if(this.state!==m){var o=this.state===_?e:t;a(n,o,this.outcome)}else this.queue.push(new i(n,e,t));return n},i.prototype.callFulfilled=function(e){v.resolve(this.promise,e)},i.prototype.otherCallFulfilled=function(e){a(this.promise,this.onFulfilled,e)},i.prototype.callRejected=function(e){v.reject(this.promise,e)},i.prototype.otherCallRejected=function(e){a(this.promise,this.onRejected,e)},v.resolve=function(e,t){var n=c(s,t);if(\\\\\\\"error\\\\\\\"===n.status)return v.reject(e,n.value);var r=n.value;if(r)u(e,r);else{e.state=_,e.outcome=t;for(var o=-1,i=e.queue.length;++o<i;)e.queue[o].callFulfilled(t)}return e},v.reject=function(e,t){e.state=y,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},o.resolve=f,o.reject=l,o.all=d,o.race=h},{11:11}],15:[function(e,t,n){function r(e){if(e=\\\\\\\"\\\\\\\"+e,!(e.length>1e4)){var t=/^((?:\\\\\\\\d+)?\\\\\\\\.?\\\\\\\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||\\\\\\\"ms\\\\\\\").toLowerCase();switch(r){case\\\\\\\"years\\\\\\\":case\\\\\\\"year\\\\\\\":case\\\\\\\"yrs\\\\\\\":case\\\\\\\"yr\\\\\\\":case\\\\\\\"y\\\\\\\":return n*l;case\\\\\\\"days\\\\\\\":case\\\\\\\"day\\\\\\\":case\\\\\\\"d\\\\\\\":return n*f;case\\\\\\\"hours\\\\\\\":case\\\\\\\"hour\\\\\\\":case\\\\\\\"hrs\\\\\\\":case\\\\\\\"hr\\\\\\\":case\\\\\\\"h\\\\\\\":return n*c;case\\\\\\\"minutes\\\\\\\":case\\\\\\\"minute\\\\\\\":case\\\\\\\"mins\\\\\\\":case\\\\\\\"min\\\\\\\":case\\\\\\\"m\\\\\\\":return n*u;case\\\\\\\"seconds\\\\\\\":case\\\\\\\"second\\\\\\\":case\\\\\\\"secs\\\\\\\":case\\\\\\\"sec\\\\\\\":case\\\\\\\"s\\\\\\\":return n*s;case\\\\\\\"milliseconds\\\\\\\":case\\\\\\\"millisecond\\\\\\\":case\\\\\\\"msecs\\\\\\\":case\\\\\\\"msec\\\\\\\":case\\\\\\\"ms\\\\\\\":return n}}}}function o(e){return e>=f?Math.round(e/f)+\\\\\\\"d\\\\\\\":e>=c?Math.round(e/c)+\\\\\\\"h\\\\\\\":e>=u?Math.round(e/u)+\\\\\\\"m\\\\\\\":e>=s?Math.round(e/s)+\\\\\\\"s\\\\\\\":e+\\\\\\\"ms\\\\\\\"}function i(e){return a(e,f,\\\\\\\"day\\\\\\\")||a(e,c,\\\\\\\"hour\\\\\\\")||a(e,u,\\\\\\\"minute\\\\\\\")||a(e,s,\\\\\\\"second\\\\\\\")||e+\\\\\\\" ms\\\\\\\"}function a(e,t,n){return t>e?void 0:1.5*t>e?Math.floor(e/t)+\\\\\\\" \\\\\\\"+n:Math.ceil(e/t)+\\\\\\\" \\\\\\\"+n+\\\\\\\"s\\\\\\\"}var s=1e3,u=60*s,c=60*u,f=24*c,l=365.25*f;t.exports=function(e,t){return t=t||{},\\\\\\\"string\\\\\\\"==typeof e?r(e):t[\\\\\\\"long\\\\\\\"]?i(e):o(e)}},{}],16:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){var t=e.doc&&e.doc._attachments;t&&Object.keys(t).forEach(function(e){var n=t[e];n.data=m.base64StringToBlobOrBuffer(n.data,n.content_type)})}function i(e){return/^_design/.test(e)?\\\\\\\"_design/\\\\\\\"+encodeURIComponent(e.slice(8)):/^_local/.test(e)?\\\\\\\"_local/\\\\\\\"+encodeURIComponent(e.slice(7)):encodeURIComponent(e)}function a(e){return e._attachments&&Object.keys(e._attachments)?p.all(Object.keys(e._attachments).map(function(t){var n=e._attachments[t];return n.data&&\\\\\\\"string\\\\\\\"!=typeof n.data?new p(function(e){m.blobOrBufferToBase64(n.data,e)}).then(function(e){n.data=e}):void 0})):p.resolve()}function s(e){var t=_.parseUri(e);(t.user||t.password)&&(t.auth={username:t.user,password:t.password});var n=t.path.replace(/(^\\\\\\\\/|\\\\\\\\/$)/g,\\\\\\\"\\\\\\\").split(\\\\\\\"/\\\\\\\");return t.db=n.pop(),-1===t.db.indexOf(\\\\\\\"%\\\\\\\")&&(t.db=encodeURIComponent(t.db)),t.path=n.join(\\\\\\\"/\\\\\\\"),t}function u(e,t){return c(e,e.db+\\\\\\\"/\\\\\\\"+t)}function c(e,t){var n=e.path?\\\\\\\"/\\\\\\\":\\\\\\\"\\\\\\\";return e.protocol+\\\\\\\"://\\\\\\\"+e.host+(e.port?\\\\\\\":\\\\\\\"+e.port:\\\\\\\"\\\\\\\")+\\\\\\\"/\\\\\\\"+e.path+n+t}function f(e){return\\\\\\\"?\\\\\\\"+Object.keys(e).map(function(t){return t+\\\\\\\"=\\\\\\\"+encodeURIComponent(e[t])}).join(\\\\\\\"&\\\\\\\")}function l(e,t){function n(e,t,n){var r=e.ajax||{},o=h.extend(_.clone(x),r,t);return O(o.method+\\\\\\\" \\\\\\\"+o.url),A._ajax(o,n)}function r(e,t){return new p(function(r,o){n(e,t,function(e,t){return e?o(e):void r(t)})})}function l(e,t){return _.adapterFun(e,y(function(e){d().then(function(){return t.apply(this,e)})[\\\\\\\"catch\\\\\\\"](function(t){var n=e.pop();n(t)})}))}function d(){if(e.skipSetup||e.skip_setup)return p.resolve();if(L)return L;var t={method:\\\\\\\"GET\\\\\\\",url:j};return L=r({},t)[\\\\\\\"catch\\\\\\\"](function(e){return e&&e.status&&404===e.status?(_.explainError(404,\\\\\\\"PouchDB is just detecting if the remote exists.\\\\\\\"),r({},{method:\\\\\\\"PUT\\\\\\\",url:j})):p.reject(e)})[\\\\\\\"catch\\\\\\\"](function(e){return e&&e.status&&412===e.status?!0:p.reject(e)}),L[\\\\\\\"catch\\\\\\\"](function(){L=null}),L}function b(e){return e.split(\\\\\\\"/\\\\\\\").map(encodeURIComponent).join(\\\\\\\"/\\\\\\\")}var A=this,I=s;e.getHost&&(I=e.getHost);var D=I(e.name,e),j=u(D,\\\\\\\"\\\\\\\");e=_.clone(e);var x=e.ajax||{};if(A.getUrl=function(){return j},A.getHeaders=function(){return x.headers||{}},e.auth||D.auth){var C=e.auth||D.auth,q=C.username+\\\\\\\":\\\\\\\"+C.password,R=m.btoa(unescape(encodeURIComponent(q)));x.headers=x.headers||{},x.headers.Authorization=\\\\\\\"Basic \\\\\\\"+R}A._ajax=v;var L;setTimeout(function(){t(null,A)}),A.type=function(){return\\\\\\\"http\\\\\\\"},A.id=l(\\\\\\\"id\\\\\\\",function(e){n({},{method:\\\\\\\"GET\\\\\\\",url:c(D,\\\\\\\"\\\\\\\")},function(t,n){var r=n&&n.uuid?n.uuid+D.db:u(D,\\\\\\\"\\\\\\\");e(null,r)})}),A.request=l(\\\\\\\"request\\\\\\\",function(e,t){e.url=u(D,e.url),n({},e,t)}),A.compact=l(\\\\\\\"compact\\\\\\\",function(e,t){\\\\\\\"function\\\\\\\"==typeof e&&(t=e,e={}),e=_.clone(e),n(e,{url:u(D,\\\\\\\"_compact\\\\\\\"),method:\\\\\\\"POST\\\\\\\"},function(){function n(){A.info(function(r,o){o&&!o.compact_running?t(null,{ok:!0}):setTimeout(n,e.interval||200)})}n()})}),A.bulkGet=_.adapterFun(\\\\\\\"bulkGet\\\\\\\",function(e,t){function r(t){var r={};e.revs&&(r.revs=!0),e.attachments&&(r.attachments=!0),n({},{url:u(D,\\\\\\\"_bulk_get\\\\\\\"+f(r)),method:\\\\\\\"POST\\\\\\\",body:{docs:e.docs}},t)}function o(){function n(e){return function(n,r){s[e]=r.results,++a===o&&t(null,{results:_.flatten(s)})}}for(var r=k,o=Math.ceil(e.docs.length/r),a=0,s=new Array(o),u=0;o>u;u++){var c=_.pick(e,[\\\\\\\"revs\\\\\\\",\\\\\\\"attachments\\\\\\\"]);c.ajax=x,c.docs=e.docs.slice(u*r,Math.min(e.docs.length,(u+1)*r)),_.bulkGetShim(i,c,n(u))}}var i=this,a=c(D,\\\\\\\"\\\\\\\"),s=E[a];\\\\\\\"boolean\\\\\\\"!=typeof s?r(function(e,n){if(e){var r=Math.floor(e.status/100);4===r||5===r?(E[a]=!1,_.explainError(e.status,\\\\\\\"PouchDB is just detecting if the remote supports the _bulk_get API.\\\\\\\"),o()):t(e)}else E[a]=!0,t(null,n)}):s?r(t):o()}),A._info=function(e){d().then(function(){n({},{method:\\\\\\\"GET\\\\\\\",url:u(D,\\\\\\\"\\\\\\\")},function(t,n){return t?e(t):(n.host=u(D,\\\\\\\"\\\\\\\"),void e(null,n))})})[\\\\\\\"catch\\\\\\\"](e)},A.get=l(\\\\\\\"get\\\\\\\",function(e,t,n){function o(e){var n=e._attachments,o=n&&Object.keys(n);return n&&o.length?p.all(o.map(function(o){var a=n[o],s=i(e._id)+\\\\\\\"/\\\\\\\"+b(o)+\\\\\\\"?rev=\\\\\\\"+e._rev;return r(t,{method:\\\\\\\"GET\\\\\\\",url:u(D,s),binary:!0}).then(function(e){return t.binary?e:new p(function(t){m.blobOrBufferToBase64(e,t)})}).then(function(e){delete a.stub,delete a.length,a.data=e})})):void 0}function a(e){return Array.isArray(e)?p.all(e.map(function(e){return e.ok?o(e.ok):void 0})):o(e)}\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={}),t=_.clone(t);var s={};t.revs&&(s.revs=!0),t.revs_info&&(s.revs_info=!0),t.open_revs&&(\\\\\\\"all\\\\\\\"!==t.open_revs&&(t.open_revs=JSON.stringify(t.open_revs)),s.open_revs=t.open_revs),t.rev&&(s.rev=t.rev),t.conflicts&&(s.conflicts=t.conflicts),e=i(e);var c={method:\\\\\\\"GET\\\\\\\",url:u(D,e+f(s))};r(t,c).then(function(e){return p.resolve().then(function(){return t.attachments?a(e):void 0}).then(function(){n(null,e)})})[\\\\\\\"catch\\\\\\\"](n)}),A.remove=l(\\\\\\\"remove\\\\\\\",function(e,t,r,o){var a;\\\\\\\"string\\\\\\\"==typeof t?(a={_id:e,_rev:t},\\\\\\\"function\\\\\\\"==typeof r&&(o=r,r={})):(a=e,\\\\\\\"function\\\\\\\"==typeof t?(o=t,r={}):(o=r,r=t));var s=a._rev||r.rev;n(r,{method:\\\\\\\"DELETE\\\\\\\",url:u(D,i(a._id))+\\\\\\\"?rev=\\\\\\\"+s},o)}),A.getAttachment=l(\\\\\\\"getAttachment\\\\\\\",function(e,t,r,o){\\\\\\\"function\\\\\\\"==typeof r&&(o=r,r={});var a=r.rev?\\\\\\\"?rev=\\\\\\\"+r.rev:\\\\\\\"\\\\\\\",s=u(D,i(e))+\\\\\\\"/\\\\\\\"+b(t)+a;n(r,{method:\\\\\\\"GET\\\\\\\",url:s,binary:!0},o)}),A.removeAttachment=l(\\\\\\\"removeAttachment\\\\\\\",function(e,t,r,o){var a=u(D,i(e)+\\\\\\\"/\\\\\\\"+b(t))+\\\\\\\"?rev=\\\\\\\"+r;n({},{method:\\\\\\\"DELETE\\\\\\\",url:a},o)}),A.putAttachment=l(\\\\\\\"putAttachment\\\\\\\",function(e,t,r,o,a,s){\\\\\\\"function\\\\\\\"==typeof a&&(s=a,a=o,o=r,r=null);var c=i(e)+\\\\\\\"/\\\\\\\"+b(t),f=u(D,c);if(r&&(f+=\\\\\\\"?rev=\\\\\\\"+r),\\\\\\\"string\\\\\\\"==typeof o){var l;try{l=m.atob(o)}catch(d){return s(g.createError(g.BAD_ARG,\\\\\\\"Attachment is not a valid base64 string\\\\\\\"))}o=l?m.binaryStringToBlobOrBuffer(l,a):\\\\\\\"\\\\\\\"}var h={headers:{\\\\\\\"Content-Type\\\\\\\":a},method:\\\\\\\"PUT\\\\\\\",url:f,processData:!1,body:o,timeout:x.timeout||6e4};n({},h,s)}),A._bulkDocs=function(e,t,r){e.new_edits=t.new_edits,d().then(function(){return p.all(e.docs.map(a))}).then(function(){n(t,{method:\\\\\\\"POST\\\\\\\",url:u(D,\\\\\\\"_bulk_docs\\\\\\\"),body:e},function(e,t){return e?r(e):(t.forEach(function(e){e.ok=!0}),void r(null,t))})})[\\\\\\\"catch\\\\\\\"](r)},A.allDocs=l(\\\\\\\"allDocs\\\\\\\",function(e,t){\\\\\\\"function\\\\\\\"==typeof e&&(t=e,e={}),e=_.clone(e);var n,i={},a=\\\\\\\"GET\\\\\\\";e.conflicts&&(i.conflicts=!0),e.descending&&(i.descending=!0),e.include_docs&&(i.include_docs=!0),e.attachments&&(i.attachments=!0),e.key&&(i.key=JSON.stringify(e.key)),e.start_key&&(e.startkey=e.start_key),e.startkey&&(i.startkey=JSON.stringify(e.startkey)),e.end_key&&(e.endkey=e.end_key),e.endkey&&(i.endkey=JSON.stringify(e.endkey)),\\\\\\\"undefined\\\\\\\"!=typeof e.inclusive_end&&(i.inclusive_end=!!e.inclusive_end),\\\\\\\"undefined\\\\\\\"!=typeof e.limit&&(i.limit=e.limit),\\\\\\\"undefined\\\\\\\"!=typeof e.skip&&(i.skip=e.skip);var s=f(i);if(\\\\\\\"undefined\\\\\\\"!=typeof e.keys){var c=\\\\\\\"keys=\\\\\\\"+encodeURIComponent(JSON.stringify(e.keys));c.length+s.length+1<=S?s+=\\\\\\\"&\\\\\\\"+c:(a=\\\\\\\"POST\\\\\\\",n={keys:e.keys})}r(e,{method:a,url:u(D,\\\\\\\"_all_docs\\\\\\\"+s),body:n}).then(function(n){e.include_docs&&e.attachments&&e.binary&&n.rows.forEach(o),t(null,n)})[\\\\\\\"catch\\\\\\\"](t)}),A._changes=function(e){var t=\\\\\\\"batch_size\\\\\\\"in e?e.batch_size:w;e=_.clone(e),e.timeout=\\\\\\\"timeout\\\\\\\"in e?e.timeout:\\\\\\\"timeout\\\\\\\"in x?x.timeout:3e4;var r,i=e.timeout?{timeout:e.timeout-5e3}:{},a=\\\\\\\"undefined\\\\\\\"!=typeof e.limit?e.limit:!1;r=\\\\\\\"return_docs\\\\\\\"in e?e.return_docs:\\\\\\\"returnDocs\\\\\\\"in e?e.returnDocs:!0;var s=a;if(e.style&&(i.style=e.style),(e.include_docs||e.filter&&\\\\\\\"function\\\\\\\"==typeof e.filter)&&(i.include_docs=!0),e.attachments&&(i.attachments=!0),e.continuous&&(i.feed=\\\\\\\"longpoll\\\\\\\"),e.conflicts&&(i.conflicts=!0),e.descending&&(i.descending=!0),\\\\\\\"heartbeat\\\\\\\"in e?e.heartbeat&&(i.heartbeat=e.heartbeat):i.heartbeat=1e4,e.filter&&\\\\\\\"string\\\\\\\"==typeof e.filter&&(i.filter=e.filter),e.view&&\\\\\\\"string\\\\\\\"==typeof e.view&&(i.filter=\\\\\\\"_view\\\\\\\",i.view=e.view),e.query_params&&\\\\\\\"object\\\\\\\"==typeof e.query_params)for(var c in e.query_params)e.query_params.hasOwnProperty(c)&&(i[c]=e.query_params[c]);var l,h=\\\\\\\"GET\\\\\\\";if(e.doc_ids){i.filter=\\\\\\\"_doc_ids\\\\\\\";var p=JSON.stringify(e.doc_ids);p.length<S?i.doc_ids=p:(h=\\\\\\\"POST\\\\\\\",l={doc_ids:e.doc_ids})}var v,y,m=function(r,o){if(!e.aborted){i.since=r,\\\\\\\"object\\\\\\\"==typeof i.since&&(i.since=JSON.stringify(i.since)),e.descending?a&&(i.limit=s):i.limit=!a||s>t?t:s;var c={method:h,url:u(D,\\\\\\\"_changes\\\\\\\"+f(i)),timeout:e.timeout,body:l};y=r,e.aborted||d().then(function(){v=n(e,c,o)})[\\\\\\\"catch\\\\\\\"](o)}},g={results:[]},b=function(n,i){if(!e.aborted){var u=0;if(i&&i.results){u=i.results.length,g.last_seq=i.last_seq;var c={};c.query=e.query_params,i.results=i.results.filter(function(t){s--;var n=_.filterChange(e)(t);return n&&(e.include_docs&&e.attachments&&e.binary&&o(t),r&&g.results.push(t),e.onChange(t)),n})}else if(n)return e.aborted=!0,void e.complete(n);i&&i.last_seq&&(y=i.last_seq);var f=a&&0>=s||i&&t>u||e.descending;(!e.continuous||a&&0>=s)&&f?e.complete(null,g):setTimeout(function(){m(y,b)},0)}};return m(e.since||0,b),{cancel:function(){e.aborted=!0,v&&v.abort()}}},A.revsDiff=l(\\\\\\\"revsDiff\\\\\\\",function(e,t,r){\\\\\\\"function\\\\\\\"==typeof t&&(r=t,t={}),n(t,{method:\\\\\\\"POST\\\\\\\",url:u(D,\\\\\\\"_revs_diff\\\\\\\"),body:e},r)}),A._close=function(e){e()},A._destroy=function(e,t){n(e,{url:u(D,\\\\\\\"\\\\\\\"),method:\\\\\\\"DELETE\\\\\\\"},function(e,n){return e&&e.status&&404!==e.status?t(e):void t(null,n)})}}function d(e){e.adapter(\\\\\\\"http\\\\\\\",l,!1),e.adapter(\\\\\\\"https\\\\\\\",l,!1)}var h=e(13),p=r(e(33)),v=r(e(19)),y=r(e(7)),_=e(35),m=e(20),g=e(26),b=r(e(8)),w=25,k=50,E={},S=1800,O=b(\\\\\\\"pouchdb:http\\\\\\\");l.valid=function(){return!0},t.exports=d},{13:13,19:19,20:20,26:26,33:33,35:35,7:7,8:8}],17:[function(e,t,n){(function(n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e,t,n,r){try{e.apply(t,n)}catch(o){r.emit(\\\\\\\"error\\\\\\\",o)}}function i(e){if(!G.running&&G.queue.length){G.running=!0;var t=G.queue.shift();t.action(function(r,a){o(t.callback,this,[r,a],e),G.running=!1,n.nextTick(function(){i(e)})})}}function a(e){return function(t){var n=\\\\\\\"unknown_error\\\\\\\";t.target&&t.target.error&&(n=t.target.error.name||t.target.error.message),e(D.createError(D.IDB_ERROR,n,t.type))}}function s(e,t,n){return{data:q.safeJsonStringify(e),winningRev:t,deletedOrLocal:n?\\\\\\\"1\\\\\\\":\\\\\\\"0\\\\\\\",seq:e.seq,id:e.id}}function u(e){if(!e)return null;var t=q.safeJsonParse(e.data);return t.winningRev=e.winningRev,t.deleted=\\\\\\\"1\\\\\\\"===e.deletedOrLocal,t.seq=e.seq,t}function c(e){if(!e)return e;var t=e._doc_id_rev.lastIndexOf(\\\\\\\":\\\\\\\");return e._id=e._doc_id_rev.substring(0,t-1),e._rev=e._doc_id_rev.substring(t+1),delete e._doc_id_rev,e}function f(e,t,n,r){n?r(e?\\\\\\\"string\\\\\\\"!=typeof e?e:R.base64StringToBlobOrBuffer(e,t):R.blob([\\\\\\\"\\\\\\\"],{type:t})):e?\\\\\\\"string\\\\\\\"!=typeof e?R.readAsBinaryString(e,function(e){r(R.btoa(e))}):r(e):r(\\\\\\\"\\\\\\\")}function l(e,t,n,r){function o(){++s===a.length&&r&&r()}function i(e,t){var r=e._attachments[t],i=r.digest,a=n.objectStore(N).get(i);a.onsuccess=function(e){r.body=e.target.result.body,o()}}var a=Object.keys(e._attachments||{});if(!a.length)return r&&r();var s=0;a.forEach(function(n){t.attachments&&t.include_docs?i(e,n):(e._attachments[n].stub=!0,o())})}function d(e,t){return C.all(e.map(function(e){if(e.doc&&e.doc._attachments){var n=Object.keys(e.doc._attachments);return C.all(n.map(function(n){var r=e.doc._attachments[n];if(\\\\\\\"body\\\\\\\"in r){var o=r.body,i=r.content_type;return new C(function(a){f(o,i,t,function(t){e.doc._attachments[n]=x.extend(O.pick(r,[\\\\\\\"digest\\\\\\\",\\\\\\\"content_type\\\\\\\"]),{data:t}),a()})})}}))}}))}function h(e,t,n){function r(){c--,c||o()}function o(){i.length&&i.forEach(function(e){var t=u.index(\\\\\\\"digestSeq\\\\\\\").count(IDBKeyRange.bound(e+\\\\\\\"::\\\\\\\",e+\\\\\\\"::￿\\\\\\\",!1,!1));t.onsuccess=function(t){var n=t.target.result;n||s[\\\\\\\"delete\\\\\\\"](e)}})}var i=[],a=n.objectStore(B),s=n.objectStore(N),u=n.objectStore(M),c=e.length;e.forEach(function(e){var n=a.index(\\\\\\\"_doc_id_rev\\\\\\\"),o=t+\\\\\\\"::\\\\\\\"+e;n.getKey(o).onsuccess=function(e){var t=e.target.result;if(\\\\\\\"number\\\\\\\"!=typeof t)return r();a[\\\\\\\"delete\\\\\\\"](t);var n=u.index(\\\\\\\"seq\\\\\\\").openCursor(IDBKeyRange.only(t));n.onsuccess=function(e){var t=e.target.result;if(t){var n=t.value.digestSeq.split(\\\\\\\"::\\\\\\\")[0];i.push(n),u[\\\\\\\"delete\\\\\\\"](t.primaryKey),t[\\\\\\\"continue\\\\\\\"]()}else r()}}})}function p(e,t,n){try{return{txn:e.transaction(t,n)}}catch(r){return{error:r}}}function v(e,t,n,r,o,i,c){function f(){var e=[T,B,N,P,M],t=p(o,e,\\\\\\\"readwrite\\\\\\\");return t.error?c(t.error):(E=t.txn,E.onabort=a(c),E.ontimeout=a(c),E.oncomplete=v,S=E.objectStore(T),O=E.objectStore(B),x=E.objectStore(N),C=E.objectStore(M),void _(function(e){return e?(J=!0,c(e)):void d()}))}function l(){j.processDocs(e.revs_limit,R,r,K,E,V,m,n);\\\\n}function d(){function e(){++n===R.length&&l()}function t(t){var n=u(t.target.result);n&&K.set(n.id,n),e()}if(R.length)for(var n=0,r=0,o=R.length;o>r;r++){var i=R[r];if(i._id&&j.isLocalId(i._id))e();else{var a=S.get(i.metadata.id);a.onsuccess=t}}}function v(){J||(i.notify(r._meta.name),r._meta.docCount+=L,c(null,V))}function y(e,t){var n=x.get(e);n.onsuccess=function(n){if(n.target.result)t();else{var r=D.createError(D.MISSING_STUB,\\\\\\\"unknown stub attachment with digest \\\\\\\"+e);r.status=412,t(r)}}}function _(e){function t(){++o===n.length&&e(r)}var n=[];if(R.forEach(function(e){e.data&&e.data._attachments&&Object.keys(e.data._attachments).forEach(function(t){var r=e.data._attachments[t];r.stub&&n.push(r.digest)})}),!n.length)return e();var r,o=0;n.forEach(function(e){y(e,function(e){e&&!r&&(r=e),t()})})}function m(e,t,n,r,o,i,a,s){L+=i,e.metadata.winningRev=t,e.metadata.deleted=n;var u=e.data;u._id=e.metadata.id,u._rev=e.metadata.rev,r&&(u._deleted=!0);var c=u._attachments&&Object.keys(u._attachments).length;return c?b(e,t,n,o,a,s):void g(e,t,n,o,a,s)}function g(e,t,n,o,i,a){function u(i){var a=e.stemmedRevs||[];o&&r.auto_compaction&&(a=a.concat(A.compactTree(e.metadata))),a&&a.length&&h(a,e.metadata.id,E),d.seq=i.target.result,delete d.rev;var u=s(d,t,n),c=S.put(u);c.onsuccess=f}function c(e){e.preventDefault(),e.stopPropagation();var t=O.index(\\\\\\\"_doc_id_rev\\\\\\\"),n=t.getKey(l._doc_id_rev);n.onsuccess=function(e){var t=O.put(l,e.target.result);t.onsuccess=u}}function f(){V[i]={ok:!0,id:d.id,rev:t},K.set(e.metadata.id,e.metadata),w(e,d.seq,a)}var l=e.data,d=e.metadata;l._doc_id_rev=d.id+\\\\\\\"::\\\\\\\"+d.rev,delete l._id,delete l._rev;var p=O.put(l);p.onsuccess=u,p.onerror=c}function b(e,t,n,r,o,i){function a(){c===f.length&&g(e,t,n,r,o,i)}function s(){c++,a()}var u=e.data,c=0,f=Object.keys(u._attachments);f.forEach(function(n){var r=e.data._attachments[n];if(r.stub)c++,a();else{var o=r.data;delete r.data,r.revpos=parseInt(t,10);var i=r.digest;k(i,o,s)}})}function w(e,t,n){function r(){++i===a.length&&n()}function o(n){var o=e.data._attachments[n].digest,i=C.put({seq:t,digestSeq:o+\\\\\\\"::\\\\\\\"+t});i.onsuccess=r,i.onerror=function(e){e.preventDefault(),e.stopPropagation(),r()}}var i=0,a=Object.keys(e.data._attachments||{});if(!a.length)return n();for(var s=0;s<a.length;s++)o(a[s])}function k(e,t,n){var r=x.count(e);r.onsuccess=function(r){var o=r.target.result;if(o)return n();var i={digest:e,body:t},a=x.put(i);a.onsuccess=n}}for(var E,S,O,x,C,q,R=t.docs,L=0,F=0,U=R.length;U>F;F++){var G=R[F];G._id&&j.isLocalId(G._id)||(G=R[F]=j.parseDoc(G,n.new_edits),G.error&&!q&&(q=G))}if(q)return c(q);var V=new Array(R.length),K=new I.Map,J=!1,z=r._meta.blobSupport?\\\\\\\"blob\\\\\\\":\\\\\\\"base64\\\\\\\";j.preprocessAttachments(R,z,function(e){return e?c(e):void f()})}function y(e,t,n,r,o){try{if(e&&t)return o?IDBKeyRange.bound(t,e,!n,!1):IDBKeyRange.bound(e,t,!1,!n);if(e)return o?IDBKeyRange.upperBound(e):IDBKeyRange.lowerBound(e);if(t)return o?IDBKeyRange.lowerBound(t,!n):IDBKeyRange.upperBound(t,!n);if(r)return IDBKeyRange.only(r)}catch(i){return{error:i}}return null}function _(e,t,n,r){return\\\\\\\"DataError\\\\\\\"===n.name&&0===n.code?r(null,{total_rows:e._meta.docCount,offset:t.skip,rows:[]}):void r(D.createError(D.IDB_ERROR,n.name,n.message))}function m(e,t,n,r){function o(e,r){function o(t,n,r){var o=t.id+\\\\\\\"::\\\\\\\"+r;C.get(o).onsuccess=function(r){n.doc=c(r.target.result),e.conflicts&&(n.doc._conflicts=A.collectConflicts(t)),l(n.doc,e,I)}}function i(t,n,r){var i={id:r.id,key:r.id,value:{rev:n}},a=r.deleted;if(\\\\\\\"ok\\\\\\\"===e.deleted)q.push(i),a?(i.value.deleted=!0,i.doc=null):e.include_docs&&o(r,i,n);else if(!a&&g--<=0&&(q.push(i),e.include_docs&&o(r,i,n),0===--b))return;t[\\\\\\\"continue\\\\\\\"]()}function a(e){R=t._meta.docCount;var n=e.target.result;if(n){var r=u(n.value),o=r.winningRev;i(n,o,r)}}function s(){r(null,{total_rows:R,offset:e.skip,rows:q})}function f(){e.attachments?d(q,e.binary).then(s):s()}var h=\\\\\\\"startkey\\\\\\\"in e?e.startkey:!1,v=\\\\\\\"endkey\\\\\\\"in e?e.endkey:!1,m=\\\\\\\"key\\\\\\\"in e?e.key:!1,g=e.skip||0,b=\\\\\\\"number\\\\\\\"==typeof e.limit?e.limit:-1,w=e.inclusive_end!==!1,k=\\\\\\\"descending\\\\\\\"in e&&e.descending?\\\\\\\"prev\\\\\\\":null,E=y(h,v,w,m,k);if(E&&E.error)return _(t,e,E.error,r);var S=[T,B];e.attachments&&S.push(N);var O=p(n,S,\\\\\\\"readonly\\\\\\\");if(O.error)return r(O.error);var I=O.txn,D=I.objectStore(T),j=I.objectStore(B),x=k?D.openCursor(E,k):D.openCursor(E),C=j.index(\\\\\\\"_doc_id_rev\\\\\\\"),q=[],R=0;I.oncomplete=f,x.onsuccess=a}function i(e,n){return 0===e.limit?n(null,{total_rows:t._meta.docCount,offset:e.skip,rows:[]}):void o(e,n)}i(e,r)}function g(e){return new C(function(t){var n=R.blob([\\\\\\\"\\\\\\\"]);e.objectStore(U).put(n,\\\\\\\"key\\\\\\\"),e.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},e.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\\\\\\\\/(\\\\\\\\d+)/),n=navigator.userAgent.match(/Edge\\\\\\\\//);t(n||!e||parseInt(e[1],10)>=43)}})[\\\\\\\"catch\\\\\\\"](function(){return!1})}function b(e,t){var n=this;G.queue.push({action:function(t){w(n,e,t)},callback:t}),i(n.constructor)}function w(e,t,r){function o(e){var t=e.createObjectStore(T,{keyPath:\\\\\\\"id\\\\\\\"});e.createObjectStore(B,{autoIncrement:!0}).createIndex(\\\\\\\"_doc_id_rev\\\\\\\",\\\\\\\"_doc_id_rev\\\\\\\",{unique:!0}),e.createObjectStore(N,{keyPath:\\\\\\\"digest\\\\\\\"}),e.createObjectStore(F,{keyPath:\\\\\\\"id\\\\\\\",autoIncrement:!1}),e.createObjectStore(U),t.createIndex(\\\\\\\"deletedOrLocal\\\\\\\",\\\\\\\"deletedOrLocal\\\\\\\",{unique:!1}),e.createObjectStore(P,{keyPath:\\\\\\\"_id\\\\\\\"});var n=e.createObjectStore(M,{autoIncrement:!0});n.createIndex(\\\\\\\"seq\\\\\\\",\\\\\\\"seq\\\\\\\"),n.createIndex(\\\\\\\"digestSeq\\\\\\\",\\\\\\\"digestSeq\\\\\\\",{unique:!0})}function i(e,t){var n=e.objectStore(T);n.createIndex(\\\\\\\"deletedOrLocal\\\\\\\",\\\\\\\"deletedOrLocal\\\\\\\",{unique:!1}),n.openCursor().onsuccess=function(e){var r=e.target.result;if(r){var o=r.value,i=A.isDeleted(o);o.deletedOrLocal=i?\\\\\\\"1\\\\\\\":\\\\\\\"0\\\\\\\",n.put(o),r[\\\\\\\"continue\\\\\\\"]()}else t()}}function y(e){e.createObjectStore(P,{keyPath:\\\\\\\"_id\\\\\\\"}).createIndex(\\\\\\\"_doc_id_rev\\\\\\\",\\\\\\\"_doc_id_rev\\\\\\\",{unique:!0})}function _(e,t){var n=e.objectStore(P),r=e.objectStore(T),o=e.objectStore(B),i=r.openCursor();i.onsuccess=function(e){var i=e.target.result;if(i){var a=i.value,s=a.id,u=A.isLocalId(s),c=A.winningRev(a);if(u){var f=s+\\\\\\\"::\\\\\\\"+c,l=s+\\\\\\\"::\\\\\\\",d=s+\\\\\\\"::~\\\\\\\",h=o.index(\\\\\\\"_doc_id_rev\\\\\\\"),p=IDBKeyRange.bound(l,d,!1,!1),v=h.openCursor(p);v.onsuccess=function(e){if(v=e.target.result){var t=v.value;t._doc_id_rev===f&&n.put(t),o[\\\\\\\"delete\\\\\\\"](v.primaryKey),v[\\\\\\\"continue\\\\\\\"]()}else r[\\\\\\\"delete\\\\\\\"](i.primaryKey),i[\\\\\\\"continue\\\\\\\"]()}}else i[\\\\\\\"continue\\\\\\\"]()}else t&&t()}}function b(e){var t=e.createObjectStore(M,{autoIncrement:!0});t.createIndex(\\\\\\\"seq\\\\\\\",\\\\\\\"seq\\\\\\\"),t.createIndex(\\\\\\\"digestSeq\\\\\\\",\\\\\\\"digestSeq\\\\\\\",{unique:!0})}function w(e,t){var n=e.objectStore(B),r=e.objectStore(N),o=e.objectStore(M),i=r.count();i.onsuccess=function(e){var r=e.target.result;return r?void(n.openCursor().onsuccess=function(e){var n=e.target.result;if(!n)return t();for(var r=n.value,i=n.primaryKey,a=Object.keys(r._attachments||{}),s={},u=0;u<a.length;u++){var c=r._attachments[a[u]];s[c.digest]=!0}var f=Object.keys(s);for(u=0;u<f.length;u++){var l=f[u];o.put({seq:i,digestSeq:l+\\\\\\\"::\\\\\\\"+i})}n[\\\\\\\"continue\\\\\\\"]()}):t()}}function E(e){function t(e){return e.data?u(e):(e.deleted=\\\\\\\"1\\\\\\\"===e.deletedOrLocal,e)}var n=e.objectStore(B),r=e.objectStore(T),o=r.openCursor();o.onsuccess=function(e){function o(){var e=u.id+\\\\\\\"::\\\\\\\",t=u.id+\\\\\\\"::￿\\\\\\\",r=n.index(\\\\\\\"_doc_id_rev\\\\\\\").openCursor(IDBKeyRange.bound(e,t)),o=0;r.onsuccess=function(e){var t=e.target.result;if(!t)return u.seq=o,i();var n=t.primaryKey;n>o&&(o=n),t[\\\\\\\"continue\\\\\\\"]()}}function i(){var e=s(u,u.winningRev,u.deleted),t=r.put(e);t.onsuccess=function(){a[\\\\\\\"continue\\\\\\\"]()}}var a=e.target.result;if(a){var u=t(a.value);return u.winningRev=u.winningRev||A.winningRev(u),u.seq?i():void o()}}}var j=t.name,x=null;e._meta=null,e.type=function(){return\\\\\\\"idb\\\\\\\"},e._id=O.toPromise(function(t){t(null,e._meta.instanceId)}),e._bulkDocs=function(n,r,o){v(t,n,r,e,x,K,o)},e._get=function(e,t,n){function r(){n(a,{doc:o,metadata:i,ctx:s})}var o,i,a,s=t.ctx;if(!s){var f=p(x,[T,B,N],\\\\\\\"readonly\\\\\\\");if(f.error)return n(f.error);s=f.txn}s.objectStore(T).get(e).onsuccess=function(e){if(i=u(e.target.result),!i)return a=D.createError(D.MISSING_DOC,\\\\\\\"missing\\\\\\\"),r();if(A.isDeleted(i)&&!t.rev)return a=D.createError(D.MISSING_DOC,\\\\\\\"deleted\\\\\\\"),r();var n=s.objectStore(B),f=t.rev||i.winningRev,l=i.id+\\\\\\\"::\\\\\\\"+f;n.index(\\\\\\\"_doc_id_rev\\\\\\\").get(l).onsuccess=function(e){return o=e.target.result,o&&(o=c(o)),o?void r():(a=D.createError(D.MISSING_DOC,\\\\\\\"missing\\\\\\\"),r())}}},e._getAttachment=function(e,t,n,r,o){var i;if(r.ctx)i=r.ctx;else{var a=p(x,[T,B,N],\\\\\\\"readonly\\\\\\\");if(a.error)return o(a.error);i=a.txn}var s=n.digest,u=n.content_type;i.objectStore(N).get(s).onsuccess=function(e){var t=e.target.result.body;f(t,u,r.binary,function(e){o(null,e)})}},e._info=function(t){if(null===x||!V.has(j)){var n=new Error(\\\\\\\"db isn't open\\\\\\\");return n.id=\\\\\\\"idbNull\\\\\\\",t(n)}var r,o,i=p(x,[B],\\\\\\\"readonly\\\\\\\");if(i.error)return t(i.error);var a=i.txn,s=a.objectStore(B).openCursor(null,\\\\\\\"prev\\\\\\\");s.onsuccess=function(t){var n=t.target.result;r=n?n.key:0,o=e._meta.docCount},a.oncomplete=function(){t(null,{doc_count:o,update_seq:r,idb_attachment_format:e._meta.blobSupport?\\\\\\\"binary\\\\\\\":\\\\\\\"base64\\\\\\\"})}},e._allDocs=function(t,n){m(t,e,x,n)},e._changes=function(t){function n(e){function n(){return s.seq!==a?e[\\\\\\\"continue\\\\\\\"]():(h=a,s.winningRev===i._rev?o(i):void r())}function r(){var e=i._id+\\\\\\\"::\\\\\\\"+s.winningRev,t=b.get(e);t.onsuccess=function(e){o(c(e.target.result))}}function o(n){var r=t.processChange(n,s,t);r.seq=s.seq;var o=E(r);return\\\\\\\"object\\\\\\\"==typeof o?t.complete(o):(o&&(k++,y&&w.push(r),t.attachments&&t.include_docs?l(n,t,_,function(){d([r],t.binary).then(function(){t.onChange(r)})}):t.onChange(r)),void(k!==v&&e[\\\\\\\"continue\\\\\\\"]()))}var i=c(e.value),a=e.key;if(f&&!f.has(i._id))return e[\\\\\\\"continue\\\\\\\"]();var s;return(s=S.get(i._id))?n():void(g.get(i._id).onsuccess=function(e){s=u(e.target.result),S.set(i._id,s),n()})}function r(e){var t=e.target.result;t&&n(t)}function o(){var e=[T,B];t.attachments&&e.push(N);var n=p(x,e,\\\\\\\"readonly\\\\\\\");if(n.error)return t.complete(n.error);_=n.txn,_.onabort=a(t.complete),_.oncomplete=i,m=_.objectStore(B),g=_.objectStore(T),b=m.index(\\\\\\\"_doc_id_rev\\\\\\\");var o;o=t.descending?m.openCursor(null,\\\\\\\"prev\\\\\\\"):m.openCursor(IDBKeyRange.lowerBound(t.since,!0)),o.onsuccess=r}function i(){function e(){t.complete(null,{results:w,last_seq:h})}!t.continuous&&t.attachments?d(w).then(e):e()}if(t=O.clone(t),t.continuous){var s=j+\\\\\\\":\\\\\\\"+O.uuid();return K.addListener(j,s,e,t),K.notify(j),{cancel:function(){K.removeListener(j,s)}}}var f=t.doc_ids&&new I.Set(t.doc_ids);t.since=t.since||0;var h=t.since,v=\\\\\\\"limit\\\\\\\"in t?t.limit:-1;0===v&&(v=1);var y;y=\\\\\\\"return_docs\\\\\\\"in t?t.return_docs:\\\\\\\"returnDocs\\\\\\\"in t?t.returnDocs:!0;var _,m,g,b,w=[],k=0,E=O.filterChange(t),S=new I.Map;o()},e._close=function(e){return null===x?e(D.createError(D.NOT_OPEN)):(x.close(),V[\\\\\\\"delete\\\\\\\"](j),x=null,void e())},e._getRevisionTree=function(e,t){var n=p(x,[T],\\\\\\\"readonly\\\\\\\");if(n.error)return t(n.error);var r=n.txn,o=r.objectStore(T).get(e);o.onsuccess=function(e){var n=u(e.target.result);n?t(null,n.rev_tree):t(D.createError(D.MISSING_DOC))}},e._doCompaction=function(e,t,n){var r=[T,B,N,M],o=p(x,r,\\\\\\\"readwrite\\\\\\\");if(o.error)return n(o.error);var i=o.txn,c=i.objectStore(T);c.get(e).onsuccess=function(n){var r=u(n.target.result);A.traverseRevTree(r.rev_tree,function(e,n,r,o,i){var a=n+\\\\\\\"-\\\\\\\"+r;-1!==t.indexOf(a)&&(i.status=\\\\\\\"missing\\\\\\\")}),h(t,e,i);var o=r.winningRev,a=r.deleted;i.objectStore(T).put(s(r,o,a))},i.onabort=a(n),i.oncomplete=function(){n()}},e._getLocal=function(e,t){var n=p(x,[P],\\\\\\\"readonly\\\\\\\");if(n.error)return t(n.error);var r=n.txn,o=r.objectStore(P).get(e);o.onerror=a(t),o.onsuccess=function(e){var n=e.target.result;n?(delete n._doc_id_rev,t(null,n)):t(D.createError(D.MISSING_DOC))}},e._putLocal=function(e,t,n){\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={}),delete e._revisions;var r=e._rev,o=e._id;r?e._rev=\\\\\\\"0-\\\\\\\"+(parseInt(r.split(\\\\\\\"-\\\\\\\")[1],10)+1):e._rev=\\\\\\\"0-1\\\\\\\";var i,s=t.ctx;if(!s){var u=p(x,[P],\\\\\\\"readwrite\\\\\\\");if(u.error)return n(u.error);s=u.txn,s.onerror=a(n),s.oncomplete=function(){i&&n(null,i)}}var c,f=s.objectStore(P);r?(c=f.get(o),c.onsuccess=function(o){var a=o.target.result;if(a&&a._rev===r){var s=f.put(e);s.onsuccess=function(){i={ok:!0,id:e._id,rev:e._rev},t.ctx&&n(null,i)}}else n(D.createError(D.REV_CONFLICT))}):(c=f.add(e),c.onerror=function(e){n(D.createError(D.REV_CONFLICT)),e.preventDefault(),e.stopPropagation()},c.onsuccess=function(){i={ok:!0,id:e._id,rev:e._rev},t.ctx&&n(null,i)})},e._removeLocal=function(e,t,n){\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={});var r=t.ctx;if(!r){var o=p(x,[P],\\\\\\\"readwrite\\\\\\\");if(o.error)return n(o.error);r=o.txn,r.oncomplete=function(){i&&n(null,i)}}var i,s=e._id,u=r.objectStore(P),c=u.get(s);c.onerror=a(n),c.onsuccess=function(r){var o=r.target.result;o&&o._rev===e._rev?(u[\\\\\\\"delete\\\\\\\"](s),i={ok:!0,id:s,rev:\\\\\\\"0-0\\\\\\\"},t.ctx&&n(null,i)):n(D.createError(D.MISSING_DOC))}},e._destroy=function(e,t){K.removeAllListeners(j);var n=J.get(j);n&&n.result&&(n.result.close(),V[\\\\\\\"delete\\\\\\\"](j));var r=indexedDB.deleteDatabase(j);r.onsuccess=function(){J[\\\\\\\"delete\\\\\\\"](j),O.hasLocalStorage()&&j in localStorage&&delete localStorage[j],t(null,{ok:!0})},r.onerror=a(t)};var C=V.get(j);if(C)return x=C.idb,e._meta=C.global,void n.nextTick(function(){r(null,e)});var q;q=t.storage?k(j,t.storage):indexedDB.open(j,L),J.set(j,q),q.onupgradeneeded=function(e){function t(){var e=a[s-1];s++,e&&e(r,t)}var n=e.target.result;if(e.oldVersion<1)return o(n);var r=e.currentTarget.transaction;e.oldVersion<3&&y(n),e.oldVersion<4&&b(n);var a=[i,_,w,E],s=e.oldVersion;t()},q.onsuccess=function(t){x=t.target.result,x.onversionchange=function(){x.close(),V[\\\\\\\"delete\\\\\\\"](j)},x.onabort=function(e){O.guardedConsole(\\\\\\\"error\\\\\\\",\\\\\\\"Database has a global failure\\\\\\\",e.target.error),x.close(),V[\\\\\\\"delete\\\\\\\"](j)};var n=x.transaction([F,U,T],\\\\\\\"readwrite\\\\\\\"),o=n.objectStore(F).get(F),i=null,a=null,s=null;o.onsuccess=function(t){var o=function(){null!==i&&null!==a&&null!==s&&(e._meta={name:j,instanceId:s,blobSupport:i,docCount:a},V.set(j,{idb:x,global:e._meta}),r(null,e))},u=t.target.result||{id:F};j+\\\\\\\"_id\\\\\\\"in u?(s=u[j+\\\\\\\"_id\\\\\\\"],o()):(s=O.uuid(),u[j+\\\\\\\"_id\\\\\\\"]=s,n.objectStore(F).put(u).onsuccess=function(){o()}),S||(S=g(n)),S.then(function(e){i=e,o()});var c=n.objectStore(T).index(\\\\\\\"deletedOrLocal\\\\\\\");c.count(IDBKeyRange.only(\\\\\\\"0\\\\\\\")).onsuccess=function(e){a=e.target.result,o()}}},q.onerror=function(){var e=\\\\\\\"Failed to open indexedDB, are you in private browsing mode?\\\\\\\";O.guardedConsole(\\\\\\\"error\\\\\\\",e),r(D.createError(D.IDB_ERROR,e))}}function k(e,t){try{return indexedDB.open(e,{version:L,storage:t})}catch(n){return indexedDB.open(e,L)}}function E(e){e.adapter(\\\\\\\"idb\\\\\\\",b,!0)}var S,O=e(35),A=e(32),I=e(24),D=e(26),j=e(18),x=e(13),C=r(e(33)),q=e(28),R=e(20),L=5,T=\\\\\\\"document-store\\\\\\\",B=\\\\\\\"by-sequence\\\\\\\",N=\\\\\\\"attach-store\\\\\\\",M=\\\\\\\"attach-seq-store\\\\\\\",F=\\\\\\\"meta-store\\\\\\\",P=\\\\\\\"local-store\\\\\\\",U=\\\\\\\"detect-blob-support\\\\\\\",G={running:!1,queue:[]},V=new I.Map,K=new O.changesHandler,J=new I.Map;b.valid=function(){var e=\\\\\\\"undefined\\\\\\\"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform);return!e&&\\\\\\\"undefined\\\\\\\"!=typeof indexedDB&&\\\\\\\"undefined\\\\\\\"!=typeof IDBKeyRange},t.exports=E}).call(this,e(36))},{13:13,18:18,20:20,24:24,26:26,28:28,32:32,33:33,35:35,36:36}],18:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e.reduce(function(e,t){return e[t]=!0,e},{})}function o(e){if(!/^\\\\\\\\d+\\\\\\\\-./.test(e))return d.createError(d.INVALID_REV);var t=e.indexOf(\\\\\\\"-\\\\\\\"),n=e.substring(0,t),r=e.substring(t+1);return{prefix:parseInt(n,10),id:r}}function i(e,t){for(var n=e.start-e.ids.length+1,r=e.ids,o=[r[0],t,[]],i=1,a=r.length;a>i;i++)o=[r[i],{status:\\\\\\\"missing\\\\\\\"},[o]];return[{pos:n,ids:o}]}function a(e,t){var n,r,a,s={status:\\\\\\\"available\\\\\\\"};if(e._deleted&&(s.deleted=!0),t)if(e._id||(e._id=l.uuid()),r=l.uuid(32,16).toLowerCase(),e._rev){if(a=o(e._rev),a.error)return a;e._rev_tree=[{pos:a.prefix,ids:[a.id,{status:\\\\\\\"missing\\\\\\\"},[[r,s,[]]]]}],n=a.prefix+1}else e._rev_tree=[{pos:1,ids:[r,s,[]]}],n=1;else if(e._revisions&&(e._rev_tree=i(e._revisions,s),n=e._revisions.start,r=e._revisions.ids[0]),!e._rev_tree){if(a=o(e._rev),a.error)return a;n=a.prefix,r=a.id,e._rev_tree=[{pos:n,ids:[r,s,[]]}]}l.invalidIdError(e._id),e._rev=n+\\\\\\\"-\\\\\\\"+r;var u={metadata:{},data:{}};for(var c in e)if(Object.prototype.hasOwnProperty.call(e,c)){var f=\\\\\\\"_\\\\\\\"===c[0];if(f&&!_[c]){var h=d.createError(d.DOC_VALIDATION,c);throw h.message=d.DOC_VALIDATION.message+\\\\\\\": \\\\\\\"+c,h}f&&!m[c]?u.metadata[c.slice(1)]=e[c]:u.data[c]=e[c]}return u}function s(e,t,n){function r(e){try{return p.atob(e)}catch(t){var n=d.createError(d.BAD_ARG,\\\\\\\"Attachment is not a valid base64 string\\\\\\\");return{error:n}}}function o(e,n){if(e.stub)return n();if(\\\\\\\"string\\\\\\\"==typeof e.data){var o=r(e.data);if(o.error)return n(o.error);e.length=o.length,\\\\\\\"blob\\\\\\\"===t?e.data=p.binaryStringToBlobOrBuffer(o,e.content_type):\\\\\\\"base64\\\\\\\"===t?e.data=p.btoa(o):e.data=o,v.binaryMd5(o,function(t){e.digest=\\\\\\\"md5-\\\\\\\"+t,n()})}else p.readAsArrayBuffer(e.data,function(r){\\\\\\\"binary\\\\\\\"===t?e.data=p.arrayBufferToBinaryString(r):\\\\\\\"base64\\\\\\\"===t&&(e.data=p.arrayBufferToBase64(r)),v.binaryMd5(r,function(t){e.digest=\\\\\\\"md5-\\\\\\\"+t,e.length=r.byteLength,n()})})}function i(){s++,e.length===s&&(a?n(a):n())}if(!e.length)return n();var a,s=0;e.forEach(function(e){function t(e){a=e,r++,r===n.length&&i()}var n=e.data&&e.data._attachments?Object.keys(e.data._attachments):[],r=0;if(!n.length)return i();for(var s in e.data._attachments)e.data._attachments.hasOwnProperty(s)&&o(e.data._attachments[s],t)})}function u(e,t,n,r,o,i,s,u){if(h.revExists(t.rev_tree,n.metadata.rev))return r[o]=n,i();var c=t.winningRev||h.winningRev(t),f=\\\\\\\"deleted\\\\\\\"in t?t.deleted:h.isDeleted(t,c),l=\\\\\\\"deleted\\\\\\\"in n.metadata?n.metadata.deleted:h.isDeleted(n.metadata),p=/^1-/.test(n.metadata.rev);if(f&&!l&&u&&p){var v=n.data;v._rev=c,v._id=n.metadata.id,n=a(v,u)}var y=h.merge(t.rev_tree,n.metadata.rev_tree[0],e),_=u&&(f&&l||!f&&\\\\\\\"new_leaf\\\\\\\"!==y.conflicts||f&&!l&&\\\\\\\"new_branch\\\\\\\"===y.conflicts);if(_){var m=d.createError(d.REV_CONFLICT);return r[o]=m,i()}var g=n.metadata.rev;n.metadata.rev_tree=y.tree,n.stemmedRevs=y.stemmedRevs||[],t.rev_map&&(n.metadata.rev_map=t.rev_map);var b,w=h.winningRev(n.metadata),k=h.isDeleted(n.metadata,w),E=f===k?0:k>f?-1:1;b=g===w?k:h.isDeleted(n.metadata,g),s(n,w,k,b,!0,E,o,i)}function c(e){return\\\\\\\"missing\\\\\\\"===e.metadata.rev_tree[0].ids[1].status}function f(e,t,n,r,o,i,a,s,f){function l(e,t,n){var r=h.winningRev(e.metadata),o=h.isDeleted(e.metadata,r);if(\\\\\\\"was_delete\\\\\\\"in s&&o)return i[t]=d.createError(d.MISSING_DOC,\\\\\\\"deleted\\\\\\\"),n();var u=v&&c(e);if(u){var f=d.createError(d.REV_CONFLICT);return i[t]=f,n()}var l=o?0:1;a(e,r,o,o,!1,l,t,n)}function p(){++m===g&&f&&f()}e=e||1e3;var v=s.new_edits,_=new y.Map,m=0,g=t.length;t.forEach(function(e,t){if(e._id&&h.isLocalId(e._id)){var r=e._deleted?\\\\\\\"_removeLocal\\\\\\\":\\\\\\\"_putLocal\\\\\\\";return void n[r](e,{ctx:o},function(e,n){i[t]=e||n,p()})}var a=e.metadata.id;_.has(a)?(g--,_.get(a).push([e,t])):_.set(a,[[e,t]])}),_.forEach(function(t,n){function o(){++c<t.length?s():p()}function s(){var s=t[c],f=s[0],d=s[1];if(r.has(n))u(e,r.get(n),f,i,d,o,a,v);else{var p=h.merge([],f.metadata.rev_tree[0],e);f.metadata.rev_tree=p.tree,f.stemmedRevs=p.stemmedRevs||[],l(f,d,o)}}var c=0;s()})}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var l=e(35),d=e(26),h=e(32),p=e(20),v=e(31),y=e(24),_=r([\\\\\\\"_id\\\\\\\",\\\\\\\"_rev\\\\\\\",\\\\\\\"_attachments\\\\\\\",\\\\\\\"_deleted\\\\\\\",\\\\\\\"_revisions\\\\\\\",\\\\\\\"_revs_info\\\\\\\",\\\\\\\"_conflicts\\\\\\\",\\\\\\\"_deleted_conflicts\\\\\\\",\\\\\\\"_local_seq\\\\\\\",\\\\\\\"_rev_tree\\\\\\\",\\\\\\\"_replication_id\\\\\\\",\\\\\\\"_replication_state\\\\\\\",\\\\\\\"_replication_state_time\\\\\\\",\\\\\\\"_replication_state_reason\\\\\\\",\\\\\\\"_replication_stats\\\\\\\",\\\\\\\"_removed\\\\\\\"]),m=r([\\\\\\\"_attachments\\\\\\\",\\\\\\\"_replication_id\\\\\\\",\\\\\\\"_replication_state\\\\\\\",\\\\\\\"_replication_state_time\\\\\\\",\\\\\\\"_replication_state_reason\\\\\\\",\\\\\\\"_replication_stats\\\\\\\"]);n.invalidIdError=l.invalidIdError,n.isDeleted=h.isDeleted,n.isLocalId=h.isLocalId,n.normalizeDdocFunctionName=l.normalizeDdocFunctionName,n.parseDdocFunctionName=l.parseDdocFunctionName,n.parseDoc=a,n.preprocessAttachments=s,n.processDocs=f,n.updateDoc=u},{20:20,24:24,26:26,31:31,32:32,35:35}],19:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(){for(var e={},t=new h(function(t,n){e.resolve=t,e.reject=n}),n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.promise=t,h.resolve().then(function(){return fetch.apply(null,n)}).then(function(t){e.resolve(t)})[\\\\\\\"catch\\\\\\\"](function(t){e.reject(t)}),e}function i(e,t){var n,r,i,a=new Headers,s={method:e.method,credentials:\\\\\\\"include\\\\\\\",headers:a};return e.json&&(a.set(\\\\\\\"Accept\\\\\\\",\\\\\\\"application/json\\\\\\\"),a.set(\\\\\\\"Content-Type\\\\\\\",e.headers[\\\\\\\"Content-Type\\\\\\\"]||\\\\\\\"application/json\\\\\\\")),e.body&&e.body instanceof Blob?d.readAsArrayBuffer(e.body,function(e){s.body=e}):e.body&&e.processData&&\\\\\\\"string\\\\\\\"!=typeof e.body?s.body=JSON.stringify(e.body):\\\\\\\"body\\\\\\\"in e?s.body=e.body:s.body=null,Object.keys(e.headers).forEach(function(t){e.headers.hasOwnProperty(t)&&a.set(t,e.headers[t])}),n=o(e.url,s),e.timeout>0&&(r=setTimeout(function(){n.reject(new Error(\\\\\\\"Load timeout for resource: \\\\\\\"+e.url))},e.timeout)),n.promise.then(function(t){return i={statusCode:t.status},e.timeout>0&&clearTimeout(r),i.statusCode>=200&&i.statusCode<300?e.binary?t.blob():t.text():t.json()}).then(function(e){i.statusCode>=200&&i.statusCode<300?t(null,i,e):t(e,i)})[\\\\\\\"catch\\\\\\\"](function(e){t(e,i)}),{abort:n.reject}}function a(e,t){var n,r,o=!1,i=function(){n.abort()},a=function(){o=!0,n.abort()};n=e.xhr?new e.xhr:new XMLHttpRequest;try{n.open(e.method,e.url)}catch(s){t(s,{statusCode:413})}n.withCredentials=\\\\\\\"withCredentials\\\\\\\"in e?e.withCredentials:!0,\\\\\\\"GET\\\\\\\"===e.method?delete e.headers[\\\\\\\"Content-Type\\\\\\\"]:e.json&&(e.headers.Accept=\\\\\\\"application/json\\\\\\\",e.headers[\\\\\\\"Content-Type\\\\\\\"]=e.headers[\\\\\\\"Content-Type\\\\\\\"]||\\\\\\\"application/json\\\\\\\",e.body&&e.processData&&\\\\\\\"string\\\\\\\"!=typeof e.body&&(e.body=JSON.stringify(e.body))),e.binary&&(n.responseType=\\\\\\\"arraybuffer\\\\\\\"),\\\\\\\"body\\\\\\\"in e||(e.body=null);for(var u in e.headers)e.headers.hasOwnProperty(u)&&n.setRequestHeader(u,e.headers[u]);return e.timeout>0&&(r=setTimeout(a,e.timeout),n.onprogress=function(){clearTimeout(r),4!==n.readyState&&(r=setTimeout(a,e.timeout))},\\\\\\\"undefined\\\\\\\"!=typeof n.upload&&(n.upload.onprogress=n.onprogress)),n.onreadystatechange=function(){if(4===n.readyState){var r={statusCode:n.status};if(n.status>=200&&n.status<300){var i;i=e.binary?d.blob([n.response||\\\\\\\"\\\\\\\"],{type:n.getResponseHeader(\\\\\\\"Content-Type\\\\\\\")}):n.responseText,t(null,r,i)}else{var a={};if(o)a=new Error(\\\\\\\"ETIMEDOUT\\\\\\\"),r.statusCode=400;else try{a=JSON.parse(n.response)}catch(s){}t(a,r)}}},e.body&&e.body instanceof Blob?d.readAsArrayBuffer(e.body,function(e){n.send(e)}):n.send(e.body),{abort:i}}function s(){try{return new XMLHttpRequest,!0}catch(e){return!1}}function u(e,t){return _||e.xhr?a(e,t):i(e,t)}function c(){return\\\\\\\"\\\\\\\"}function f(e,t){function n(t,n,r){if(!e.binary&&e.json&&\\\\\\\"string\\\\\\\"==typeof t)try{t=JSON.parse(t)}catch(o){return r(o)}Array.isArray(t)&&(t=t.map(function(e){return e.error||e.missing?v.generateErrorFromResponse(e):e})),e.binary&&m(t,n),r(null,t,n)}function r(e,t){var n,r;if(e.code&&e.status){var o=new Error(e.message||e.code);return o.status=e.status,t(o)}if(e.message&&\\\\\\\"ETIMEDOUT\\\\\\\"===e.message)return t(e);try{n=JSON.parse(e.responseText),r=v.generateErrorFromResponse(n)}catch(i){r=v.generateErrorFromResponse(e)}t(r)}e=y.clone(e);var o={method:\\\\\\\"GET\\\\\\\",headers:{},json:!0,processData:!0,timeout:1e4,cache:!1};return e=p.extend(o,e),e.json&&(e.binary||(e.headers.Accept=\\\\\\\"application/json\\\\\\\"),e.headers[\\\\\\\"Content-Type\\\\\\\"]=e.headers[\\\\\\\"Content-Type\\\\\\\"]||\\\\\\\"application/json\\\\\\\"),e.binary&&(e.encoding=null,e.json=!1),e.processData||(e.json=!1),u(e,function(o,i,a){if(o)return o.status=i?i.statusCode:400,r(o,t);var s,u=i.headers&&i.headers[\\\\\\\"content-type\\\\\\\"],f=a||c();if(!e.binary&&(e.json||!e.processData)&&\\\\\\\"object\\\\\\\"!=typeof f&&(/json/.test(u)||/^[\\\\\\\\s]*\\\\\\\\{/.test(f)&&/\\\\\\\\}[\\\\\\\\s]*$/.test(f)))try{f=JSON.parse(f.toString())}catch(l){}i.statusCode>=200&&i.statusCode<300?n(f,i,t):(s=v.generateErrorFromResponse(f),s.status=i.statusCode,t(s))})}function l(e,t){var n=navigator&&navigator.userAgent?navigator.userAgent.toLowerCase():\\\\\\\"\\\\\\\",r=-1!==n.indexOf(\\\\\\\"safari\\\\\\\")&&-1===n.indexOf(\\\\\\\"chrome\\\\\\\"),o=-1!==n.indexOf(\\\\\\\"msie\\\\\\\"),i=-1!==n.indexOf(\\\\\\\"edge\\\\\\\"),a=r||(o||i)&&\\\\\\\"GET\\\\\\\"===e.method,s=\\\\\\\"cache\\\\\\\"in e?e.cache:!0,u=/^blob:/.test(e.url);if(!u&&(a||!s)){var c=-1!==e.url.indexOf(\\\\\\\"?\\\\\\\");e.url+=(c?\\\\\\\"&\\\\\\\":\\\\\\\"?\\\\\\\")+\\\\\\\"_nonce=\\\\\\\"+Date.now()}return f(e,t)}var d=e(20),h=r(e(33)),p=e(13),v=e(26),y=e(35),_=s(),m=function(){};t.exports=l},{13:13,20:20,26:26,33:33,35:35}],20:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){for(var t=\\\\\\\"\\\\\\\",n=new Uint8Array(e),r=n.byteLength,o=0;r>o;o++)t+=String.fromCharCode(n[o]);return t}function o(e){return p(r(e))}function i(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(n){if(\\\\\\\"TypeError\\\\\\\"!==n.name)throw n;for(var r=\\\\\\\"undefined\\\\\\\"!=typeof BlobBuilder?BlobBuilder:\\\\\\\"undefined\\\\\\\"!=typeof MSBlobBuilder?MSBlobBuilder:\\\\\\\"undefined\\\\\\\"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder,o=new r,i=0;i<e.length;i+=1)o.append(e[i]);return o.getBlob(t.type)}}function a(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=0;t>o;o++)r[o]=e.charCodeAt(o);return n}function s(e,t){return i([a(e)],{type:t})}function u(e,t){return s(h(e),t)}function c(e,t){if(\\\\\\\"undefined\\\\\\\"==typeof FileReader)return t(r((new FileReaderSync).readAsArrayBuffer(e)));var n=new FileReader,o=\\\\\\\"function\\\\\\\"==typeof n.readAsBinaryString;n.onloadend=function(e){var n=e.target.result||\\\\\\\"\\\\\\\";return o?t(n):void t(r(n))},o?n.readAsBinaryString(e):n.readAsArrayBuffer(e)}function f(e,t){c(e,function(e){t(p(e))})}function l(e,t){if(\\\\\\\"undefined\\\\\\\"==typeof FileReader)return t((new FileReaderSync).readAsArrayBuffer(e));var n=new FileReader;n.onloadend=function(e){var n=e.target.result||new ArrayBuffer(0);t(n)},n.readAsArrayBuffer(e)}function d(){}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var h=function(e){return atob(e)},p=function(e){return btoa(e)};n.arrayBufferToBase64=o,n.arrayBufferToBinaryString=r,n.atob=h,n.btoa=p,n.base64StringToBlobOrBuffer=u,n.binaryStringToArrayBuffer=a,n.binaryStringToBlobOrBuffer=s,n.blob=i,n.blobOrBufferToBase64=f,n.readAsArrayBuffer=l,n.readAsBinaryString=c,n.typedBuffer=d},{}],21:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e,t,n,r,i){return e.get(t)[\\\\\\\"catch\\\\\\\"](function(n){if(404===n.status)return\\\\\\\"http\\\\\\\"===e.type()&&l.explainError(404,\\\\\\\"PouchDB is just checking if a remote checkpoint exists.\\\\\\\"),{session_id:r,_id:t,history:[],replicator:p,version:h};throw n}).then(function(a){return i.cancelled?void 0:(a.history=(a.history||[]).filter(function(e){return e.session_id!==r}),a.history.unshift({last_seq:n,session_id:r}),a.history=a.history.slice(0,v),a.version=h,a.replicator=p,a.session_id=r,a.last_seq=n,e.put(a)[\\\\\\\"catch\\\\\\\"](function(a){if(409===a.status)return o(e,t,n,r,i);throw a}))})}function i(e,t,n,r){this.src=e,this.target=t,this.id=n,this.returnValue=r}function a(e,t){return e.session_id===t.session_id?{last_seq:e.last_seq,history:e.history}:s(e.history,t.history)}function s(e,t){var n=e[0],r=e.slice(1),o=t[0],i=t.slice(1);if(!n||0===t.length)return{last_seq:y,history:[]};var a=n.session_id;if(u(a,t))return{last_seq:n.last_seq,history:e};var c=o.session_id;return u(c,r)?{last_seq:o.last_seq,history:i}:s(r,i)}function u(e,t){var n=t[0],r=t.slice(1);return e&&0!==t.length?e===n.session_id?!0:u(e,r):!1}function c(e){return\\\\\\\"number\\\\\\\"==typeof e.status&&4===Math.floor(e.status/100)}var f=r(e(33)),l=e(35),d=e(22),h=1,p=\\\\\\\"pouchdb\\\\\\\",v=5,y=0;i.prototype.writeCheckpoint=function(e,t){var n=this;return this.updateTarget(e,t).then(function(){return n.updateSource(e,t)})},i.prototype.updateTarget=function(e,t){return o(this.target,this.id,e,t,this.returnValue)},i.prototype.updateSource=function(e,t){var n=this;return this.readOnlySource?f.resolve(!0):o(this.src,this.id,e,t,this.returnValue)[\\\\\\\"catch\\\\\\\"](function(e){if(c(e))return n.readOnlySource=!0,!0;throw e})};var _={undefined:function(e,t){return 0===d.collate(e.last_seq,t.last_seq)?t.last_seq:0},1:function(e,t){return a(t,e).last_seq}};i.prototype.getCheckpoint=function(){var e=this;return e.target.get(e.id).then(function(t){return e.readOnlySource?f.resolve(t.last_seq):e.src.get(e.id).then(function(e){if(t.version!==e.version)return y;var n;return n=t.version?t.version.toString():\\\\\\\"undefined\\\\\\\",n in _?_[n](t,e):y},function(n){if(404===n.status&&t.last_seq)return e.src.put({_id:e.id,last_seq:y}).then(function(){return y},function(n){return c(n)?(e.readOnlySource=!0,t.last_seq):y});throw n})})[\\\\\\\"catch\\\\\\\"](function(e){if(404!==e.status)throw e;return y})},t.exports=i},{22:22,33:33,35:35}],22:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){if(null!==e)switch(typeof e){case\\\\\\\"boolean\\\\\\\":return e?1:0;case\\\\\\\"number\\\\\\\":return f(e);case\\\\\\\"string\\\\\\\":return e.replace(/\\\\\\\\u0002/g,\\\\\\\"\\\\u0002\\\\u0002\\\\\\\").replace(/\\\\\\\\u0001/g,\\\\\\\"\\\\u0001\\\\u0002\\\\\\\").replace(/\\\\\\\\u0000/g,\\\\\\\"\\\\u0001\\\\u0001\\\\\\\");case\\\\\\\"object\\\\\\\":var t=Array.isArray(e),r=t?e:Object.keys(e),o=-1,i=r.length,a=\\\\\\\"\\\\\\\";if(t)for(;++o<i;)a+=n.toIndexableString(r[o]);else for(;++o<i;){var s=r[o];a+=n.toIndexableString(s)+n.toIndexableString(e[s])}return a}return\\\\\\\"\\\\\\\"}function o(e,t){var n,r=t,o=\\\\\\\"1\\\\\\\"===e[t];if(o)n=0,t++;else{var i=\\\\\\\"0\\\\\\\"===e[t];t++;var a=\\\\\\\"\\\\\\\",s=e.substring(t,t+d),u=parseInt(s,10)+l;for(i&&(u=-u),t+=d;;){var c=e[t];if(\\\\\\\"\\\\\\\\x00\\\\\\\"===c)break;a+=c,t++}a=a.split(\\\\\\\".\\\\\\\"),n=1===a.length?parseInt(a,10):parseFloat(a[0]+\\\\\\\".\\\\\\\"+a[1]),i&&(n-=10),0!==u&&(n=parseFloat(n+\\\\\\\"e\\\\\\\"+u))}return{num:n,length:t-r}}function i(e,t){var n=e.pop();if(t.length){var r=t[t.length-1];n===r.element&&(t.pop(),r=t[t.length-1]);var o=r.element,i=r.index;if(Array.isArray(o))o.push(n);else if(i===e.length-2){var a=e.pop();o[a]=n}else e.push(n)}}function a(e,t){for(var r=Math.min(e.length,t.length),o=0;r>o;o++){var i=n.collate(e[o],t[o]);if(0!==i)return i}return e.length===t.length?0:e.length>t.length?1:-1}function s(e,t){return e===t?0:e>t?1:-1}function u(e,t){for(var r=Object.keys(e),o=Object.keys(t),i=Math.min(r.length,o.length),a=0;i>a;a++){var s=n.collate(r[a],o[a]);if(0!==s)return s;if(s=n.collate(e[r[a]],t[o[a]]),0!==s)return s}return r.length===o.length?0:r.length>o.length?1:-1}function c(e){var t=[\\\\\\\"boolean\\\\\\\",\\\\\\\"number\\\\\\\",\\\\\\\"string\\\\\\\",\\\\\\\"object\\\\\\\"],n=t.indexOf(typeof e);return~n?null===e?1:Array.isArray(e)?5:3>n?n+2:n+3:Array.isArray(e)?5:void 0}function f(e){if(0===e)return\\\\\\\"1\\\\\\\";var t=e.toExponential().split(/e\\\\\\\\+?/),n=parseInt(t[1],10),r=0>e,o=r?\\\\\\\"0\\\\\\\":\\\\\\\"2\\\\\\\",i=(r?-n:n)-l,a=p.padLeft(i.toString(),\\\\\\\"0\\\\\\\",d);o+=h+a;var s=Math.abs(parseFloat(t[0]));r&&(s=10-s);var u=s.toFixed(20);return u=u.replace(/\\\\\\\\.?0+$/,\\\\\\\"\\\\\\\"),o+=h+u}var l=-324,d=3,h=\\\\\\\"\\\\\\\",p=e(23);n.collate=function(e,t){if(e===t)return 0;e=n.normalizeKey(e),t=n.normalizeKey(t);var r=c(e),o=c(t);if(r-o!==0)return r-o;if(null===e)return 0;switch(typeof e){case\\\\\\\"number\\\\\\\":return e-t;case\\\\\\\"boolean\\\\\\\":return e===t?0:t>e?-1:1;case\\\\\\\"string\\\\\\\":return s(e,t)}return Array.isArray(e)?a(e,t):u(e,t)},n.normalizeKey=function(e){switch(typeof e){case\\\\\\\"undefined\\\\\\\":return null;case\\\\\\\"number\\\\\\\":return e===1/0||e===-(1/0)||isNaN(e)?null:e;case\\\\\\\"object\\\\\\\":var t=e;if(Array.isArray(e)){var r=e.length;e=new Array(r);for(var o=0;r>o;o++)e[o]=n.normalizeKey(t[o])}else{if(e instanceof Date)return e.toJSON();if(null!==e){e={};for(var i in t)if(t.hasOwnProperty(i)){var a=t[i];\\\\\\\"undefined\\\\\\\"!=typeof a&&(e[i]=n.normalizeKey(a))}}}}return e},n.toIndexableString=function(e){var t=\\\\\\\"\\\\\\\\x00\\\\\\\";return e=n.normalizeKey(e),c(e)+h+r(e)+t},n.parseIndexableString=function(e){for(var t=[],n=[],r=0;;){var a=e[r++];if(\\\\\\\"\\\\\\\\x00\\\\\\\"!==a)switch(a){case\\\\\\\"1\\\\\\\":t.push(null);break;case\\\\\\\"2\\\\\\\":t.push(\\\\\\\"1\\\\\\\"===e[r]),r++;break;case\\\\\\\"3\\\\\\\":var s=o(e,r);t.push(s.num),r+=s.length;break;case\\\\\\\"4\\\\\\\":for(var u=\\\\\\\"\\\\\\\";;){var c=e[r];if(\\\\\\\"\\\\\\\\x00\\\\\\\"===c)break;u+=c,r++}u=u.replace(/\\\\\\\\u0001\\\\\\\\u0001/g,\\\\\\\"\\\\\\\\x00\\\\\\\").replace(/\\\\\\\\u0001\\\\\\\\u0002/g,\\\\\\\"\\\\u0001\\\\\\\").replace(/\\\\\\\\u0002\\\\\\\\u0002/g,\\\\\\\"\\\\u0002\\\\\\\"),t.push(u);break;case\\\\\\\"5\\\\\\\":var f={element:[],index:t.length};t.push(f.element),n.push(f);break;case\\\\\\\"6\\\\\\\":var l={element:{},index:t.length};t.push(l.element),n.push(l);break;default:throw new Error(\\\\\\\"bad collationIndex or unexpectedly reached end of input: \\\\\\\"+a)}else{if(1===t.length)return t.pop();i(t,n)}}}},{23:23}],23:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e,t,n){for(var r=\\\\\\\"\\\\\\\",o=n-e.length;r.length<o;)r+=t;return r}n.padLeft=function(e,t,n){var o=r(e,t,n);return o+e},n.padRight=function(e,t,n){var o=r(e,t,n);return e+o},n.stringLexCompare=function(e,t){var n,r=e.length,o=t.length;for(n=0;r>n;n++){if(n===o)return 1;var i=e.charAt(n),a=t.charAt(n);if(i!==a)return a>i?-1:1;\\\\n}return o>r?-1:0},n.intToDecimalForm=function(e){var t=0>e,n=\\\\\\\"\\\\\\\";do{var r=t?-Math.ceil(e%10):Math.floor(e%10);n=r+n,e=t?Math.ceil(e/10):Math.floor(e/10)}while(e);return t&&\\\\\\\"0\\\\\\\"!==n&&(n=\\\\\\\"-\\\\\\\"+n),n}},{}],24:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(){this.store={}}function o(e){if(this.store=new r,e&&Array.isArray(e))for(var t=0,n=e.length;n>t;t++)this.add(e[t])}n.Map=r,n.Set=o,r.prototype.mangle=function(e){if(\\\\\\\"string\\\\\\\"!=typeof e)throw new TypeError(\\\\\\\"key must be a string but Got \\\\\\\"+e);return\\\\\\\"$\\\\\\\"+e},r.prototype.unmangle=function(e){return e.substring(1)},r.prototype.get=function(e){var t=this.mangle(e);return t in this.store?this.store[t]:void 0},r.prototype.set=function(e,t){var n=this.mangle(e);return this.store[n]=t,!0},r.prototype.has=function(e){var t=this.mangle(e);return t in this.store},r.prototype[\\\\\\\"delete\\\\\\\"]=function(e){var t=this.mangle(e);return t in this.store?(delete this.store[t],!0):!1},r.prototype.forEach=function(e){for(var t=Object.keys(this.store),n=0,r=t.length;r>n;n++){var o=t[n],i=this.store[o];o=this.unmangle(o),e(i,o)}},o.prototype.add=function(e){return this.store.set(e,!0)},o.prototype.has=function(e){return this.store.has(e)},o.prototype[\\\\\\\"delete\\\\\\\"]=function(e){return this.store[\\\\\\\"delete\\\\\\\"](e)}},{}],25:[function(e,t,n){(function(n,r){\\\\\\\"use strict\\\\\\\";function o(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function i(e){return L(\\\\\\\"return \\\\\\\"+e+\\\\\\\";\\\\\\\",{})}function a(e){return new Function(\\\\\\\"doc\\\\\\\",[\\\\\\\"var emitted = false;\\\\\\\",\\\\\\\"var emit = function (a, b) {\\\\\\\",\\\\\\\"  emitted = true;\\\\\\\",\\\\\\\"};\\\\\\\",\\\\\\\"var view = \\\\\\\"+e+\\\\\\\";\\\\\\\",\\\\\\\"view(doc);\\\\\\\",\\\\\\\"if (emitted) {\\\\\\\",\\\\\\\"  return true;\\\\\\\",\\\\\\\"}\\\\\\\"].join(\\\\\\\"\\\\\\\\n\\\\\\\"))}function s(e,t){try{e.emit(\\\\\\\"change\\\\\\\",t)}catch(n){q.guardedConsole(\\\\\\\"error\\\\\\\",'Error in .on(\\\\\\\"change\\\\\\\", function):',n)}}function u(e,t,n){function r(){o.cancel()}C.EventEmitter.call(this);var o=this;this.db=e,t=t?q.clone(t):{};var i=t.complete=q.once(function(t,n){t?q.listenerCount(o,\\\\\\\"error\\\\\\\")>0&&o.emit(\\\\\\\"error\\\\\\\",t):o.emit(\\\\\\\"complete\\\\\\\",n),o.removeAllListeners(),e.removeListener(\\\\\\\"destroyed\\\\\\\",r)});n&&(o.on(\\\\\\\"complete\\\\\\\",function(e){n(null,e)}),o.on(\\\\\\\"error\\\\\\\",n)),e.once(\\\\\\\"destroyed\\\\\\\",r),t.onChange=function(e){t.isCancelled||(s(o,e),o.startSeq&&o.startSeq<=e.seq&&(o.startSeq=!1))};var a=new D(function(e,n){t.complete=function(t,r){t?n(t):e(r)}});o.once(\\\\\\\"cancel\\\\\\\",function(){e.removeListener(\\\\\\\"destroyed\\\\\\\",r),t.complete(null,{status:\\\\\\\"cancelled\\\\\\\"})}),this.then=a.then.bind(a),this[\\\\\\\"catch\\\\\\\"]=a[\\\\\\\"catch\\\\\\\"].bind(a),this.then(function(e){i(null,e)},i),e.taskqueue.isReady?o.doChanges(t):e.taskqueue.addTask(function(){o.isCancelled?o.emit(\\\\\\\"cancel\\\\\\\"):o.doChanges(t)})}function c(e,t,n){var r=[{rev:e._rev}];\\\\\\\"all_docs\\\\\\\"===n.style&&(r=R.collectLeaves(t.rev_tree).map(function(e){return{rev:e.rev}}));var o={id:t.id,changes:r,doc:e};return R.isDeleted(t,e._rev)&&(o.deleted=!0),n.conflicts&&(o.doc._conflicts=R.collectConflicts(t),o.doc._conflicts.length||delete o.doc._conflicts),o}function f(e,t){return t>e?-1:e>t?1:0}function l(e,t){for(var n=0;n<e.length;n++)if(t(e[n],n)===!0)return e[n]}function d(e){return function(t,n){t||n[0]&&n[0].error?e(t||n[0]):e(null,n.length?n[0]:n)}}function h(e){for(var t=0;t<e.length;t++){var n=e[t];if(n._deleted)delete n._attachments;else if(n._attachments)for(var r=Object.keys(n._attachments),o=0;o<r.length;o++){var i=r[o];n._attachments[i]=q.pick(n._attachments[i],[\\\\\\\"data\\\\\\\",\\\\\\\"digest\\\\\\\",\\\\\\\"content_type\\\\\\\",\\\\\\\"length\\\\\\\",\\\\\\\"revpos\\\\\\\",\\\\\\\"stub\\\\\\\"])}}}function p(e,t){var n=f(e._id,t._id);if(0!==n)return n;var r=e._revisions?e._revisions.start:0,o=t._revisions?t._revisions.start:0;return f(r,o)}function v(e){var t={},n=[];return R.traverseRevTree(e,function(e,r,o,i){var a=r+\\\\\\\"-\\\\\\\"+o;return e&&(t[a]=0),void 0!==i&&n.push({from:i,to:a}),a}),n.reverse(),n.forEach(function(e){void 0===t[e.from]?t[e.from]=1+t[e.to]:t[e.from]=Math.min(t[e.from],1+t[e.to])}),t}function y(e,t,n){var r=\\\\\\\"limit\\\\\\\"in t?t.keys.slice(t.skip,t.limit+t.skip):t.skip>0?t.keys.slice(t.skip):t.keys;if(t.descending&&r.reverse(),!r.length)return e._allDocs({limit:0},n);var o={offset:t.skip};return D.all(r.map(function(n){var r=O.extend({key:n,deleted:\\\\\\\"ok\\\\\\\"},t);return[\\\\\\\"limit\\\\\\\",\\\\\\\"skip\\\\\\\",\\\\\\\"keys\\\\\\\"].forEach(function(e){delete r[e]}),new D(function(t,i){e._allDocs(r,function(e,r){return e?i(e):(o.total_rows=r.total_rows,void t(r.rows[0]||{key:n,error:\\\\\\\"not_found\\\\\\\"}))})})})).then(function(e){return o.rows=e,o})}function _(e){var t=e._compactionQueue[0],r=t.opts,o=t.callback;e.get(\\\\\\\"_local/compaction\\\\\\\")[\\\\\\\"catch\\\\\\\"](function(){return!1}).then(function(t){t&&t.last_seq&&(r.last_seq=t.last_seq),e._compact(r,function(t,r){t?o(t):o(null,r),n.nextTick(function(){e._compactionQueue.shift(),e._compactionQueue.length&&_(e)})})})}function m(e){return\\\\\\\"_\\\\\\\"===e.charAt(0)?e+\\\\\\\"is not a valid attachment name, attachment names cannot start with '_'\\\\\\\":!1}function g(){C.EventEmitter.call(this)}function b(){this.isReady=!1,this.failed=!1,this.queue=[]}function w(e){e&&r.debug&&q.guardedConsole(\\\\\\\"error\\\\\\\",e)}function k(e,t){function n(){i.emit(\\\\\\\"destroyed\\\\\\\",o)}function r(){e.removeListener(\\\\\\\"destroyed\\\\\\\",n),e.emit(\\\\\\\"destroyed\\\\\\\",e)}var o=t.originalName,i=e.constructor,a=i._destructionListeners;e.once(\\\\\\\"destroyed\\\\\\\",n),a.has(o)||a.set(o,[]),a.get(o).push(r)}function E(e,t,n){if(!(this instanceof E))return new E(e,t,n);var r=this;if(\\\\\\\"function\\\\\\\"!=typeof t&&\\\\\\\"undefined\\\\\\\"!=typeof t||(n=t,t={}),e&&\\\\\\\"object\\\\\\\"==typeof e&&(t=e,e=void 0),\\\\\\\"undefined\\\\\\\"==typeof n)n=w;else{var o=n;n=function(){return q.guardedConsole(\\\\\\\"warn\\\\\\\",\\\\\\\"Using a callback for new PouchDB()is deprecated.\\\\\\\"),o.apply(null,arguments)}}e=e||t.name,t=q.clone(t),delete t.name,this.__opts=t;var i=n;r.auto_compaction=t.auto_compaction,r.prefix=E.prefix,g.call(r),r.taskqueue=new b;var a=new D(function(o,i){n=function(e,t){return e?i(e):(delete t.then,void o(t))},t=q.clone(t);var a,s;return function(){try{if(\\\\\\\"string\\\\\\\"!=typeof e)throw s=new Error(\\\\\\\"Missing/invalid DB name\\\\\\\"),s.code=400,s;var n=(t.prefix||\\\\\\\"\\\\\\\")+e;if(a=E.parseAdapter(n,t),t.originalName=e,t.name=a.name,t.adapter=t.adapter||a.adapter,r._adapter=t.adapter,A(\\\\\\\"pouchdb:adapter\\\\\\\")(\\\\\\\"Picked adapter: \\\\\\\"+t.adapter),r._db_name=e,!E.adapters[t.adapter])throw s=new Error(\\\\\\\"Adapter is missing\\\\\\\"),s.code=404,s;if(!E.adapters[t.adapter].valid())throw s=new Error(\\\\\\\"Invalid Adapter\\\\\\\"),s.code=404,s}catch(o){r.taskqueue.fail(o)}}(),s?i(s):(r.adapter=t.adapter,r.replicate={},r.replicate.from=function(e,t,n){return r.constructor.replicate(e,r,t,n)},r.replicate.to=function(e,t,n){return r.constructor.replicate(r,e,t,n)},r.sync=function(e,t,n){return r.constructor.sync(r,e,t,n)},r.replicate.sync=r.sync,void E.adapters[t.adapter].call(r,t,function(e){return e?(r.taskqueue.fail(e),void n(e)):(k(r,t),r.emit(\\\\\\\"created\\\\\\\",r),E.emit(\\\\\\\"created\\\\\\\",t.originalName),r.taskqueue.ready(r),void n(null,r))}))});a.then(function(e){i(null,e)},i),r.then=a.then.bind(a),r[\\\\\\\"catch\\\\\\\"]=a[\\\\\\\"catch\\\\\\\"].bind(a)}function S(e){Object.keys(C.EventEmitter.prototype).forEach(function(t){\\\\\\\"function\\\\\\\"==typeof C.EventEmitter.prototype[t]&&(e[t]=B[t].bind(B))});var t=e._destructionListeners=new j.Map;e.on(\\\\\\\"destroyed\\\\\\\",function(e){t.get(e).forEach(function(e){e()}),t[\\\\\\\"delete\\\\\\\"](e)})}var O=e(13),A=o(e(8)),I=o(e(12)),D=o(e(33)),j=e(24),x=o(e(7)),C=e(10),q=e(35),R=e(32),L=o(e(37)),T=e(26);I(u,C.EventEmitter),u.prototype.cancel=function(){this.isCancelled=!0,this.db.taskqueue.isReady&&this.emit(\\\\\\\"cancel\\\\\\\")},u.prototype.doChanges=function(e){var t=this,n=e.complete;if(e=q.clone(e),\\\\\\\"live\\\\\\\"in e&&!(\\\\\\\"continuous\\\\\\\"in e)&&(e.continuous=e.live),e.processChange=c,\\\\\\\"latest\\\\\\\"===e.since&&(e.since=\\\\\\\"now\\\\\\\"),e.since||(e.since=0),\\\\\\\"now\\\\\\\"===e.since)return void this.db.info().then(function(r){return t.isCancelled?void n(null,{status:\\\\\\\"cancelled\\\\\\\"}):(e.since=r.update_seq,void t.doChanges(e))},n);if(e.continuous&&\\\\\\\"now\\\\\\\"!==e.since&&this.db.info().then(function(e){t.startSeq=e.update_seq},function(e){if(\\\\\\\"idbNull\\\\\\\"!==e.id)throw e}),e.view&&!e.filter&&(e.filter=\\\\\\\"_view\\\\\\\"),e.filter&&\\\\\\\"string\\\\\\\"==typeof e.filter&&(\\\\\\\"_view\\\\\\\"===e.filter?e.view=q.normalizeDdocFunctionName(e.view):e.filter=q.normalizeDdocFunctionName(e.filter),\\\\\\\"http\\\\\\\"!==this.db.type()&&!e.doc_ids))return this.filterChanges(e);\\\\\\\"descending\\\\\\\"in e||(e.descending=!1),e.limit=0===e.limit?1:e.limit,e.complete=n;var r=this.db._changes(e);if(r&&\\\\\\\"function\\\\\\\"==typeof r.cancel){var o=t.cancel;t.cancel=x(function(e){r.cancel(),o.apply(this,e)})}},u.prototype.filterChanges=function(e){var t=this,n=e.complete;if(\\\\\\\"_view\\\\\\\"===e.filter){if(!e.view||\\\\\\\"string\\\\\\\"!=typeof e.view){var r=T.createError(T.BAD_REQUEST,\\\\\\\"`view` filter parameter not found or invalid.\\\\\\\");return n(r)}var o=q.parseDdocFunctionName(e.view);this.db.get(\\\\\\\"_design/\\\\\\\"+o[0],function(r,i){if(t.isCancelled)return n(null,{status:\\\\\\\"cancelled\\\\\\\"});if(r)return n(T.generateErrorFromResponse(r));var s=i&&i.views&&i.views[o[1]]&&i.views[o[1]].map;return s?(e.filter=a(s),void t.doChanges(e)):n(T.createError(T.MISSING_DOC,i.views?\\\\\\\"missing json key: \\\\\\\"+o[1]:\\\\\\\"missing json key: views\\\\\\\"))})}else{var s=q.parseDdocFunctionName(e.filter);if(!s)return t.doChanges(e);this.db.get(\\\\\\\"_design/\\\\\\\"+s[0],function(r,o){if(t.isCancelled)return n(null,{status:\\\\\\\"cancelled\\\\\\\"});if(r)return n(T.generateErrorFromResponse(r));var a=o&&o.filters&&o.filters[s[1]];return a?(e.filter=i(a),void t.doChanges(e)):n(T.createError(T.MISSING_DOC,o&&o.filters?\\\\\\\"missing json key: \\\\\\\"+s[1]:\\\\\\\"missing json key: filters\\\\\\\"))})}},I(g,C.EventEmitter),g.prototype.post=q.adapterFun(\\\\\\\"post\\\\\\\",function(e,t,n){return\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={}),\\\\\\\"object\\\\\\\"!=typeof e||Array.isArray(e)?n(T.createError(T.NOT_AN_OBJECT)):void this.bulkDocs({docs:[e]},t,d(n))}),g.prototype.put=q.adapterFun(\\\\\\\"put\\\\\\\",x(function(e){function t(){a||(q.guardedConsole(\\\\\\\"warn\\\\\\\",\\\\\\\"db.put(doc, id, rev) has been deprecated and will be removed in a future release, please use db.put({_id: id, _rev: rev}) instead\\\\\\\"),a=!0)}var n,r,o,i,a=!1,s=e.shift(),u=\\\\\\\"_id\\\\\\\"in s;if(\\\\\\\"object\\\\\\\"!=typeof s||Array.isArray(s))return(i=e.pop())(T.createError(T.NOT_AN_OBJECT));for(;;)if(n=e.shift(),r=typeof n,\\\\\\\"string\\\\\\\"!==r||u?\\\\\\\"string\\\\\\\"!==r||!u||\\\\\\\"_rev\\\\\\\"in s?\\\\\\\"object\\\\\\\"===r?o=n:\\\\\\\"function\\\\\\\"===r&&(i=n):(t(),s._rev=n):(t(),s._id=n,u=!0),!e.length)break;return o=o||{},q.invalidIdError(s._id),R.isLocalId(s._id)&&\\\\\\\"function\\\\\\\"==typeof this._putLocal?s._deleted?this._removeLocal(s,i):this._putLocal(s,i):void this.bulkDocs({docs:[s]},o,d(i))})),g.prototype.putAttachment=q.adapterFun(\\\\\\\"putAttachment\\\\\\\",function(e,t,n,r,o){function i(e){var n=\\\\\\\"_rev\\\\\\\"in e?parseInt(e._rev,10):0;return e._attachments=e._attachments||{},e._attachments[t]={content_type:o,data:r,revpos:++n},a.put(e)}var a=this;return\\\\\\\"function\\\\\\\"==typeof o&&(o=r,r=n,n=null),\\\\\\\"undefined\\\\\\\"==typeof o&&(o=r,r=n,n=null),a.get(e).then(function(e){if(e._rev!==n)throw T.createError(T.REV_CONFLICT);return i(e)},function(t){if(t.reason===T.MISSING_DOC.message)return i({_id:e});throw t})}),g.prototype.removeAttachment=q.adapterFun(\\\\\\\"removeAttachment\\\\\\\",function(e,t,n,r){var o=this;o.get(e,function(e,i){return e?void r(e):i._rev!==n?void r(T.createError(T.REV_CONFLICT)):i._attachments?(delete i._attachments[t],0===Object.keys(i._attachments).length&&delete i._attachments,void o.put(i,r)):r()})}),g.prototype.remove=q.adapterFun(\\\\\\\"remove\\\\\\\",function(e,t,n,r){var o;\\\\\\\"string\\\\\\\"==typeof t?(o={_id:e,_rev:t},\\\\\\\"function\\\\\\\"==typeof n&&(r=n,n={})):(o=e,\\\\\\\"function\\\\\\\"==typeof t?(r=t,n={}):(r=n,n=t)),n=n||{},n.was_delete=!0;var i={_id:o._id,_rev:o._rev||n.rev};return i._deleted=!0,R.isLocalId(i._id)&&\\\\\\\"function\\\\\\\"==typeof this._removeLocal?this._removeLocal(o,r):void this.bulkDocs({docs:[i]},n,d(r))}),g.prototype.revsDiff=q.adapterFun(\\\\\\\"revsDiff\\\\\\\",function(e,t,n){function r(e,t){s.has(e)||s.set(e,{missing:[]}),s.get(e).missing.push(t)}function o(t,n){var o=e[t].slice(0);R.traverseRevTree(n,function(e,n,i,a,s){var u=n+\\\\\\\"-\\\\\\\"+i,c=o.indexOf(u);-1!==c&&(o.splice(c,1),\\\\\\\"available\\\\\\\"!==s.status&&r(t,u))}),o.forEach(function(e){r(t,e)})}\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={});var i=Object.keys(e);if(!i.length)return n(null,{});var a=0,s=new j.Map;i.map(function(t){this._getRevisionTree(t,function(r,u){if(r&&404===r.status&&\\\\\\\"missing\\\\\\\"===r.message)s.set(t,{missing:e[t]});else{if(r)return n(r);o(t,u)}if(++a===i.length){var c={};return s.forEach(function(e,t){c[t]=e}),n(null,c)}})},this)}),g.prototype.bulkGet=q.adapterFun(\\\\\\\"bulkGet\\\\\\\",function(e,t){q.bulkGetShim(this,e,t)}),g.prototype.compactDocument=q.adapterFun(\\\\\\\"compactDocument\\\\\\\",function(e,t,n){var r=this;this._getRevisionTree(e,function(o,i){if(o)return n(o);var a=v(i),s=[],u=[];Object.keys(a).forEach(function(e){a[e]>t&&s.push(e)}),R.traverseRevTree(i,function(e,t,n,r,o){var i=t+\\\\\\\"-\\\\\\\"+n;\\\\\\\"available\\\\\\\"===o.status&&-1!==s.indexOf(i)&&u.push(i)}),r._doCompaction(e,u,n)})}),g.prototype.compact=q.adapterFun(\\\\\\\"compact\\\\\\\",function(e,t){\\\\\\\"function\\\\\\\"==typeof e&&(t=e,e={});var n=this;e=e||{},n._compactionQueue=n._compactionQueue||[],n._compactionQueue.push({opts:e,callback:t}),1===n._compactionQueue.length&&_(n)}),g.prototype._compact=function(e,t){function n(e){a.push(o.compactDocument(e.id,0))}function r(e){var n=e.last_seq;D.all(a).then(function(){return q.upsert(o,\\\\\\\"_local/compaction\\\\\\\",function(e){return!e.last_seq||e.last_seq<n?(e.last_seq=n,e):!1})}).then(function(){t(null,{ok:!0})})[\\\\\\\"catch\\\\\\\"](t)}var o=this,i={return_docs:!1,last_seq:e.last_seq||0},a=[];o.changes(i).on(\\\\\\\"change\\\\\\\",n).on(\\\\\\\"complete\\\\\\\",r).on(\\\\\\\"error\\\\\\\",t)},g.prototype.get=q.adapterFun(\\\\\\\"get\\\\\\\",function(e,t,n){function r(){var r=[],a=o.length;return a?void o.forEach(function(o){i.get(e,{rev:o,revs:t.revs,attachments:t.attachments},function(e,t){e?r.push({missing:o}):r.push({ok:t}),a--,a||n(null,r)})}):n(null,r)}if(\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={}),\\\\\\\"string\\\\\\\"!=typeof e)return n(T.createError(T.INVALID_ID));if(R.isLocalId(e)&&\\\\\\\"function\\\\\\\"==typeof this._getLocal)return this._getLocal(e,n);var o=[],i=this;if(!t.open_revs)return this._get(e,t,function(e,r){if(e)return n(e);var o=r.doc,a=r.metadata,s=r.ctx;if(t.conflicts){var u=R.collectConflicts(a);u.length&&(o._conflicts=u)}if(R.isDeleted(a,o._rev)&&(o._deleted=!0),t.revs||t.revs_info){var c=R.rootToLeaf(a.rev_tree),f=l(c,function(e){return-1!==e.ids.map(function(e){return e.id}).indexOf(o._rev.split(\\\\\\\"-\\\\\\\")[1])}),d=f.ids.map(function(e){return e.id}).indexOf(o._rev.split(\\\\\\\"-\\\\\\\")[1])+1,h=f.ids.length-d;if(f.ids.splice(d,h),f.ids.reverse(),t.revs&&(o._revisions={start:f.pos+f.ids.length-1,ids:f.ids.map(function(e){return e.id})}),t.revs_info){var p=f.pos+f.ids.length;o._revs_info=f.ids.map(function(e){return p--,{rev:p+\\\\\\\"-\\\\\\\"+e.id,status:e.opts.status}})}}if(t.attachments&&o._attachments){var v=o._attachments,y=Object.keys(v).length;if(0===y)return n(null,o);Object.keys(v).forEach(function(e){this._getAttachment(o._id,e,v[e],{rev:o._rev,binary:t.binary,ctx:s},function(t,r){var i=o._attachments[e];i.data=r,delete i.stub,delete i.length,--y||n(null,o)})},i)}else{if(o._attachments)for(var _ in o._attachments)o._attachments.hasOwnProperty(_)&&(o._attachments[_].stub=!0);n(null,o)}});if(\\\\\\\"all\\\\\\\"===t.open_revs)this._getRevisionTree(e,function(e,t){return e?n(e):(o=R.collectLeaves(t).map(function(e){return e.rev}),void r())});else{if(!Array.isArray(t.open_revs))return n(T.createError(T.UNKNOWN_ERROR,\\\\\\\"function_clause\\\\\\\"));o=t.open_revs;for(var a=0;a<o.length;a++){var s=o[a];if(\\\\\\\"string\\\\\\\"!=typeof s||!/^\\\\\\\\d+-/.test(s))return n(T.createError(T.INVALID_REV))}r()}}),g.prototype.getAttachment=q.adapterFun(\\\\\\\"getAttachment\\\\\\\",function(e,t,n,r){var o=this;n instanceof Function&&(r=n,n={}),this._get(e,n,function(i,a){return i?r(i):a.doc._attachments&&a.doc._attachments[t]?(n.ctx=a.ctx,n.binary=!0,o._getAttachment(e,t,a.doc._attachments[t],n,r),void 0):r(T.createError(T.MISSING_DOC))})}),g.prototype.allDocs=q.adapterFun(\\\\\\\"allDocs\\\\\\\",function(e,t){if(\\\\\\\"function\\\\\\\"==typeof e&&(t=e,e={}),e.skip=\\\\\\\"undefined\\\\\\\"!=typeof e.skip?e.skip:0,e.start_key&&(e.startkey=e.start_key),e.end_key&&(e.endkey=e.end_key),\\\\\\\"keys\\\\\\\"in e){if(!Array.isArray(e.keys))return t(new TypeError(\\\\\\\"options.keys must be an array\\\\\\\"));var n=[\\\\\\\"startkey\\\\\\\",\\\\\\\"endkey\\\\\\\",\\\\\\\"key\\\\\\\"].filter(function(t){return t in e})[0];if(n)return void t(T.createError(T.QUERY_PARSE_ERROR,\\\\\\\"Query parameter `\\\\\\\"+n+\\\\\\\"` is not compatible with multi-get\\\\\\\"));if(\\\\\\\"http\\\\\\\"!==this.type())return y(this,e,t)}return this._allDocs(e,t)}),g.prototype.changes=function(e,t){return\\\\\\\"function\\\\\\\"==typeof e&&(t=e,e={}),new u(this,e,t)},g.prototype.close=q.adapterFun(\\\\\\\"close\\\\\\\",function(e){return this._closed=!0,this._close(e)}),g.prototype.info=q.adapterFun(\\\\\\\"info\\\\\\\",function(e){var t=this;this._info(function(n,r){return n?e(n):(r.db_name=r.db_name||t._db_name,r.auto_compaction=!(!t.auto_compaction||\\\\\\\"http\\\\\\\"===t.type()),r.adapter=t.type(),void e(null,r))})}),g.prototype.id=q.adapterFun(\\\\\\\"id\\\\\\\",function(e){return this._id(e)}),g.prototype.type=function(){return\\\\\\\"function\\\\\\\"==typeof this._type?this._type():this.adapter},g.prototype.bulkDocs=q.adapterFun(\\\\\\\"bulkDocs\\\\\\\",function(e,t,n){if(\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={}),t=t||{},Array.isArray(e)&&(e={docs:e}),!e||!e.docs||!Array.isArray(e.docs))return n(T.createError(T.MISSING_BULK_DOCS));for(var r=0;r<e.docs.length;++r)if(\\\\\\\"object\\\\\\\"!=typeof e.docs[r]||Array.isArray(e.docs[r]))return n(T.createError(T.NOT_AN_OBJECT));var o;return e.docs.forEach(function(e){e._attachments&&Object.keys(e._attachments).forEach(function(e){o=o||m(e)})}),o?n(T.createError(T.BAD_REQUEST,o)):(\\\\\\\"new_edits\\\\\\\"in t||(\\\\\\\"new_edits\\\\\\\"in e?t.new_edits=e.new_edits:t.new_edits=!0),t.new_edits||\\\\\\\"http\\\\\\\"===this.type()||e.docs.sort(p),h(e.docs),this._bulkDocs(e,t,function(e,r){return e?n(e):(t.new_edits||(r=r.filter(function(e){return e.error})),void n(null,r))}))}),g.prototype.registerDependentDatabase=q.adapterFun(\\\\\\\"registerDependentDatabase\\\\\\\",function(e,t){function n(t){return t.dependentDbs=t.dependentDbs||{},t.dependentDbs[e]?!1:(t.dependentDbs[e]=!0,t)}var r=new this.constructor(e,this.__opts);q.upsert(this,\\\\\\\"_local/_pouch_dependentDbs\\\\\\\",n).then(function(){t(null,{db:r})})[\\\\\\\"catch\\\\\\\"](t)}),g.prototype.destroy=q.adapterFun(\\\\\\\"destroy\\\\\\\",function(e,t){function n(){r._destroy(e,function(e,n){return e?t(e):(r._destroyed=!0,r.emit(\\\\\\\"destroyed\\\\\\\"),void t(null,n||{ok:!0}))})}\\\\\\\"function\\\\\\\"==typeof e&&(t=e,e={});var r=this,o=\\\\\\\"use_prefix\\\\\\\"in r?r.use_prefix:!0;return\\\\\\\"http\\\\\\\"===r.type()?n():void r.get(\\\\\\\"_local/_pouch_dependentDbs\\\\\\\",function(e,i){if(e)return 404!==e.status?t(e):n();var a=i.dependentDbs,s=r.constructor,u=Object.keys(a).map(function(e){var t=o?e.replace(new RegExp(\\\\\\\"^\\\\\\\"+s.prefix),\\\\\\\"\\\\\\\"):e;return new s(t,r.__opts).destroy()});D.all(u).then(n,t)})}),b.prototype.execute=function(){var e;if(this.failed)for(;e=this.queue.shift();)e(this.failed);else for(;e=this.queue.shift();)e()},b.prototype.fail=function(e){this.failed=e,this.execute()},b.prototype.ready=function(e){this.isReady=!0,this.db=e,this.execute()},b.prototype.addTask=function(e){this.queue.push(e),this.failed&&this.execute()},I(E,g),E.debug=A,E.adapters={},E.preferredAdapters=[],E.prefix=\\\\\\\"_pouch_\\\\\\\";var B=new C.EventEmitter;S(E),E.parseAdapter=function(e,t){var n,r,o=e.match(/([a-z\\\\\\\\-]*):\\\\\\\\/\\\\\\\\/(.*)/);if(o){if(e=/http(s?)/.test(o[1])?o[1]+\\\\\\\"://\\\\\\\"+o[2]:o[2],n=o[1],!E.adapters[n].valid())throw\\\\\\\"Invalid adapter\\\\\\\";return{name:e,adapter:o[1]}}var i=\\\\\\\"idb\\\\\\\"in E.adapters&&\\\\\\\"websql\\\\\\\"in E.adapters&&q.hasLocalStorage()&&localStorage[\\\\\\\"_pouch__websqldb_\\\\\\\"+E.prefix+e];if(t.adapter)r=t.adapter;else if(\\\\\\\"undefined\\\\\\\"!=typeof t&&t.db)r=\\\\\\\"leveldb\\\\\\\";else for(var a=0;a<E.preferredAdapters.length;++a)if(r=E.preferredAdapters[a],r in E.adapters){if(i&&\\\\\\\"idb\\\\\\\"===r){q.guardedConsole(\\\\\\\"log\\\\\\\",'PouchDB is downgrading \\\\\\\"'+e+'\\\\\\\" to WebSQL to avoid data loss, because it was already opened with WebSQL.');continue}break}n=E.adapters[r];var s=n&&\\\\\\\"use_prefix\\\\\\\"in n?n.use_prefix:!0;return{name:s?E.prefix+e:e,adapter:r}},E.adapter=function(e,t,n){t.valid()&&(E.adapters[e]=t,n&&E.preferredAdapters.push(e))},E.plugin=function(e){return\\\\\\\"function\\\\\\\"==typeof e?e(E):Object.keys(e).forEach(function(t){E.prototype[t]=e[t]}),E},E.defaults=function(e){function t(n,r,o){return this instanceof t?(\\\\\\\"function\\\\\\\"!=typeof r&&\\\\\\\"undefined\\\\\\\"!=typeof r||(o=r,r={}),n&&\\\\\\\"object\\\\\\\"==typeof n&&(r=n,n=void 0),r=O.extend({},e,r),void E.call(this,n,r,o)):new t(n,r,o)}return I(t,E),t.preferredAdapters=E.preferredAdapters.slice(),Object.keys(E).forEach(function(e){e in t||(t[e]=E[e])}),t};var N=\\\\\\\"5.4.4\\\\\\\";E.version=N,t.exports=E}).call(this,e(36),\\\\\\\"undefined\\\\\\\"!=typeof global?global:\\\\\\\"undefined\\\\\\\"!=typeof self?self:\\\\\\\"undefined\\\\\\\"!=typeof window?window:{})},{10:10,12:12,13:13,24:24,26:26,32:32,33:33,35:35,36:36,37:37,7:7,8:8}],26:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){Error.call(this,e.reason),this.status=e.status,this.name=e.error,this.message=e.reason,this.error=!0}function i(e,t,n){function r(t){for(var r in e)\\\\\\\"function\\\\\\\"!=typeof e[r]&&(this[r]=e[r]);void 0!==n&&(this.name=n),void 0!==t&&(this.reason=t)}return r.prototype=o.prototype,new r(t)}function a(e){var t,n,r,o,a;return n=e.error===!0&&\\\\\\\"string\\\\\\\"==typeof e.name?e.name:e.error,a=e.reason,r=R(\\\\\\\"name\\\\\\\",n,a),e.missing||\\\\\\\"missing\\\\\\\"===a||\\\\\\\"deleted\\\\\\\"===a||\\\\\\\"not_found\\\\\\\"===n?r=f:\\\\\\\"doc_validation\\\\\\\"===n?(r=b,o=a):\\\\\\\"bad_request\\\\\\\"===n&&r.message!==a&&(r=w),r||(r=R(\\\\\\\"status\\\\\\\",e.status,a)||y),t=i(r,a,n),o&&(t.message=o),e.id&&(t.id=e.id),e.status&&(t.status=e.status),e.missing&&(t.missing=e.missing),t}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var s=r(e(12));s(o,Error),o.prototype.toString=function(){return JSON.stringify({status:this.status,name:this.name,message:this.message,reason:this.reason})};var u=new o({status:401,error:\\\\\\\"unauthorized\\\\\\\",reason:\\\\\\\"Name or password is incorrect.\\\\\\\"}),c=new o({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Missing JSON list of 'docs'\\\\\\\"}),f=new o({status:404,error:\\\\\\\"not_found\\\\\\\",reason:\\\\\\\"missing\\\\\\\"}),l=new o({status:409,error:\\\\\\\"conflict\\\\\\\",reason:\\\\\\\"Document update conflict\\\\\\\"}),d=new o({status:400,error:\\\\\\\"invalid_id\\\\\\\",reason:\\\\\\\"_id field must contain a string\\\\\\\"}),h=new o({status:412,error:\\\\\\\"missing_id\\\\\\\",reason:\\\\\\\"_id is required for puts\\\\\\\"}),p=new o({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Only reserved document ids may start with underscore.\\\\\\\"}),v=new o({status:412,error:\\\\\\\"precondition_failed\\\\\\\",reason:\\\\\\\"Database not open\\\\\\\"}),y=new o({status:500,error:\\\\\\\"unknown_error\\\\\\\",reason:\\\\\\\"Database encountered an unknown error\\\\\\\"}),_=new o({status:500,error:\\\\\\\"badarg\\\\\\\",reason:\\\\\\\"Some query argument is invalid\\\\\\\"}),m=new o({status:400,error:\\\\\\\"invalid_request\\\\\\\",reason:\\\\\\\"Request was invalid\\\\\\\"}),g=new o({status:400,error:\\\\\\\"query_parse_error\\\\\\\",reason:\\\\\\\"Some query parameter is invalid\\\\\\\"}),b=new o({status:500,error:\\\\\\\"doc_validation\\\\\\\",reason:\\\\\\\"Bad special document member\\\\\\\"}),w=new o({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Something wrong with the request\\\\\\\"}),k=new o({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Document must be a JSON object\\\\\\\"}),E=new o({status:404,error:\\\\\\\"not_found\\\\\\\",reason:\\\\\\\"Database not found\\\\\\\"}),S=new o({status:500,error:\\\\\\\"indexed_db_went_bad\\\\\\\",reason:\\\\\\\"unknown\\\\\\\"}),O=new o({status:500,error:\\\\\\\"web_sql_went_bad\\\\\\\",reason:\\\\\\\"unknown\\\\\\\"}),A=new o({status:500,error:\\\\\\\"levelDB_went_went_bad\\\\\\\",reason:\\\\\\\"unknown\\\\\\\"}),I=new o({status:403,error:\\\\\\\"forbidden\\\\\\\",reason:\\\\\\\"Forbidden by design doc validate_doc_update function\\\\\\\"}),D=new o({status:400,error:\\\\\\\"bad_request\\\\\\\",reason:\\\\\\\"Invalid rev format\\\\\\\"}),j=new o({status:412,error:\\\\\\\"file_exists\\\\\\\",reason:\\\\\\\"The database could not be created, the file already exists.\\\\\\\"}),x=new o({status:412,error:\\\\\\\"missing_stub\\\\\\\"}),C=new o({status:413,error:\\\\\\\"invalid_url\\\\\\\",reason:\\\\\\\"Provided URL is invalid\\\\\\\"}),q=[u,c,f,l,d,h,p,v,y,_,m,g,b,w,k,E,O,A,I,D,j,x,S,C],R=function(e,t,n){var r=q.filter(function(n){return n[e]===t});return n&&r.filter(function(e){return e.message===n})[0]||r[0]};n.UNAUTHORIZED=u,n.MISSING_BULK_DOCS=c,n.MISSING_DOC=f,n.REV_CONFLICT=l,n.INVALID_ID=d,n.MISSING_ID=h,n.RESERVED_ID=p,n.NOT_OPEN=v,n.UNKNOWN_ERROR=y,n.BAD_ARG=_,n.INVALID_REQUEST=m,n.QUERY_PARSE_ERROR=g,n.DOC_VALIDATION=b,n.BAD_REQUEST=w,n.NOT_AN_OBJECT=k,n.DB_MISSING=E,n.WSQ_ERROR=O,n.LDB_ERROR=A,n.FORBIDDEN=I,n.INVALID_REV=D,n.FILE_EXISTS=j,n.MISSING_STUB=x,n.IDB_ERROR=S,n.INVALID_URL=C,n.getErrorTypeByProp=R,n.createError=i,n.generateErrorFromResponse=a},{12:12}],27:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){return Object.keys(e).sort(u.collate).reduce(function(t,n){return t[n]=e[n],t},{})}function i(e,t,n){var r=n.doc_ids?n.doc_ids.sort(u.collate):\\\\\\\"\\\\\\\",i=n.filter?n.filter.toString():\\\\\\\"\\\\\\\",c=\\\\\\\"\\\\\\\",f=\\\\\\\"\\\\\\\";return n.filter&&n.query_params&&(c=JSON.stringify(o(n.query_params))),n.filter&&\\\\\\\"_view\\\\\\\"===n.filter&&(f=n.view.toString()),a.all([e.id(),t.id()]).then(function(e){var t=e[0]+e[1]+i+f+c+r;return new a(function(e){s.binaryMd5(t,e)})}).then(function(e){return e=e.replace(/\\\\\\\\//g,\\\\\\\".\\\\\\\").replace(/\\\\\\\\+/g,\\\\\\\"_\\\\\\\"),\\\\\\\"_local/\\\\\\\"+e})}var a=r(e(33)),s=e(31),u=e(22);t.exports=i},{22:22,31:31,33:33}],28:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){try{return JSON.parse(e)}catch(t){return s.parse(e)}}function i(e){return e.length<5e4?JSON.parse(e):o(e)}function a(e){try{return JSON.stringify(e)}catch(t){return s.stringify(e)}}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var s=r(e(39));n.safeJsonParse=i,n.safeJsonStringify=a},{39:39}],29:[function(e,t,n){(function(t){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var o=r(e(7)),i=function(e,n){return n&&e.then(function(e){t.nextTick(function(){n(null,e)})},function(e){t.nextTick(function(){n(e)})}),e},a=function(e){return o(function(t){var n=t.pop(),r=e.apply(this,t);return\\\\\\\"function\\\\\\\"==typeof n&&i(r,n),r})},s=function(e,t){return e.then(function(e){return t().then(function(){return e})},function(e){return t().then(function(){throw e})})},u=function(e,t){return function(){var n=arguments,r=this;return e.add(function(){return t.apply(r,n)})}},c=function(e){for(var t={},n=0,r=e.length;r>n;n++)t[\\\\\\\"$\\\\\\\"+e[n]]=!0;var o=Object.keys(t),i=new Array(o.length);for(n=0,r=o.length;r>n;n++)i[n]=o[n].substring(1);return i};n.uniq=c,n.sequentialize=u,n.fin=s,n.callbackify=a,n.promisedCallback=i}).call(this,e(36))},{36:36,7:7}],30:[function(e,t,n){(function(n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(){this.promise=new K(function(e){e()})}function i(e){var t=e.db,n=e.viewName,r=e.map,o=e.reduce,i=e.temporary,a=r.toString()+(o&&o.toString())+\\\\\\\"undefined\\\\\\\";if(!i&&t._cachedViews){var s=t._cachedViews[a];if(s)return K.resolve(s)}return t.info().then(function(e){function s(e){e.views=e.views||{};var t=n;-1===t.indexOf(\\\\\\\"/\\\\\\\")&&(t=n+\\\\\\\"/\\\\\\\"+n);var r=e.views[t]=e.views[t]||{};if(!r[u])return r[u]=!0,e}var u=e.db_name+\\\\\\\"-mrview-\\\\\\\"+(i?\\\\\\\"temp\\\\\\\":J.stringMd5(a));return U.upsert(t,\\\\\\\"_local/mrviews\\\\\\\",s).then(function(){return t.registerDependentDatabase(u).then(function(e){var n=e.db;n.auto_compaction=!0;var s={name:u,db:n,sourceDB:t,adapter:t.adapter,mapFun:r,reduceFun:o};return s.db.get(\\\\\\\"_local/lastSeq\\\\\\\")[\\\\\\\"catch\\\\\\\"](function(e){if(404!==e.status)throw e}).then(function(e){return s.seq=e?e.seq:0,i||(t._cachedViews=t._cachedViews||{},t._cachedViews[a]=s,s.db.once(\\\\\\\"destroyed\\\\\\\",function(){delete t._cachedViews[a]})),s})})})})}function a(e,t,n,r,o,i){return z(\\\\\\\"return (\\\\\\\"+e.replace(/;\\\\\\\\s*$/,\\\\\\\"\\\\\\\")+\\\\\\\");\\\\\\\",{emit:t,sum:n,log:r,isArray:o,toJSON:i})}function s(e){return-1===e.indexOf(\\\\\\\"/\\\\\\\")?[e,e]:e.split(\\\\\\\"/\\\\\\\")}function u(e){return 1===e.length&&/^1-/.test(e[0].rev)}function c(e,t){try{e.emit(\\\\\\\"error\\\\\\\",t)}catch(n){U.guardedConsole(\\\\\\\"error\\\\\\\",\\\\\\\"The user's map/reduce function threw an uncaught error.\\\\\\\\nYou can debug this error by doing:\\\\\\\\nmyDatabase.on('error', function (err) { debugger; });\\\\\\\\nPlease double-check your map/reduce function.\\\\\\\"),U.guardedConsole(\\\\\\\"error\\\\\\\",t)}}function f(e,t,n){try{return{output:t.apply(null,n)}}catch(r){return c(e,r),{error:r}}}function l(e,t){var n=V.collate(e.key,t.key);return 0!==n?n:V.collate(e.value,t.value)}function d(e,t,n){return n=n||0,\\\\\\\"number\\\\\\\"==typeof t?e.slice(n,t+n):n>0?e.slice(n):e}function h(e){var t=e.value,n=t&&\\\\\\\"object\\\\\\\"==typeof t&&t._id||e.id;return n}function p(e){e.rows.forEach(function(e){var t=e.doc&&e.doc._attachments;t&&Object.keys(t).forEach(function(e){var n=t[e];t[e].data=G.base64StringToBlobOrBuffer(n.data,n.content_type)})})}function v(e){return function(t){return e.include_docs&&e.attachments&&e.binary&&p(t),t}}function y(e){var t=\\\\\\\"builtin \\\\\\\"+e+\\\\\\\" function requires map values to be numbers or number arrays\\\\\\\";return new P(t)}function _(e){for(var t=0,n=0,r=e.length;r>n;n++){var o=e[n];if(\\\\\\\"number\\\\\\\"!=typeof o){if(!Array.isArray(o))throw y(\\\\\\\"_sum\\\\\\\");t=\\\\\\\"number\\\\\\\"==typeof t?[t]:t;for(var i=0,a=o.length;a>i;i++){var s=o[i];if(\\\\\\\"number\\\\\\\"!=typeof s)throw y(\\\\\\\"_sum\\\\\\\");\\\\\\\"undefined\\\\\\\"==typeof t[i]?t.push(s):t[i]+=s}}else\\\\\\\"number\\\\\\\"==typeof t?t+=o:t[0]+=o}return t}function m(e,t,n,r){var o=t[e];\\\\\\\"undefined\\\\\\\"!=typeof o&&(r&&(o=encodeURIComponent(JSON.stringify(o))),n.push(e+\\\\\\\"=\\\\\\\"+o))}function g(e){if(\\\\\\\"undefined\\\\\\\"!=typeof e){var t=Number(e);return isNaN(t)||t!==parseInt(e,10)?e:t}}function b(e){return e.group_level=g(e.group_level),e.limit=g(e.limit),e.skip=g(e.skip),e}function w(e){if(e){if(\\\\\\\"number\\\\\\\"!=typeof e)return new M('Invalid value for integer: \\\\\\\"'+e+'\\\\\\\"');if(0>e)return new M('Invalid value for positive integer: \\\\\\\"'+e+'\\\\\\\"')}}function k(e,t){var n=e.descending?\\\\\\\"endkey\\\\\\\":\\\\\\\"startkey\\\\\\\",r=e.descending?\\\\\\\"startkey\\\\\\\":\\\\\\\"endkey\\\\\\\";if(\\\\\\\"undefined\\\\\\\"!=typeof e[n]&&\\\\\\\"undefined\\\\\\\"!=typeof e[r]&&V.collate(e[n],e[r])>0)throw new M(\\\\\\\"No rows can match your key range, reverse your start_key and end_key or set {descending : true}\\\\\\\");if(t.reduce&&e.reduce!==!1){if(e.include_docs)throw new M(\\\\\\\"{include_docs:true} is invalid for reduce\\\\\\\");if(e.keys&&e.keys.length>1&&!e.group&&!e.group_level)throw new M(\\\\\\\"Multi-key fetches for reduce views must use {group: true}\\\\\\\")}[\\\\\\\"group_level\\\\\\\",\\\\\\\"limit\\\\\\\",\\\\\\\"skip\\\\\\\"].forEach(function(t){var n=w(e[t]);if(n)throw n})}function E(e,t,n){var r,o=[],i=\\\\\\\"GET\\\\\\\";if(m(\\\\\\\"reduce\\\\\\\",n,o),m(\\\\\\\"include_docs\\\\\\\",n,o),m(\\\\\\\"attachments\\\\\\\",n,o),m(\\\\\\\"limit\\\\\\\",n,o),m(\\\\\\\"descending\\\\\\\",n,o),m(\\\\\\\"group\\\\\\\",n,o),m(\\\\\\\"group_level\\\\\\\",n,o),m(\\\\\\\"skip\\\\\\\",n,o),m(\\\\\\\"stale\\\\\\\",n,o),m(\\\\\\\"conflicts\\\\\\\",n,o),m(\\\\\\\"startkey\\\\\\\",n,o,!0),m(\\\\\\\"start_key\\\\\\\",n,o,!0),m(\\\\\\\"endkey\\\\\\\",n,o,!0),m(\\\\\\\"end_key\\\\\\\",n,o,!0),m(\\\\\\\"inclusive_end\\\\\\\",n,o),m(\\\\\\\"key\\\\\\\",n,o,!0),o=o.join(\\\\\\\"&\\\\\\\"),o=\\\\\\\"\\\\\\\"===o?\\\\\\\"\\\\\\\":\\\\\\\"?\\\\\\\"+o,\\\\\\\"undefined\\\\\\\"!=typeof n.keys){var a=2e3,u=\\\\\\\"keys=\\\\\\\"+encodeURIComponent(JSON.stringify(n.keys));u.length+o.length+1<=a?o+=(\\\\\\\"?\\\\\\\"===o[0]?\\\\\\\"&\\\\\\\":\\\\\\\"?\\\\\\\")+u:(i=\\\\\\\"POST\\\\\\\",\\\\\\\"string\\\\\\\"==typeof t?r={keys:n.keys}:t.keys=n.keys)}if(\\\\\\\"string\\\\\\\"==typeof t){var c=s(t);return e.request({method:i,url:\\\\\\\"_design/\\\\\\\"+c[0]+\\\\\\\"/_view/\\\\\\\"+c[1]+o,body:r}).then(v(n))}return r=r||{},Object.keys(t).forEach(function(e){Array.isArray(t[e])?r[e]=t[e]:r[e]=t[e].toString()}),e.request({method:\\\\\\\"POST\\\\\\\",url:\\\\\\\"_temp_view\\\\\\\"+o,body:r}).then(v(n))}function S(e,t,n){return new K(function(r,o){e._query(t,n,function(e,t){return e?o(e):void r(t)})})}function O(e){return new K(function(t,n){e._viewCleanup(function(e,r){return e?n(e):void t(r)})})}function A(e){return function(t){if(404===t.status)return e;throw t}}function I(e,t,n){function r(){return u(l)?K.resolve(s):t.db.get(a)[\\\\\\\"catch\\\\\\\"](A(s))}function o(e){return e.keys.length?t.db.allDocs({keys:e.keys,include_docs:!0}):K.resolve({rows:[]})}function i(e,t){for(var n=[],r={},o=0,i=t.rows.length;i>o;o++){var a=t.rows[o],s=a.doc;if(s&&(n.push(s),r[s._id]=!0,s._deleted=!f[s._id],!s._deleted)){var u=f[s._id];\\\\\\\"value\\\\\\\"in u&&(s.value=u.value)}}var c=Object.keys(f);return c.forEach(function(e){if(!r[e]){var t={_id:e},o=f[e];\\\\\\\"value\\\\\\\"in o&&(t.value=o.value),n.push(t)}}),e.keys=Q.uniq(c.concat(e.keys)),n.push(e),n}var a=\\\\\\\"_local/doc_\\\\\\\"+e,s={_id:a,keys:[]},c=n[e],f=c.indexableKeysToKeyValues,l=c.changes;return r().then(function(e){return o(e).then(function(t){return i(e,t)})})}function D(e,t,n){var r=\\\\\\\"_local/lastSeq\\\\\\\";return e.db.get(r)[\\\\\\\"catch\\\\\\\"](A({_id:r,seq:0})).then(function(r){var o=Object.keys(t);return K.all(o.map(function(n){return I(n,e,t)})).then(function(t){var o=U.flatten(t);return r.seq=n,o.push(r),e.db.bulkDocs({docs:o})})})}function j(e){var t=\\\\\\\"string\\\\\\\"==typeof e?e:e.name,n=W[t];return n||(n=W[t]=new o),n}function x(e){return Q.sequentialize(j(e),function(){return C(e)})()}function C(e){function t(e,t){var n={id:i._id,key:V.normalizeKey(e)};\\\\\\\"undefined\\\\\\\"!=typeof t&&null!==t&&(n.value=V.normalizeKey(t)),r.push(n)}function n(t,n){return function(){return D(e,t,n)}}var r,i,s;if(\\\\\\\"function\\\\\\\"==typeof e.mapFun&&2===e.mapFun.length){var u=e.mapFun;s=function(e){return u(e,t)}}else s=a(e.mapFun.toString(),t,_,X,Array.isArray,JSON.parse);var c=e.seq||0,d=new o;return new K(function(t,o){function a(){d.finish().then(function(){e.seq=c,t()})}function u(){function t(e){o(e)}e.sourceDB.changes({conflicts:!0,include_docs:!0,\\\\nstyle:\\\\\\\"all_docs\\\\\\\",since:c,limit:Y}).on(\\\\\\\"complete\\\\\\\",function(t){var o=t.results;if(!o.length)return a();for(var h={},p=0,v=o.length;v>p;p++){var y=o[p];if(\\\\\\\"_\\\\\\\"!==y.doc._id[0]){r=[],i=y.doc,i._deleted||f(e.sourceDB,s,[i]),r.sort(l);for(var _,m={},g=0,b=r.length;b>g;g++){var w=r[g],k=[w.key,w.id];0===V.collate(w.key,_)&&k.push(g);var E=V.toIndexableString(k);m[E]=w,_=w.key}h[y.doc._id]={indexableKeysToKeyValues:m,changes:y.changes}}c=y.seq}return d.add(n(h,c)),o.length<Y?a():u()}).on(\\\\\\\"error\\\\\\\",t)}u()})}function q(e,t,n){0===n.group_level&&delete n.group_level;var r,o=n.group||n.group_level;r=Z[e.reduceFun]?Z[e.reduceFun]:a(e.reduceFun.toString(),null,_,X,Array.isArray,JSON.parse);var i=[],s=isNaN(n.group_level)?Number.POSITIVE_INFINITY:n.group_level;t.forEach(function(e){var t=i[i.length-1],n=o?e.key:null;return o&&Array.isArray(n)&&(n=n.slice(0,s)),t&&0===V.collate(t.groupKey,n)?(t.keys.push([e.key,e.id]),void t.values.push(e.value)):void i.push({keys:[[e.key,e.id]],values:[e.value],groupKey:n})}),t=[];for(var u=0,c=i.length;c>u;u++){var l=i[u],h=f(e.sourceDB,r,[l.keys,l.values,!1]);if(h.error&&h.error instanceof P)throw h.error;t.push({value:h.error?null:h.output,key:l.groupKey})}return{rows:d(t,n.limit,n.skip)}}function R(e,t){return Q.sequentialize(j(e),function(){return L(e,t)})()}function L(e,t){function n(t){return t.include_docs=!0,e.db.allDocs(t).then(function(e){return o=e.total_rows,e.rows.map(function(e){if(\\\\\\\"value\\\\\\\"in e.doc&&\\\\\\\"object\\\\\\\"==typeof e.doc.value&&null!==e.doc.value){var t=Object.keys(e.doc.value).sort(),n=[\\\\\\\"id\\\\\\\",\\\\\\\"key\\\\\\\",\\\\\\\"value\\\\\\\"];if(!(n>t||t>n))return e.doc.value}var r=V.parseIndexableString(e.doc._id);return{key:r[0],id:r[1],value:\\\\\\\"value\\\\\\\"in e.doc?e.doc.value:null}})})}function r(n){var r;if(r=i?q(e,n,t):{total_rows:o,offset:a,rows:n},t.include_docs){var s=Q.uniq(n.map(h));return e.sourceDB.allDocs({keys:s,include_docs:!0,conflicts:t.conflicts,attachments:t.attachments,binary:t.binary}).then(function(e){var t={};return e.rows.forEach(function(e){e.doc&&(t[\\\\\\\"$\\\\\\\"+e.id]=e.doc)}),n.forEach(function(e){var n=h(e),r=t[\\\\\\\"$\\\\\\\"+n];r&&(e.doc=r)}),r})}return r}var o,i=e.reduceFun&&t.reduce!==!1,a=t.skip||0;if(\\\\\\\"undefined\\\\\\\"==typeof t.keys||t.keys.length||(t.limit=0,delete t.keys),\\\\\\\"undefined\\\\\\\"!=typeof t.keys){var s=t.keys,u=s.map(function(e){var t={startkey:V.toIndexableString([e]),endkey:V.toIndexableString([e,{}])};return n(t)});return K.all(u).then(U.flatten).then(r)}var c={descending:t.descending};if(t.start_key&&(t.startkey=t.start_key),t.end_key&&(t.endkey=t.end_key),\\\\\\\"undefined\\\\\\\"!=typeof t.startkey&&(c.startkey=t.descending?V.toIndexableString([t.startkey,{}]):V.toIndexableString([t.startkey])),\\\\\\\"undefined\\\\\\\"!=typeof t.endkey){var f=t.inclusive_end!==!1;t.descending&&(f=!f),c.endkey=V.toIndexableString(f?[t.endkey,{}]:[t.endkey])}if(\\\\\\\"undefined\\\\\\\"!=typeof t.key){var l=V.toIndexableString([t.key]),d=V.toIndexableString([t.key,{}]);c.descending?(c.endkey=l,c.startkey=d):(c.startkey=l,c.endkey=d)}return i||(\\\\\\\"number\\\\\\\"==typeof t.limit&&(c.limit=t.limit),c.skip=a),n(c).then(r)}function T(e){return e.request({method:\\\\\\\"POST\\\\\\\",url:\\\\\\\"_view_cleanup\\\\\\\"})}function B(e){return e.get(\\\\\\\"_local/mrviews\\\\\\\").then(function(t){var n={};Object.keys(t.views).forEach(function(e){var t=s(e),r=\\\\\\\"_design/\\\\\\\"+t[0],o=t[1];n[r]=n[r]||{},n[r][o]=!0});var r={keys:Object.keys(n),include_docs:!0};return e.allDocs(r).then(function(r){var o={};r.rows.forEach(function(e){var r=e.key.substring(8);Object.keys(n[e.key]).forEach(function(n){var i=r+\\\\\\\"/\\\\\\\"+n;t.views[i]||(i=n);var a=Object.keys(t.views[i]),s=e.doc&&e.doc.views&&e.doc.views[n];a.forEach(function(e){o[e]=o[e]||s})})});var i=Object.keys(o).filter(function(e){return!o[e]}),a=i.map(function(t){return Q.sequentialize(j(t),function(){return new e.constructor(t,e.__opts).destroy()})()});return K.all(a).then(function(){return{ok:!0}})})},A({ok:!0}))}function N(e,t,r){if(\\\\\\\"http\\\\\\\"===e.type())return E(e,t,r);if(\\\\\\\"function\\\\\\\"==typeof e._query)return S(e,t,r);if(\\\\\\\"string\\\\\\\"!=typeof t){k(r,t);var o={db:e,viewName:\\\\\\\"temp_view/temp_view\\\\\\\",map:t.map,reduce:t.reduce,temporary:!0};return H.add(function(){return i(o).then(function(e){function t(){return e.db.destroy()}return Q.fin(x(e).then(function(){return R(e,r)}),t)})}),H.finish()}var a=t,u=s(a),c=u[0],f=u[1];return e.get(\\\\\\\"_design/\\\\\\\"+c).then(function(t){var o=t.views&&t.views[f];if(!o||\\\\\\\"string\\\\\\\"!=typeof o.map)throw new F(\\\\\\\"ddoc \\\\\\\"+c+\\\\\\\" has no view named \\\\\\\"+f);k(r,o);var s={db:e,viewName:a,map:o.map,reduce:o.reduce};return i(s).then(function(e){return\\\\\\\"ok\\\\\\\"===r.stale||\\\\\\\"update_after\\\\\\\"===r.stale?(\\\\\\\"update_after\\\\\\\"===r.stale&&n.nextTick(function(){x(e)}),R(e,r)):x(e).then(function(){return R(e,r)})})})}function M(e){this.status=400,this.name=\\\\\\\"query_parse_error\\\\\\\",this.message=e,this.error=!0;try{Error.captureStackTrace(this,M)}catch(t){}}function F(e){this.status=404,this.name=\\\\\\\"not_found\\\\\\\",this.message=e,this.error=!0;try{Error.captureStackTrace(this,F)}catch(t){}}function P(e){this.status=500,this.name=\\\\\\\"invalid_value\\\\\\\",this.message=e,this.error=!0;try{Error.captureStackTrace(this,P)}catch(t){}}var U=e(35),G=e(20),V=e(22),K=r(e(33)),J=e(31),z=r(e(37)),Q=e(29),$=r(e(12));o.prototype.add=function(e){return this.promise=this.promise[\\\\\\\"catch\\\\\\\"](function(){}).then(function(){return e()}),this.promise},o.prototype.finish=function(){return this.promise};var W={},H=new o,Y=50,X=U.guardedConsole.bind(null,\\\\\\\"log\\\\\\\"),Z={_sum:function(e,t){return _(t)},_count:function(e,t){return t.length},_stats:function(e,t){function n(e){for(var t=0,n=0,r=e.length;r>n;n++){var o=e[n];t+=o*o}return t}return{sum:_(t),min:Math.min.apply(null,t),max:Math.max.apply(null,t),count:t.length,sumsqr:n(t)}}},ee=Q.callbackify(function(){var e=this;return\\\\\\\"http\\\\\\\"===e.type()?T(e):\\\\\\\"function\\\\\\\"==typeof e._viewCleanup?O(e):B(e)}),te=function(e,t,n){\\\\\\\"function\\\\\\\"==typeof t&&(n=t,t={}),t=t?b(t):{},\\\\\\\"function\\\\\\\"==typeof e&&(e={map:e});var r=this,o=K.resolve().then(function(){return N(r,e,t)});return Q.promisedCallback(o,n),o};$(M,Error),$(F,Error),$(P,Error);var ne={query:te,viewCleanup:ee};t.exports=ne}).call(this,e(36))},{12:12,20:20,22:22,29:29,31:31,33:33,35:35,36:36,37:37}],31:[function(e,t,n){(function(t){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){return c.btoa(e)}function i(e,t,n,r){(n>0||r<t.byteLength)&&(t=new Uint8Array(t,n,Math.min(r,t.byteLength)-n)),e.append(t)}function a(e,t,n,r){(n>0||r<t.length)&&(t=t.substring(n,r)),e.appendBinary(t)}function s(e,t){function n(){var r=h*u,i=r+u;if(h++,c>h)v(p,e,r,i),l(n);else{v(p,e,r,i);var a=p.end(!0),s=o(a);t(s),p.destroy()}}var r=\\\\\\\"string\\\\\\\"==typeof e,s=r?e.length:e.byteLength,u=Math.min(d,s),c=Math.ceil(s/u),h=0,p=r?new f:new f.ArrayBuffer,v=r?a:i;n()}function u(e){return f.hash(e)}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var c=e(20),f=r(e(38)),l=t.setImmediate||t.setTimeout,d=32768;n.binaryMd5=s,n.stringMd5=u}).call(this,\\\\\\\"undefined\\\\\\\"!=typeof global?global:\\\\\\\"undefined\\\\\\\"!=typeof self?self:\\\\\\\"undefined\\\\\\\"!=typeof window?window:{})},{20:20,38:38}],32:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){for(var t,n,r,o,i=e.rev_tree.slice();o=i.pop();){var a=o.ids,s=a[2],u=o.pos;if(s.length)for(var c=0,f=s.length;f>c;c++)i.push({pos:u+1,ids:s[c]});else{var l=!!a[1].deleted,d=a[0];t&&!(r!==l?r:n!==u?u>n:d>t)||(t=d,n=u,r=l)}}return n+\\\\\\\"-\\\\\\\"+t}function o(e,t){for(var n,r=e.slice();n=r.pop();)for(var o=n.pos,i=n.ids,a=i[2],s=t(0===a.length,o,i[0],n.ctx,i[1]),u=0,c=a.length;c>u;u++)r.push({pos:o+1,ids:a[u],ctx:s})}function i(e,t){return e.pos-t.pos}function a(e){var t=[];o(e,function(e,n,r,o,i){e&&t.push({rev:n+\\\\\\\"-\\\\\\\"+r,pos:n,opts:i})}),t.sort(i).reverse();for(var n=0,r=t.length;r>n;n++)delete t[n].pos;return t}function s(e){for(var t=r(e),n=a(e.rev_tree),o=[],i=0,s=n.length;s>i;i++){var u=n[i];u.rev===t||u.opts.deleted||o.push(u.rev)}return o}function u(e){var t=[];return o(e.rev_tree,function(e,n,r,o,i){\\\\\\\"available\\\\\\\"!==i.status||e||(t.push(n+\\\\\\\"-\\\\\\\"+r),i.status=\\\\\\\"missing\\\\\\\")}),t}function c(e){for(var t,n=[],r=e.slice();t=r.pop();){var o=t.pos,i=t.ids,a=i[0],s=i[1],u=i[2],c=0===u.length,f=t.history?t.history.slice():[];f.push({id:a,opts:s}),c&&n.push({pos:o+1-f.length,ids:f});for(var l=0,d=u.length;d>l;l++)r.push({pos:o+1,ids:u[l],history:f})}return n.reverse()}function f(e,t){return e.pos-t.pos}function l(e,t,n){for(var r,o=0,i=e.length;i>o;)r=o+i>>>1,n(e[r],t)<0?o=r+1:i=r;return o}function d(e,t,n){var r=l(e,t,n);e.splice(r,0,t)}function h(e,t){for(var n,r,o=t,i=e.length;i>o;o++){var a=e[o],s=[a.id,a.opts,[]];r?(r[2].push(s),r=s):n=r=s}return n}function p(e,t){return e[0]<t[0]?-1:1}function v(e,t){for(var n=[{tree1:e,tree2:t}],r=!1;n.length>0;){var o=n.pop(),i=o.tree1,a=o.tree2;(i[1].status||a[1].status)&&(i[1].status=\\\\\\\"available\\\\\\\"===i[1].status||\\\\\\\"available\\\\\\\"===a[1].status?\\\\\\\"available\\\\\\\":\\\\\\\"missing\\\\\\\");for(var s=0;s<a[2].length;s++)if(i[2][0]){for(var u=!1,c=0;c<i[2].length;c++)i[2][c][0]===a[2][s][0]&&(n.push({tree1:i[2][c],tree2:a[2][s]}),u=!0);u||(r=\\\\\\\"new_branch\\\\\\\",d(i[2],a[2][s],p))}else r=\\\\\\\"new_leaf\\\\\\\",i[2][0]=a[2][s]}return{conflicts:r,tree:e}}function y(e,t,n){var r,o=[],i=!1,a=!1;if(!e.length)return{tree:[t],conflicts:\\\\\\\"new_leaf\\\\\\\"};for(var s=0,u=e.length;u>s;s++){var c=e[s];if(c.pos===t.pos&&c.ids[0]===t.ids[0])r=v(c.ids,t.ids),o.push({pos:c.pos,ids:r.tree}),i=i||r.conflicts,a=!0;else if(n!==!0){var l=c.pos<t.pos?c:t,d=c.pos<t.pos?t:c,h=d.pos-l.pos,p=[],y=[];for(y.push({ids:l.ids,diff:h,parent:null,parentIdx:null});y.length>0;){var _=y.pop();if(0!==_.diff)for(var m=_.ids[2],g=0,b=m.length;b>g;g++)y.push({ids:m[g],diff:_.diff-1,parent:_.ids,parentIdx:g});else _.ids[0]===d.ids[0]&&p.push(_)}var w=p[0];w?(r=v(w.ids,d.ids),w.parent[2][w.parentIdx]=r.tree,o.push({pos:l.pos,ids:l.ids}),i=i||r.conflicts,a=!0):o.push(c)}else o.push(c)}return a||o.push(t),o.sort(f),{tree:o,conflicts:i||\\\\\\\"internal_node\\\\\\\"}}function _(e,t){for(var n,r=c(e),i={},a=0,s=r.length;s>a;a++){for(var u=r[a],f=u.ids,l=Math.max(0,f.length-t),d={pos:u.pos+l,ids:h(f,l)},p=0;l>p;p++){var v=u.pos+p+\\\\\\\"-\\\\\\\"+f[p].id;i[v]=!0}n=n?y(n,d,!0).tree:[d]}return o(n,function(e,t,n){delete i[t+\\\\\\\"-\\\\\\\"+n]}),{tree:n,revs:Object.keys(i)}}function m(e,t,n){var r=y(e,t),o=_(r.tree,n);return{tree:o.tree,stemmedRevs:o.revs,conflicts:r.conflicts}}function g(e,t){for(var n,r=e.slice(),o=t.split(\\\\\\\"-\\\\\\\"),i=parseInt(o[0],10),a=o[1];n=r.pop();){if(n.pos===i&&n.ids[0]===a)return!0;for(var s=n.ids[2],u=0,c=s.length;c>u;u++)r.push({pos:n.pos+1,ids:s[u]})}return!1}function b(e){return e.ids}function w(e,t){t||(t=r(e));for(var n,o=t.substring(t.indexOf(\\\\\\\"-\\\\\\\")+1),i=e.rev_tree.map(b);n=i.pop();){if(n[0]===o)return!!n[1].deleted;i=i.concat(n[2])}}function k(e){return/^_local/.test(e)}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0}),n.collectConflicts=s,n.collectLeaves=a,n.compactTree=u,n.isDeleted=w,n.isLocalId=k,n.merge=m,n.revExists=g,n.rootToLeaf=c,n.traverseRevTree=o,n.winningRev=r},{}],33:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}var o=r(e(14)),i=\\\\\\\"function\\\\\\\"==typeof Promise?Promise:o;t.exports=i},{14:14}],34:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){return/^1-/.test(e)}function i(e,t,n){return!e._attachments||!e._attachments[n]||e._attachments[n].digest!==t._attachments[n].digest}function a(e,t){var n=Object.keys(t._attachments);return g.all(n.map(function(n){return e.getAttachment(t._id,n,{rev:t._rev})}))}function s(e,t,n){var r=\\\\\\\"http\\\\\\\"===t.type()&&\\\\\\\"http\\\\\\\"!==e.type(),o=Object.keys(n._attachments);return r?e.get(n._id).then(function(r){return g.all(o.map(function(o){return i(r,n,o)?t.getAttachment(n._id,o):e.getAttachment(r._id,o)}))})[\\\\\\\"catch\\\\\\\"](function(e){if(404!==e.status)throw e;return a(t,n)}):a(t,n)}function u(e){var t=[];return Object.keys(e).forEach(function(n){var r=e[n].missing;r.forEach(function(e){t.push({id:n,rev:e})})}),{docs:t,revs:!0}}function c(e,t,n,r){function i(){var o=u(n);if(o.docs.length)return e.bulkGet(o).then(function(n){if(r.cancelled)throw new Error(\\\\\\\"cancelled\\\\\\\");return g.all(n.results.map(function(n){return g.all(n.docs.map(function(n){var r=n.ok;return n.error&&(h=!1),r&&r._attachments?s(t,e,r).then(function(e){var t=Object.keys(r._attachments);return e.forEach(function(e,n){var o=r._attachments[t[n]];delete o.stub,delete o.length,o.data=e}),r}):r}))})).then(function(e){d=d.concat(m.flatten(e).filter(Boolean))})})}function a(e){return e._attachments&&Object.keys(e._attachments).length>0}function c(t){return e.allDocs({keys:t,include_docs:!0}).then(function(e){if(r.cancelled)throw new Error(\\\\\\\"cancelled\\\\\\\");e.rows.forEach(function(e){!e.deleted&&e.doc&&o(e.value.rev)&&!a(e.doc)&&(d.push(e.doc),delete n[e.id])})})}function f(){var e=Object.keys(n).filter(function(e){var t=n[e].missing;return 1===t.length&&o(t[0])});return e.length>0?c(e):void 0}function l(){return{ok:h,docs:d}}n=m.clone(n);var d=[],h=!0;return g.resolve().then(f).then(i).then(l)}function f(e,t,n,r){return e.retry===!1?(t.emit(\\\\\\\"error\\\\\\\",n),void t.removeAllListeners()):(\\\\\\\"function\\\\\\\"!=typeof e.back_off_function&&(e.back_off_function=m.defaultBackOff),t.emit(\\\\\\\"requestError\\\\\\\",n),\\\\\\\"active\\\\\\\"!==t.state&&\\\\\\\"pending\\\\\\\"!==t.state||(t.emit(\\\\\\\"paused\\\\\\\",n),t.state=\\\\\\\"stopped\\\\\\\",t.once(\\\\\\\"active\\\\\\\",function(){e.current_back_off=A})),e.current_back_off=e.current_back_off||A,e.current_back_off=e.back_off_function(e.current_back_off),void setTimeout(r,e.current_back_off))}function l(e,t,n,r,o){function i(){return j?g.resolve():w(e,t,n).then(function(n){D=n,j=new b(e,t,D,r)})}function a(){if(G=[],0!==I.docs.length){var e=I.docs;return t.bulkDocs({docs:e,new_edits:!1}).then(function(t){if(r.cancelled)throw y(),new Error(\\\\\\\"cancelled\\\\\\\");var n=[],i={};t.forEach(function(e){e.error&&(o.doc_write_failures++,n.push(e),i[e.id]=e)}),U=U.concat(n),o.docs_written+=I.docs.length-n.length;var a=n.filter(function(e){return\\\\\\\"unauthorized\\\\\\\"!==e.name&&\\\\\\\"forbidden\\\\\\\"!==e.name});if(e.forEach(function(e){var t=i[e._id];t?r.emit(\\\\\\\"denied\\\\\\\",m.clone(t)):G.push(e)}),a.length>0){var s=new Error(\\\\\\\"bulkDocs error\\\\\\\");throw s.other_errors=n,v(\\\\\\\"target.bulkDocs failed to write docs\\\\\\\",s),new Error(\\\\\\\"bulkWrite partial failure\\\\\\\")}},function(t){throw o.doc_write_failures+=e.length,t})}}function s(){if(I.error)throw new Error(\\\\\\\"There was a problem getting docs.\\\\\\\");o.last_seq=T=I.seq;var e=m.clone(o);return G.length&&(e.docs=G,r.emit(\\\\\\\"change\\\\\\\",e)),q=!0,j.writeCheckpoint(I.seq,V).then(function(){if(q=!1,r.cancelled)throw y(),new Error(\\\\\\\"cancelled\\\\\\\");I=void 0,S()})[\\\\\\\"catch\\\\\\\"](A)}function u(){var e={};return I.changes.forEach(function(t){\\\\\\\"_user/\\\\\\\"!==t.id&&(e[t.id]=t.changes.map(function(e){return e.rev}))}),t.revsDiff(e).then(function(e){if(r.cancelled)throw y(),new Error(\\\\\\\"cancelled\\\\\\\");I.diffs=e})}function d(){return c(e,t,I.diffs,r).then(function(e){I.error=!e.ok,e.docs.forEach(function(e){delete I.diffs[e._id],o.docs_read++,I.docs.push(e)})})}function h(){if(!r.cancelled&&!I){if(0===x.length)return void p(!0);I=x.shift(),u().then(d).then(a).then(s).then(h)[\\\\\\\"catch\\\\\\\"](function(e){v(\\\\\\\"batch processing terminated with error\\\\\\\",e)})}}function p(e){return 0===C.changes.length?void(0!==x.length||I||((B&&K.live||R)&&(r.state=\\\\\\\"pending\\\\\\\",r.emit(\\\\\\\"paused\\\\\\\")),R&&y())):void((e||R||C.changes.length>=N)&&(x.push(C),C={seq:0,changes:[],docs:[]},\\\\\\\"pending\\\\\\\"!==r.state&&\\\\\\\"stopped\\\\\\\"!==r.state||(r.state=\\\\\\\"active\\\\\\\",r.emit(\\\\\\\"active\\\\\\\")),h()))}function v(e,t){L||(t.message||(t.message=e),o.ok=!1,o.status=\\\\\\\"aborting\\\\\\\",o.errors.push(t),U=U.concat(t),x=[],C={seq:0,changes:[],docs:[]},y())}function y(){if(!(L||r.cancelled&&(o.status=\\\\\\\"cancelled\\\\\\\",q))){o.status=o.status||\\\\\\\"complete\\\\\\\",o.end_time=new Date,o.last_seq=T,L=!0;var i=U.filter(function(e){return\\\\\\\"unauthorized\\\\\\\"!==e.name&&\\\\\\\"forbidden\\\\\\\"!==e.name});if(i.length>0){var a=U.pop();U.length>0&&(a.other_errors=U),a.result=o,f(n,r,a,function(){l(e,t,n,r)})}else o.errors=U,r.emit(\\\\\\\"complete\\\\\\\",o),r.removeAllListeners()}}function _(e){if(r.cancelled)return y();var t=m.filterChange(n)(e);t&&(C.seq=e.seq,C.changes.push(e),p(0===x.length&&K.live))}function k(e){if(F=!1,r.cancelled)return y();if(e.results.length>0)K.since=e.last_seq,S(),p(!0);else{var t=function(){B?(K.live=!0,S()):R=!0,p(!0)};I||0!==e.results.length?t():(q=!0,j.writeCheckpoint(e.last_seq,V).then(function(){q=!1,o.last_seq=T=e.last_seq,t()})[\\\\\\\"catch\\\\\\\"](A))}}function E(e){return F=!1,r.cancelled?y():void v(\\\\\\\"changes rejected\\\\\\\",e)}function S(){function t(){i.cancel()}function o(){r.removeListener(\\\\\\\"cancel\\\\\\\",t)}if(!F&&!R&&x.length<M){F=!0,r._changes&&(r.removeListener(\\\\\\\"cancel\\\\\\\",r._abortChanges),r._changes.cancel()),r.once(\\\\\\\"cancel\\\\\\\",t);var i=e.changes(K).on(\\\\\\\"change\\\\\\\",_);i.then(o,o),i.then(k)[\\\\\\\"catch\\\\\\\"](E),n.retry&&(r._changes=i,r._abortChanges=t)}}function O(){i().then(function(){return r.cancelled?void y():j.getCheckpoint().then(function(e){T=e,K={since:T,limit:N,batch_size:N,style:\\\\\\\"all_docs\\\\\\\",doc_ids:P,return_docs:!0},n.filter&&(\\\\\\\"string\\\\\\\"!=typeof n.filter?K.include_docs=!0:K.filter=n.filter),\\\\\\\"heartbeat\\\\\\\"in n&&(K.heartbeat=n.heartbeat),\\\\\\\"timeout\\\\\\\"in n&&(K.timeout=n.timeout),n.query_params&&(K.query_params=n.query_params),n.view&&(K.view=n.view),S()})})[\\\\\\\"catch\\\\\\\"](function(e){v(\\\\\\\"getCheckpoint rejected with \\\\\\\",e)})}function A(e){throw q=!1,v(\\\\\\\"writeCheckpoint completed with error\\\\\\\",e),e}var I,D,j,x=[],C={seq:0,changes:[],docs:[]},q=!1,R=!1,L=!1,T=0,B=n.continuous||n.live||!1,N=n.batch_size||100,M=n.batches_limit||10,F=!1,P=n.doc_ids,U=[],G=[],V=m.uuid();o=o||{ok:!0,start_time:new Date,docs_read:0,docs_written:0,doc_write_failures:0,errors:[]};var K={};return r.ready(e,t),r.cancelled?void y():(r._addedListeners||(r.once(\\\\\\\"cancel\\\\\\\",y),\\\\\\\"function\\\\\\\"==typeof n.complete&&(r.once(\\\\\\\"error\\\\\\\",n.complete),r.once(\\\\\\\"complete\\\\\\\",function(e){n.complete(null,e)})),r._addedListeners=!0),void(\\\\\\\"undefined\\\\\\\"==typeof n.since?O():i().then(function(){return q=!0,j.writeCheckpoint(n.since,V)}).then(function(){return q=!1,r.cancelled?void y():(T=n.since,void O())})[\\\\\\\"catch\\\\\\\"](A)))}function d(){k.EventEmitter.call(this),this.cancelled=!1,this.state=\\\\\\\"pending\\\\\\\";var e=this,t=new g(function(t,n){e.once(\\\\\\\"complete\\\\\\\",t),e.once(\\\\\\\"error\\\\\\\",n)});e.then=function(e,n){return t.then(e,n)},e[\\\\\\\"catch\\\\\\\"]=function(e){return t[\\\\\\\"catch\\\\\\\"](e)},e[\\\\\\\"catch\\\\\\\"](function(){})}function h(e,t){var n=t.PouchConstructor;return\\\\\\\"string\\\\\\\"==typeof e?new n(e,t):e}function p(e,t,n,r){if(\\\\\\\"function\\\\\\\"==typeof n&&(r=n,n={}),\\\\\\\"undefined\\\\\\\"==typeof n&&(n={}),n.doc_ids&&!Array.isArray(n.doc_ids))throw S.createError(S.BAD_REQUEST,\\\\\\\"`doc_ids` filter parameter is not a list.\\\\\\\");n.complete=r,n=m.clone(n),n.continuous=n.continuous||n.live,n.retry=\\\\\\\"retry\\\\\\\"in n?n.retry:!1,n.PouchConstructor=n.PouchConstructor||this;var o=new d(n),i=h(e,n),a=h(t,n);return l(i,a,n,o),o}function v(e,t,n,r){return\\\\\\\"function\\\\\\\"==typeof n&&(r=n,n={}),\\\\\\\"undefined\\\\\\\"==typeof n&&(n={}),n=m.clone(n),n.PouchConstructor=n.PouchConstructor||this,e=h(e,n),t=h(t,n),new y(e,t,n,r)}function y(e,t,n,r){function o(e){h.emit(\\\\\\\"change\\\\\\\",{direction:\\\\\\\"pull\\\\\\\",change:e})}function i(e){h.emit(\\\\\\\"change\\\\\\\",{direction:\\\\\\\"push\\\\\\\",change:e})}function a(e){h.emit(\\\\\\\"denied\\\\\\\",{direction:\\\\\\\"push\\\\\\\",doc:e})}function s(e){h.emit(\\\\\\\"denied\\\\\\\",{direction:\\\\\\\"pull\\\\\\\",doc:e})}function u(){h.pushPaused=!0,h.pullPaused&&h.emit(\\\\\\\"paused\\\\\\\")}function c(){h.pullPaused=!0,h.pushPaused&&h.emit(\\\\\\\"paused\\\\\\\")}function f(){h.pushPaused=!1,h.pullPaused&&h.emit(\\\\\\\"active\\\\\\\",{direction:\\\\\\\"push\\\\\\\"})}function l(){h.pullPaused=!1,h.pushPaused&&h.emit(\\\\\\\"active\\\\\\\",{direction:\\\\\\\"pull\\\\\\\"})}function d(e){return function(t,n){var r=\\\\\\\"change\\\\\\\"===t&&(n===o||n===i),d=\\\\\\\"denied\\\\\\\"===t&&(n===s||n===a),p=\\\\\\\"paused\\\\\\\"===t&&(n===c||n===u),v=\\\\\\\"active\\\\\\\"===t&&(n===l||n===f);(r||d||p||v)&&(t in _||(_[t]={}),_[t][e]=!0,2===Object.keys(_[t]).length&&h.removeAllListeners(t))}}var h=this;this.canceled=!1;var v=n.push?O.extend({},n,n.push):n,y=n.pull?O.extend({},n,n.pull):n;this.push=p(e,t,v),this.pull=p(t,e,y),this.pushPaused=!0,this.pullPaused=!0;var _={};n.live&&(this.push.on(\\\\\\\"complete\\\\\\\",h.pull.cancel.bind(h.pull)),this.pull.on(\\\\\\\"complete\\\\\\\",h.push.cancel.bind(h.push))),this.on(\\\\\\\"newListener\\\\\\\",function(e){\\\\\\\"change\\\\\\\"===e?(h.pull.on(\\\\\\\"change\\\\\\\",o),h.push.on(\\\\\\\"change\\\\\\\",i)):\\\\\\\"denied\\\\\\\"===e?(h.pull.on(\\\\\\\"denied\\\\\\\",s),h.push.on(\\\\\\\"denied\\\\\\\",a)):\\\\\\\"active\\\\\\\"===e?(h.pull.on(\\\\\\\"active\\\\\\\",l),h.push.on(\\\\\\\"active\\\\\\\",f)):\\\\\\\"paused\\\\\\\"===e&&(h.pull.on(\\\\\\\"paused\\\\\\\",c),h.push.on(\\\\\\\"paused\\\\\\\",u))}),this.on(\\\\\\\"removeListener\\\\\\\",function(e){\\\\\\\"change\\\\\\\"===e?(h.pull.removeListener(\\\\\\\"change\\\\\\\",o),h.push.removeListener(\\\\\\\"change\\\\\\\",i)):\\\\\\\"denied\\\\\\\"===e?(h.pull.removeListener(\\\\\\\"denied\\\\\\\",s),h.push.removeListener(\\\\\\\"denied\\\\\\\",a)):\\\\\\\"active\\\\\\\"===e?(h.pull.removeListener(\\\\\\\"active\\\\\\\",l),h.push.removeListener(\\\\\\\"active\\\\\\\",f)):\\\\\\\"paused\\\\\\\"===e&&(h.pull.removeListener(\\\\\\\"paused\\\\\\\",c),h.push.removeListener(\\\\\\\"paused\\\\\\\",u))}),this.pull.on(\\\\\\\"removeListener\\\\\\\",d(\\\\\\\"pull\\\\\\\")),this.push.on(\\\\\\\"removeListener\\\\\\\",d(\\\\\\\"push\\\\\\\"));var m=g.all([this.push,this.pull]).then(function(e){var t={push:e[0],pull:e[1]};return h.emit(\\\\\\\"complete\\\\\\\",t),r&&r(null,t),h.removeAllListeners(),t},function(e){if(h.cancel(),r?r(e):h.emit(\\\\\\\"error\\\\\\\",e),h.removeAllListeners(),r)throw e});this.then=function(e,t){return m.then(e,t)},this[\\\\\\\"catch\\\\\\\"]=function(e){return m[\\\\\\\"catch\\\\\\\"](e)}}function _(e){e.replicate=p,e.sync=v}var m=e(35),g=r(e(33)),b=r(e(21)),w=r(e(27)),k=e(10),E=r(e(12)),S=e(26),O=e(13),A=0;E(d,k.EventEmitter),d.prototype.cancel=function(){this.cancelled=!0,this.state=\\\\\\\"cancelled\\\\\\\",this.emit(\\\\\\\"cancel\\\\\\\")},d.prototype.ready=function(e,t){function n(){o.cancel()}function r(){e.removeListener(\\\\\\\"destroyed\\\\\\\",n),t.removeListener(\\\\\\\"destroyed\\\\\\\",n)}var o=this;o._readyCalled||(o._readyCalled=!0,e.once(\\\\\\\"destroyed\\\\\\\",n),t.once(\\\\\\\"destroyed\\\\\\\",n),o.once(\\\\\\\"complete\\\\\\\",r))},E(y,k.EventEmitter),y.prototype.cancel=function(){this.canceled||(this.canceled=!0,this.push.cancel(),this.pull.cancel())},t.exports=_},{10:10,12:12,13:13,21:21,26:26,27:27,33:33,35:35}],35:[function(e,t,n){(function(t){\\\\\\\"use strict\\\\\\\";function r(e){return e&&\\\\\\\"object\\\\\\\"==typeof e&&\\\\\\\"default\\\\\\\"in e?e[\\\\\\\"default\\\\\\\"]:e}function o(e){return e instanceof ArrayBuffer||\\\\\\\"undefined\\\\\\\"!=typeof Blob&&e instanceof Blob}function i(e){if(\\\\\\\"function\\\\\\\"==typeof e.slice)return e.slice(0);var t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t),r=new Uint8Array(e);return n.set(r),t}function a(e){if(e instanceof ArrayBuffer)return i(e);var t=e.size,n=e.type;return\\\\\\\"function\\\\\\\"==typeof e.slice?e.slice(0,t,n):e.webkitSlice(0,t,n)}function s(e){var t=Object.getPrototypeOf(e);if(null===t)return!0;var n=t.constructor;return\\\\\\\"function\\\\\\\"==typeof n&&n instanceof n&&Q.call(n)==$}function u(e){var t,n,r;if(!e||\\\\\\\"object\\\\\\\"!=typeof e)return e;if(Array.isArray(e)){for(t=[],n=0,r=e.length;r>n;n++)t[n]=u(e[n]);return t}if(e instanceof Date)return e.toISOString();if(o(e))return a(e);if(!s(e))return e;t={};for(n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var i=u(e[n]);\\\\\\\"undefined\\\\\\\"!=typeof i&&(t[n]=i)}return t}function c(e){var t=!1;return G(function(n){if(t)throw new Error(\\\\\\\"once called more than once\\\\\\\");t=!0,e.apply(this,n)})}function f(e){return G(function(n){n=u(n);var r,o=this,i=\\\\\\\"function\\\\\\\"==typeof n[n.length-1]?n.pop():!1;i&&(r=function(e,n){t.nextTick(function(){i(e,n)})});var a=new U(function(t,r){var i;try{var a=c(function(e,n){e?r(e):t(n)});n.push(a),i=e.apply(o,n),i&&\\\\\\\"function\\\\\\\"==typeof i.then&&t(i)}catch(s){r(s)}});return r&&a.then(function(e){r(null,e)},r),a})}function l(e,t){function n(e,t,n){if(W.enabled){for(var r=[e._db_name,t],o=0;o<n.length-1;o++)r.push(n[o]);W.apply(null,r);var i=n[n.length-1];n[n.length-1]=function(n,r){var o=[e._db_name,t];o=o.concat(n?[\\\\\\\"error\\\\\\\",n]:[\\\\\\\"success\\\\\\\",r]),W.apply(null,o),i(n,r)}}}return f(G(function(r){if(this._closed)return U.reject(new Error(\\\\\\\"database is closed\\\\\\\"));if(this._destroyed)return U.reject(new Error(\\\\\\\"database is destroyed\\\\\\\"));var o=this;return n(o,e,r),this.taskqueue.isReady?t.apply(this,r):new U(function(t,n){o.taskqueue.addTask(function(i){i?n(i):t(o[e].apply(o,r))})})}))}function d(e,t){for(var n={},r=0,o=t.length;o>r;r++){var i=t[r];i in e&&(n[i]=e[i])}return n}function h(e){return e}function p(e){return[{ok:e}]}function v(e,t,n){function r(){var e=[];v.forEach(function(t){t.docs.forEach(function(n){e.push({id:t.id,docs:[n]})})}),n(null,{results:e})}function o(){++l===f&&r()}function i(e,t,n){v[e]={id:t,docs:n},o()}function a(){if(!(_>=y.length)){var e=Math.min(_+H,y.length),t=y.slice(_,e);s(t,_),_+=t.length}}function s(n,r){n.forEach(function(n,o){var s=r+o,u=c[n],f=d(u[0],[\\\\\\\"atts_since\\\\\\\",\\\\\\\"attachments\\\\\\\"]);f.open_revs=u.map(function(e){return e.rev}),f.open_revs=f.open_revs.filter(h);var l=h;0===f.open_revs.length&&(delete f.open_revs,l=p),[\\\\\\\"revs\\\\\\\",\\\\\\\"attachments\\\\\\\",\\\\\\\"binary\\\\\\\",\\\\\\\"ajax\\\\\\\"].forEach(function(e){e in t&&(f[e]=t[e])}),e.get(n,f,function(e,t){var r;r=e?[{error:e}]:l(t),i(s,n,r),a()})})}var u=t.docs,c={};u.forEach(function(e){e.id in c?c[e.id].push(e):c[e.id]=[e]});var f=Object.keys(c).length,l=0,v=new Array(f),y=Object.keys(c),_=0;a()}function y(){return\\\\\\\"undefined\\\\\\\"!=typeof chrome&&\\\\\\\"undefined\\\\\\\"!=typeof chrome.storage&&\\\\\\\"undefined\\\\\\\"!=typeof chrome.storage.local}function _(){return P}function m(e){y()?chrome.storage.onChanged.addListener(function(t){null!=t.db_name&&e.emit(t.dbName.newValue)}):_()&&(\\\\\\\"undefined\\\\\\\"!=typeof addEventListener?addEventListener(\\\\\\\"storage\\\\\\\",function(t){e.emit(t.key)}):window.attachEvent(\\\\\\\"storage\\\\\\\",function(t){e.emit(t.key)}))}function g(){K.EventEmitter.call(this),this._listeners={},m(this)}function b(e){if(\\\\\\\"undefined\\\\\\\"!==console&&e in console){var t=Array.prototype.slice.call(arguments,1);console[e].apply(console,t)}}function w(e,t){var n=6e5;e=parseInt(e,10)||0,t=parseInt(t,10),t!==t||e>=t?t=(e||1)<<1:t+=1,t>n&&(e=n>>1,t=n);var r=Math.random(),o=t-e;return~~(o*r+e)}function k(e){var t=0;return e||(t=2e3),w(e,t)}function E(e,t){b(\\\\\\\"info\\\\\\\",\\\\\\\"The above \\\\\\\"+e+\\\\\\\" is totally normal. \\\\\\\"+t)}function S(e,t){for(var n in t)if(t.hasOwnProperty(n)){var r=u(t[n]);\\\\\\\"undefined\\\\\\\"!=typeof r&&(e[n]=r)}}function O(e,t,n){return S(e,t),n&&S(e,n),e}function A(e,t,n){try{return!e(t,n)}catch(r){var o=\\\\\\\"Filter function threw: \\\\\\\"+r.toString();return z.createError(z.BAD_REQUEST,o)}}function I(e){var t={},n=e.filter&&\\\\\\\"function\\\\\\\"==typeof e.filter;return t.query=e.query_params,function(r){r.doc||(r.doc={});var o=n&&A(e.filter,r.doc,t);if(\\\\\\\"object\\\\\\\"==typeof o)return o;if(o)return!1;if(e.include_docs){if(!e.attachments)for(var i in r.doc._attachments)r.doc._attachments.hasOwnProperty(i)&&(r.doc._attachments[i].stub=!0)}else delete r.doc;return!0}}function D(e){for(var t=[],n=0,r=e.length;r>n;n++)t=t.concat(e[n]);return t}function j(){}function x(e){var t;if(e?\\\\\\\"string\\\\\\\"!=typeof e?t=z.createError(z.INVALID_ID):/^_/.test(e)&&!/^_(design|local)/.test(e)&&(t=z.createError(z.RESERVED_ID)):t=z.createError(z.MISSING_ID),t)throw t}function C(){return\\\\\\\"undefined\\\\\\\"!=typeof cordova||\\\\\\\"undefined\\\\\\\"!=typeof PhoneGap||\\\\\\\"undefined\\\\\\\"!=typeof phonegap}function q(e,t){return\\\\\\\"listenerCount\\\\\\\"in e?e.listenerCount(t):K.EventEmitter.listenerCount(e,t)}function R(e){if(!e)return null;var t=e.split(\\\\\\\"/\\\\\\\");return 2===t.length?t:1===t.length?[e,e]:null}function L(e){var t=R(e);return t?t.join(\\\\\\\"/\\\\\\\"):null}function T(e){for(var t=oe.exec(e),n={},r=14;r--;){var o=te[r],i=t[r]||\\\\\\\"\\\\\\\",a=-1!==[\\\\\\\"user\\\\\\\",\\\\\\\"password\\\\\\\"].indexOf(o);n[o]=a?decodeURIComponent(i):i}return n[ne]={},n[te[12]].replace(re,function(e,t,r){t&&(n[ne][t]=r)}),n}function B(e,t,n){return new U(function(r,o){e.get(t,function(i,a){if(i){if(404!==i.status)return o(i);a={}}var s=a._rev,u=n(a);return u?(u._id=t,u._rev=s,void r(N(e,u,n))):r({updated:!1,rev:s})})})}function N(e,t,n){return e.put(t).then(function(e){return{updated:!0,rev:e.rev}},function(r){if(409!==r.status)throw r;return B(e,t._id,n)})}function M(e){return 0|Math.random()*e}function F(e,t){t=t||ie.length;var n=\\\\\\\"\\\\\\\",r=-1;if(e){for(;++r<e;)n+=ie[M(t)];return n}for(;++r<36;)switch(r){case 8:case 13:case 18:case 23:n+=\\\\\\\"-\\\\\\\";break;case 19:n+=ie[3&M(16)|8];break;default:n+=ie[M(16)]}return n}Object.defineProperty(n,\\\\\\\"__esModule\\\\\\\",{value:!0});var P,U=r(e(33)),G=r(e(7)),V=r(e(8)),K=e(10),J=r(e(12)),z=e(26),Q=Function.prototype.toString,$=Q.call(Object),W=V(\\\\\\\"pouchdb:api\\\\\\\"),H=6;if(y())P=!1;else try{localStorage.setItem(\\\\\\\"_pouch_check_localstorage\\\\\\\",1),P=!!localStorage.getItem(\\\\\\\"_pouch_check_localstorage\\\\\\\")}catch(Y){P=!1}J(g,K.EventEmitter),g.prototype.addListener=function(e,t,n,r){function o(){function e(){a=!1}if(i._listeners[t]){if(a)return void(a=\\\\\\\"waiting\\\\\\\");a=!0;var s=d(r,[\\\\\\\"style\\\\\\\",\\\\\\\"include_docs\\\\\\\",\\\\\\\"attachments\\\\\\\",\\\\\\\"conflicts\\\\\\\",\\\\\\\"filter\\\\\\\",\\\\\\\"doc_ids\\\\\\\",\\\\\\\"view\\\\\\\",\\\\\\\"since\\\\\\\",\\\\\\\"query_params\\\\\\\",\\\\\\\"binary\\\\\\\"]);n.changes(s).on(\\\\\\\"change\\\\\\\",function(e){e.seq>r.since&&!r.cancelled&&(r.since=e.seq,r.onChange(e))}).on(\\\\\\\"complete\\\\\\\",function(){\\\\\\\"waiting\\\\\\\"===a&&setTimeout(function(){o()},0),a=!1}).on(\\\\\\\"error\\\\\\\",e)}}if(!this._listeners[t]){var i=this,a=!1;this._listeners[t]=o,this.on(e,o)}},g.prototype.removeListener=function(e,t){t in this._listeners&&K.EventEmitter.prototype.removeListener.call(this,e,this._listeners[t])},g.prototype.notifyLocalWindows=function(e){y()?chrome.storage.local.set({dbName:e}):_()&&(localStorage[e]=\\\\\\\"a\\\\\\\"===localStorage[e]?\\\\\\\"b\\\\\\\":\\\\\\\"a\\\\\\\")},g.prototype.notify=function(e){this.emit(e),this.notifyLocalWindows(e)};var X,Z=j.name;X=Z?function(e){return e.name}:function(e){return e.toString().match(/^\\\\\\\\s*function\\\\\\\\s*(\\\\\\\\S*)\\\\\\\\s*\\\\\\\\(/)[1]};var ee=X,te=[\\\\\\\"source\\\\\\\",\\\\\\\"protocol\\\\\\\",\\\\\\\"authority\\\\\\\",\\\\\\\"userInfo\\\\\\\",\\\\\\\"user\\\\\\\",\\\\\\\"password\\\\\\\",\\\\\\\"host\\\\\\\",\\\\\\\"port\\\\\\\",\\\\\\\"relative\\\\\\\",\\\\\\\"path\\\\\\\",\\\\\\\"directory\\\\\\\",\\\\\\\"file\\\\\\\",\\\\\\\"query\\\\\\\",\\\\\\\"anchor\\\\\\\"],ne=\\\\\\\"queryKey\\\\\\\",re=/(?:^|&)([^&=]*)=?([^&]*)/g,oe=/^(?:(?![^:@]+:[^:@\\\\\\\\/]*@)([^:\\\\\\\\/?#.]+):)?(?:\\\\\\\\/\\\\\\\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\\\\\\\/?#]*)(?::(\\\\\\\\d*))?)(((\\\\\\\\/(?:[^?#](?![^?#\\\\\\\\/]*\\\\\\\\.[^?#\\\\\\\\/.]+(?:[?#]|$)))*\\\\\\\\/?)?([^?#\\\\\\\\/]*))(?:\\\\\\\\?([^#]*))?(?:#(.*))?)/,ie=\\\\\\\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\\\\\\\".split(\\\\\\\"\\\\\\\");n.adapterFun=l,n.bulkGetShim=v,n.changesHandler=g,n.clone=u,n.defaultBackOff=k,n.explainError=E,n.extend=O,n.filterChange=I,n.flatten=D,n.functionName=ee,n.guardedConsole=b,n.hasLocalStorage=_,n.invalidIdError=x,n.isChromeApp=y,n.isCordova=C,n.listenerCount=q,n.normalizeDdocFunctionName=L,n.once=c,n.parseDdocFunctionName=R,n.parseUri=T,n.pick=d,n.toPromise=f,n.upsert=B,n.uuid=F}).call(this,e(36))},{10:10,12:12,26:26,33:33,36:36,7:7,8:8}],36:[function(e,t,n){function r(){if(!s){s=!0;for(var e,t=a.length;t;){e=a,a=[];for(var n=-1;++n<t;)e[n]();t=a.length}s=!1}}function o(){}var i=t.exports={},a=[],s=!1;i.nextTick=function(e){a.push(e),s||setTimeout(r,0)},i.title=\\\\\\\"browser\\\\\\\",i.browser=!0,i.env={},i.argv=[],i.version=\\\\\\\"\\\\\\\",i.versions={},i.on=o,i.addListener=o,i.once=o,i.off=o,i.removeListener=o,i.removeAllListeners=o,i.emit=o,i.binding=function(e){throw new Error(\\\\\\\"process.binding is not supported\\\\\\\")},i.cwd=function(){return\\\\\\\"/\\\\\\\"},i.chdir=function(e){throw new Error(\\\\\\\"process.chdir is not supported\\\\\\\")},i.umask=function(){return 0}},{}],37:[function(e,t,n){(function(){var e={}.hasOwnProperty,n=[].slice;t.exports=function(t,r){var o,i,a,s;i=[],s=[];for(o in r)e.call(r,o)&&(a=r[o],\\\\\\\"this\\\\\\\"!==o&&(i.push(o),s.push(a)));return Function.apply(null,n.call(i).concat([t])).apply(r[\\\\\\\"this\\\\\\\"],s)}}).call(this)},{}],38:[function(e,t,n){!function(e){if(\\\\\\\"object\\\\\\\"==typeof n)t.exports=e();else if(\\\\\\\"function\\\\\\\"==typeof define&&define.amd)define(e);else{var r;try{r=window}catch(o){r=self}r.SparkMD5=e()}}(function(e){\\\\\\\"use strict\\\\\\\";function t(e,t,n,r,o,i){return t=g(g(t,e),g(r,i)),g(t<<o|t>>>32-o,n)}function n(e,n,r,o,i,a,s){return t(n&r|~n&o,e,n,i,a,s)}function r(e,n,r,o,i,a,s){return t(n&o|r&~o,e,n,i,a,s)}function o(e,n,r,o,i,a,s){return t(n^r^o,e,n,i,a,s)}function i(e,n,r,o,i,a,s){return t(r^(n|~o),e,n,i,a,s)}function a(e,t){var a=e[0],s=e[1],u=e[2],c=e[3];a=n(a,s,u,c,t[0],7,-680876936),c=n(c,a,s,u,t[1],12,-389564586),u=n(u,c,a,s,t[2],17,606105819),s=n(s,u,c,a,t[3],22,-1044525330),a=n(a,s,u,c,t[4],7,-176418897),c=n(c,a,s,u,t[5],12,1200080426),u=n(u,c,a,s,t[6],17,-1473231341),s=n(s,u,c,a,t[7],22,-45705983),a=n(a,s,u,c,t[8],7,1770035416),c=n(c,a,s,u,t[9],12,-1958414417),u=n(u,c,a,s,t[10],17,-42063),s=n(s,u,c,a,t[11],22,-1990404162),a=n(a,s,u,c,t[12],7,1804603682),c=n(c,a,s,u,t[13],12,-40341101),u=n(u,c,a,s,t[14],17,-1502002290),s=n(s,u,c,a,t[15],22,1236535329),a=r(a,s,u,c,t[1],5,-165796510),c=r(c,a,s,u,t[6],9,-1069501632),u=r(u,c,a,s,t[11],14,643717713),s=r(s,u,c,a,t[0],20,-373897302),a=r(a,s,u,c,t[5],5,-701558691),c=r(c,a,s,u,t[10],9,38016083),u=r(u,c,a,s,t[15],14,-660478335),s=r(s,u,c,a,t[4],20,-405537848),a=r(a,s,u,c,t[9],5,568446438),c=r(c,a,s,u,t[14],9,-1019803690),u=r(u,c,a,s,t[3],14,-187363961),s=r(s,u,c,a,t[8],20,1163531501),a=r(a,s,u,c,t[13],5,-1444681467),c=r(c,a,s,u,t[2],9,-51403784),u=r(u,c,a,s,t[7],14,1735328473),s=r(s,u,c,a,t[12],20,-1926607734),a=o(a,s,u,c,t[5],4,-378558),\\\\nc=o(c,a,s,u,t[8],11,-2022574463),u=o(u,c,a,s,t[11],16,1839030562),s=o(s,u,c,a,t[14],23,-35309556),a=o(a,s,u,c,t[1],4,-1530992060),c=o(c,a,s,u,t[4],11,1272893353),u=o(u,c,a,s,t[7],16,-155497632),s=o(s,u,c,a,t[10],23,-1094730640),a=o(a,s,u,c,t[13],4,681279174),c=o(c,a,s,u,t[0],11,-358537222),u=o(u,c,a,s,t[3],16,-722521979),s=o(s,u,c,a,t[6],23,76029189),a=o(a,s,u,c,t[9],4,-640364487),c=o(c,a,s,u,t[12],11,-421815835),u=o(u,c,a,s,t[15],16,530742520),s=o(s,u,c,a,t[2],23,-995338651),a=i(a,s,u,c,t[0],6,-198630844),c=i(c,a,s,u,t[7],10,1126891415),u=i(u,c,a,s,t[14],15,-1416354905),s=i(s,u,c,a,t[5],21,-57434055),a=i(a,s,u,c,t[12],6,1700485571),c=i(c,a,s,u,t[3],10,-1894986606),u=i(u,c,a,s,t[10],15,-1051523),s=i(s,u,c,a,t[1],21,-2054922799),a=i(a,s,u,c,t[8],6,1873313359),c=i(c,a,s,u,t[15],10,-30611744),u=i(u,c,a,s,t[6],15,-1560198380),s=i(s,u,c,a,t[13],21,1309151649),a=i(a,s,u,c,t[4],6,-145523070),c=i(c,a,s,u,t[11],10,-1120210379),u=i(u,c,a,s,t[2],15,718787259),s=i(s,u,c,a,t[9],21,-343485551),e[0]=g(a,e[0]),e[1]=g(s,e[1]),e[2]=g(u,e[2]),e[3]=g(c,e[3])}function s(e){var t,n=[];for(t=0;64>t;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}function u(e){var t,n=[];for(t=0;64>t;t+=4)n[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return n}function c(e){var t,n,r,o,i,u,c=e.length,f=[1732584193,-271733879,-1732584194,271733878];for(t=64;c>=t;t+=64)a(f,s(e.substring(t-64,t)));for(e=e.substring(t-64),n=e.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;n>t;t+=1)r[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(a(f,r),t=0;16>t;t+=1)r[t]=0;return o=8*c,o=o.toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(o[2],16),u=parseInt(o[1],16)||0,r[14]=i,r[15]=u,a(f,r),f}function f(e){var t,n,r,o,i,s,c=e.length,f=[1732584193,-271733879,-1732584194,271733878];for(t=64;c>=t;t+=64)a(f,u(e.subarray(t-64,t)));for(e=c>t-64?e.subarray(t-64):new Uint8Array(0),n=e.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;n>t;t+=1)r[t>>2]|=e[t]<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(a(f,r),t=0;16>t;t+=1)r[t]=0;return o=8*c,o=o.toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(o[2],16),s=parseInt(o[1],16)||0,r[14]=i,r[15]=s,a(f,r),f}function l(e){var t,n=\\\\\\\"\\\\\\\";for(t=0;4>t;t+=1)n+=b[e>>8*t+4&15]+b[e>>8*t&15];return n}function d(e){var t;for(t=0;t<e.length;t+=1)e[t]=l(e[t]);return e.join(\\\\\\\"\\\\\\\")}function h(e){return/[\\\\\\\\u0080-\\\\\\\\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function p(e,t){var n,r=e.length,o=new ArrayBuffer(r),i=new Uint8Array(o);for(n=0;r>n;n+=1)i[n]=e.charCodeAt(n);return t?i:o}function v(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function y(e,t,n){var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e)),r.set(new Uint8Array(t),e.byteLength),n?r:r.buffer}function _(e){var t,n=[],r=e.length;for(t=0;r-1>t;t+=2)n.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,n)}function m(){this.reset()}var g=function(e,t){return e+t&4294967295},b=[\\\\\\\"0\\\\\\\",\\\\\\\"1\\\\\\\",\\\\\\\"2\\\\\\\",\\\\\\\"3\\\\\\\",\\\\\\\"4\\\\\\\",\\\\\\\"5\\\\\\\",\\\\\\\"6\\\\\\\",\\\\\\\"7\\\\\\\",\\\\\\\"8\\\\\\\",\\\\\\\"9\\\\\\\",\\\\\\\"a\\\\\\\",\\\\\\\"b\\\\\\\",\\\\\\\"c\\\\\\\",\\\\\\\"d\\\\\\\",\\\\\\\"e\\\\\\\",\\\\\\\"f\\\\\\\"];return\\\\\\\"5d41402abc4b2a76b9719d911017c592\\\\\\\"!==d(c(\\\\\\\"hello\\\\\\\"))&&(g=function(e,t){var n=(65535&e)+(65535&t),r=(e>>16)+(t>>16)+(n>>16);return r<<16|65535&n}),\\\\\\\"undefined\\\\\\\"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||!function(){function t(e,t){return e=0|e||0,0>e?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,r){var o,i,a,s,u=this.byteLength,c=t(n,u),f=u;return r!==e&&(f=t(r,u)),c>f?new ArrayBuffer(0):(o=f-c,i=new ArrayBuffer(o),a=new Uint8Array(i),s=new Uint8Array(this,c,o),a.set(s),i)}}(),m.prototype.append=function(e){return this.appendBinary(h(e)),this},m.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,n=this._buff.length;for(t=64;n>=t;t+=64)a(this._hash,s(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},m.prototype.end=function(e){var t,n,r=this._buff,o=r.length,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;o>t;t+=1)i[t>>2]|=r.charCodeAt(t)<<(t%4<<3);return this._finish(i,o),n=d(this._hash),e&&(n=_(n)),this.reset(),n},m.prototype.reset=function(){return this._buff=\\\\\\\"\\\\\\\",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},m.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash}},m.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},m.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},m.prototype._finish=function(e,t){var n,r,o,i=t;if(e[i>>2]|=128<<(i%4<<3),i>55)for(a(this._hash,e),i=0;16>i;i+=1)e[i]=0;n=8*this._length,n=n.toString(16).match(/(.*?)(.{0,8})$/),r=parseInt(n[2],16),o=parseInt(n[1],16)||0,e[14]=r,e[15]=o,a(this._hash,e)},m.hash=function(e,t){return m.hashBinary(h(e),t)},m.hashBinary=function(e,t){var n=c(e),r=d(n);return t?_(r):r},m.ArrayBuffer=function(){this.reset()},m.ArrayBuffer.prototype.append=function(e){var t,n=y(this._buff.buffer,e,!0),r=n.length;for(this._length+=e.byteLength,t=64;r>=t;t+=64)a(this._hash,u(n.subarray(t-64,t)));return this._buff=r>t-64?new Uint8Array(n.buffer.slice(t-64)):new Uint8Array(0),this},m.ArrayBuffer.prototype.end=function(e){var t,n,r=this._buff,o=r.length,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;o>t;t+=1)i[t>>2]|=r[t]<<(t%4<<3);return this._finish(i,o),n=d(this._hash),e&&(n=_(n)),this.reset(),n},m.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},m.ArrayBuffer.prototype.getState=function(){var e=m.prototype.getState.call(this);return e.buff=v(e.buff),e},m.ArrayBuffer.prototype.setState=function(e){return e.buff=p(e.buff,!0),m.prototype.setState.call(this,e)},m.ArrayBuffer.prototype.destroy=m.prototype.destroy,m.ArrayBuffer.prototype._finish=m.prototype._finish,m.ArrayBuffer.hash=function(e,t){var n=f(new Uint8Array(e)),r=d(n);return t?_(r):r},m})},{}],39:[function(e,t,n){\\\\\\\"use strict\\\\\\\";function r(e,t,n){var r=n[n.length-1];e===r.element&&(n.pop(),r=n[n.length-1]);var o=r.element,i=r.index;if(Array.isArray(o))o.push(e);else if(i===t.length-2){var a=t.pop();o[a]=e}else t.push(e)}n.stringify=function(e){var t=[];t.push({obj:e});for(var n,r,o,i,a,s,u,c,f,l,d,h=\\\\\\\"\\\\\\\";n=t.pop();)if(r=n.obj,o=n.prefix||\\\\\\\"\\\\\\\",i=n.val||\\\\\\\"\\\\\\\",h+=o,i)h+=i;else if(\\\\\\\"object\\\\\\\"!=typeof r)h+=\\\\\\\"undefined\\\\\\\"==typeof r?null:JSON.stringify(r);else if(null===r)h+=\\\\\\\"null\\\\\\\";else if(Array.isArray(r)){for(t.push({val:\\\\\\\"]\\\\\\\"}),a=r.length-1;a>=0;a--)s=0===a?\\\\\\\"\\\\\\\":\\\\\\\",\\\\\\\",t.push({obj:r[a],prefix:s});t.push({val:\\\\\\\"[\\\\\\\"})}else{u=[];for(c in r)r.hasOwnProperty(c)&&u.push(c);for(t.push({val:\\\\\\\"}\\\\\\\"}),a=u.length-1;a>=0;a--)f=u[a],l=r[f],d=a>0?\\\\\\\",\\\\\\\":\\\\\\\"\\\\\\\",d+=JSON.stringify(f)+\\\\\\\":\\\\\\\",t.push({obj:l,prefix:d});t.push({val:\\\\\\\"{\\\\\\\"})}return h},n.parse=function(e){for(var t,n,o,i,a,s,u,c,f,l=[],d=[],h=0;;)if(t=e[h++],\\\\\\\"}\\\\\\\"!==t&&\\\\\\\"]\\\\\\\"!==t&&\\\\\\\"undefined\\\\\\\"!=typeof t)switch(t){case\\\\\\\" \\\\\\\":case\\\\\\\"\\\\t\\\\\\\":case\\\\\\\"\\\\\\\\n\\\\\\\":case\\\\\\\":\\\\\\\":case\\\\\\\",\\\\\\\":break;case\\\\\\\"n\\\\\\\":h+=3,r(null,l,d);break;case\\\\\\\"t\\\\\\\":h+=3,r(!0,l,d);break;case\\\\\\\"f\\\\\\\":h+=4,r(!1,l,d);break;case\\\\\\\"0\\\\\\\":case\\\\\\\"1\\\\\\\":case\\\\\\\"2\\\\\\\":case\\\\\\\"3\\\\\\\":case\\\\\\\"4\\\\\\\":case\\\\\\\"5\\\\\\\":case\\\\\\\"6\\\\\\\":case\\\\\\\"7\\\\\\\":case\\\\\\\"8\\\\\\\":case\\\\\\\"9\\\\\\\":case\\\\\\\"-\\\\\\\":for(n=\\\\\\\"\\\\\\\",h--;;){if(o=e[h++],!/[\\\\\\\\d\\\\\\\\.\\\\\\\\-e\\\\\\\\+]/.test(o)){h--;break}n+=o}r(parseFloat(n),l,d);break;case'\\\\\\\"':for(i=\\\\\\\"\\\\\\\",a=void 0,s=0;;){if(u=e[h++],'\\\\\\\"'===u&&(\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\"!==a||s%2!==1))break;i+=u,a=u,\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\"===a?s++:s=0}r(JSON.parse('\\\\\\\"'+i+'\\\\\\\"'),l,d);break;case\\\\\\\"[\\\\\\\":c={element:[],index:l.length},l.push(c.element),d.push(c);break;case\\\\\\\"{\\\\\\\":f={element:{},index:l.length},l.push(f.element),d.push(f);break;default:throw new Error(\\\\\\\"unexpectedly reached end of input: \\\\\\\"+t)}else{if(1===l.length)return l.pop();r(l.pop(),l,d)}}},{}]},{},[1]);\\\";\\n},{}],11:[function(_dereq_,module,exports){\\n\\n/**\\n * This is the web browser implementation of `debug()`.\\n *\\n * Expose `debug()` as the module.\\n */\\n\\nexports = module.exports = _dereq_(12);\\nexports.log = log;\\nexports.formatArgs = formatArgs;\\nexports.save = save;\\nexports.load = load;\\nexports.useColors = useColors;\\nexports.storage = 'undefined' != typeof chrome\\n               && 'undefined' != typeof chrome.storage\\n                  ? chrome.storage.local\\n                  : localstorage();\\n\\n/**\\n * Colors.\\n */\\n\\nexports.colors = [\\n  'lightseagreen',\\n  'forestgreen',\\n  'goldenrod',\\n  'dodgerblue',\\n  'darkorchid',\\n  'crimson'\\n];\\n\\n/**\\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\\n * and the Firebug extension (any Firefox version) are known\\n * to support \\\"%c\\\" CSS customizations.\\n *\\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\\n */\\n\\nfunction useColors() {\\n  // is webkit? http://stackoverflow.com/a/16459606/376773\\n  return ('WebkitAppearance' in document.documentElement.style) ||\\n    // is firebug? http://stackoverflow.com/a/398120/376773\\n    (window.console && (console.firebug || (console.exception && console.table))) ||\\n    // is firefox >= v31?\\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\\n    (navigator.userAgent.toLowerCase().match(/firefox\\\\/(\\\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\\n}\\n\\n/**\\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\\n */\\n\\nexports.formatters.j = function(v) {\\n  return JSON.stringify(v);\\n};\\n\\n\\n/**\\n * Colorize log arguments if enabled.\\n *\\n * @api public\\n */\\n\\nfunction formatArgs() {\\n  var args = arguments;\\n  var useColors = this.useColors;\\n\\n  args[0] = (useColors ? '%c' : '')\\n    + this.namespace\\n    + (useColors ? ' %c' : ' ')\\n    + args[0]\\n    + (useColors ? '%c ' : ' ')\\n    + '+' + exports.humanize(this.diff);\\n\\n  if (!useColors) return args;\\n\\n  var c = 'color: ' + this.color;\\n  args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\\n\\n  // the final \\\"%c\\\" is somewhat tricky, because there could be other\\n  // arguments passed either before or after the %c, so we need to\\n  // figure out the correct index to insert the CSS into\\n  var index = 0;\\n  var lastC = 0;\\n  args[0].replace(/%[a-z%]/g, function(match) {\\n    if ('%%' === match) return;\\n    index++;\\n    if ('%c' === match) {\\n      // we only are interested in the *last* %c\\n      // (the user may have provided their own)\\n      lastC = index;\\n    }\\n  });\\n\\n  args.splice(lastC, 0, c);\\n  return args;\\n}\\n\\n/**\\n * Invokes `console.log()` when available.\\n * No-op when `console.log` is not a \\\"function\\\".\\n *\\n * @api public\\n */\\n\\nfunction log() {\\n  // this hackery is required for IE8/9, where\\n  // the `console.log` function doesn't have 'apply'\\n  return 'object' === typeof console\\n    && console.log\\n    && Function.prototype.apply.call(console.log, console, arguments);\\n}\\n\\n/**\\n * Save `namespaces`.\\n *\\n * @param {String} namespaces\\n * @api private\\n */\\n\\nfunction save(namespaces) {\\n  try {\\n    if (null == namespaces) {\\n      exports.storage.removeItem('debug');\\n    } else {\\n      exports.storage.debug = namespaces;\\n    }\\n  } catch(e) {}\\n}\\n\\n/**\\n * Load `namespaces`.\\n *\\n * @return {String} returns the previously persisted debug modes\\n * @api private\\n */\\n\\nfunction load() {\\n  var r;\\n  try {\\n    r = exports.storage.debug;\\n  } catch(e) {}\\n  return r;\\n}\\n\\n/**\\n * Enable namespaces listed in `localStorage.debug` initially.\\n */\\n\\nexports.enable(load());\\n\\n/**\\n * Localstorage attempts to return the localstorage.\\n *\\n * This is necessary because safari throws\\n * when a user disables cookies/localstorage\\n * and you attempt to access it.\\n *\\n * @return {LocalStorage}\\n * @api private\\n */\\n\\nfunction localstorage(){\\n  try {\\n    return window.localStorage;\\n  } catch (e) {}\\n}\\n\\n},{\\\"12\\\":12}],12:[function(_dereq_,module,exports){\\n\\n/**\\n * This is the common logic for both the Node.js and web browser\\n * implementations of `debug()`.\\n *\\n * Expose `debug()` as the module.\\n */\\n\\nexports = module.exports = debug;\\nexports.coerce = coerce;\\nexports.disable = disable;\\nexports.enable = enable;\\nexports.enabled = enabled;\\nexports.humanize = _dereq_(17);\\n\\n/**\\n * The currently active debug mode names, and names to skip.\\n */\\n\\nexports.names = [];\\nexports.skips = [];\\n\\n/**\\n * Map of special \\\"%n\\\" handling functions, for the debug \\\"format\\\" argument.\\n *\\n * Valid key names are a single, lowercased letter, i.e. \\\"n\\\".\\n */\\n\\nexports.formatters = {};\\n\\n/**\\n * Previously assigned color.\\n */\\n\\nvar prevColor = 0;\\n\\n/**\\n * Previous log timestamp.\\n */\\n\\nvar prevTime;\\n\\n/**\\n * Select a color.\\n *\\n * @return {Number}\\n * @api private\\n */\\n\\nfunction selectColor() {\\n  return exports.colors[prevColor++ % exports.colors.length];\\n}\\n\\n/**\\n * Create a debugger with the given `namespace`.\\n *\\n * @param {String} namespace\\n * @return {Function}\\n * @api public\\n */\\n\\nfunction debug(namespace) {\\n\\n  // define the `disabled` version\\n  function disabled() {\\n  }\\n  disabled.enabled = false;\\n\\n  // define the `enabled` version\\n  function enabled() {\\n\\n    var self = enabled;\\n\\n    // set `diff` timestamp\\n    var curr = +new Date();\\n    var ms = curr - (prevTime || curr);\\n    self.diff = ms;\\n    self.prev = prevTime;\\n    self.curr = curr;\\n    prevTime = curr;\\n\\n    // add the `color` if not set\\n    if (null == self.useColors) self.useColors = exports.useColors();\\n    if (null == self.color && self.useColors) self.color = selectColor();\\n\\n    var args = Array.prototype.slice.call(arguments);\\n\\n    args[0] = exports.coerce(args[0]);\\n\\n    if ('string' !== typeof args[0]) {\\n      // anything else let's inspect with %o\\n      args = ['%o'].concat(args);\\n    }\\n\\n    // apply any `formatters` transformations\\n    var index = 0;\\n    args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\\n      // if we encounter an escaped % then don't increase the array index\\n      if (match === '%%') return match;\\n      index++;\\n      var formatter = exports.formatters[format];\\n      if ('function' === typeof formatter) {\\n        var val = args[index];\\n        match = formatter.call(self, val);\\n\\n        // now we need to remove `args[index]` since it's inlined in the `format`\\n        args.splice(index, 1);\\n        index--;\\n      }\\n      return match;\\n    });\\n\\n    if ('function' === typeof exports.formatArgs) {\\n      args = exports.formatArgs.apply(self, args);\\n    }\\n    var logFn = enabled.log || exports.log || console.log.bind(console);\\n    logFn.apply(self, args);\\n  }\\n  enabled.enabled = true;\\n\\n  var fn = exports.enabled(namespace) ? enabled : disabled;\\n\\n  fn.namespace = namespace;\\n\\n  return fn;\\n}\\n\\n/**\\n * Enables a debug mode by namespaces. This can include modes\\n * separated by a colon and wildcards.\\n *\\n * @param {String} namespaces\\n * @api public\\n */\\n\\nfunction enable(namespaces) {\\n  exports.save(namespaces);\\n\\n  var split = (namespaces || '').split(/[\\\\s,]+/);\\n  var len = split.length;\\n\\n  for (var i = 0; i < len; i++) {\\n    if (!split[i]) continue; // ignore empty strings\\n    namespaces = split[i].replace(/\\\\*/g, '.*?');\\n    if (namespaces[0] === '-') {\\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\\n    } else {\\n      exports.names.push(new RegExp('^' + namespaces + '$'));\\n    }\\n  }\\n}\\n\\n/**\\n * Disable debug output.\\n *\\n * @api public\\n */\\n\\nfunction disable() {\\n  exports.enable('');\\n}\\n\\n/**\\n * Returns true if the given mode name is enabled, false otherwise.\\n *\\n * @param {String} name\\n * @return {Boolean}\\n * @api public\\n */\\n\\nfunction enabled(name) {\\n  var i, len;\\n  for (i = 0, len = exports.skips.length; i < len; i++) {\\n    if (exports.skips[i].test(name)) {\\n      return false;\\n    }\\n  }\\n  for (i = 0, len = exports.names.length; i < len; i++) {\\n    if (exports.names[i].test(name)) {\\n      return true;\\n    }\\n  }\\n  return false;\\n}\\n\\n/**\\n * Coerce `val`.\\n *\\n * @param {Mixed} val\\n * @return {Mixed}\\n * @api private\\n */\\n\\nfunction coerce(val) {\\n  if (val instanceof Error) return val.stack || val.message;\\n  return val;\\n}\\n\\n},{\\\"17\\\":17}],13:[function(_dereq_,module,exports){\\n(function (global){\\n'use strict';\\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\\n\\nvar scheduleDrain;\\n\\n{\\n  if (Mutation) {\\n    var called = 0;\\n    var observer = new Mutation(nextTick);\\n    var element = global.document.createTextNode('');\\n    observer.observe(element, {\\n      characterData: true\\n    });\\n    scheduleDrain = function () {\\n      element.data = (called = ++called % 2);\\n    };\\n  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\\n    var channel = new global.MessageChannel();\\n    channel.port1.onmessage = nextTick;\\n    scheduleDrain = function () {\\n      channel.port2.postMessage(0);\\n    };\\n  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\\n    scheduleDrain = function () {\\n\\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\\n      var scriptEl = global.document.createElement('script');\\n      scriptEl.onreadystatechange = function () {\\n        nextTick();\\n\\n        scriptEl.onreadystatechange = null;\\n        scriptEl.parentNode.removeChild(scriptEl);\\n        scriptEl = null;\\n      };\\n      global.document.documentElement.appendChild(scriptEl);\\n    };\\n  } else {\\n    scheduleDrain = function () {\\n      setTimeout(nextTick, 0);\\n    };\\n  }\\n}\\n\\nvar draining;\\nvar queue = [];\\n//named nextTick for less confusing stack traces\\nfunction nextTick() {\\n  draining = true;\\n  var i, oldQueue;\\n  var len = queue.length;\\n  while (len) {\\n    oldQueue = queue;\\n    queue = [];\\n    i = -1;\\n    while (++i < len) {\\n      oldQueue[i]();\\n    }\\n    len = queue.length;\\n  }\\n  draining = false;\\n}\\n\\nmodule.exports = immediate;\\nfunction immediate(task) {\\n  if (queue.push(task) === 1 && !draining) {\\n    scheduleDrain();\\n  }\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],14:[function(_dereq_,module,exports){\\nif (typeof Object.create === 'function') {\\n  // implementation from standard node.js 'util' module\\n  module.exports = function inherits(ctor, superCtor) {\\n    ctor.super_ = superCtor\\n    ctor.prototype = Object.create(superCtor.prototype, {\\n      constructor: {\\n        value: ctor,\\n        enumerable: false,\\n        writable: true,\\n        configurable: true\\n      }\\n    });\\n  };\\n} else {\\n  // old school shim for old browsers\\n  module.exports = function inherits(ctor, superCtor) {\\n    ctor.super_ = superCtor\\n    var TempCtor = function () {}\\n    TempCtor.prototype = superCtor.prototype\\n    ctor.prototype = new TempCtor()\\n    ctor.prototype.constructor = ctor\\n  }\\n}\\n\\n},{}],15:[function(_dereq_,module,exports){\\n(function(factory) {\\n  if(typeof exports === 'object') {\\n    factory(exports);\\n  } else {\\n    factory(this);\\n  }\\n}).call(this, function(root) { \\n\\n  var slice   = Array.prototype.slice,\\n      each    = Array.prototype.forEach;\\n\\n  var extend = function(obj) {\\n    if(typeof obj !== 'object') throw obj + ' is not an object' ;\\n\\n    var sources = slice.call(arguments, 1); \\n\\n    each.call(sources, function(source) {\\n      if(source) {\\n        for(var prop in source) {\\n          if(typeof source[prop] === 'object' && obj[prop]) {\\n            extend.call(obj, obj[prop], source[prop]);\\n          } else {\\n            obj[prop] = source[prop];\\n          }\\n        } \\n      }\\n    });\\n\\n    return obj;\\n  }\\n\\n  root.extend = extend;\\n});\\n\\n},{}],16:[function(_dereq_,module,exports){\\n'use strict';\\nvar immediate = _dereq_(13);\\n\\n/* istanbul ignore next */\\nfunction INTERNAL() {}\\n\\nvar handlers = {};\\n\\nvar REJECTED = ['REJECTED'];\\nvar FULFILLED = ['FULFILLED'];\\nvar PENDING = ['PENDING'];\\n\\nmodule.exports = Promise;\\n\\nfunction Promise(resolver) {\\n  if (typeof resolver !== 'function') {\\n    throw new TypeError('resolver must be a function');\\n  }\\n  this.state = PENDING;\\n  this.queue = [];\\n  this.outcome = void 0;\\n  if (resolver !== INTERNAL) {\\n    safelyResolveThenable(this, resolver);\\n  }\\n}\\n\\nPromise.prototype[\\\"catch\\\"] = function (onRejected) {\\n  return this.then(null, onRejected);\\n};\\nPromise.prototype.then = function (onFulfilled, onRejected) {\\n  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\\n    typeof onRejected !== 'function' && this.state === REJECTED) {\\n    return this;\\n  }\\n  var promise = new this.constructor(INTERNAL);\\n  if (this.state !== PENDING) {\\n    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\\n    unwrap(promise, resolver, this.outcome);\\n  } else {\\n    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\\n  }\\n\\n  return promise;\\n};\\nfunction QueueItem(promise, onFulfilled, onRejected) {\\n  this.promise = promise;\\n  if (typeof onFulfilled === 'function') {\\n    this.onFulfilled = onFulfilled;\\n    this.callFulfilled = this.otherCallFulfilled;\\n  }\\n  if (typeof onRejected === 'function') {\\n    this.onRejected = onRejected;\\n    this.callRejected = this.otherCallRejected;\\n  }\\n}\\nQueueItem.prototype.callFulfilled = function (value) {\\n  handlers.resolve(this.promise, value);\\n};\\nQueueItem.prototype.otherCallFulfilled = function (value) {\\n  unwrap(this.promise, this.onFulfilled, value);\\n};\\nQueueItem.prototype.callRejected = function (value) {\\n  handlers.reject(this.promise, value);\\n};\\nQueueItem.prototype.otherCallRejected = function (value) {\\n  unwrap(this.promise, this.onRejected, value);\\n};\\n\\nfunction unwrap(promise, func, value) {\\n  immediate(function () {\\n    var returnValue;\\n    try {\\n      returnValue = func(value);\\n    } catch (e) {\\n      return handlers.reject(promise, e);\\n    }\\n    if (returnValue === promise) {\\n      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\\n    } else {\\n      handlers.resolve(promise, returnValue);\\n    }\\n  });\\n}\\n\\nhandlers.resolve = function (self, value) {\\n  var result = tryCatch(getThen, value);\\n  if (result.status === 'error') {\\n    return handlers.reject(self, result.value);\\n  }\\n  var thenable = result.value;\\n\\n  if (thenable) {\\n    safelyResolveThenable(self, thenable);\\n  } else {\\n    self.state = FULFILLED;\\n    self.outcome = value;\\n    var i = -1;\\n    var len = self.queue.length;\\n    while (++i < len) {\\n      self.queue[i].callFulfilled(value);\\n    }\\n  }\\n  return self;\\n};\\nhandlers.reject = function (self, error) {\\n  self.state = REJECTED;\\n  self.outcome = error;\\n  var i = -1;\\n  var len = self.queue.length;\\n  while (++i < len) {\\n    self.queue[i].callRejected(error);\\n  }\\n  return self;\\n};\\n\\nfunction getThen(obj) {\\n  // Make sure we only access the accessor once as required by the spec\\n  var then = obj && obj.then;\\n  if (obj && typeof obj === 'object' && typeof then === 'function') {\\n    return function appyThen() {\\n      then.apply(obj, arguments);\\n    };\\n  }\\n}\\n\\nfunction safelyResolveThenable(self, thenable) {\\n  // Either fulfill, reject or reject with error\\n  var called = false;\\n  function onError(value) {\\n    if (called) {\\n      return;\\n    }\\n    called = true;\\n    handlers.reject(self, value);\\n  }\\n\\n  function onSuccess(value) {\\n    if (called) {\\n      return;\\n    }\\n    called = true;\\n    handlers.resolve(self, value);\\n  }\\n\\n  function tryToUnwrap() {\\n    thenable(onSuccess, onError);\\n  }\\n\\n  var result = tryCatch(tryToUnwrap);\\n  if (result.status === 'error') {\\n    onError(result.value);\\n  }\\n}\\n\\nfunction tryCatch(func, value) {\\n  var out = {};\\n  try {\\n    out.value = func(value);\\n    out.status = 'success';\\n  } catch (e) {\\n    out.status = 'error';\\n    out.value = e;\\n  }\\n  return out;\\n}\\n\\nPromise.resolve = resolve;\\nfunction resolve(value) {\\n  if (value instanceof this) {\\n    return value;\\n  }\\n  return handlers.resolve(new this(INTERNAL), value);\\n}\\n\\nPromise.reject = reject;\\nfunction reject(reason) {\\n  var promise = new this(INTERNAL);\\n  return handlers.reject(promise, reason);\\n}\\n\\nPromise.all = all;\\nfunction all(iterable) {\\n  var self = this;\\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\\n    return this.reject(new TypeError('must be an array'));\\n  }\\n\\n  var len = iterable.length;\\n  var called = false;\\n  if (!len) {\\n    return this.resolve([]);\\n  }\\n\\n  var values = new Array(len);\\n  var resolved = 0;\\n  var i = -1;\\n  var promise = new this(INTERNAL);\\n\\n  while (++i < len) {\\n    allResolver(iterable[i], i);\\n  }\\n  return promise;\\n  function allResolver(value, i) {\\n    self.resolve(value).then(resolveFromAll, function (error) {\\n      if (!called) {\\n        called = true;\\n        handlers.reject(promise, error);\\n      }\\n    });\\n    function resolveFromAll(outValue) {\\n      values[i] = outValue;\\n      if (++resolved === len && !called) {\\n        called = true;\\n        handlers.resolve(promise, values);\\n      }\\n    }\\n  }\\n}\\n\\nPromise.race = race;\\nfunction race(iterable) {\\n  var self = this;\\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\\n    return this.reject(new TypeError('must be an array'));\\n  }\\n\\n  var len = iterable.length;\\n  var called = false;\\n  if (!len) {\\n    return this.resolve([]);\\n  }\\n\\n  var i = -1;\\n  var promise = new this(INTERNAL);\\n\\n  while (++i < len) {\\n    resolver(iterable[i]);\\n  }\\n  return promise;\\n  function resolver(value) {\\n    self.resolve(value).then(function (response) {\\n      if (!called) {\\n        called = true;\\n        handlers.resolve(promise, response);\\n      }\\n    }, function (error) {\\n      if (!called) {\\n        called = true;\\n        handlers.reject(promise, error);\\n      }\\n    });\\n  }\\n}\\n\\n},{\\\"13\\\":13}],17:[function(_dereq_,module,exports){\\n/**\\n * Helpers.\\n */\\n\\nvar s = 1000;\\nvar m = s * 60;\\nvar h = m * 60;\\nvar d = h * 24;\\nvar y = d * 365.25;\\n\\n/**\\n * Parse or format the given `val`.\\n *\\n * Options:\\n *\\n *  - `long` verbose formatting [false]\\n *\\n * @param {String|Number} val\\n * @param {Object} options\\n * @return {String|Number}\\n * @api public\\n */\\n\\nmodule.exports = function(val, options){\\n  options = options || {};\\n  if ('string' == typeof val) return parse(val);\\n  return options[\\\"long\\\"]\\n    ? long(val)\\n    : short(val);\\n};\\n\\n/**\\n * Parse the given `str` and return milliseconds.\\n *\\n * @param {String} str\\n * @return {Number}\\n * @api private\\n */\\n\\nfunction parse(str) {\\n  str = '' + str;\\n  if (str.length > 10000) return;\\n  var match = /^((?:\\\\d+)?\\\\.?\\\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\\n  if (!match) return;\\n  var n = parseFloat(match[1]);\\n  var type = (match[2] || 'ms').toLowerCase();\\n  switch (type) {\\n    case 'years':\\n    case 'year':\\n    case 'yrs':\\n    case 'yr':\\n    case 'y':\\n      return n * y;\\n    case 'days':\\n    case 'day':\\n    case 'd':\\n      return n * d;\\n    case 'hours':\\n    case 'hour':\\n    case 'hrs':\\n    case 'hr':\\n    case 'h':\\n      return n * h;\\n    case 'minutes':\\n    case 'minute':\\n    case 'mins':\\n    case 'min':\\n    case 'm':\\n      return n * m;\\n    case 'seconds':\\n    case 'second':\\n    case 'secs':\\n    case 'sec':\\n    case 's':\\n      return n * s;\\n    case 'milliseconds':\\n    case 'millisecond':\\n    case 'msecs':\\n    case 'msec':\\n    case 'ms':\\n      return n;\\n  }\\n}\\n\\n/**\\n * Short format for `ms`.\\n *\\n * @param {Number} ms\\n * @return {String}\\n * @api private\\n */\\n\\nfunction short(ms) {\\n  if (ms >= d) return Math.round(ms / d) + 'd';\\n  if (ms >= h) return Math.round(ms / h) + 'h';\\n  if (ms >= m) return Math.round(ms / m) + 'm';\\n  if (ms >= s) return Math.round(ms / s) + 's';\\n  return ms + 'ms';\\n}\\n\\n/**\\n * Long format for `ms`.\\n *\\n * @param {Number} ms\\n * @return {String}\\n * @api private\\n */\\n\\nfunction long(ms) {\\n  return plural(ms, d, 'day')\\n    || plural(ms, h, 'hour')\\n    || plural(ms, m, 'minute')\\n    || plural(ms, s, 'second')\\n    || ms + ' ms';\\n}\\n\\n/**\\n * Pluralization helper.\\n */\\n\\nfunction plural(ms, n, name) {\\n  if (ms < n) return;\\n  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\\n  return Math.ceil(ms / n) + ' ' + name + 's';\\n}\\n\\n},{}],18:[function(_dereq_,module,exports){\\n(function (global){\\n\\\"use strict\\\";\\n\\n//Abstracts constructing a Blob object, so it also works in older\\n//browsers that don't support the native Blob constructor. (i.e.\\n//old QtWebKit versions, at least).\\nfunction createBlob(parts, properties) {\\n  parts = parts || [];\\n  properties = properties || {};\\n  try {\\n    return new Blob(parts, properties);\\n  } catch (e) {\\n    if (e.name !== \\\"TypeError\\\") {\\n      throw e;\\n    }\\n    var BlobBuilder = global.BlobBuilder ||\\n                      global.MSBlobBuilder ||\\n                      global.MozBlobBuilder ||\\n                      global.WebKitBlobBuilder;\\n    var builder = new BlobBuilder();\\n    for (var i = 0; i < parts.length; i += 1) {\\n      builder.append(parts[i]);\\n    }\\n    return builder.getBlob(properties.type);\\n  }\\n}\\n\\n//Can't find original post, but this is close\\n//http://stackoverflow.com/questions/6965107/ (continues on next line)\\n//converting-between-strings-and-arraybuffers\\nfunction arrayBufferToBinaryString(buffer) {\\n  var binary = \\\"\\\";\\n  var bytes = new Uint8Array(buffer);\\n  var length = bytes.byteLength;\\n  for (var i = 0; i < length; i++) {\\n    binary += String.fromCharCode(bytes[i]);\\n  }\\n  return binary;\\n}\\n\\n// This used to be called \\\"fixBinary\\\", which wasn't a very evocative name\\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\\nfunction binaryStringToArrayBuffer(bin) {\\n  var length = bin.length;\\n  var buf = new ArrayBuffer(length);\\n  var arr = new Uint8Array(buf);\\n  for (var i = 0; i < length; i++) {\\n    arr[i] = bin.charCodeAt(i);\\n  }\\n  return buf;\\n}\\n\\n// shim for browsers that don't support it\\nfunction readAsBinaryString(blob, callback) {\\n  var reader = new FileReader();\\n  var hasBinaryString = typeof reader.readAsBinaryString === 'function';\\n  reader.onloadend = function (e) {\\n    var result = e.target.result || '';\\n    if (hasBinaryString) {\\n      return callback(result);\\n    }\\n    callback(arrayBufferToBinaryString(result));\\n  };\\n  if (hasBinaryString) {\\n    reader.readAsBinaryString(blob);\\n  } else {\\n    reader.readAsArrayBuffer(blob);\\n  }\\n}\\n\\n// simplified API. universal browser support is assumed\\nfunction readAsArrayBuffer(blob, callback) {\\n  var reader = new FileReader();\\n  reader.onloadend = function (e) {\\n    var result = e.target.result || new ArrayBuffer(0);\\n    callback(result);\\n  };\\n  reader.readAsArrayBuffer(blob);\\n}\\n\\nmodule.exports = {\\n  createBlob: createBlob,\\n  readAsArrayBuffer: readAsArrayBuffer,\\n  readAsBinaryString: readAsBinaryString,\\n  binaryStringToArrayBuffer: binaryStringToArrayBuffer,\\n  arrayBufferToBinaryString: arrayBufferToBinaryString\\n};\\n\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],19:[function(_dereq_,module,exports){\\n'use strict';\\n\\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\\n\\nvar lie = _interopDefault(_dereq_(16));\\n\\n/* istanbul ignore next */\\nvar PouchPromise = typeof Promise === 'function' ? Promise : lie;\\n\\nmodule.exports = PouchPromise;\\n},{\\\"16\\\":16}],20:[function(_dereq_,module,exports){\\n// shim for using process in browser\\n\\nvar process = module.exports = {};\\nvar queue = [];\\nvar draining = false;\\n\\nfunction drainQueue() {\\n    if (draining) {\\n        return;\\n    }\\n    draining = true;\\n    var currentQueue;\\n    var len = queue.length;\\n    while(len) {\\n        currentQueue = queue;\\n        queue = [];\\n        var i = -1;\\n        while (++i < len) {\\n            currentQueue[i]();\\n        }\\n        len = queue.length;\\n    }\\n    draining = false;\\n}\\nprocess.nextTick = function (fun) {\\n    queue.push(fun);\\n    if (!draining) {\\n        setTimeout(drainQueue, 0);\\n    }\\n};\\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;\\n\\nprocess.binding = function (name) {\\n    throw new Error('process.binding is not supported');\\n};\\n\\n// TODO(shtylman)\\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},{}],21:[function(_dereq_,module,exports){\\n'use strict';\\n\\nmodule.exports = _dereq_(3);\\n},{\\\"3\\\":3}]},{},[21])(21)\\n});\";\n","import { workerPouchBundle } from \"./workerPouchBundle\";\n\nexport function registerPouchDbWorkerAdapter(PouchDB: any): boolean {\n    if (!PouchDB?.adapters) {\n        return false;\n    }\n\n    if (PouchDB.adapters.worker) {\n        return true;\n    }\n\n    if (typeof Worker === \"undefined\") {\n        return false;\n    }\n\n    try {\n        const globalObj: any = typeof window !== \"undefined\" ? window : globalThis;\n        if (!globalObj.workerPouch) {\n            const patchedBundle = workerPouchBundle\n                .replace(\n                    /document\\.documentElement\\.style/g,\n                    \"(self.document && self.document.documentElement ? self.document.documentElement.style : {})\"\n                )\n                .replace(/window\\.console/g, \"self.console\")\n                .replace(\n                    /navigator\\.userAgent/g,\n                    \"(self.navigator && self.navigator.userAgent ? self.navigator.userAgent : '')\"\n                );\n            // eslint-disable-next-line no-new-func\n            const loader = new Function(patchedBundle);\n            loader();\n        }\n        if (globalObj.workerPouch) {\n            PouchDB.adapter(\"worker\", globalObj.workerPouch);\n            return true;\n        }\n    } catch (error) {\n        return false;\n    }\n\n    return false;\n}\n","import { C8oCore } from \"./c8oCore\";\r\nimport { C8oProgress } from \"./c8oProgress\";\r\nimport { C8oResponseListener, C8oResponseProgressListener } from \"./c8oResponse\";\r\nimport { FullSyncReplication } from \"./fullSyncReplication\";\r\n\r\nimport PouchDB from \"pouchdb-browser\";\nimport PouchDBFind from \"pouchdb-find\";\n\nimport {C8oLoad} from \"./c8oload\";\nimport { C8oUtilsCore } from \"./c8oUtilsCore\";\nimport { registerPouchDbSearchPlugin } from \"./pouchdbSearchPlugin\";\nimport { registerPouchDbWorkerAdapter } from \"./pouchdbWorkerAdapter\";\n\r\n\r\n/**\r\n * Created by charlesg on 10/01/2017.\r\n */\r\nexport class C8oFullSyncDatabase {\r\n\r\n    /**\r\n     * Used to log.\r\n     */\r\n    private c8o: C8oCore;\r\n\r\n    /** TAG Attributes **/\r\n\r\n    /**\r\n     * The fullSync database name.\r\n     */\r\n    private databaseName: string;\r\n    private remotedatabaseName: string;\r\n    private c8oFullSyncDatabaseUrl: string;\r\n    /**\r\n     * The fullSync Database instance.\r\n     */\r\n    private database = null;\r\n    /**\r\n     * Used to make pull replication (uploads changes from the local database to the remote one).\r\n     */\r\n    private pullFullSyncReplication: FullSyncReplication = new FullSyncReplication(true);\r\n    /**\r\n     * Used to make push replication (downloads changes from the remote database to the local one).\r\n     */\r\n    private pushFullSyncReplication: FullSyncReplication = new FullSyncReplication(false);\r\n    /**\r\n     * Used to make pull replication (uploads changes from the local database to the remote one).\r\n     */\r\n    private syncFullSyncReplication: FullSyncReplication = new FullSyncReplication();\r\n\r\n    private manual_canceled = false;\r\n    private remotePouchHeader;\r\n    private _id;\r\n    private to_cancel = [];\r\n\r\n    /**\r\n     * Creates a fullSync database with the specified name and its location.\r\n     *\r\n     * @param c8o\r\n     * @param databaseName\r\n     * @param fullSyncDatabases\r\n     * @param localSuffix\r\n     * @throws C8oException Failed to get the fullSync database.\r\n     */\r\n    constructor(c8o: C8oCore, databaseName: string, fullSyncDatabases: string, localSuffix: string, localPrefix: string) {\n        PouchDB.plugin(PouchDBFind);\n        registerPouchDbSearchPlugin(PouchDB);\n        var opts = {};\n        if(c8o.usewroker){\n            const workerReady = registerPouchDbWorkerAdapter(PouchDB);\n            if (workerReady) {\n                opts[\"adapter\"] = \"worker\";\n                c8o.log._debug(\"Using internal PouchDB worker adapter.\");\n            } else {\n                c8o.log._warn(\"PouchDB worker adapter is unavailable; using default adapter.\");\n            }\n        }\n        \n        let c8oload: C8oLoad = new C8oLoad(c8o);\n        window[\"PouchDB\"] =PouchDB;\n        if(c8o.logPouchDB){\n            if (PouchDB.debug?.enable) {\n                PouchDB.debug.enable('*');\n            } else {\n                c8o.log._warn(\"PouchDB debug plugin is unavailable; logPouchDB ignored.\");\n            }\n        }\n        else if (PouchDB.debug?.disable){\n            PouchDB.debug.disable();\n        }\n        this.c8o = c8o;\r\n        const header = {\r\n            \"x-convertigo-sdk\": this.c8o.sdkVersion,\r\n        };\r\n        if(this.c8o.xsrfUsed){\r\n            const headerName = \"x-xsrf-token\";\r\n            const fetch = \"Fetch\";\r\n            header[headerName] = window.localStorage.getItem(headerName) != undefined ? window.localStorage.getItem(headerName) : fetch;\r\n        }      \r\n        Object.assign(header, this.c8o.headers);\r\n        this.remotePouchHeader = {\r\n            fetch: (url, opts) => {\r\n                opts.credentials = 'include';\r\n                for (let key in header) {\r\n                    opts.headers.set(key, header[key]);\r\n                }\r\n                var fecthPouch: Promise<Response> = PouchDB.fetch(url, opts);\r\n                fecthPouch.then((response)=>{\r\n                    this.c8o.session.sort(response,header, null, null, null);\r\n                })\r\n                .catch((e)=>{\r\n                    \r\n                });\r\n                return fecthPouch;\r\n            }\r\n        };\r\n        this.c8oFullSyncDatabaseUrl = fullSyncDatabases + databaseName;\n        this.remotedatabaseName = databaseName;\n        this.databaseName = localPrefix + databaseName + localSuffix;\n        try {\r\n            if (c8o.couchUrl != null) {\n                this.database = new PouchDB(c8o.couchUrl + \"/\" + this.databaseName);\n                this.c8o.log._debug(\"PouchDb launched on couchbaselite\");\n            } else {\n                PouchDB.plugin(c8oload.plugin);\n\n                if (opts[\"adapter\"] === \"worker\" && !(\"originalName\" in opts)) {\n                    opts[\"originalName\"] = this.databaseName;\n                }\n                this.database = new PouchDB(this.databaseName, opts);\n                this.c8o.log._debug(\"PouchDb launched normally\");\n            }\n        } catch (error) {\r\n            throw error;\r\n        }\r\n    }\n\n    public setRemoteBase(fullSyncBase: string): void {\n        this.c8oFullSyncDatabaseUrl = fullSyncBase + this.remotedatabaseName;\n    }\n\r\n    public async remoteDatabaseVersion() {\r\n        return new Promise((resolve)=>{\r\n            let headersObject = { 'Accept': 'application/json', 'x-convertigo-sdk': this.c8o.sdkVersion };\r\n            Object.assign(headersObject, this.c8o.headers);\r\n            let headers =  this.c8o.httpInterface.getHeaders(headersObject);\r\n\r\n            this.c8o.httpInterface.httpGetObservable(this.c8oFullSyncDatabaseUrl + \"/_design/c8o\", {\r\n                headers: headers,\r\n                withCredentials: true\r\n            }, {})\r\n            .subscribe(\r\n                response => {\r\n                    if (response != undefined && response[\"~c8oDbVersion\"] != null) {\r\n                        this.c8o.log._trace(\"Server support reset database, remote version for \" + this.remotedatabaseName + \" is \" + response[\"~c8oDbVersion\"]);\r\n                        resolve(response[\"~c8oDbVersion\"])\r\n                    }\r\n                    else {\r\n                        resolve(false);\r\n                    }\r\n            },\r\n            error => {\r\n                this.c8o.log._trace(\"Server does not support reset database\");\r\n                resolve(false);\r\n            })\r\n        });\r\n    }\r\n\r\n    public async localDatabaseVersion() {\r\n        try {\r\n            let info = await this.database.info();\r\n            let response = await this.database.get('_design/c8o')\r\n            if (response[\"~c8oDbVersion\"] != null) {\r\n                this.c8o.log._trace(\"Version for local database,  \" + this.databaseName + \" is \" + response[\"~c8oDbVersion\"]);\r\n                return response[\"~c8oDbVersion\"];\r\n            }\r\n            else {\r\n                return false;\r\n            }\r\n        }\r\n        catch (error) {\r\n            //there is no c8odesing base has been created in local\r\n            return \"_C8O_DO_NOTHING\";\r\n        }\r\n\r\n    }\r\n\r\n    public async checkResetBase() {\r\n        let remoteVersion = await this.remoteDatabaseVersion();\r\n        let localVersion = await this.localDatabaseVersion();\r\n        let reset = false;\r\n        if(localVersion == \"_C8O_DO_NOTHING\"){\r\n            this.c8o.log._trace(\"Local database version do not contains, _design/c8o, it has been created in local, no reset needed\");\r\n        }\r\n        else{\r\n            if (remoteVersion != false) {\r\n                if (localVersion != false) {\r\n                    if (remoteVersion != localVersion) {\r\n                        // reset\r\n                        reset = true;\r\n                    }\r\n                }\r\n                else{\r\n                    reset = true;\r\n                }\r\n            }\r\n            if (reset) {\r\n                this.c8o.log._trace(\"Since remote database version is different from local database, we will reset it\");\r\n                await this.resetMyBase()\r\n            }\r\n            else {\r\n                this.c8o.log._trace(\"Remote database version and local database, had the same version, reset not needed\");\r\n            }\r\n        }\r\n        return reset;\r\n        \r\n    }\r\n\r\n    async resetMyBase() {\r\n        try {\r\n            await this.database.destroy();\r\n            if (this.c8o.couchUrl != null) {\r\n                this.database = new PouchDB(this.c8o.couchUrl + \"/\" + this.databaseName);\r\n                this.c8o.log._debug(\"PouchDb launched on couchbaselite\");\r\n            } else {\r\n                let c8oload: C8oLoad = new C8oLoad(this.c8o);\r\n                PouchDB.plugin(c8oload.plugin)\r\n                this.database = new PouchDB(this.databaseName);\r\n                this.c8o.log._debug(\"PouchDb launched normally\");\r\n            }\r\n            this.c8o.log._debug(\"Database reset successfully\");\r\n            this.c8o.subscriber_database_reset.next({ databaseName: this.databaseName, success: true, error: false });\r\n        } catch (error) {\r\n            this.c8o.subscriber_database_reset.error({ databaseName: this.databaseName, success: false, error: true, nativeError: error });\r\n            this.c8o.log._error(\"error while resetting database\");\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * Start pull and push replications.\r\n     * @returns Promise<any>\r\n     */\r\n    public async startAllReplications(parameters: Object, c8oResponseListener: C8oResponseListener, handler: any, id = null, mutex = null): Promise<any> {\r\n        if(this.c8o.resetBase){\r\n            await this.checkResetBase()\r\n        }\r\n        let resp =  await this.c8o.log.logTest();\r\n        return this.startSync(this.syncFullSyncReplication, parameters, c8oResponseListener, handler, id, mutex);\r\n        \r\n    }\r\n\r\n    /**\r\n     * Start pull replication.\r\n     * @returns Promise<any>\r\n     */\r\n    public async startPullReplication(parameters: Object, c8oResponseListener: C8oResponseListener, handler: any, id = null, mutex = null): Promise<any> {\r\n        if(this.c8o.resetBase){\r\n            await this.checkResetBase()\r\n        }\r\n        let resp =  await this.c8o.log.logTest();\r\n        return this.startReplication(this.pullFullSyncReplication, parameters, c8oResponseListener, handler, id, mutex);\r\n\r\n    }\r\n\r\n    /**\r\n     * Start push replication.\r\n     * @returns Promise<any>\r\n     */\r\n    public async startPushReplication(parameters: Object, c8oResponseListener: C8oResponseListener, handler: any, id = null, mutex = null): Promise<any> {\r\n        if(this.c8o.resetBase){\r\n            await this.checkResetBase()\r\n        }\r\n        let resp =  await this.c8o.log.logTest();\r\n        return this.startReplication(this.pushFullSyncReplication, parameters, c8oResponseListener, handler, id, mutex);\r\n\r\n    }\r\n\r\n    private startSync(fullSyncReplication: FullSyncReplication, parameters: Object, c8oResponseListener: C8oResponseListener, handler, id = null, mutex = null): Promise<any> {\r\n        let continuous: boolean = false;\r\n        let cancel: boolean = false;\r\n        const parametersObj: Object = {};\r\n        //stop replication if exists\r\n        if (fullSyncReplication.replication != null) {\r\n            fullSyncReplication.replication.cancel();\r\n        }\r\n        this._id = id;\r\n        //check continuous flag\r\n        if (parameters[\"continuous\"] != null) {\r\n            if (parameters[\"continuous\"] as boolean === true) {\r\n                continuous = true;\r\n            } else {\r\n                continuous = false;\r\n            }\r\n        }\r\n        //check cancel flag\r\n        if (parameters[\"cancel\"] != null) {\r\n            //noinspection RedundantIfStatementJS\r\n            if (parameters[\"cancel\"] as boolean === true) {\r\n                cancel = true;\r\n            } else {\r\n                cancel = false;\r\n            }\r\n        }\r\n        // Set retry true by default...\r\n        parametersObj[\"retry\"] = true;\r\n\r\n        //check parameters to throw to pouchDB\r\n        if (parameters[\"retry\"] != null) {\r\n            parametersObj[\"retry\"] = parameters[\"retry\"];\r\n        }\r\n        if (parameters[\"filter\"] != null) {\r\n            parametersObj[\"filter\"] = parameters[\"filter\"];\r\n        }\r\n        if (parameters[\"doc_ids\"] != null) {\r\n            parametersObj[\"doc_ids\"] = parameters[\"doc_ids\"];\r\n        }\r\n        if (parameters[\"query_params\"] != null) {\r\n            parametersObj[\"query_params\"] = parameters[\"query_params\"];\r\n        }\r\n        if (parameters[\"view\"] != null) {\r\n            parametersObj[\"view\"] = parameters[\"view\"];\r\n        }\r\n        if (parameters[\"since\"] != null) {\r\n            parametersObj[\"since\"] = parameters[\"since\"];\r\n        }\r\n        if (parameters[\"heartbeat\"] != null) {\r\n            parametersObj[\"heartbeat\"] = parameters[\"heartbeat\"];\r\n        }\r\n        if (parameters[\"timeout\"] != null) {\r\n            parametersObj[\"timeout\"] = parameters[\"timeout\"];\r\n        }\r\n        if (parameters[\"batch_size\"] != null) {\r\n            parametersObj[\"batch_size\"] = parameters[\"batch_size\"];\r\n        }\r\n        if (parameters[\"batches_limit\"] != null) {\r\n            parametersObj[\"batches_limit\"] = parameters[\"batches_limit\"];\r\n        }\r\n        if (parameters[\"back_off_function\"] != null) {\r\n            parametersObj[\"back_off_function\"] = parameters[\"back_off_function\"];\r\n        }\r\n        if (parameters[\"checkpoint\"] != null) {\r\n            parametersObj[\"checkpoint\"] = parameters[\"checkpoint\"];\r\n        }\r\n        if (parameters[\"seq_interval\"] != null) {\r\n            parametersObj[\"seq_interval\"] = parameters[\"seq_interval\"];\r\n        }\r\n\r\n        const remoteDB = new PouchDB(this.c8oFullSyncDatabaseUrl, this.remotePouchHeader);\r\n        let rep = fullSyncReplication.replication = this.database.sync(remoteDB, parametersObj);\r\n        const param = parameters;\r\n        const progress: C8oProgress = new C8oProgress();\r\n        progress.raw = rep;\r\n        progress.continuous = false;\r\n\r\n        return new Promise((resolve, reject) => {\r\n            rep.on(\"change\", (info) => {\r\n                progress.finished = false;\r\n                if (info.direction === \"pull\") {\r\n                    progress.pull = true;\r\n                    progress.status = rep.pull.state;\r\n                    progress.finished = rep.pull.state !== \"active\";\r\n                } else if (info.direction === \"push\") {\r\n                    progress.pull = false;\r\n                    progress.status = rep.push.state;\r\n                    progress.finished = rep.push.state !== \"active\";\r\n                }\r\n                progress.total = info.change.docs_read;\r\n                progress.current = info.change.docs_written;\r\n                param[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n\r\n            }).on(\"complete\", (info) => {\r\n                progress.finished = true;\r\n                progress.pull = false;\r\n                progress.total = info.push.docs_read;\r\n                progress.current = info.push.docs_written;\r\n                progress.status = info.status;\r\n                progress.finished = true;\r\n                param[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n                progress.pull = true;\r\n                progress.total = info.pull.docs_read;\r\n                progress.current = info.pull.docs_written;\r\n                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n                if(rep.canceled == true && continuous){\r\n                    this.c8o.log._trace(\"Replication is continuous but has been canceled\");\r\n                    rep.cancel();\r\n                    if(mutex != undefined){\r\n                        mutex.release();\r\n                    }\r\n                    if(!this.manual_canceled){\r\n                        handler();\r\n                    }\r\n                   \r\n                }\r\n                else if (continuous) {\r\n                    rep.cancel();\r\n                    parametersObj[\"live\"] = true;\r\n                    rep = fullSyncReplication.replication = this.database.sync(remoteDB, parametersObj);\r\n                    progress.continuous = true;\r\n                    progress.raw = rep;\r\n                    progress.taskInfo = \"n/a\";\r\n                    progress.pull = true;\r\n                    progress.status = \"live\";\r\n                    progress.finished = false;\r\n                    progress.pull = true;\r\n                    progress.total = 0;\r\n                    progress.current = 0;\r\n                    (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n                    progress.pull = false;\r\n                    (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n\r\n                    if(mutex != undefined){\r\n                        mutex.release();\r\n                    }\r\n                    rep.on(\"change\", (info) => {\r\n                        progress.finished = false;\r\n                        if (info.direction === \"pull\") {\r\n                            progress.pull = true;\r\n                            progress.status = rep.pull.state;\r\n                        } else if (info.direction === \"push\") {\r\n                            progress.pull = false;\r\n                            progress.status = rep.push.state;\r\n                        }\r\n                        progress.total = info.change.docs_read;\r\n                        progress.current = info.change.docs_written;\r\n                        param[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                        (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n                    })\r\n                        .on(\"paused\", () => {\r\n                            try{\r\n                                if(((<Array<any>>this.c8o.database[\"replications\"]).map(x=>x.id == id)).length > 0){\r\n                                    rep.cancel();\r\n                                }\r\n                            }\r\n                            catch(e){\r\n                                \r\n                            }\r\n                            \r\n                            progress.finished = true;\r\n                            (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n                            if (progress.total === 0 && progress.current === 0) {\r\n                                progress.pull = !progress.pull;\r\n                                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, param);\r\n                            }\r\n                        })\r\n                        .on(\"error\", (err) => {\r\n                            if (err.message === \"Unexpected end of JSON input\") {\r\n                                progress.finished = true;\r\n                                progress.status = \"live\";\r\n                                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n                            } else {\r\n                                rep.cancel();\r\n                                if (err.code === \"ETIMEDOUT\" && err.status === 0) {\r\n                                    if (parameters[\"force_retry\"] == true) {\r\n                                        this.c8o.log._warn(\"Timeout handle during fullsync replication (fs://.sync) \\n Forcing Restarting replication\");\r\n                                        this.database.sync(remoteDB, { timeout: 600000, retry: true });\r\n                                    } else {\r\n                                        this.c8o.log._warn(\"Timeout handle during fullsync replication (fs://.sync) \\n Restarting automatically replication\");\r\n                                    }\r\n                                } else if (err.name === \"unknown\" && err.status === 0 && err.message === \"getCheckpoint rejected with \") {\r\n                                    reject(\"NO_NETWORK\");\r\n                                } else {\r\n                                    reject(err);\r\n                                }\r\n                            }\r\n                        });\r\n\r\n                }\r\n                else if (!continuous) {\r\n                    rep.cancel();\r\n                    if(mutex != undefined){\r\n                        mutex.release();\r\n                    }\r\n                    this.c8o.log._trace(\"Replication is finished, modifying its state\");\r\n                    if(!this.manual_canceled){\r\n                        handler();\r\n                    }\r\n                }\r\n            }).on(\"error\", (err) => {\r\n                rep.cancel();\r\n                if(mutex != undefined){\r\n                    mutex.release();\r\n                }\r\n                if (err.message === \"Unexpected end of JSON input\") {\r\n                    progress.finished = true;\r\n                    progress.status = \"Complete\";\r\n                    (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n                    rep.cancel();\r\n\r\n                } else if (err.code === \"ETIMEDOUT\" && err.status === 0) {\r\n                    if (parameters[\"force_retry\"] == true) {\r\n                        this.c8o.log._warn(\"Timeout handle during fullsync replication (fs://.sync) \\n Forcing Restarting replication\");\r\n                        this.database.sync(remoteDB, { timeout: 600000, retry: true });\r\n                    } else {\r\n                        this.c8o.log._warn(\"Timeout handle during fullsync replication (fs://.sync) \\n Restarting automatically replication\");\r\n                    }\r\n                } else if (err.name === \"unknown\" && err.status === 0 && err.message === \"getCheckpoint rejected with \") {\r\n                    reject(\"NO_NETWORK\");\r\n                } else {\r\n                    reject(err);\r\n                }\r\n            });\r\n\r\n            if (cancel) {\r\n                if (rep != null) {\r\n                    this.c8o.log._trace(\"Replication canceled called, modifying its state\");\r\n                    handler();\r\n                    rep.cancel();\r\n                    progress.finished = true;\r\n                    if (c8oResponseListener != null && c8oResponseListener instanceof C8oResponseProgressListener) {\r\n                        c8oResponseListener.onProgressResponse(progress, parameters);\r\n                    }\r\n                }\r\n                if(mutex != undefined){\r\n                    mutex.release();\r\n                }\r\n            }\r\n        }).catch((error) => {\r\n            throw error.toString();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Starts a replication taking into account parameters.<br/>\r\n     * This action does not directly return something but setup a callback raised when the replication raises change events.\r\n     *\r\n     * @param fullSyncReplication\r\n     * @param c8oResponseListener\r\n     * @param parameters\r\n     */\r\n    private startReplication(fullSyncReplication: FullSyncReplication, parameters: Object, c8oResponseListener: C8oResponseListener, handler, id = null, mutex = null): Promise<any> {\r\n        let continuous: boolean = false;\r\n        let cancel: boolean = false;\r\n        const parametersObj: Object = {};\r\n        //stop replication if exists\r\n        if (fullSyncReplication.replication != null) {\r\n            fullSyncReplication.replication.cancel();\r\n        }\r\n        this._id = id;\r\n        //check continuous flag\r\n        if (parameters[\"continuous\"] != null) {\r\n            if (parameters[\"continuous\"] as boolean == true) {\r\n                continuous = true;\r\n            } else {\r\n                continuous = false;\r\n            }\r\n        }\r\n        //check cancel flag\r\n        if (parameters[\"cancel\"] != null) {\r\n            //noinspection RedundantIfStatementJS\r\n            if (parameters[\"cancel\"] as boolean == true) {\r\n                cancel = true;\r\n            } else {\r\n                cancel = false;\r\n            }\r\n        }\r\n        //check parameters to throw to pouchDB\r\n        // Set retry true by default...\r\n        parametersObj[\"retry\"] = true;\r\n        if (parameters[\"retry\"] != null) {\r\n            parametersObj[\"retry\"] = parameters[\"retry\"];\r\n        }\r\n        if (parameters[\"filter\"] != null) {\r\n            parametersObj[\"filter\"] = parameters[\"filter\"];\r\n        }\r\n        if (parameters[\"doc_ids\"] != null) {\r\n            parametersObj[\"doc_ids\"] = parameters[\"doc_ids\"];\r\n        }\r\n        if (parameters[\"query_params\"] != null) {\r\n            parametersObj[\"query_params\"] = parameters[\"query_params\"];\r\n        }\r\n        if (parameters[\"view\"] != null) {\r\n            parametersObj[\"view\"] = parameters[\"view\"];\r\n        }\r\n        if (parameters[\"since\"] != null) {\r\n            parametersObj[\"since\"] = parameters[\"since\"];\r\n        }\r\n        if (parameters[\"heartbeat\"] != null) {\r\n            parametersObj[\"heartbeat\"] = parameters[\"heartbeat\"];\r\n        }\r\n        if (parameters[\"timeout\"] != null) {\r\n            parametersObj[\"timeout\"] = parameters[\"timeout\"];\r\n        }\r\n        if (parameters[\"batch_size\"] != null) {\r\n            parametersObj[\"batch_size\"] = parameters[\"batch_size\"];\r\n        }\r\n        if (parameters[\"batches_limit\"] != null) {\r\n            parametersObj[\"batches_limit\"] = parameters[\"batches_limit\"];\r\n        }\r\n        if (parameters[\"back_off_function\"] != null) {\r\n            parametersObj[\"back_off_function\"] = parameters[\"back_off_function\"];\r\n        }\r\n        if (parameters[\"checkpoint\"] != null) {\r\n            parametersObj[\"checkpoint\"] = parameters[\"checkpoint\"];\r\n        }\r\n        if (parameters[\"seq_interval\"] != null) {\r\n            parametersObj[\"seq_interval\"] = parameters[\"seq_interval\"];\r\n        }\r\n\r\n        const remoteDB = new PouchDB(this.c8oFullSyncDatabaseUrl, this.remotePouchHeader);\r\n        let rep = fullSyncReplication.replication = fullSyncReplication.pull ? this.database.replicate.from(remoteDB, parametersObj) : this.database.replicate.to(remoteDB, parametersObj);\r\n\r\n        const progress: C8oProgress = new C8oProgress();\r\n        progress.raw = rep;\r\n        progress.pull = fullSyncReplication.pull;\r\n        progress.continuous = false;\r\n        return new Promise((resolve, reject) => {\r\n\r\n            rep.on(\"change\", (info) => {\r\n                progress.total = info.docs_read;\r\n                progress.current = info.docs_written;\r\n                progress.status = \"change\";\r\n                parameters[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n            }).on(\"complete\", (info) => {\r\n                progress.finished = true;\r\n                progress.total = info.docs_read;\r\n                progress.current = info.docs_written;\r\n                progress.status = \"complete\";\r\n                parameters[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n                if(rep.canceled == true && continuous){\r\n                    this.c8o.log._trace(\"Replication is continuous but has been canceled\");\r\n                    rep.cancel();\r\n                    if(mutex != undefined){\r\n                        mutex.release();\r\n                    }\r\n                    if(!this.manual_canceled){\r\n                        handler();\r\n                    }\r\n                }\r\n                if (continuous) {\r\n                    rep.cancel();\r\n                    if(mutex != undefined){\r\n                        mutex.release();\r\n                    }\r\n                    parametersObj[\"live\"] = true;\r\n                    rep = fullSyncReplication.replication = fullSyncReplication.pull ? this.database.replicate.from(remoteDB, parametersObj) : this.database.replicate.to(remoteDB, parametersObj);\r\n                    progress.continuous = true;\r\n                    progress.raw = rep;\r\n                    progress.taskInfo = \"n/a\";\r\n                    rep.on(\"change\", (info) => {\r\n                        progress.finished = false;\r\n                        progress.total = info.docs_read;\r\n                        progress.current = info.docs_written;\r\n                        progress.status = \"change\";\r\n                        parameters[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                        (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n                    })\r\n                    .on(\"paused\", () => {\r\n                        try{\r\n                            if(((<Array<any>>this.c8o.database[\"replications\"]).map(x=>x.id == id)).length > 0){\r\n                                rep.cancel();\r\n                            }\r\n                        }\r\n                        catch(e){\r\n                            \r\n                        }\r\n                    })\r\n                    .on(\"error\", (err) => {\r\n                        if (err.message === \"Unexpected end of JSON input\") {\r\n                            progress.finished = true;\r\n                            progress.status = \"live\";\r\n                            (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n\r\n                        } else {\r\n                            rep.cancel();\r\n                            if (err.code === \"ETIMEDOUT\" && err.status === 0) {\r\n                                reject(\"TIMEOUT\");\r\n                            } else if (err.name === \"unknown\" && err.status === 0 && err.message === \"getCheckpoint rejected with \") {\r\n                                reject(\"NO_NETWORK\");\r\n                            } else {\r\n                                reject(err);\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n                else if (!continuous) {\r\n                    rep.cancel();\r\n                    if(mutex != undefined){\r\n                        mutex.release();\r\n                    }\r\n                    this.c8o.log._trace(\"Replication is finished, modifying its state\");\r\n                    if(!this.manual_canceled){\r\n                        handler();\r\n                    }\r\n                }\r\n            }).on(\"error\", (err) => {\r\n                rep.cancel();\r\n                if(mutex != undefined){\r\n                    mutex.release();\r\n                }\r\n                if (err.message === \"Unexpected end of JSON input\") {\r\n                    progress.finished = true;\r\n                    progress.status = \"complete\";\r\n                    parameters[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n                    (c8oResponseListener as C8oResponseProgressListener).onProgressResponse(progress, parameters);\r\n                    rep.cancel();\r\n                } else if (err.code === \"ETIMEDOUT\" && err.status === 0) {\r\n                    reject(\"TIMEOUT\");\r\n                } else if (err.name === \"unknown\" && err.status === 0 && err.message === \"getCheckpoint rejected with \") {\r\n                    reject(\"NO_NETWORK\");\r\n                } else {\r\n                    reject(err);\r\n                }\r\n            });\r\n\r\n            if (cancel) {\r\n                if(mutex != undefined){\r\n                    mutex.release();\r\n                }\r\n                if (rep != null) {\r\n                    this.c8o.log._trace(\"Replication canceled called, modifying its state\");\r\n                    handler();\r\n                    rep.cancel();\r\n                    progress.finished = true;\r\n                    if (c8oResponseListener != null && c8oResponseListener instanceof C8oResponseProgressListener) {\r\n                        c8oResponseListener.onProgressResponse(progress, parameters);\r\n                    }\r\n                }\r\n            }\r\n\r\n        }).catch((error) => {\r\n            throw error.toString();\r\n        });\r\n\r\n    }\r\n\r\n    //noinspection JSUnusedGlobalSymbols\r\n    public get getdatabseName(): string {\r\n        return this.databaseName;\r\n    }\r\n\r\n    public get getdatabase(): any {\r\n        return this.database;\r\n    }\r\n\r\n    public deleteDB(): Promise<any> {\r\n        return new Promise((resolve, reject) => {\r\n            if (this.database != null) {\r\n                this.database.destroy().then((response) => {\r\n                    this.database = null;\r\n                    resolve(response);\r\n                }).catch((error) => {\r\n                    this.c8o.log._debug(\"Failed to close DB, will retry: \", error.message);\r\n                    this.database.destroy().then((response) => {\r\n                        this.database = null;\r\n                        resolve(response);\r\n                    }).catch((error) => {\r\n                        this.c8o.log._debug(\"Failed to close DB, second attempt has failed \", error.message);\r\n                        reject(error);\r\n                    });\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * cancel Pull Replication\r\n     */\r\n    public cancelPullReplication(): void {\r\n        if (this.pullFullSyncReplication.replication != undefined) {\r\n            this.manual_canceled = true;\r\n            this.pullFullSyncReplication.replication.cancel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * cancel Push Replication\r\n     */\r\n    public cancelPushReplication(): void {\r\n        if (this.pushFullSyncReplication.replication != undefined) {\r\n            this.manual_canceled = true;\r\n            this.pushFullSyncReplication.replication.cancel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * cancel Sync Replication\r\n     */\r\n    public cancelSyncReplication(): void {\r\n        if (this.syncFullSyncReplication.replication != undefined) {\r\n            this.manual_canceled = true;\r\n            this.syncFullSyncReplication.replication.cancel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * return current pull replication state or false if replication does not exists\r\n     */\r\n\r\n}\r\n\r\nexport interface ReplicationState {\r\n    listener: any;\r\n    parameters: any;\r\n    type: any;\r\n    database: C8oFullSyncDatabase;\r\n    stopped: Boolean\r\n}\r\n","export class FullSyncDeleteDocumentParameter {\n    public static DOCID: FullSyncDeleteDocumentParameter = new FullSyncDeleteDocumentParameter(\"docid\");\n    public static REV: FullSyncDeleteDocumentParameter = new FullSyncDeleteDocumentParameter(\"rev\");\n\n    public name: string;\n\n    constructor(name: string) {\n        this.name = name;\n    }\n}\n","export class FullSyncAttachmentParameter {\n    public static DOCID: FullSyncAttachmentParameter = new FullSyncAttachmentParameter(\"docid\");\n    public static NAME: FullSyncAttachmentParameter = new FullSyncAttachmentParameter(\"name\");\n    public static CONTENT_TYPE: FullSyncAttachmentParameter = new FullSyncAttachmentParameter(\"content_type\");\n    public static CONTENT: FullSyncAttachmentParameter = new FullSyncAttachmentParameter(\"content\");\n\n    public name: string;\n\n    constructor(name: string) {\n        this.name = name;\n    }\n}\n","export class FullSyncGetDocumentParameter {\n    public static DOCID: FullSyncGetDocumentParameter = new FullSyncGetDocumentParameter(\"docid\");\n\n    public name: string;\n\n    constructor(name: string) {\n        this.name = name;\n    }\n\n}\n","export class FullSyncGetViewParameter {\n    public static VIEW: FullSyncGetViewParameter = new FullSyncGetViewParameter(\"view\");\n    public static DDOC: FullSyncGetViewParameter = new FullSyncGetViewParameter(\"ddoc\");\n\n    public name: string;\n\n    constructor(name: string) {\n        this.name = name;\n    }\n}\n","import {C8oCore, FullSyncPolicy, FullSyncPostDocumentParameter} from \"./c8oCore\";\nimport {C8oFullSync, C8oFullSyncCbl} from \"./c8oFullSync\";\nimport {\n    C8oResponseJsonListener,\n    C8oResponseListener,\n    C8oResponseProgressListener,\n} from \"./c8oResponse\";\nimport {C8oUtilsCore} from \"./c8oUtilsCore\";\nimport {FullSyncAttachmentParameter} from \"./fullSyncAttachmentParameter\";\nimport {FullSyncGetDocumentParameter} from \"./fullSyncGetDocumentParameter\";\nimport {FullSyncGetViewParameter} from \"./fullSyncGetViewParameter\";\n/**\n * Created by charlesg on 10/01/2017.\n */\n// @dynamic\nexport class FullSyncRequestable {\n\n    //noinspection JSUnusedLocalSymbols\n    public static GET: FullSyncRequestable = new FullSyncRequestable(\"get\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            const docid: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetDocumentParameter.DOCID.name, true);\n            resolve(c8oFullSync.handleGetDocumentRequest(databaseName, docid, parameters));\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static DELETE: FullSyncRequestable = new FullSyncRequestable(\"delete\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            const docid: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetDocumentParameter.DOCID.name, true);\n            c8oFullSync.handleDeleteDocumentRequest(databaseName, docid, parameters).then((result) => {\n                resolve(result);\n            }).catch((error) => {\n                reject(error);\n            });\n        })\n            .catch((error) => {\n                throw error;\n            });\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static POST: FullSyncRequestable = new FullSyncRequestable(\"post\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            try {\n                const fullSyncPolicyParameter: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncPostDocumentParameter.POLICY.name, false);\n                const fullSyncPolicy: FullSyncPolicy = FullSyncPolicy.getFullSyncPolicy(fullSyncPolicyParameter);\n                let fullSyncPolicySubMerge = [];\n                if(fullSyncPolicyParameter == \"merge\"){\n                    for(let elem in parameters){\n                        if(elem.indexOf(\"_use_merge\") == 0){\n                            let key = elem.substring(11);\n                            let value = parameters[elem];\n                            fullSyncPolicySubMerge.push({key:key, value: value});\n                        }\n                    }\n                }\n                resolve(c8oFullSync.handlePostDocumentRequest(databaseName, fullSyncPolicy, parameters, fullSyncPolicySubMerge));\n            } catch (error) {\n                reject(error);\n            }\n\n        }).catch((error) => {\n            throw error;\n        });\n\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static PUT_ATTACHMENT: FullSyncRequestable = new FullSyncRequestable(\"put_attachment\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            const docid: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetDocumentParameter.DOCID.name, false);\n            const name: string = C8oUtilsCore.getParameterStringValue(parameters, FullSyncAttachmentParameter.NAME.name, false);\n            const contentType: string = C8oUtilsCore.getParameterStringValue(parameters, FullSyncAttachmentParameter.CONTENT_TYPE.name, false);\n            const content = C8oUtilsCore.getParameterObjectValue(parameters, FullSyncAttachmentParameter.CONTENT.name, false);\n            resolve(c8oFullSync.handlePutAttachmentRequest(databaseName, docid, name, contentType, content));\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    public static GET_ATTACHMENT: FullSyncRequestable = new FullSyncRequestable(\"get_attachment\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            const docid: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetDocumentParameter.DOCID.name, false);\n            const name: string = C8oUtilsCore.getParameterStringValue(parameters, FullSyncAttachmentParameter.NAME.name, false);\n            resolve(c8oFullSync.handleGetAttachmentRequest(databaseName, docid, name, parameters));\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static DELETE_ATTACHMENT: FullSyncRequestable = new FullSyncRequestable(\"delete_attachment\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            const docid: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetDocumentParameter.DOCID.name, false);\n            const name: string = C8oUtilsCore.getParameterStringValue(parameters, FullSyncAttachmentParameter.NAME.name, false);\n            resolve(c8oFullSync.handleDeleteAttachmentRequest(databaseName, docid, name));\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static ALL: FullSyncRequestable = new FullSyncRequestable(\"all\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            c8oFullSync.handleAllDocumentsRequest(databaseName, parameters)\n            .then((result) => {\n                resolve(result);\n            });\n        }).catch((error) => {\n            throw error;\n        });\n    });\n    //noinspection JSUnusedLocalSymbols\n    public static ALL_LOCAL: FullSyncRequestable = new FullSyncRequestable(\"all_local\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            c8oFullSync.handleAllLocalDocumentsRequest(databaseName, parameters)\n            .then((result) => {\n                resolve(result);\n            });\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static VIEW: FullSyncRequestable = new FullSyncRequestable(\"view\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            const ddoc: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetViewParameter.DDOC.name, false);\n            const view: string = C8oUtilsCore.peekParameterStringValue(parameters, FullSyncGetViewParameter.VIEW.name, false);\n            c8oFullSync.handleGetViewRequest(databaseName, ddoc, view, parameters).then((result) => {\n                resolve(result);\n            }).catch((error) => {\n                reject(error);\n            });\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static CREATEINDEX: FullSyncRequestable = new FullSyncRequestable(\"createIndex\", async (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n            try{\n                const fields: string = C8oUtilsCore.peekParameterObjectValue(parameters, \"fields\", false);\n                let result = await c8oFullSync.handleCreateIndexRequest(databaseName, fields, parameters);\n                return result;\n            }\n            catch(e){\n                return e;\n            }\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static FIND: FullSyncRequestable = new FullSyncRequestable(\"find\", async (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        try{\n            const selector: string = C8oUtilsCore.peekParameterObjectValue(parameters, \"selector\", false);\n            let result = await c8oFullSync.handleGetFindRequest(databaseName, selector, parameters);\n            return result;\n        }\n        catch(e){\n            return e;\n        }\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static EXPLAIN: FullSyncRequestable = new FullSyncRequestable(\"explain\", async (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        try{\n            const selector: string = C8oUtilsCore.peekParameterObjectValue(parameters, \"selector\", false);\n            let result = await c8oFullSync.handleExplainRequest(databaseName, selector, parameters);\n            return result;\n        }\n        catch(e){\n            return e;\n        }\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static GETINDEXES: FullSyncRequestable = new FullSyncRequestable(\"getIndexes\", async (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        try{\n            let result = await c8oFullSync.handleGetIndexesRequest(databaseName, parameters);\n            return result;\n        }\n        catch(e){\n            return e;\n        }\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static DELETEINDEX: FullSyncRequestable = new FullSyncRequestable(\"deleteIndex\", async (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        try{\n            let result = await c8oFullSync.handleDeleteIndexRequest(databaseName, parameters);\n            return result;\n        }\n        catch(e){\n            return e;\n        }\n    });\n\n    //noinspection JSUnusedLocalSymbols\n    public static SEARCH: FullSyncRequestable = new FullSyncRequestable(\"search\", async (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        try{\n            const query: string = C8oUtilsCore.peekParameterObjectValue(parameters, \"query\", false);\n            const fields: string = C8oUtilsCore.peekParameterObjectValue(parameters, \"fields\", false);\n            let result = await c8oFullSync.handleSearchRequest(databaseName, query, fields, parameters);\n            return result;\n        }\n        catch(e){\n            return e;\n        }\n    });\n\n    \n    public static SYNC: FullSyncRequestable = new FullSyncRequestable(\"sync\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        let pullFinish: boolean = false;\n        let pushFinish: boolean = false;\n        return new Promise((resolve, reject) => {\n            c8oFullSync.handleSyncRequest(databaseName, parameters, new C8oResponseProgressListener((progress, parameters) => {\n                if(parameters[\"cancel\"] == true){\n                    resolve({ok: true});\n                }\n                else{\n                    if (!pullFinish && progress.pull && progress.finished) {\n                        pullFinish = true;\n                        c8oFullSync.c8o.log._debug(\"handleFullSyncRequest pullFinish = true: \" + progress.toString());\n                    }\n                    if (!pushFinish && progress.push && progress.finished) {\n                        pushFinish = true;\n                        c8oFullSync.c8o.log._debug(\"handleFullSyncRequest pushFinish = true: \" + progress.toString());\n                    }\n                    if (c8oResponseListener instanceof C8oResponseJsonListener) {\n                        c8oFullSync.c8o.log._debug(\"handleFullSyncRequest onJsonResponse: \" + progress.toString());\n                        const varNull: JSON = null;\n                        (c8oResponseListener as C8oResponseJsonListener).onJsonResponse(varNull, parameters);\n                    }\n                    if (pullFinish || pushFinish) {\n                        resolve({ok: true});\n                    }\n                }\n            })).catch((error) => {\n                reject(error);\n            });\n        })\n            .catch((error) => {\n                throw error;\n            });\n    });\n\n    public static REPLICATE_PULL: FullSyncRequestable = new FullSyncRequestable(\"replicate_pull\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            c8oFullSync.handleReplicatePullRequest(databaseName, parameters, new C8oResponseProgressListener((progress, param) => {\n                if(parameters[\"cancel\"] == true){\n                    resolve({ok: true});\n                }\n                else{\n                    if (progress.finished) {\n                        resolve({ok: true});\n                    }\n                    if (c8oResponseListener instanceof C8oResponseJsonListener) {\n                        const varNull: JSON = null;\n                        (c8oResponseListener as C8oResponseJsonListener).onJsonResponse(varNull, param);\n                    }\n                }\n            })).catch((error) => {\n                reject(error);\n            });\n        })\n            .catch((error) => {\n                throw error;\n            });\n    });\n\n    public static REPLICATE_PUSH: FullSyncRequestable = new FullSyncRequestable(\"replicate_push\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            c8oFullSync.handleReplicatePushRequest(databaseName, parameters, new C8oResponseProgressListener((progress, param) => {\n                if(parameters[\"cancel\"] == true){\n                    resolve({ok: true});\n                }\n                else{\n                    if (progress.finished) {\n                        resolve({ok: true});\n                    }\n                    if (c8oResponseListener instanceof C8oResponseJsonListener) {\n                        const varNull: JSON = null;\n                        (c8oResponseListener as C8oResponseJsonListener).onJsonResponse(varNull, param);\n                    }\n                }\n            })).catch((error) => {\n                reject(error);\n            });\n        })\n            .catch((error) => {\n                throw error;\n            });\n    });\n\n    //noinspection JSUnusedLocalSymbols,JSUnusedLocalSymbols\n    public static RESET: FullSyncRequestable = new FullSyncRequestable(\"reset\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            c8oFullSync.handleResetDatabaseRequest(databaseName).then((response) => {\n                c8oFullSync.c8o.subscriber_database_reset.next({ databaseName: databaseName, success: true, error: false });\n                resolve(response);\n            }).catch((error) => {\n                c8oFullSync.c8o.subscriber_database_reset.error({ databaseName: databaseName, success: false, error: true, nativeError: error });\n                reject(error);\n            });\n        })\n    });\n\n    //noinspection JSUnusedLocalSymbols,JSUnusedLocalSymbols\n    public static CREATE: FullSyncRequestable = new FullSyncRequestable(\"create\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            resolve(c8oFullSync.handleCreateDatabaseRequest(databaseName));\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    //noinspection JSUnusedLocalSymbols,JSUnusedLocalSymbols\n    public static BULK: FullSyncRequestable = new FullSyncRequestable(\"bulk\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            resolve(c8oFullSync.handleBulkRequest(databaseName, parameters));\n        }).catch((error) => {\n            throw error;\n        });\n    });\n\n    public static INFO: FullSyncRequestable = new FullSyncRequestable(\"info\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve) => {\n            resolve(c8oFullSync.handleInfoRequest(databaseName));\n        }).catch((error) => {\n            throw error;\n        });\n    });    \n\n\n    //noinspection JSUnusedLocalSymbols,JSUnusedLocalSymbols\n    public static DESTROY: FullSyncRequestable = new FullSyncRequestable(\"destroy\", (c8oFullSync: C8oFullSyncCbl, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener) => {\n        return new Promise((resolve, reject) => {\n            c8oFullSync.handleDestroyDatabaseRequest(databaseName).then((response) => {\n                resolve(response);\n            }).catch((error) => {\n                reject(error);\n            });\n        }).catch((error) => {\n            throw error;\n        });\n\n    });\n\n    private value: string;\n    private handleFullSyncRequestOp: (c8oFullSyncCbl: C8oFullSync, str: string, dictionary: Object, c8oResponseListener: C8oResponseListener) => any;\n\n    constructor(value: string, handleFullSyncRequestOp: (c8oFullSyncCbl: C8oFullSyncCbl, str: string, dictionary: Object, c8oResponseListener: C8oResponseListener) => any) {\n        this.value = value;\n        this.handleFullSyncRequestOp = handleFullSyncRequestOp;\n    }\n\n    public handleFullSyncRequest(c8oFullSync: C8oFullSync, databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any> {\n        return new Promise((resolve, reject) => {\n            this.handleFullSyncRequestOp(c8oFullSync, databaseName, parameters, c8oResponseListener).then((result) => {\n                resolve(result);\n            }).catch((error) => {\n                reject(error);\n            });\n        });\n\n    }\n\n    public static getFullSyncRequestable(value: string): FullSyncRequestable {\n        const fullSyncRequestableValues: FullSyncRequestable[] = FullSyncRequestable.values();\n        for (let i = 0; i < fullSyncRequestableValues.length; i++) {\n            if (fullSyncRequestableValues[i].value === value) {\n                return fullSyncRequestableValues[i];\n            }\n        }\n        return null;\n    }\n\n    public static values(): FullSyncRequestable[] {\n        return [this.GET, this.DELETE, this.POST, this.ALL, this.ALL_LOCAL, this.VIEW, this.SYNC, this.REPLICATE_PULL, this.REPLICATE_PUSH, this.RESET, this.CREATE, this.DESTROY, this.PUT_ATTACHMENT, this.GET_ATTACHMENT,this.DELETE_ATTACHMENT, this.BULK, this.INFO, this.CREATEINDEX, this.FIND, this.DELETEINDEX, this.GETINDEXES, this.EXPLAIN, this.SEARCH];\n\n    }\n}\n","export class FullSyncResponse {\n\n    /**\n     * The response key indicating the operation status.\n     */\n    public static RESPONSE_KEY_OK: string = \"ok\";\n    /**\n     * The response key indicating the document ID.\n     */\n    public static RESPONSE_KEY_DOCUMENT_ID: string = \"id\";\n    /**\n     * The response key indicating the document revision.\n     */\n    public static RESPONSE_KEY_DOCUMENT_REVISION: string = \"rev\";\n}\n\n/**\n * Returned by a fullSync operation without return data.\n */\nexport class FullSyncAbstractResponse {\n    private operationStatus: boolean;\n\n    constructor(operationStatus: boolean) {\n        this.operationStatus = operationStatus;\n    }\n\n    public getProperties(): any {\n        const properties: Object = {};\n        properties[FullSyncResponse.RESPONSE_KEY_OK] = this.operationStatus;\n        return properties;\n    }\n}\n\n/**\n * Represents a default fullSync response.\n */\nexport class FullSyncDefaultResponse extends FullSyncAbstractResponse {\n    constructor(operationStatus: boolean) {\n        super(operationStatus);\n    }\n}\n\n/**\n * Returned by a fullSync document operation without return data.\n */\nexport class FullSyncDocumentOperationResponse extends FullSyncAbstractResponse {\n    public documentId: string;\n    public documentRevision: string;\n\n    constructor(documentId: string, documentRevision: string, operationStatus: boolean) {\n        super(operationStatus);\n        this.documentId = documentId;\n        this.documentRevision = documentRevision;\n    }\n\n    public getProperties(): Object {\n        const properties: Object = super.getProperties();\n        properties[FullSyncResponse.RESPONSE_KEY_DOCUMENT_ID] = this.documentId;\n        properties[FullSyncResponse.RESPONSE_KEY_DOCUMENT_REVISION] = this.documentRevision;\n        return properties;\n    }\n\n}\n","import { C8oCore } from \"./c8oCore\";\n\nexport class C8oAlldocsLocal {\n\n    constructor(private c8o: C8oCore) {\n    }\n    private DB_VERSION = 5;\n    private LOCAL_STORE = 'local-store';\n    private ATTACH_STORE = 'attach-store';\n\n    public alldocs(opts, db): Promise<any> {\n        return new Promise((resolve, reject) => {\n            \n            let dbName = db[\"prefix\"] + db[\"name\"];\n            opts.skip = typeof opts.skip !== 'undefined' ? opts.skip : 0;\n            if (opts.start_key) {\n                opts.startkey = opts.start_key;\n            }\n            if (opts.end_key) {\n                opts.endkey = opts.end_key;\n            }\n            if ('keys' in opts) {\n                if (!Array.isArray(opts.keys)) {\n                    return reject(new TypeError('options.keys must be an array'));\n                }\n                var incompatibleOpt =\n                    ['startkey', 'endkey', 'key'].filter(function (incompatibleOpt) {\n                        return incompatibleOpt in opts;\n                    })[0];\n                if (incompatibleOpt) {\n                    reject('Some query parameter is invalid' +\n                        'Query parameter `' + incompatibleOpt +\n                        '` is not compatible with multi-get'\n                    );\n                    return;\n                }\n                if (!this.isRemote(db)) {\n                    this.allDocsKeysParse(opts);\n                    if (opts.keys.length === 0) {\n                        let callback = (arg1, arg2, arg3) => {\n                            resolve({ arg1: arg1, arg2: arg2, arg3: arg3 })\n                        }\n                        return this.idbAllDocs({ limit: 0 }, callback, dbName);\n                    }\n                }\n            }\n            let callback = (err, result) => {\n                if(!err){\n                    this.c8o.log._trace(\"[c8oAlldocsLocal], alldocs: ok\" );\n                }\n                else{\n                    this.c8o.log._error(\"[c8oAlldocsLocal], alldocs: an error occured :\", err);\n                }\n\n                resolve({ err: err, result: result})\n            }\n            return this.idbAllDocs(opts, callback, dbName);\n\n        });\n    }\n    private openBase(DB_NAME, resolve = null, reject= null) {\n        if(resolve != null){\n            this.doOpenBase(DB_NAME, resolve, reject)\n        }\n        return new Promise((resolve, reject)=>{\n            this.doOpenBase(DB_NAME, resolve, reject)\n        });\n    }\n\n    private doOpenBase(DB_NAME, resolve = null, reject= null){\n        try {\n            let req = window.indexedDB.open(DB_NAME, this.DB_VERSION);\n            req.onsuccess = (event) => {\n                if(req.result.objectStoreNames.length == 0){\n                    this.c8o.log._debug(\"[alldocs] database is corrupted, we need to re-initialized it\");\n                    this.restaureDb(DB_NAME)\n                    .then(()=>{\n                        this.c8o.log._debug(\"[alldocs] database has been re-initialized, we will execute all docs\");\n                        this.openBase(DB_NAME, resolve, reject)\n                    })\n                    .catch((err)=>{\n                        reject(err)\n                    })\n                    \n                }\n                else{\n                    resolve(req.result);\n                }\n               \n           }\n        }\n        catch(err){\n            reject(err);\n        }\n    }\n\n    private restaureDb(DB_NAME){\n        return new Promise<void>((resolve, reject)=>{\n            var dbDeleteRequest = window.indexedDB.deleteDatabase(DB_NAME);\n            dbDeleteRequest.onerror = (event)=> {\n                this.c8o.log._error(\"[alldocs] database is corrupted, failed to re-initialized database\");\n                reject(event)\n            };\n        \n            dbDeleteRequest.onsuccess = (event)=> {\n                this.c8o.log._debug(\"[alldocs] database is corrupted, deletion successfull\");\n                // Let us open our database\n                var DBOpenRequest = window.indexedDB.open(DB_NAME, 5);\n        \n                DBOpenRequest.onsuccess = (event)=> {\n                    this.c8o.log._debug(\"[alldocs] database is corrupted, creation successfull\");\n                    resolve();\n                };\n        \n                DBOpenRequest.onupgradeneeded = (event)=> {\n                    this.c8o.log._debug(\"[alldocs] database is corrupted, database need to be upgraded\");\n                };\n                DBOpenRequest.onerror = (event: any)=> {\n                    this.c8o.log._error(\"[alldocs] database is corrupted, creation errored\", event);\n                    reject(event)\n                };\n            };\n        })\n        \n    }\n\n    private async idbAllDocs(opts, callback, DB_NAME) {\n        let idb = await this.openBase(DB_NAME)\n\n        var start = 'startkey' in opts ? opts.startkey : false;\n        var end = 'endkey' in opts ? opts.endkey : false;\n        var key = 'key' in opts ? opts.key : false;\n        var keys = 'keys' in opts ? opts.keys : false;\n        var skip = opts.skip || 0;\n        var limit = typeof opts.limit === 'number' ? opts.limit : -1;\n        var inclusiveEnd = opts.inclusive_end !== false;\n\n        var keyRange;\n        var keyRangeError;\n        if (!keys) {\n            keyRange = this.createKeyRange(start, end, inclusiveEnd, key, opts.descending);\n            keyRangeError = keyRange && keyRange.error;\n            if (keyRangeError &&\n                !(keyRangeError.name === \"DataError\" && keyRangeError.code === 0)) {\n                // DataError with error code 0 indicates start is less than end, so\n                // can just do an empty query. Else need to throw\n                return callback(\"indexed_db_went_bad\" +\n                    keyRangeError.name, keyRangeError.message);\n            }\n        }\n\n        var stores = [this.LOCAL_STORE];\n\n        if (opts.attachments) {\n            stores.push(this.ATTACH_STORE);\n        }\n        var txnResult = this.openTransactionSafely(idb, stores, 'readonly');\n        if (txnResult[\"error\"]) {\n            return callback(txnResult[\"error\"]);\n        }\n        var txn = txnResult[\"txn\"];\n        txn.oncomplete = onTxnComplete;\n        txn.onabort = callback;\n        var localStore = txn.objectStore(this.LOCAL_STORE);\n        var results = [];\n        var docCount;\n\n        var countRequest = localStore.count();\n        countRequest.onsuccess = function () {\n            docCount = countRequest.result;\n        }\n\n        function allDocsInner(winningRev$$1, metadata) {\n            var row = {\n                id: metadata.id,\n                key: metadata.id,\n                value: {\n                    rev: winningRev$$1\n                }\n            };\n            var deleted = metadata.deleted;\n            if (deleted) {\n                if (keys) {\n                    results.push(row);\n                    // deleted docs are okay with \"keys\" requests\n                    row[\"value\"][\"deleted\"] = true;\n                    row[\"doc\"] = null;\n                }\n            } else if (skip-- <= 0) {\n                results.push(row);\n                if (opts.include_docs) {\n                    row[\"doc\"] = metadata[\"_c8o_inlcude\"];\n                }\n            }\n        }\n\n        let processBatch  = (batchValues) =>{\n            for (var i = 0, len = batchValues.length; i < len; i++) {\n                if (results.length === limit) {\n                    break;\n                }\n                var batchValue = batchValues[i];\n                if (batchValue.error && keys) {\n                    // key was not found with \"keys\" requests\n                    results.push(batchValue);\n                    continue;\n                }\n                var metadata = this.decodeMetadata(batchValue);\n                var winningRev$$1 = metadata[\"winningRev\"];\n                metadata[\"_c8o_inlcude\"] = batchValue;\n                allDocsInner(winningRev$$1, metadata);\n            }\n        }\n\n        function onBatch(batchKeys, batchValues, cursor) {\n            if (!cursor) {\n                return;\n            }\n            processBatch(batchValues);\n            if (results.length < limit) {\n                cursor.continue();\n            }\n        }\n\n        function onGetAll(e) {\n            var values = e.target.result;\n            if (opts.descending) {\n                values = values.reverse();\n            }\n            processBatch(values);\n        }\n\n        function onResultsReady() {\n            var returnVal = {\n                total_rows: docCount,\n                offset: opts.skip,\n                rows: results\n            };\n\n            callback(null, returnVal);\n        }\n\n        function onTxnComplete() {\n            if (opts.attachments) {\n                this.postProcessAttachments(results, opts.binary).then(onResultsReady);\n            } else {\n                onResultsReady();\n            }\n        }\n\n        // don't bother doing any requests if start > end or limit === 0\n        if (keyRangeError || limit === 0) {\n            return;\n        }\n        if (keys) {\n            return this.allDocsKeys(opts.keys, localStore, onBatch);\n        }\n        if (limit === -1) { // just fetch everything\n            return this.getAll(localStore, keyRange, onGetAll);\n        }\n        // else do a cursor\n        // choose a batch size based on the skip, since we'll need to skip that many\n        this.runBatchedCursor(localStore, keyRange, opts.descending, limit + skip, onBatch);\n    }\n\n    private runBatchedCursor(objectStore, keyRange, descending, batchSize, onBatch) {\n\n        if (batchSize === -1) {\n          batchSize = 1000;\n        }\n      \n        // Bail out of getAll()/getAllKeys() in the following cases:\n        // 1) either method is unsupported - we need both\n        // 2) batchSize is 1 (might as well use IDBCursor)\n        // 3) descending – no real way to do this via getAll()/getAllKeys()\n      \n        var useGetAll = typeof objectStore.getAll === 'function' &&\n          typeof objectStore.getAllKeys === 'function' &&\n          batchSize > 1 && !descending;\n      \n        var keysBatch;\n        var valuesBatch;\n        var pseudoCursor;\n      \n        function onGetAll(e) {\n          valuesBatch = e.target.result;\n          if (keysBatch) {\n            onBatch(keysBatch, valuesBatch, pseudoCursor);\n          }\n        }\n      \n        function onGetAllKeys(e) {\n          keysBatch = e.target.result;\n          if (valuesBatch) {\n            onBatch(keysBatch, valuesBatch, pseudoCursor);\n          }\n        }\n      \n        function continuePseudoCursor() {\n          if (!keysBatch.length) { // no more results\n            return onBatch();\n          }\n          // fetch next batch, exclusive start\n          var lastKey = keysBatch[keysBatch.length - 1];\n          var newKeyRange;\n          if (keyRange && keyRange.upper) {\n            try {\n              newKeyRange = IDBKeyRange.bound(lastKey, keyRange.upper,\n                true, keyRange.upperOpen);\n            } catch (e) {\n              if (e.name === \"DataError\" && e.code === 0) {\n                return onBatch(); // we're done, startkey and endkey are equal\n              }\n            }\n          } else {\n            newKeyRange = IDBKeyRange.lowerBound(lastKey, true);\n          }\n          keyRange = newKeyRange;\n          keysBatch = null;\n          valuesBatch = null;\n          objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n          objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n        }\n      \n        function onCursor(e) {\n          var cursor = e.target.result;\n          if (!cursor) { // done\n            return onBatch();\n          }\n          // regular IDBCursor acts like a batch where batch size is always 1\n          onBatch([cursor.key], [cursor.value], cursor);\n        }\n      \n        if (useGetAll) {\n          pseudoCursor = {\"continue\": continuePseudoCursor};\n          objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n          objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n        } else if (descending) {\n          objectStore.openCursor(keyRange, 'prev').onsuccess = onCursor;\n        } else {\n          objectStore.openCursor(keyRange).onsuccess = onCursor;\n        }\n      }\n\n    private getAll(objectStore, keyRange, onSuccess) {\n        if (typeof objectStore.getAll === 'function') {\n          // use native getAll\n          objectStore.getAll(keyRange).onsuccess = onSuccess;\n          return;\n        }\n        // fall back to cursors\n        var values = [];\n      \n        function onCursor(e) {\n          var cursor = e.target.result;\n          if (cursor) {\n            values.push(cursor.value);\n            cursor.continue();\n          } else {\n            onSuccess({\n              target: {\n                result: values\n              }\n            });\n          }\n        }\n        \n  objectStore.openCursor(keyRange).onsuccess = onCursor;\n}\n\n    private allDocsKeys(keys, docStore, onBatch) {\n        // It's not guaranted to be returned in right order  \n        var valuesBatch = new Array(keys.length);\n        var count = 0;\n        keys.forEach(function (key, index) {\n            docStore.get(key).onsuccess = function (event) {\n                if (event.target.result) {\n                    valuesBatch[index] = event.target.result;\n                } else {\n                    valuesBatch[index] = { key: key, error: 'not_found' };\n                }\n                count++;\n                if (count === keys.length) {\n                    onBatch(keys, valuesBatch, {});\n                }\n            };\n        });\n    }\n\n    \n    private decodeMetadata(storedObject) {\n        if (!storedObject) {\n            return null;\n        }\n        var metadata = {};\n        metadata[\"winningRev\"] = storedObject._rev;\n        metadata[\"id\"] = storedObject._id;\n        return metadata;\n    }\n\n    private openTransactionSafely(idb, stores, mode) {\n        try {\n            return {\n                txn: idb.transaction(stores, mode)\n            };\n        } catch (err) {\n            return {\n                error: err\n            };\n        }\n    }\n\n    private isRemote(db) {\n        if (typeof db._remote === 'boolean') {\n            return db._remote;\n        }\n        /* istanbul ignore next */\n        if (typeof db.type === 'function') {\n            return db.type() === 'http';\n        }\n        /* istanbul ignore next */\n        return false;\n    }\n\n    private allDocsKeysParse(opts) {\n        var keys = ('limit' in opts) ?\n            opts.keys.slice(opts.skip, opts.limit + opts.skip) :\n            (opts.skip > 0) ? opts.keys.slice(opts.skip) : opts.keys;\n        opts.keys = keys;\n        opts.skip = 0;\n        delete opts.limit;\n        if (opts.descending) {\n            keys.reverse();\n            opts.descending = false;\n        }\n    }\n\n    private createKeyRange(start, end, inclusiveEnd, key, descending) {\n        try {\n            if (start && end) {\n                if (descending) {\n                    return IDBKeyRange.bound(end, start, !inclusiveEnd, false);\n                } else {\n                    return IDBKeyRange.bound(start, end, false, !inclusiveEnd);\n                }\n            } else if (start) {\n                if (descending) {\n                    return IDBKeyRange.upperBound(start);\n                } else {\n                    return IDBKeyRange.lowerBound(start);\n                }\n            } else if (end) {\n                if (descending) {\n                    return IDBKeyRange.lowerBound(end, !inclusiveEnd);\n                } else {\n                    return IDBKeyRange.upperBound(end, !inclusiveEnd);\n                }\n            } else if (key) {\n                return IDBKeyRange.only(key);\n            }\n        } catch (e) {\n            return { error: e };\n        }\n        return null;\n    }\n}","import { C8oCore, FullSyncPolicy } from \"./c8oCore\";\nimport { C8oFullSyncChangeListener } from \"./c8oFullSyncChangeListener\";\nimport { C8oFullSyncTranslator } from \"./c8oFullSyncTranslator\";\nimport { C8oLocalCacheResponse } from \"./c8oLocalCacheResponse\";\nimport { C8oResponseJsonListener, C8oResponseListener } from \"./c8oResponse\";\nimport { C8oUtilsCore, Semaphore } from \"./c8oUtilsCore\";\nimport { C8oCouchBaseLiteException } from \"./Exception/c8oCouchBaseLiteException\";\nimport { C8oException } from \"./Exception/c8oException\";\nimport { C8oExceptionMessage } from \"./Exception/c8oExceptionMessage\";\nimport { C8oRessourceNotFoundException } from \"./Exception/c8oRessourceNotFoundException\";\nimport { C8oUnavailableLocalCacheException } from \"./Exception/c8oUnavailableLocalCacheException\";\nimport { C8oFullSyncDatabase } from \"./fullSyncDatabase\";\nimport { FullSyncDeleteDocumentParameter } from \"./fullSyncDeleteDocumentParameter\";\nimport { FullSyncRequestable } from \"./fullSyncRequestable\";\nimport { FullSyncDefaultResponse, FullSyncDocumentOperationResponse } from \"./fullSyncResponse\";\n\nexport class C8oFullSync {\n    /**\n     * The project requestable value to execute a fullSync request.\n     */\n    public static FULL_SYNC_PROJECT: string = \"fs://\";\n    public static FULL_SYNC__ID: string = \"_id\";\n    public static FULL_SYNC__REV: string = \"_rev\";\n    public static FULL_SYNC__ATTACHMENTS: string = \"_attachments\";\n\n    public c8o: C8oCore;\n    protected fullSyncDatabaseUrlBase: string;\n    protected localSuffix: string;\n\n    public constructor(c8o: C8oCore) {\n        this.c8o = c8o;\n        this.fullSyncDatabaseUrlBase = this.normalizeFullSyncBase(c8o.fullSyncEndpoint);\n        this.localSuffix = (c8o.fullSyncLocalSuffix !== null) ? c8o.fullSyncLocalSuffix : \"_device\";\n    }\n\n    protected normalizeFullSyncBase(base: string): string {\n        if (!base) {\n            return \"\";\n        }\n        return base.endsWith(\"/\") ? base : `${base}/`;\n    }\n\n    public updateFullSyncEndpoint(base: string): void {\n        this.fullSyncDatabaseUrlBase = this.normalizeFullSyncBase(base);\n    }\n\n    /**\n     * Handles a fullSync request.<br/>\n     * It determines the type of the request thanks to parameters.\n     *\n     * @param _parameters\n     * @param listener\n     * @return promise<any>\n     * @throws C8oException\n     */\n    public async handleFullSyncRequest(_parameters: Object, listener: C8oResponseListener): Promise<any> {\n        return new Promise((resolve, reject) => {\n\n            const parameters = {};\n            for (const val in _parameters) {\n                if (_parameters[val] instanceof Blob != true && typeof _parameters[val] !== \"function\") {\n                    //if it's not a blob then stringify and parse the value to make some values like true case insensitive ( from string to boolean)\n                    parameters[val] = JSON.parse(JSON.stringify(_parameters[val]));\n                } else {\n                    parameters[val] = _parameters[val];\n                }\n            }\n            const projectParameterValue: string = C8oUtilsCore.peekParameterStringValue(parameters, C8oCore.ENGINE_PARAMETER_PROJECT, true);\n            if (projectParameterValue.indexOf(C8oFullSync.FULL_SYNC_PROJECT) !== 0) {\n                reject(new C8oException(C8oExceptionMessage.invalidParameterValue(projectParameterValue, \"its don't start with\" + C8oFullSync.FULL_SYNC_PROJECT)));\n            }\n            let fullSyncRequestableValue: string = C8oUtilsCore.peekParameterStringValue(parameters, C8oCore.ENGINE_PARAMETER_SEQUENCE, true);\n\n            //  get rid of the optional trailing #RouteHint present in the sequence\n            if (fullSyncRequestableValue.indexOf(\"#\") !== -1) {\n                fullSyncRequestableValue = fullSyncRequestableValue.substring(0, fullSyncRequestableValue.indexOf(\"#\"));\n            }\n\n            const fullSyncRequestable: FullSyncRequestable = FullSyncRequestable.getFullSyncRequestable(fullSyncRequestableValue);\n            if (fullSyncRequestable === null) {\n                reject(new C8oException(C8oExceptionMessage.invalidParameterValue(C8oCore.ENGINE_PARAMETER_PROJECT, C8oExceptionMessage.unknownValue(\"fullSync requestable\", fullSyncRequestableValue))));\n            }\n            let databaseName: string = projectParameterValue.substring(C8oFullSync.FULL_SYNC_PROJECT.length);\n            if (databaseName.length < 1) {\n                databaseName = this.c8o.defaultDatabaseName;\n                if (databaseName === null) {\n                    reject(new C8oException(C8oExceptionMessage.invalidParameterValue(C8oCore.ENGINE_PARAMETER_PROJECT, C8oExceptionMessage.missingValue(\"fullSync database name\"))));\n                }\n            }\n\n            let response: any;\n\n            fullSyncRequestable.handleFullSyncRequest(this, databaseName, parameters, listener).then((result) => {\n                response = result;\n                if (response === null || response === undefined) {\n                    reject(new C8oException(C8oExceptionMessage.couchNullResult()));\n                }\n                resolve(this.handleFullSyncResponse(response, listener));\n            }).catch((error) => {\n                if (error instanceof C8oException) {\n                    reject(error);\n                } else {\n                    reject(new C8oException(C8oExceptionMessage.FullSyncRequestFail(), error));\n                }\n            });\n        });\n    }\n\n    //noinspection JSUnusedLocalSymbols\n    /**\n     *\n     * @param response\n     * @param listener\n     * @return response\n     * @throws C8oException Failed to parse response.\n     */\n    public handleFullSyncResponse(response: any, listener: C8oResponseListener): any {\n        return response;\n    }\n\n    /**\n     * Checks if request parameters correspond to a fullSync request.\n     */\n    public static isFullSyncRequest(requestParameter: Object): boolean {\n        if (C8oUtilsCore.getParameterStringValue(requestParameter, C8oCore.ENGINE_PARAMETER_PROJECT, false) !== null) {\n            return C8oUtilsCore.getParameterStringValue(requestParameter, C8oCore.ENGINE_PARAMETER_PROJECT, false).indexOf(C8oFullSync.FULL_SYNC_PROJECT) === 0;\n        } else {\n            return false;\n        }\n    }\n\n}\nimport { ReplicationState } from \"./fullSyncDatabase\"\nimport { C8oAlldocsLocal } from './c8oAlldocsLocal';\nexport class C8oFullSyncCbl extends C8oFullSync {\n    private static ATTACHMENT_PROPERTY_KEY_CONTENT_URL: string = \"content_url\";\n    private fullSyncDatabases: Object;\n    private fullSyncChangeListeners: C8oFullSyncChangeListener[][] = [];\n    private cblChangeListeners: any[] = [];\n    public replicationsToRestart: Array<ReplicationState> = [];\n    public canceled = false;\n\n    constructor(c8o: C8oCore) {\n        super(c8o);\n        this.fullSyncDatabases = {};\n        if (window[\"C8oFullSyncCbl\"] == undefined) {\n            window[\"C8oFullSyncCbl\"] = [];\n        }\n    }\n\n    public updateFullSyncEndpoint(base: string): void {\n        super.updateFullSyncEndpoint(base);\n        const normalizedBase = this.fullSyncDatabaseUrlBase;\n        for (const key in this.fullSyncDatabases) {\n            if (this.fullSyncDatabases.hasOwnProperty(key)) {\n                const db = this.fullSyncDatabases[key] as C8oFullSyncDatabase;\n                if (db && typeof db.setRemoteBase === \"function\") {\n                    db.setRemoteBase(normalizedBase);\n                }\n            }\n        }\n    }\n\n    /**\n     * Returns the database with this name in the list.<br/>\n     * If it does not already exist yet then creates it and adds it to the list.\n     *\n     * @param databaseName\n     * @return C8oFullSyncDatabase\n     * @throws C8oException Failed to create a new fullSync database.\n     */\n    public async getOrCreateFullSyncDatabase(databaseName: string, isLocalCache = false): Promise<C8oFullSyncDatabase> {\n        let mutex = window[\"C8oFullSyncCbl\"][databaseName] == undefined ? window[\"C8oFullSyncCbl\"][databaseName] = new Semaphore(1) : window[\"C8oFullSyncCbl\"][databaseName];\n        await mutex.acquire();\n        let localDatabaseName: string = databaseName + this.localSuffix;\n\n        localDatabaseName = this.c8o.database.localName(localDatabaseName, true);\n        let prefix = this.c8o.prefixBase == true && isLocalCache == false ? this.c8o.session.user.name + \"_\" : \"\";\n\n        if (this.fullSyncDatabases[localDatabaseName] == null) {\n            this.fullSyncDatabases[localDatabaseName] = new C8oFullSyncDatabase(this.c8o, databaseName, this.fullSyncDatabaseUrlBase, this.localSuffix, prefix);\n        }\n        mutex.release();\n        return this.fullSyncDatabases[localDatabaseName];\n    }\n\n    public handleFullSyncResponse(response: any, listener: C8oResponseListener): any {\n        response = super.handleFullSyncResponse(response, listener);\n        if (listener instanceof C8oResponseJsonListener) {\n            if (response instanceof FullSyncDocumentOperationResponse) {\n                return C8oFullSyncTranslator.fullSyncDocumentOperationResponseToJson(response as FullSyncDocumentOperationResponse);\n            } else if (response instanceof FullSyncDefaultResponse) {\n                return C8oFullSyncTranslator.fullSyncDefaultResponseToJson(response as FullSyncDefaultResponse);\n            } else if (response instanceof Object) {\n                return response as JSON;\n            } else {\n                throw new C8oException(C8oExceptionMessage.illegalArgumentIncompatibleListener(listener.toString(), typeof response));\n            }\n        }\n    }\n\n    public async handleGetAttachmentUrlRequest(fullSyncDatabaseName: string, docid: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase: C8oFullSyncDatabase = null;\n        fullSyncDatabase = await this.getOrCreateFullSyncDatabase(fullSyncDatabaseName);\n        const attachmentName = C8oUtilsCore.getParameterStringValue(parameters, \"attachment_name\", false);\n        return new Promise((resolve) => {\n            fullSyncDatabase.getdatabase.getAttachment(docid, attachmentName).then((buffer) => {\n                resolve(buffer);\n            });\n        });\n    }\n\n    public async handleGetDocumentRequest(fullSyncDatabaseName: string, docid: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase: C8oFullSyncDatabase = null;\n        let param: Object;\n        param = parameters[\"attachments\"] ? { attachments: true } : {};\n        parameters[\"binary\"] ? param[\"binary\"] = true : {};\n\n        fullSyncDatabase = await this.getOrCreateFullSyncDatabase(fullSyncDatabaseName);\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.get(docid, param).then((document) => {\n                if (document == null) {\n                    reject(new C8oRessourceNotFoundException((C8oExceptionMessage.ressourceNotFound(\"requested document \\\"\" + docid + \"\\\"\"))));\n                }\n                if (document === null) {\n                    document = {};\n                }\n                resolve(document);\n            })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    public async handleDeleteDocumentRequest(DatabaseName: string, docid: string, parameters: Object): Promise<any> {\n        return new Promise(async (resolve, reject) => {\n            let fullSyncDatabase: C8oFullSyncDatabase = null;\n\n            fullSyncDatabase = await this.getOrCreateFullSyncDatabase(DatabaseName);\n            const revParameterValue: string = C8oUtilsCore.getParameterStringValue(parameters, FullSyncDeleteDocumentParameter.REV.name, false);\n            let documentRevision: string;\n            if (revParameterValue === null) {\n                fullSyncDatabase.getdatabase.get(docid).then((doc) => {\n                    if (doc === null) {\n                        reject(new C8oRessourceNotFoundException(\"Cannot find document\"));\n                    }\n                    documentRevision = doc._rev;\n                    return fullSyncDatabase.getdatabase.remove(doc);\n                }).then((result) => {\n                    resolve(new FullSyncDocumentOperationResponse(docid, documentRevision, result.ok));\n                }).catch((err) => {\n                    reject(new C8oException(C8oExceptionMessage.couchRequestDeleteDocument(), err));\n                });\n            } else {\n\n                fullSyncDatabase.getdatabase.remove(docid, revParameterValue)\n                    .then((result) => {\n                        resolve(new FullSyncDocumentOperationResponse(docid, documentRevision, result.ok));\n                    }).catch((err) => {\n                        reject(new C8oException(C8oExceptionMessage.couchRequestDeleteDocument(), err));\n                    });\n\n\n            }\n        });\n    }\n\n    public async handlePostDocumentRequest(databaseName: string, fullSyncPolicy: FullSyncPolicy, parameters: Object, fullsyncPolicySubMerge = null): Promise<any> {\n        let fullSyncDatabase: C8oFullSyncDatabase;\n        fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        let subkeySeparatorParameterValue: string = C8oUtilsCore.getParameterStringValue(parameters, C8oCore.FS_SUBKEY_SEPARATOR, false);\n        if (subkeySeparatorParameterValue == null) {\n            subkeySeparatorParameterValue = \".\";\n        }\n        const newProperties = {};\n        for (let i = 0; i < Object.keys(parameters).length; i++) {\n            let parameterName: string = Object.keys(parameters)[i];\n            if (parameterName.indexOf(\"__\") !== 0 && parameterName.indexOf(\"_use_\") !== 0) {\n                let objectParameterValue: any = parameters[Object.keys(parameters)[i]];\n                const paths: string[] = parameterName.split(subkeySeparatorParameterValue);\n                if (paths.length > 1) {\n                    parameterName = paths[0];\n                    let count = paths.length - 1;\n                    while (count > 0) {\n                        const tmpObject: Object = {};\n                        tmpObject[paths[count]] = objectParameterValue;\n                        objectParameterValue = tmpObject;\n                        count--;\n                    }\n                    const existProperty = newProperties[parameterName];\n                    if (existProperty != null) {\n                        C8oFullSyncCbl.mergeProperties(objectParameterValue, existProperty);\n                    }\n                }\n                newProperties[parameterName] = objectParameterValue;\n            }\n\n\n        }\n        if (fullsyncPolicySubMerge != null) {\n\n        }\n        const db = fullSyncDatabase.getdatabase;\n        return new Promise((resolve, reject) => {\n            fullSyncPolicy.action(db, newProperties, { fullsyncPolicySubMerge: fullsyncPolicySubMerge, subkeySeparatorParameterValue: subkeySeparatorParameterValue })\n                .then((createdDocument: any) => {\n                    const fsDocOpeResp: FullSyncDocumentOperationResponse = new FullSyncDocumentOperationResponse(createdDocument.id, createdDocument.rev, createdDocument.ok);\n                    resolve(fsDocOpeResp);\n                }).catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n\n    public async handlePutAttachmentRequest(databaseName: string, docid: string, attachmentName: string, attachmentType: string, attachmentContent: any): Promise<any> {\n        let document: any = null;\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.get(docid).then((result) => {\n                document = result;\n\n                if (document !== null) {\n                    fullSyncDatabase.getdatabase.putAttachment(docid, attachmentName, result._rev, attachmentContent, attachmentType)\n                        .then((result) => {\n                            //  handle result\n                            resolve(new FullSyncDocumentOperationResponse(result._id, result._rev, result.ok));\n                        }).catch((err) => {\n                            reject(new C8oCouchBaseLiteException(\"Unable to put the attachment \" + attachmentName + \" to the document \" + docid + \".\", err));\n                        });\n                } else {\n                    reject(new C8oRessourceNotFoundException(\"Cannot find document\"));\n                }\n\n            })\n            .catch((e)=>{\n                reject(new C8oRessourceNotFoundException(\"TODO: Cannot find document\"));\n                console.error(\"SDK TOTO into catch error\", e);\n            })\n        });\n\n    }\n\n    public async  handleGetAttachmentRequest(databaseName: string, docid: string, attachmentName: string, parameters: any): Promise<any> {\n        let document: any = null;\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.getAttachment(docid, attachmentName, parameters)\n                .then((buffer) => {\n                    resolve(buffer);\n                }).catch((err) => {\n                    reject(new C8oCouchBaseLiteException(\"Unable to put the attachment \" + attachmentName + \" to the document \" + docid + \".\", err));\n                });\n        });\n\n    }\n\n    public async handleDeleteAttachmentRequest(databaseName: string, docid: string, attachmentName: string): Promise<any> {\n        let document: any = null;\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.get(docid).then((result) => {\n                document = result;\n            }).then(() => {\n                if (document !== null) {\n                    fullSyncDatabase.getdatabase.removeAttachment(docid, attachmentName, document._rev).catch((err) => {\n                        reject(new C8oCouchBaseLiteException(\"Unable to delete the attachment \" + attachmentName + \" to the document \" + docid + \".\", err));\n                    });\n                } else {\n                    reject(new C8oRessourceNotFoundException(\"Document do not exists\"));\n                }\n                resolve(new FullSyncDocumentOperationResponse(document._id, document._rev, true));\n            })\n                .catch((err) => {\n                    reject(new C8oException(err.message, err));\n                })\n        });\n    }\n\n    public async handleAllDocumentsRequest(databaseName: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase = null;\n\n        fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase\n                .allDocs(parameters)\n                .then((res) => {\n                    resolve(res);\n                })\n                .catch((err) => {\n                    reject(new C8oException(err.stack));\n                });\n        });\n    }\n    public async handleAllLocalDocumentsRequest(databaseName: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase = null;\n        fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        let c8oAlldocsLocal = new C8oAlldocsLocal(this.c8o);\n        return new Promise((resolve, reject) => {\n            c8oAlldocsLocal.alldocs(parameters, fullSyncDatabase.database)\n                .then((res) => {\n                    if (!res.err) {\n                        resolve(res.result);\n                    }\n                    else {\n                        if (res[\"err\"][\"stack\"] != undefined) {\n                            reject(new C8oException(res[\"err\"][\"stack\"]));\n                        }\n                        else {\n                            reject(new C8oException(JSON.stringify(res[\"err\"])))\n                        }\n                    }\n\n                })\n                .catch((err) => {\n                    if (err[\"err\"][\"stack\"] != undefined) {\n                        reject(new C8oException(err[\"err\"][\"stack\"]));\n                    }\n                    else {\n                        reject(new C8oException(JSON.stringify(err[\"err\"])))\n                    }\n                });\n        });\n    }\n\n    public async handleGetViewRequest(databaseName: string, ddocName: string, viewName: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase = null;\n        fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        let attachments;\n        let binary;\n        let include_docs;\n        if (parameters[\"attachments\"] && window[\"cblite\"] !== undefined) {\n            attachments = C8oUtilsCore.getParameterStringValue(parameters, \"attachments\", false);\n            binary = C8oUtilsCore.getParameterStringValue(parameters, \"binary\", false);\n            include_docs = C8oUtilsCore.getParameterStringValue(parameters, \"include_docs\", false);\n        }\n\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.query(ddocName + \"/\" + viewName, parameters)\n                .then((result) => {\n                    if (attachments) {\n                        const array: Object[] = [];\n                        let len = 0;\n                        for (const resp of result.rows) {\n                            this.handleGetDocumentRequest(databaseName, resp.id, {\n                                attachments: true,\n                                binary: true,\n                                include_docs: true,\n                            }).then((getResult) => {\n                                array.push(getResult);\n                                len++;\n                                if (len === result.rows.length) {\n                                    result.rows = array;\n                                    resolve(result);\n                                }\n                            });\n                        }\n                    } else {\n                        resolve(result);\n                    }\n\n                }).catch((error) => {\n                    reject(new C8oException(C8oExceptionMessage.couchRequestGetView(), error));\n                });\n        });\n\n    }\n\n    public async handleCreateIndexRequest(databaseName: string, fields: any, parameters: Object): Promise<any> {\n        let fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        try {\n            parameters[\"fields\"] = fields;\n            var result = await fullSyncDatabase.getdatabase.createIndex({index: parameters});\n            return result;\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.couchRequestCreateIndex(), err)\n        }\n    }\n\n    public async handleGetFindRequest(databaseName: string,selector:any, parameters: Object): Promise<any> {\n        let fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        try {\n            parameters[\"selector\"] = selector;\n            var result = await fullSyncDatabase.getdatabase.find(parameters);\n            return result;\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.couchRequestFind(), err)\n        }\n    }\n\n    public async handleExplainRequest(databaseName: string,selector:any, parameters: Object): Promise<any> {\n        let fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        try {\n            parameters[\"selector\"] = selector;\n            var result = await fullSyncDatabase.getdatabase.explain(parameters);\n            return result;\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.couchRequestExplain(), err)\n        }\n    }\n\n    public async handleGetIndexesRequest(databaseName: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        try {\n            var result = await fullSyncDatabase.getdatabase.getIndexes();\n            return result;\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.couchRequestGetIndexes(), err)\n        }\n    }\n\n    public async handleDeleteIndexRequest(databaseName: string, parameters: Object): Promise<any> {\n        let fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        try {\n            var result = await fullSyncDatabase.getdatabase.deleteIndex(parameters);\n            return result;\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.couchRequestDeleteIndex(), err)\n        }\n    }\n\n    public async handleSearchRequest(databaseName: string, query, fields, parameters: Object): Promise<any> {\n        let fullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        parameters[\"query\"] = query;\n        parameters[\"fields\"] = fields;\n        try {\n            var result = await fullSyncDatabase.getdatabase.search(parameters);\n            return result;\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.couchRequestSearch(), err)\n        }\n    }\n\n    \n\n    /**\n     * Check network status before starting a replication\n     */\n    private checkState(): boolean {\n        return this.c8o.reachable == undefined ? false : this.c8o.reachable;\n    }\n\n    public async handleSyncRequest(databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any> {\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        let resp = this.c8o.database.registerRequest(c8oResponseListener, parameters, \"sync\", fullSyncDatabase);\n        if (!resp[0]) {\n            this.c8o.session.mutexCheckSession.acquire();\n            return fullSyncDatabase.startAllReplications(parameters, c8oResponseListener, resp[1], resp[2], this.c8o.session.mutexCheckSession);\n        }\n        else {\n            this.c8o.log._trace(\"[c8ofullsync] waiting for network to start replication\");\n            return new Promise(() => { });\n        }\n    }\n\n    public async handleReplicatePullRequest(databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any> {\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        let resp = this.c8o.database.registerRequest(c8oResponseListener, parameters, \"pull\", fullSyncDatabase);\n        if (!resp[0]) {\n            this.c8o.session.mutexCheckSession.acquire();\n            return fullSyncDatabase.startPullReplication(parameters, c8oResponseListener, resp[1], resp[2], this.c8o.session.mutexCheckSession);\n        }\n        else {\n            this.c8o.log._trace(\"[c8ofullsync] waiting for network to start replication\");\n            return new Promise(() => { });\n        }\n    }\n\n    public async handleReplicatePushRequest(databaseName: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any> {\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        let resp = this.c8o.database.registerRequest(c8oResponseListener, parameters, \"push\", fullSyncDatabase);\n        if (!resp[0]) {\n            this.c8o.session.mutexCheckSession.acquire();\n            return fullSyncDatabase.startPushReplication(parameters, c8oResponseListener, resp[1], resp[2], this.c8o.session.mutexCheckSession);\n        }\n        else {\n            this.c8o.log._trace(\"[c8ofullsync] waiting for network to start replication\");\n            return new Promise(() => { });\n        }\n    }\n\n    public handleResetDatabaseRequest(databaseName: string): Promise<FullSyncDefaultResponse> {\n        return new Promise((resolve, reject) => {\n            this.handleDestroyDatabaseRequest(databaseName)\n            .then(() => {\n                this.handleCreateDatabaseRequest(databaseName).\n                    then((res) => {\n                        resolve(res);\n                    })\n                    .catch((err) => {\n                        reject(err);\n                    })\n\n            })\n            .catch((err) => {\n                reject(err);\n            })\n        });\n\n    }\n\n    public async handleCreateDatabaseRequest(databaseName: string): Promise<FullSyncDefaultResponse> {\n        await this.getOrCreateFullSyncDatabase(databaseName);\n        return new FullSyncDefaultResponse(true);\n    }\n\n    public async handleBulkRequest(databaseName: string, parameters: Object): Promise<any> {\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        return new Promise((resolve, reject) => {\n            const header = {\n                \"x-convertigo-sdk\": this.c8o.sdkVersion,\n            };\n            if(this.c8o.xsrfUsed){\n                const headerName = \"x-xsrf-token\";\n                const fetch = \"Fetch\";\n                header[headerName] = window.localStorage.getItem(headerName) != undefined ? window.localStorage.getItem(headerName) : fetch;\n            }\n            Object.assign(header, this.c8o.headers);\n            fullSyncDatabase.getdatabase.c8oload(parameters[\"data\"],\n\n                {\n                    proxy: this.c8o.buildFullSyncUrl((fullSyncDatabase.getdatabseName).replace(\"_device\", \"\")),\n                    fetch: (url, opts) => {\n                        opts.credentials = 'include';\n                        for (let key in header) {\n                            opts.headers.set(key, header[key]);\n                        }\n                        return PouchDB.fetch(url, opts);\n                    }\n                },\n                this.c8o\n            )\n                .then(() => {\n                    resolve(new FullSyncDefaultResponse(true));\n                }).catch((err) => {\n                    //this.c8o.log._error(\"Error loading the \" + parameters[\"data\"] + \" database resource\" + JSON.stringify(err, Object.getOwnPropertyNames(err)))\n                    reject(new C8oException(\"Bulk Load failed\", err));\n                })\n        })\n    }\n\n    public async handleInfoRequest(databaseName: string): Promise<any> {\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.info()\n                .then((response) => {\n                    resolve(response);\n                }).catch((err) => {\n                    //this.c8o.log._error(\"Error loading the \" + parameters[\"data\"] + \" database resource\" + JSON.stringify(err, Object.getOwnPropertyNames(err)))\n                    reject(new C8oException(\"Get info failed\", err));\n                })\n        })\n    }\n\n    public async handleDestroyDatabaseRequest(databaseName: string): Promise<any> {\n        return new Promise(async (resolve, reject) => {\n            const localDatabaseName = databaseName + this.localSuffix;\n            (await this.getOrCreateFullSyncDatabase(databaseName)).deleteDB().then((response) => {\n                if (this.fullSyncDatabases[this.c8o.database.localName(localDatabaseName)] != null) {\n                    delete this.fullSyncDatabases[this.c8o.database.localName(localDatabaseName)];\n                    this.c8o.database.cancelAllForbase(this.fullSyncDatabases[\"databaseName\"]);\n                }\n                resolve(new FullSyncDefaultResponse(response.ok));\n            }).catch((err) => {\n                reject(new C8oException(err.name, err));\n            });\n        });\n    }\n\n    /**\n     * Allow to clone object whithout reference\n     * \n     * @param obj Object: object to be cloned \n     */\n    public static deepCloneObject(obj) {\n        if (obj === null || typeof obj !== 'object') {\n            return obj;\n        }\n        var temporarystorage = obj.constructor();\n        for (var key in obj) {\n            temporarystorage[key] = C8oFullSyncCbl.deepCloneObject(obj[key]);\n        }\n        return temporarystorage;\n    }\n\n    /**\n     * Recursive function that browse object to be modified and apply delete\n     * \n     * @param objToChange Object: the object to be modified\n     * @param path string: The path where to find object to be modified\n     * @param index number: index\n     * @param subPolicy Object: subPolicy to be applied\n     */\n    public static applySubPolicyDelete (objToChange, path, index, subPolicy) {\n        let arrayPath = path.split(subPolicy.subkeySeparatorParameterValue);\n        let length = arrayPath.length;\n        if(index + 1 == length){\n            // delete key\n            delete objToChange[arrayPath[index]];\n        }\n        else{\n            //recursive call to navigate to property\n            C8oFullSyncCbl.applySubPolicyDelete(objToChange[arrayPath[index]],path, index + 1, subPolicy);\n        }\n    }\n\n    /**\n     * Recursive function that browse object to be modified and apply override\n     * \n     * @param objToChange Object: the object to be modified\n     * @param path string: The path where to find object to be modified\n     * @param index number: index\n     * @param source Object: the object posted\n     * @param subPolicy Object: subPolicy to be applied\n     */\n    public static applySubPolicyOverride(objToChange, path, index, source, subPolicy) {\n        let arrayPath = path.split(subPolicy.subkeySeparatorParameterValue);\n        let length = arrayPath.length;\n        if(index + 1 == length){\n            // change key\n            // user has not given object to override\n            if(source == undefined){\n               \n            }\n            else if(source[arrayPath[index]] != null){\n                objToChange[arrayPath[index]] = source[arrayPath[index]];\n            }\n        }\n        else{\n            //recursive call to navigate to property\n            if(source != undefined){\n                if(objToChange == undefined){\n                    objToChange = {};\n                }\n                C8oFullSyncCbl.applySubPolicyOverride(objToChange[arrayPath[index]],path, index + 1, source[arrayPath[index]], subPolicy);\n            }\n            \n        }\n    }\n\n    /**\n     * Global function that will apply sub policy for merge\n     * \n     * @param override boolean: if we have to perform override sub policy or not\n     * @param source Object: the object posted\n     * @param objToChange Object: the object to be modified\n     * @param subPolicy Object: subPolicy to be applied\n     */\n    public static applySubPolicyForMerge(override, source, objToChange, subPolicy){\n        for(let elem of subPolicy.fullsyncPolicySubMerge){\n            switch(elem.value){\n                case \"override\":\n                    if(override){\n                        C8oFullSyncCbl.applySubPolicyOverride(objToChange, elem.key, 0, source, subPolicy);\n                    }\n                break;\n                case \"delete\":\n                    C8oFullSyncCbl.applySubPolicyDelete(objToChange,elem.key, 0,subPolicy);\n                break;\n            }\n        }\n    }\n\n    public static mergeProperties(newProperties: Object, oldProperties: Object, useMergePolicy = \"none\") {\n        for (let i = 0; i < Object.keys(oldProperties).length; i++) {\n            const oldPropertyKey = Object.keys(oldProperties)[i];\n            const oldPropertyValue = oldProperties[Object.keys(oldProperties)[i]];\n            // Checks if the new document contains the same key\n            if (newProperties[oldPropertyKey] !== null && newProperties[oldPropertyKey] !== undefined) {\n                const newDocumentValue = newProperties[oldPropertyKey];\n                if (Object.prototype.toString.call(newDocumentValue) === \"[object Array]\" && Object.prototype.toString.call(oldPropertyValue) === \"[object Array]\") {\n                    C8oFullSyncCbl.mergeArrayProperties(newDocumentValue, oldPropertyValue);\n                } else if (typeof (newDocumentValue) === \"object\" && typeof (oldPropertyValue) === \"object\") {\n                    C8oFullSyncCbl.mergeProperties(newDocumentValue, oldPropertyValue);\n                } else {\n                    // If the new document has the same key but its value is not the same type than the old one or if their type are \"simple\"\n                    // Does nothing cause the right value is the new one\n                }\n            } else {\n                // If the new document does not contain the key then adds it\n                newProperties[oldPropertyKey] = oldPropertyValue;\n            }\n        }\n    }\n\n    public static mergeArrayProperties(newArray: any, oldArray: any) {\n        const newArraySize = newArray.length;\n        const oldArraySize = oldArray.length;\n        for (let i = 0; i < oldArraySize; i++) {\n            let newArrayValue: any = null;\n            if (i < newArraySize) {\n                newArrayValue = newArray[i];\n            }\n            const oldArrayValue = oldArray[i];\n\n            if (newArrayValue !== null) {\n                if (newArrayValue instanceof Array && oldArrayValue instanceof Array) {\n                    C8oFullSyncCbl.mergeArrayProperties(newArrayValue, oldArrayValue);\n                } else if (typeof (newArrayValue) === \"object\" && typeof (oldArrayValue) === \"object\") {\n                    C8oFullSyncCbl.mergeProperties(newArrayValue, oldArrayValue);\n                } else {\n                    // If the new array value is not the same type than the old one or if their type are \"simple\"\n                    // Does nothing cause the right value is the new one\n                }\n            } else {\n                // If the new array value is null then it means that it size is reach so we can add objects at its end\n                newArray.push(oldArrayValue);\n            }\n        }\n    }\n\n    //noinspection JSUnusedLocalSymbols\n    public async getDocucmentFromDatabase(c8o: C8oCore, databaseName: string, documentId: string): Promise<any> {\n        return new Promise(async (resolve, reject) => {\n            let c8oFullSyncDatabase: C8oFullSyncDatabase;\n            try {\n                c8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n            } catch (err) {\n                reject(new C8oException(C8oExceptionMessage.fullSyncGetOrCreateDatabase(databaseName), err));\n            }\n            c8oFullSyncDatabase.getdatabase().get(documentId).then((result) => {\n                resolve(result);\n            })\n            .catch((e)=>{\n                reject(new C8oException(C8oExceptionMessage.fullSyncGetOrCreateDatabase(databaseName), e));\n                console.error(\"SDK TOTO into catch error\", e);\n            })\n        });\n    }\n\n    public async overrideDocument(document: any, properties: Object, databaseName) {\n        properties[C8oFullSync.FULL_SYNC__REV] = document._rev;\n        let c8oFullSyncDatabase: C8oFullSyncDatabase;\n        try {\n            c8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(databaseName);\n        } catch (err) {\n            throw new C8oException(C8oExceptionMessage.fullSyncGetOrCreateDatabase(databaseName));\n        }\n\n        c8oFullSyncDatabase.getdatabase().put(properties)\n            .catch((err) => {\n                throw new C8oException(err.message, err);\n            });\n\n    }\n\n    public async getResponseFromLocalCache(c8oCallRequestIdentifier: string): Promise<any> {\n        const fullSyncDatabase = await this.getOrCreateFullSyncDatabase(C8oCore.LOCAL_CACHE_DATABASE_NAME, true);\n        let localCacheDocument = null;\n        return new Promise((resolve, reject) => {\n            fullSyncDatabase.getdatabase.get(c8oCallRequestIdentifier).then((result) => {\n                localCacheDocument = result;\n\n                const response = JSON.stringify(localCacheDocument[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_RESPONSE]);\n                const responseType = localCacheDocument[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_RESPONSE_TYPE];\n                const expirationDate = localCacheDocument[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_EXPIRATION_DATE];\n\n                let responseString: string = null;\n                let responseTypeString: string = null;\n                let expirationDateNumber: number = -1;\n\n                if (response != null) {\n                    if (typeof response === \"string\") {\n                        responseString = response;\n                    } else {\n                        reject(new C8oException(C8oExceptionMessage.InvalidLocalCacheResponseInformation()));\n                    }\n                }\n                if (responseType != null) {\n                    if (typeof responseType === \"string\") {\n                        responseTypeString = responseType;\n                    } else {\n                        reject(new C8oException(C8oExceptionMessage.InvalidLocalCacheResponseInformation()));\n                    }\n                }\n                if (expirationDate != null) {\n                    if (typeof expirationDate === \"number\") {\n                        expirationDateNumber = expirationDate;\n                        const currentTime = new Date().getTime();\n                        if (expirationDateNumber < currentTime) {\n                            reject(new C8oUnavailableLocalCacheException(C8oExceptionMessage.timeToLiveExpired()));\n                        }\n                    } else {\n                        reject(new C8oException(C8oExceptionMessage.InvalidLocalCacheResponseInformation()));\n                    }\n                }\n                resolve(new C8oLocalCacheResponse(responseString, responseTypeString, expirationDateNumber));\n            }).catch((err) => {\n                if (err.status === 404) {\n                    resolve(new C8oUnavailableLocalCacheException(C8oExceptionMessage.localCacheDocumentJustCreated(), err));\n                } else {\n                    reject(err);\n                }\n            });\n        });\n\n    }\n\n    public async saveResponseToLocalCache(c8oCallRequestIdentifier: string, localCacheResponse: C8oLocalCacheResponse): Promise<any> {\n        const fullSyncDatabase: C8oFullSyncDatabase = await this.getOrCreateFullSyncDatabase(C8oCore.LOCAL_CACHE_DATABASE_NAME,true);\n        return new Promise((resolve) => {\n            try{\n                fullSyncDatabase.getdatabase.get(c8oCallRequestIdentifier).then((localCacheDocument) => {\n                    const properties = {};\n                    properties[C8oFullSync.FULL_SYNC__ID] = c8oCallRequestIdentifier;\n                    properties[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_RESPONSE] = localCacheResponse.getResponse();\n                    properties[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_RESPONSE_TYPE] = localCacheResponse.getResponseType();\n                    if (localCacheResponse.getExpirationDate() > 0) {\n                        properties[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_EXPIRATION_DATE] = localCacheResponse.getExpirationDate();\n                    }\n                    const currentRevision = localCacheDocument._rev;\n                    if (currentRevision !== null) {\n                        properties[C8oFullSyncCbl.FULL_SYNC__REV] = currentRevision;\n                    }\n                    fullSyncDatabase.getdatabase.put(properties).then((result) => {\n                        resolve(result);\n                    });\n                }).catch((error) => {\n                    console.log(\"then2\");\n                    if (error.status === 404) {\n                        const properties = {};\n                        properties[C8oFullSync.FULL_SYNC__ID] = c8oCallRequestIdentifier;\n                        properties[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_RESPONSE] = localCacheResponse.getResponse();\n                        properties[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_RESPONSE_TYPE] = localCacheResponse.getResponseType();\n                        if (localCacheResponse.getExpirationDate() > 0) {\n                            properties[C8oCore.LOCAL_CACHE_DOCUMENT_KEY_EXPIRATION_DATE] = localCacheResponse.getExpirationDate();\n                        }\n                        fullSyncDatabase.getdatabase.put(properties).then((result) => {\n                            resolve(result);\n                        });\n                    } else {\n                        resolve(error);\n                    }\n                });\n            }\n            catch(e){\n                console.log(\"an error occured\", e);\n            }\n            \n        });\n    }\n\n    public async addFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener, parameters: Object = {}) {\n        if (db === null || db === \"\") {\n            db = this.c8o.defaultDatabaseName;\n        }\n\n        const listeners: C8oFullSyncChangeListener[][] = [];\n        if (this.fullSyncChangeListeners[db] != null) {\n            listeners[0] = this.fullSyncChangeListeners[db];\n        } else {\n            listeners[0] = [];\n            this.fullSyncChangeListeners[db] = listeners[0];\n            if(parameters[\"since\"] == undefined){\n                parameters[\"since\"] =  \"now\";\n            }\n            if(parameters[\"live\"] == undefined){\n                parameters[\"live\"] =  true;\n            }\n            if(parameters[\"include_docs\"] == undefined){\n                parameters[\"include_docs\"] =  true;\n            }\n            //noinspection UnnecessaryLocalVariableJS\n            const evtHandler = (await this.getOrCreateFullSyncDatabase(db)).getdatabase\n                .changes(parameters).on(\"change\", function (change) {\n                    const changes: Object = {};\n                    const docs: Object[] = [];\n                    // docs[\"isExternal\"] = false;\n                    const doc: Object = {};\n                    doc[\"id\"] = change.doc._id;\n                    doc[\"rev\"] = change.doc._rev;\n                    doc[\"isConflict\"] = change.doc._conflicts;\n                    if (change.source != null) {\n                        doc[\"sourceUrl\"] = change.source;\n                    }\n                    docs.push(doc);\n                    changes[\"changes\"] = docs;\n                    for (const handler of listeners[0]) {\n                        if (handler !== undefined) {\n                            handler.onChange(changes);\n                        }\n                    }\n\n                });\n            this.cblChangeListeners[db] = evtHandler;\n        }\n        listeners[0].push(listener);\n    }\n\n    public async removeFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener) {\n        if (db === null || db === \"\") {\n            db = this.c8o.defaultDatabaseName;\n        }\n        if (this.fullSyncChangeListeners[db] != null) {\n            const listeners: C8oFullSyncChangeListener[] = this.fullSyncChangeListeners[db];\n            for (const list in listeners) {\n                if (listeners[list] === listener) {\n                    delete listeners[list];\n                }\n            }\n            if (listeners.length === 0 || listeners == null) {\n                (await this.getOrCreateFullSyncDatabase(db)).getdatabase.cancel();\n                this.cblChangeListeners[db].cancel();\n                delete this.fullSyncChangeListeners[db];\n                delete this.cblChangeListeners[db];\n            }\n        }\n    }\n}\n","import {C8oException} from \"./Exception/c8oException\";\nimport {Priority} from \"./priority.service\";\n\nexport class C8oLocalCache {\n    public static PARAM: string = \"__localCache\";\n    public priority: Priority;\n    public ttl: number;\n    public enabled: boolean;\n\n    constructor(priority: Priority, ttl: number = -1, enabled: boolean = true) {\n        if (priority == null) {\n            throw new C8oException(\"Local Cache priority cannot be null\");\n        }\n        this.priority = priority;\n        this.ttl = ttl;\n        this.enabled = enabled;\n    }\n\n}\n","export class C8oTranslator {\n    public static stringToJSON(jsonValueString): JSON {\n        return JSON.parse(jsonValueString);\n    }\n}\n","import {C8oException} from \"./c8oException\";\n\n/**\n * Thrown during an HTTP request.\n */\nexport class C8oHttpRequestException extends C8oException {\n    public originalException: any;\n\n    constructor(message: string);\n    constructor(message: string, cause: Error);\n    constructor(message: string, cause: any = null) {\n        super(message, cause);\n        this.originalException = cause;\n        // Since typescript 2.1.1 we have to set the prototype explicitly.\n        Object.setPrototypeOf(this, C8oHttpRequestException.prototype);\n\n    }\n}","import {C8oCore} from \"./c8oCore\";\nimport {C8oFullSync, C8oFullSyncCbl} from \"./c8oFullSync\";\nimport {C8oLocalCache} from \"./c8oLocalCache\";\nimport {C8oLocalCacheResponse} from \"./c8oLocalCacheResponse\";\nimport {C8oResponseJsonListener, C8oResponseListener} from \"./c8oResponse\";\nimport {C8oTranslator} from \"./c8oTranslator\";\nimport {C8oUtilsCore} from \"./c8oUtilsCore\";\nimport {C8oException} from \"./Exception/c8oException\";\nimport {C8oExceptionListener} from \"./Exception/c8oExceptionListener\";\nimport {C8oExceptionMessage} from \"./Exception/c8oExceptionMessage\";\nimport {C8oHttpRequestException} from \"./Exception/c8oHttpRequestException\";\nimport {C8oUnavailableLocalCacheException} from \"./Exception/c8oUnavailableLocalCacheException\";\nimport {sha256} from \"js-sha256\";\n\nexport class C8oCallTask {\n    private c8o: C8oCore;\n    private _parameters: Object;\n    private c8oResponseListener: C8oResponseListener;\n    private c8oExceptionListener: C8oExceptionListener;\n    private c8oCallUrl: string;\n    private _sha: string;\n\n    public get parameters() {\n        return this._parameters;\n    }\n\n    public set parameters(value: any) {\n        this._parameters = value;\n    }\n\n    constructor(c8o: C8oCore, parameters: Object, c8oResponseListener: C8oResponseListener, c8oExceptionListener: C8oExceptionListener) {\n        this.c8o = c8o;\n        this.parameters = parameters;\n        this.c8oResponseListener = c8oResponseListener;\n        this.c8oExceptionListener = c8oExceptionListener;\n\n        c8o.log.logMethodCall(\"C8oCallTask\", parameters, c8oResponseListener, c8oExceptionListener);\n    }\n\n    // called execute() in others SDK...\n    public run(fromLive = false) {\n        try {\n            this.handleRequest().then((response) => {\n                try{\n                    // if run has been triggered from live, check that response changed before calling handle response\n                    if(fromLive){\n                        let newHash = sha256(JSON.stringify(response.rows));\n                        if(this._sha == undefined || this._sha != newHash){\n                            this._sha = newHash;\n                            this.handleResponse(response);\n                        }\n                    }\n                    else{\n                        this._sha = sha256(JSON.stringify(response.rows));\n                        this.handleResponse(response);\n                    }\n                }\n                catch(e){\n                    this.handleResponse(response);\n                }\n            }).catch((error) => {\n                this.c8oExceptionListener.onException(error, this.parameters);\n            });\n        } catch (error) {\n            this.c8oExceptionListener.onException(error, this.parameters);\n        }\n    }\n\n    public executeFromLive() {\n        delete this.parameters[C8oCore.FS_LIVE];\n        this.parameters[C8oCore.ENGINE_PARAMETER_FROM_LIVE] = true;\n        this.run(true);\n    }\n\n    public async handleRequest(): Promise<any> {\n        return new Promise(async (resolve, reject) => {\n            try {\n                const isFullSyncRequest: boolean = C8oFullSync.isFullSyncRequest(this.parameters);\n                if (isFullSyncRequest) {\n                    this.c8o.log._trace(\"Is FullSync request\");\n\n                    // FS_LIVE\n                    const liveid = C8oUtilsCore.getParameterStringValue(this.parameters, C8oCore.FS_LIVE, false);\n                    if (liveid !== null) {\n                        const dbName: string = (C8oUtilsCore.getParameterStringValue(this.parameters, C8oCore.ENGINE_PARAMETER_PROJECT, true) as string).substring(C8oFullSync.FULL_SYNC_PROJECT.length);\n                        this.c8o.addLive(liveid, dbName, this);\n                    }\n                    await this.c8o.c8oFullSync.handleFullSyncRequest(this.parameters, this.c8oResponseListener)\n                        .then(\n                            (result) => {\n                                resolve(result);\n                            })\n                        .catch(\n                            (error) => {\n                                if (error instanceof C8oException) {\n                                    reject(error);\n                                } else {\n                                    reject(new C8oException(C8oExceptionMessage.handleFullSyncRequest(), error));\n                                }\n                            });\n                } else {\n                    let responseType: string = \"\";\n                    if (this.c8oResponseListener instanceof C8oResponseJsonListener) {\n                        responseType = C8oCore.RESPONSE_TYPE_JSON;\n                    } else {\n                        // Return an Exception because the C8oListener used is unknown\n                        reject(new C8oException(C8oExceptionMessage.wrongListener(this.c8oResponseListener)));\n                    }\n                    let c8oCallRequestIdentifier: string = null;\n                    const localCache: C8oLocalCache = C8oUtilsCore.getParameterObjectValue(this.parameters, C8oLocalCache.PARAM, false);\n                    let localCacheEnabled: boolean = false;\n\n                    if (localCache != null) {\n                        if (localCacheEnabled !== undefined) {\n                            delete this.parameters[C8oLocalCache.PARAM];\n                            localCacheEnabled = localCache.enabled;\n                            if (localCacheEnabled) {\n                                try {\n                                    c8oCallRequestIdentifier = C8oUtilsCore.identifyC8oCallRequest(this.parameters, responseType);\n                                } catch (error) {\n                                    reject(new C8oException(C8oExceptionMessage.serializeC8oCallRequest(), error));\n                                }\n                                // here we are not testing if localcahe is available.\n                                // if connection is not available this will generates an exception that will be caught\n                                if (localCache.priority.isAvailable) {\n                                    try {\n                                        const result = await (this.c8o.c8oFullSync as C8oFullSyncCbl).getResponseFromLocalCache(c8oCallRequestIdentifier);\n                                        if (result instanceof C8oUnavailableLocalCacheException) {\n                                            // no entry\n                                        } else {\n                                            const localCacheResponse: C8oLocalCacheResponse = (result as C8oLocalCacheResponse);\n                                            if (!localCacheResponse.isExpired()) {\n                                                if (responseType === C8oCore.RESPONSE_TYPE_JSON) {\n                                                    resolve(C8oTranslator.stringToJSON(localCacheResponse.getResponse()));\n                                                    return;\n                                                }\n                                            }\n                                        }\n                                    } catch (error) {\n                                        if (error instanceof C8oUnavailableLocalCacheException) {\n                                            // no entry\n                                        } else {\n                                            reject(error);\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                    // Get Response\n                    this.parameters[C8oCore.ENGINE_PARAMETER_DEVICE_UUID] = await this.c8o.deviceUUID;\n                    this.c8oCallUrl = this.c8o.endpoint + \"/.\" + responseType;\n                    let params: Object = new Object();\n                    params = Object.assign(params, this.parameters);\n                    await this.c8o.httpInterface.handleRequest(this.c8oCallUrl, params, this.c8oResponseListener,\n                    ).catch(\n                        async (error) => {\n                            if (localCacheEnabled) {\n                                await (this.c8o.c8oFullSync as C8oFullSyncCbl).getResponseFromLocalCache(c8oCallRequestIdentifier,\n                                ).then(\n                                    (localCacheResponse: C8oLocalCacheResponse) => {\n                                        try {\n                                            if (!localCacheResponse.isExpired()) {\n                                                if (responseType === C8oCore.RESPONSE_TYPE_JSON) {\n                                                    resolve(C8oTranslator.stringToJSON(localCacheResponse.getResponse()));\n                                                }\n                                            }\n                                        } catch (error) {\n                                            // no entry\n                                        }\n                                    });\n                            }\n                            if (error.status === 0) {\n                                reject(new C8oHttpRequestException(\"ERR_INTERNET_DISCONNECTED\", error));\n                            } else {\n                                reject(error);\n                            }\n                        }).then(\n                        async (result) => {\n                            if (result !== undefined) {\n                                let isErrorR = result[\"error\"] != undefined ? result[\"error\"][\"code\"] != undefined ? result[\"error\"][\"message\"] != undefined ? result[\"error\"][\"details\"] != undefined? true: false :false : false : false;\n                                let isErrorDoc = result[\"document\"] != undefined ? result[\"document\"][\"error\"] != undefined ? result[\"document\"][\"error\"][\"code\"] != undefined ? result[\"document\"][\"error\"][\"message\"] != undefined ? result[\"document\"][\"error\"][\"details\"] != undefined? true: false :false : false : false: false;\n                                let isError = (isErrorR || isErrorDoc);\n                                if(isError){\n                                    if (localCacheEnabled) {\n                                        await (this.c8o.c8oFullSync as C8oFullSyncCbl).getResponseFromLocalCache(c8oCallRequestIdentifier,\n                                        ).then(\n                                            (localCacheResponse: C8oLocalCacheResponse) => {\n                                                try {\n                                                    if (!localCacheResponse.isExpired()) {\n                                                        if (responseType === C8oCore.RESPONSE_TYPE_JSON) {\n                                                            resolve(C8oTranslator.stringToJSON(localCacheResponse.getResponse()));\n                                                        }\n                                                    }\n                                                } catch (error) {\n                                                    // no entry\n                                                }\n                                            });\n                                    }\n                                    if(this.c8o.errorConvertigoIntoFail){\n                                        reject(result);\n                                    }\n                                    else{\n                                        resolve(result);\n                                    }\n                                    \n                                }\n                                else{\n                                    let response: any;\n                                    let responseString: string;\n                                    if (this.c8oResponseListener instanceof C8oResponseJsonListener) {\n                                        try {\n                                            try {\n                                                responseString = result;\n                                            } catch (error) {\n                                                reject(new C8oException(C8oExceptionMessage.parseInputStreamToString(), error));\n                                            }\n                                            response = result;\n                                        } catch (error) {\n                                            reject(error);\n                                        }\n                                    } else {\n                                        reject(new C8oException(C8oExceptionMessage.wrongListener(this.c8oResponseListener)));\n                                    }\n                                    if (localCacheEnabled) {\n                                        try {\n                                            let expirationDate: number = -1;\n                                            if (localCache.ttl > 0) {\n                                                expirationDate = localCache.ttl + (new Date).getTime();\n                                            }\n                                            const localCacheResponse: C8oLocalCacheResponse = new C8oLocalCacheResponse(responseString, responseType, expirationDate);\n                                            try{\n                                                /*const p1 = await */(this.c8o.c8oFullSync as C8oFullSyncCbl).saveResponseToLocalCache(c8oCallRequestIdentifier, localCacheResponse);\n                                            }\n                                            catch(e){\n                                                console.log(\"an error occured while saving response to local cache\");\n                                            }\n                                            \n                                            /*Promise.all([p1])\n                                                .then(() => {\n                                                    resolve(response);\n                                                })\n                                                .catch((e)=>{\n                                                    console.log(\"an error occured\", e);\n                                                })*/\n                                            \n                                        } catch (error) {\n                                            reject(new C8oException(C8oExceptionMessage.saveResponseToLocalCache()));\n                                        }\n                                    }\n                                    resolve(response);\n                                }\n\n\n\n\n                                    \n                            }\n                        });\n                }\n            } catch (error) {\n                reject(error);\n            }\n        });\n\n    }\n\n    private handleResponse(result: any) {\n        try {\n            if (this.c8oResponseListener === null) {\n                return;\n            } else if (result instanceof Error || result instanceof C8oException) {\n                this.c8o.handleCallException(this.c8oExceptionListener, this.parameters, result);\n            } else if (result instanceof Object) {\n                this.c8o.log.logC8oCallJSONResponse(result, this.c8oCallUrl, this.parameters);\n                (this.c8oResponseListener as C8oResponseJsonListener).onJsonResponse(result, this.parameters);\n            } else {\n                this.c8o.handleCallException(this.c8oExceptionListener, this.parameters, new C8oException(C8oExceptionMessage.wrongResult(result)));\n            }\n        } catch (error) {\n            this.c8o.handleCallException(this.c8oExceptionListener, this.parameters, error);\n        }\n    }\n}\n","export class C8oFullSyncChangeListener {\n    private _onchange: (changes: Object) => void;\n    constructor(change: (changes: Object) => void) {\n        this._onchange = change;\n    }\n     public onChange(changes) {\n         this._onchange(changes);\n     }\n }\n","import { Observable } from \"rxjs\";\nimport {C8oCore} from \"./c8oCore\";\nimport {C8oProgress} from \"./c8oProgress\";\n\nexport class C8oPromise<T> {\n    private c8o: C8oCore;\n    private c8oResponse: (response: T, parameters: Object) => C8oPromise<T>;\n    private c8oProgress: (C8oProgress) => C8oPromise<T>;\n    private c8oFail: (error: Error, parameters: Object) => C8oPromise<T>;\n    private nextPromise: C8oPromise<T>;\n\n    private lastResponse: T;\n    private lastFailure: Error;\n    private lastParameters: Object;\n\n    constructor(c8o: C8oCore) {\n        this.c8o = c8o;\n    }\n\n    public async(): Promise<any> {\n        return new Promise((resolve, reject) => {\n            this.then((response, parameters) => {\n                resolve(response);\n                return null;\n            }).fail((error: Error, parameters: Object) => {\n                reject(error);\n            });\n        });\n    }\n\n    public toObservable(): Observable<any> {\n        return new Observable(\n            (observer)=> {\n                this.then((response, parameters) => {\n                    if(parameters[\"__live\"] == true || parameters[\"continuous\"] == true){\n                        observer.next({response: response, parameters: parameters});\n                    }\n                    else{\n                        observer.next({response: response, parameters: parameters});\n                        observer.complete()\n                    }\n                    return null;\n                })\n                .progress((progress)=>{\n                    observer.next(progress);\n                })\n                .fail((error: Error, parameters: Object) => {\n                    observer.error(error);\n                });\n            });\n    }\n\n    public then(c8oOnResponse: (response: T, parameters: Object) => C8oPromise<T>) {\n        if (this.nextPromise != null) {\n            return this.nextPromise.then(c8oOnResponse);\n        } else {\n            this.c8oResponse = c8oOnResponse;\n            this.nextPromise = new C8oPromise<T>(this.c8o);\n            if (this.lastFailure != null) {\n                this.nextPromise.lastFailure = this.lastFailure;\n                this.nextPromise.lastParameters = this.lastParameters;\n\n            }\n            if (this.lastResponse != null) {\n                this._onResponse();\n            }\n            return this.nextPromise;\n        }\n\n    }\n\n    public progress(c8oOnProgress: (C8oProgress: C8oProgress) => C8oPromise<T>) {\n        if (this.nextPromise != null) {\n            return this.nextPromise.progress(c8oOnProgress);\n        } else {\n            this.c8oProgress = c8oOnProgress;\n            this.nextPromise = new C8oPromise<T>(this.c8o);\n            return this.nextPromise;\n        }\n    }\n\n    public fail(c8oOnFail: (error: Error, parameters: Object) => C8oPromise<T>) {\n        if (this.nextPromise != null) {\n            return this.nextPromise.fail(c8oOnFail);\n        } else {\n            this.c8oFail = c8oOnFail;\n            this.nextPromise = new C8oPromise<T>(this.c8o);\n            if (this.lastFailure != null) {\n                this.onFailure(this.lastFailure, this.lastParameters);\n            }\n            return this.nextPromise;\n        }\n    }\n\n    private _onResponse() {\n        try {\n            if (this.c8oResponse != null) {\n                const promise: Array<C8oPromise<T>> = new Array<C8oPromise<T>>(0);\n                promise.push(this.c8oResponse(this.lastResponse, this.lastParameters));\n                if (promise[0] != null) {\n                    if (this.nextPromise != null) {\n                        let lastPromise: C8oPromise<T> = promise[0];\n                        while (lastPromise.nextPromise != null) {\n                            lastPromise = lastPromise.nextPromise;\n                        }\n                        lastPromise.nextPromise = this.nextPromise;\n                    }\n                    this.nextPromise = promise[0];\n                } else if (this.nextPromise != null) {\n                    this.nextPromise.onResponse(this.lastResponse, this.lastParameters);\n                }\n            } else if (this.nextPromise != null) {\n                this.nextPromise.onResponse(this.lastResponse, this.lastParameters);\n            } else {\n                // Response received and no handler\n            }\n        } catch (error) {\n            this.onFailure(error, this.lastParameters);\n        }\n    }\n\n    public onResponse(response: T, parameters: Object) {\n        if ((this.lastResponse != null || this.lastResponse !== undefined) && parameters[C8oCore.ENGINE_PARAMETER_FROM_LIVE] === undefined) {\n            if (this.nextPromise != null || this.nextPromise !== undefined) {\n                this.nextPromise.onResponse(response, parameters);\n            }\n        } else {\n            this.lastResponse = response;\n            this.lastParameters = parameters;\n            this._onResponse();\n        }\n    }\n\n    public onProgress(progress: C8oProgress) {\n        if (this.c8oProgress != null) {\n            this.c8oProgress(progress);\n        } else if (this.nextPromise != null) {\n            this.nextPromise.onProgress(progress);\n        }\n    }\n\n    public onFailure(error: Error, parameters: Object) {\n\n        this.lastFailure = error;\n        this.lastParameters = parameters;\n\n        if (this.c8oFail != null) {\n            this.c8oFail(this.lastFailure, parameters);\n        }\n        if (this.nextPromise != null) {\n            this.nextPromise.onFailure(this.lastFailure, parameters);\n        }\n    }\n}\n","export class C8oExceptionListener {\n    /**\n     * Called on thrown exceptions.\n     *\n     * @param exception - The thrown exception\n     */\n    public onException: (C8oException, Object) => void;\n\n    constructor(onException: (C8oException, Object) => void) {\n        this.onException = onException;\n    }\n}","export class C8oNetworkStatus {\n    public static Reachable : C8oNetworkStatus = \"Reachable\";\n    public static NotReachable : C8oNetworkStatus = \"NotReachable\";\n    public static Offline: C8oNetworkStatus = \"Offline\";\n\n}","import { C8oCore } from \"./c8oCore\";\nimport { C8oNetworkStatus } from \"./c8oNetworkStatus\"\n\nexport class C8oManagerNetwork {\n    private c8o: C8oCore;\n    private _status: C8oNetworkStatus;\n    private _listen = false;\n\n    constructor(c8o: C8oCore) {\n        this.c8o = c8o;\n    }\n\n    /**\n     * init NetworkManager\n     */\n    public async init(){\n        this.listen();\n        let reachable = await this.checkReachable();\n        let online = window.navigator.onLine;\n        this.status = (reachable == true ? C8oNetworkStatus.Reachable : (online == true? C8oNetworkStatus.NotReachable : C8oNetworkStatus.Offline));\n    }\n\n    /**\n     * Set network status, and notify if its had change\n     * @params c8oNetworkStatus : C8oNetworkStatus\n     */\n    public set status(c8oNetworkStatus: C8oNetworkStatus){\n        // if the status has not changed do nothing\n        //this.c8o.log.warn(\"through set network status\")\n        if(this._status == c8oNetworkStatus){\n                return;    \n        }\n        this._status = c8oNetworkStatus;\n        this.c8o.subscriber_network.next(c8oNetworkStatus);\n        \n    }\n\n    /**\n     * get network status\n     * \n     * @returns C8oNetworkStatus\n     */\n    public get status(){\n        return this._status;\n    }\n\n\n    private async listen() {\n        if(this._listen == false){\n            this._listen = true;\n            window.addEventListener(\"online\", () => {\n                this.processOnline();\n    \n            }, false);\n            window.addEventListener(\"offline\", () => {\n                this.processOffline();\n            }, false);\n    \n            this.c8o.subscriber_network.subscribe(async (res)=>{\n                this.c8o.log._debug(\"[handleNetworkEvents] Handle a network event: \" + res);\n                switch(res){\n                    case C8oNetworkStatus.Reachable:\n                        // check session status              \n                        this.c8o.session.doAuthReachable();\n                        this.c8o.database.restartReplications(\"anonymous\");\n                    break;\n                    case C8oNetworkStatus.NotReachable:\n                        this.c8o.database.stopReplications(this.c8o.session.user.name);\n                        this.c8o.database.stopReplications(\"anonymous\");\n                    break;\n                    case C8oNetworkStatus.Offline:\n                        this.c8o.database.stopReplications(this.c8o.session.user.name);\n                        this.c8o.database.stopReplications(\"anonymous\");\n                    break;\n                }\n            });\n        }\n    }\n\n\n    private async processOnline(){\n        let reachable = await this.checkReachable();\n        if(reachable){\n            this.status = C8oNetworkStatus.Reachable;\n        }\n        else{\n            this.status = C8oNetworkStatus.NotReachable;\n        }\n    }\n\n    private async processOffline(){\n        this.status = C8oNetworkStatus.Offline;\n    }\n\n    public async checkReachable(): Promise<boolean> {\n        try {\n            let r = await this.c8o.c8oLogger.logTest();\n            return true;\n        }\n        catch{\n            return false;\n        }\n    }\n}","\nexport class C8oSessionStatus {\n    public static Connected : C8oSessionStatus = 1;\n    public static HasBeenConnected : C8oSessionStatus = 2;\n    public static HasBeenDisconnected: C8oSessionStatus = 3;\n    public static Disconnected: C8oSessionStatus = 4;\n    public static Ignore: C8oSessionStatus = 5;\n    public static HasBeenConnectedToAnother: C8oSessionStatus = 5;\n}","import { C8oResponseListener } from \"./c8oResponse\";\nimport { C8oSessionUser } from \"./C8oSessionUser\";\n\nexport class C8oReplicationStatus{\n    public user: C8oSessionUser;\n    public listener: C8oResponseListener;\n    public parameters: Object;\n    public type: String;\n    public authenticated: boolean;\n    public canceled: boolean;\n    public finished:boolean;\n    public id: string;\n    database: any;\n    constructor(user: C8oSessionUser, listener: C8oResponseListener, parameters: Object, type: string, authenticated: boolean, canceled: boolean,finished:boolean, fullSyncDatabase: any, id: string){\n        this.user = user;\n        this.listener = listener;\n        this.parameters = parameters;\n        this.type = type;\n        this.authenticated = authenticated;\n        this.canceled = canceled;\n        this.database = fullSyncDatabase;\n        this.finished = finished;\n        this.id = id;\n    }\n}","import { C8oCore } from \"./c8oCore\";\nimport { C8oResponseListener, C8oResponseJsonListener } from \"./c8oResponse\";\nimport { C8oSessionStatus } from \"./c8oSessionStatus\";\nimport {C8oReplicationStatus} from \"./C8oReplicationStatus\";\nimport { C8oNetworkStatus } from \"./c8oNetworkStatus\";\nimport { Semaphore } from \"./c8oUtilsCore\";\n\ndeclare const require: any;\nexport class C8oManagerDatabase {\n    public c8o: C8oCore;\n    private replications: Object;\n    private mutexCreateReplication: Semaphore;\n\n    constructor(c8o: C8oCore) {\n        this.replications = new Object();\n        this.c8o = c8o;\n        this.mutexCreateReplication = new Semaphore(1);\n    }\n\n    public localName(baseName:string, log = false): string{\n        if(this.c8o.prefixBase){\n            if(log){\n                this.c8o.log._trace(\"Database will be seteed with prefix of user name\");\n            }\n            return this.c8o.session.user.name + \"_\"+ baseName;\n        }\n        else{\n            return baseName;\n        }\n    }\n\n    public get registeredReplications() {\n        return this.replications;\n    }\n\n    /**\n     * Register a request attaching it to the current user\n     * @param listener The listener for this request\n     * @param parameters The parameters of this request\n     * @param type The type of réplication (SYNC, PULL, PUSH)\n     */\n    registerRequest(listener: C8oResponseListener, parameters: Object, type: string, fullSyncDatabase, handler = null) {\n        let user = this.c8o.session.user;\n        if (this.replications[user.name] == null) {\n            this.replications[user.name] = new Array();\n        }\n\n        let authenticated: boolean = (this.c8o.session.status == (C8oSessionStatus.Connected || C8oSessionStatus.HasBeenConnected));\n        let canceled: boolean = (this.c8o.network.status != C8oNetworkStatus.Reachable);\n        let id = new Date().getTime()+\"_\"+(\"\"+Math.random()).substring(2);\n        let rep = new C8oReplicationStatus(user, listener, parameters, type, authenticated, canceled, false, fullSyncDatabase, id);\n        handler = () => {\n            rep.finished = true;\n        }\n        this.replications[user.name].push(rep);\n        return [canceled, handler, id];\n    }\n\n    public cancelAndPopRequest(id){\n        var user = this.c8o.session.user;\n        for (var i in this.replications[user.name]) {\n            if(this.replications[user.name][i].id == id){\n                this.c8o.log._debug(\"[c8oManagerDatabase] cancelAndPopRequest => canceling  and removing replication: \" +this.replications[user.name][i].database.getdatabase.name);\n                let repToCancel = this.replications[user.name][i].database.syncFullSyncReplication.replication;\n                repToCancel.cancel();\n                this.replications[user.name].splice(i, 1);\n                break;\n            }\n        }\n        this.c8o.log._debug(\"[c8oManagerDatabase] cancelAndPopRequest => done, replication still actives: \" +JSON.stringify(this.replications[user.name].map(x=> x.database.getdatabase.name)));\n    }\n\n    public cancelAllForbase(baseName){\n        var user = this.c8o.session.user;\n        for (var i in this.replications[user.name]) {\n            if(this.replications[user.name][i].databaseName == baseName){\n                this.replications[user.name].splice(i, 1);\n            }\n        }\n    }\n\n    /**\n     * Restart all replications for a given user\n     * @param user The name of the user\n     */\n    async restartReplications(user: string) {\n        if (this.replications[user] != undefined) {\n            var lastsDistinctsReps = {};\n            this.replications[user].forEach((rep)=>{lastsDistinctsReps[rep.database.databaseName] = rep});\n            this.replications[user] = Object.keys(lastsDistinctsReps).map(e => lastsDistinctsReps[e]);\n\n            for(let i in lastsDistinctsReps){\n                let rep =  lastsDistinctsReps[i];\n                if (rep.database != null) {\n                    if (rep.canceled == true) {\n                        if (rep.finished != true) {\n                            switch (rep.type) {\n                                case \"sync\":\n                                    this.mutexCreateReplication.acquire();\n                                    this.c8o.log._trace(\"[restartStoppedReplications] restarting replication for database \" + rep.database.getdatabseName + \" and verb sync \" + (rep.parameters[\"continuous\"] == true ? \"in continous mode\" : \"since replication was not finished\"));\n                                    let handler1 = () => {\n                                        rep.finished = true;\n                                    }\n                                    rep.finished = false;\n                                    rep.canceled = false;\n                                    rep.manual_canceled = false;\n                                    rep.database.startAllReplications(rep.parameters, rep.listener, handler1, rep.id, this.mutexCreateReplication);\n                                    break;\n                                case \"push\":\n                                    this.mutexCreateReplication.acquire();\n                                    this.c8o.log._trace(\"[restartStoppedReplications] restarting replication for database \" + rep.database.getdatabseName + \" and verb push \" + (rep.parameters[\"continuous\"] == true ? \"in continous mode\" : \"since replication was not finished\"));\n                                    let handler2 = () => {\n                                        rep.finished = true;\n                                    }\n                                    rep.finished = false;\n                                    rep.canceled = false;\n                                    rep.manual_canceled = false;\n                                    rep.database.startPushReplication(rep.parameters, rep.listener, handler2, rep.id, this.mutexCreateReplication);\n\n                                    break;\n                                case \"pull\":\n                                    this.mutexCreateReplication.acquire();\n                                    this.c8o.log._trace(\"[restartStoppedReplications] restarting replication for database \" + rep.database.getdatabseName + \" and verb pull \" + (rep.parameters[\"continuous\"] == true ? \"in continous mode\" : \"since replication was not finished\"));\n                                    let handler3 = () => {\n                                        rep.finished = true;\n                                    }\n                                    rep.canceled = false;\n                                    rep.finished = false;\n                                    rep.manual_canceled = false;\n                                    rep.database.startPullReplication(rep.parameters, rep.listener, handler3, rep.id, this.mutexCreateReplication);\n                                    break;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n    }\n\n    /**\n     * Stop all replications for a given user\n     * @param user The name of the user\n     */\n    stopReplications(user: string) {\n        if (this.replications[user] != undefined) {\n            for (let rep of this.replications[user]) {\n                if (rep.database != null) {\n                    if (rep.finished != true) {\n                        switch (rep.type) {\n                            case \"sync\":\n                                this.c8o.log._trace(\"[stopReplications] stopping replication for database \" + rep.database.getdatabseName + \" and verb sync \" + (rep.parameters[\"continuous\"] == true ? \"in continous mode\" : \"since replication was not finished\"));\n                                rep.canceled = true;\n                                rep.database.cancelSyncReplication();\n                                break;\n                            case \"push\":\n                                this.c8o.log._trace(\"[stopReplications] stopping replication for database \" + rep.database.getdatabseName + \" and verb push \" + (rep.parameters[\"continuous\"] == true ? \"in continous mode\" : \"since replication was not finished\"));\n                                rep.canceled = true;\n                                rep.database.cancelPushReplication();\n                                break;\n                            case \"pull\":\n                                this.c8o.log._trace(\"[stopReplications] stopping replication for database \" + rep.database.getdatabseName + \" and verb pull \" + (rep.parameters[\"continuous\"] == true ? \"in continous mode\" : \"since replication was not finished\"));\n                                rep.canceled = true;\n                                rep.database.cancelPullReplication();\n                                break;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * Remove state an delte top all replications for a given user\n     * @param user The name of the user\n     */\n    removeReplications(user: string) {\n        this.stopReplications(user);\n        delete this.replications[user];\n        this.c8o.log._trace(\"[removeReplications] replications for user \" + user + \"has been removed and stopped\");\n    }\n\n}","import {C8oCore} from \"./c8oCore\";\nimport { C8oSessionStatus } from \"./c8oSessionStatus\";\nimport { Semaphore, C8oUtilsCore } from './c8oUtilsCore';\ndeclare const require: any;\nexport class C8oManagerLogin {\n    public c8o: C8oCore;\n    private requestLogin;\n    private mutexL : Semaphore;\n    \n    constructor(c8o: C8oCore) {\n        this.c8o = c8o;\n        this.mutexL = new Semaphore(1);\n    }\n\n    private static toUint8Array(data: ArrayBuffer | ArrayBufferView): Uint8Array<ArrayBuffer>{\n        const source = data instanceof ArrayBuffer\n            ? new Uint8Array(data)\n            : data instanceof Uint8Array\n                ? data\n                : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n        const normalized = new Uint8Array(source.byteLength);\n        normalized.set(source);\n        return normalized;\n    }\n\n    private static toBase64(data: ArrayBuffer | ArrayBufferView): string{\n        const bytes = C8oManagerLogin.toUint8Array(data);\n        let binary = \"\";\n        for(let i = 0; i < bytes.length; i++){\n            binary += String.fromCharCode(bytes[i]);\n        }\n        return window.btoa(binary);\n    }\n\n    private static fromBase64(base64: string): Uint8Array<ArrayBuffer>{\n        const binary = window.atob(base64);\n        const bytes = new Uint8Array(binary.length);\n        for(let i = 0; i < binary.length; i++){\n            bytes[i] = binary.charCodeAt(i);\n        }\n        return bytes;\n    }\n\n    public async setRequestLogin(url: string, parameters: Object, headers: Object, id: string){\n        if(url != null && parameters != null && headers != null){\n            this.requestLogin = {url: url, parameters: parameters, headers: headers};\n        }\n        if(id != null && this.requestLogin != undefined){\n        /**  must encrypt and save requestLogin there **/\n\n        //define buffer to save\n        const data = new TextEncoder().encode(JSON.stringify(this.requestLogin));\n        // generate random iv and store it\n        const iv = crypto.getRandomValues(new Uint8Array(16));\n        window[\"localStorage\"][\"setItem\"](\"_c8o_iv\", C8oManagerLogin.toBase64(iv));\n        // get key and hash it 128 bits\n        const key = C8oUtilsCore.MD5ArrayBuffer(id);\n        // defined key\n        const key_encoded = await crypto.subtle.importKey(  \"raw\",    <any>key.buffer,   'AES-CTR' ,  false,   [\"encrypt\", \"decrypt\"]);\n        // encrypt data\n        const encrypted_content = await window.crypto.subtle.encrypt(\n            {\n              name: \"AES-CTR\",\n              counter: iv,\n              length: 128\n            },\n            key_encoded,\n            data\n        );\n        // store encrypted data\n        window.localStorage.setItem(\"_c8o_secret\", C8oManagerLogin.toBase64(encrypted_content));\n        }    \n    }\n    public async defineRequestLogin(id){\n        //if requestLogin is'nt into this.requestLogin, get it and assign it to requestLogin from local encrypted data.\n        try{\n            if(this.requestLogin == undefined && window[\"localStorage\"][\"getItem\"](\"_c8o_secret\") != undefined){\n                const ivStored = window[\"localStorage\"][\"getItem\"](\"_c8o_iv\");\n                if(ivStored == null){\n                    return;\n                }\n                const iv = C8oManagerLogin.fromBase64(ivStored);\n                const key = C8oUtilsCore.MD5ArrayBuffer(id);\n                const encryptedStored = window.localStorage.getItem(\"_c8o_secret\");\n                if(encryptedStored == null){\n                    return;\n                }\n                const encrypted_content = C8oManagerLogin.fromBase64(encryptedStored);\n                const key_encoded = await crypto.subtle.importKey(  \"raw\",    <any>key.buffer,   'AES-CTR' ,  false,   [\"encrypt\", \"decrypt\"]);\n                const decrypted_content: any  = await window.crypto.subtle.decrypt(\n                    {\n                      name: \"AES-CTR\",\n                      counter: iv,\n                      length: 128\n                    },\n                    key_encoded,\n                    encrypted_content\n                );\n                this.requestLogin = JSON.parse(new TextDecoder().decode(C8oManagerLogin.toUint8Array(decrypted_content)));\n            }\n        }\n        catch(e){\n            this.c8o.log.error(\"[C8oManagerLogin][defineRequestLogin], failed to define request login\", e);\n        }\n    }\n    \n\n    public doLogin(): Promise<any>{\n        return new Promise((res)=>{\n            this.mutexL.acquire();\n            if(!(this.c8o.session.status == C8oSessionStatus.Connected || this.c8o.session.status == C8oSessionStatus.HasBeenConnected)){\n                if(this.requestLogin !=  undefined){\n                    let resolve = (response)=>{\n                        if(response.headers.get(\"X-Convertigo-Authenticated\") != undefined){\n                            this.c8o.log._debug(\"[C8oManagerLogin] Auto Logins worked\");\n                            this.c8o.subscriber_login.next({status:true, response: response.body, error: null})\n                            res({status:true, urlReq:this.requestLogin.url, parameters:this.requestLogin.parameters, headers: this.requestLogin.headers, response: response.response});\n                        }\n                        else{\n                            this.c8o.log._debug(\"[C8oManagerLogin] Auto Logins failed\");\n                            res({status:false});\n                            this.c8o.subscriber_login.next({status:false, response: response.body, error: \"error, we are not authenticated\"})\n                            this.c8o.subscriber_session.next(null);\n                        }\n                        this.mutexL.release();\n                        \n                    }\n                    let reject = (err)=>{\n                        this.c8o.log._debug(\"[C8oManagerLogin] Auto Logins failed\");\n                        res({status:false});\n                        this.c8o.subscriber_login.next({status:false, response: null, error: err})\n                        this.c8o.subscriber_session.next(null);\n                        this.mutexL.release();\n                    }\n                    this.c8o.httpInterface.execHttpPosts(this.requestLogin.url, this.requestLogin.parameters, this.requestLogin.headers, resolve, reject, true);\n                }\n                else{\n                    this.c8o.log._debug(\"[C8oManagerLogin] Auto Logins failed: requestLogin is undefined\");\n                    this.c8o.subscriber_login.next({status:false, response: null, error: \"requestLogin is undefined\"});\n                    this.c8o.subscriber_session.next(null);\n                    res({status:false, error: \"requestLogin is undefined\"});\n                    this.mutexL.release();\n                }\n            }\n            else{\n                this.c8o.log.warn(\"[C8oManagerLogin] Auto Logins skipped: already connected\");\n                this.c8o.subscriber_login.next({status:false, response: null, error: \"already connected\"});\n                res({status:false, error: \"already connected\"});\n                this.mutexL.release();\n            }\n             \n        })\n         \n    }\n\n    \n\n    \n}\n","\nexport  class C8oSessionUser{\n    public authenticated: boolean = false;\n    public groups = [];\n    public maxInactive: number = 0;\n    public sessionId: string = \"\";\n    public name: string = \"anonymous\";\n    public hash: string = \"\";\n\n    constructor(user = null){\n        if(user != null){\n            this.authenticated = user[\"authenticated\"] == true;\n            this.groups = user[\"groups\"] != undefined ? user[\"groups\"] : [];\n            this.maxInactive = user[\"maxInactive\"] != undefined ? user[\"maxInactive\"] : 0;\n            this.sessionId = user[\"session\"] != undefined ? user[\"session\"] : \"\";\n            this.name = user[\"user\"] != undefined ? user[\"user\"] : \"\";\n        }\n        \n    }\n}\n","import { C8oCore } from \"./c8oCore\";\nimport { C8oSessionStatus } from './c8oSessionStatus';\nimport { C8oUtilsCore, Semaphore } from './c8oUtilsCore';\nimport { C8oManagerLogin } from './c8oManagerLogin';\nimport { C8oSessionUser } from './C8oSessionUser';\nimport { stat } from \"fs\";\n\ndeclare const require: any;\nexport class C8oManagerSession {\n    public c8o: C8oCore;\n    private _status: C8oSessionStatus;\n    private id: string;\n    private loginManager: C8oManagerLogin;\n    private checker: any;\n    private _user: C8oSessionUser;\n    private _olduser: C8oSessionUser;\n    private ignored;\n    private resumeListener = undefined;\n    public mutex : Semaphore;\n    public mutexNetwork : Semaphore;\n    public mutexCheckSession : Semaphore;\n    private sessId : string;\n\n    constructor(c8o: C8oCore) {\n        // When the app begins, session is not connected*\n        this.c8o = c8o;\n        this._status = C8oSessionStatus.Disconnected;\n        this.loginManager = new C8oManagerLogin(c8o);\n        this.ignored = 0;\n        this._user = new C8oSessionUser();\n        this.mutex = new Semaphore(1);\n        this.mutexNetwork = new Semaphore(10000000000);\n        this.mutexCheckSession = new Semaphore(1);\n    }\n\n    /**\n     * Get status of the session\n     * \n     * @returns: C8oSessionStatus\n     * \n     * Can be:\n     * C8oSessionStatus.Connected\n     * C8oSessionStatus.HasBeenConnected\n     * C8oSessionStatus.HasBeenDisconnected\n     * C8oSessionStatus.Disconnected\n     * C8oSessionStatus.Ignore\n     */\n    public get status(): C8oSessionStatus {\n        return this._status;\n    }\n\n    public set status(status:C8oSessionStatus) {\n        this._status = status;\n    }\n\n    /**\n     * Get status of the session\n     * \n     * @returns: C8oSessionStatus\n     * \n     * Can be:\n     * C8oSessionStatus.Connected\n     * C8oSessionStatus.HasBeenConnected\n     * C8oSessionStatus.HasBeenDisconnected\n     * C8oSessionStatus.Disconnected\n     * C8oSessionStatus.Ignore\n     */\n    public get user(): C8oSessionUser {\n        return this._user;\n    }\n    /**\n     * Get previous status of the session\n     * \n     * @returns: C8oSessionStatus\n     * \n     * Can be:\n     * C8oSessionStatus.Connected\n     * C8oSessionStatus.HasBeenConnected\n     * C8oSessionStatus.HasBeenDisconnected\n     * C8oSessionStatus.Disconnected\n     * C8oSessionStatus.Ignore\n     */\n    public get olduser(): C8oSessionUser {\n        return this._olduser;\n    }\n\n    public set user(user: C8oSessionUser){\n        this._olduser = user;\n        this._user = user;\n    }\n    \n    public async setInitalState(){\n        try{\n            const status = await this.c8o.httpInterface.getUserServiceStatus(true);\n            await this.sort(null, null, null, null, null, null, status);\n        }\n        catch(e){\n            console.error(\"error getiing setInitalState\", e);\n        }\n        \n    }\n\n    public async getInitalState(){\n        try{\n            const resp: any = await this.c8o.httpInterface.getUserServiceStatus(true);\n            if(resp.body.authenticated){\n                this.sessId = resp.body.session;\n                await this.loginManager.defineRequestLogin(resp.body.session);\n                this.user = new C8oSessionUser(resp.body);\n                this.status = C8oSessionStatus.HasBeenConnected;\n            }\n        }\n        catch(e){\n            this.c8o.log.error(\"[C8oManagerSession][getInitalState] Impossible to define user service status\", e)\n        }\n        \n    }\n\n    public async sort(response: any, headers: any, urlReq, parametersReq, headersReq, resolve?, status?) {\n        // update _status if this is a sequence\n        return new Promise<boolean>(async (resolve, reject)=>{\n            let _status: C8oSessionStatus;\n                if(!status){\n                    _status = await this.defineSessionStatus(response, headers, urlReq, parametersReq, headersReq);\n                }\n                else{\n                    _status = await this.defineSessionStatus(status, headers, urlReq, parametersReq, headersReq, status);\n                }\n                switch (_status) {\n                    case C8oSessionStatus.Connected:\n                        this.ignored = 0;\n                        resolve(false);\n                        break;\n                    case C8oSessionStatus.HasBeenConnectedToAnother:\n                        // if we called this function from setInitalState\n                        if(response == null && headers == null){\n                            this.checkSession(headers, 0, resolve, status);\n                        }\n                        else{\n                            this.checkSession(headers, 0, resolve);\n                        }\n                        this.c8o.subscriber_session_changed.next(null);\n                        break;\n                    case C8oSessionStatus.HasBeenConnected:\n                        // if we called this function from setInitalState\n                        if(response == null && headers == null){\n                            this.checkSession(headers, 0, resolve, status);\n                        }\n                        else{\n                            this.checkSession(headers, 0, resolve);\n                        }\n                        break;\n                    case C8oSessionStatus.HasBeenDisconnected:\n                        // if we called this function from setInitalState\n                        if(response == null && headers == null){\n                            // do nothing\n                            resolve(false);\n                        }\n                        else{\n                            if(this.c8o.keepSessionAlive){\n                                let objParams;\n                                try{\n                                    objParams = parametersReq.split('&')\n                                    .reduce((a, c) => {\n                                        let [key, value] = c.split('=');\n                                        a[key] = value;\n                                        return a;\n                                    }, {});\n                                }\n                                catch(e){\n                                    objParams = {};\n                                }\n                                if(!(objParams[C8oCore.SEQ_AUTO_LOGIN_OFF] === \"true\")){\n                                    this.loginManager.doLogin()\n                                    .then((res)=>{\n                                        resolve(true);\n                                    })\n                                }\n                                else{\n                                    this.c8o.database.stopReplications(this.user.name);\n                                    this._user = new C8oSessionUser();\n                                    this.c8o.subscriber_session.next(null);\n                                    resolve(false);\n                                }\n                            }\n                            else{\n                                this.c8o.database.stopReplications(this.user.name);\n                                this._user = new C8oSessionUser();\n                                this.c8o.subscriber_session.next(null);\n                                resolve(false);\n                            }\n                        }\n                        break;\n                    case C8oSessionStatus.Disconnected:\n                        resolve(false);\n                        break;\n                    case C8oSessionStatus.Ignore:\n                        this.ignored = this.ignored + 1;\n                        if (this.ignored >= 20) {\n                            this._status = C8oSessionStatus.Connected;\n                            this.c8o.log._trace(\"[C8oManagerSession] We ingored 20, no setting _status Connected\");\n                        }\n                        else {\n                            this.c8o.log._trace(\"[C8oManagerSession] Ignore this request to analyze loss of session, we ignored \" + this.ignored + \" at total\");\n                        }\n                        resolve(false);\n                        break;\n                }\n            \n        })\n    }\n\n\n    public async doAuthReachable(){\n        if(this.c8o.session.user.authenticated == true){\n            await this.mutex.acquire();\n            let err;\n            try {\n                let user = await this.c8o.httpInterface.getUserServiceStatus()\n                if(user.authenticated == false || err != undefined){\n                    if(this.c8o.keepSessionAlive){\n                        let success = await this.loginManager.doLogin();\n                        if (success.status == false) {\n                            \n                            this._status = C8oSessionStatus.HasBeenDisconnected;\n                            this.c8o.subscriber_session.next(null);\n                            this.mutex.release();\n                        }\n                        else {\n                            this.c8o.database.restartReplications(this.user.name)\n                            this.checkSession(null, 0);\n                            this.mutex.release();\n                        }\n                    }\n                    else{\n                        this.sessId = user.session;\n                        this.c8o.subscriber_session.next(null);\n                        this.mutex.release();\n                    }\n                }\n                else{\n                    this.sessId = user.session;\n                    this._status = C8oSessionStatus.Connected;\n                    this.c8o.database.restartReplications(this.user.name)\n                    this.checkSession(null, 0);\n                    await this.mutex.release();\n                }\n            }\n            catch(e){\n                this._status = C8oSessionStatus.HasBeenDisconnected;\n                this.mutex.release();\n            }\n            \n            \n        }\n    }\n    /**\n     * defineSessionStatus\n     * \n     * if haderStatus is not null => we are connected\n     * else if headerStatus is not null and this.id is not null, we has lost session\n     * else we were never connected \n     * \n     * @param response the http header response\n     */\n    public async defineSessionStatus(response, headers, urlReq, parametersReq, headersReq, fromSetInitalState?) {\n        // get session id sent by header\n        let headerStatus = C8oUtilsCore.checkHeaderArgument(response, \"x-convertigo-authenticated\");\n        if (headerStatus != null) {\n            if(this.id != null && this.id != \"\" && this.id != headerStatus){\n                this.c8o.database.stopReplications(this.user.name);\n                this._user = new C8oSessionUser();\n                if(!fromSetInitalState){\n                    this.loginManager.setRequestLogin(urlReq, parametersReq, headersReq, this.sessId);\n                }\n                this._status = C8oSessionStatus.HasBeenConnectedToAnother;\n                this.id = headerStatus;\n                return C8oSessionStatus.HasBeenConnectedToAnother;\n            }\n            if (this.id != null || this._status == C8oSessionStatus.HasBeenConnected) {\n                this._status = C8oSessionStatus.Connected;\n                this.id = headerStatus;\n                return C8oSessionStatus.Connected;\n            }\n            else {\n                if(!fromSetInitalState){\n                    this.loginManager.setRequestLogin(urlReq, parametersReq, headersReq, this.sessId);\n                }\n                this._status = C8oSessionStatus.HasBeenConnected;\n                this.id = headerStatus;\n                return C8oSessionStatus.HasBeenConnected;\n            }\n        }\n        else {\n            if (this.id != null) {\n                let cancel = false;\n                if (this._status == C8oSessionStatus.HasBeenConnected) {\n                    let user;\n                    try {\n                        user = await this.c8o.httpInterface.getUserServiceStatus();\n                        cancel = user != undefined ? user.authenticated : false;\n                        this.sessId = user.session;\n                    }\n                    catch(e){\n                        cancel = false;\n                    }\n                    \n                }\n                if (!cancel) {\n                    this._status = C8oSessionStatus.HasBeenDisconnected;\n                    this.id = headerStatus;\n                    return C8oSessionStatus.HasBeenDisconnected;\n                }\n                else {\n                    return C8oSessionStatus.Ignore;\n                }\n\n\n            }\n            else {\n                this._status = C8oSessionStatus.Disconnected;\n                this.id = headerStatus;\n                return C8oSessionStatus.Disconnected;\n            }\n        }\n    }\n\n    private async checkUser(fromSetInitalState?) {\n        let user : any = this._user;\n        try {\n             if(fromSetInitalState){\n                user = fromSetInitalState.body;\n             }\n             else{\n                user = await this.c8o.httpInterface.getUserServiceStatus()\n             }\n             \n            if (this._user.name != user.user && this._user.name != \"anonymous\") {\n                // remove & stop all replications for older user\n                this.c8o.database.removeReplications(this._user.name);\n                \n            }\n            this._user = new C8oSessionUser(user);\n        }\n        catch(e){\n            if(fromSetInitalState){\n                this._status = C8oSessionStatus.Disconnected;\n            }\n            else{\n                this._status = C8oSessionStatus.HasBeenDisconnected;\n            }\n            \n        }\n        finally{\n            return user;\n        }\n    }\n\n    public async checkSession(headers: any, time: number, resolve = null, fromSetInitalState?) {\n        if(resolve == null){\n            resolve = (()=>{});\n        }\n        clearTimeout(this.checker);\n        this.checker = setTimeout(async () => {\n            let user;\n            user = await this.checkUser(fromSetInitalState);\n            let _status = user != undefined ? user.authenticated : false;\n            // if we are not anymore loggedin\n            if (!_status) {\n                this.c8o.log._debug(\"[C8oSessionManager] Session is not authenticated\");\n                // if we want to keepAlive session and we are not called from setInitalState\n                if (this.c8o.keepSessionAlive && fromSetInitalState) {\n                    // try to login\n                    await this.mutex.acquire();\n                    await this.mutex.release();\n                    if(this._status == C8oSessionStatus.Connected || this._status == C8oSessionStatus.HasBeenConnected){\n                        resolve(true);\n                    }\n                    else {\n                        let success = await this.loginManager.doLogin();\n                        if (success.status == false) {\n                            this.c8o.database.stopReplications(this.user.name);\n                            this._user = new C8oSessionUser();\n                            this._status = C8oSessionStatus.HasBeenDisconnected;\n                            this.c8o.subscriber_session.next(null);\n                            resolve();\n                        }\n                        else {\n                            this.checkSession(headers, 0, resolve);\n                        }\n                    }\n                    \n                }\n                else {\n                    this.c8o.database.stopReplications(this.user.name);\n                    this._user = new C8oSessionUser();\n\n                    // if we called this function from setInitalState\n                    if(fromSetInitalState){\n                        this._status = C8oSessionStatus.Disconnected;\n                    }\n                    else{\n                        this._status = C8oSessionStatus.HasBeenDisconnected;\n                        this.c8o.subscriber_session.next(null);\n                    }\n                    resolve();\n                }\n\n            }\n            else {\n                // if we are still connected\n                this._status = C8oSessionStatus.Connected;\n                this.loginManager.setRequestLogin(null,null,null,user.session);\n                var funclistener = ()=> {\n                    this.c8o.httpInterface.p1 = new Promise((resolve)=>{});\n                    this.c8o.httpInterface.firstCall = true;\n                    // safe delete previous Checker\n                    try{\n                        clearTimeout(this.checker);\n                    }\n                    catch(e){\n                        \n                    }\n                    setTimeout(async ()=> {\n                        this.mutex.acquire();\n                        this.c8o.log.debug(\"[C8oSessionManager]: onResume checking user status\");\n                        let user = await this.checkUser();\n                        let _status = user != undefined ? user.authenticated : false;\n                        // if we are not anymore loggedin\n                        if (!_status) {\n                            this.c8o.log.debug(\"[C8oSessionManager]: onResume user is no longer logged\");\n                            if (this.c8o.keepSessionAlive) {\n                                this.c8o.log.debug(\"[C8oSessionManager]: onResume keepAlive session activated, we will try to autologin\");\n                                this.c8o.session.status = C8oSessionStatus.HasBeenDisconnected;\n                                // try to login\n                                let success = await this.loginManager.doLogin();\n                                if (success.status == false) {\n                                    this.c8o.log.debug(\"[C8oSessionManager]: onResume autologin failed\");\n                                    this.c8o.database.stopReplications(this.user.name);\n                                    this._user = new C8oSessionUser();\n                                    this._status = C8oSessionStatus.HasBeenDisconnected;\n                                    this.c8o.subscriber_session.next(null);\n                                    this.mutex.release();\n                                    this.c8o.httpInterface.p1 = Promise.resolve(true);\n                                    resolve();\n                                }\n                                else {\n                                    this.c8o.log.debug(\"[C8oSessionManager]: onResume autologin worked\");\n                                    this.mutex.release();\n                                    this.checkSession(headers, 0, resolve);\n                                    this.c8o.httpInterface.p1 = Promise.resolve(true);\n                                }\n                            }\n                            else {\n                                this.c8o.log.debug(\"[C8oSessionManager]: onResume stopping replications\");\n                                this.c8o.database.stopReplications(this.user.name);\n                                this._user = new C8oSessionUser();\n                                this._status = C8oSessionStatus.HasBeenDisconnected;\n                                this.c8o.subscriber_session.next(null);\n                                this.mutex.release();\n                                resolve();\n                            }\n                        }\n                        else{\n                            this._status = C8oSessionStatus.Connected;\n                            this.mutex.release();\n                        }\n                    }, 0);\n                };\n\n                try {\n                    if(this.resumeListener != undefined){\n                        document.removeEventListener(\"resume\", this.resumeListener, false);\n                    }\n                }\n                catch(e){   \n                    console.log(e);\n                }\n                \n                this.resumeListener = funclistener;\n                document.addEventListener(\"resume\",funclistener , false);\n                \n                \n                this.c8o.database.restartReplications(this.user.name);\n                let timeR = +user['maxInactive'] * 0.95 * 1000;\n                if (this.c8o.keepSessionAlive) {\n                    this.c8o.log._debug(\"[C8oSessionManager] Polling for session, next check will be in \" + timeR + \"ms\");\n                    this.checkSession(headers, timeR);\n                    resolve();\n                }\n                else {\n                    if (this.checker != undefined) {\n                        try{\n                            clearTimeout(this.checker);\n                        }\n                        catch(e){\n                            \n                        }\n                    }\n                    this.checker =\n                        setTimeout(async () => {\n                            this.c8o.database.stopReplications(this.user.name);\n                            this._status = C8oSessionStatus.Disconnected;\n                            this.c8o.subscriber_session.next(null);\n                        }, timeR)\n                        resolve();\n                }\n            }\n        }, time)\n    }\n\n\n}","import { C8oBase, C8oEndpointScope } from \"./c8oBase\";\nimport { C8oHttpInterfaceCore } from \"./c8oHttpInterfaceCore\";\nimport { C8oLogger } from \"./c8oLogger\";\nimport { C8oLogLevel } from \"./c8oLogLevel\";\nimport { C8oSettings } from \"./c8oSettings\";\nimport { C8oUtilsCore } from \"./c8oUtilsCore\";\n\nimport { C8oFullSync, C8oFullSyncCbl } from \"./c8oFullSync\";\nimport { C8oResponseJsonListener, C8oResponseListener } from \"./c8oResponse\";\nimport { C8oExceptionMessage } from \"./Exception/c8oExceptionMessage\";\n\nimport { C8oCallTask } from \"./c8oCallTask\";\nimport { C8oFullSyncChangeListener } from \"./c8oFullSyncChangeListener\";\nimport { C8oPromise } from \"./c8oPromise\";\nimport { C8oCouchBaseLiteException } from \"./Exception/c8oCouchBaseLiteException\";\nimport { C8oException } from \"./Exception/c8oException\";\nimport { C8oExceptionListener } from \"./Exception/c8oExceptionListener\";\nimport { Observable, Subject, timer } from 'rxjs';\n\nimport {C8oManagerNetwork} from \"./c8oManagerNetwork\";\nimport {C8oManagerDatabase} from \"./c8oManagerDatabase\";\nimport {C8oManagerSession} from \"./c8oManagerSession\";\n\nimport * as _ from \"lodash\";\nimport { debounce } from \"rxjs/operators\";\n//@ts-ignore\nimport { throwError } from 'rxjs';\ndeclare var require: any;\n/**\n * Allows to send requests to a Convertigo Server (or Studio), these requests are called c8o calls.<br/>\n * C8o calls are done thanks to a HTTP request or a CouchbaseLite usage.<br/>\n * An instance of C8o is connected to only one Convertigo and can't change it.<br/>\n * To use it, you have to first initialize the C8o instance with the Convertigo endpoint, then use call methods with Convertigo variables as parameter.\n */\n\n// @dynamic\nexport abstract class C8oCore extends C8oBase {\n    // Log:\n    // - VERBOSE (v): methods parameters,\n    // - DEBUG (d): methods calls,\n    // - INFO (i):\n    // - WARN (w):\n    // - ERROR (e):\n\n    /*** Regular expression ***/\n\n    /**\n     * The regex used to handle the c8o requestable syntax (\"&lt;project&gt;.&lt;sequence&gt;\" or \"&lt;project&gt;.&lt;connector&gt;.&lt;transaction&gt;\")\n     */\n    protected static RE_REQUESTABLE = /^([^.]*)\\.(?:([^.]+)|(?:([^.]+)\\.([^.]+)))$/;\n\n    /**\n     * The regex used to get the part of the endpoint before '/projects/...'\n     */\n    protected static RE_ENDPOINT = /^(https?:\\/\\/([^:/]+)(:[0-9]+)?\\/?.*?)\\/projects\\/([^\\/]+)$/;\n\n    /**\n     *  Engine reserved parameters\n     */\n    public static ENGINE_PARAMETER_PROJECT: string = \"__project\";\n    public static ENGINE_PARAMETER_SEQUENCE: string = \"__sequence\";\n    public static ENGINE_PARAMETER_CONNECTOR: string = \"__connector\";\n    public static ENGINE_PARAMETER_TRANSACTION: string = \"__transaction\";\n    public static ENGINE_PARAMETER_ENCODED: string = \"__encoded\";\n    public static ENGINE_PARAMETER_DEVICE_UUID: string = \"__uuid\";\n    public static ENGINE_PARAMETER_PROGRESS: string = \"__progress\";\n    public static ENGINE_PARAMETER_FROM_LIVE: string = \"__fromLive\";\n    public lastChangeTimeStamp: number = 0; \n    public lastChangeSetTimeout = null;\n    public threshold = 50;\n    public observanleHandleFullSyncLive : Subject<any> = new Subject();\n    /**\n     * FULLSYNC parameters\n     */\n\n    public static use_merge_prefix: string = \"_use_merge\";\n    /**\n     * Constant to use as a parameter for a Call of \"fs://.post\" and must be followed by a FS_POLICY_* constant.\n     * <pre>{@code\n     * c8o.callJson(\"fs://.post\",\n     *   C8o.FS_POLICY, C8o.FS_POLICY_MERGE,\n     *   \"docid\", myid,\n     *   \"mykey\", myvalue\n     * ).sync();\n     * }</pre>\n     */\n    public static FS_POLICY: string = \"_use_policy\";\n    /**\n     Use it with \"fs://.post\" and C8o.FS_POLICY.\n\n     This is the default post policy that don't alter the document before the CouchbaseLite's insertion.\n     */\n    public static FS_POLICY_NONE: string = \"none\";\n    /**\n     Use it with \"fs://.post\" and C8o.FS_POLICY.\n\n     This post policy remove the \"_id\" and \"_rev\" of the document before the CouchbaseLite's insertion.\n     */\n    public static FS_POLICY_CREATE: string = \"create\";\n    /**\n     Use it with \"fs://.post\" and C8o.FS_POLICY.\n\n     This post policy inserts the document in CouchbaseLite even if a document with the same \"_id\" already exists.\n     */\n    public static FS_POLICY_OVERRIDE: string = \"override\";\n    /**\n     Use it with \"fs://.post\" and C8o.FS_POLICY.\n\n     This post policy merge the document with an existing document with the same \"_id\" before the CouchbaseLite's insertion.\n     */\n    public static FS_POLICY_MERGE: string = \"merge\";\n    /**\n     Use it with \"fs://.post\". Default value is \".\".\n\n     This key allow to override the sub key separator in case of document depth modification.\n     */\n    public static FS_SUBKEY_SEPARATOR: string = \"_use_subkey_separator\";\n    /**\n     Use it with \"project.sequence\". Default value is \".\".\n\n     This key allow to disable autologin feature for a given callJson\n     */\n    public static SEQ_AUTO_LOGIN_OFF: string = \"__disableAutologin\";\n\n    /**\n     * Use it with \"fs://\" request as parameter to enable the live request feature.<br/>\n     * Must be followed by a string parameter, the 'liveid' that can be use to cancel the live\n     * request using c8o.cancelLive(liveid) method.<br/>\n     * A live request automatically recall the then or thenUI handler when the database changed.\n     */\n    public static FS_LIVE: string = \"__live\";\n\n    /** Local cache keys **/\n    public static LOCAL_CACHE_DOCUMENT_KEY_RESPONSE: string = \"response\";\n    public static LOCAL_CACHE_DOCUMENT_KEY_RESPONSE_TYPE: string = \"responseType\";\n    public static LOCAL_CACHE_DOCUMENT_KEY_EXPIRATION_DATE: string = \"expirationDate\";\n\n    public static LOCAL_CACHE_DATABASE_NAME: string = \"c8olocalcache\";\n\n    /** Response type **/\n    public static RESPONSE_TYPE_XML: string = \"pxml\";\n    public static RESPONSE_TYPE_JSON: string = \"json\";\n\n    /* Static configuration */\n    private static deviceUUID: string;\n\n    /** Network **/\n\n    /**\n     * The Convertigo endpoint, syntax: &lt;protocol&gt;://&lt;host&gt;:&lt;port&gt;/&lt;Convertigo web app path&gt;/projects/&lt;project name&gt; (Example: http://127.0.0.1:18080/convertigo/projects/MyProject)\n     */\n    protected _endpoint: string;\n    protected _endpointConvertigo: string;\n    protected _endpointIsSecure: boolean;\n    protected _endpointHost: string;\n    protected _endpointPort: string;\n    protected _endpointProject: string;\n    protected _projectEndpoint: string;\n    protected _hasProjectsPrefix: boolean = false;\n    protected _servicesGlobalEndpoint: string;\n    protected _servicesProjectEndpoint: string;\n    protected _servicesEndpointResolved: string;\n    protected _fullSyncGlobalEndpoint: string;\n    protected _fullSyncProjectEndpoint: string;\n    protected _fullSyncEndpointResolved: string;\n    protected _resolvedEndpointScope: \"global\" | \"project\" = \"global\";\n    protected _aliasFallbackTriggered: boolean = false;\n    protected _automaticRemoveSplashsCreen: boolean = true;\n\n    /**\n     * Used to run HTTP requests.\n     */\n    public httpInterface: C8oHttpInterfaceCore;\n\n    /**\n     * Allows to log locally and remotely to the Convertigo server.\n     */\n    public c8oLogger: C8oLogger;\n\n    /**\n     * Used to run fullSync requests.\n     */\n    public c8oFullSync: C8oFullSync;\n\n    public lives: C8oCallTask[] = [];\n    public livesDb: string[] = [];\n\n    public subscriber_session: Subject<any>;\n    public subscriber_session_changed: Subject<any>;\n    public subscriber_network: Subject<any>;\n    public subscriber_login: Subject<any>;\n    public subscriber_database_reset: Subject<any>;\n\n    private _reply = new Subject<any>();\n\n    protected data: any;\n    protected _http: any;\n    protected _couchUrl: string = null;\n    protected promiseConstructor: Promise<any>;\n    protected promiseInit: Promise<any>;\n    public promiseFinInit: Promise<any>;\n    protected promiseReachable: Promise<any>;\n    private promiseManagerNetwork: Promise<any>;\n    protected replicationsToRestart : Array<any>;\n    private _waitingForInit;\n    public reachable;\n\n    public network: C8oManagerNetwork;\n    public database: C8oManagerDatabase;\n    public session: C8oManagerSession;\n\n    public get couchUrl(): string {\n        return this._couchUrl;\n    }\n\n    public set couchUrl(value: string) {\n        this._couchUrl = value;\n    }\n\n    public get logC8o(): boolean {\n        return this._logC8o;\n    }\n\n    public set logC8o(value: boolean) {\n        this._logC8o = value;\n    }\n\n    public get logPouchDB(): boolean {\n        return this._logPouchDB;\n    }\n    \n    public set logPouchDB(value:boolean) {\n        this._logRemote = value;\n    }\n\n    public get logRemote(): boolean {\n        return this._logRemote;\n    }\n    public set forceFormData(value:boolean) {\n        this._forceFormData = value;\n    }\n\n    public get forceFormData(): boolean {\n        return this._forceFormData;\n    }\n\n    public set logRemote(value: boolean) {\n        this._initalLogLevel = value;\n        this._logRemote = value;\n    }\n\n    public get logLevelLocal(): C8oLogLevel {\n        return this._logLevelLocal;\n    }\n\n    public set logLevelLocal(value: C8oLogLevel) {\n        this._logLevelLocal = value;\n    }\n\n    public get log(): C8oLogger {\n        return this.c8oLogger;\n    }\n\n    public toString(): string {\n        return \"C8o[\" + this._endpoint + \"]\";\n    }\n\n    public get endpoint(): string {\n        return this._endpoint;\n    }\n\n    public set endpoint(value: string) {\n        this._endpoint = value;\n    }\n\n    public get endpointConvertigo(): string {\n        return this._endpointConvertigo;\n    }\n\n    public set endpointConvertigo(value: string) {\n        this._endpointConvertigo = value;\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get endpointIsSecure(): boolean {\n        return this._endpointIsSecure;\n    }\n\n    public set endpointIsSecure(value: boolean) {\n        this._endpointIsSecure = value;\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get endpointHost(): string {\n        return this._endpointHost;\n    }\n\n    public set endpointHost(value: string) {\n        this._endpointHost = value;\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    public get endpointPort(): string {\n        return this._endpointPort;\n    }\n\n    public set endpointPort(value: string) {\n        this._endpointPort = value;\n    }\n\n    public get endpointProject(): string {\n        return this._endpointProject;\n    }\n\n    public set endpointProject(value: string) {\n        this._endpointProject = value;\n    }\n\n    public get deviceUUID(): Promise<string> {\n        \n            return new Promise((resolve)=>{\n                if(window[\"cordova\"]!=undefined){\n                    document.addEventListener(\"deviceready\", ()=>{\n                        if(C8oCore.deviceUUID == undefined){\n                            C8oCore.deviceUUID = C8oUtilsCore.getNewGUIDString();\n                        }\n                        resolve(C8oCore.deviceUUID);\n                    }, false);\n                }\n                else{\n                    if(C8oCore.deviceUUID == undefined){\n                        C8oCore.deviceUUID = C8oUtilsCore.getNewGUIDString();\n                    }\n                    resolve(C8oCore.deviceUUID);\n                }\n        \n        \n        \n            \n        })\n        \n    }\n\n    public get httpPublic(): any {\n        return this._http;\n    }\n\n    public get resetBase(): boolean {\n        return this._resetBase;\n    }\n\n    public set resetBase(resetBase: boolean) {\n        this._resetBase = resetBase;\n    }\n\n    public get prefixBase(): boolean {\n        return this._prefixBase;\n    }\n\n    public set prefixBase(resetBase: boolean) {\n        this._prefixBase = resetBase;\n    }\n\n    \n\n    public abstract get sdkVersion(): string;\n\n    public get coreVersion(): string {\n        return \"1.0.7\";//require(\"../../package.json\").version;\n    }\n\n    public xsrfUsed = false;\n\n    /**\n     * This is the base object representing a Convertigo Server end point. This object should be instantiated\n     * when the apps starts and be accessible from any class of the app. Although this is not common , you may have\n     * several C8o objects instantiated in your app.\n     *\n     * @param http\n     *\n     * @throws C8oException In case of invalid parameter or initialization failure.\n     */\n    constructor() {\n        super();\n        this.data = null;\n        this.c8oLogger = new C8oLogger(this, true);\n        this.subscriber_session = new Subject<any>();\n        this.subscriber_session_changed = new Subject<any>();\n        this.subscriber_network = new Subject<any>();\n        this.subscriber_login = new Subject<any>();\n        this.subscriber_database_reset = new Subject<any>();\n        this.network = new C8oManagerNetwork(this);\n        this.database= new C8oManagerDatabase(this);\n        this.session = new C8oManagerSession(this);\n        this.promiseManagerNetwork = this.network.init();\n        this.observanleHandleFullSyncLive\n        .pipe(debounce(() => timer(100)))\n        .subscribe((val) => {\n            this.executeHandleFullSyncLive();\n        });  \n\n    }\n\n    public importLoginState(c8o: C8oCore){\n        let session = c8o.session;\n        this.session = session;\n    }\n\n    protected extractendpoint() {\n        if (!C8oUtilsCore.isValidUrl(this.endpoint)) {\n            throw new C8oException(C8oExceptionMessage.illegalArgumentInvalidURL(this.endpoint).toString());\n        }\n        const endpointStr = this.endpoint.toString();\n        const matches = C8oCore.RE_ENDPOINT.exec(endpointStr);\n        const url = new URL(endpointStr);\n\n        this.endpointIsSecure = url.protocol === \"https:\";\n        this.endpointHost = url.hostname;\n        this.endpointPort = url.port ? `:${url.port}` : \"\";\n\n        if (matches !== null) {\n            this._hasProjectsPrefix = true;\n            this.endpointConvertigo = this.normalizeBaseUrl(matches[0].substring(0, (matches[0].indexOf(\"/projects\"))));\n            this.endpointProject = matches[4];\n            this._projectEndpoint = this.normalizeBaseUrl(`${this.endpointConvertigo}/projects/${this.endpointProject}`);\n        } else {\n            this._hasProjectsPrefix = false;\n            const originPath = this.normalizeBaseUrl(url.origin + url.pathname);\n            this.endpointConvertigo = originPath;\n            this.endpointProject = \"\";\n            this._projectEndpoint = originPath;\n        }\n\n        this.configureEndpointBases();\n    }\n\n    private configureEndpointBases(): void {\n        const convertigoBase = this.normalizeBaseUrl(this.endpointConvertigo);\n        const projectBase = this.normalizeBaseUrl(this._projectEndpoint || convertigoBase);\n\n        this._aliasFallbackTriggered = false;\n        this._servicesGlobalEndpoint = this.combineUrl(convertigoBase, \"/services\");\n        this._servicesProjectEndpoint = this.combineUrl(projectBase, \"/.services\");\n        this._fullSyncGlobalEndpoint = this.combineUrl(convertigoBase, \"/fullsync\");\n        this._fullSyncProjectEndpoint = this.combineUrl(projectBase, \"/.fullsync\");\n\n        const initialScope = this.determineInitialScope();\n        this.applyEndpointScope(initialScope, true);\n    }\n\n    private determineInitialScope(): \"global\" | \"project\" {\n        const scope: C8oEndpointScope = this._endpointScope || \"auto\";\n        if (scope === \"global\") {\n            return \"global\";\n        }\n        if (scope === \"project\") {\n            return \"project\";\n        }\n        return this._hasProjectsPrefix ? \"global\" : \"project\";\n    }\n\n    protected applyEndpointScope(scope: \"global\" | \"project\", force: boolean = false): void {\n        if (!force && this._resolvedEndpointScope === scope) {\n            return;\n        }\n        this._resolvedEndpointScope = scope;\n        this._servicesEndpointResolved = scope === \"project\" ? this._servicesProjectEndpoint : this._servicesGlobalEndpoint;\n        this._fullSyncEndpointResolved = scope === \"project\" ? this._fullSyncProjectEndpoint : this._fullSyncGlobalEndpoint;\n        this.onEndpointScopeChanged();\n    }\n\n    protected onEndpointScopeChanged(): void {\n        if (this.c8oLogger) {\n            this.c8oLogger.updateRemoteLogUrl();\n        }\n        if (this.c8oFullSync) {\n            this.c8oFullSync.updateFullSyncEndpoint(this.fullSyncEndpoint);\n        }\n    }\n\n    public get servicesEndpoint(): string {\n        return this._servicesEndpointResolved;\n    }\n\n    public get fullSyncEndpoint(): string {\n        return this._fullSyncEndpointResolved;\n    }\n\n    public get projectEndpoint(): string {\n        return this._projectEndpoint;\n    }\n\n    public buildServicesUrl(path: string): string {\n        return this.combineUrl(this.servicesEndpoint, path);\n    }\n\n    public buildFullSyncUrl(path: string): string {\n        return this.combineUrl(this.fullSyncEndpoint, path);\n    }\n\n    public handleEndpointFallback(kind: \"services\" | \"fullsync\", error: any): boolean {\n        if (this._resolvedEndpointScope !== \"project\") {\n            return false;\n        }\n        if (!this._hasProjectsPrefix) {\n            return false;\n        }\n        const status = this.extractStatusCode(error);\n        if (status !== 404) {\n            return false;\n        }\n        if (!this._aliasFallbackTriggered) {\n            this._aliasFallbackTriggered = true;\n            this.log._info(\"Fallback to global endpoints after alias returned 404\");\n        }\n        this.applyEndpointScope(\"global\");\n        return true;\n    }\n\n    private extractStatusCode(error: any): number | null {\n        if (!error) {\n            return null;\n        }\n        if (typeof error === \"number\") {\n            return error;\n        }\n        if (typeof error.status === \"number\") {\n            return error.status;\n        }\n        if (error.response && typeof error.response.status === \"number\") {\n            return error.response.status;\n        }\n        if (typeof error.statusCode === \"number\") {\n            return error.statusCode;\n        }\n        if (error.originalException) {\n            return this.extractStatusCode(error.originalException);\n        }\n        if (error.cause) {\n            return this.extractStatusCode(error.cause);\n        }\n        return null;\n    }\n\n    private combineUrl(base: string, path: string): string {\n        const sanitizedBase = this.normalizeBaseUrl(base);\n        if (!path) {\n            return sanitizedBase;\n        }\n        const trimmedPath = path.startsWith(\"/\") ? path.substring(1) : path;\n        if (sanitizedBase.length === 0) {\n            return `/${trimmedPath}`;\n        }\n        return `${sanitizedBase}/${trimmedPath}`;\n    }\n\n    private normalizeBaseUrl(url: string): string {\n        if (!url) {\n            return \"\";\n        }\n        return url.replace(/\\/+$/, \"\");\n    }\n\n\n    /**\n     * Makes a c8o call with c8o requestable out of parameters.<br/>\n     * To not use a C8oExceptionListener you can set the parameter to null\n     *\n     * @param requestable - Contains the Convertigo Sequence or Transaction targeted  (Syntax: \"<project>.<sequence>\" or \"<project>.<connector>.<transaction>\")\n     * @param parameters - Contains c8o variables\n     * @param c8oResponseListener - Define the behavior with the c8o call response\n     * @param c8oExceptionListener - Define the behavior when there is an exception during execution\n     */\n    public call(requestable: string, parameters: Object = null, c8oResponseListener: C8oResponseListener = null, c8oExceptionListener: C8oExceptionListener = null) {\n        try {\n            if (requestable === null || requestable === undefined) {\n                //noinspection ExceptionCaughtLocallyJS\n                throw new C8oException(C8oExceptionMessage.illegalArgumentNullParameter(\"resquestable\"));\n            }\n            if (parameters === null || parameters === undefined) {\n                parameters = {};\n            } else {\n                if (this._normalizeParameters == true) {\n                    try {\n                        parameters = (JSON.parse(JSON.stringify(parameters)));\n                    }\n                    catch (error) {\n                        this.log.debug(\"[C8o] can't normalize parameters due to cyclic error. We will use parameters non normalized\");\n                    }\n\n                }\n            }\n            const regex = C8oCore.RE_REQUESTABLE.exec(requestable);\n            if (regex === null || regex === undefined) {\n                //noinspection ExceptionCaughtLocallyJS\n                throw new C8oException(C8oExceptionMessage.InvalidArgumentInvalidEndpoint(this._endpoint));\n            }\n            if (regex[1] !== \"\") {\n                parameters[C8oCore.ENGINE_PARAMETER_PROJECT.toString()] = regex[1];\n            }\n            if (regex[2] != null) {\n                parameters[C8oCore.ENGINE_PARAMETER_SEQUENCE.toString()] = regex[2];\n            } else {\n                parameters[C8oCore.ENGINE_PARAMETER_CONNECTOR.toString()] = regex[3];\n                parameters[C8oCore.ENGINE_PARAMETER_TRANSACTION.toString()] = regex[4];\n            }\n            return this._call(parameters, c8oResponseListener, c8oExceptionListener);\n        } catch (error) {\n            this.handleCallException(c8oExceptionListener, parameters, error);\n        } finally {\n        }\n    }\n\n    /**\n     * Makes a c8o call with c8o requestable in parameters ('__project' and ('__sequence' or ('__connector' and '__transaction'))).<br/>\n     * To not use a C8oExceptionListener you can set the parameter to null.\n     *\n     * @param parameters - Contains c8o variables\n     * @param c8oResponseListener - Define the behavior with the c8o call response\n     * @param c8oExceptionListener - Define the behavior when there is an exception during execution\n     */\n    public _call(parameters: Object = null, c8oResponseListener: C8oResponseListener = null, c8oExceptionListener: C8oExceptionListener = null) {\n        // IMPORTANT: all c8o calls have to end here !\n        Promise.all([this.promiseFinInit, this.promiseManagerNetwork]).then(() => {\n            try {\n                this.c8oLogger.logMethodCall(\"call\", parameters, c8oResponseListener, c8oExceptionListener);\n                if (parameters == null) {\n                    parameters = {};\n                } else {\n                    if (this._normalizeParameters == true) {\n                        try {\n                            parameters = (JSON.parse(JSON.stringify(parameters)));\n                        }\n                        catch (error) {\n                            this.log.debug(\"[C8o] can't normalize parameters due to cyclic error. We will use parameters non normalized\");\n                        }\n                    }\n                }\n                const task: C8oCallTask = new C8oCallTask(this, parameters, c8oResponseListener, c8oExceptionListener);\n                task.run();\n            } catch (error) {\n                this.handleCallException(c8oExceptionListener, parameters, error);\n            } finally {\n\n            }\n        });\n\n    }\n\n    /**\n     * Makes a c8o call with c8o requestable out of parameters, expecting a JSON response through a C8oPromise.<br/>\n     * The C8oPromise allow to register response handler with .then and .thenUI,\n     * error handler with .fail and failUI,\n     * replication handler with .progress\n     * and synchronous response with .sync().\n     *\n     * @param requestable - Contains the Convertigo Sequence or Transaction targeted  (Syntax: \"<project>.<sequence>\" or \"<project>.<connector>.<transaction>\")\n     * @param parameters: Object - Contains c8o variables as key/value pair in the Map\n     * @return A C8oPromise that can deliver the JSON response\n     */\n    public callJsonObject(requestable: string, parameters: Object): C8oPromise<JSON> {\n        this.removeNull(parameters)\n        const promise: C8oPromise<JSON> = new C8oPromise<JSON>(this);\n        this.call(requestable, parameters, new C8oResponseJsonListener((response: any, requestParameters: Object) => {\n            if (requestParameters == null) {\n                requestParameters = {};\n            }\n            if (response == null && requestParameters[C8oCore.ENGINE_PARAMETER_PROGRESS]) {\n                promise.onProgress(requestParameters[C8oCore.ENGINE_PARAMETER_PROGRESS]);\n            } else {\n                promise.onResponse(response, requestParameters);\n            }\n        }),\n            new C8oExceptionListener((exception: C8oException, data: Object) => {\n                promise.onFailure(exception, data);\n            }));\n        return promise;\n    }\n\n    /**\n     * Makes a c8o call with c8o requestable out of parameters, expecting a JSON response through a C8oPromise.<br/>\n     * The C8oPromise allow to register response handler with .then and .thenUI,\n     * error handler with .fail and failUI,\n     * replication handler with .progress\n     * and synchronous response with .sync().\n     *\n     * @param requestable - Contains the Convertigo Sequence or Transaction targeted  (Syntax: \"<project>.<sequence>\" or \"<project>.<connector>.<transaction>\")\n     * @param parameters - Contains c8o variables as key/value\n     * @return A C8oPromise that can deliver the JSON response\n     */\n    public callJson(requestable: string, ...parameters: any[]): C8oPromise<JSON> {\n        return this.callJsonObject(requestable, C8oCore.toParameters(parameters));\n    }\n\n    /**\n     * Transforms siblings values as key/value of a Map.\n     *\n     * @param parameters pair of values to transform a object\n     * @return a Map that contains all parameters\n     */\n    public static toParameters(parameters: any): Object {\n        const newParameters: Object = {};\n        if (0 !== parameters.length % 2) {\n            throw new C8oException(\"Incorrect number of parameters\");\n        }\n        for (let i = 0; i < parameters.length; i += 2) {\n            newParameters[parameters[i]] = parameters[i + 1];\n        }\n        return newParameters;\n    }\n    /**\n     * Remove null value from parameters\n     *\n     * @param parameters an object\n     * @return a Map that contains all parameters\n     */\n    public removeNull(parameters: any){\n        for(let val in parameters){\n            if(parameters[val]== null){\n                delete parameters[val];\n                this.log._trace(\"remove parameters \"+ val+ \" since its value is null or undefined\");\n            }\n        }\n    }\n\n    /**\n     * Calls the exception listener callback if it is not null, else prints the exception stack trace.\n     *\n     * @param c8oExceptionListener\n     * @param requestParameters\n     * @param exception\n     */\n    public handleCallException(c8oExceptionListener: C8oExceptionListener, requestParameters: Object, exception: Error) {\n        this.c8oLogger.warn(\"Handle a call exception\", exception);\n        if (c8oExceptionListener != null) {\n            c8oExceptionListener.onException(exception, requestParameters);\n        }\n    }\n\n    /**\n     * Return an subject that call next if session has been lost\n     */\n    public handleSessionLost(): Subject<any> {\n        this.subscriber_session.subscribe((res)=>{\n            this.c8oLogger.debug(\"[C8o][handleSessionLost] Handle a session lost\");\n\n/*            (this.c8oFullSync as C8oFullSyncCbl).canceled = false;\n            (this.c8oFullSync as C8oFullSyncCbl).cancelActiveReplications();\n  */\n           \n        });\n        return this.subscriber_session;\n    }\n\n    /**\n     * Return an subject that call next if session authenticated user change\n     */\n     public handleSessionAuthenticatedUserChanged(): Subject<any> {\n        this.subscriber_session_changed.subscribe((res)=>{\n            this.c8oLogger.debug(\"[C8o][handleSessionLost] Handle a session change of authenticated user\");           \n        });\n        return this.subscriber_session_changed;\n    }\n\n    /**\n     * Return an subject that call next if network has change\n     */\n    public handleNetworkEvents(): Subject<any> {\n        return this.subscriber_network;\n    }\n\n    /**\n     * Return an subject that call next if autologin is triggered with its result\n     */\n    public handleAutoLoginResponse(): Subject<any> {\n        return this.subscriber_login;\n    }\n\n    /**\n     * Return an subject that call next if database has been reset\n     */\n     public handleResetDatabase(): Subject<any> {\n        return this.subscriber_database_reset;\n    };\n    \n    /**\n     * get an attachment for a given object\n     *\n     * @param id: string\n     * @param attachment_name: string\n     *\n     * @returns a promise containing a buffer\n     */\n    public async get_attachment(id: string, attachment_name: string, database_name?: string): Promise<any> {\n        return new Promise(async (resolve, reject) => {\n            if (database_name == null) {\n                database_name = this.defaultDatabaseName;\n            }\n            if ((this.c8oFullSync as C8oFullSyncCbl) != undefined) {\n                const fullsyncdb = await (this.c8oFullSync as C8oFullSyncCbl).getOrCreateFullSyncDatabase(database_name);\n                fullsyncdb.getdatabase.getAttachment(id, attachment_name).then((buffer) => {\n                    resolve(buffer);\n                }).catch((err) => {\n                    reject(err);\n                });\n            }\n        });\n    }\n\n    /**\n     * Add a listener to monitor all changes of the 'db'.\n     *\n     * @param db the name of the fullsync database to monitor. Use the default database for a blank or a null value.\n     * @param listener the listener to trigger on change.\n     */\n    public addFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener, parameters: Object = {}) {\n        (this.c8oFullSync as C8oFullSyncCbl).addFullSyncChangeListener(db, listener, parameters);\n    }\n\n    /**\n     * Remove a listener for changes of the 'db'.\n     *\n     * @param db the name of the fullsync database to monitor. Use the default database for a blank or a null value.\n     * @param listener the listener instance to remove.\n     */\n    public removeFullSyncChangeListener(db: string, listener: C8oFullSyncChangeListener) {\n        (this.c8oFullSync as C8oFullSyncCbl).removeFullSyncChangeListener(db, listener);\n    }\n\n    public addLive(liveid: string, db: string, task: C8oCallTask) {\n        this.cancelLive(liveid);\n        this.lives[liveid] = task;\n        this.livesDb[liveid] = db;\n        this.addFullSyncChangeListener(db, this.handleFullSyncLive);\n    }\n\n    public cancelLive(liveid: string) {\n        if (this.livesDb[liveid] !== undefined) {\n            let db: string = this.livesDb[liveid];\n            delete this.livesDb[liveid];\n            if (this.livesDb[db] !== undefined) {\n                db = null;\n            }\n            if (db !== null) {\n                this.removeFullSyncChangeListener(db, this.handleFullSyncLive);\n            }\n        }\n        delete this.lives[liveid];\n    }\n\n    private executeHandleFullSyncLive(){\n        console.log(\"Executing from handleFullSyncLive into debounce\");   \n        for (const task in this.lives) {\n            (this.lives[task] as C8oCallTask).executeFromLive();\n        }\n    }\n\n    private doAlog(){\n        console.log(\"Executing from handleFullSyncLive into debounce\");\n    }\n\n    private debounce(func, timeout = 300){\n        let timer;\n        return (...args) => {\n          clearTimeout(timer);\n          timer = setTimeout(() => { func.apply(this, args); }, timeout);\n       };\n    }\n\n    public truc(){\n        for(var i =0; i< 10; i++){\n            console.log(\"Executing from handleFullSyncLive before debounce\");\n            this.debounce(()=>this.doAlog());\n        }\n    }\n\n    //noinspection JSUnusedLocalSymbols\n    protected handleFullSyncLive: C8oFullSyncChangeListener = new C8oFullSyncChangeListener(\n        (changes: Object) => {\n            console.log(\"Executing from handleFullSyncLive before debounce\");\n            this.observanleHandleFullSyncLive.next(changes);\n            /*console.log(\"Executing from handleFullSyncLive before debounce\");\n            this.debounce(()=>this.executeHandleFullSyncLive());\n            /*console.log(\"Executing from handleFullSyncLive before debounce\");\n            _.debounce(\n                this.executeHandleFullSyncLive,\n                window[\"threshold\"] != undefined ? window[\"threshold\"] : this.threshold,\n                window[\"options\"] != undefined ? window[\"options\"] : {}\n            )();*/\n            /*let localLastChangeTimeStamp = new Date().getTime();\n            if(22)\n            this.lastChangeTimeStamp = localLastChangeTimeStamp;\n            console.log(\"Executing from handleFullSyncLive. \\nthis.lastChangeTimeStamp=\"+ this.lastChangeTimeStamp)\n            this.lastChangeSetTimeout = setTimeout(()=>{\n                let execution_time = new Date().getTime();\n                let sub = execution_time - this.lastChangeTimeStamp;\n                console.log(\"Executing from handleFullSyncLive into setTimeout. \\nthis.lastChangeTimeStamp=\"+ this.lastChangeTimeStamp+\"\\nexecution_time=\"+execution_time+\"\\nsub=\"+sub+\"\\nthreshold=\"+this.threshold);\n                if( sub >= this.threshold){\n                    console.log(\"Executing from handleFullSyncLive into setTimeout reloading lives\");\n                    for (const task in this.lives) {\n                        (this.lives[task] as C8oCallTask).executeFromLive();\n                    }\n                }\n                else{\n                    console.log(\"Executing from handleFullSyncLive into setTimeout donot reloading lives\");\n                }\n            }, this.threshold);*/\n            \n    });\n    \n    /**\n     * Method to bastract http get\n     * @param uri the uri for given request\n     */\n    public abstract httpGetObservable(uri): Observable<any>;\n\n     /**\n     * Init http interface in client sdk\n     */\n    abstract initC8oHttInterface(): void;\n\n    /**\n     * This is the base object representing a Convertigo Server end point. This object should be instantiated\n     * when the apps starts and be accessible from any class of the app. Although this is not common , you may have\n     * several C8o objects instantiated in your app.\n     *\n     * @param c8oSettings Initialization options.<br/>\n     *                    Example: new C8oSettings().setLogRemote(false).setDefaultDatabaseName(\"sample\")\n     *\n     * @throws C8oException In case of invalid parameter or initialization failure.\n     */\n    public init(c8oSettings?: C8oSettings): Promise<any> {\n        let nullableEndpoint = true;\n        if (c8oSettings !== undefined) {\n            if (c8oSettings.endpoint != null) {\n                nullableEndpoint = false;\n            }\n        }\n        if (nullableEndpoint) {\n            this.promiseConstructor = new Promise<void>((resolve) => {\n                const webEndpoint = this.resolveBrowserEndpoint();\n                if (webEndpoint != null) {\n                    this.endpoint = webEndpoint;\n                    resolve();\n                    return;\n                }\n\n                if (window.location.href.startsWith(\"http\") && window.location.href.indexOf(\"/DisplayObjects\") != -1) {\n                    let n = window.location.href.indexOf(\"/DisplayObjects\");\n                    this.endpoint = window.location.href.substring(0, n);\n                    resolve();\n                }\n                // else if project is running on device or serve by ionic serve\n                // get the uri from env.json\n                else {\n                    let uri =\"\";\n                    if(window.location.href.startsWith(\"file://\")){\n                        uri = (window.location.href.substring(0, window.location.href.indexOf(\"/index.html\"))) + \"/env.json\"\n                    }\n                    else{\n                        uri = window.location.origin + \"/env.json\";\n                    }\n                    this.httpGetObservable(uri)\n                        .subscribe(\n                            data => {\n                                this.data = data;\n                                //noinspection TypeScriptUnresolvedVariable\n                                let remoteBase = data[\"remoteBase\"].toString();\n                                // hmr in ngx mb\n                                if(window[\"webpackHotUpdateapp\"]){\n                                    remoteBase = remoteBase.replace(\"://localhost\", \"://\" + window.location.hostname);\n                                }\n                                let n = remoteBase.indexOf(\"/_private\");\n                                this.endpoint = remoteBase.substring(0, n);\n                                this._automaticRemoveSplashsCreen = data[\"splashScreenRemoveMode\"] !== \"manual\";\n                                resolve();\n                            },\n                            error=>{\n                                alert(\"Missing env.json file\");\n                                let errMsg: string;\n                                if (error instanceof Error) {\n                                    errMsg = error.message;\n                                } else {\n                                    errMsg = `${error.status} - ${error.statusText || \"\"} ${error}`;\n                                }\n                                return throwError(() => errMsg);\n                                \n                            }\n                        );\n                }\n            }).then(() => {\n                this.extractendpoint();\n            });\n        }\n        else {\n            this.promiseConstructor = new Promise<void>((resolve) => {\n                this.endpoint = c8oSettings.endpoint;\n                this.extractendpoint();\n                resolve();\n            });\n        }\n\n        this.promiseInit = Promise.all([this.promiseConstructor]).then(() => {\n            return new Promise<void>(async (resolve) => {\n                this.copy(c8oSettings);\n                this.initC8oHttInterface();\n                try{\n                    await this.session.setInitalState();\n                }\n                catch(e){\n                    console.error(\"Error calling setInitalState\", e);\n                }\n                this.c8oLogger.affect_val(this, false);\n                try{\n                    await this.c8oLogger.logRemoteInit()\n                }\n                catch(e){\n                    console.error(\"Error calling logRemoteInit\", e);\n                }\n                this.c8oLogger.logMethodCall(\"C8o Constructor\");\n                this.c8oFullSync = new C8oFullSyncCbl(this);\n                resolve();\n                \n            });\n        });\n        return this.promiseInit;\n    }\n\n    private resolveBrowserEndpoint(): string | null {\n        try {\n            if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n                return null;\n            }\n            const base = document.querySelector(\"base[data-c8o-mode]\") as HTMLBaseElement;\n            if (!base) {\n                return null;\n            }\n            const baseUri = document.baseURI;\n            if (!baseUri) {\n                return null;\n            }\n            const normalized = baseUri.replace(/\\/+$/, \"\");\n            return normalized.length > 0 ? normalized : baseUri;\n        } catch (e) {\n            return null;\n        }\n    }\n\n    /**\n     * This should be called OnPlatform Ready to remove splashscreen if necessary\n     *\n     */\n    public finalizeInit(): Promise<any>{\n        if(this.promiseFinInit != null){\n            return this.promiseFinInit;\n        }\n        else{\n            this.promiseFinInit = new Promise<void>((resolve)=>{\n                Promise.all([this.promiseInit]).then(() => {\n                    /**\n                     * Looking for splashScreen timeOut\n                     */\n                    if (this._automaticRemoveSplashsCreen) {\n                        if (navigator[\"splashscreen\"] !== undefined) {\n                            navigator[\"splashscreen\"].hide();\n                        }\n                    }\n                    /**\n                     * Looking for wkWebView\n                     */\n                    if (window[\"wkWebView\"] != undefined) {\n                        window[\"wkWebView\"].injectCookie(this.endpointConvertigo)\n                        this.log.debug(\"[C8O] wkWebView detected: We will inject Cookie for endpoint: \"+ this.endpointConvertigo);\n                    }\n                    /**\n                     * Looking for cblite\n                     */\n                    if (window[\"cblite\"] != undefined) {\n                        window[\"cblite\"].getURL((err, url) => {\n                            if (err) {\n                                //this.checkReachable()\n                                resolve();\n                            }\n                            else{\n                                url = url.replace(new RegExp(\"/$\"), \"\");\n                                this.couchUrl = url;\n                                //this.checkReachable()\n                                resolve();\n                            }\n                        });\n                    }\n                    else {\n                        //this.checkReachable()\n                        resolve();\n                    }\n                });\n            });\n            return this.promiseFinInit;\n        }\n    }\n\n\n}\n\n// @dynamic\nexport class FullSyncPolicy {\n\n    public static NONE: FullSyncPolicy = new FullSyncPolicy(C8oCore.FS_POLICY_NONE, (database: any, newProperties: Object) => {\n        let documentId = C8oUtilsCore.getParameterStringValue(newProperties, C8oFullSync.FULL_SYNC__ID, false);\n        if (documentId === \"\") {\n            documentId = null;\n        }\n        return new Promise((resolve, reject) => {\n            database.post(newProperties).then((createdDocument) => {\n                resolve(createdDocument);\n            }).catch((error) => {\n                reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n            });\n        });\n    });\n\n    public static CREATE: FullSyncPolicy = new FullSyncPolicy(C8oCore.FS_POLICY_CREATE, (database: any, newProperties: Object) => {\n        return new Promise((resolve, reject) => {\n            try {\n                delete newProperties[C8oFullSync.FULL_SYNC__ID];\n                delete newProperties[C8oFullSync.FULL_SYNC__REV];\n                database.post(newProperties).then((createdDocument) => {\n                    resolve(createdDocument);\n                });\n            } catch (error) {\n                reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n            }\n        });\n    });\n\n    public static OVERRIDE: FullSyncPolicy = new FullSyncPolicy(C8oCore.FS_POLICY_OVERRIDE, (database: any, newProperties: Object) => {\n        return new Promise((resolve, reject) => {\n            try {\n                const documentId: string = C8oUtilsCore.getParameterStringValue(newProperties, C8oFullSync.FULL_SYNC__ID, false);\n                delete newProperties[C8oFullSync.FULL_SYNC__ID];\n                delete newProperties[C8oFullSync.FULL_SYNC__REV];\n                if (documentId == null) {\n                    database.post(newProperties).then((createdDocument) => {\n                        resolve(createdDocument);\n                    });\n                } else {\n                    database.get(documentId).then((doc) => {\n                        newProperties[\"_id\"] = documentId;\n                        newProperties[\"_rev\"] = doc._rev;\n                        return database.put(newProperties);\n                    }).then((createdDocument) => {\n                        resolve(createdDocument);\n                    }).catch((error) => {\n                        if (error.status === \"404\" || error.status === 404) {\n                            newProperties[\"_id\"] = documentId;\n                            return database.post(newProperties);\n                        } else {\n                            reject(error);\n                        }\n                    },\n                    ).then((createdDocument) => {\n                        resolve(createdDocument);\n                    });\n                }\n            } catch (error) {\n                reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n            }\n        });\n    });\n\n    public static MERGE: FullSyncPolicy = new FullSyncPolicy(C8oCore.FS_POLICY_MERGE, (database: any, newProperties: Object, subPolicy = null) => {\n        return new Promise((resolve, reject) => {\n            try {\n                const documentId: string = C8oUtilsCore.getParameterStringValue(newProperties, C8oFullSync.FULL_SYNC__ID, false);\n                // delete newProperties[C8oFullSync.FULL_SYNC__ID];\n                delete newProperties[C8oFullSync.FULL_SYNC__REV];\n                // copy newProperties object to be able to apply subPolicy merge\n                let copyNewProperties = C8oFullSyncCbl.deepCloneObject(newProperties);\n                if (documentId == null) {\n                    // Apply subPolicy for merge (here can only be delete since, there is no previous doc)\n                    C8oFullSyncCbl.applySubPolicyForMerge(false, copyNewProperties, newProperties , subPolicy);\n                    // Put document\n                    database.put(newProperties)\n                        .then((createdDocument) => {\n                            resolve(createdDocument);\n                        }).catch((error) => {\n                            reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n                        });\n\n                } else {\n                    database.get(documentId)\n                        .then((doc) => {\n                            // Apply Policy merge\n                            C8oFullSyncCbl.mergeProperties(newProperties, doc);\n                            // Apply subPolicy for merge\n                            C8oFullSyncCbl.applySubPolicyForMerge(true, copyNewProperties, newProperties , subPolicy);\n                            // Put document\n                            database.put(newProperties)\n                                .then((createdDocument) => {\n                                    resolve(createdDocument);\n                                })\n                                .catch((error) => {\n                                    reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n                                });\n\n                        }).catch((error) => {\n                            if (error.status === 404) {\n                                // Apply subPolicy for merge (here can only be delete since, there is no previous doc)\n                                C8oFullSyncCbl.applySubPolicyForMerge(false, copyNewProperties, newProperties , subPolicy);\n                                // Put document\n                                database.put(newProperties)\n                                    .then((createdDocument) => {\n                                        resolve(createdDocument);\n                                    })\n                                    .catch((error) => {\n                                        reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n                                    });\n                            } else {\n                                reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n                            }\n                        });\n                }\n            } catch (error) {\n                reject(new C8oCouchBaseLiteException(C8oExceptionMessage.fullSyncPutProperties(newProperties), error));\n            }\n        });\n    });\n\n    public value: string;\n    public action: (PouchDB, Object, subPolicy?) => any;\n\n    constructor(value: string, action: (_Object, Object) => any) {\n        this.value = value;\n        this.action = action;\n        \n    }\n\n    public static values(): FullSyncPolicy[] {\n        return [this.NONE, this.CREATE, this.OVERRIDE, this.MERGE];\n    }\n\n    public static getFullSyncPolicy(value: string): FullSyncPolicy {\n        if (value != null) {\n            const fullSyncPolicyValues: FullSyncPolicy[] = FullSyncPolicy.values();\n            for (const fullSyncPolicy of fullSyncPolicyValues) {\n                if (fullSyncPolicy.value === value) {\n                    return fullSyncPolicy as FullSyncPolicy;\n                }\n            }\n        }\n        return this.NONE;\n    }\n}\n\nexport class FullSyncPostDocumentParameter {\n    public static POLICY: FullSyncPostDocumentParameter = new FullSyncPostDocumentParameter(C8oCore.FS_POLICY);\n    public static SUBKEY_SEPARATOR: FullSyncPostDocumentParameter = new FullSyncPostDocumentParameter(C8oCore.FS_SUBKEY_SEPARATOR);\n\n    public name: string;\n\n    constructor(name: string) {\n        this.name = name;\n    }\n\n    public static values(): FullSyncPostDocumentParameter[] {\n        const array: FullSyncPostDocumentParameter[] = [];\n        array.push(this.POLICY, this.SUBKEY_SEPARATOR);\n        return array;\n    }\n\n}\n","import { C8oCore } from \"./c8oCore\";\r\nimport { C8oProgress } from \"./c8oProgress\";\r\nimport { C8oResponseListener, C8oResponseJsonListener } from \"./c8oResponse\";\r\nimport { retry, timeout } from 'rxjs/operators';\r\nimport { C8oHttpRequestException } from \"./Exception/c8oHttpRequestException\";\r\n\r\nimport { C8oExceptionMessage } from \"./Exception/c8oExceptionMessage\";\r\nimport { Observable, from } from \"rxjs\";\n\r\n\r\ndeclare const require: any;\r\nexport abstract class C8oHttpInterfaceCore {\r\n    public c8o: C8oCore;\r\n    public timeout: number;\r\n    public firstCall: boolean = true;\r\n    public p1: Promise<Object>;\r\n    protected _isCordova = null;\r\n    public firstcheckSessionR: boolean;\r\n    private js = true;\r\n    private session = \"\";\r\n    private _timeout: any;\r\n    private from: any;\r\n    private requestLogin: any;\r\n    private _loggedinSession: boolean;\r\n    private _notifySessionLost: boolean;\r\n    private randomForParrallelize: string = (new Date()).getTime() + \"_\" + Math.floor(Math.random() * 1000000);\r\n    private incrementForParrallelize: number = 0;\r\n\r\n    constructor(c8o: C8oCore, js: boolean = true) {\r\n        this.from = from;\n\r\n        this.c8o = c8o;\r\n        this.timeout = this.c8o.timeout;\r\n        this.firstcheckSessionR = false;\r\n        this._notifySessionLost = false;\r\n\r\n        /**\r\n         *  As this package will be used in two diffrent library, wee need to test in which platform we are,\r\n         *  to perform diffrent platform specific actions.\r\n         */\r\n        this.js = js;\r\n    }\r\n\r\n    public forceInit() {\r\n        this.firstcheckSessionR = false;\r\n        this._notifySessionLost = false;\r\n    }\r\n\r\n    /**\r\n     * Method to bastract http get\r\n     * @param uri the uri for given request\r\n     */\r\n    public httpGetObservable(uri, param1 = null, param2 = null) {\r\n        if (this.js) {\r\n            if (param1 == null) {\r\n                return this.from(this.c8o.httpPublic.get(uri));\r\n            }\r\n            else if (param2 == null) {\r\n                return this.from(this.c8o.httpPublic.get(uri, param1));\r\n            }\r\n            else {\r\n                return this.from(this.c8o.httpPublic.get(uri, param1, param2));\r\n            }\r\n        }\r\n        else {\r\n            if (param1 == null) {\r\n                return this.c8o.httpPublic.get(uri);\r\n            }\r\n            else if (param2 == null) {\r\n                return this.c8o.httpPublic.get(uri, param1);\r\n            }\r\n            else {\r\n                return this.c8o.httpPublic.get(uri, param1, param2);\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Method to bastract http post\r\n     * @param uri the uri for given request\r\n     */\r\n    public httpPostObservable(uri, param1, param2) {\r\n        if (this.js) {\r\n            return this.from(this.c8o.httpPublic.post(uri, param1, param2));\r\n        }\r\n        else {\r\n            return this.c8o.httpPublic.post(uri, param1, param2);\r\n        }\r\n    }\r\n    /**\r\n     * Call user service\r\n     * @param headers headers for request\r\n     */\r\n    public getUserServiceStatus(observe?): Promise<any> {\r\n        return new Promise((resolve, reject) => {\r\n            let headersObject = { 'Accept': 'application/json', 'x-convertigo-sdk': this.c8o.sdkVersion };\r\n            Object.assign(headersObject, this.c8o.headers);\r\n            let params = {\r\n                headers: this.getHeaders(headersObject),\r\n                withCredentials: true,\r\n            }\r\n            if (observe) {\r\n                params[\"observe\"] = \"response\";\r\n            }\r\n            const call = (allowFallback: boolean) => {\n                const url = this.c8o.buildServicesUrl(\"user.Get\");\n                this.httpPostObservable(url, {}, params)\n                    .pipe(retry(1))\n                    .subscribe(\n                        response => {\n                            resolve(response);\n                        },\n                        error => {\n                            if (allowFallback && this.c8o.handleEndpointFallback(\"services\", error)) {\n                                call(false);\n                            } else {\n                                reject(error);\n                            }\n                        });\n            };\n            call(true);\n        })\n\n    }\n\r\n\r\n\r\n\r\n\r\n    /**\r\n    * Make an http post\r\n    * @param {string} url\r\n    * @param {Object} parameters\r\n    * @return {Promise<any>}\r\n    */\r\n    public httpPost(url: string, parameters: Object): Promise<any> {\r\n        parameters = this.transformRequest(parameters);\r\n        let headersObject = { \"Content-Type\": \"application/x-www-form-urlencoded\", \"x-convertigo-sdk\": this.c8o.sdkVersion };\r\n        Object.assign(headersObject, this.c8o.headers);\r\n        let headers = this.getHeaders(headersObject);\r\n        if (this.firstCall) {\r\n            this.p1 = new Promise((resolve, reject) => {\r\n                this.firstCall = false;\r\n                this.execHttpPosts(url, parameters, headers, resolve, reject);\r\n            });\r\n            return this.p1;\r\n        }\r\n        else {\r\n            return new Promise((resolve, reject) => {\r\n                Promise.all([this.p1]).then(() => {\r\n                    this.execHttpPosts(url, parameters, headers, resolve, reject);\r\n                }).catch((error) => {\r\n                    this.execHttpPosts(url, parameters, headers, resolve, reject);\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Execute http Posts \r\n     * @param url \r\n     * @param parameters \r\n     * @param headers \r\n     * @param resolve \r\n     * @param reject \r\n     */\r\n    public execHttpPosts(url: string, parameters: any, headers: any, resolve, reject, headers_return = false, doLogin = false,) {\r\n        if(this.c8o.parrallelizeCallSequences){\r\n            parameters += \"&__context=\" + this.randomForParrallelize + \"_\" + this.incrementForParrallelize + \"&__removeContext=true\";\r\n            this.incrementForParrallelize ++;\r\n        }\r\n        let params = new URLSearchParams(parameters);\r\n        let _timeout = params.get('_c8oTimeout') ?? this.c8o.timeout;\r\n        let _retry = params.get('_c8oRetry') ?? this.c8o.retry;\r\n\r\n        this.httpPostObservable(url, parameters, {\r\n            headers: headers,\r\n            withCredentials: true,\r\n            observe: 'response'\r\n        })\r\n            .pipe(timeout((+_timeout)))\r\n            .pipe(retry((+_retry)))\r\n            .subscribe(\r\n                response => {\r\n                    this.handleResponseHttpPost(response, headers, resolve, url, parameters, headers, headers_return, reject, doLogin);\r\n                },\r\n                error => {\r\n                    this.handleErrorHttpPost(error, reject, url);\r\n                }\r\n            );\r\n    }\r\n\r\n    /**\r\n     * Handle response of http Posts\r\n     * @param response \r\n     * @param headers \r\n     * @param resolve \r\n     */\r\n    private handleResponseHttpPost(response: any, headers: any, resolve: any, urlReq: string, parametersReq: any, headersReq: any, returns_header = false, reject = null, doLogin = false) {\r\n        //this.checkReachable();\r\n        //this.triggerSessionCheck(response, headers, urlReq, parametersReq, headersReq);\r\n        if (urlReq.indexOf(\".json\") != -1) {\r\n            if (doLogin == true) {\r\n                resolve({ body: response[\"body\"], headers: response[\"headers\"] });\r\n            }\r\n            else {\r\n                this.c8o.session.sort(response, headers, urlReq, parametersReq, headersReq)\r\n                    .then((res) => {\r\n                        if (res != true || parametersReq[C8oCore.SEQ_AUTO_LOGIN_OFF] === true) {\r\n                            if (returns_header) {\r\n                                resolve({ body: response[\"body\"], headers: response[\"headers\"] });\r\n                            }\r\n                            else {\r\n                                resolve(response.body);\r\n                            }\r\n                        }\r\n                        else {\r\n                            this.execHttpPosts(urlReq, parametersReq, headersReq, resolve, reject, returns_header)\r\n                        }\r\n                    })\r\n            }\r\n\r\n        }\r\n        else {\r\n            resolve(response.body);\r\n        }\r\n\r\n\r\n    }\r\n\r\n    /**\r\n     * Handle errors of http Posts\r\n     * @param error \r\n     * @param reject \r\n     */\r\n    private handleErrorHttpPost(error: any, reject: any, url = undefined) {\r\n        if (url != undefined) {\r\n            if (url.indexOf(\".Add\") == -1) {\r\n                this.c8o.network.init();\r\n            }\r\n        }\r\n        reject((new C8oHttpRequestException(C8oExceptionMessage.runHttpRequest(), error)));\r\n    }\r\n\r\n    /**\r\n     * Check type of file given in parameters\r\n     * 0 : No file to upload\r\n     * 1 : FileList Or File\r\n     * 2 : url when running in cordova\r\n     * @param {Object} parameters\r\n     * @return {number}\r\n     */\r\n    public checkFile(parameters: Object): number {\r\n        for (let p in parameters) {\r\n            if (parameters[p] instanceof Array) {\r\n                for (let p1 in parameters[p]) {\r\n                    //noinspection JSUnfilteredForInLoop\r\n                    if (parameters[p][p1] instanceof FileList || parameters[p][p1] instanceof File || parameters[p][p1] instanceof Blob) {\r\n                        return 1;\r\n                    }\r\n                    else if (this.isCordova()) {\r\n                        if (parameters[p][p1] instanceof URL) {\r\n                            return 2;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (parameters[p] instanceof FileList || parameters[p] instanceof File || parameters[p] instanceof Blob) {\r\n                    return 1;\r\n                }\r\n                else if (this.isCordova()) {\r\n                    if (parameters[p] instanceof URL) {\r\n                        return 2;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    /**\r\n     * Check if we are in cordova environment\r\n     * @return {boolean}\r\n     */\r\n    protected isCordova(): boolean {\r\n        if (this._isCordova == null) {\r\n            if (window[\"cordova\"] != undefined) {\r\n                this._isCordova = true;\r\n            }\r\n            else {\r\n                this._isCordova = false;\r\n            }\r\n        }\r\n        return this._isCordova;\r\n    }\r\n\r\n    /**\r\n     * Url encode parameters\r\n     * @param {Object} parameters\r\n     * @return {string}\r\n     */\r\n    public transformRequest(parameters: Object): string {\r\n        let str = [];\r\n        for (let p in parameters) {\r\n            if (parameters[p] instanceof Array) {\r\n                for (let p1 in parameters[p]) {\r\n                    //noinspection JSUnfilteredForInLoop\r\n                    str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(parameters[p][p1]));\r\n                }\r\n            }\r\n            else {\r\n                str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(parameters[p]));\r\n            }\r\n        }\r\n        let query = str.join(\"&\");\r\n        // Add this to instruct Convertigo server to remove any name space in the jSON keys\r\n        // to prevent keys like this:  'namespace:key'\r\n        return (query + \"&__removeNamespaces=true\");\r\n    }\r\n\r\n    /**\r\n     * Transform FormData parameters\r\n     * @param {Object} parameters\r\n     * @return {FormData}\r\n     */\r\n    public transformRequestformdata(parameters: Object): FormData {\n        let formdata: FormData = new FormData();\n        const appendBlob = (key: string, value: Blob) => {\n            const fileName = (value instanceof File && value.name) ? value.name : undefined;\n            if (fileName) {\n                formdata.append(key, value, fileName);\n            } else {\n                formdata.append(key, value);\n            }\n        };\n        for (let p in parameters) {\n            if (parameters[p] instanceof Array) {\n                for (let p1 in parameters[p]) {\n                    if (parameters[p][p1] instanceof FileList) {\n                        for (var i = 0; i < parameters[p][p1].length; i++) {\n                            formdata.append(p, parameters[p][p1][i], parameters[p][p1][i].name);\n                        }\n                    }\n                    else if (parameters[p][p1] instanceof File || parameters[p][p1] instanceof Blob) {\n                        appendBlob(p, parameters[p][p1]);\n                    }\n                    else {\n                        formdata.append(p, parameters[p][p1])\n                    }\n                }\n            }\r\n            else {\r\n                if (parameters[p] instanceof FileList) {\n                    for (var j = 0; j < parameters[p].length; j++) {\n                        formdata.append(p, parameters[p][j], parameters[p][j].name);\n                    }\n                }\n                else if (parameters[p] instanceof File || parameters[p] instanceof Blob) {\n                    appendBlob(p, parameters[p]);\n                }\n                else {\n                    formdata.append(p, parameters[p]);\n                }\n            }\r\n        }\r\n        return formdata;\r\n    }\r\n\r\n    /**\r\n     * Extract file from parameters and return and array containing a file and params\r\n     * @param {Object} parameters\r\n     * @return {any}\r\n     */\r\n    public transformRequestfileNative(parameters: Object): any {\r\n        let file: Array<any> = new Array();\r\n        let params: Object = new Object();\r\n        for (let p in parameters) {\r\n            if (parameters[p] instanceof Array) {\r\n                for (let p1 in parameters[p]) {\r\n                    if (parameters[p][p1] instanceof URL) {\r\n                        file.push([p1, parameters[p][p1]]);\r\n                    }\r\n                    else {\r\n                        params[p1] = parameters[p][p1][\"href\"];\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (parameters[p] instanceof URL) {\r\n                    file.push([p, parameters[p][\"href\"]]);\r\n                }\r\n                else {\r\n                    params[p] = parameters[p];\r\n                }\r\n            }\r\n        }\r\n        return [file, params];\r\n    }\r\n\r\n    /**\r\n     * Handle the request\r\n     * @param {string} url\r\n     * @param {Object} parameters\r\n     * @param {C8oResponseListener} c8oResponseListener\r\n     * @return {Promise<any>}\r\n     */\r\n    async handleRequest(url: string, parameters: Object, c8oResponseListener?: C8oResponseListener): Promise<any> {\r\n        if (parameters[\"__sequence\"] !== undefined) {\r\n            if (parameters[\"__sequence\"].indexOf(\"#\") !== -1) {\r\n                parameters[\"__sequence\"] = parameters[\"__sequence\"].substring(0, parameters[\"__sequence\"].indexOf(\"#\"));\r\n            }\r\n        }\r\n        switch (this.checkFile(parameters)) {\r\n            case 0: {\r\n                if(this.c8o.forceFormData && url.endsWith(\".json\")){\n                    let form = this.transformRequestformdata(parameters);\n                    return this.uploadFileHttp(url, form, parameters, c8oResponseListener, true);\n                }\r\n                else{\r\n                    return this.httpPost(url, parameters);\r\n                }\r\n            }\r\n            case 1: {\r\n                let form = this.transformRequestformdata(parameters);\r\n                return this.uploadFileHttp(url, form, parameters, c8oResponseListener);\r\n            }\r\n            case 2: {\r\n                return this.uploadFilePluginNative(url, parameters, c8oResponseListener);\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * Upload file with native plugin\r\n     * @param {string} url\r\n     * @param {Object} parameters\r\n     * @param {C8oResponseListener} c8oResponseListener\r\n     * @return {Promise<any>}\r\n     */\r\n    public uploadFilePluginNative(url: string, parameters: Object, c8oResponseListener: C8oResponseListener): Promise<any> {\r\n        let progress: C8oProgress = new C8oProgress();\r\n        progress.pull = false;\r\n        let varNull: JSON = null;\r\n        let data = this.transformRequestfileNative(parameters);\r\n        let files = data[0];\r\n        let options = new window[\"FileUploadOptions\"]();\r\n        options.fileKey = files[0][0];\r\n        options.fileName = files[0][1].substr(files[0][1].lastIndexOf('/') + 1);\r\n        options.params = data[1];\r\n        let headersObject = { 'Accept': 'application/json', 'x-convertigo-sdk': this.c8o.sdkVersion };\r\n        Object.assign(headersObject, this.c8o.headers);\r\n        options.headers = headersObject;\r\n        return new Promise((resolve, reject) => {\r\n            Promise.all([this.p1]).then(() => {\r\n                var ft = new window[\"FileTransfer\"]();\r\n                ft.onprogress = (progressEvent) => {\r\n                    if (progressEvent.lengthComputable) {\r\n                        this.handleProgress(progressEvent, progress, parameters, c8oResponseListener, varNull);\r\n                    }\r\n                };\r\n                ft.upload(files[0][1], encodeURI(url), ((resp => {\r\n                    resolve(resp);\r\n                })), ((err) => {\r\n                    reject(err);\r\n                }), options);\r\n            })\r\n                .catch(() => {\r\n                    var ft = new window[\"FileTransfer\"]();\r\n                    ft.onprogress = (progressEvent) => {\r\n                        if (progressEvent.lengthComputable) {\r\n                            this.handleProgress(progressEvent, progress, parameters, c8oResponseListener, varNull);\r\n                        }\r\n                    };\r\n                    ft.upload(files[0][1], encodeURI(url), ((resp => {\r\n                        resolve(resp);\r\n                    })), ((err) => {\r\n                        reject(err);\r\n                    }), options);\r\n                })\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Upload File using an Http client\r\n     * @param {string} url\r\n     * @param {FormData} form\r\n     * @param {Object} parameters\r\n     * @param {C8oResponseListener} c8oResponseListener\n     * @param {boolean} enableSessionSort\n     * @return {Promise<any>}\n     */\n    uploadFileHttp(url: string, form: FormData, parameters: Object, c8oResponseListener: C8oResponseListener, enableSessionSort: boolean = false): Promise<any> {\n        let headersObject = { 'Accept': 'application/json', 'x-convertigo-sdk': this.c8o.sdkVersion };\n        Object.assign(headersObject, this.c8o.headers);\n        let progress: C8oProgress = new C8oProgress();\n        progress.pull = false;\n        let varNull: JSON = null;\n        const shouldSortSession = enableSessionSort && url.indexOf(\".json\") !== -1;\n        const headersReq = shouldSortSession ? this.getHeaders(headersObject) : null;\n        const parametersReq = shouldSortSession ? this.transformRequest(parameters) : null;\n        const execUpload = (resolve) => {\n            const finalizeResponse = shouldSortSession ? (body: any, responseWithHeaders?: any) => {\n                if (responseWithHeaders == null || responseWithHeaders.headers == null || typeof responseWithHeaders.headers.get !== \"function\") {\n                    resolve(body);\n                    return;\n                }\n                this.c8o.session.sort(responseWithHeaders, headersReq, url, parametersReq, headersReq)\n                    .then((res) => {\n                        if (res != true || parametersReq[C8oCore.SEQ_AUTO_LOGIN_OFF] === true) {\n                            resolve(body);\n                        }\n                        else {\n                            execUpload(resolve);\n                        }\n                    });\n            } : undefined;\n\n            this.getuploadRequester(url, form, headersObject)\n                .subscribe(\n                    event => {\n                        this.handleResponseFileUpload(event, progress, parameters, c8oResponseListener, varNull, resolve, finalizeResponse);\n                    },\n                    error => {\n                        this.handleErrorFileUpload(error, resolve);\n                    });\n        };\n\n        if (this.firstCall) {\n            this.p1 = new Promise((resolve) => {\n                this.firstCall = false;\n                execUpload(resolve);\n            });\n            return this.p1;\n        }\n        else {\n            return new Promise((resolve, reject) => {\n                Promise.all([this.p1]).then(() => {\n                    execUpload(resolve);\n                })\n                    .catch(() => {\n                        execUpload(resolve);\n                    });\n            });\n        }\n    }\n\r\n    /**\r\n     * handle FileuploadResponses\r\n     * @param event \r\n     * @param progress \r\n     * @param parameters \r\n     * @param c8oResponseListener \r\n     * @param varNull \r\n     * @param resolve \r\n     */\r\n    public handleResponseFileUpload(event: any, progress: C8oProgress, parameters: Object, c8oResponseListener: C8oResponseListener, varNull: any, resolve, finalizeResponse?: (body: any, responseWithHeaders?: any) => void): void {\n        const resolveResponse = (body: any, responseWithHeaders?: any) => {\n            if (finalizeResponse) {\n                finalizeResponse(body, responseWithHeaders);\n            }\n            else {\n                resolve(body);\n            }\n        };\n\n        if (!this.js) {\n            if (event.type === 1) {\n                this.handleProgress(event, progress, parameters, c8oResponseListener, varNull);\n            } else if (this.isHttpResponse(event)) {\n                resolveResponse(event.body, event);\n            }\n        }\n        else {\n            if (event.type == \"progress\") {\n                this.handleProgress(event.response, progress, parameters, c8oResponseListener, varNull);\n            }\n            else {\n                resolveResponse(event.response, event.response);\n            }\n        }\n    }\n\r\n    /**\r\n     * Handle errors for file upload\r\n     * @param error \r\n     * @param resolve \r\n     */\r\n    private handleErrorFileUpload(error: any, resolve: any): void {\r\n        resolve({ \"error\": (new C8oHttpRequestException(C8oExceptionMessage.runHttpRequest(), error)) });\r\n    }\r\n\r\n    /**\r\n     * Handle progress\r\n     * @param event\r\n     * @param {C8oProgress} progress\r\n     * @param parameters\r\n     * @param {C8oResponseListener} c8oResponseListener\r\n     * @param {JSON} varNull\r\n     */\r\n    handleProgress(event: any, progress: C8oProgress, parameters: any, c8oResponseListener: C8oResponseListener, varNull: JSON): void {\r\n        progress.current = event.loaded;\r\n        progress.total = event.total;\r\n        if (event.loaded != event.total) {\r\n            progress.finished = false;\r\n        }\r\n        else {\r\n            progress.finished = true;\r\n        }\r\n        parameters[C8oCore.ENGINE_PARAMETER_PROGRESS] = progress;\r\n        (c8oResponseListener as C8oResponseJsonListener).onJsonResponse(varNull, parameters);\r\n\r\n    }\r\n\r\n    /**\r\n    * get headers;\r\n    * @param object headers object\r\n    */\r\n    public abstract getHeaders(object): any;\r\n\r\n    /**\r\n     * Post with progress\r\n     * @param url the url to post\r\n     * @param form the form data to post\r\n     * @param headersObject Headers to use\r\n     */\r\n    public abstract getuploadRequester(url: string, form: FormData, headersObject: any): Observable<any>;\r\n\r\n    /**\r\n     * test type of response\r\n     * @param event any\r\n     */\r\n    public abstract isHttpResponse(event: any): boolean;\r\n}\r\n","import {C8oBase, C8oEndpointScope} from \"./c8oBase\";\nimport {C8oLogLevel} from \"./c8oLogLevel\";\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Contains optional parameters of a C8o class instantiation.<br/>\r\n * Note that setters return the setting instance thereby C8oSettings can be instantiate like that:<br/>\r\n * new C8oSettings().setTimeout(5000).setTrustAllCertificates(true).setUseEncryption(true);\r\n *\r\n */\r\nexport class C8oSettings extends C8oBase {\r\n\r\n    constructor(c8oSettings: C8oSettings = null) {\r\n        super();\r\n        if (c8oSettings != null) {\r\n            if (c8oSettings != null) {\r\n                this.copy(c8oSettings);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Clone C8osettings object\r\n     * @return {C8oSettings}\r\n     */\r\n    public clone(): C8oSettings {\r\n        return new C8oSettings(this);\r\n    }\r\n\r\n    /**\r\n     * Sets the normalizeParameters. define if we normalize parameters of every calls using JSON.parse(JSON.stringify(parameters))<br/>\r\n     * @param normalize boolean.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n     public setUseWorker(worker: boolean): C8oSettings {\r\n        this._useworker = worker;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets the normalizeParameters. define if we normalize parameters of every calls using JSON.parse(JSON.stringify(parameters))<br/>\r\n     * @param normalize boolean.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setNormalizeParameters(normalize: boolean): C8oSettings {\r\n        this._normalizeParameters = normalize;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets the if session has to be maintain alive<br/>\r\n     * @param keepAlive if session has to be keep Alive\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setKeepSessionAlive(keepAlive: boolean): C8oSettings {\r\n        this._keepSessionAlive = keepAlive;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets if the error convertigo is throw in fail or not<br/>\r\n     * @param errorConvertigoIntoFail boolean\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setErrorConvertigoIntoFail(errorConvertigoIntoFail: boolean): C8oSettings {\r\n        this._errorConvertigoIntoFail = errorConvertigoIntoFail;\r\n        return this;\r\n    }\r\n\r\n\r\n    \r\n\r\n    /**\r\n     * Sets the if base has to be reseted on dectecting diffrent versions<br/>\r\n     * @param resetBase if you to able reset base\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setDisableResetBase(resetBase: boolean): C8oSettings {\r\n        this._resetBase = resetBase;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets the if base has to be prefixed by user name<br/>\r\n     * @param prefixBase if you to able prefix base\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setEnablePrefixBase(prefixBase: boolean): C8oSettings {\n        this._prefixBase = prefixBase;\n        return this;\n    }\n\n    /**\n     * Sets how the SDK resolves service/fullsync endpoints (`auto` by default).<br/>\n     * @param scope The endpoint scope to use.\n     * @returns The current <b>C8oSettings</b>, for chaining.\n     */\n    public setEndpointScope(scope: C8oEndpointScope): C8oSettings {\n        this._endpointScope = scope;\n        return this;\n    }\n\n    \r\n\r\n    /**\r\n     * Sets the endpoint (override env.json).<br/>\r\n     * @param endpoint The endpoint.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setEndPoint(endpoint: string): C8oSettings {\r\n        this._endpointSettings = endpoint;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets the connection timeout to Convertigo in milliseconds. A value of zero means the timeout is not used.<br/>\r\n     * Default is <b>0</b>.\r\n     * @param timeout The timeout.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setTimeout(timeout: number): C8oSettings {\r\n        if (timeout <= 0) {\r\n            timeout = -1;\r\n        }\r\n        this._timeout = timeout;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Gets the http connection attempt before failing.<br/>\r\n     * Default is <b>1</b>.\r\n     * @param retry amount of http retry.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setRetry(retry: number): C8oSettings {\r\n        if (retry < 0) {\r\n            retry = 0\r\n        }\r\n        this._retry = retry;\r\n        return this;\r\n    }\r\n    /**\r\n     * Add a header\r\n     * @param name The name of header.\r\n     * @param value The value of header.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public addHeader(name: string, value: string) {\r\n        this._headers[name] = value;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * addClientCertificate\r\n     * @param {string} anyCertificate\r\n     * @param {string} password\r\n     * @return {C8oSettings}\r\n     */\r\n    public addClientCertificate(anyCertificate: string, password: string): C8oSettings;\r\n\r\n    /**\r\n     * addClientCertificate\r\n     * @param {number} anyCertificate\r\n     * @param {string} password\r\n     * @return {C8oSettings}\r\n     */\r\n    public addClientCertificate(anyCertificate: number, password: string): C8oSettings;\r\n\r\n    /**\r\n     * addClientCertificate\r\n     * @param anyCertificate\r\n     * @param {string} password\r\n     * @return {C8oSettings}\r\n     */\r\n    public addClientCertificate(anyCertificate: any, password: string): C8oSettings {\r\n        if (typeof anyCertificate === \"string\") {\r\n            if (this._clientCertificateFiles == null) {\r\n                this._clientCertificateFiles = {};\r\n            }\r\n            this._clientCertificateFiles[anyCertificate] = password;\r\n        } else if (typeof anyCertificate === \"number\") {\r\n            if (this._clientCertificateBinaries == null) {\r\n                this._clientCertificateBinaries = {};\r\n            }\r\n            this._clientCertificateBinaries[anyCertificate] = password;\r\n        }\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Add a new cookie to the initial cookies send to the Convertigo server.\r\n     * @param name The name of the new cookie.\r\n     * @param value The value of the new cookie.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public addCookie(name: string, value: string): C8oSettings {\r\n        if (this._cookies == null) {\r\n            this._cookies = {};\r\n        }\r\n        this._cookies[name] = value;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets a value indicating if logs are sent to the Convertigo server.<br/>\r\n     * Default is <b>true</b>.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setLogRemote(logRemote: boolean): C8oSettings {\r\n        this._logRemote = logRemote;\r\n        return this;\r\n    }\r\n\r\n    public  setForceFormData(forceFormData: boolean){\r\n        this._forceFormData = forceFormData;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Sets a value indicating the log level you want in the device console\r\n     * 0: ALL, 1: NONE, 2: TRACE, 3: DEBUG, 4: INFO, 5: WARN, 6: ERROR, 7: FATAL\r\n     * or use the android.util.Log constants\r\n     * Default is <b>0</b>.\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setLogLevelLocal(logLevelLocal: C8oLogLevel): C8oSettings {\r\n        this._logLevelLocal = logLevelLocal;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setLogC8o\r\n     * @param {boolean} logC8o\r\n     * @return {C8oSettings}\r\n     */\r\n    public setLogC8o(logC8o: boolean): C8oSettings {\r\n        this._logC8o = logC8o;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setLogOnFail\r\n     * @param {(exception: Error, parameters: Object) => void} logOnFail\r\n     * @return {C8oSettings}\r\n     */\r\n    public setLogOnFail(logOnFail: (exception: Error, parameters: Object) => void): C8oSettings {\r\n        this._logOnFail = logOnFail;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Specify the default FullSync database name. Must match a Convertigo Server\r\n     * FullSync connector name\r\n     *\r\n     * @param defaultDatabaseName: string\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setDefaultDatabaseName(defaultDatabaseName: string): C8oSettings {\r\n        this._defaultDatabaseName = defaultDatabaseName;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setAuthenticationCookieValue\r\n     * @param {string} authenticationCookieValue\r\n     * @return {C8oSettings}\r\n     */\r\n    public setAuthenticationCookieValue(authenticationCookieValue: string): C8oSettings {\r\n        this._authenticationCookieValue = authenticationCookieValue;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setFullSyncServerUrl\r\n     * @param {string} fullSyncServerUrl\r\n     * @return {C8oSettings}\r\n     */\r\n    public setFullSyncServerUrl(fullSyncServerUrl: string): C8oSettings {\r\n        this._fullSyncServerUrl = fullSyncServerUrl;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setFullSyncUsername\r\n     * @param {string} fullSyncUsername\r\n     * @return {C8oSettings}\r\n     */\r\n    public setFullSyncUsername(fullSyncUsername: string): C8oSettings {\r\n        this._fullSyncUsername = fullSyncUsername;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setFullSyncPassword\r\n     * @param {string} fullSyncPassword\r\n     * @return {C8oSettings}\r\n     */\r\n    public setFullSyncPassword(fullSyncPassword: string): C8oSettings {\r\n        this._fullSyncPassword = fullSyncPassword;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * setFullSyncLocalSuffix\r\n     * @param {string} fullSyncLocalSuffix\r\n     * @return {C8oSettings}\r\n     */\r\n    public setFullSyncLocalSuffix(fullSyncLocalSuffix: string): C8oSettings {\r\n        this._fullSyncLocalSuffix = fullSyncLocalSuffix;\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Set if c8o calls variables are encrypted or not\r\n     *\r\n     * @param useEncryption\r\n     * @returns The current <b>C8oSettings</b>, for chaining.\r\n     */\r\n    public setUseEncryption(useEncryption: boolean): C8oSettings {\r\n        this._useEncryption = useEncryption;\r\n        return this;\r\n    }\r\n\r\n    public setParrallelizeCallSequences(parrallelizeCallSequences: boolean): C8oSettings {\r\n        this._parrallelizeCallSequences = parrallelizeCallSequences;\r\n        return this;\r\n    }\r\n}\r\n","/**\n * Defines whether the response should be retrieved from local cache or from Convertigo server when the device can access the network.<br/>\n * When the device has no network access, the local cache response is used, if existing.\n */\nexport class Priority {\n    public isAvailable: boolean;\n\n    //noinspection JSUnusedLocalSymbols\n    public static SERVER: Priority = new Priority(false);\n\n    //noinspection JSUnusedLocalSymbols\n    public static LOCAL: Priority = new Priority(true);\n\n    constructor(isAvailable: boolean) {\n        this.isAvailable = isAvailable;\n\n    }\n}\n","import {C8o} from \"./c8o.service\";\nimport {C8oFullSyncCbl, C8oHttpInterfaceCore, C8oResponseJsonListener, C8oResponseListener, C8oProgress,C8oHttpRequestException,C8oExceptionMessage} from \"../c8osdk-js-core/src/index\";\nimport {HttpEventType, HttpHeaders, HttpRequest, HttpResponse} from \"@angular/common/http\";\nimport { Observable } from 'rxjs';\nexport class C8oHttpInterface extends C8oHttpInterfaceCore{\n    \n    constructor(c8o: C8o) {\n        super(c8o, false);\n    }\n\n    /**\n     * get headers;\n     * @param object headers object\n     */\n    public getHeaders(object):any{\n        return new HttpHeaders(object);\n    }\n\n    /**\n     * Angular implementation to post with progress\n     * @param url the url to post\n     * @param form the form data to post\n     * @param headersObject Headers to use\n     */\n    public getuploadRequester(url:string, form: FormData, headersObject:any):Observable<any>{//, progress: C8oProgress, parameters: Object, c8oResponseListener: C8oResponseListener, varNull:any, resolve:any) {\n        let headers = new HttpHeaders(headersObject);\n        const httpRequest = new HttpRequest('POST', url, form, {reportProgress: true, withCredentials: true, headers: headers});\n        return this.c8o.httpPublic.request(httpRequest);\n    }\n    \n    /**\n     * test type of request\n     * @param event any\n     */\n    public isHttpResponse(event:any):boolean{\n        return (event instanceof HttpResponse)\n    }\n\n    \n\n    \n}","import {C8oCore} from \"../c8osdk-js-core/src/index\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {Injectable} from \"@angular/core\";\nimport {C8oHttpInterface} from \"./c8oHttpInterface.service\";\n\n@Injectable()\nexport class C8o extends C8oCore {\n\n    constructor(private http: HttpClient) {\n        super();\n        this._http = http;\n    }\n\n    /**\n     * get current sdk version\n     */\n    public get sdkVersion(): string {\n        return \"4.0.29\";\n    }\n    /**\n     * Method to bastract http get\n     * @param uri the uri for given request\n     */\n    public httpGetObservable(uri){\n        return this.httpPublic.get(uri);\n    }\n\n    /**\n     * Init http interface in client sdk\n     */\n    public initC8oHttInterface(){\n        this.httpInterface = new C8oHttpInterface(this);\n    }\n}","import {C8oUtilsCore} from \"../c8osdk-js-core/src/index\";\n//import {C8oUtilsCore} from \"c8osdkjscore\";\nimport {Injectable} from \"@angular/core\";\nimport {HttpClient} from \"@angular/common/http\";\n\n\n@Injectable()\nexport class C8oUtils extends C8oUtilsCore{\n\n    public constructor(private http: HttpClient) {\n        super();\n        this.http = http;\n    }\n\n}","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpXsrfTokenExtractor, HttpHandler, HttpRequest, HttpEvent, HttpResponse, HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\nimport {C8o} from \"./c8o.service\";\n\n@Injectable()\nexport class HttpXsrfInterceptor implements HttpInterceptor {\n  private headerName: string = \"x-xsrf-token\";\n  private fetch: string = \"Fetch\";\n  constructor(private tokenExtractor: HttpXsrfTokenExtractor, private c8o: C8o) {\n    this.c8o.xsrfUsed = true;\n  }\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    // get stored headerValue or fetch if the is no stored headerValue\n    const headerValue = window.localStorage.getItem(this.headerName) != undefined ? window.localStorage.getItem(this.headerName) : this.fetch;\n    // clone request adding xsrf header\n    req = req.clone({ headers: req.headers.set(this.headerName, headerValue)});\n    // re-execute request, and get HttResponses or HttpErrorResponses\n    return next.handle(req)\n    .pipe(\n      filter(event => event instanceof HttpResponse || event instanceof HttpErrorResponse),\n      tap((event: HttpResponse<any>) => {\n        // get and store new xsrf value\n        const xsrfResponseHeader = event[\"headers\"][\"get\"](this.headerName);\n        xsrfResponseHeader != undefined ? window.localStorage.setItem(this.headerName, xsrfResponseHeader) : null;\n      })\n    );\n  }\n}\n","/*\n * Public API Surface of c8osdkangular\n */\nexport * from \"./lib/c8o.service\";\nexport * from \"./lib/c8oUtils.service\";\nexport * from \"./lib/c8oHttpInterface.service\";\nexport * from \"./lib/c8oHttpxsrfInterceptor.service\";\n//export * from \"c8osdkjscore\";\nexport * from \"./c8osdk-js-core/src/index\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["PouchDB","i2.C8o"],"mappings":"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C,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,KAAK,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,MAAM,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,UAAU,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,EAAC,EAAE,EAAC,CAAC,OAAO,CAAC,EAAC,CAAC,EAA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"}